@if (overlayType === "taskOverlay") {
- } @if (overlayType === "dialog") {
+ } @if (overlayType === "dialogOverlay") {
-}
diff --git a/src/app/shared/components/overlay/overlay.component.scss b/src/app/shared/components/overlay/overlay.component.scss
index 7306b35..8867cdd 100644
--- a/src/app/shared/components/overlay/overlay.component.scss
+++ b/src/app/shared/components/overlay/overlay.component.scss
@@ -1,4 +1,7 @@
.overlay {
+ display: flex;
+ justify-content: center;
+ align-items: center;
position: fixed;
top: 0;
bottom: 0;
@@ -7,20 +10,38 @@
width: 100vw;
height: 100vh;
backdrop-filter: blur(5px);
- background-color: rgba($color: #000000, $alpha: 0.2);
- display: flex;
- justify-content: center;
- align-items: center;
+ background-color: rgba(0, 0, 0, 0.2);
+ pointer-events: none;
+ transition: opacity 0.3s ease, backdrop-filter 0.3s ease;
z-index: 999;
+ opacity: 0;
+
+ &.show {
+ opacity: 1;
+ pointer-events: auto;
+
+ & > .overlay-content {
+ transform: scale(1) translateY(0);
+ opacity: 1;
+ transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55),
+ opacity 0.4s ease-out;
+ }
+ }
+
+ &.closing {
+ opacity: 0;
+ pointer-events: none;
+
+ & > .overlay-content {
+ transform: scale(0.95) translateY(20px);
+ opacity: 0;
+ transition: transform 0.4s ease-in, opacity 0.4s ease-out;
+ }
+ }
}
-.overlay-mobile {
- position: fixed;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- width: 100vw;
- height: 100vh;
- z-index: 999;
+.overlay-content {
+ transform: scale(0.95) translateY(20px);
+ opacity: 0;
+ transition: transform 0.4s ease-out, opacity 0.4s ease-out;
}
diff --git a/src/app/shared/components/overlay/overlay.component.ts b/src/app/shared/components/overlay/overlay.component.ts
index 645cedb..8a26529 100644
--- a/src/app/shared/components/overlay/overlay.component.ts
+++ b/src/app/shared/components/overlay/overlay.component.ts
@@ -22,21 +22,31 @@ import { Subject, takeUntil } from 'rxjs';
styleUrl: './overlay.component.scss',
})
export class OverlayComponent implements OnInit, OnDestroy {
- overlayType: any;
- overlayData: any;
+ overlayType:
+ | 'taskOverlay'
+ | 'taskOverlayEdit'
+ | 'newTaskOverlay'
+ | 'dialogOverlay'
+ | 'contactOverlay'
+ | null = null;
+ overlayData: any = null;
+ shouldShowOverlay = false;
+ isClosingAnimation = false;
private destroy$ = new Subject