Moving away from Azure Devops #1
2 changed files with 30 additions and 6 deletions
|
|
@ -59,7 +59,8 @@ export class CalendarApp {
|
||||||
// Create NavigationAnimator with DOM elements
|
// Create NavigationAnimator with DOM elements
|
||||||
this.animator = new NavigationAnimator(
|
this.animator = new NavigationAnimator(
|
||||||
container.querySelector('swp-header-track') as HTMLElement,
|
container.querySelector('swp-header-track') as HTMLElement,
|
||||||
container.querySelector('swp-content-track') as HTMLElement
|
container.querySelector('swp-content-track') as HTMLElement,
|
||||||
|
container.querySelector('swp-header-drawer')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Render time axis from settings
|
// Render time axis from settings
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
export class NavigationAnimator {
|
export class NavigationAnimator {
|
||||||
constructor(
|
constructor(
|
||||||
private headerTrack: HTMLElement,
|
private headerTrack: HTMLElement,
|
||||||
private contentTrack: HTMLElement
|
private contentTrack: HTMLElement,
|
||||||
|
private headerDrawer: HTMLElement | null
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
async slide(direction: 'left' | 'right', renderFn: () => Promise<void>): Promise<void> {
|
async slide(direction: 'left' | 'right', renderFn: () => Promise<void>): Promise<void> {
|
||||||
|
|
@ -14,7 +15,7 @@ export class NavigationAnimator {
|
||||||
}
|
}
|
||||||
|
|
||||||
private async animateOut(translate: string): Promise<void> {
|
private async animateOut(translate: string): Promise<void> {
|
||||||
await Promise.all([
|
const animations = [
|
||||||
this.headerTrack.animate(
|
this.headerTrack.animate(
|
||||||
[{ transform: 'translateX(0)' }, { transform: `translateX(${translate})` }],
|
[{ transform: 'translateX(0)' }, { transform: `translateX(${translate})` }],
|
||||||
{ duration: 200, easing: 'ease-in' }
|
{ duration: 200, easing: 'ease-in' }
|
||||||
|
|
@ -23,11 +24,22 @@ export class NavigationAnimator {
|
||||||
[{ transform: 'translateX(0)' }, { transform: `translateX(${translate})` }],
|
[{ transform: 'translateX(0)' }, { transform: `translateX(${translate})` }],
|
||||||
{ duration: 200, easing: 'ease-in' }
|
{ duration: 200, easing: 'ease-in' }
|
||||||
).finished
|
).finished
|
||||||
]);
|
];
|
||||||
|
|
||||||
|
if (this.headerDrawer) {
|
||||||
|
animations.push(
|
||||||
|
this.headerDrawer.animate(
|
||||||
|
[{ transform: 'translateX(0)' }, { transform: `translateX(${translate})` }],
|
||||||
|
{ duration: 200, easing: 'ease-in' }
|
||||||
|
).finished
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(animations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async animateIn(translate: string): Promise<void> {
|
private async animateIn(translate: string): Promise<void> {
|
||||||
await Promise.all([
|
const animations = [
|
||||||
this.headerTrack.animate(
|
this.headerTrack.animate(
|
||||||
[{ transform: `translateX(${translate})` }, { transform: 'translateX(0)' }],
|
[{ transform: `translateX(${translate})` }, { transform: 'translateX(0)' }],
|
||||||
{ duration: 200, easing: 'ease-out' }
|
{ duration: 200, easing: 'ease-out' }
|
||||||
|
|
@ -36,6 +48,17 @@ export class NavigationAnimator {
|
||||||
[{ transform: `translateX(${translate})` }, { transform: 'translateX(0)' }],
|
[{ transform: `translateX(${translate})` }, { transform: 'translateX(0)' }],
|
||||||
{ duration: 200, easing: 'ease-out' }
|
{ duration: 200, easing: 'ease-out' }
|
||||||
).finished
|
).finished
|
||||||
]);
|
];
|
||||||
|
|
||||||
|
if (this.headerDrawer) {
|
||||||
|
animations.push(
|
||||||
|
this.headerDrawer.animate(
|
||||||
|
[{ transform: `translateX(${translate})` }, { transform: 'translateX(0)' }],
|
||||||
|
{ duration: 200, easing: 'ease-out' }
|
||||||
|
).finished
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
await Promise.all(animations);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue