(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" <div id="detailView" class="view-detail"
layout="column" layout-align="start center" 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'}" md-colors="::{backgroundColor: 'default-background-200'}"
ui-view="message"> ui-view="message">
<md-content class="hide show-gt-md md-flex" <md-content class="hide show-gt-md md-flex"

View File

@ -236,7 +236,8 @@
<div class="md-toolbar-tools"> <div class="md-toolbar-tools">
<md-chips class="md-flex" <md-chips class="md-flex"
ng-model="app.search.params" 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" <input sg-focus-on="advancedSearch" type="text"
ng-disabled="app.currentSearchParam.length == 0" ng-disabled="app.currentSearchParam.length == 0"
sg-placeholder="app.search.options[app.currentSearchParam]"/> 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 * @function getLength
* @memberof Mailbox.prototype * @memberof Mailbox.prototype
@ -238,6 +248,16 @@
return this.selectedMessage == messageId; 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 * @function $filter
* @memberof Mailbox.prototype * @memberof Mailbox.prototype

View File

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

View File

@ -61,6 +61,8 @@
controllerAs: 'viewer' controllerAs: 'viewer'
} }
}, },
onEnter: onEnterMessage,
onExit: onExitMessage,
resolve: { resolve: {
stateMailbox: stateVirtualMailboxOfMessage, stateMailbox: stateVirtualMailboxOfMessage,
stateMessages: stateMessages, stateMessages: stateMessages,
@ -192,7 +194,7 @@
return mailbox; return mailbox;
}; };
if (Mailbox.selectedFolder) if (Mailbox.selectedFolder && !Mailbox.$virtualMode)
Mailbox.selectedFolder.$isLoading = true; Mailbox.selectedFolder.$isLoading = true;
mailbox = _find(stateAccount.$mailboxes); mailbox = _find(stateAccount.$mailboxes);
@ -298,7 +300,7 @@
*/ */
onExitMessage.$inject = ['stateMailbox']; onExitMessage.$inject = ['stateMailbox'];
function onExitMessage(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() { VirtualMailbox.prototype.stopSearch = function() {
@ -103,6 +105,15 @@
this.$isLoading = false; this.$isLoading = false;
}; };
/**
* @function selectFolder
* @memberof VirtualMailbox.prototype
* @desc A no-op for virtual mailbox
*/
VirtualMailbox.prototype.selectFolder = function() {
return;
};
/** /**
* @function resetSelectedMessage * @function resetSelectedMessage
* @memberof VirtualMailbox.prototype * @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 * @function isSelectedMessage
* @memberof VirtualMailbox.prototype * @memberof VirtualMailbox.prototype