dev@423
|
1 /**
|
dev@423
|
2 * Created by lucast on 06/06/2017.
|
dev@423
|
3 */
|
dev@423
|
4 import {Component, Input} from '@angular/core';
|
dev@423
|
5 import {
|
dev@423
|
6 animate, keyframes, state, style, transition,
|
dev@423
|
7 trigger
|
dev@423
|
8 } from '@angular/animations';
|
dev@423
|
9
|
dev@423
|
10 @Component({
|
dev@423
|
11 selector: 'ugly-action-tray',
|
dev@423
|
12 template: `<div
|
dev@423
|
13 class="tray"
|
dev@423
|
14 [@visibility]="visibility"
|
dev@423
|
15 ><ng-content></ng-content></div>`,
|
dev@423
|
16 styles: [
|
dev@423
|
17 `.tray {
|
dev@423
|
18 background: white;
|
dev@428
|
19 height: calc(100vh - 64px);
|
dev@423
|
20 width: 100%;
|
dev@423
|
21 position: absolute;
|
dev@423
|
22 z-index: 100;
|
dev@425
|
23 overflow: hidden;
|
dev@429
|
24 -webkit-overflow-scrolling: touch;
|
dev@423
|
25 }`
|
dev@423
|
26 ],
|
dev@423
|
27 animations: [
|
dev@423
|
28 trigger('visibility', [
|
dev@423
|
29 state('show', style({
|
dev@428
|
30 height: 'calc(100vh - 64px)',
|
dev@425
|
31 overflow: 'scroll'
|
dev@423
|
32 })),
|
dev@423
|
33 state('hide', style({
|
dev@423
|
34 height: 0,
|
dev@425
|
35 overflow: 'hidden',
|
dev@423
|
36 })),
|
dev@423
|
37 transition('hide => show', [
|
dev@423
|
38 animate(300, keyframes([
|
dev@423
|
39 style({height: 0, offset: 0}),
|
dev@428
|
40 style({height: 'calc(100vh - 64px)', offset: 1.0}),
|
dev@423
|
41 ]))
|
dev@423
|
42 ]),
|
dev@423
|
43 transition('show => hide', [
|
dev@423
|
44 animate(300, keyframes([
|
dev@428
|
45 style({height: 'calc(100vh - 64px)', offset: 0.0}),
|
dev@423
|
46 style({height: 0, offset: 1.0}),
|
dev@423
|
47 ]))
|
dev@423
|
48 ]),
|
dev@423
|
49 ])
|
dev@423
|
50 ]
|
dev@423
|
51 })
|
dev@423
|
52 export class ActionTrayComponent {
|
dev@423
|
53 @Input() visibility: 'show' | 'hide' = 'hide';
|
dev@423
|
54
|
dev@423
|
55 toggle() {
|
dev@423
|
56 this.visibility = this.visibility === 'show' ? 'hide' : 'show';
|
dev@423
|
57 }
|
dev@423
|
58 }
|