From 95a3641345a7e3a90dab9a1bb9bac6dd799d7c20 Mon Sep 17 00:00:00 2001 From: rubikscraft Date: Tue, 19 Apr 2022 19:13:02 +0200 Subject: [PATCH] more fixes for speed-dial --- .../components/fab/speed-dial/open-manager.ts | 55 +++++++++++++++++ .../speed-dial/speed-dial-option.directive.ts | 9 ++- .../fab/speed-dial/speed-dial.component.html | 19 +++--- .../fab/speed-dial/speed-dial.component.ts | 61 +++++++------------ .../src/app/routes/view/view.component.html | 12 +--- 5 files changed, 96 insertions(+), 60 deletions(-) create mode 100644 frontend/src/app/components/fab/speed-dial/open-manager.ts diff --git a/frontend/src/app/components/fab/speed-dial/open-manager.ts b/frontend/src/app/components/fab/speed-dial/open-manager.ts new file mode 100644 index 0000000..d693034 --- /dev/null +++ b/frontend/src/app/components/fab/speed-dial/open-manager.ts @@ -0,0 +1,55 @@ +export class OpenManager { + private _isOpen = false; + + private _isAnimating = false; + private _wantsOpen = false; + + public get isOpen(): boolean { + return this._isOpen; + } + + public set isAnimating(val: boolean) { + this._isAnimating = val; + if (val === false && this._wantsOpen !== this._isOpen) { + this._isOpen = this._wantsOpen; + } + } + + public get isAnimating(): boolean { + return this._isAnimating; + } + + public set wantsOpen(val: boolean) { + this._wantsOpen = val; + if (!this._isAnimating) { + this._isOpen = val; + } + } + + public get wantsOpen(): boolean { + return this._wantsOpen; + } + + public toggle(): boolean { + this.wantsOpen = !this.wantsOpen; + return this.wantsOpen; + } + + public open(): boolean { + this.wantsOpen = true; + return this.wantsOpen; + } + + public close(): boolean { + this.wantsOpen = false; + return this.wantsOpen; + } + + public animationStart(): void { + this.isAnimating = true; + } + + public animationDone(): void { + this.isAnimating = false; + } +} diff --git a/frontend/src/app/components/fab/speed-dial/speed-dial-option.directive.ts b/frontend/src/app/components/fab/speed-dial/speed-dial-option.directive.ts index 2371524..1ed1b9f 100644 --- a/frontend/src/app/components/fab/speed-dial/speed-dial-option.directive.ts +++ b/frontend/src/app/components/fab/speed-dial/speed-dial-option.directive.ts @@ -1,11 +1,16 @@ import { Directive, Host, Optional } from '@angular/core'; +import { MatButton } from '@angular/material/button'; import { MatTooltip } from '@angular/material/tooltip'; @Directive({ - selector: 'speed-dial (button[mat-mini-fab], button[mat-fab])', + selector: 'speed-dial button[mat-mini-fab]', }) export class SpeedDialOptionDirective { - constructor(@Host() @Optional() test?: MatTooltip) { + constructor( + @Host() @Optional() test?: MatTooltip, + @Host() @Optional() test2?: MatButton + ) { if (test) test.position = 'left'; + if (test2) test2.color = 'primary'; } } diff --git a/frontend/src/app/components/fab/speed-dial/speed-dial.component.html b/frontend/src/app/components/fab/speed-dial/speed-dial.component.html index daf37e1..3f67ef7 100644 --- a/frontend/src/app/components/fab/speed-dial/speed-dial.component.html +++ b/frontend/src/app/components/fab/speed-dial/speed-dial.component.html @@ -1,18 +1,18 @@
- +
- -