(js) Fix navigation in Mail advanced search mode

pull/210/head
Francis Lachapelle 2016-05-18 14:47:33 -04:00
parent 045013bc74
commit ce1fb708a0
6 changed files with 52 additions and 6 deletions

View File

@ -319,7 +319,7 @@
<div id="detailView" class="view-detail"
layout="column" layout-align="start center"
ng-class="{ 'sg-close': !mailbox.service.selectedFolder.selectedMessage }"
ng-class="{ 'sg-close': !mailbox.service.selectedFolder.hasSelectedMessage() }"
md-colors="::{backgroundColor: 'default-background-200'}"
ui-view="message">
<md-content class="hide show-gt-md md-flex"

View File

@ -236,7 +236,8 @@
<div class="md-toolbar-tools">
<md-chips class="md-flex"
ng-model="app.search.params"
md-transform-chip="app.newSearchParam($chip)">
md-transform-chip="app.newSearchParam($chip)"
sg-transform-on-blur="sg-transform-on-blur">
<input sg-focus-on="advancedSearch" type="text"
ng-disabled="app.currentSearchParam.length == 0"
sg-placeholder="app.search.options[app.currentSearchParam]"/>

View File

@ -172,6 +172,16 @@
}
};
/**
* @function selectFolder
* @memberof Mailbox.prototype
* @desc Mark the folder as selected in the constructor unless virtual mode is active
*/
Mailbox.prototype.selectFolder = function() {
if (!Mailbox.$virtualMode)
Mailbox.selectedFolder = this;
};
/**
* @function getLength
* @memberof Mailbox.prototype
@ -238,6 +248,16 @@
return this.selectedMessage == messageId;
};
/**
* @function hasSelectedMessage
* @memberof Mailbox.prototype
* @desc Check if a message is selected.
* @returns true if the a message is selected
*/
Mailbox.prototype.hasSelectedMessage = function() {
return angular.isDefined(this.selectedMessage);
};
/**
* @function $filter
* @memberof Mailbox.prototype

View File

@ -13,7 +13,7 @@
// Expose controller
$window.$mailboxController = vm;
Mailbox.selectedFolder = stateMailbox;
stateMailbox.selectFolder();
vm.service = Mailbox;
vm.accounts = stateAccounts;

View File

@ -61,6 +61,8 @@
controllerAs: 'viewer'
}
},
onEnter: onEnterMessage,
onExit: onExitMessage,
resolve: {
stateMailbox: stateVirtualMailboxOfMessage,
stateMessages: stateMessages,
@ -192,7 +194,7 @@
return mailbox;
};
if (Mailbox.selectedFolder)
if (Mailbox.selectedFolder && !Mailbox.$virtualMode)
Mailbox.selectedFolder.$isLoading = true;
mailbox = _find(stateAccount.$mailboxes);
@ -298,7 +300,7 @@
*/
onExitMessage.$inject = ['stateMailbox'];
function onExitMessage(stateMailbox) {
stateMailbox.selectedMessage = -1;
delete stateMailbox.selectedMessage;
}
/**

View File

@ -95,7 +95,9 @@
});
});
search.finally(function() { _this.$isLoading = false; });
search.finally(function() {
_this.$isLoading = false;
});
};
VirtualMailbox.prototype.stopSearch = function() {
@ -103,6 +105,15 @@
this.$isLoading = false;
};
/**
* @function selectFolder
* @memberof VirtualMailbox.prototype
* @desc A no-op for virtual mailbox
*/
VirtualMailbox.prototype.selectFolder = function() {
return;
};
/**
* @function resetSelectedMessage
* @memberof VirtualMailbox.prototype
@ -114,6 +125,18 @@
});
};
/**
* @function hasSelectedMessage
* @memberof VirtualMailbox.prototype
* @desc Check if a message is selected among the resulting mailboxes
* @returns true if one message is selected
*/
VirtualMailbox.prototype.hasSelectedMessage = function() {
return angular.isDefined(_.find(this.$mailboxes, function(mailbox) {
return angular.isDefined(mailbox.selectedMessage);
}));
};
/**
* @function isSelectedMessage
* @memberof VirtualMailbox.prototype