ngx-kit 7.3.3 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drag-resize/README.md +25 -3
- package/fesm2022/ngx-kit-box-shadow.mjs +2 -2
- package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
- package/fesm2022/ngx-kit-data-table.mjs +3 -3
- package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
- package/fesm2022/ngx-kit-date-picker.mjs +27 -22
- package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-dialog.mjs +17 -12
- package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
- package/fesm2022/ngx-kit-drag-resize.mjs +1311 -406
- package/fesm2022/ngx-kit-drag-resize.mjs.map +1 -1
- package/fesm2022/ngx-kit-image-viewer.mjs +348 -0
- package/fesm2022/ngx-kit-image-viewer.mjs.map +1 -0
- package/fesm2022/ngx-kit-media-control-mse-media-engine-CtP97cb9.mjs +326 -0
- package/fesm2022/ngx-kit-media-control-mse-media-engine-CtP97cb9.mjs.map +1 -0
- package/fesm2022/ngx-kit-media-control.mjs +1847 -0
- package/fesm2022/ngx-kit-media-control.mjs.map +1 -0
- package/fesm2022/ngx-kit-notify.mjs +2 -2
- package/fesm2022/ngx-kit-notify.mjs.map +1 -1
- package/fesm2022/ngx-kit-side-nav.mjs +170 -0
- package/fesm2022/ngx-kit-side-nav.mjs.map +1 -0
- package/{gallery → image-viewer}/README.md +43 -7
- package/media-control/README.md +349 -0
- package/package.json +13 -9
- package/side-nav/README.md +11 -0
- package/types/ngx-kit-date-picker.d.ts +1 -1
- package/types/ngx-kit-dialog.d.ts +7 -4
- package/types/ngx-kit-drag-resize.d.ts +135 -39
- package/types/{ngx-kit-gallery.d.ts → ngx-kit-image-viewer.d.ts} +5 -39
- package/types/ngx-kit-media-control.d.ts +671 -0
- package/types/ngx-kit-side-nav.d.ts +53 -0
- package/drawer-menu/README.md +0 -125
- package/fesm2022/ngx-kit-drawer-menu.mjs +0 -456
- package/fesm2022/ngx-kit-drawer-menu.mjs.map +0 -1
- package/fesm2022/ngx-kit-gallery.mjs +0 -419
- package/fesm2022/ngx-kit-gallery.mjs.map +0 -1
- package/types/ngx-kit-drawer-menu.d.ts +0 -161
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, OnInit, OnDestroy } from '@angular/core';
|
|
3
|
+
import * as ngx_kit_side_nav from 'ngx-kit/side-nav';
|
|
4
|
+
|
|
5
|
+
declare class NgxDrawerMenu {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxDrawerMenu, never>;
|
|
7
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxDrawerMenu, "[ngxDrawerMenu]", never, {}, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare class NgxDrawerMenuToggle {
|
|
11
|
+
readonly hideOnBreakPoint: i0.InputSignal<boolean>;
|
|
12
|
+
protected readonly sideNav: ngx_kit_side_nav.NgxSideNav;
|
|
13
|
+
hide: i0.WritableSignal<boolean>;
|
|
14
|
+
constructor();
|
|
15
|
+
protected onClick(): void;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxDrawerMenuToggle, never>;
|
|
17
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxDrawerMenuToggle, "[ngxDrawerMenuToggle]", never, { "hideOnBreakPoint": { "alias": "hideOnBreakPoint"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type NgxSideNavMode = 'push' | 'overlay';
|
|
21
|
+
|
|
22
|
+
declare const NGX_SIDE_NAV: InjectionToken<NgxSideNav>;
|
|
23
|
+
declare class NgxSideNav implements OnInit, OnDestroy {
|
|
24
|
+
readonly open: i0.ModelSignal<boolean>;
|
|
25
|
+
readonly width: i0.InputSignal<number>;
|
|
26
|
+
readonly breakpoint: i0.InputSignal<number | null>;
|
|
27
|
+
readonly mode: i0.InputSignal<NgxSideNavMode>;
|
|
28
|
+
shouldShowOverlay: i0.WritableSignal<boolean>;
|
|
29
|
+
private mediaQuery?;
|
|
30
|
+
readonly isMatchMediaQuery: i0.WritableSignal<boolean>;
|
|
31
|
+
private removeMediaQueryListener?;
|
|
32
|
+
protected readonly win: Window | null;
|
|
33
|
+
constructor();
|
|
34
|
+
ngOnInit(): void;
|
|
35
|
+
ngOnDestroy(): void;
|
|
36
|
+
initialize(): void;
|
|
37
|
+
setupMediaQuery(): void;
|
|
38
|
+
onResize(): void;
|
|
39
|
+
toggleMenu(): void;
|
|
40
|
+
closeMenu(): void;
|
|
41
|
+
openMenu(): void;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxSideNav, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgxSideNav, "ngx-side-nav", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "breakpoint": { "alias": "breakpoint"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["[ngxDrawerMenu]", "*"], true, never>;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
declare class NgxSideNavModule {
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxSideNavModule, never>;
|
|
48
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgxSideNavModule, never, [typeof NgxDrawerMenu, typeof NgxDrawerMenuToggle, typeof NgxSideNav], [typeof NgxDrawerMenu, typeof NgxDrawerMenuToggle, typeof NgxSideNav]>;
|
|
49
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgxSideNavModule>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export { NGX_SIDE_NAV, NgxDrawerMenu, NgxDrawerMenuToggle, NgxSideNav, NgxSideNavModule };
|
|
53
|
+
export type { NgxSideNavMode };
|
package/drawer-menu/README.md
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# ngx-kit/drawer-menu
|
|
2
|
-
|
|
3
|
-
A gesture-first Angular navigation drawer designed for desktop and mobile.
|
|
4
|
-
|
|
5
|
-
## Highlights
|
|
6
|
-
|
|
7
|
-
- Logical `start` / `end` placement with RTL/LTR support.
|
|
8
|
-
- Mouse + touch + pen drag using Pointer Events.
|
|
9
|
-
- Open from the screen edge when closed.
|
|
10
|
-
- Drag the drawer itself to close it.
|
|
11
|
-
- Live 0..1 gesture progress — effects react while dragging.
|
|
12
|
-
- Fabric / curtain / spring / elastic effects.
|
|
13
|
-
- `overlay`, `push`, and `reveal` content modes.
|
|
14
|
-
- Desktop/mobile responsive state.
|
|
15
|
-
- True docked desktop sidebar: open means it occupies layout space and clicking the page never closes it.
|
|
16
|
-
- Mobile overlay behavior with backdrop and edge swipe.
|
|
17
|
-
- Pin/unpin support.
|
|
18
|
-
- Controlled state with `[(open)]`.
|
|
19
|
-
- Reduced-motion support.
|
|
20
|
-
- Escape and backdrop closing.
|
|
21
|
-
|
|
22
|
-
## Recommended configuration
|
|
23
|
-
|
|
24
|
-
```html
|
|
25
|
-
<ngx-drawer-menu
|
|
26
|
-
side="start"
|
|
27
|
-
mode="push"
|
|
28
|
-
effect="fabric"
|
|
29
|
-
[width]="300"
|
|
30
|
-
[openOnDesktop]="true"
|
|
31
|
-
[openOnMobile]="false"
|
|
32
|
-
[mobileBreakpoint]="960"
|
|
33
|
-
[(open)]="drawerOpen"
|
|
34
|
-
[(pinned)]="drawerPinned">
|
|
35
|
-
<router-outlet />
|
|
36
|
-
|
|
37
|
-
<div drawerContent>
|
|
38
|
-
<!-- navigation -->
|
|
39
|
-
</div>
|
|
40
|
-
</ngx-drawer-menu>
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Behavior model
|
|
44
|
-
|
|
45
|
-
The drawer owns one continuous `progress` value between `0` and `1`.
|
|
46
|
-
|
|
47
|
-
- `0`: fully closed.
|
|
48
|
-
- `1`: fully open.
|
|
49
|
-
- Pointer dragging directly changes progress.
|
|
50
|
-
- On release, velocity and the configured threshold decide the final state.
|
|
51
|
-
|
|
52
|
-
This is the key to getting a physical-feeling drawer instead of a drawer that simply jumps between CSS classes.
|
|
53
|
-
|
|
54
|
-
## Inputs
|
|
55
|
-
|
|
56
|
-
| Input | Default | Purpose |
|
|
57
|
-
| ------------------- | --------- | ------------------------------------------------------------ |
|
|
58
|
-
| `side` | `start` | Logical drawer side. |
|
|
59
|
-
| `mode` | `overlay` | `overlay`, `push`, or `reveal`. |
|
|
60
|
-
| `effect` | `fabric` | `slide`, `spring`, `fabric`, `curtain`, `elastic`, `reveal`. |
|
|
61
|
-
| `width` | `300` | Drawer width in px. |
|
|
62
|
-
| `maxWidth` | `420` | Safety cap for drawer width. |
|
|
63
|
-
| `edgeSize` | `34` | Edge swipe activation area. |
|
|
64
|
-
| `swipeEnabled` | `true` | Enables gesture interaction. |
|
|
65
|
-
| `backdropClose` | `true` | Close on backdrop press. |
|
|
66
|
-
| `escapeClose` | `true` | Close on Escape. |
|
|
67
|
-
| `open` | `true` | Two-way state via `[(open)]`. |
|
|
68
|
-
| `pinned` | `false` | Persistent drawer state via `[(pinned)]`. |
|
|
69
|
-
| `mobileBreakpoint` | `768` | Mobile breakpoint. |
|
|
70
|
-
| `openOnDesktop` | `true` | State on desktop. |
|
|
71
|
-
| `openOnMobile` | `false` | State on mobile/tablet. |
|
|
72
|
-
| `respondToViewport` | `true` | Enables live responsive switching. |
|
|
73
|
-
| `transitionMs` | `420` | Settle animation duration. |
|
|
74
|
-
|
|
75
|
-
## Responsive behavior
|
|
76
|
-
|
|
77
|
-
By default:
|
|
78
|
-
|
|
79
|
-
- Desktop >= 768px: open.
|
|
80
|
-
- Mobile < 768px: closed.
|
|
81
|
-
- Crossing the breakpoint updates the drawer live.
|
|
82
|
-
- A pinned drawer is not closed by responsive rules.
|
|
83
|
-
|
|
84
|
-
A full `responsive` object is also available when a single config object is preferable:
|
|
85
|
-
|
|
86
|
-
```html
|
|
87
|
-
<ngx-drawer-menu
|
|
88
|
-
[responsive]="{
|
|
89
|
-
mode: 'auto',
|
|
90
|
-
breakpoint: 960,
|
|
91
|
-
desktopOpen: true,
|
|
92
|
-
mobileOpen: false,
|
|
93
|
-
respectPinned: true
|
|
94
|
-
}"></ngx-drawer-menu>
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Recommended responsive behavior
|
|
98
|
-
|
|
99
|
-
When `respondToViewport` is enabled, the drawer uses a real sidebar on desktop and an overlay drawer on mobile by default:
|
|
100
|
-
|
|
101
|
-
```html
|
|
102
|
-
<ngx-drawer-menu
|
|
103
|
-
side="start"
|
|
104
|
-
[responsive]="{
|
|
105
|
-
mode: 'auto',
|
|
106
|
-
breakpoint: 960,
|
|
107
|
-
desktopOpen: true,
|
|
108
|
-
mobileOpen: false,
|
|
109
|
-
desktopBehavior: 'dock',
|
|
110
|
-
mobileBehavior: 'overlay',
|
|
111
|
-
respectPinned: true
|
|
112
|
-
}"
|
|
113
|
-
effect="fabric"
|
|
114
|
-
[width]="300">
|
|
115
|
-
<router-outlet />
|
|
116
|
-
<nav drawerContent>...</nav>
|
|
117
|
-
</ngx-drawer-menu>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
In this setup:
|
|
121
|
-
|
|
122
|
-
- `>= 960px`: the open drawer is a real docked sidebar; it owns layout width and does not create a backdrop.
|
|
123
|
-
- `< 960px`: the drawer is an overlay; the page is dimmed and clicking the backdrop can close it.
|
|
124
|
-
- On desktop the drawer can still be dragged closed from its full-height edge handle.
|
|
125
|
-
- When closed, the screen edge remains a mouse/touch drag target and opens the drawer.
|
|
@@ -1,456 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, Renderer2, DestroyRef, PLATFORM_ID, input, model, signal, computed, effect, afterNextRender, HostBinding, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
-
import { isPlatformBrowser } from '@angular/common';
|
|
4
|
-
|
|
5
|
-
const DEFAULT_DRAWER_RESPONSIVE = {
|
|
6
|
-
mode: 'auto',
|
|
7
|
-
breakpoint: 960,
|
|
8
|
-
desktopOpen: true,
|
|
9
|
-
mobileOpen: false,
|
|
10
|
-
desktopBehavior: 'dock',
|
|
11
|
-
mobileBehavior: 'overlay',
|
|
12
|
-
respectPinned: true,
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
class NgxDrawerMenuComponent {
|
|
16
|
-
elementRef = inject((ElementRef));
|
|
17
|
-
renderer = inject(Renderer2);
|
|
18
|
-
destroyRef = inject(DestroyRef);
|
|
19
|
-
platformId = inject(PLATFORM_ID);
|
|
20
|
-
// ---------------------------------------------------------------------------
|
|
21
|
-
// Inputs
|
|
22
|
-
// ---------------------------------------------------------------------------
|
|
23
|
-
side = input('start', /* @ts-ignore */
|
|
24
|
-
...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
|
|
25
|
-
effect = input('fabric', /* @ts-ignore */
|
|
26
|
-
...(ngDevMode ? [{ debugName: "effect" }] : /* istanbul ignore next */ []));
|
|
27
|
-
width = input(300, /* @ts-ignore */
|
|
28
|
-
...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
29
|
-
/**
|
|
30
|
-
* Main drawer state.
|
|
31
|
-
*
|
|
32
|
-
* Usage:
|
|
33
|
-
*
|
|
34
|
-
* [(open)]="sidebarOpen"
|
|
35
|
-
*/
|
|
36
|
-
open = model(false, /* @ts-ignore */
|
|
37
|
-
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
38
|
-
/**
|
|
39
|
-
* Pinned state.
|
|
40
|
-
*
|
|
41
|
-
* Useful for desktop layouts.
|
|
42
|
-
*
|
|
43
|
-
* [(pinned)]="sidebarPinned"
|
|
44
|
-
*/
|
|
45
|
-
pinned = model(false, /* @ts-ignore */
|
|
46
|
-
...(ngDevMode ? [{ debugName: "pinned" }] : /* istanbul ignore next */ []));
|
|
47
|
-
responsive = input(DEFAULT_DRAWER_RESPONSIVE, /* @ts-ignore */
|
|
48
|
-
...(ngDevMode ? [{ debugName: "responsive" }] : /* istanbul ignore next */ []));
|
|
49
|
-
/**
|
|
50
|
-
* Whether clicking backdrop closes drawer.
|
|
51
|
-
*/
|
|
52
|
-
closeOnBackdrop = input(true, /* @ts-ignore */
|
|
53
|
-
...(ngDevMode ? [{ debugName: "closeOnBackdrop" }] : /* istanbul ignore next */ []));
|
|
54
|
-
/**
|
|
55
|
-
* Whether Escape closes drawer.
|
|
56
|
-
*/
|
|
57
|
-
closeOnEscape = input(true, /* @ts-ignore */
|
|
58
|
-
...(ngDevMode ? [{ debugName: "closeOnEscape" }] : /* istanbul ignore next */ []));
|
|
59
|
-
/**
|
|
60
|
-
* Whether body scrolling should be locked
|
|
61
|
-
* while an overlay drawer is open.
|
|
62
|
-
*/
|
|
63
|
-
lockBodyScroll = input(true, /* @ts-ignore */
|
|
64
|
-
...(ngDevMode ? [{ debugName: "lockBodyScroll" }] : /* istanbul ignore next */ []));
|
|
65
|
-
/**
|
|
66
|
-
* Animation duration in milliseconds.
|
|
67
|
-
*/
|
|
68
|
-
animationDuration = input(280, /* @ts-ignore */
|
|
69
|
-
...(ngDevMode ? [{ debugName: "animationDuration" }] : /* istanbul ignore next */ []));
|
|
70
|
-
/**
|
|
71
|
-
* z-index.
|
|
72
|
-
*/
|
|
73
|
-
zIndex = input(1000, /* @ts-ignore */
|
|
74
|
-
...(ngDevMode ? [{ debugName: "zIndex" }] : /* istanbul ignore next */ []));
|
|
75
|
-
// ---------------------------------------------------------------------------
|
|
76
|
-
// Internal state
|
|
77
|
-
// ---------------------------------------------------------------------------
|
|
78
|
-
isBrowser = isPlatformBrowser(this.platformId);
|
|
79
|
-
isMobile = signal(false, /* @ts-ignore */
|
|
80
|
-
...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
|
|
81
|
-
initialized = signal(false, /* @ts-ignore */
|
|
82
|
-
...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
|
|
83
|
-
/**
|
|
84
|
-
* Used to avoid applying responsive defaults repeatedly.
|
|
85
|
-
*/
|
|
86
|
-
previousResponsiveMode = null;
|
|
87
|
-
mediaQuery;
|
|
88
|
-
removeMediaQueryListener;
|
|
89
|
-
// ---------------------------------------------------------------------------
|
|
90
|
-
// Computed
|
|
91
|
-
// ---------------------------------------------------------------------------
|
|
92
|
-
responsiveConfig = computed(() => {
|
|
93
|
-
const config = this.responsive();
|
|
94
|
-
return {
|
|
95
|
-
...DEFAULT_DRAWER_RESPONSIVE,
|
|
96
|
-
...config,
|
|
97
|
-
};
|
|
98
|
-
}, /* @ts-ignore */
|
|
99
|
-
...(ngDevMode ? [{ debugName: "responsiveConfig" }] : /* istanbul ignore next */ []));
|
|
100
|
-
currentMode = computed(() => {
|
|
101
|
-
const config = this.responsiveConfig();
|
|
102
|
-
if (config.mode === 'desktop') {
|
|
103
|
-
return 'desktop';
|
|
104
|
-
}
|
|
105
|
-
if (config.mode === 'mobile') {
|
|
106
|
-
return 'mobile';
|
|
107
|
-
}
|
|
108
|
-
return this.isMobile() ? 'mobile' : 'desktop';
|
|
109
|
-
}, /* @ts-ignore */
|
|
110
|
-
...(ngDevMode ? [{ debugName: "currentMode" }] : /* istanbul ignore next */ []));
|
|
111
|
-
currentBehavior = computed(() => {
|
|
112
|
-
const config = this.responsiveConfig();
|
|
113
|
-
return this.currentMode() === 'mobile' ? config.mobileBehavior : config.desktopBehavior;
|
|
114
|
-
}, /* @ts-ignore */
|
|
115
|
-
...(ngDevMode ? [{ debugName: "currentBehavior" }] : /* istanbul ignore next */ []));
|
|
116
|
-
isOverlay = computed(() => {
|
|
117
|
-
return this.currentBehavior() === 'overlay';
|
|
118
|
-
}, /* @ts-ignore */
|
|
119
|
-
...(ngDevMode ? [{ debugName: "isOverlay" }] : /* istanbul ignore next */ []));
|
|
120
|
-
isDocked = computed(() => {
|
|
121
|
-
return this.currentBehavior() === 'dock';
|
|
122
|
-
}, /* @ts-ignore */
|
|
123
|
-
...(ngDevMode ? [{ debugName: "isDocked" }] : /* istanbul ignore next */ []));
|
|
124
|
-
shouldShowBackdrop = computed(() => {
|
|
125
|
-
return this.isOverlay() && this.open();
|
|
126
|
-
}, /* @ts-ignore */
|
|
127
|
-
...(ngDevMode ? [{ debugName: "shouldShowBackdrop" }] : /* istanbul ignore next */ []));
|
|
128
|
-
drawerWidth = computed(() => {
|
|
129
|
-
const width = this.width();
|
|
130
|
-
if (typeof width === 'number') {
|
|
131
|
-
return `${width}px`;
|
|
132
|
-
}
|
|
133
|
-
return width;
|
|
134
|
-
}, /* @ts-ignore */
|
|
135
|
-
...(ngDevMode ? [{ debugName: "drawerWidth" }] : /* istanbul ignore next */ []));
|
|
136
|
-
drawerVisible = computed(() => {
|
|
137
|
-
return this.open();
|
|
138
|
-
}, /* @ts-ignore */
|
|
139
|
-
...(ngDevMode ? [{ debugName: "drawerVisible" }] : /* istanbul ignore next */ []));
|
|
140
|
-
shouldPreservePinned = computed(() => {
|
|
141
|
-
return this.responsiveConfig().respectPinned;
|
|
142
|
-
}, /* @ts-ignore */
|
|
143
|
-
...(ngDevMode ? [{ debugName: "shouldPreservePinned" }] : /* istanbul ignore next */ []));
|
|
144
|
-
isPinnedAndDesktop = computed(() => {
|
|
145
|
-
return this.currentMode() === 'desktop' && this.pinned() && this.shouldPreservePinned();
|
|
146
|
-
}, /* @ts-ignore */
|
|
147
|
-
...(ngDevMode ? [{ debugName: "isPinnedAndDesktop" }] : /* istanbul ignore next */ []));
|
|
148
|
-
// ---------------------------------------------------------------------------
|
|
149
|
-
// Host bindings
|
|
150
|
-
// ---------------------------------------------------------------------------
|
|
151
|
-
get drawerStart() {
|
|
152
|
-
return this.side() === 'start';
|
|
153
|
-
}
|
|
154
|
-
get drawerEnd() {
|
|
155
|
-
return this.side() === 'end';
|
|
156
|
-
}
|
|
157
|
-
get drawerOpen() {
|
|
158
|
-
return this.open();
|
|
159
|
-
}
|
|
160
|
-
get drawerMobile() {
|
|
161
|
-
return this.currentMode() === 'mobile';
|
|
162
|
-
}
|
|
163
|
-
get drawerDesktop() {
|
|
164
|
-
return this.currentMode() === 'desktop';
|
|
165
|
-
}
|
|
166
|
-
get drawerOverlay() {
|
|
167
|
-
return this.isOverlay();
|
|
168
|
-
}
|
|
169
|
-
get drawerDock() {
|
|
170
|
-
return this.isDocked();
|
|
171
|
-
}
|
|
172
|
-
get hostWidth() {
|
|
173
|
-
return this.drawerWidth();
|
|
174
|
-
}
|
|
175
|
-
get hostDuration() {
|
|
176
|
-
return `${this.animationDuration()}ms`;
|
|
177
|
-
}
|
|
178
|
-
get hostZIndex() {
|
|
179
|
-
return this.zIndex();
|
|
180
|
-
}
|
|
181
|
-
get effectNone() {
|
|
182
|
-
return this.effect() === 'none';
|
|
183
|
-
}
|
|
184
|
-
get effectFabric() {
|
|
185
|
-
return this.effect() === 'fabric';
|
|
186
|
-
}
|
|
187
|
-
get effectSlide() {
|
|
188
|
-
return this.effect() === 'slide';
|
|
189
|
-
}
|
|
190
|
-
get effectPush() {
|
|
191
|
-
return this.effect() === 'push';
|
|
192
|
-
}
|
|
193
|
-
get effectScale() {
|
|
194
|
-
return this.effect() === 'scale';
|
|
195
|
-
}
|
|
196
|
-
// ---------------------------------------------------------------------------
|
|
197
|
-
// Constructor
|
|
198
|
-
// ---------------------------------------------------------------------------
|
|
199
|
-
constructor() {
|
|
200
|
-
this.setupResponsive();
|
|
201
|
-
effect(() => {
|
|
202
|
-
const mode = this.currentMode();
|
|
203
|
-
if (!this.initialized()) {
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
this.handleResponsiveModeChange(mode);
|
|
207
|
-
});
|
|
208
|
-
effect(() => {
|
|
209
|
-
const shouldLock = this.lockBodyScroll();
|
|
210
|
-
const shouldLockNow = this.isOverlay() && this.open();
|
|
211
|
-
if (!shouldLock) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
if (shouldLockNow) {
|
|
215
|
-
this.lockScroll();
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.unlockScroll();
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
this.destroyRef.onDestroy(() => {
|
|
222
|
-
this.destroyResponsive();
|
|
223
|
-
this.unlockScroll();
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
// ---------------------------------------------------------------------------
|
|
227
|
-
// Responsive
|
|
228
|
-
// ---------------------------------------------------------------------------
|
|
229
|
-
setupResponsive() {
|
|
230
|
-
if (!this.isBrowser) {
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
afterNextRender(() => {
|
|
234
|
-
this.setupMediaQuery();
|
|
235
|
-
this.initialized.set(true);
|
|
236
|
-
const mode = this.currentMode();
|
|
237
|
-
this.previousResponsiveMode = mode;
|
|
238
|
-
this.applyInitialResponsiveState(mode);
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
setupMediaQuery() {
|
|
242
|
-
const config = this.responsiveConfig();
|
|
243
|
-
if (config.mode !== 'auto' || this.isBrowser) {
|
|
244
|
-
this.isMobile.set(config.mode === 'mobile');
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
const breakpoint = config.breakpoint;
|
|
248
|
-
this.mediaQuery = window.matchMedia(`(max-width: ${breakpoint - 0.02}px)`);
|
|
249
|
-
this.updateMobileState();
|
|
250
|
-
const listener = () => {
|
|
251
|
-
this.updateMobileState();
|
|
252
|
-
};
|
|
253
|
-
this.mediaQuery.addEventListener('change', listener);
|
|
254
|
-
this.removeMediaQueryListener = () => {
|
|
255
|
-
this.mediaQuery?.removeEventListener('change', listener);
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
updateMobileState() {
|
|
259
|
-
if (!this.mediaQuery) {
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
this.isMobile.set(this.mediaQuery.matches);
|
|
263
|
-
}
|
|
264
|
-
handleResponsiveModeChange(mode) {
|
|
265
|
-
if (this.previousResponsiveMode === null) {
|
|
266
|
-
this.previousResponsiveMode = mode;
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
if (this.previousResponsiveMode === mode) {
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
const previousMode = this.previousResponsiveMode;
|
|
273
|
-
this.previousResponsiveMode = mode;
|
|
274
|
-
const config = this.responsiveConfig();
|
|
275
|
-
/**
|
|
276
|
-
* If pinned should be respected,
|
|
277
|
-
* don't overwrite the current open state.
|
|
278
|
-
*/
|
|
279
|
-
if (config.respectPinned && this.pinned()) {
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
if (mode === 'desktop') {
|
|
283
|
-
this.open.set(config.desktopOpen);
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
this.open.set(config.mobileOpen);
|
|
287
|
-
}
|
|
288
|
-
this.renderer.setAttribute(this.elementRef.nativeElement, 'data-previous-mode', previousMode);
|
|
289
|
-
}
|
|
290
|
-
applyInitialResponsiveState(mode) {
|
|
291
|
-
const config = this.responsiveConfig();
|
|
292
|
-
if (config.respectPinned && this.pinned()) {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Don't blindly overwrite an explicitly bound
|
|
297
|
-
* [(open)] value after initialization.
|
|
298
|
-
*
|
|
299
|
-
* The default is only applied when the model
|
|
300
|
-
* has not already been initialized.
|
|
301
|
-
*/
|
|
302
|
-
if (mode === 'desktop') {
|
|
303
|
-
this.open.set(config.desktopOpen);
|
|
304
|
-
}
|
|
305
|
-
else {
|
|
306
|
-
this.open.set(config.mobileOpen);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
destroyResponsive() {
|
|
310
|
-
this.removeMediaQueryListener?.();
|
|
311
|
-
this.mediaQuery = undefined;
|
|
312
|
-
}
|
|
313
|
-
// ---------------------------------------------------------------------------
|
|
314
|
-
// Public API
|
|
315
|
-
// ---------------------------------------------------------------------------
|
|
316
|
-
toggle() {
|
|
317
|
-
if (this.open()) {
|
|
318
|
-
this.close();
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
this.openDrawer();
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
openDrawer() {
|
|
325
|
-
this.open.set(true);
|
|
326
|
-
}
|
|
327
|
-
close() {
|
|
328
|
-
if (this.pinned() && this.isPinnedAndDesktop()) {
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
this.open.set(false);
|
|
332
|
-
}
|
|
333
|
-
pin() {
|
|
334
|
-
this.pinned.set(true);
|
|
335
|
-
this.open.set(true);
|
|
336
|
-
}
|
|
337
|
-
unpin() {
|
|
338
|
-
this.pinned.set(false);
|
|
339
|
-
}
|
|
340
|
-
togglePinned() {
|
|
341
|
-
if (this.pinned()) {
|
|
342
|
-
this.unpin();
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
this.pin();
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
// ---------------------------------------------------------------------------
|
|
349
|
-
// Events
|
|
350
|
-
// ---------------------------------------------------------------------------
|
|
351
|
-
onBackdropClick() {
|
|
352
|
-
if (!this.closeOnBackdrop()) {
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
this.close();
|
|
356
|
-
}
|
|
357
|
-
onKeyDown(event) {
|
|
358
|
-
if (event.key !== 'Escape') {
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
if (!this.closeOnEscape()) {
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
if (!this.open()) {
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
this.close();
|
|
368
|
-
}
|
|
369
|
-
// ---------------------------------------------------------------------------
|
|
370
|
-
// Scroll locking
|
|
371
|
-
// ---------------------------------------------------------------------------
|
|
372
|
-
lockScroll() {
|
|
373
|
-
if (!this.isBrowser) {
|
|
374
|
-
return;
|
|
375
|
-
}
|
|
376
|
-
if (!document.body) {
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
if (document.body.dataset['ngxDrawerScrollLocked'] === 'true') {
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
this.renderer.setAttribute(document.body, 'data-ngx-drawer-scroll-locked', 'true');
|
|
383
|
-
this.renderer.setStyle(document.body, 'overflow', 'hidden');
|
|
384
|
-
}
|
|
385
|
-
unlockScroll() {
|
|
386
|
-
if (!this.isBrowser) {
|
|
387
|
-
return;
|
|
388
|
-
}
|
|
389
|
-
if (!document.body) {
|
|
390
|
-
return;
|
|
391
|
-
}
|
|
392
|
-
if (document.body.dataset['ngxDrawerScrollLocked'] !== 'true') {
|
|
393
|
-
return;
|
|
394
|
-
}
|
|
395
|
-
this.renderer.removeAttribute(document.body, 'data-ngx-drawer-scroll-locked');
|
|
396
|
-
this.renderer.removeStyle(document.body, 'overflow');
|
|
397
|
-
}
|
|
398
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxDrawerMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
399
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: NgxDrawerMenuComponent, isStandalone: true, selector: "ngx-drawer-menu", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, effect: { classPropertyName: "effect", publicName: "effect", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, pinned: { classPropertyName: "pinned", publicName: "pinned", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdrop: { classPropertyName: "closeOnBackdrop", publicName: "closeOnBackdrop", isSignal: true, isRequired: false, transformFunction: null }, closeOnEscape: { classPropertyName: "closeOnEscape", publicName: "closeOnEscape", isSignal: true, isRequired: false, transformFunction: null }, lockBodyScroll: { classPropertyName: "lockBodyScroll", publicName: "lockBodyScroll", isSignal: true, isRequired: false, transformFunction: null }, animationDuration: { classPropertyName: "animationDuration", publicName: "animationDuration", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", pinned: "pinnedChange" }, host: { properties: { "class.drawer-start": "this.drawerStart", "class.drawer-end": "this.drawerEnd", "class.drawer-open": "this.drawerOpen", "class.drawer-mobile": "this.drawerMobile", "class.drawer-desktop": "this.drawerDesktop", "class.drawer-overlay": "this.drawerOverlay", "class.drawer-dock": "this.drawerDock", "style.--ngx-drawer-width": "this.hostWidth", "style.--ngx-drawer-duration": "this.hostDuration", "style.--ngx-drawer-z-index": "this.hostZIndex", "class.effect-none": "this.effectNone", "class.effect-fabric": "this.effectFabric", "class.effect-slide": "this.effectSlide", "class.effect-push": "this.effectPush", "class.effect-scale": "this.effectScale" } }, ngImport: i0, template: "<div\n class=\"ngx-drawer-root\"\n [class.is-open]=\"drawerVisible()\"\n [class.is-closed]=\"!drawerVisible()\"\n [class.is-overlay]=\"isOverlay()\"\n [class.is-dock]=\"isDocked()\"\n [class.is-pinned]=\"pinned()\"\n [class.is-mobile]=\"currentMode() === 'mobile'\"\n [class.is-desktop]=\"currentMode() === 'desktop'\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"-1\">\n <!-- ===================================================================== -->\n <!-- Backdrop -->\n <!-- ===================================================================== -->\n\n @if (shouldShowBackdrop()) {\n <div class=\"ngx-drawer-backdrop\" aria-hidden=\"true\" (click)=\"onBackdropClick()\"></div>\n }\n\n <!-- ===================================================================== -->\n <!-- Drawer -->\n <!-- ===================================================================== -->\n\n <aside\n class=\"ngx-drawer\"\n [attr.aria-hidden]=\"!drawerVisible()\"\n [attr.data-side]=\"side()\"\n [attr.data-mode]=\"currentMode()\"\n [attr.data-behavior]=\"currentBehavior()\"\n [attr.data-effect]=\"effect()\"\n [attr.data-pinned]=\"pinned()\">\n <div class=\"ngx-drawer-surface\">\n <!-- Drawer Content -->\n <div class=\"ngx-drawer-content\">\n <ng-content select=\"[drawerContent]\"></ng-content>\n </div>\n </div>\n </aside>\n\n <!-- ===================================================================== -->\n <!-- Main Content -->\n <!-- ===================================================================== -->\n\n <main class=\"ngx-drawer-main\">\n <div class=\"ngx-drawer-main-content\">\n <ng-content></ng-content>\n </div>\n </main>\n</div>\n", styles: [":host{--ngx-drawer-width: 300px;--ngx-drawer-duration: .28s;--ngx-drawer-z-index: 1000;display:block;width:100%;position:relative;isolation:isolate}:host,:host *,:host *:before,:host *:after{box-sizing:border-box}.ngx-drawer-root{position:relative;display:flex;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;outline:none}.ngx-drawer-main{position:relative;flex:1 1 auto;width:100%;min-width:0;min-height:0;overflow:hidden;display:flex;transition:width var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),margin var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),transform var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),opacity var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1)}.ngx-drawer-main-content{width:100%;min-width:0;min-height:0;overflow:auto}.ngx-drawer{position:relative;flex:0 0 var(--ngx-drawer-width);width:var(--ngx-drawer-width);min-width:var(--ngx-drawer-width);max-width:var(--ngx-drawer-width);height:100%;z-index:calc(var(--ngx-drawer-z-index) + 2);transition:transform var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),width var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),opacity var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),box-shadow var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1)}.ngx-drawer-surface{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--ngx-drawer-background, #fff);color:var(--ngx-drawer-color, #1f2937);border:0;box-shadow:0 0 #0000}.ngx-drawer-content{width:100%;height:100%;min-width:0;min-height:0;overflow:auto}:host.drawer-start .ngx-drawer{order:0}:host.drawer-start .ngx-drawer-main{order:1}:host.drawer-end .ngx-drawer{order:1}:host.drawer-end .ngx-drawer-main{order:0}:host.drawer-dock .ngx-drawer{transform:translate(0);opacity:1;visibility:visible}:host.drawer-dock.drawer-start.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-dock.drawer-start:not(.drawer-open) .ngx-drawer{transform:translate(-100%)}:host.drawer-dock.drawer-end.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-dock.drawer-end:not(.drawer-open) .ngx-drawer{transform:translate(100%)}:host.drawer-overlay .ngx-drawer{position:absolute;top:0;bottom:0;z-index:calc(var(--ngx-drawer-z-index) + 2);box-shadow:0 12px 40px #0000002e}:host.drawer-start.drawer-overlay .ngx-drawer{left:0}:host.drawer-end.drawer-overlay .ngx-drawer{right:0}:host.drawer-overlay.drawer-start.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-overlay.drawer-start:not(.drawer-open) .ngx-drawer{transform:translate(-105%)}:host.drawer-overlay.drawer-end.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-overlay.drawer-end:not(.drawer-open) .ngx-drawer{transform:translate(105%)}.ngx-drawer-backdrop{position:absolute;inset:0;z-index:calc(var(--ngx-drawer-z-index) + 1);background:#00000061;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);opacity:1;animation:ngx-drawer-backdrop-in var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1);cursor:default}@keyframes ngx-drawer-backdrop-in{0%{opacity:0}to{opacity:1}}:host.effect-fabric .ngx-drawer-surface{position:relative;overflow:hidden}:host.effect-fabric .ngx-drawer-surface:before{content:\"\";position:absolute;top:0;bottom:0;width:100px;pointer-events:none;opacity:0;transition:opacity var(--ngx-drawer-duration) ease,transform var(--ngx-drawer-duration) ease;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.08) 45%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.08) 55%,transparent 100%)}:host.effect-fabric.drawer-start .ngx-drawer-surface:before{right:-100px}:host.effect-fabric.drawer-end .ngx-drawer-surface:before{left:-100px}:host.effect-fabric.drawer-open .ngx-drawer-surface:before{opacity:1}:host.effect-slide .ngx-drawer{will-change:transform}:host.effect-push.drawer-start.drawer-open .ngx-drawer-main{transform:translate(calc(var(--ngx-drawer-width) / 2))}:host.effect-push.drawer-end.drawer-open .ngx-drawer-main{transform:translate(calc(var(--ngx-drawer-width) / -2))}:host.effect-scale.drawer-open .ngx-drawer-main-content{transform:scale(.985);opacity:.92}.ngx-drawer-main-content{transition:transform var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),opacity var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1)}:host.drawer-dock.drawer-open.drawer-desktop.drawer-start{--ngx-drawer-shadow: 8px 0 24px rgba(0, 0, 0, .06)}:host.drawer-dock.drawer-open.drawer-desktop.drawer-end{--ngx-drawer-shadow: -8px 0 24px rgba(0, 0, 0, .06)}:host.drawer-dock .ngx-drawer-surface{box-shadow:var(--ngx-drawer-shadow, none)}:host.drawer-dock.drawer-desktop.drawer-open .ngx-drawer{box-shadow:none}:host.drawer-mobile{--ngx-drawer-duration: .26s}:host.drawer-mobile .ngx-drawer{box-shadow:0 12px 40px #0003}@media(prefers-color-scheme:dark){:host{--ngx-drawer-background: #111827;--ngx-drawer-color: #f3f4f6}.ngx-drawer-surface{border-color:#ffffff14}.ngx-drawer-backdrop{background:#0009}}@media(prefers-reduced-motion:reduce){:host{--ngx-drawer-duration: 0ms}.ngx-drawer,.ngx-drawer-main,.ngx-drawer-main-content,.ngx-drawer-backdrop{transition:none!important;animation:none!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
400
|
-
}
|
|
401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxDrawerMenuComponent, decorators: [{
|
|
402
|
-
type: Component,
|
|
403
|
-
args: [{ selector: 'ngx-drawer-menu', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ngx-drawer-root\"\n [class.is-open]=\"drawerVisible()\"\n [class.is-closed]=\"!drawerVisible()\"\n [class.is-overlay]=\"isOverlay()\"\n [class.is-dock]=\"isDocked()\"\n [class.is-pinned]=\"pinned()\"\n [class.is-mobile]=\"currentMode() === 'mobile'\"\n [class.is-desktop]=\"currentMode() === 'desktop'\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"-1\">\n <!-- ===================================================================== -->\n <!-- Backdrop -->\n <!-- ===================================================================== -->\n\n @if (shouldShowBackdrop()) {\n <div class=\"ngx-drawer-backdrop\" aria-hidden=\"true\" (click)=\"onBackdropClick()\"></div>\n }\n\n <!-- ===================================================================== -->\n <!-- Drawer -->\n <!-- ===================================================================== -->\n\n <aside\n class=\"ngx-drawer\"\n [attr.aria-hidden]=\"!drawerVisible()\"\n [attr.data-side]=\"side()\"\n [attr.data-mode]=\"currentMode()\"\n [attr.data-behavior]=\"currentBehavior()\"\n [attr.data-effect]=\"effect()\"\n [attr.data-pinned]=\"pinned()\">\n <div class=\"ngx-drawer-surface\">\n <!-- Drawer Content -->\n <div class=\"ngx-drawer-content\">\n <ng-content select=\"[drawerContent]\"></ng-content>\n </div>\n </div>\n </aside>\n\n <!-- ===================================================================== -->\n <!-- Main Content -->\n <!-- ===================================================================== -->\n\n <main class=\"ngx-drawer-main\">\n <div class=\"ngx-drawer-main-content\">\n <ng-content></ng-content>\n </div>\n </main>\n</div>\n", styles: [":host{--ngx-drawer-width: 300px;--ngx-drawer-duration: .28s;--ngx-drawer-z-index: 1000;display:block;width:100%;position:relative;isolation:isolate}:host,:host *,:host *:before,:host *:after{box-sizing:border-box}.ngx-drawer-root{position:relative;display:flex;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;outline:none}.ngx-drawer-main{position:relative;flex:1 1 auto;width:100%;min-width:0;min-height:0;overflow:hidden;display:flex;transition:width var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),margin var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),transform var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),opacity var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1)}.ngx-drawer-main-content{width:100%;min-width:0;min-height:0;overflow:auto}.ngx-drawer{position:relative;flex:0 0 var(--ngx-drawer-width);width:var(--ngx-drawer-width);min-width:var(--ngx-drawer-width);max-width:var(--ngx-drawer-width);height:100%;z-index:calc(var(--ngx-drawer-z-index) + 2);transition:transform var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),width var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),opacity var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),box-shadow var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1)}.ngx-drawer-surface{position:relative;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--ngx-drawer-background, #fff);color:var(--ngx-drawer-color, #1f2937);border:0;box-shadow:0 0 #0000}.ngx-drawer-content{width:100%;height:100%;min-width:0;min-height:0;overflow:auto}:host.drawer-start .ngx-drawer{order:0}:host.drawer-start .ngx-drawer-main{order:1}:host.drawer-end .ngx-drawer{order:1}:host.drawer-end .ngx-drawer-main{order:0}:host.drawer-dock .ngx-drawer{transform:translate(0);opacity:1;visibility:visible}:host.drawer-dock.drawer-start.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-dock.drawer-start:not(.drawer-open) .ngx-drawer{transform:translate(-100%)}:host.drawer-dock.drawer-end.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-dock.drawer-end:not(.drawer-open) .ngx-drawer{transform:translate(100%)}:host.drawer-overlay .ngx-drawer{position:absolute;top:0;bottom:0;z-index:calc(var(--ngx-drawer-z-index) + 2);box-shadow:0 12px 40px #0000002e}:host.drawer-start.drawer-overlay .ngx-drawer{left:0}:host.drawer-end.drawer-overlay .ngx-drawer{right:0}:host.drawer-overlay.drawer-start.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-overlay.drawer-start:not(.drawer-open) .ngx-drawer{transform:translate(-105%)}:host.drawer-overlay.drawer-end.drawer-open .ngx-drawer{transform:translate(0)}:host.drawer-overlay.drawer-end:not(.drawer-open) .ngx-drawer{transform:translate(105%)}.ngx-drawer-backdrop{position:absolute;inset:0;z-index:calc(var(--ngx-drawer-z-index) + 1);background:#00000061;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);opacity:1;animation:ngx-drawer-backdrop-in var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1);cursor:default}@keyframes ngx-drawer-backdrop-in{0%{opacity:0}to{opacity:1}}:host.effect-fabric .ngx-drawer-surface{position:relative;overflow:hidden}:host.effect-fabric .ngx-drawer-surface:before{content:\"\";position:absolute;top:0;bottom:0;width:100px;pointer-events:none;opacity:0;transition:opacity var(--ngx-drawer-duration) ease,transform var(--ngx-drawer-duration) ease;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.08) 45%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.08) 55%,transparent 100%)}:host.effect-fabric.drawer-start .ngx-drawer-surface:before{right:-100px}:host.effect-fabric.drawer-end .ngx-drawer-surface:before{left:-100px}:host.effect-fabric.drawer-open .ngx-drawer-surface:before{opacity:1}:host.effect-slide .ngx-drawer{will-change:transform}:host.effect-push.drawer-start.drawer-open .ngx-drawer-main{transform:translate(calc(var(--ngx-drawer-width) / 2))}:host.effect-push.drawer-end.drawer-open .ngx-drawer-main{transform:translate(calc(var(--ngx-drawer-width) / -2))}:host.effect-scale.drawer-open .ngx-drawer-main-content{transform:scale(.985);opacity:.92}.ngx-drawer-main-content{transition:transform var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1),opacity var(--ngx-drawer-duration) cubic-bezier(.4,0,.2,1)}:host.drawer-dock.drawer-open.drawer-desktop.drawer-start{--ngx-drawer-shadow: 8px 0 24px rgba(0, 0, 0, .06)}:host.drawer-dock.drawer-open.drawer-desktop.drawer-end{--ngx-drawer-shadow: -8px 0 24px rgba(0, 0, 0, .06)}:host.drawer-dock .ngx-drawer-surface{box-shadow:var(--ngx-drawer-shadow, none)}:host.drawer-dock.drawer-desktop.drawer-open .ngx-drawer{box-shadow:none}:host.drawer-mobile{--ngx-drawer-duration: .26s}:host.drawer-mobile .ngx-drawer{box-shadow:0 12px 40px #0003}@media(prefers-color-scheme:dark){:host{--ngx-drawer-background: #111827;--ngx-drawer-color: #f3f4f6}.ngx-drawer-surface{border-color:#ffffff14}.ngx-drawer-backdrop{background:#0009}}@media(prefers-reduced-motion:reduce){:host{--ngx-drawer-duration: 0ms}.ngx-drawer,.ngx-drawer-main,.ngx-drawer-main-content,.ngx-drawer-backdrop{transition:none!important;animation:none!important}}\n"] }]
|
|
404
|
-
}], ctorParameters: () => [], propDecorators: { side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], effect: [{ type: i0.Input, args: [{ isSignal: true, alias: "effect", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], pinned: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinned", required: false }] }, { type: i0.Output, args: ["pinnedChange"] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], closeOnBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdrop", required: false }] }], closeOnEscape: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEscape", required: false }] }], lockBodyScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "lockBodyScroll", required: false }] }], animationDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDuration", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], drawerStart: [{
|
|
405
|
-
type: HostBinding,
|
|
406
|
-
args: ['class.drawer-start']
|
|
407
|
-
}], drawerEnd: [{
|
|
408
|
-
type: HostBinding,
|
|
409
|
-
args: ['class.drawer-end']
|
|
410
|
-
}], drawerOpen: [{
|
|
411
|
-
type: HostBinding,
|
|
412
|
-
args: ['class.drawer-open']
|
|
413
|
-
}], drawerMobile: [{
|
|
414
|
-
type: HostBinding,
|
|
415
|
-
args: ['class.drawer-mobile']
|
|
416
|
-
}], drawerDesktop: [{
|
|
417
|
-
type: HostBinding,
|
|
418
|
-
args: ['class.drawer-desktop']
|
|
419
|
-
}], drawerOverlay: [{
|
|
420
|
-
type: HostBinding,
|
|
421
|
-
args: ['class.drawer-overlay']
|
|
422
|
-
}], drawerDock: [{
|
|
423
|
-
type: HostBinding,
|
|
424
|
-
args: ['class.drawer-dock']
|
|
425
|
-
}], hostWidth: [{
|
|
426
|
-
type: HostBinding,
|
|
427
|
-
args: ['style.--ngx-drawer-width']
|
|
428
|
-
}], hostDuration: [{
|
|
429
|
-
type: HostBinding,
|
|
430
|
-
args: ['style.--ngx-drawer-duration']
|
|
431
|
-
}], hostZIndex: [{
|
|
432
|
-
type: HostBinding,
|
|
433
|
-
args: ['style.--ngx-drawer-z-index']
|
|
434
|
-
}], effectNone: [{
|
|
435
|
-
type: HostBinding,
|
|
436
|
-
args: ['class.effect-none']
|
|
437
|
-
}], effectFabric: [{
|
|
438
|
-
type: HostBinding,
|
|
439
|
-
args: ['class.effect-fabric']
|
|
440
|
-
}], effectSlide: [{
|
|
441
|
-
type: HostBinding,
|
|
442
|
-
args: ['class.effect-slide']
|
|
443
|
-
}], effectPush: [{
|
|
444
|
-
type: HostBinding,
|
|
445
|
-
args: ['class.effect-push']
|
|
446
|
-
}], effectScale: [{
|
|
447
|
-
type: HostBinding,
|
|
448
|
-
args: ['class.effect-scale']
|
|
449
|
-
}] } });
|
|
450
|
-
|
|
451
|
-
/**
|
|
452
|
-
* Generated bundle index. Do not edit.
|
|
453
|
-
*/
|
|
454
|
-
|
|
455
|
-
export { DEFAULT_DRAWER_RESPONSIVE, NgxDrawerMenuComponent };
|
|
456
|
-
//# sourceMappingURL=ngx-kit-drawer-menu.mjs.map
|