sogo/UI/WebServerResources/scss/views/_view.scss
Francis Lachapelle 730b803ad6 (js) Replace vs-repeat by md-virtual-repeat
There're some issues with mdVirtualRepeat that required some changes to
our app:

1. Having multiple directives with md-virtual-repeat doesn't work well.
That why I added a dedicated div for the md-virtual-repeat directive.
2. ui-sref-active doesn't work well for child nodes of the
md-virtual-repeat element. The class was applied repetitively to a
visible child. I now save which message or card is selected and use the
ng-class directive to highlight the selected list item.
2015-07-15 13:44:17 -04:00

154 lines
3.5 KiB
SCSS

/// _view.scss -*- Mode: scss; indent-tabs-mode: nil; basic-offset: 2 -*-
@import 'LoginUI.scss';
@import 'MailerUI.scss';
@import 'ContactsUI.scss';
@import 'MessageEditorUI';
@import 'SchedulerUI';
.view[layout=row] {
max-height: 100%;
}
// We make intensive use of the list/detail view pattern, here are some base
// definitions for this
// ----------------------------------------------------------------------------
// Variables
$listView-width: grid-step(6) !global;
$detailView-width: grid-step(8) !global;
//[id="messagesList"] {
// flex: 0 0 $listView-width;
//
//}
//
//[id ="contactsList"] {
// flex: 0 1 $listView-width;
// min-width: ($listView-width - ($pitch * 2));
//}
[class|="view"] {
position: relative;
}
.view-list {
z-index: ($z-index-view - 1);
min-width: ($listView-width - ($pitch * 2));
@include at(md){
@include flex-col(md, 7, 1, 1);
min-width: ($pitch * 3);
}
@include from(lg) {
@include flex-col(lg, 6, 1, 0);
}
@include to(sm) {
width: 100%;
min-width: 100%;
}
}
.view-detail {
z-index: $z-index-view;
overflow-x: hidden;
background-color: transparent;
@include at(md) {
@include flex-col(md, 9);
margin: 0;
}
@include from(lg) {
@include flex-col(lg, 10, 2, 1);
margin: 0;
}
@include from(md) {
.viewer {
position: absolute;
left: 0;
right: 0;
max-width: 100%;
transform: translate3d(0, 0, 0);
transition: all 0.5s $swift-ease-in-out-timing-function;
&.ng-enter {
transform: translate(-105%, 0);
&.ng-enter-active {
transform: translate(0%, 0%);
transition-delay: 0.5s;
}
}
&.ng-leave {
transition-delay: 0;
transition-duration: 0.1s;
transform: translate(0, 0);
&.ng-leave-active {
transition-delay: 0.1s;
transition-duration: 0.4s;
transform: translate(-105%, 100%);
}
}
}
}
@include to(sm) {
position: absolute;
width: 100%;
min-width: 100%;
// caution: limited support in Android (<=4.4), full-support in v. 37
height: calc(100vh - #{$toolbar-tall-height});
transform: translateX(-100%) scale(1);
transform-origin: 50% 50%;
transition: all 0.5s $swift-ease-in-out-timing-function;
// .view-detail.sg-close hides the background
&.sg-close {
transition-delay: 0.1s;
transition-duration: 0.4s;
transform: translateX(-100%) scale(0);
// .viewer is the card itself
.viewer {
&.ng-leave,
&.ng-enter,
&.ng-leave.ng-leave-active {
transform: translateY(0) scale(0);
}
// ui-sref might add ng-animate class early
&.ng-enter.ng-enter-active {
transform: translateY(0) scale(0);
}
}
}
// .viewer is the card itself
.viewer {
&.ng-leave,
&.ng-leave.ng-leave-active {
transform: translateY(100%) scale(0);
}
&.ng-enter {
transition: all 0.5s $swift-ease-in-out-timing-function;
transform: translateY(100%) scale(0);
}
&.ng-enter.ng-enter-active {
transform: translateY(0) scale(1);
}
}
&.ng-leave,
&.ng-leave.ng-leave-active {
transform: translateX(-100%) scale(0);
}
&.ng-enter {
transition: all 0.5s $swift-ease-in-out-timing-function;
transform: translateX(-100%) scale(0);
}
&.ng-enter.ng-enter-active {
transform: translateX(-100%) scale(1);
}
}
}