Improve view detail (messages, cards)

pull/105/head
Francis Lachapelle 2015-08-27 13:37:47 -04:00
parent bba0d6f44d
commit 3611c4021d
7 changed files with 52 additions and 17 deletions

View File

@ -46,6 +46,9 @@
/* Number of selected contacts in list */
"selected" = "selected";
/* Empty right pane */
"No contact selected" = "No contact selected";
/* Tooltips */
"Create a new address book card" = "Create a new address book card";

View File

@ -65,6 +65,9 @@
"Account: " = "Account: ";
"Shared Account: " = "Shared Account: ";
/* Empty right pane */
"No message selected" = "No message selected";
/* acls */
"Access rights to" = "Access rights to";
"For user" = "For user";

View File

@ -375,9 +375,13 @@
</md-content>
</div>
<div id="detailView" class="view-detail" layout="column"
<md-content id="detailView" class="view-detail md-hue-1" layout="column" layout-align="center center"
ng-class="{ 'sg-close': !addressbook.selectedFolder.selectedCard }"
ui-view="card"><!-- card view --></div>
ui-view="card">
<md-input-container class="hide-sm md-hue-1" style="flex-grow: 0">
<label class="sg-md-title"><var:string label:value="No contact selected"/></label>
</md-input-container>
</md-content>
</div>
</script>

View File

@ -58,8 +58,12 @@
</md-content>
</div>
<div id="detailView" class="view-detail" layout="column"
<md-content id="detailView" class="view-detail md-hue-1" layout="column" layout-align="center center"
ng-class="{ 'sg-close': !mailbox.selectedFolder.selectedMessage }"
ui-view="message"><!-- message view --></div>
ui-view="message">
<md-input-container class="hide-sm md-hue-1" style="flex-grow: 0">
<label class="sg-md-title"><var:string label:value="No message selected"/></label>
</md-input-container>
</md-content>
</container>

View File

@ -88,9 +88,10 @@
}
}
function close() {
vm.card = null;
delete AddressBook.selectedFolder.selectedCard;
$state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id });
$state.go('app.addressbook', { addressbookId: AddressBook.selectedFolder.id }).then(function() {
vm.card = null;
delete AddressBook.selectedFolder.selectedCard;
});
}
function reset() {
vm.card.$reset();

View File

@ -27,6 +27,11 @@
flex: 1 1 auto;
align-items: stretch;
justify-content: flex-start;
overflow: hidden;
[class|="sg-md-display"] {
overflow: hidden;
text-overflow: ellipsis;
}
}
.msg-body {

View File

@ -53,7 +53,6 @@ $detailView-width: grid-step(8) !global;
.view-detail {
z-index: $z-index-view;
overflow-x: hidden;
background-color: transparent;
@include at(md) {
@include flex-col(md, 9);
margin: 0;
@ -69,6 +68,7 @@ $detailView-width: grid-step(8) !global;
@include from(md) {
.viewer {
position: absolute;
top: 0;
left: 0;
right: 0;
max-width: 100%;
@ -94,30 +94,45 @@ $detailView-width: grid-step(8) !global;
}
}
// On small screens, the view slides from the right and takes all screen place
// On small screens, the view slides from the right and takes all screen place.
// Expected Display Steps:
// 1. The class sg-close is used when there's no selection
// 2. An list item is selected (ui-router state changes):
// a. sg-close is removed from view-detail
// b. view-detail (transparent) slides over view-list
// c. viewer is inserted into the DOM and slides inside view-detail
// 3. An list item is closed (ui-router state changes):
// a. viewer slides out of view-detail and is removed from the DOM
// b. view-detail (transparent) slides outside view-list
// c. sg-close is added to view-detail
@include to(sm) {
display: block;
background-color: transparent !important;
position: absolute;
width: 100%;
min-width: 100%;
top: $toolbar-tall-height;
bottom: 0;
left: 0;
right: 0;
transition: all 0.5s $swift-ease-in-out-timing-function;
transform: translateX(0);
transition: $swift-ease-in-out;
&.sg-close {
transform: translateX(100%);
}
&.ng-leave {
&.ng-leave-active {
transform: translateX(100%);
}
&.ng-leave.ng-leave-active {
transform: translateX(100%);
}
&.ng-enter {
transition: all 0.5s $swift-ease-in-out-timing-function;
transform: translateX(100%);
&.ng-enter-active {
transform: translateX(0);
}
}
.viewer {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
}
}