@bootkit/ng0 0.0.0-alpha.33 → 0.0.0-alpha.35
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/components/sidenav/index.d.ts +8 -3
- package/fesm2022/bootkit-ng0-components-sidenav.mjs +22 -13
- package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs +180 -48
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-localization.mjs +163 -159
- package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
- package/layouts/layout1/index.d.ts +115 -52
- package/localization/index.d.ts +14 -19
- package/package.json +9 -9
|
@@ -9,11 +9,16 @@ type SidenavMode = 'push' | 'over';
|
|
|
9
9
|
* Sidenav position.
|
|
10
10
|
*/
|
|
11
11
|
type SidenavPosition = 'start' | 'end' | 'top' | 'bottom';
|
|
12
|
+
/**
|
|
13
|
+
* Sidenav size.
|
|
14
|
+
*/
|
|
15
|
+
type SidenavSize = number | string | 'small' | 'medium' | 'large' | 'full' | undefined;
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* A sidenav component that displays a sliding navigation panel.
|
|
15
19
|
*/
|
|
16
20
|
declare class SidenavComponent implements OnDestroy {
|
|
21
|
+
private _bodyOverflowStyle?;
|
|
17
22
|
private _sidenavContainer;
|
|
18
23
|
private _vcr;
|
|
19
24
|
private _renderer;
|
|
@@ -59,7 +64,7 @@ declare class SidenavComponent implements OnDestroy {
|
|
|
59
64
|
* @example
|
|
60
65
|
* - 100, '300px', '50%', '50vh', 'small', 'full', ...
|
|
61
66
|
*/
|
|
62
|
-
size: i0.InputSignal<
|
|
67
|
+
size: i0.InputSignal<SidenavSize>;
|
|
63
68
|
/**
|
|
64
69
|
* Whether the sidenav is fixed in the viewport.
|
|
65
70
|
*/
|
|
@@ -68,7 +73,7 @@ declare class SidenavComponent implements OnDestroy {
|
|
|
68
73
|
/**
|
|
69
74
|
* Emits when the backdrop is clicked.
|
|
70
75
|
*/
|
|
71
|
-
backdropClick: EventEmitter<
|
|
76
|
+
backdropClick: EventEmitter<PointerEvent>;
|
|
72
77
|
constructor();
|
|
73
78
|
_getFixedSize(): string | undefined;
|
|
74
79
|
private _observeResize;
|
|
@@ -117,4 +122,4 @@ declare class SidenavModule {
|
|
|
117
122
|
}
|
|
118
123
|
|
|
119
124
|
export { SidenavComponent, SidenavContainerComponent, SidenavContentComponent, SidenavModule };
|
|
120
|
-
export type { SidenavMode, SidenavPosition };
|
|
125
|
+
export type { SidenavMode, SidenavPosition, SidenavSize };
|
|
@@ -8,6 +8,7 @@ import { throttleTime, Observable } from 'rxjs';
|
|
|
8
8
|
* A sidenav component that displays a sliding navigation panel.
|
|
9
9
|
*/
|
|
10
10
|
class SidenavComponent {
|
|
11
|
+
_bodyOverflowStyle;
|
|
11
12
|
_sidenavContainer = inject(SidenavContainerComponent);
|
|
12
13
|
_vcr = inject(ViewContainerRef);
|
|
13
14
|
_renderer = inject(Renderer2);
|
|
@@ -106,6 +107,8 @@ class SidenavComponent {
|
|
|
106
107
|
});
|
|
107
108
|
}
|
|
108
109
|
_createBackdrop() {
|
|
110
|
+
if (this._backdropRef)
|
|
111
|
+
return;
|
|
109
112
|
this._backdropRef = this._vcr.createComponent(BackdropComponent);
|
|
110
113
|
const backdropElm = this._backdropRef.location.nativeElement;
|
|
111
114
|
this._backdropRef.instance.fixed.set(this.fixedInViewport());
|
|
@@ -119,19 +122,31 @@ class SidenavComponent {
|
|
|
119
122
|
const hostElm = this.elmentRef.nativeElement;
|
|
120
123
|
const parentElm = hostElm.parentNode;
|
|
121
124
|
this._renderer.insertBefore(parentElm, backdropElm, hostElm);
|
|
125
|
+
// disable body scroll when sidenav is open and fixedInViewport is true
|
|
126
|
+
if (!this._isPlatformServer && this.fixedInViewport()) {
|
|
127
|
+
const body = document.getElementsByTagName('body')[0];
|
|
128
|
+
this._bodyOverflowStyle = body.style.overflow;
|
|
129
|
+
body.style.overflow = 'hidden';
|
|
130
|
+
this._renderer.setStyle(body, 'overflow', 'hidden');
|
|
131
|
+
}
|
|
122
132
|
}
|
|
123
133
|
_destroyBackdrop() {
|
|
124
134
|
this._backdropClickHandlerUnlisten?.();
|
|
125
135
|
this._backdropRef?.destroy();
|
|
126
136
|
this._backdropClickHandlerUnlisten = undefined;
|
|
127
137
|
this._backdropRef = undefined;
|
|
138
|
+
// restore body scroll when sidenav is closed
|
|
139
|
+
if (!this._isPlatformServer && this.fixedInViewport()) {
|
|
140
|
+
const body = document.getElementsByTagName('body')[0];
|
|
141
|
+
this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);
|
|
142
|
+
}
|
|
128
143
|
}
|
|
129
144
|
ngOnDestroy() {
|
|
130
145
|
this._destroyBackdrop();
|
|
131
146
|
this._resizeSubscription?.unsubscribe();
|
|
132
147
|
}
|
|
133
148
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
134
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: SidenavComponent, isStandalone: true, selector: "ng0-sidenav", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fixedInViewport: { classPropertyName: "fixedInViewport", publicName: "fixedInViewport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.width": "position() == 'start' || position() == 'end' ? _getFixedSize() : undefined", "style.height": "undefined", "style.z-index": "zIndex()", "class.ng0-sidenav-start": "position() == 'start'", "class.ng0-sidenav-end": "position() == 'end'", "class.ng0-sidenav-top": "position() == 'top'", "class.ng0-sidenav-bottom": "position() == 'bottom'", "class.ng0-sidenav-open": "open()", "class.ng0-sidenav-small": "size() == 'small'", "class.ng0-sidenav-medium": "size() == 'medium'", "class.ng0-sidenav-large": "size() == 'large'", "class.ng0-sidenav-full": "size() == 'full'", "class.ng0-sidenav-fixed": "fixedInViewport()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: ["ng0-sidenav{
|
|
149
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: SidenavComponent, isStandalone: true, selector: "ng0-sidenav", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fixedInViewport: { classPropertyName: "fixedInViewport", publicName: "fixedInViewport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.width": "position() == 'start' || position() == 'end' ? _getFixedSize() : undefined", "style.height": "undefined", "style.z-index": "zIndex()", "class.ng0-sidenav-start": "position() == 'start'", "class.ng0-sidenav-end": "position() == 'end'", "class.ng0-sidenav-top": "position() == 'top'", "class.ng0-sidenav-bottom": "position() == 'bottom'", "class.ng0-sidenav-open": "open()", "class.ng0-sidenav-small": "size() == 'small'", "class.ng0-sidenav-medium": "size() == 'medium'", "class.ng0-sidenav-large": "size() == 'large'", "class.ng0-sidenav-full": "size() == 'full'", "class.ng0-sidenav-fixed": "fixedInViewport()" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: ["ng0-sidenav{position:absolute;will-change:transform,width,height;overflow:auto;display:none}.ng0-sidenav-transition ng0-sidenav{transition:transform var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),width var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),height var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}.ng0-sidenav-fixed{position:fixed!important}.ng0-sidenav-top{display:block;left:0;right:0;top:0;transform:translateY(-100%)}.ng0-sidenav-top.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-bottom{display:block;left:0;right:0;bottom:0;transform:translateY(100%)}.ng0-sidenav-bottom.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-start{display:block;top:0;bottom:0;inset-inline-start:0;transform:translate(-100%)}:dir(rtl) .ng0-sidenav-start,body[dir=rtl] .ng0-sidenav-start{transform:translate(100%)}.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-end{display:block;top:0;bottom:0;inset-inline-end:0;transform:translate(100%)}:dir(rtl) .ng0-sidenav-end,body[dir=rtl] .ng0-sidenav-end{transform:translate(-100%)}.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-small.ng0-sidenav-start,.ng0-sidenav-small.ng0-sidenav-end{width:min(350px,95%)}.ng0-sidenav-small.ng0-sidenav-top,.ng0-sidenav-small.ng0-sidenav-bottom{height:min(350px,95%)}@media (min-width: 0){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(700px,95%)}}@media (min-height: 0){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-width: 0){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(700px,95%)}}@media (min-width: 992px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(900px,95%)}}@media (min-width: 1200px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(1200px,95%)}}@media (min-height: 0){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-height: 992px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(900px,95%)}}@media (min-height: 1200px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(1200px,95%)}}.ng0-sidenav-full{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
135
150
|
}
|
|
136
151
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SidenavComponent, decorators: [{
|
|
137
152
|
type: Component,
|
|
@@ -149,7 +164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
149
164
|
"[class.ng0-sidenav-large]": "size() == 'large'",
|
|
150
165
|
"[class.ng0-sidenav-full]": "size() == 'full'",
|
|
151
166
|
"[class.ng0-sidenav-fixed]": "fixedInViewport()",
|
|
152
|
-
}, styles: ["ng0-sidenav{
|
|
167
|
+
}, styles: ["ng0-sidenav{position:absolute;will-change:transform,width,height;overflow:auto;display:none}.ng0-sidenav-transition ng0-sidenav{transition:transform var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),width var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),height var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}.ng0-sidenav-fixed{position:fixed!important}.ng0-sidenav-top{display:block;left:0;right:0;top:0;transform:translateY(-100%)}.ng0-sidenav-top.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-bottom{display:block;left:0;right:0;bottom:0;transform:translateY(100%)}.ng0-sidenav-bottom.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-start{display:block;top:0;bottom:0;inset-inline-start:0;transform:translate(-100%)}:dir(rtl) .ng0-sidenav-start,body[dir=rtl] .ng0-sidenav-start{transform:translate(100%)}.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-end{display:block;top:0;bottom:0;inset-inline-end:0;transform:translate(100%)}:dir(rtl) .ng0-sidenav-end,body[dir=rtl] .ng0-sidenav-end{transform:translate(-100%)}.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-small.ng0-sidenav-start,.ng0-sidenav-small.ng0-sidenav-end{width:min(350px,95%)}.ng0-sidenav-small.ng0-sidenav-top,.ng0-sidenav-small.ng0-sidenav-bottom{height:min(350px,95%)}@media (min-width: 0){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(700px,95%)}}@media (min-height: 0){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-width: 0){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(700px,95%)}}@media (min-width: 992px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(900px,95%)}}@media (min-width: 1200px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(1200px,95%)}}@media (min-height: 0){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-height: 992px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(900px,95%)}}@media (min-height: 1200px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(1200px,95%)}}.ng0-sidenav-full{width:100%;height:100%}\n"] }]
|
|
153
168
|
}], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fixedInViewport: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixedInViewport", required: false }] }], backdropClick: [{
|
|
154
169
|
type: Output
|
|
155
170
|
}] } });
|
|
@@ -185,7 +200,7 @@ class SidenavContainerComponent {
|
|
|
185
200
|
}
|
|
186
201
|
else {
|
|
187
202
|
let horizontal = position == 'start' || position == 'end';
|
|
188
|
-
let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.
|
|
203
|
+
let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.offsetWidth : x.elmentRef.nativeElement.offsetHeight);
|
|
189
204
|
return `${Math.max(...sizes)}px`;
|
|
190
205
|
}
|
|
191
206
|
}
|
|
@@ -208,7 +223,7 @@ class SidenavContainerComponent {
|
|
|
208
223
|
return true;
|
|
209
224
|
}
|
|
210
225
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SidenavContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: SidenavContainerComponent, isStandalone: true, selector: "ng0-sidenav-container", outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.padding-inline-start": "_getPadding('start')", "style.padding-inline-end": "_getPadding('end')", "style.padding-top": "_getPadding('top')", "style.padding-bottom": "_getPadding('bottom')", "class.ng0-sidenav-transition": "_isTransitionEnabled", "class.ng0-sidenav-content-hidden": "!_canComputePadding()" } }, queries: [{ propertyName: "_sidenavs", predicate: SidenavComponent }], ngImport: i0, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\r\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-transition-duration: .
|
|
226
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: SidenavContainerComponent, isStandalone: true, selector: "ng0-sidenav-container", outputs: { backdropClick: "backdropClick" }, host: { properties: { "style.padding-inline-start": "_getPadding('start')", "style.padding-inline-end": "_getPadding('end')", "style.padding-top": "_getPadding('top')", "style.padding-bottom": "_getPadding('bottom')", "class.ng0-sidenav-transition": "_isTransitionEnabled", "class.ng0-sidenav-content-hidden": "!_canComputePadding()" } }, queries: [{ propertyName: "_sidenavs", predicate: SidenavComponent }], ngImport: i0, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\r\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-transition-duration: .2s;--ng0-sidenav-transition-function: ease-out}ng0-sidenav-container{position:relative;display:block;overflow:hidden;will-change:padding}ng0-sidenav-container.ng0-sidenav-transition{transition:padding var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}ng0-sidenav-container.ng0-sidenav-content-hidden ng0-sidenav-content{opacity:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
212
227
|
}
|
|
213
228
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SidenavContainerComponent, decorators: [{
|
|
214
229
|
type: Component,
|
|
@@ -219,7 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
219
234
|
"[style.padding-bottom]": "_getPadding('bottom')",
|
|
220
235
|
"[class.ng0-sidenav-transition]": "_isTransitionEnabled",
|
|
221
236
|
"[class.ng0-sidenav-content-hidden]": "!_canComputePadding()",
|
|
222
|
-
}, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\r\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-transition-duration: .
|
|
237
|
+
}, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\r\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-transition-duration: .2s;--ng0-sidenav-transition-function: ease-out}ng0-sidenav-container{position:relative;display:block;overflow:hidden;will-change:padding}ng0-sidenav-container.ng0-sidenav-transition{transition:padding var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}ng0-sidenav-container.ng0-sidenav-content-hidden ng0-sidenav-content{opacity:0}\n"] }]
|
|
223
238
|
}], propDecorators: { _sidenavs: [{
|
|
224
239
|
type: ContentChildren,
|
|
225
240
|
args: [SidenavComponent]
|
|
@@ -232,17 +247,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
232
247
|
*/
|
|
233
248
|
class SidenavContentComponent {
|
|
234
249
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SidenavContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
235
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: SidenavContentComponent, isStandalone: true, selector: "ng0-sidenav-content", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
250
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: SidenavContentComponent, isStandalone: true, selector: "ng0-sidenav-content", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: ["ng0-sidenav-content{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
236
251
|
}
|
|
237
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SidenavContentComponent, decorators: [{
|
|
238
253
|
type: Component,
|
|
239
|
-
args: [{
|
|
240
|
-
selector: 'ng0-sidenav-content',
|
|
241
|
-
template: `<ng-content></ng-content>`,
|
|
242
|
-
encapsulation: ViewEncapsulation.None,
|
|
243
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
244
|
-
standalone: true,
|
|
245
|
-
}]
|
|
254
|
+
args: [{ selector: 'ng0-sidenav-content', template: `<ng-content></ng-content>`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: ["ng0-sidenav-content{display:block}\n"] }]
|
|
246
255
|
}] });
|
|
247
256
|
|
|
248
257
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-components-sidenav.mjs","sources":["../../../projects/ng0/components/sidenav/sidenav.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.html","../../../projects/ng0/components/sidenav/sidenav-content.component.ts","../../../projects/ng0/components/sidenav/sidenav.module.ts","../../../projects/ng0/components/sidenav/bootkit-ng0-components-sidenav.ts"],"sourcesContent":["import { booleanAttribute, numberAttribute, Component, ComponentRef, effect, ElementRef, EventEmitter, input, OnDestroy, Output, Renderer2, ViewContainerRef, inject, ChangeDetectionStrategy, ViewEncapsulation, PLATFORM_ID } from '@angular/core';\r\nimport { SidenavMode, SidenavPosition } from './types';\r\nimport { BackdropComponent } from '@bootkit/ng0/components/backdrop';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { SidenavContainerComponent } from './sidenav-container.component';\r\nimport { Observable, Subscription, throttleTime } from 'rxjs';\r\n\r\n/**\r\n * A sidenav component that displays a sliding navigation panel.\r\n */\r\n@Component({\r\n selector: 'ng0-sidenav',\r\n template: `<ng-content></ng-content>`,\r\n styleUrls: ['./sidenav.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n host: {\r\n \"[style.width]\": \"position() == 'start' || position() == 'end' ? _getFixedSize() : undefined\",\r\n \"[style.height]\": \"undefined\",\r\n \"[style.z-index]\": \"zIndex()\",\r\n \"[class.ng0-sidenav-start]\": \"position() == 'start'\",\r\n \"[class.ng0-sidenav-end]\": \"position() == 'end'\",\r\n \"[class.ng0-sidenav-top]\": \"position() == 'top'\",\r\n \"[class.ng0-sidenav-bottom]\": \"position() == 'bottom'\",\r\n \"[class.ng0-sidenav-open]\": \"open()\",\r\n \"[class.ng0-sidenav-small]\": \"size() == 'small'\",\r\n \"[class.ng0-sidenav-medium]\": \"size() == 'medium'\",\r\n \"[class.ng0-sidenav-large]\": \"size() == 'large'\",\r\n \"[class.ng0-sidenav-full]\": \"size() == 'full'\",\r\n \"[class.ng0-sidenav-fixed]\": \"fixedInViewport()\",\r\n }\r\n})\r\nexport class SidenavComponent implements OnDestroy {\r\n private _sidenavContainer = inject(SidenavContainerComponent);\r\n private _vcr = inject(ViewContainerRef);\r\n private _renderer = inject(Renderer2);\r\n private _backdropRef?: ComponentRef<BackdropComponent>;\r\n private _backdropClickHandlerUnlisten?: () => void;\r\n private _platformId = inject(PLATFORM_ID);\r\n protected _isPlatformServer = isPlatformServer(this._platformId)\r\n private _resizeSubscription?: Subscription;\r\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n /**\r\n * Whether the sidenav is open.\r\n */\r\n public open = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Sidenav mode.\r\n * Determines how the sidenav is displayed.\r\n * Can be either 'push' or 'over'.\r\n * - 'push': The content is pushed aside to make room for the sidenav.\r\n * - 'over': The sidenav is displayed on top of the content.\r\n */\r\n public mode = input<SidenavMode>('push');\r\n\r\n /**\r\n * Whether the sidenav has a backdrop.\r\n * The backdrop is shown only when the sidenav is open and mode is 'over'.\r\n */\r\n public hasBackdrop = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * Sidenav z-index.\r\n * Determines the stack order of the sidenav.\r\n */\r\n public zIndex = input(undefined, { transform: numberAttribute });\r\n\r\n /**\r\n * Sidenav position.\r\n * Determines the position of the sidenav.\r\n * Can be either 'start', 'end', 'top', or 'bottom'.\r\n */\r\n public position = input<SidenavPosition>('start');\r\n\r\n /**\r\n * Sidenav size.\r\n * Determines the size of the sidenav. \r\n * Can be either 'small', 'medium', 'large', 'full', or a specific value. \r\n * If a specific value is provided, it will be used as the width/height of the sidenav.\r\n * @example\r\n * - 100, '300px', '50%', '50vh', 'small', 'full', ...\r\n */\r\n public size = input<number | string | 'small' | 'medium' | 'large' | 'full' | undefined>();\r\n\r\n /**\r\n * Whether the sidenav is fixed in the viewport.\r\n */\r\n public fixedInViewport = input(false, { transform: booleanAttribute });\r\n\r\n public elmentRef = inject(ElementRef);\r\n\r\n /**\r\n * Emits when the backdrop is clicked.\r\n */\r\n @Output() public backdropClick = new EventEmitter<MouseEvent>();\r\n\r\n constructor() {\r\n effect(() => {\r\n var hasBackdrop = this.hasBackdrop();\r\n var mode = this.mode();\r\n var open = this.open();\r\n\r\n if (mode == 'over' && hasBackdrop && open) {\r\n this._createBackdrop();\r\n } else {\r\n this._destroyBackdrop();\r\n }\r\n });\r\n\r\n if (!this._isPlatformServer) {\r\n this._observeResize()\r\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\r\n .subscribe(entries => {\r\n this._sidenavContainer.changeDetectorRef.markForCheck();\r\n // console.log('Resized to:', entries[0].contentRect.width, entries[0].contentRect.height);\r\n });\r\n }\r\n }\r\n\r\n _getFixedSize(): string | undefined {\r\n let size = this.size();\r\n let t = typeof size;\r\n if (t == 'string') {\r\n return ['small', 'medium', 'large', 'full'].includes(size as string) ? undefined : size as string;\r\n } else if (t == 'number') {\r\n return `${size}px`;\r\n } else {\r\n return undefined;\r\n }\r\n };\r\n\r\n private _observeResize(): Observable<ResizeObserverEntry[]> {\r\n return new Observable(observer => {\r\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\r\n resizeObserver.observe(this._elementRef.nativeElement);\r\n return () => resizeObserver.disconnect();\r\n });\r\n }\r\n\r\n private _createBackdrop() {\r\n this._backdropRef = this._vcr.createComponent(BackdropComponent);\r\n const backdropElm = this._backdropRef.location.nativeElement;\r\n this._backdropRef.instance.fixed.set(this.fixedInViewport());\r\n if (this.zIndex() != undefined) {\r\n this._renderer.setStyle(backdropElm, 'z-index', this.zIndex());\r\n }\r\n this._backdropClickHandlerUnlisten = this._renderer.listen(backdropElm, 'click', (e) => {\r\n this.backdropClick.emit(e);\r\n });\r\n\r\n // Move backdrop element before Host element\r\n const hostElm = this.elmentRef.nativeElement;\r\n const parentElm = hostElm.parentNode;\r\n this._renderer.insertBefore(parentElm, backdropElm, hostElm);\r\n }\r\n\r\n private _destroyBackdrop() {\r\n this._backdropClickHandlerUnlisten?.();\r\n this._backdropRef?.destroy();\r\n\r\n this._backdropClickHandlerUnlisten = undefined;\r\n this._backdropRef = undefined;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyBackdrop();\r\n this._resizeSubscription?.unsubscribe();\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, inject, Output, PLATFORM_ID, QueryList, ViewEncapsulation } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { SidenavComponent } from './sidenav.component';\r\nimport { SidenavPosition } from './types';\r\n\r\n/**\r\n * Sidenav container component\r\n */\r\n@Component({\r\n selector: 'ng0-sidenav-container',\r\n templateUrl: './sidenav-container.component.html',\r\n styleUrls: ['./sidenav-container.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n host: {\r\n \"[style.padding-inline-start]\": \"_getPadding('start')\",\r\n \"[style.padding-inline-end]\": \"_getPadding('end')\",\r\n \"[style.padding-top]\": \"_getPadding('top')\",\r\n \"[style.padding-bottom]\": \"_getPadding('bottom')\",\r\n \"[class.ng0-sidenav-transition]\": \"_isTransitionEnabled\",\r\n \"[class.ng0-sidenav-content-hidden]\": \"!_canComputePadding()\",\r\n }\r\n})\r\nexport class SidenavContainerComponent implements AfterViewInit {\r\n private _platformId = inject(PLATFORM_ID);\r\n protected _isPlatformServer = isPlatformServer(this._platformId)\r\n protected _isTransitionEnabled = false;\r\n @ContentChildren(SidenavComponent) protected _sidenavs!: QueryList<SidenavComponent>;\r\n\r\n /**\r\n * Emitted when the backdrop is clicked.\r\n */\r\n @Output() public backdropClick = new EventEmitter();\r\n\r\n public changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n protected _getPadding(position: SidenavPosition) {\r\n let openSidenavs = this._sidenavs.filter(x => x.open() && x.mode() == 'push');\r\n let filteredSidenavs = openSidenavs.filter(x => x.position() == position);\r\n if(filteredSidenavs.length == 0) return undefined;\r\n\r\n if (this._isPlatformServer) {\r\n let hasDynamicSidenavs = openSidenavs.some(x => x._getFixedSize() == undefined);\r\n if (hasDynamicSidenavs) {\r\n // we cannot compute padding on the server\r\n return undefined;\r\n } else {\r\n let fixedSizes = filteredSidenavs.map(x => x._getFixedSize());\r\n return fixedSizes.length > 1 ? `max(${fixedSizes.join(', ')})` : fixedSizes[0];\r\n }\r\n } else {\r\n let horizontal = position == 'start' || position == 'end';\r\n let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.clientWidth : x.elmentRef.nativeElement.clientHeight);\r\n return `${Math.max(...sizes)}px`;\r\n }\r\n };\r\n\r\n ngAfterViewInit() {\r\n if (!this._isPlatformServer) {\r\n setTimeout(() => this._isTransitionEnabled = true);\r\n }\r\n }\r\n\r\n // In some modes the content is pushed based on the width of the opened sidenavs, however on\r\n // the server we can't measure the sidenav-container padding, so the padding is always zero. This can cause the\r\n // content to jump around when it's rendered on the server and hydrated on the client.\r\n // We avoid it by hiding the content on the initial render and then showing it once the sidenav\r\n // has been measured on the client.\r\n protected _canComputePadding() {\r\n if (this._isPlatformServer) {\r\n let hasDynamicSizenavs = this._sidenavs.some(x => x.open() && x.mode() == 'push' && x._getFixedSize() == undefined);\r\n return !hasDynamicSizenavs;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","<ng-content select=\"ng0-sidenav-content\"></ng-content>\r\n<ng-content></ng-content>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Sidenav content component\r\n */\r\n@Component({\r\n selector: 'ng0-sidenav-content',\r\n template: `<ng-content></ng-content>`,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class SidenavContentComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SidenavContainerComponent } from './sidenav-container.component';\r\nimport { SidenavComponent } from './sidenav.component';\r\nimport { SidenavContentComponent } from './sidenav-content.component';\r\n\r\n/**\r\n * Sidenav module\r\n */\r\n@NgModule({\r\n imports: [\r\n SidenavContainerComponent,\r\n SidenavComponent,\r\n SidenavContentComponent\r\n ],\r\n exports: [\r\n SidenavContainerComponent,\r\n SidenavComponent,\r\n SidenavContentComponent\r\n ]\r\n})\r\nexport class SidenavModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAOA;;AAEG;MAwBU,gBAAgB,CAAA;AACnB,IAAA,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACrD,IAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,YAAY;AACZ,IAAA,6BAA6B;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/B,IAAA,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AACxD,IAAA,mBAAmB;AACV,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAE9D;;AAEG;AACI,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,wCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE3D;;;;;;AAMG;AACI,IAAA,IAAI,GAAG,KAAK,CAAc,MAAM,gDAAC;AAExC;;;AAGG;AACI,IAAA,WAAW,GAAG,KAAK,CAAC,IAAI,+CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAEjE;;;AAGG;AACI,IAAA,MAAM,GAAG,KAAK,CAAC,SAAS,0CAAI,SAAS,EAAE,eAAe,EAAA,CAAA,GAAA,CAA5B,EAAE,SAAS,EAAE,eAAe,EAAE,GAAC;AAEhE;;;;AAIG;AACI,IAAA,QAAQ,GAAG,KAAK,CAAkB,OAAO,oDAAC;AAEjD;;;;;;;AAOG;IACI,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAuE;AAE1F;;AAEG;AACI,IAAA,eAAe,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE/D,IAAA,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC;;AAEG;AACc,IAAA,aAAa,GAAG,IAAI,YAAY,EAAc;AAE/D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YAEtB,IAAI,IAAI,IAAI,MAAM,IAAI,WAAW,IAAI,IAAI,EAAE;gBACzC,IAAI,CAAC,eAAe,EAAE;YACxB;iBAAO;gBACL,IAAI,CAAC,gBAAgB,EAAE;YACzB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,cAAc;AAChB,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACpE,SAAS,CAAC,OAAO,IAAG;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,EAAE;;AAEzD,YAAA,CAAC,CAAC;QACN;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,GAAG,OAAO,IAAI;AACnB,QAAA,IAAI,CAAC,IAAI,QAAQ,EAAE;YACjB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAc,CAAC,GAAG,SAAS,GAAG,IAAc;QACnG;AAAO,aAAA,IAAI,CAAC,IAAI,QAAQ,EAAE;YACxB,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI;QACpB;aAAO;AACL,YAAA,OAAO,SAAS;QAClB;IACF;;IAEQ,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AAC/B,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACtD,YAAA,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE;AAC1C,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;QAChE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa;AAC5D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAChE;AACA,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,KAAI;AACrF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAC5C,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU;QACpC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC;IAC9D;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,6BAA6B,IAAI;AACtC,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAE5B,QAAA,IAAI,CAAC,6BAA6B,GAAG,SAAS;AAC9C,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;IAC/B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;IACzC;uGAzIW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0oDArBjB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oxGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAqB1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAvB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,QAAA,EACb,CAAA,yBAAA,CAA2B,EAAA,aAAA,EAEtB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,IAAA,EACV;AACJ,wBAAA,eAAe,EAAE,4EAA4E;AAC7F,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,yBAAyB,EAAE,qBAAqB;AAChD,wBAAA,yBAAyB,EAAE,qBAAqB;AAChD,wBAAA,4BAA4B,EAAE,wBAAwB;AACtD,wBAAA,0BAA0B,EAAE,QAAQ;AACpC,wBAAA,2BAA2B,EAAE,mBAAmB;AAChD,wBAAA,4BAA4B,EAAE,oBAAoB;AAClD,wBAAA,2BAA2B,EAAE,mBAAmB;AAChD,wBAAA,0BAA0B,EAAE,kBAAkB;AAC9C,wBAAA,2BAA2B,EAAE,mBAAmB;AACjD,qBAAA,EAAA,MAAA,EAAA,CAAA,oxGAAA,CAAA,EAAA;;sBAkEA;;;AC5FH;;AAEG;MAiBU,yBAAyB,CAAA;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/B,IAAA,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;IACtD,oBAAoB,GAAG,KAAK;AACO,IAAA,SAAS;AAEtD;;AAEG;AACc,IAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAE5C,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE1C,IAAA,WAAW,CAAC,QAAyB,EAAA;QAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC;AAC7E,QAAA,IAAI,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC;AACzE,QAAA,IAAG,gBAAgB,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,SAAS;AAEjD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;YAC/E,IAAI,kBAAkB,EAAE;;AAEtB,gBAAA,OAAO,SAAS;YAClB;iBAAO;AACL,gBAAA,IAAI,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC7D,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,IAAA,EAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,GAAG,UAAU,CAAC,CAAC,CAAC;YAChF;QACF;aAAO;YACL,IAAI,UAAU,GAAG,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK;AACzD,YAAA,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC;YAClI,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA,EAAA,CAAI;QAClC;IACF;;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpD;IACF;;;;;;IAOU,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;YACnH,OAAO,CAAC,kBAAkB;QAC5B;AAEA,QAAA,OAAO,IAAI;IACb;uGApDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAInB,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BnC,uFACyB,EAAA,MAAA,EAAA,CAAA,uZAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDuBZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;+BACE,uBAAuB,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,IAAA,EACV;AACJ,wBAAA,8BAA8B,EAAE,sBAAsB;AACtD,wBAAA,4BAA4B,EAAE,oBAAoB;AAClD,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,wBAAwB,EAAE,uBAAuB;AACjD,wBAAA,gCAAgC,EAAE,sBAAsB;AACxD,wBAAA,oCAAoC,EAAE,uBAAuB;AAC9D,qBAAA,EAAA,QAAA,EAAA,uFAAA,EAAA,MAAA,EAAA,CAAA,uZAAA,CAAA,EAAA;;sBAMA,eAAe;uBAAC,gBAAgB;;sBAKhC;;;AE/BH;;AAEG;MAQU,uBAAuB,CAAA;uGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,+EALxB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAK1B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACND;;AAEG;MAaU,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAVtB,yBAAyB;YACzB,gBAAgB;AAChB,YAAA,uBAAuB,aAGvB,yBAAyB;YACzB,gBAAgB;YAChB,uBAAuB,CAAA,EAAA,CAAA;wGAGd,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,gBAAgB;wBAChB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,gBAAgB;wBAChB;AACD;AACF,iBAAA;;;ACnBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-components-sidenav.mjs","sources":["../../../projects/ng0/components/sidenav/sidenav.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.html","../../../projects/ng0/components/sidenav/sidenav-content.component.ts","../../../projects/ng0/components/sidenav/sidenav.module.ts","../../../projects/ng0/components/sidenav/bootkit-ng0-components-sidenav.ts"],"sourcesContent":["import { booleanAttribute, numberAttribute, Component, ComponentRef, effect, ElementRef, EventEmitter, input, OnDestroy, Output, Renderer2, ViewContainerRef, inject, ChangeDetectionStrategy, ViewEncapsulation, PLATFORM_ID, Inject, DOCUMENT } from '@angular/core';\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from './types';\r\nimport { BackdropComponent } from '@bootkit/ng0/components/backdrop';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { SidenavContainerComponent } from './sidenav-container.component';\r\nimport { Observable, Subscription, throttleTime } from 'rxjs';\r\n\r\n/**\r\n * A sidenav component that displays a sliding navigation panel.\r\n */\r\n@Component({\r\n selector: 'ng0-sidenav',\r\n template: `<ng-content></ng-content>`,\r\n styleUrls: ['./sidenav.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n host: {\r\n \"[style.width]\": \"position() == 'start' || position() == 'end' ? _getFixedSize() : undefined\",\r\n \"[style.height]\": \"undefined\",\r\n \"[style.z-index]\": \"zIndex()\",\r\n \"[class.ng0-sidenav-start]\": \"position() == 'start'\",\r\n \"[class.ng0-sidenav-end]\": \"position() == 'end'\",\r\n \"[class.ng0-sidenav-top]\": \"position() == 'top'\",\r\n \"[class.ng0-sidenav-bottom]\": \"position() == 'bottom'\",\r\n \"[class.ng0-sidenav-open]\": \"open()\",\r\n \"[class.ng0-sidenav-small]\": \"size() == 'small'\",\r\n \"[class.ng0-sidenav-medium]\": \"size() == 'medium'\",\r\n \"[class.ng0-sidenav-large]\": \"size() == 'large'\",\r\n \"[class.ng0-sidenav-full]\": \"size() == 'full'\",\r\n \"[class.ng0-sidenav-fixed]\": \"fixedInViewport()\",\r\n }\r\n})\r\nexport class SidenavComponent implements OnDestroy {\r\n private _bodyOverflowStyle?: string;\r\n private _sidenavContainer = inject(SidenavContainerComponent);\r\n private _vcr = inject(ViewContainerRef);\r\n private _renderer = inject(Renderer2);\r\n private _backdropRef?: ComponentRef<BackdropComponent>;\r\n private _backdropClickHandlerUnlisten?: () => void;\r\n private _platformId = inject(PLATFORM_ID);\r\n protected _isPlatformServer = isPlatformServer(this._platformId)\r\n private _resizeSubscription?: Subscription;\r\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\r\n\r\n\r\n /**\r\n * Whether the sidenav is open.\r\n */\r\n public open = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Sidenav mode.\r\n * Determines how the sidenav is displayed.\r\n * Can be either 'push' or 'over'.\r\n * - 'push': The content is pushed aside to make room for the sidenav.\r\n * - 'over': The sidenav is displayed on top of the content.\r\n */\r\n public mode = input<SidenavMode>('push');\r\n\r\n /**\r\n * Whether the sidenav has a backdrop.\r\n * The backdrop is shown only when the sidenav is open and mode is 'over'.\r\n */\r\n public hasBackdrop = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * Sidenav z-index.\r\n * Determines the stack order of the sidenav.\r\n */\r\n public zIndex = input(undefined, { transform: numberAttribute });\r\n\r\n /**\r\n * Sidenav position.\r\n * Determines the position of the sidenav.\r\n * Can be either 'start', 'end', 'top', or 'bottom'.\r\n */\r\n public position = input<SidenavPosition>('start');\r\n\r\n /**\r\n * Sidenav size.\r\n * Determines the size of the sidenav. \r\n * Can be either 'small', 'medium', 'large', 'full', or a specific value. \r\n * If a specific value is provided, it will be used as the width/height of the sidenav.\r\n * @example\r\n * - 100, '300px', '50%', '50vh', 'small', 'full', ...\r\n */\r\n public size = input<SidenavSize>();\r\n\r\n /**\r\n * Whether the sidenav is fixed in the viewport.\r\n */\r\n public fixedInViewport = input(false, { transform: booleanAttribute });\r\n\r\n public elmentRef = inject(ElementRef);\r\n\r\n /**\r\n * Emits when the backdrop is clicked.\r\n */\r\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\r\n\r\n constructor() {\r\n effect(() => {\r\n var hasBackdrop = this.hasBackdrop();\r\n var mode = this.mode();\r\n var open = this.open();\r\n\r\n if (mode == 'over' && hasBackdrop && open) {\r\n this._createBackdrop();\r\n } else {\r\n this._destroyBackdrop();\r\n }\r\n });\r\n\r\n if (!this._isPlatformServer) {\r\n this._observeResize()\r\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\r\n .subscribe(entries => {\r\n this._sidenavContainer.changeDetectorRef.markForCheck();\r\n // console.log('Resized to:', entries[0].contentRect.width, entries[0].contentRect.height);\r\n });\r\n }\r\n }\r\n\r\n _getFixedSize(): string | undefined {\r\n let size = this.size();\r\n let t = typeof size;\r\n if (t == 'string') {\r\n return ['small', 'medium', 'large', 'full'].includes(size as string) ? undefined : size as string;\r\n } else if (t == 'number') {\r\n return `${size}px`;\r\n } else {\r\n return undefined;\r\n }\r\n };\r\n\r\n private _observeResize(): Observable<ResizeObserverEntry[]> {\r\n return new Observable(observer => {\r\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\r\n resizeObserver.observe(this._elementRef.nativeElement);\r\n return () => resizeObserver.disconnect();\r\n });\r\n }\r\n\r\n private _createBackdrop() {\r\n if (this._backdropRef) return;\r\n\r\n this._backdropRef = this._vcr.createComponent(BackdropComponent);\r\n const backdropElm = this._backdropRef.location.nativeElement;\r\n this._backdropRef.instance.fixed.set(this.fixedInViewport());\r\n if (this.zIndex() != undefined) {\r\n this._renderer.setStyle(backdropElm, 'z-index', this.zIndex());\r\n }\r\n this._backdropClickHandlerUnlisten = this._renderer.listen(backdropElm, 'click', (e) => {\r\n this.backdropClick.emit(e);\r\n });\r\n\r\n // Move backdrop element before Host element\r\n const hostElm = this.elmentRef.nativeElement;\r\n const parentElm = hostElm.parentNode;\r\n this._renderer.insertBefore(parentElm, backdropElm, hostElm);\r\n\r\n\r\n // disable body scroll when sidenav is open and fixedInViewport is true\r\n if (!this._isPlatformServer && this.fixedInViewport()) {\r\n const body = document.getElementsByTagName('body')[0];\r\n this._bodyOverflowStyle = body.style.overflow;\r\n body.style.overflow = 'hidden';\r\n this._renderer.setStyle(body, 'overflow', 'hidden');\r\n }\r\n }\r\n\r\n private _destroyBackdrop() {\r\n this._backdropClickHandlerUnlisten?.();\r\n this._backdropRef?.destroy();\r\n this._backdropClickHandlerUnlisten = undefined;\r\n this._backdropRef = undefined;\r\n\r\n // restore body scroll when sidenav is closed\r\n if (!this._isPlatformServer && this.fixedInViewport()) {\r\n const body = document.getElementsByTagName('body')[0];\r\n this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyBackdrop();\r\n this._resizeSubscription?.unsubscribe();\r\n }\r\n}\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, inject, Output, PLATFORM_ID, QueryList, ViewEncapsulation } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { SidenavComponent } from './sidenav.component';\r\nimport { SidenavPosition } from './types';\r\n\r\n/**\r\n * Sidenav container component\r\n */\r\n@Component({\r\n selector: 'ng0-sidenav-container',\r\n templateUrl: './sidenav-container.component.html',\r\n styleUrls: ['./sidenav-container.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n host: {\r\n \"[style.padding-inline-start]\": \"_getPadding('start')\",\r\n \"[style.padding-inline-end]\": \"_getPadding('end')\",\r\n \"[style.padding-top]\": \"_getPadding('top')\",\r\n \"[style.padding-bottom]\": \"_getPadding('bottom')\",\r\n \"[class.ng0-sidenav-transition]\": \"_isTransitionEnabled\",\r\n \"[class.ng0-sidenav-content-hidden]\": \"!_canComputePadding()\",\r\n }\r\n})\r\nexport class SidenavContainerComponent implements AfterViewInit {\r\n private _platformId = inject(PLATFORM_ID);\r\n protected _isPlatformServer = isPlatformServer(this._platformId)\r\n protected _isTransitionEnabled = false;\r\n @ContentChildren(SidenavComponent) protected _sidenavs!: QueryList<SidenavComponent>;\r\n\r\n /**\r\n * Emitted when the backdrop is clicked.\r\n */\r\n @Output() public backdropClick = new EventEmitter();\r\n\r\n public changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n protected _getPadding(position: SidenavPosition) {\r\n let openSidenavs = this._sidenavs.filter(x => x.open() && x.mode() == 'push');\r\n let filteredSidenavs = openSidenavs.filter(x => x.position() == position);\r\n if(filteredSidenavs.length == 0) return undefined;\r\n\r\n if (this._isPlatformServer) {\r\n let hasDynamicSidenavs = openSidenavs.some(x => x._getFixedSize() == undefined);\r\n if (hasDynamicSidenavs) {\r\n // we cannot compute padding on the server\r\n return undefined;\r\n } else {\r\n let fixedSizes = filteredSidenavs.map(x => x._getFixedSize());\r\n return fixedSizes.length > 1 ? `max(${fixedSizes.join(', ')})` : fixedSizes[0];\r\n }\r\n } else {\r\n let horizontal = position == 'start' || position == 'end';\r\n let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.offsetWidth : x.elmentRef.nativeElement.offsetHeight);\r\n return `${Math.max(...sizes)}px`;\r\n }\r\n };\r\n\r\n ngAfterViewInit() {\r\n if (!this._isPlatformServer) {\r\n setTimeout(() => this._isTransitionEnabled = true);\r\n }\r\n }\r\n\r\n // In some modes the content is pushed based on the width of the opened sidenavs, however on\r\n // the server we can't measure the sidenav-container padding, so the padding is always zero. This can cause the\r\n // content to jump around when it's rendered on the server and hydrated on the client.\r\n // We avoid it by hiding the content on the initial render and then showing it once the sidenav\r\n // has been measured on the client.\r\n protected _canComputePadding() {\r\n if (this._isPlatformServer) {\r\n let hasDynamicSizenavs = this._sidenavs.some(x => x.open() && x.mode() == 'push' && x._getFixedSize() == undefined);\r\n return !hasDynamicSizenavs;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","<ng-content select=\"ng0-sidenav-content\"></ng-content>\r\n<ng-content></ng-content>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Sidenav content component\r\n */\r\n@Component({\r\n selector: 'ng0-sidenav-content',\r\n template: `<ng-content></ng-content>`,\r\n styles: `ng0-sidenav-content {display: block}`,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class SidenavContentComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { SidenavContainerComponent } from './sidenav-container.component';\r\nimport { SidenavComponent } from './sidenav.component';\r\nimport { SidenavContentComponent } from './sidenav-content.component';\r\n\r\n/**\r\n * Sidenav module\r\n */\r\n@NgModule({\r\n imports: [\r\n SidenavContainerComponent,\r\n SidenavComponent,\r\n SidenavContentComponent\r\n ],\r\n exports: [\r\n SidenavContainerComponent,\r\n SidenavComponent,\r\n SidenavContentComponent\r\n ]\r\n})\r\nexport class SidenavModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,66 +1,78 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, Injectable, inject, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
2
|
+
import { signal, Injectable, inject, TemplateRef, input, booleanAttribute, EventEmitter, Output, Directive, ChangeDetectorRef, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@bootkit/ng0/components/sidenav';
|
|
4
4
|
import { SidenavModule } from '@bootkit/ng0/components/sidenav';
|
|
5
5
|
import * as i1 from '@angular/common';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
|
+
import { Subject } from 'rxjs';
|
|
8
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
|
+
|
|
10
|
+
class Layout1SecondarySidenav {
|
|
11
|
+
template;
|
|
12
|
+
zIndex;
|
|
13
|
+
css;
|
|
14
|
+
size;
|
|
15
|
+
position;
|
|
16
|
+
mode;
|
|
17
|
+
hasBackdrop;
|
|
18
|
+
closeOnBackdropClick;
|
|
19
|
+
constructor(template, options) {
|
|
20
|
+
this.template = template;
|
|
21
|
+
this.zIndex = signal(options?.zIndex, ...(ngDevMode ? [{ debugName: "zIndex" }] : []));
|
|
22
|
+
this.css = signal(options?.css, ...(ngDevMode ? [{ debugName: "css" }] : []));
|
|
23
|
+
this.size = signal(options?.size, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
24
|
+
this.position = signal(options?.position ?? 'start', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
25
|
+
this.mode = signal(options?.mode ?? 'over', ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
26
|
+
this.hasBackdrop = signal(options?.hasBackdrop ?? true, ...(ngDevMode ? [{ debugName: "hasBackdrop" }] : []));
|
|
27
|
+
this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false, ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : []));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
7
30
|
|
|
8
31
|
/**
|
|
9
32
|
* Service to manage the configuration and state of Layout1Component.
|
|
10
33
|
*/
|
|
11
34
|
class Layout1Manager {
|
|
12
35
|
_zIndexCounter = 1000;
|
|
36
|
+
_sidenavPushSubject = new Subject();
|
|
37
|
+
_sidenavPopSubject = new Subject();
|
|
38
|
+
_sidenavRemoveSubject = new Subject();
|
|
13
39
|
/**
|
|
14
|
-
*
|
|
40
|
+
* @private
|
|
15
41
|
*/
|
|
16
|
-
|
|
42
|
+
sidenavPushNotification = this._sidenavPushSubject.asObservable();
|
|
17
43
|
/**
|
|
18
|
-
*
|
|
44
|
+
* @private
|
|
19
45
|
*/
|
|
20
|
-
|
|
46
|
+
sidenavPopNotification = this._sidenavPopSubject.asObservable();
|
|
21
47
|
/**
|
|
22
|
-
*
|
|
48
|
+
* @private
|
|
23
49
|
*/
|
|
24
|
-
|
|
50
|
+
sidenavRemoveNotification = this._sidenavRemoveSubject.asObservable();
|
|
25
51
|
/**
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* Header mode.
|
|
31
|
-
* 'default' - Header scrolls with the page.
|
|
32
|
-
* 'sticky' - Header is fixed at the top.
|
|
33
|
-
*/
|
|
34
|
-
headerMode = signal('sticky', ...(ngDevMode ? [{ debugName: "headerMode" }] : []));
|
|
35
|
-
/**
|
|
36
|
-
* Push a new secondary sidenav onto the stack.
|
|
37
|
-
* @param template TemplateRef of the sidenav content.
|
|
38
|
-
* @param options Options for the sidenav.
|
|
52
|
+
* Push a secondary sidenav.
|
|
53
|
+
* @param template
|
|
54
|
+
* @param options
|
|
55
|
+
* @returns
|
|
39
56
|
*/
|
|
40
57
|
pushSidenav(template, options) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
closeByBackdropClick: options?.closeByBackdropClick ?? true,
|
|
47
|
-
});
|
|
48
|
-
this.secondarySidenavs.set([...this.secondarySidenavs()]);
|
|
58
|
+
options = options || {};
|
|
59
|
+
options.zIndex = options.zIndex ?? this._zIndexCounter++;
|
|
60
|
+
const sidenav = new Layout1SecondarySidenav(template, options);
|
|
61
|
+
this._sidenavPushSubject.next(sidenav);
|
|
62
|
+
return sidenav;
|
|
49
63
|
}
|
|
50
64
|
/**
|
|
51
|
-
* Pop the
|
|
52
|
-
* @returns The popped secondary sidenav or undefined if the stack is empty.
|
|
65
|
+
* Pop the last secondary sidenav.
|
|
53
66
|
*/
|
|
54
67
|
popSidenav() {
|
|
55
|
-
|
|
56
|
-
this.secondarySidenavs.set([...this.secondarySidenavs()]);
|
|
57
|
-
return item;
|
|
68
|
+
this._sidenavPopSubject.next(undefined);
|
|
58
69
|
}
|
|
59
70
|
/**
|
|
60
|
-
*
|
|
71
|
+
* Remove a secondary sidenav.
|
|
72
|
+
* @param sidenav
|
|
61
73
|
*/
|
|
62
|
-
|
|
63
|
-
this.
|
|
74
|
+
removeSidenav(sidenav) {
|
|
75
|
+
this._sidenavRemoveSubject.next(sidenav);
|
|
64
76
|
}
|
|
65
77
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Manager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
78
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Manager, providedIn: 'root' });
|
|
@@ -73,35 +85,155 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
73
85
|
}] });
|
|
74
86
|
|
|
75
87
|
/**
|
|
76
|
-
* Layout1Component
|
|
88
|
+
* Directive to define a sidenav within Layout1Component.
|
|
89
|
+
*/
|
|
90
|
+
class Layout1SidenavDirective {
|
|
91
|
+
template = inject((TemplateRef));
|
|
92
|
+
open = input(true, ...(ngDevMode ? [{ debugName: "open", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
93
|
+
mode = input('push', ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
94
|
+
hasBackdrop = input(true, ...(ngDevMode ? [{ debugName: "hasBackdrop", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
95
|
+
zIndex = input(undefined, ...(ngDevMode ? [{ debugName: "zIndex" }] : []));
|
|
96
|
+
position = input('start', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
97
|
+
size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : []));
|
|
98
|
+
css = input(...(ngDevMode ? [undefined, { debugName: "css" }] : []));
|
|
99
|
+
backdropClick = new EventEmitter();
|
|
100
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1SidenavDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
101
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.9", type: Layout1SidenavDirective, isStandalone: true, selector: "[ng0Layout1Sidenav]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, css: { classPropertyName: "css", publicName: "css", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, exportAs: ["ng0Layout1Sidenav"], ngImport: i0 });
|
|
102
|
+
}
|
|
103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1SidenavDirective, decorators: [{
|
|
104
|
+
type: Directive,
|
|
105
|
+
args: [{
|
|
106
|
+
selector: '[ng0Layout1Sidenav]',
|
|
107
|
+
exportAs: 'ng0Layout1Sidenav',
|
|
108
|
+
standalone: true,
|
|
109
|
+
}]
|
|
110
|
+
}], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], css: [{ type: i0.Input, args: [{ isSignal: true, alias: "css", required: false }] }], backdropClick: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}] } });
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Layout1 component that provides a layout with sidenavs.
|
|
77
116
|
*/
|
|
78
117
|
class Layout1Component {
|
|
79
|
-
|
|
118
|
+
_manager = inject(Layout1Manager);
|
|
119
|
+
_sidenavs;
|
|
120
|
+
_secondarySidenavs = signal([], ...(ngDevMode ? [{ debugName: "_secondarySidenavs" }] : []));
|
|
121
|
+
_openSecondarySidenavs = new Set();
|
|
122
|
+
_changeDetectorRef = inject(ChangeDetectorRef);
|
|
123
|
+
constructor() {
|
|
124
|
+
this._manager.sidenavPushNotification.pipe(takeUntilDestroyed()).subscribe(c => this.pushSidenav(c));
|
|
125
|
+
this._manager.sidenavRemoveNotification.pipe(takeUntilDestroyed()).subscribe(c => this.removeSidenav(c));
|
|
126
|
+
this._manager.sidenavPopNotification.pipe(takeUntilDestroyed()).subscribe(c => this.popSidenav());
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Push a secondary sidenav.
|
|
130
|
+
* @param sidenav
|
|
131
|
+
*/
|
|
132
|
+
pushSidenav(sidenav) {
|
|
133
|
+
this._secondarySidenavs().push(sidenav);
|
|
134
|
+
this._changeDetectorRef.markForCheck();
|
|
135
|
+
setTimeout(() => {
|
|
136
|
+
// Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.
|
|
137
|
+
this._openSecondarySidenavs.add(sidenav);
|
|
138
|
+
this._changeDetectorRef.markForCheck();
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Pop the last secondary sidenav.
|
|
143
|
+
*/
|
|
144
|
+
popSidenav() {
|
|
145
|
+
const last = this._secondarySidenavs().at(-1);
|
|
146
|
+
if (last) {
|
|
147
|
+
this.removeSidenav(last);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Remove a secondary sidenav.
|
|
152
|
+
* @param sidenav
|
|
153
|
+
*/
|
|
154
|
+
removeSidenav(sidenav) {
|
|
155
|
+
// Close the sidenav first. After the transition ends, it will be removed from DOM.
|
|
156
|
+
this._openSecondarySidenavs.delete(sidenav);
|
|
157
|
+
}
|
|
158
|
+
_onSecondarySidenavTransitionEnd(sidenav) {
|
|
159
|
+
if (!this._openSecondarySidenavs.has(sidenav)) {
|
|
160
|
+
// We should remove secondary sidenavs from DOM.
|
|
161
|
+
const index = this._secondarySidenavs().findIndex(x => x === sidenav);
|
|
162
|
+
this._secondarySidenavs().splice(index, 1);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
80
165
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: Layout1Component, isStandalone: true, selector: "ng0-layout1", ngImport: i0, template: "<ng0-sidenav-container
|
|
166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: Layout1Component, isStandalone: true, selector: "ng0-layout1", queries: [{ propertyName: "_sidenavs", predicate: Layout1SidenavDirective }], ngImport: i0, template: "<ng0-sidenav-container>\r\n <ng0-sidenav-content>\r\n <ng-content select=\"ng0-layout1-header\" />\r\n <ng-content select=\"ng0-layout1-content\" />\r\n </ng0-sidenav-content>\r\n\r\n @for (sidenav of _sidenavs; track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"sidenav.open()\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n @for (sidenav of _secondarySidenavs(); track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\r\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? removeSidenav(sidenav) : null\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n</ng0-sidenav-container>", styles: ["ng0-layout1{display:flex;flex-direction:column;min-height:100vh;width:100%}ng0-layout1 ng0-layout1-header{display:block;z-index:1}ng0-layout1 ng0-layout1-header.ng0-layout1-header-sticky{position:sticky;top:0}ng0-layout1 ng0-layout1-content{display:block}ng0-layout1 ng0-sidenav-container{overflow:unset!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: SidenavModule }, { kind: "component", type: i2.SidenavContainerComponent, selector: "ng0-sidenav-container", outputs: ["backdropClick"] }, { kind: "component", type: i2.SidenavComponent, selector: "ng0-sidenav", inputs: ["open", "mode", "hasBackdrop", "zIndex", "position", "size", "fixedInViewport"], outputs: ["backdropClick"] }, { kind: "component", type: i2.SidenavContentComponent, selector: "ng0-sidenav-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
82
167
|
}
|
|
83
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Component, decorators: [{
|
|
84
169
|
type: Component,
|
|
85
|
-
args: [{ selector: 'ng0-layout1', encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, SidenavModule], template: "<ng0-sidenav-container
|
|
170
|
+
args: [{ selector: 'ng0-layout1', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, SidenavModule], template: "<ng0-sidenav-container>\r\n <ng0-sidenav-content>\r\n <ng-content select=\"ng0-layout1-header\" />\r\n <ng-content select=\"ng0-layout1-content\" />\r\n </ng0-sidenav-content>\r\n\r\n @for (sidenav of _sidenavs; track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"sidenav.open()\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n @for (sidenav of _secondarySidenavs(); track $index) {\r\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\r\n [size]=\"sidenav.size()\"\r\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\r\n [mode]=\"sidenav.mode()\"\r\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\r\n [position]=\"sidenav.position()\"\r\n [zIndex]=\"sidenav.zIndex()\"\r\n [fixedInViewport]=\"true\"\r\n [ngClass]=\"sidenav.css()\"\r\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\r\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? removeSidenav(sidenav) : null\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n</ng0-sidenav-container>", styles: ["ng0-layout1{display:flex;flex-direction:column;min-height:100vh;width:100%}ng0-layout1 ng0-layout1-header{display:block;z-index:1}ng0-layout1 ng0-layout1-header.ng0-layout1-header-sticky{position:sticky;top:0}ng0-layout1 ng0-layout1-content{display:block}ng0-layout1 ng0-sidenav-container{overflow:unset!important}\n"] }]
|
|
171
|
+
}], ctorParameters: () => [], propDecorators: { _sidenavs: [{
|
|
172
|
+
type: ContentChildren,
|
|
173
|
+
args: [Layout1SidenavDirective]
|
|
174
|
+
}] } });
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Layout1 header component.
|
|
178
|
+
*/
|
|
179
|
+
class Layout1HeaderComponent {
|
|
180
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
181
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: Layout1HeaderComponent, isStandalone: true, selector: "ng0-layout1-header", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
182
|
+
}
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1HeaderComponent, decorators: [{
|
|
184
|
+
type: Component,
|
|
185
|
+
args: [{
|
|
186
|
+
selector: 'ng0-layout1-header',
|
|
187
|
+
template: `<ng-content></ng-content>`,
|
|
188
|
+
encapsulation: ViewEncapsulation.None,
|
|
189
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
190
|
+
standalone: true,
|
|
191
|
+
}]
|
|
192
|
+
}] });
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Layout1 content component.
|
|
196
|
+
*/
|
|
197
|
+
class Layout1ContentComponent {
|
|
198
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1ContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
199
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: Layout1ContentComponent, isStandalone: true, selector: "ng0-layout1-content", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
200
|
+
}
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1ContentComponent, decorators: [{
|
|
202
|
+
type: Component,
|
|
203
|
+
args: [{
|
|
204
|
+
selector: 'ng0-layout1-content',
|
|
205
|
+
template: `<ng-content></ng-content>`,
|
|
206
|
+
encapsulation: ViewEncapsulation.None,
|
|
207
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
208
|
+
standalone: true,
|
|
209
|
+
}]
|
|
86
210
|
}] });
|
|
87
211
|
|
|
212
|
+
const items = [
|
|
213
|
+
Layout1Component,
|
|
214
|
+
Layout1SidenavDirective,
|
|
215
|
+
Layout1HeaderComponent,
|
|
216
|
+
Layout1ContentComponent
|
|
217
|
+
];
|
|
88
218
|
/**
|
|
89
219
|
* Layout1Module
|
|
90
220
|
*/
|
|
91
221
|
class Layout1Module {
|
|
92
222
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
93
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: Layout1Module, imports: [Layout1Component
|
|
223
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: Layout1Module, imports: [Layout1Component,
|
|
224
|
+
Layout1SidenavDirective,
|
|
225
|
+
Layout1HeaderComponent,
|
|
226
|
+
Layout1ContentComponent], exports: [Layout1Component,
|
|
227
|
+
Layout1SidenavDirective,
|
|
228
|
+
Layout1HeaderComponent,
|
|
229
|
+
Layout1ContentComponent] });
|
|
94
230
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Module, imports: [Layout1Component] });
|
|
95
231
|
}
|
|
96
232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Module, decorators: [{
|
|
97
233
|
type: NgModule,
|
|
98
234
|
args: [{
|
|
99
|
-
imports:
|
|
100
|
-
|
|
101
|
-
],
|
|
102
|
-
exports: [
|
|
103
|
-
Layout1Component
|
|
104
|
-
]
|
|
235
|
+
imports: items,
|
|
236
|
+
exports: items
|
|
105
237
|
}]
|
|
106
238
|
}] });
|
|
107
239
|
|
|
@@ -109,5 +241,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
109
241
|
* Generated bundle index. Do not edit.
|
|
110
242
|
*/
|
|
111
243
|
|
|
112
|
-
export { Layout1Component, Layout1Manager, Layout1Module };
|
|
244
|
+
export { Layout1Component, Layout1ContentComponent, Layout1HeaderComponent, Layout1Manager, Layout1Module, Layout1SecondarySidenav, Layout1SidenavDirective };
|
|
113
245
|
//# sourceMappingURL=bootkit-ng0-layouts-layout1.mjs.map
|