annotate src/app/actions/action-tray.component.ts @ 429:c3f35dc61765

mobile safari scrolling fix
author Lucas Thompson <dev@lucas.im>
date Tue, 06 Jun 2017 23:36:06 +0100
parents 634d51d8e114
children a1562ee60ed4
rev   line source
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 }