@bootkit/ng0 0.0.0-alpha.35 → 0.0.0-alpha.37
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/accordion/index.d.ts +13 -3
- package/components/offcanvas/index.d.ts +13 -5
- package/fesm2022/bootkit-ng0-components-accordion.mjs +20 -13
- package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs +12 -5
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-http.mjs +1 -1
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs +146 -74
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -1
- package/layouts/layout1/index.d.ts +117 -60
- package/package.json +13 -13
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { ElementRef, Renderer2
|
|
2
|
+
import { QueryList, ElementRef, Renderer2 } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
declare class AccordionItemComponent {
|
|
5
5
|
private _element;
|
|
6
6
|
private _renderer;
|
|
7
7
|
private _accordion;
|
|
8
|
+
/**
|
|
9
|
+
* The header text of the accordion item.
|
|
10
|
+
*/
|
|
8
11
|
header: i0.InputSignal<string | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* Whether the accordion item is collapsed or expanded.
|
|
14
|
+
*/
|
|
9
15
|
collapsed: i0.ModelSignal<boolean>;
|
|
10
|
-
constructor(
|
|
16
|
+
constructor();
|
|
11
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<AccordionItemComponent, never>;
|
|
12
18
|
static ɵcmp: i0.ɵɵComponentDeclaration<AccordionItemComponent, "ng0-accordion-item", ["ng0AccordionItem"], { "header": { "alias": "header"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; }, never, ["*"], true, never>;
|
|
13
19
|
}
|
|
@@ -15,7 +21,11 @@ declare class AccordionItemComponent {
|
|
|
15
21
|
declare class AccordionComponent {
|
|
16
22
|
private _element;
|
|
17
23
|
private _renderer;
|
|
18
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* The mode of the accordion - 'single' or 'multiple'.
|
|
26
|
+
* 'single' mode allows only one item to be expanded at a time.
|
|
27
|
+
* 'multiple' mode allows multiple items to be expanded simultaneously.
|
|
28
|
+
*/
|
|
19
29
|
mode: i0.InputSignal<"single" | "multiple">;
|
|
20
30
|
readonly items: QueryList<AccordionItemComponent>;
|
|
21
31
|
constructor(_element: ElementRef, _renderer: Renderer2);
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { OnDestroy, EventEmitter, ElementRef, Renderer2 } from '@angular/core';
|
|
3
3
|
|
|
4
|
-
declare class OffcanvasDirective implements
|
|
4
|
+
declare class OffcanvasDirective implements OnDestroy {
|
|
5
5
|
private _el;
|
|
6
6
|
private _renderer;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Whether to show the offcanvas element.
|
|
9
|
+
*/
|
|
10
|
+
show: i0.InputSignalWithTransform<boolean, unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* Whether to show a backdrop element behind the offcanvas.
|
|
13
|
+
*/
|
|
14
|
+
hasBackdrop: i0.InputSignalWithTransform<boolean, unknown>;
|
|
15
|
+
/**
|
|
16
|
+
* Emitted when the backdrop is clicked.
|
|
17
|
+
*/
|
|
9
18
|
backdropClick: EventEmitter<MouseEvent>;
|
|
10
19
|
private _firstShowEffectRun;
|
|
11
20
|
private _firstBackdropEffectRun;
|
|
@@ -14,7 +23,6 @@ declare class OffcanvasDirective implements OnInit, OnDestroy {
|
|
|
14
23
|
private _backdropTransitionendUnlistenFunc?;
|
|
15
24
|
private addClass;
|
|
16
25
|
constructor(_el: ElementRef, _renderer: Renderer2);
|
|
17
|
-
ngOnInit(): void;
|
|
18
26
|
private _createBackdrop;
|
|
19
27
|
private _destroyBackdrop;
|
|
20
28
|
private _hideBackdrop;
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, model, effect, ChangeDetectionStrategy, Component, ContentChildren, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, Renderer2, input, model, effect, ChangeDetectionStrategy, Component, ContentChildren, NgModule } from '@angular/core';
|
|
3
3
|
import { CollapseComponent } from '@bootkit/ng0/components/collapse';
|
|
4
4
|
|
|
5
5
|
class AccordionItemComponent {
|
|
6
|
-
_element;
|
|
7
|
-
_renderer;
|
|
8
|
-
_accordion;
|
|
6
|
+
_element = inject(ElementRef);
|
|
7
|
+
_renderer = inject(Renderer2);
|
|
8
|
+
_accordion = inject(AccordionComponent);
|
|
9
|
+
/**
|
|
10
|
+
* The header text of the accordion item.
|
|
11
|
+
*/
|
|
9
12
|
header = input(...(ngDevMode ? [undefined, { debugName: "header" }] : []));
|
|
13
|
+
/**
|
|
14
|
+
* Whether the accordion item is collapsed or expanded.
|
|
15
|
+
*/
|
|
10
16
|
collapsed = model(true, ...(ngDevMode ? [{ debugName: "collapsed" }] : []));
|
|
11
|
-
constructor(
|
|
12
|
-
this._element = _element;
|
|
13
|
-
this._renderer = _renderer;
|
|
14
|
-
this._accordion = _accordion;
|
|
17
|
+
constructor() {
|
|
15
18
|
this._renderer.addClass(this._element.nativeElement, 'accordion-item');
|
|
16
19
|
effect(() => {
|
|
17
20
|
var collapsed = this.collapsed();
|
|
18
|
-
if (_accordion.mode() == 'single') {
|
|
21
|
+
if (this._accordion.mode() == 'single') {
|
|
19
22
|
if (!collapsed) {
|
|
20
23
|
this._accordion.items.filter(x => x !== this).forEach(x => x.collapsed.update(x => true));
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
|
-
}
|
|
26
|
+
});
|
|
24
27
|
}
|
|
25
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AccordionItemComponent, deps: [
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
29
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: AccordionItemComponent, isStandalone: true, selector: "ng0-accordion-item", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, exportAs: ["ng0AccordionItem"], ngImport: i0, template: "<h6 class=\"accordion-header\">\r\n <button class=\"accordion-button\" type=\"button\" [class.collapsed]=\"collapsed()\" (click)=\"collapsed.set(!collapsed())\">\r\n {{header()}}\r\n </button>\r\n</h6>\r\n\r\n<ng0-collapse [collapsed]=\"collapsed()\">\r\n <div class=\"accordion-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng0-collapse>", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: CollapseComponent, selector: "ng0-collapse", inputs: ["collapsed", "timings"], outputs: ["collapsedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
27
30
|
}
|
|
28
31
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AccordionItemComponent, decorators: [{
|
|
@@ -30,12 +33,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
30
33
|
args: [{ selector: 'ng0-accordion-item', exportAs: 'ng0AccordionItem', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
31
34
|
CollapseComponent
|
|
32
35
|
], template: "<h6 class=\"accordion-header\">\r\n <button class=\"accordion-button\" type=\"button\" [class.collapsed]=\"collapsed()\" (click)=\"collapsed.set(!collapsed())\">\r\n {{header()}}\r\n </button>\r\n</h6>\r\n\r\n<ng0-collapse [collapsed]=\"collapsed()\">\r\n <div class=\"accordion-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng0-collapse>", styles: [":host{display:block}\n"] }]
|
|
33
|
-
}], ctorParameters: () => [
|
|
36
|
+
}], ctorParameters: () => [], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }] } });
|
|
34
37
|
|
|
35
38
|
class AccordionComponent {
|
|
36
39
|
_element;
|
|
37
40
|
_renderer;
|
|
38
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* The mode of the accordion - 'single' or 'multiple'.
|
|
43
|
+
* 'single' mode allows only one item to be expanded at a time.
|
|
44
|
+
* 'multiple' mode allows multiple items to be expanded simultaneously.
|
|
45
|
+
*/
|
|
39
46
|
mode = input('single', ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
40
47
|
items;
|
|
41
48
|
constructor(_element, _renderer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-components-accordion.mjs","sources":["../../../projects/ng0/components/accordion/accordion-item.component.ts","../../../projects/ng0/components/accordion/accordion-item.component.html","../../../projects/ng0/components/accordion/accordion.component.ts","../../../projects/ng0/components/accordion/accordion.component.html","../../../projects/ng0/components/accordion/accordion.module.ts","../../../projects/ng0/components/accordion/bootkit-ng0-components-accordion.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, effect, ElementRef, input, model, Renderer2 } from '@angular/core';\r\nimport { CollapseComponent } from '@bootkit/ng0/components/collapse';\r\nimport { AccordionComponent } from './accordion.component';\r\n\r\n@Component({\r\n selector: 'ng0-accordion-item',\r\n exportAs: 'ng0AccordionItem',\r\n templateUrl: './accordion-item.component.html',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styles: `:host {display: block;}`,\r\n imports: [\r\n CollapseComponent\r\n ]\r\n})\r\nexport class AccordionItemComponent {\r\n public header = input<string>();\r\n public collapsed = model(true);\r\n\r\n constructor(
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-components-accordion.mjs","sources":["../../../projects/ng0/components/accordion/accordion-item.component.ts","../../../projects/ng0/components/accordion/accordion-item.component.html","../../../projects/ng0/components/accordion/accordion.component.ts","../../../projects/ng0/components/accordion/accordion.component.html","../../../projects/ng0/components/accordion/accordion.module.ts","../../../projects/ng0/components/accordion/bootkit-ng0-components-accordion.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, model, Renderer2 } from '@angular/core';\r\nimport { CollapseComponent } from '@bootkit/ng0/components/collapse';\r\nimport { AccordionComponent } from './accordion.component';\r\n\r\n@Component({\r\n selector: 'ng0-accordion-item',\r\n exportAs: 'ng0AccordionItem',\r\n templateUrl: './accordion-item.component.html',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styles: `:host {display: block;}`,\r\n imports: [\r\n CollapseComponent\r\n ]\r\n})\r\nexport class AccordionItemComponent {\r\n private _element = inject(ElementRef);\r\n private _renderer = inject(Renderer2);\r\n private _accordion = inject(AccordionComponent);\r\n\r\n /**\r\n * The header text of the accordion item.\r\n */\r\n public header = input<string>();\r\n\r\n /**\r\n * Whether the accordion item is collapsed or expanded.\r\n */\r\n public collapsed = model(true);\r\n\r\n constructor() {\r\n this._renderer.addClass(this._element.nativeElement, 'accordion-item');\r\n\r\n effect(() => {\r\n var collapsed = this.collapsed();\r\n if (this._accordion.mode() == 'single') {\r\n if (!collapsed) {\r\n this._accordion.items.filter(x => x !== this).forEach(x => x.collapsed.update(x => true));\r\n }\r\n }\r\n })\r\n }\r\n}\r\n","<h6 class=\"accordion-header\">\r\n <button class=\"accordion-button\" type=\"button\" [class.collapsed]=\"collapsed()\" (click)=\"collapsed.set(!collapsed())\">\r\n {{header()}}\r\n </button>\r\n</h6>\r\n\r\n<ng0-collapse [collapsed]=\"collapsed()\">\r\n <div class=\"accordion-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n</ng0-collapse>","import { ChangeDetectionStrategy, Component, ContentChildren, ElementRef, input, QueryList, Renderer2 } from '@angular/core';\r\nimport { AccordionItemComponent } from './accordion-item.component';\r\n\r\n@Component({\r\n selector: 'ng0-accordion',\r\n exportAs: 'ng0Accordion',\r\n templateUrl: './accordion.component.html',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styles: `:host {display: block;}`\r\n})\r\nexport class AccordionComponent {\r\n /**\r\n * The mode of the accordion - 'single' or 'multiple'.\r\n * 'single' mode allows only one item to be expanded at a time.\r\n * 'multiple' mode allows multiple items to be expanded simultaneously.\r\n */\r\n public mode = input<'single' | 'multiple'>('single');\r\n\r\n @ContentChildren(AccordionItemComponent)\r\n public readonly items!: QueryList<AccordionItemComponent>;\r\n\r\n constructor(private _element: ElementRef, private _renderer: Renderer2) {\r\n this._renderer.addClass(this._element.nativeElement, 'accordion');\r\n }\r\n}\r\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\r\nimport { AccordionComponent } from './accordion.component';\r\nimport { AccordionItemComponent } from './accordion-item.component';\r\n\r\n@NgModule({\r\n imports: [\r\n AccordionComponent,\r\n AccordionItemComponent,\r\n ],\r\n exports: [\r\n AccordionComponent,\r\n AccordionItemComponent,\r\n ]\r\n})\r\nexport class AccordionModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, EventEmitter, afterNextRender, effect, untracked, HostListener, Output, Directive, NgModule } from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, EventEmitter, afterNextRender, effect, untracked, HostListener, Output, Directive, NgModule } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
class OffcanvasDirective {
|
|
5
5
|
_el;
|
|
6
6
|
_renderer;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Whether to show the offcanvas element.
|
|
9
|
+
*/
|
|
10
|
+
show = input(false, ...(ngDevMode ? [{ debugName: "show", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
11
|
+
/**
|
|
12
|
+
* Whether to show a backdrop element behind the offcanvas.
|
|
13
|
+
*/
|
|
14
|
+
hasBackdrop = input(false, ...(ngDevMode ? [{ debugName: "hasBackdrop", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
15
|
+
/**
|
|
16
|
+
* Emitted when the backdrop is clicked.
|
|
17
|
+
*/
|
|
9
18
|
backdropClick = new EventEmitter;
|
|
10
19
|
_firstShowEffectRun = true;
|
|
11
20
|
_firstBackdropEffectRun = true;
|
|
@@ -56,8 +65,6 @@ class OffcanvasDirective {
|
|
|
56
65
|
}
|
|
57
66
|
});
|
|
58
67
|
}
|
|
59
|
-
ngOnInit() {
|
|
60
|
-
}
|
|
61
68
|
_createBackdrop() {
|
|
62
69
|
if (!this._backdropElement) {
|
|
63
70
|
this._backdropElement = this._renderer.createElement('div');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-components-offcanvas.mjs","sources":["../../../projects/ng0/components/offcanvas/offcanvas.directive.ts","../../../projects/ng0/components/offcanvas/offcanvas.module.ts","../../../projects/ng0/components/offcanvas/bootkit-ng0-components-offcanvas.ts"],"sourcesContent":["import { OnInit, ElementRef, Renderer2, effect, HostListener, Directive, input, Output, EventEmitter, OnDestroy, afterNextRender, untracked } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Offcanvas]',\r\n exportAs: 'ng0Offcanvas',\r\n standalone: true,\r\n})\r\nexport class OffcanvasDirective implements OnInit, OnDestroy {\r\n public show = input(false);\r\n public hasBackdrop = input(false);\r\n\r\n @Output()\r\n public backdropClick = new EventEmitter<MouseEvent>;\r\n\r\n private _firstShowEffectRun = true;\r\n private _firstBackdropEffectRun = true;\r\n private _backdropElement?: any;\r\n private _backdropClickUnlistenFunc?: any;\r\n private _backdropTransitionendUnlistenFunc?: any;\r\n private addClass = (c: string) => this._renderer.addClass(this._el.nativeElement, c);\r\n\r\n constructor(private _el: ElementRef, private _renderer: Renderer2) {\r\n\r\n afterNextRender(() => {\r\n if (this.show() && this.hasBackdrop()) {\r\n this._createBackdrop();\r\n }\r\n });\r\n\r\n effect(() => {\r\n var show = this.show();\r\n var backdrop = untracked(() => this.hasBackdrop());\r\n\r\n if (this._firstShowEffectRun) {\r\n if (show) {\r\n this.addClass('show');\r\n }\r\n this._firstShowEffectRun = false;\r\n return;\r\n }\r\n\r\n\r\n if (show) {\r\n this.addClass('show');\r\n if (backdrop)\r\n this._createBackdrop();\r\n } else {\r\n this.addClass('hiding');\r\n this._hideBackdrop(); // we first hide backdrop, after hide transition completed, we destroy it.\r\n }\r\n });\r\n\r\n effect(() => {\r\n var backdrop = this.hasBackdrop();\r\n var show = untracked(() => this.show());\r\n\r\n if (this._firstBackdropEffectRun) {\r\n this._firstBackdropEffectRun = false;\r\n return;\r\n }\r\n\r\n if (show) {\r\n if (backdrop)\r\n this._createBackdrop();\r\n else\r\n this._destroyBackdrop();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n private _createBackdrop() {\r\n if (!this._backdropElement) {\r\n this._backdropElement = this._renderer.createElement('div');\r\n ['offcanvas-backdrop', 'fade', 'show'].forEach(c => this._renderer.addClass(this._backdropElement, c));\r\n\r\n // Append the new element next to the host element\r\n const parent = this._renderer.parentNode(this._el.nativeElement);\r\n const nextSibling = this._renderer.nextSibling(this._el.nativeElement);\r\n this._renderer.insertBefore(parent, this._backdropElement, nextSibling);\r\n\r\n this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropElement, 'click', (e) => {\r\n this.backdropClick.emit(e);\r\n });\r\n\r\n this._backdropTransitionendUnlistenFunc = this._renderer.listen(this._backdropElement, 'transitionend', (e) => {\r\n if (!this.show()) {\r\n this._destroyBackdrop();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _destroyBackdrop() {\r\n if (this._backdropElement) {\r\n const parent = this._renderer.parentNode(this._el.nativeElement);\r\n this._renderer.removeChild(parent, this._backdropElement, false);\r\n this._backdropClickUnlistenFunc()\r\n\r\n this._backdropClickUnlistenFunc = undefined;\r\n this._backdropElement = undefined\r\n }\r\n }\r\n\r\n private _hideBackdrop() {\r\n if (this._backdropElement) {\r\n this._renderer.removeClass(this._backdropElement, 'show');\r\n }\r\n }\r\n\r\n @HostListener('transitionend', ['$event'])\r\n private _onTransitionend(e: TransitionEvent): void {\r\n if (!this.show() && e.propertyName == 'transform') {\r\n ['show', 'hiding'].forEach(x => this._renderer.removeClass(this._el.nativeElement, x));\r\n // if (this.backdrop())\r\n // this._destroyBackdrop();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyBackdrop()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { OffcanvasDirective } from './offcanvas.directive';\r\n\r\nconst items = [\r\n OffcanvasDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class OffcanvasModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-components-offcanvas.mjs","sources":["../../../projects/ng0/components/offcanvas/offcanvas.directive.ts","../../../projects/ng0/components/offcanvas/offcanvas.module.ts","../../../projects/ng0/components/offcanvas/bootkit-ng0-components-offcanvas.ts"],"sourcesContent":["import { ElementRef, Renderer2, effect, HostListener, Directive, input, Output, EventEmitter, OnDestroy, afterNextRender, untracked, booleanAttribute } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Offcanvas]',\r\n exportAs: 'ng0Offcanvas',\r\n standalone: true,\r\n})\r\nexport class OffcanvasDirective implements OnDestroy {\r\n /**\r\n * Whether to show the offcanvas element.\r\n */\r\n public show = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Whether to show a backdrop element behind the offcanvas.\r\n */\r\n public hasBackdrop = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Emitted when the backdrop is clicked.\r\n */\r\n @Output() public backdropClick = new EventEmitter<MouseEvent>;\r\n\r\n private _firstShowEffectRun = true;\r\n private _firstBackdropEffectRun = true;\r\n private _backdropElement?: any;\r\n private _backdropClickUnlistenFunc?: any;\r\n private _backdropTransitionendUnlistenFunc?: any;\r\n private addClass = (c: string) => this._renderer.addClass(this._el.nativeElement, c);\r\n\r\n constructor(private _el: ElementRef, private _renderer: Renderer2) {\r\n\r\n afterNextRender(() => {\r\n if (this.show() && this.hasBackdrop()) {\r\n this._createBackdrop();\r\n }\r\n });\r\n\r\n effect(() => {\r\n var show = this.show();\r\n var backdrop = untracked(() => this.hasBackdrop());\r\n\r\n if (this._firstShowEffectRun) {\r\n if (show) {\r\n this.addClass('show');\r\n }\r\n this._firstShowEffectRun = false;\r\n return;\r\n }\r\n\r\n\r\n if (show) {\r\n this.addClass('show');\r\n if (backdrop)\r\n this._createBackdrop();\r\n } else {\r\n this.addClass('hiding');\r\n this._hideBackdrop(); // we first hide backdrop, after hide transition completed, we destroy it.\r\n }\r\n });\r\n\r\n effect(() => {\r\n var backdrop = this.hasBackdrop();\r\n var show = untracked(() => this.show());\r\n\r\n if (this._firstBackdropEffectRun) {\r\n this._firstBackdropEffectRun = false;\r\n return;\r\n }\r\n\r\n if (show) {\r\n if (backdrop)\r\n this._createBackdrop();\r\n else\r\n this._destroyBackdrop();\r\n }\r\n });\r\n }\r\n\r\n\r\n private _createBackdrop() {\r\n if (!this._backdropElement) {\r\n this._backdropElement = this._renderer.createElement('div');\r\n ['offcanvas-backdrop', 'fade', 'show'].forEach(c => this._renderer.addClass(this._backdropElement, c));\r\n\r\n // Append the new element next to the host element\r\n const parent = this._renderer.parentNode(this._el.nativeElement);\r\n const nextSibling = this._renderer.nextSibling(this._el.nativeElement);\r\n this._renderer.insertBefore(parent, this._backdropElement, nextSibling);\r\n\r\n this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropElement, 'click', (e) => {\r\n this.backdropClick.emit(e);\r\n });\r\n\r\n this._backdropTransitionendUnlistenFunc = this._renderer.listen(this._backdropElement, 'transitionend', (e) => {\r\n if (!this.show()) {\r\n this._destroyBackdrop();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _destroyBackdrop() {\r\n if (this._backdropElement) {\r\n const parent = this._renderer.parentNode(this._el.nativeElement);\r\n this._renderer.removeChild(parent, this._backdropElement, false);\r\n this._backdropClickUnlistenFunc()\r\n\r\n this._backdropClickUnlistenFunc = undefined;\r\n this._backdropElement = undefined\r\n }\r\n }\r\n\r\n private _hideBackdrop() {\r\n if (this._backdropElement) {\r\n this._renderer.removeClass(this._backdropElement, 'show');\r\n }\r\n }\r\n\r\n @HostListener('transitionend', ['$event'])\r\n private _onTransitionend(e: TransitionEvent): void {\r\n if (!this.show() && e.propertyName == 'transform') {\r\n ['show', 'hiding'].forEach(x => this._renderer.removeClass(this._el.nativeElement, x));\r\n // if (this.backdrop())\r\n // this._destroyBackdrop();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyBackdrop()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { OffcanvasDirective } from './offcanvas.directive';\r\n\r\nconst items = [\r\n OffcanvasDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class OffcanvasModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -144,7 +144,7 @@ class HttpService {
|
|
|
144
144
|
if (body.hasOwnProperty(key)) {
|
|
145
145
|
const field = body[key];
|
|
146
146
|
let value;
|
|
147
|
-
if (typeof field === 'string' || field instanceof File) {
|
|
147
|
+
if (typeof field === 'string' || field instanceof File || field instanceof Blob) {
|
|
148
148
|
value = field;
|
|
149
149
|
}
|
|
150
150
|
else if (typeof field === 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-http.mjs","sources":["../../../projects/ng0/http/provide.ts","../../../projects/ng0/http/http.service.ts","../../../projects/ng0/http/types.ts","../../../projects/ng0/http/data-request-resolvers/http-data-request-resolver-1.ts","../../../projects/ng0/http/bootkit-ng0-http.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from \"@angular/core\";\r\nimport { HttpDataRequestResolver } from \"./types\";\r\nimport { HttpService } from \"./http.service\";\r\n\r\nexport const HTTP_SERVICE_CONFIG = new InjectionToken<HttpServiceConfig>('HttpServiceConfig');\r\n\r\n/**\r\n * Configuration for the HttpService.\r\n */\r\nexport interface HttpServiceConfig {\r\n /**\r\n * Base URL for the HTTP requests.\r\n * This is prepended to all request URLs.\r\n */\r\n baseUrl?: string;\r\n\r\n /**\r\n * A Resolver function to convert DataRequest to DataResult.\r\n */\r\n dataRequestResolver?: HttpDataRequestResolver;\r\n}\r\n\r\nexport interface HttpServiceFeature { \r\n ɵproviders: Array<Provider | EnvironmentProviders>;\r\n}\r\n\r\n/**\r\n * Provides the configuration for the HttpService.\r\n * @param config \r\n * @returns \r\n */\r\nexport function provideHttpService(config?: HttpServiceConfig, ...features: Partial<HttpServiceFeature>[]) {\r\n // const mergedfeatures = Object.assign({}, ...features);\r\n return makeEnvironmentProviders([\r\n HttpService,\r\n { provide: HTTP_SERVICE_CONFIG, useValue: config || {} },\r\n features.map((feature) => feature.ɵproviders),\r\n ]);\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, Subject, tap } from 'rxjs';\r\nimport { HttpRequestOptions, HttpRequestEvent } from './types';\r\nimport { inject, Inject, Injectable, Injector, makeStateKey, PLATFORM_ID, runInInjectionContext, TransferState } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { HTTP_SERVICE_CONFIG } from './provide';\r\n\r\n/**\r\n * HttpService provides a simple HTTP client for making requests.\r\n * It supports GET, POST, PUT, DELETE methods and can handle DataRequest objects.\r\n * It also supports transfer state for server-side rendering.\r\n * It emits events for request lifecycle: Send, Progress, Complete and Error.\r\n * It can be configured with a base URL and a default DataRequest resolver.\r\n * It can also handle multipart/form-data requests.\r\n */\r\n@Injectable()\r\nexport class HttpService {\r\n private _eventsSubject = new Subject<HttpRequestEvent>();\r\n private _baseUrl?: string;\r\n\r\n public events = this._eventsSubject.asObservable();\r\n public defaultHeaders?: HttpHeaders;\r\n\r\n private readonly _config = inject(HTTP_SERVICE_CONFIG);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private transferState: TransferState,\r\n private injector: Injector,\r\n @Inject(PLATFORM_ID) private platformId: object,\r\n ) {\r\n this._baseUrl = this._config.baseUrl ?? '';\r\n }\r\n\r\n /**\r\n * Sends a GET request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public get<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<T>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.get<T>(this._makeUrl(url, options), options as any).pipe(\r\n tap(result => {\r\n if (isPlatformServer(this.platformId) && options?.transferState) {\r\n const key = makeStateKey<T>(options.id);\r\n this.transferState.set(key, result as T);\r\n }\r\n })\r\n );\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n\r\n /**\r\n * Sends a DataRequest to the specified URL and returns a DataResult.\r\n * This method is used for paginated or filtered data requests.\r\n * It uses the configured DataRequestResolver to handle the request. \r\n * @param url The URL to send the request to.\r\n * @param request The DataRequest object containing the request parameters.\r\n * @param options The options for the request.\r\n * @returns An observable of DataResult<T>.\r\n */\r\n public getDataResult<T>(url: string, request: DataRequest, options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<DataResult<T>>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let resolver = this._config.dataRequestResolver;\r\n if (!resolver) {\r\n throw new Error('No HttpDataRequestResolver provided.');\r\n }\r\n\r\n const URL = this._makeUrl(url, options);\r\n let obs = runInInjectionContext<Observable<DataResult<T>>>(this.injector, resolver.bind(null, URL, request, options));\r\n if (!(obs instanceof Observable)) {\r\n throw Error('HttpDataRequestResolver should return an observable.');\r\n }\r\n\r\n return this._handleEvents(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a POST request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public post<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.post(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a PUT request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public put<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.put(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a DELETE request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public delete<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.delete(this._makeUrl(url, options), options as any)\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n private _makeUrl(url: string, options?: HttpRequestOptions) {\r\n return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);\r\n }\r\n\r\n private _makeBody(body: any, options?: HttpRequestOptions) {\r\n if (options?.contentType === 'multipart/form-data') {\r\n const formData = new FormData();\r\n for (const key in body) {\r\n if (body.hasOwnProperty(key)) {\r\n const field = body[key];\r\n let value;\r\n\r\n if (typeof field === 'string' || field instanceof File) {\r\n value = field;\r\n } else if (typeof field === 'number') {\r\n value = field.toString();\r\n } else if (typeof field === 'object') {\r\n value = JSON.stringify(field);\r\n }\r\n\r\n if (value) {\r\n formData.append(key, value);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n private _handleEvents<T>(o: Observable<any>, url: string, options?: HttpRequestOptions): Observable<T> {\r\n return o.pipe(\r\n tap({\r\n next: r => {\r\n this._eventsSubject.next({ type: 'Complete', url, options, response: r });\r\n },\r\n error: e => {\r\n this._eventsSubject.next({ type: 'Error', url, options, error: e });\r\n }\r\n })\r\n )\r\n }\r\n\r\n private _verifyOptions(options?: HttpRequestOptions) {\r\n if (options) {\r\n if (options.transferState && !options.id) {\r\n throw Error('To use transferState, set request id')\r\n }\r\n\r\n if (this.transferState && (options.observe == 'events' || options.observe == 'response')) {\r\n throw Error('TransferState is only supported with observe == body.');\r\n }\r\n }\r\n }\r\n\r\n private _findInTransferState<T>(options?: HttpRequestOptions): { found: boolean, data: T | undefined } {\r\n if (!options?.transferState || isPlatformServer(this.platformId)) {\r\n return { found: false, data: undefined };\r\n }\r\n\r\n const key = makeStateKey<T>(options.id);\r\n if (this.transferState.hasKey(key)) {\r\n const data = this.transferState.get<T>(key, null!);\r\n if ((options.transferState as any)?.['clearAfterUse']) {\r\n this.transferState.remove(key); // Free memory\r\n }\r\n\r\n return { found: true, data: data };\r\n }\r\n\r\n return { found: false, data: undefined };\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpRequestOptions {\r\n /** Http request ID */\r\n id?: any;\r\n params?: HttpParams | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n headers?: HttpHeaders | Record<string, string | string[]>;\r\n pathType?: 'relative' | 'absolute';\r\n responseType?: 'json' | 'blob' | 'text';\r\n contentType?: 'json' | 'multipart/form-data';\r\n reportProgress?: boolean;\r\n observe?: 'response' | 'body' | 'events';\r\n\r\n /**\r\n * Additional data to associate with this object.\r\n */\r\n tag?: Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n\r\n /** \r\n * Save response in transfer state \r\n * \r\n */\r\n transferState?: boolean | {\r\n /**\r\n * Clear transfer state after first read.\r\n */\r\n clearAfterUse?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * HttpDataRequestResolver is a function that takes a URL, a DataRequest, and options,\r\n * and returns an Observable that emits a DataResult.\r\n * This is used to convert a DataRequest into query parameters or request body for an HTTP request.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param options Additional options for the request, such as headers.\r\n */\r\nexport type HttpDataRequestResolver<T = any> = (url: string, dataRequest: DataRequest, options?: HttpRequestOptions) => Observable<DataResult<T>>;\r\n\r\nexport interface HttpRequestEventBase {\r\n type: 'Send' | 'Complete' | 'Progress' | 'Error';\r\n url: string;\r\n options?: HttpRequestOptions\r\n}\r\n\r\nexport interface HttpRequestSendEvent extends HttpRequestEventBase {\r\n type: 'Send';\r\n}\r\n\r\nexport interface HttpRequestCompleteEvent extends HttpRequestEventBase {\r\n type: 'Complete';\r\n response?: any;\r\n}\r\n\r\nexport interface HttpRequestProgressEvent extends HttpRequestEventBase {\r\n type: 'Progress';\r\n}\r\n\r\nexport interface HttpRequestErrorEvent extends HttpRequestEventBase {\r\n type: 'Error';\r\n error: any;\r\n}\r\n\r\nexport type HttpRequestEvent = HttpRequestSendEvent | HttpRequestCompleteEvent | HttpRequestProgressEvent | HttpRequestErrorEvent;\r\n\r\n/**\r\n * HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest\r\n * and writes the DataRequest parameters to the HTTP request.\r\n * This is used to convert a DataRequest into query parameters or request body.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param httpClient The HttpClient to use for the request.\r\n * @param options Additional options for the request, such as headers.\r\n * @template T data item type\r\n * @returns An Observable that emits the DataResult.\r\n */\r\n","import { DataRequest, DataResult } from \"@bootkit/ng0/data\";\r\nimport { HttpRequestOptions } from \"../types\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\n\r\n/**\r\n * Default implementation of httpDataRequestResolver1.\r\n * It adds DataRequest parameters as query string to the HTTP request.\r\n * @param url \r\n * @param dataRequest \r\n * @param options\r\n * @template T data item type\r\n * @returns \r\n */\r\nexport function httpDataRequestResolver1<T = any>(\r\n url: string,\r\n dataRequest: DataRequest,\r\n options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n var query: Record<string, any> = {};\r\n\r\n const httpClient = inject(HttpClient);\r\n\r\n if (dataRequest.page) {\r\n query['page[size]'] = dataRequest.page.size;\r\n query['page[index]'] = dataRequest.page.index;\r\n }\r\n\r\n if (dataRequest.sort) {\r\n query['sort[field]'] = dataRequest.sort.field;\r\n query['sort[asc]'] = dataRequest.sort.asc;\r\n }\r\n\r\n if (Array.isArray(dataRequest.filters)) {\r\n for (let i = 0; i < dataRequest.filters.length; i++) {\r\n const filter = dataRequest.filters[i];\r\n query[`filters[${i}].field`] = filter.field;\r\n query[`filters[${i}].operator`] = filter.operator;\r\n query[`filters[${i}].value`] = filter.value;\r\n }\r\n }\r\n\r\n if (typeof dataRequest.computeTotal == 'boolean') {\r\n query['computeTotal'] = dataRequest.computeTotal;\r\n }\r\n\r\n return httpClient.get<{ data: T[], total?: number }>(url, {\r\n params: query,\r\n headers: options?.headers,\r\n }).pipe(\r\n map(result => {\r\n return new DataResult<T>(result.data, result.total)\r\n })\r\n );\r\n}\r\n\r\n// /**\r\n// * Provides httpDataRequestResolver1.\r\n// * This is used to convert a DataRequest into query parameters for the HTTP (GET) request.\r\n// * @returns \r\n// */\r\n// export function withHttpDataRequestResolver1(): HttpServiceFeature {\r\n// return {\r\n// ɵproviders: [\r\n// { provide: DEFAULT_DATA_REQUEST_RESOLVER, useValue: HttpDataRequestResolver1 }\r\n// ]\r\n// };\r\n// }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-http.mjs","sources":["../../../projects/ng0/http/provide.ts","../../../projects/ng0/http/http.service.ts","../../../projects/ng0/http/types.ts","../../../projects/ng0/http/data-request-resolvers/http-data-request-resolver-1.ts","../../../projects/ng0/http/bootkit-ng0-http.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from \"@angular/core\";\r\nimport { HttpDataRequestResolver } from \"./types\";\r\nimport { HttpService } from \"./http.service\";\r\n\r\nexport const HTTP_SERVICE_CONFIG = new InjectionToken<HttpServiceConfig>('HttpServiceConfig');\r\n\r\n/**\r\n * Configuration for the HttpService.\r\n */\r\nexport interface HttpServiceConfig {\r\n /**\r\n * Base URL for the HTTP requests.\r\n * This is prepended to all request URLs.\r\n */\r\n baseUrl?: string;\r\n\r\n /**\r\n * A Resolver function to convert DataRequest to DataResult.\r\n */\r\n dataRequestResolver?: HttpDataRequestResolver;\r\n}\r\n\r\nexport interface HttpServiceFeature { \r\n ɵproviders: Array<Provider | EnvironmentProviders>;\r\n}\r\n\r\n/**\r\n * Provides the configuration for the HttpService.\r\n * @param config \r\n * @returns \r\n */\r\nexport function provideHttpService(config?: HttpServiceConfig, ...features: Partial<HttpServiceFeature>[]) {\r\n // const mergedfeatures = Object.assign({}, ...features);\r\n return makeEnvironmentProviders([\r\n HttpService,\r\n { provide: HTTP_SERVICE_CONFIG, useValue: config || {} },\r\n features.map((feature) => feature.ɵproviders),\r\n ]);\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, of, Subject, tap } from 'rxjs';\r\nimport { HttpRequestOptions, HttpRequestEvent } from './types';\r\nimport { inject, Inject, Injectable, Injector, makeStateKey, PLATFORM_ID, runInInjectionContext, TransferState } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { HTTP_SERVICE_CONFIG } from './provide';\r\n\r\n/**\r\n * HttpService provides a simple HTTP client for making requests.\r\n * It supports GET, POST, PUT, DELETE methods and can handle DataRequest objects.\r\n * It also supports transfer state for server-side rendering.\r\n * It emits events for request lifecycle: Send, Progress, Complete and Error.\r\n * It can be configured with a base URL and a default DataRequest resolver.\r\n * It can also handle multipart/form-data requests.\r\n */\r\n@Injectable()\r\nexport class HttpService {\r\n private _eventsSubject = new Subject<HttpRequestEvent>();\r\n private _baseUrl?: string;\r\n\r\n public events = this._eventsSubject.asObservable();\r\n public defaultHeaders?: HttpHeaders;\r\n\r\n private readonly _config = inject(HTTP_SERVICE_CONFIG);\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private transferState: TransferState,\r\n private injector: Injector,\r\n @Inject(PLATFORM_ID) private platformId: object,\r\n ) {\r\n this._baseUrl = this._config.baseUrl ?? '';\r\n }\r\n\r\n /**\r\n * Sends a GET request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public get<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<T>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.get<T>(this._makeUrl(url, options), options as any).pipe(\r\n tap(result => {\r\n if (isPlatformServer(this.platformId) && options?.transferState) {\r\n const key = makeStateKey<T>(options.id);\r\n this.transferState.set(key, result as T);\r\n }\r\n })\r\n );\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n\r\n /**\r\n * Sends a DataRequest to the specified URL and returns a DataResult.\r\n * This method is used for paginated or filtered data requests.\r\n * It uses the configured DataRequestResolver to handle the request. \r\n * @param url The URL to send the request to.\r\n * @param request The DataRequest object containing the request parameters.\r\n * @param options The options for the request.\r\n * @returns An observable of DataResult<T>.\r\n */\r\n public getDataResult<T>(url: string, request: DataRequest, options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n this._verifyOptions(options);\r\n const transferStateData = this._findInTransferState<DataResult<T>>(options);\r\n if (transferStateData.found) {\r\n return of(transferStateData.data!);\r\n }\r\n\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let resolver = this._config.dataRequestResolver;\r\n if (!resolver) {\r\n throw new Error('No HttpDataRequestResolver provided.');\r\n }\r\n\r\n const URL = this._makeUrl(url, options);\r\n let obs = runInInjectionContext<Observable<DataResult<T>>>(this.injector, resolver.bind(null, URL, request, options));\r\n if (!(obs instanceof Observable)) {\r\n throw Error('HttpDataRequestResolver should return an observable.');\r\n }\r\n\r\n return this._handleEvents(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a POST request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public post<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.post(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a PUT request to the specified URL with the given body.\r\n * @param url The URL to send the request to.\r\n * @param body The body of the request.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public put<T>(url: string, body: any, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n const BODY = this._makeBody(body, options);\r\n let obs = this.http.put(this._makeUrl(url, options), BODY, options as any) as Observable<T>;\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n /**\r\n * Sends a DELETE request to the specified URL.\r\n * @param url The URL to send the request to.\r\n * @param options The options for the request.\r\n * @returns An observable of the response.\r\n */\r\n public delete<T>(url: string, options?: HttpRequestOptions): Observable<T> {\r\n this._verifyOptions(options);\r\n this._eventsSubject.next({ type: 'Send', url, options });\r\n let obs = this.http.delete(this._makeUrl(url, options), options as any)\r\n return this._handleEvents<T>(obs, url, options);\r\n }\r\n\r\n private _makeUrl(url: string, options?: HttpRequestOptions) {\r\n return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);\r\n }\r\n\r\n private _makeBody(body: any, options?: HttpRequestOptions) {\r\n if (options?.contentType === 'multipart/form-data') {\r\n const formData = new FormData();\r\n for (const key in body) {\r\n if (body.hasOwnProperty(key)) {\r\n const field = body[key];\r\n let value;\r\n\r\n if (typeof field === 'string' || field instanceof File || field instanceof Blob) {\r\n value = field;\r\n } else if (typeof field === 'number') {\r\n value = field.toString();\r\n } else if (typeof field === 'object') {\r\n value = JSON.stringify(field);\r\n }\r\n\r\n if (value) {\r\n formData.append(key, value);\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n return body;\r\n }\r\n\r\n private _handleEvents<T>(o: Observable<any>, url: string, options?: HttpRequestOptions): Observable<T> {\r\n return o.pipe(\r\n tap({\r\n next: r => {\r\n this._eventsSubject.next({ type: 'Complete', url, options, response: r });\r\n },\r\n error: e => {\r\n this._eventsSubject.next({ type: 'Error', url, options, error: e });\r\n }\r\n })\r\n )\r\n }\r\n\r\n private _verifyOptions(options?: HttpRequestOptions) {\r\n if (options) {\r\n if (options.transferState && !options.id) {\r\n throw Error('To use transferState, set request id')\r\n }\r\n\r\n if (this.transferState && (options.observe == 'events' || options.observe == 'response')) {\r\n throw Error('TransferState is only supported with observe == body.');\r\n }\r\n }\r\n }\r\n\r\n private _findInTransferState<T>(options?: HttpRequestOptions): { found: boolean, data: T | undefined } {\r\n if (!options?.transferState || isPlatformServer(this.platformId)) {\r\n return { found: false, data: undefined };\r\n }\r\n\r\n const key = makeStateKey<T>(options.id);\r\n if (this.transferState.hasKey(key)) {\r\n const data = this.transferState.get<T>(key, null!);\r\n if ((options.transferState as any)?.['clearAfterUse']) {\r\n this.transferState.remove(key); // Free memory\r\n }\r\n\r\n return { found: true, data: data };\r\n }\r\n\r\n return { found: false, data: undefined };\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { DataRequest, DataResult } from '@bootkit/ng0/data';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpRequestOptions {\r\n /** Http request ID */\r\n id?: any;\r\n params?: HttpParams | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n headers?: HttpHeaders | Record<string, string | string[]>;\r\n pathType?: 'relative' | 'absolute';\r\n responseType?: 'json' | 'blob' | 'text';\r\n contentType?: 'json' | 'multipart/form-data';\r\n reportProgress?: boolean;\r\n observe?: 'response' | 'body' | 'events';\r\n\r\n /**\r\n * Additional data to associate with this object.\r\n */\r\n tag?: Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\r\n\r\n /** \r\n * Save response in transfer state \r\n * \r\n */\r\n transferState?: boolean | {\r\n /**\r\n * Clear transfer state after first read.\r\n */\r\n clearAfterUse?: boolean;\r\n };\r\n}\r\n\r\n/**\r\n * HttpDataRequestResolver is a function that takes a URL, a DataRequest, and options,\r\n * and returns an Observable that emits a DataResult.\r\n * This is used to convert a DataRequest into query parameters or request body for an HTTP request.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param options Additional options for the request, such as headers.\r\n */\r\nexport type HttpDataRequestResolver<T = any> = (url: string, dataRequest: DataRequest, options?: HttpRequestOptions) => Observable<DataResult<T>>;\r\n\r\nexport interface HttpRequestEventBase {\r\n type: 'Send' | 'Complete' | 'Progress' | 'Error';\r\n url: string;\r\n options?: HttpRequestOptions\r\n}\r\n\r\nexport interface HttpRequestSendEvent extends HttpRequestEventBase {\r\n type: 'Send';\r\n}\r\n\r\nexport interface HttpRequestCompleteEvent extends HttpRequestEventBase {\r\n type: 'Complete';\r\n response?: any;\r\n}\r\n\r\nexport interface HttpRequestProgressEvent extends HttpRequestEventBase {\r\n type: 'Progress';\r\n}\r\n\r\nexport interface HttpRequestErrorEvent extends HttpRequestEventBase {\r\n type: 'Error';\r\n error: any;\r\n}\r\n\r\nexport type HttpRequestEvent = HttpRequestSendEvent | HttpRequestCompleteEvent | HttpRequestProgressEvent | HttpRequestErrorEvent;\r\n\r\n/**\r\n * HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest\r\n * and writes the DataRequest parameters to the HTTP request.\r\n * This is used to convert a DataRequest into query parameters or request body.\r\n * @param url The URL to send the request to.\r\n * @param dataRequest The DataRequest to convert.\r\n * @param httpClient The HttpClient to use for the request.\r\n * @param options Additional options for the request, such as headers.\r\n * @template T data item type\r\n * @returns An Observable that emits the DataResult.\r\n */\r\n","import { DataRequest, DataResult } from \"@bootkit/ng0/data\";\r\nimport { HttpRequestOptions } from \"../types\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { inject } from \"@angular/core\";\r\n\r\n/**\r\n * Default implementation of httpDataRequestResolver1.\r\n * It adds DataRequest parameters as query string to the HTTP request.\r\n * @param url \r\n * @param dataRequest \r\n * @param options\r\n * @template T data item type\r\n * @returns \r\n */\r\nexport function httpDataRequestResolver1<T = any>(\r\n url: string,\r\n dataRequest: DataRequest,\r\n options?: HttpRequestOptions): Observable<DataResult<T>> {\r\n var query: Record<string, any> = {};\r\n\r\n const httpClient = inject(HttpClient);\r\n\r\n if (dataRequest.page) {\r\n query['page[size]'] = dataRequest.page.size;\r\n query['page[index]'] = dataRequest.page.index;\r\n }\r\n\r\n if (dataRequest.sort) {\r\n query['sort[field]'] = dataRequest.sort.field;\r\n query['sort[asc]'] = dataRequest.sort.asc;\r\n }\r\n\r\n if (Array.isArray(dataRequest.filters)) {\r\n for (let i = 0; i < dataRequest.filters.length; i++) {\r\n const filter = dataRequest.filters[i];\r\n query[`filters[${i}].field`] = filter.field;\r\n query[`filters[${i}].operator`] = filter.operator;\r\n query[`filters[${i}].value`] = filter.value;\r\n }\r\n }\r\n\r\n if (typeof dataRequest.computeTotal == 'boolean') {\r\n query['computeTotal'] = dataRequest.computeTotal;\r\n }\r\n\r\n return httpClient.get<{ data: T[], total?: number }>(url, {\r\n params: query,\r\n headers: options?.headers,\r\n }).pipe(\r\n map(result => {\r\n return new DataResult<T>(result.data, result.total)\r\n })\r\n );\r\n}\r\n\r\n// /**\r\n// * Provides httpDataRequestResolver1.\r\n// * This is used to convert a DataRequest into query parameters for the HTTP (GET) request.\r\n// * @returns \r\n// */\r\n// export function withHttpDataRequestResolver1(): HttpServiceFeature {\r\n// return {\r\n// ɵproviders: [\r\n// { provide: DEFAULT_DATA_REQUEST_RESOLVER, useValue: HttpDataRequestResolver1 }\r\n// ]\r\n// };\r\n// }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +1,45 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Injectable, inject, TemplateRef, input, booleanAttribute, EventEmitter, Output, Directive, signal, 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
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
|
-
}
|
|
30
8
|
|
|
31
9
|
/**
|
|
32
10
|
* Service to manage the configuration and state of Layout1Component.
|
|
33
11
|
*/
|
|
34
12
|
class Layout1Manager {
|
|
35
|
-
_zIndexCounter = 1000;
|
|
36
|
-
_sidenavPushSubject = new Subject();
|
|
37
|
-
_sidenavPopSubject = new Subject();
|
|
38
|
-
_sidenavRemoveSubject = new Subject();
|
|
39
|
-
/**
|
|
40
|
-
* @private
|
|
41
|
-
*/
|
|
42
|
-
sidenavPushNotification = this._sidenavPushSubject.asObservable();
|
|
43
13
|
/**
|
|
44
|
-
*
|
|
14
|
+
* The Layout1Component instance associated with this manager.
|
|
45
15
|
*/
|
|
46
|
-
|
|
16
|
+
component;
|
|
47
17
|
/**
|
|
48
|
-
*
|
|
18
|
+
* Push a secondary sidenav.
|
|
19
|
+
* @param content The template for the secondary sidenav.
|
|
20
|
+
* @param options Options for the secondary sidenav.
|
|
21
|
+
* @returns The reference to the pushed secondary sidenav.
|
|
49
22
|
*/
|
|
50
|
-
|
|
23
|
+
pushSidenav(content, options) {
|
|
24
|
+
return this.component.pushSidenav(content, options);
|
|
25
|
+
}
|
|
51
26
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @param template
|
|
54
|
-
* @param options
|
|
55
|
-
* @returns
|
|
27
|
+
* Close the last secondary sidenav and dispose it.
|
|
56
28
|
*/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
options.zIndex = options.zIndex ?? this._zIndexCounter++;
|
|
60
|
-
const sidenav = new Layout1SecondarySidenav(template, options);
|
|
61
|
-
this._sidenavPushSubject.next(sidenav);
|
|
62
|
-
return sidenav;
|
|
29
|
+
popSidenav(result) {
|
|
30
|
+
return this.component.popSidenav(result);
|
|
63
31
|
}
|
|
64
32
|
/**
|
|
65
|
-
*
|
|
33
|
+
* Get the list of secondary sidenavs.
|
|
66
34
|
*/
|
|
67
|
-
|
|
68
|
-
this.
|
|
35
|
+
get secondarySidenavs() {
|
|
36
|
+
return this.component.secondarySidenavs;
|
|
69
37
|
}
|
|
70
38
|
/**
|
|
71
|
-
*
|
|
72
|
-
* @param sidenav
|
|
39
|
+
* Get the last secondary sidenav.
|
|
73
40
|
*/
|
|
74
|
-
|
|
75
|
-
this.
|
|
41
|
+
get last() {
|
|
42
|
+
return this.component.secondarySidenavs.at(-1);
|
|
76
43
|
}
|
|
77
44
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Manager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
78
45
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Manager, providedIn: 'root' });
|
|
@@ -111,67 +78,172 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
111
78
|
type: Output
|
|
112
79
|
}] } });
|
|
113
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Reference to a secondary sidenav in the Layout1Component.
|
|
83
|
+
*/
|
|
84
|
+
class Layout1SecondarySidenav {
|
|
85
|
+
_disposedSubject = new Subject();
|
|
86
|
+
_isDisposed = false;
|
|
87
|
+
/**
|
|
88
|
+
* Observable that emits when the sidenav is disposed.
|
|
89
|
+
*/
|
|
90
|
+
disposed = this._disposedSubject.asObservable();
|
|
91
|
+
/**
|
|
92
|
+
* template of the sidenav content.
|
|
93
|
+
*/
|
|
94
|
+
template;
|
|
95
|
+
/**
|
|
96
|
+
* Z-Index of the sidenav.
|
|
97
|
+
*/
|
|
98
|
+
zIndex;
|
|
99
|
+
/**
|
|
100
|
+
* Sidenav css classes.
|
|
101
|
+
*/
|
|
102
|
+
css;
|
|
103
|
+
/**
|
|
104
|
+
* Size of the sidenav.
|
|
105
|
+
*/
|
|
106
|
+
size;
|
|
107
|
+
/**
|
|
108
|
+
* Position of the sidenav.
|
|
109
|
+
*/
|
|
110
|
+
position;
|
|
111
|
+
/**
|
|
112
|
+
* Mode of the sidenav.
|
|
113
|
+
*/
|
|
114
|
+
mode;
|
|
115
|
+
/**
|
|
116
|
+
* Whether the sidenav has a backdrop.
|
|
117
|
+
*/
|
|
118
|
+
hasBackdrop;
|
|
119
|
+
/**
|
|
120
|
+
* Whether the sidenav should close on backdrop click.
|
|
121
|
+
*/
|
|
122
|
+
closeOnBackdropClick;
|
|
123
|
+
/**
|
|
124
|
+
* Whether the sidenav is disposed.
|
|
125
|
+
*/
|
|
126
|
+
get isDisposed() {
|
|
127
|
+
return this._isDisposed;
|
|
128
|
+
}
|
|
129
|
+
constructor(template, options) {
|
|
130
|
+
this.template = template;
|
|
131
|
+
this.zIndex = signal(options?.zIndex, ...(ngDevMode ? [{ debugName: "zIndex" }] : []));
|
|
132
|
+
this.css = signal(options?.css, ...(ngDevMode ? [{ debugName: "css" }] : []));
|
|
133
|
+
this.size = signal(options?.size, ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
134
|
+
this.position = signal(options?.position ?? 'start', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
135
|
+
this.mode = signal(options?.mode ?? 'over', ...(ngDevMode ? [{ debugName: "mode" }] : []));
|
|
136
|
+
this.hasBackdrop = signal(options?.hasBackdrop ?? true, ...(ngDevMode ? [{ debugName: "hasBackdrop" }] : []));
|
|
137
|
+
this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false, ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : []));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Close and dispose the sidenav.
|
|
141
|
+
* @param result Optional result to emit when the sidenav is closed.
|
|
142
|
+
*/
|
|
143
|
+
dispose(result) {
|
|
144
|
+
if (!this._isDisposed) {
|
|
145
|
+
this._isDisposed = true;
|
|
146
|
+
this._disposedSubject.next(result);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
114
151
|
/**
|
|
115
152
|
* Layout1 component that provides a layout with sidenavs.
|
|
116
153
|
*/
|
|
117
154
|
class Layout1Component {
|
|
155
|
+
_zIndexCounter = 1000;
|
|
118
156
|
_manager = inject(Layout1Manager);
|
|
119
157
|
_sidenavs;
|
|
120
158
|
_secondarySidenavs = signal([], ...(ngDevMode ? [{ debugName: "_secondarySidenavs" }] : []));
|
|
121
159
|
_openSecondarySidenavs = new Set();
|
|
122
160
|
_changeDetectorRef = inject(ChangeDetectorRef);
|
|
161
|
+
/**
|
|
162
|
+
* Default position for secondary sidenavs.
|
|
163
|
+
*/
|
|
164
|
+
defaultSidenavPosition = input('start', ...(ngDevMode ? [{ debugName: "defaultSidenavPosition" }] : []));
|
|
165
|
+
/**
|
|
166
|
+
* Default size for secondary sidenavs.
|
|
167
|
+
*/
|
|
168
|
+
defaultSidenavSize = input(...(ngDevMode ? [undefined, { debugName: "defaultSidenavSize" }] : []));
|
|
169
|
+
/**
|
|
170
|
+
* Default mode for secondary sidenavs.
|
|
171
|
+
*/
|
|
172
|
+
defaultSidenavMode = input('over', ...(ngDevMode ? [{ debugName: "defaultSidenavMode" }] : []));
|
|
173
|
+
/**
|
|
174
|
+
* Default hasBackdrop value for secondary sidenavs.
|
|
175
|
+
*/
|
|
176
|
+
defaultSidenavHasBackdrop = input(true, ...(ngDevMode ? [{ debugName: "defaultSidenavHasBackdrop" }] : []));
|
|
177
|
+
/**
|
|
178
|
+
* Default closeOnBackdropClick value for secondary sidenavs.
|
|
179
|
+
*/
|
|
180
|
+
defaultSidenavCloseOnBackdropClick = input(false, ...(ngDevMode ? [{ debugName: "defaultSidenavCloseOnBackdropClick" }] : []));
|
|
123
181
|
constructor() {
|
|
124
|
-
this._manager.
|
|
125
|
-
this._manager.sidenavRemoveNotification.pipe(takeUntilDestroyed()).subscribe(c => this.removeSidenav(c));
|
|
126
|
-
this._manager.sidenavPopNotification.pipe(takeUntilDestroyed()).subscribe(c => this.popSidenav());
|
|
182
|
+
this._manager.component = this;
|
|
127
183
|
}
|
|
128
184
|
/**
|
|
129
185
|
* Push a secondary sidenav.
|
|
130
|
-
* @param sidenav
|
|
186
|
+
* @param template The template for the secondary sidenav.
|
|
187
|
+
* @param options Options for the secondary sidenav.
|
|
188
|
+
* @returns The reference to the pushed secondary sidenav.
|
|
131
189
|
*/
|
|
132
|
-
pushSidenav(
|
|
133
|
-
|
|
190
|
+
pushSidenav(template, options) {
|
|
191
|
+
options = options || {};
|
|
192
|
+
options.zIndex = options.zIndex ?? this._zIndexCounter++;
|
|
193
|
+
options.mode = options.mode ?? this.defaultSidenavMode();
|
|
194
|
+
options.position = options.position ?? this.defaultSidenavPosition();
|
|
195
|
+
options.size = options.size ?? this.defaultSidenavSize();
|
|
196
|
+
options.hasBackdrop = options.hasBackdrop ?? this.defaultSidenavHasBackdrop();
|
|
197
|
+
options.closeOnBackdropClick = options.closeOnBackdropClick ?? this.defaultSidenavCloseOnBackdropClick();
|
|
198
|
+
const sidenavRef = new Layout1SecondarySidenav(template, options);
|
|
199
|
+
this._secondarySidenavs().push(sidenavRef);
|
|
134
200
|
this._changeDetectorRef.markForCheck();
|
|
201
|
+
// Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.
|
|
135
202
|
setTimeout(() => {
|
|
136
|
-
|
|
137
|
-
this._openSecondarySidenavs.add(sidenav);
|
|
203
|
+
this._openSecondarySidenavs.add(sidenavRef);
|
|
138
204
|
this._changeDetectorRef.markForCheck();
|
|
139
205
|
});
|
|
206
|
+
sidenavRef.disposed.subscribe((result) => {
|
|
207
|
+
// Close the sidenav first. After the transition ends, it will be removed from DOM.
|
|
208
|
+
this._openSecondarySidenavs.delete(sidenavRef);
|
|
209
|
+
});
|
|
210
|
+
return sidenavRef;
|
|
140
211
|
}
|
|
141
212
|
/**
|
|
142
|
-
*
|
|
143
|
-
|
|
144
|
-
|
|
213
|
+
* Close the last secondary sidenav and dispose it.
|
|
214
|
+
* @param result The result to pass when closing the sidenav.
|
|
215
|
+
* @return The reference to the closed secondary sidenav.
|
|
216
|
+
*/
|
|
217
|
+
popSidenav(result) {
|
|
145
218
|
const last = this._secondarySidenavs().at(-1);
|
|
146
219
|
if (last) {
|
|
147
|
-
|
|
220
|
+
last.dispose(result);
|
|
221
|
+
return last;
|
|
148
222
|
}
|
|
223
|
+
return undefined;
|
|
149
224
|
}
|
|
150
225
|
/**
|
|
151
|
-
*
|
|
152
|
-
* @param sidenav
|
|
226
|
+
* Get the list of secondary sidenavs.
|
|
153
227
|
*/
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
this._openSecondarySidenavs.delete(sidenav);
|
|
228
|
+
get secondarySidenavs() {
|
|
229
|
+
return this._secondarySidenavs();
|
|
157
230
|
}
|
|
158
231
|
_onSecondarySidenavTransitionEnd(sidenav) {
|
|
159
|
-
if (
|
|
160
|
-
// We should remove secondary sidenavs from DOM.
|
|
232
|
+
if (sidenav.isDisposed) {
|
|
161
233
|
const index = this._secondarySidenavs().findIndex(x => x === sidenav);
|
|
162
234
|
this._secondarySidenavs().splice(index, 1);
|
|
163
235
|
}
|
|
164
236
|
}
|
|
165
237
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
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() ?
|
|
238
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: Layout1Component, isStandalone: true, selector: "ng0-layout1", inputs: { defaultSidenavPosition: { classPropertyName: "defaultSidenavPosition", publicName: "defaultSidenavPosition", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavSize: { classPropertyName: "defaultSidenavSize", publicName: "defaultSidenavSize", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavMode: { classPropertyName: "defaultSidenavMode", publicName: "defaultSidenavMode", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavHasBackdrop: { classPropertyName: "defaultSidenavHasBackdrop", publicName: "defaultSidenavHasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, defaultSidenavCloseOnBackdropClick: { classPropertyName: "defaultSidenavCloseOnBackdropClick", publicName: "defaultSidenavCloseOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null } }, 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() ? sidenav.dispose() : 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 });
|
|
167
239
|
}
|
|
168
240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: Layout1Component, decorators: [{
|
|
169
241
|
type: Component,
|
|
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() ?
|
|
242
|
+
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() ? sidenav.dispose() : 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
243
|
}], ctorParameters: () => [], propDecorators: { _sidenavs: [{
|
|
172
244
|
type: ContentChildren,
|
|
173
245
|
args: [Layout1SidenavDirective]
|
|
174
|
-
}] } });
|
|
246
|
+
}], defaultSidenavPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSidenavPosition", required: false }] }], defaultSidenavSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSidenavSize", required: false }] }], defaultSidenavMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSidenavMode", required: false }] }], defaultSidenavHasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSidenavHasBackdrop", required: false }] }], defaultSidenavCloseOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSidenavCloseOnBackdropClick", required: false }] }] } });
|
|
175
247
|
|
|
176
248
|
/**
|
|
177
249
|
* Layout1 header component.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-layouts-layout1.mjs","sources":["../../../projects/ng0/layouts/layout1/types.ts","../../../projects/ng0/layouts/layout1/layout1-manager.ts","../../../projects/ng0/layouts/layout1/layout1-sidenav.directive.ts","../../../projects/ng0/layouts/layout1/layout1.component.ts","../../../projects/ng0/layouts/layout1/layout1.component.html","../../../projects/ng0/layouts/layout1/layout1-header.component.ts","../../../projects/ng0/layouts/layout1/layout1-content.component.ts","../../../projects/ng0/layouts/layout1/layout1.module.ts","../../../projects/ng0/layouts/layout1/bootkit-ng0-layouts-layout1.ts"],"sourcesContent":["import { signal, TemplateRef, WritableSignal } from \"@angular/core\";\r\nimport { CssClass } from \"@bootkit/ng0/common\";\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from \"@bootkit/ng0/components/sidenav\";\r\n\r\n/**\r\n * Represents a secondary sidenav options in the Layout1Component.\r\n */\r\nexport interface Layout1SecondarySidenavOptions {\r\n size?: SidenavSize;\r\n zIndex?: number;\r\n position?: SidenavPosition;\r\n mode?: SidenavMode;\r\n fixedInViewport?: boolean;\r\n hasBackdrop?: boolean;\r\n css?: CssClass;\r\n closeOnBackdropClick?: boolean\r\n}\r\n\r\nexport class Layout1SecondarySidenav {\r\n template: TemplateRef<any>;\r\n zIndex: WritableSignal<number | undefined>;\r\n css: WritableSignal<CssClass>;\r\n size: WritableSignal<SidenavSize>;\r\n position: WritableSignal<SidenavPosition>;\r\n mode: WritableSignal<SidenavMode>;\r\n hasBackdrop: WritableSignal<boolean>;\r\n closeOnBackdropClick: WritableSignal<boolean>;\r\n\r\n constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions) {\r\n this.template = template;\r\n this.zIndex = signal(options?.zIndex);\r\n this.css = signal(options?.css);\r\n this.size = signal(options?.size);\r\n this.position = signal(options?.position ?? 'start');\r\n this.mode = signal(options?.mode ?? 'over');\r\n this.hasBackdrop = signal(options?.hasBackdrop ?? true);\r\n this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false);\r\n }\r\n}\r\n","import { Injectable, TemplateRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Layout1SecondarySidenav, Layout1SecondarySidenavOptions } from './types';\r\n\r\n/**\r\n * Service to manage the configuration and state of Layout1Component.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Layout1Manager {\r\n private _zIndexCounter = 1000;\r\n private _sidenavPushSubject = new Subject<Layout1SecondarySidenav>();\r\n private _sidenavPopSubject = new Subject<any>();\r\n private _sidenavRemoveSubject = new Subject<Layout1SecondarySidenav>();\r\n\r\n /**\r\n * @private\r\n */\r\n public sidenavPushNotification = this._sidenavPushSubject.asObservable();\r\n\r\n /**\r\n * @private\r\n */\r\n public sidenavPopNotification = this._sidenavPopSubject.asObservable();\r\n\r\n /**\r\n * @private\r\n */\r\n public sidenavRemoveNotification = this._sidenavRemoveSubject.asObservable();\r\n\r\n /**\r\n * Push a secondary sidenav.\r\n * @param template \r\n * @param options \r\n * @returns \r\n */\r\n public pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\r\n options = options || {};\r\n options.zIndex = options.zIndex ?? this._zIndexCounter++;\r\n\r\n const sidenav = new Layout1SecondarySidenav(template, options);\r\n this._sidenavPushSubject.next(sidenav);\r\n return sidenav;\r\n }\r\n\r\n /**\r\n * Pop the last secondary sidenav.\r\n */\r\n public popSidenav(): void {\r\n this._sidenavPopSubject.next(undefined);\r\n }\r\n\r\n /**\r\n * Remove a secondary sidenav.\r\n * @param sidenav \r\n */\r\n public removeSidenav(sidenav: Layout1SecondarySidenav): void {\r\n this._sidenavRemoveSubject.next(sidenav);\r\n }\r\n}\r\n","import { booleanAttribute, Directive, EventEmitter, inject, input, numberAttribute, Output, TemplateRef } from '@angular/core';\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\r\nimport { CssClass } from '@bootkit/ng0/common';\r\n\r\n/** \r\n * Directive to define a sidenav within Layout1Component.\r\n */\r\n@Directive({\r\n selector: '[ng0Layout1Sidenav]',\r\n exportAs: 'ng0Layout1Sidenav',\r\n standalone: true,\r\n})\r\nexport class Layout1SidenavDirective {\r\n public readonly template = inject(TemplateRef<any>);\r\n public readonly open = input(true, { transform: booleanAttribute });\r\n public readonly mode = input<SidenavMode>('push');\r\n public readonly hasBackdrop = input(true, { transform: booleanAttribute });\r\n public readonly zIndex = input<number | undefined>(undefined);\r\n public readonly position = input<SidenavPosition>('start');\r\n public readonly size = input<SidenavSize>();\r\n public readonly css = input<CssClass>();\r\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, model, QueryList, signal, ViewEncapsulation } from '@angular/core';\r\nimport { SidenavModule } from '@bootkit/ng0/components/sidenav';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Layout1Manager } from './layout1-manager';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\r\nimport { Layout1SecondarySidenav } from './types';\r\n\r\n/**\r\n * Layout1 component that provides a layout with sidenavs.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1',\r\n templateUrl: './layout1.component.html',\r\n styleUrls: ['./layout1.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule, SidenavModule]\r\n})\r\nexport class Layout1Component {\r\n private readonly _manager = inject(Layout1Manager);\r\n @ContentChildren(Layout1SidenavDirective) protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;\r\n protected readonly _secondarySidenavs = signal<Layout1SecondarySidenav[]>([]);\r\n protected readonly _openSecondarySidenavs = new Set<Layout1SecondarySidenav>();\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this._manager.sidenavPushNotification.pipe(takeUntilDestroyed()).subscribe(c => this.pushSidenav(c));\r\n this._manager.sidenavRemoveNotification.pipe(takeUntilDestroyed()).subscribe(c => this.removeSidenav(c));\r\n this._manager.sidenavPopNotification.pipe(takeUntilDestroyed()).subscribe(c => this.popSidenav());\r\n }\r\n\r\n /**\r\n * Push a secondary sidenav.\r\n * @param sidenav \r\n */\r\n public pushSidenav(sidenav: Layout1SecondarySidenav): void {\r\n this._secondarySidenavs().push(sidenav);\r\n this._changeDetectorRef.markForCheck();\r\n setTimeout(() => {\r\n // Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.\r\n this._openSecondarySidenavs.add(sidenav);\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * Pop the last secondary sidenav.\r\n */\r\n public popSidenav(): void {\r\n const last = this._secondarySidenavs().at(-1);\r\n if (last) {\r\n this.removeSidenav(last);\r\n }\r\n }\r\n\r\n /**\r\n * Remove a secondary sidenav.\r\n * @param sidenav \r\n */\r\n public removeSidenav(sidenav: Layout1SecondarySidenav): void {\r\n // Close the sidenav first. After the transition ends, it will be removed from DOM.\r\n this._openSecondarySidenavs.delete(sidenav);\r\n }\r\n\r\n protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav) {\r\n if (!this._openSecondarySidenavs.has(sidenav)) {\r\n // We should remove secondary sidenavs from DOM.\r\n const index = this._secondarySidenavs().findIndex(x => x === sidenav);\r\n this._secondarySidenavs().splice(index, 1);\r\n }\r\n }\r\n}\r\n","<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>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Layout1 header component.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1-header',\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 Layout1HeaderComponent {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Layout1 content component.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1-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 Layout1ContentComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Layout1Component } from './layout1.component';\r\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\r\nimport { Layout1HeaderComponent } from './layout1-header.component';\r\nimport { Layout1ContentComponent } from './public-api';\r\n\r\nconst items = [\r\n Layout1Component,\r\n Layout1SidenavDirective,\r\n Layout1HeaderComponent,\r\n Layout1ContentComponent\r\n];\r\n\r\n/**\r\n * Layout1Module\r\n */\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class Layout1Module { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-layouts-layout1.mjs","sources":["../../../projects/ng0/layouts/layout1/layout1-manager.ts","../../../projects/ng0/layouts/layout1/layout1-sidenav.directive.ts","../../../projects/ng0/layouts/layout1/secondary-sidenav.ts","../../../projects/ng0/layouts/layout1/layout1.component.ts","../../../projects/ng0/layouts/layout1/layout1.component.html","../../../projects/ng0/layouts/layout1/layout1-header.component.ts","../../../projects/ng0/layouts/layout1/layout1-content.component.ts","../../../projects/ng0/layouts/layout1/layout1.module.ts","../../../projects/ng0/layouts/layout1/bootkit-ng0-layouts-layout1.ts"],"sourcesContent":["import { Injectable, TemplateRef } from '@angular/core';\r\nimport { Layout1SecondarySidenav, Layout1SecondarySidenavOptions } from './secondary-sidenav';\r\nimport { Layout1Component } from './layout1.component';\r\n\r\n/**\r\n * Service to manage the configuration and state of Layout1Component.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Layout1Manager {\r\n /**\r\n * The Layout1Component instance associated with this manager.\r\n */\r\n public component!: Layout1Component;\r\n\r\n /**\r\n * Push a secondary sidenav.\r\n * @param content The template for the secondary sidenav.\r\n * @param options Options for the secondary sidenav.\r\n * @returns The reference to the pushed secondary sidenav.\r\n */\r\n public pushSidenav(content: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\r\n return this.component.pushSidenav(content, options);\r\n }\r\n\r\n /**\r\n * Close the last secondary sidenav and dispose it.\r\n */\r\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\r\n return this.component.popSidenav(result);\r\n }\r\n\r\n /**\r\n * Get the list of secondary sidenavs.\r\n */\r\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\r\n return this.component.secondarySidenavs;\r\n }\r\n\r\n /**\r\n * Get the last secondary sidenav.\r\n */\r\n public get last(): Layout1SecondarySidenav | undefined {\r\n return this.component.secondarySidenavs.at(-1);\r\n }\r\n}\r\n","import { booleanAttribute, Directive, EventEmitter, inject, input, Output, TemplateRef } from '@angular/core';\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\r\nimport { CssClass } from '@bootkit/ng0/common';\r\n\r\n/** \r\n * Directive to define a sidenav within Layout1Component.\r\n */\r\n@Directive({\r\n selector: '[ng0Layout1Sidenav]',\r\n exportAs: 'ng0Layout1Sidenav',\r\n standalone: true,\r\n})\r\nexport class Layout1SidenavDirective {\r\n public readonly template = inject(TemplateRef<any>);\r\n public readonly open = input(true, { transform: booleanAttribute });\r\n public readonly mode = input<SidenavMode>('push');\r\n public readonly hasBackdrop = input(true, { transform: booleanAttribute });\r\n public readonly zIndex = input<number | undefined>(undefined);\r\n public readonly position = input<SidenavPosition>('start');\r\n public readonly size = input<SidenavSize>();\r\n public readonly css = input<CssClass>();\r\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\r\n}\r\n","import { signal, TemplateRef, WritableSignal } from \"@angular/core\";\r\nimport { CssClass } from \"@bootkit/ng0/common\";\r\nimport { SidenavMode, SidenavPosition, SidenavSize } from \"@bootkit/ng0/components/sidenav\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n/**\r\n * Represents a secondary sidenav options in the Layout1Component.\r\n */\r\nexport interface Layout1SecondarySidenavOptions {\r\n size?: SidenavSize;\r\n zIndex?: number;\r\n position?: SidenavPosition;\r\n mode?: SidenavMode;\r\n fixedInViewport?: boolean;\r\n hasBackdrop?: boolean;\r\n css?: CssClass;\r\n closeOnBackdropClick?: boolean\r\n}\r\n\r\n/**\r\n * Reference to a secondary sidenav in the Layout1Component.\r\n */\r\nexport class Layout1SecondarySidenav {\r\n private _disposedSubject = new Subject<any>();\r\n private _isDisposed = false;\r\n\r\n /**\r\n * Observable that emits when the sidenav is disposed.\r\n */\r\n public readonly disposed = this._disposedSubject.asObservable();\r\n\r\n /**\r\n * template of the sidenav content.\r\n */\r\n public readonly template: TemplateRef<any>;\r\n\r\n /**\r\n * Z-Index of the sidenav.\r\n */\r\n public readonly zIndex: WritableSignal<number | undefined>;\r\n\r\n /**\r\n * Sidenav css classes.\r\n */\r\n public readonly css: WritableSignal<CssClass>;\r\n\r\n /**\r\n * Size of the sidenav.\r\n */\r\n public readonly size: WritableSignal<SidenavSize>;\r\n\r\n /**\r\n * Position of the sidenav.\r\n */\r\n public readonly position: WritableSignal<SidenavPosition>;\r\n\r\n /**\r\n * Mode of the sidenav.\r\n */\r\n public readonly mode: WritableSignal<SidenavMode>;\r\n\r\n /**\r\n * Whether the sidenav has a backdrop.\r\n */\r\n public readonly hasBackdrop: WritableSignal<boolean>;\r\n\r\n /**\r\n * Whether the sidenav should close on backdrop click.\r\n */\r\n public readonly closeOnBackdropClick: WritableSignal<boolean>;\r\n\r\n /**\r\n * Whether the sidenav is disposed.\r\n */\r\n public get isDisposed() {\r\n return this._isDisposed;\r\n }\r\n\r\n constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions) {\r\n this.template = template;\r\n this.zIndex = signal(options?.zIndex);\r\n this.css = signal(options?.css);\r\n this.size = signal(options?.size);\r\n this.position = signal(options?.position ?? 'start');\r\n this.mode = signal(options?.mode ?? 'over');\r\n this.hasBackdrop = signal(options?.hasBackdrop ?? true);\r\n this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false);\r\n }\r\n\r\n /**\r\n * Close and dispose the sidenav.\r\n * @param result Optional result to emit when the sidenav is closed.\r\n */\r\n public dispose(result?: any): void {\r\n if (!this._isDisposed) {\r\n this._isDisposed = true;\r\n this._disposedSubject.next(result);\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, input, QueryList, signal, TemplateRef, ViewEncapsulation } from '@angular/core';\r\nimport { SidenavMode, SidenavModule, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Layout1Manager } from './layout1-manager';\r\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\r\nimport { Layout1SecondarySidenavOptions, Layout1SecondarySidenav } from './secondary-sidenav';\r\n\r\n/**\r\n * Layout1 component that provides a layout with sidenavs.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1',\r\n templateUrl: './layout1.component.html',\r\n styleUrls: ['./layout1.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule, SidenavModule]\r\n})\r\nexport class Layout1Component {\r\n private _zIndexCounter = 1000;\r\n private readonly _manager = inject(Layout1Manager);\r\n @ContentChildren(Layout1SidenavDirective) protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;\r\n protected readonly _secondarySidenavs = signal<Layout1SecondarySidenav[]>([]);\r\n protected readonly _openSecondarySidenavs = new Set<Layout1SecondarySidenav>();\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * Default position for secondary sidenavs.\r\n */\r\n defaultSidenavPosition = input<SidenavPosition>('start');\r\n\r\n /**\r\n * Default size for secondary sidenavs.\r\n */\r\n defaultSidenavSize = input<SidenavSize>();\r\n\r\n /**\r\n * Default mode for secondary sidenavs.\r\n */\r\n defaultSidenavMode = input<SidenavMode>('over');\r\n\r\n /**\r\n * Default hasBackdrop value for secondary sidenavs.\r\n */\r\n defaultSidenavHasBackdrop = input(true);\r\n\r\n /**\r\n * Default closeOnBackdropClick value for secondary sidenavs.\r\n */\r\n defaultSidenavCloseOnBackdropClick = input(false);\r\n\r\n\r\n constructor() {\r\n this._manager.component = this;\r\n }\r\n\r\n /**\r\n * Push a secondary sidenav.\r\n * @param template The template for the secondary sidenav.\r\n * @param options Options for the secondary sidenav.\r\n * @returns The reference to the pushed secondary sidenav.\r\n */\r\n public pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\r\n options = options || {};\r\n options.zIndex = options.zIndex ?? this._zIndexCounter++;\r\n options.mode = options.mode ?? this.defaultSidenavMode();\r\n options.position = options.position ?? this.defaultSidenavPosition();\r\n options.size = options.size ?? this.defaultSidenavSize();\r\n options.hasBackdrop = options.hasBackdrop ?? this.defaultSidenavHasBackdrop();\r\n options.closeOnBackdropClick = options.closeOnBackdropClick ?? this.defaultSidenavCloseOnBackdropClick();\r\n\r\n const sidenavRef = new Layout1SecondarySidenav(template, options);\r\n this._secondarySidenavs().push(sidenavRef);\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.\r\n setTimeout(() => {\r\n this._openSecondarySidenavs.add(sidenavRef);\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n sidenavRef.disposed.subscribe((result?: any) => {\r\n // Close the sidenav first. After the transition ends, it will be removed from DOM.\r\n this._openSecondarySidenavs.delete(sidenavRef);\r\n });\r\n\r\n return sidenavRef;\r\n }\r\n\r\n /**\r\n * Close the last secondary sidenav and dispose it.\r\n * @param result The result to pass when closing the sidenav.\r\n * @return The reference to the closed secondary sidenav.\r\n */\r\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\r\n const last = this._secondarySidenavs().at(-1);\r\n if (last) {\r\n last.dispose(result);\r\n return last;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Get the list of secondary sidenavs.\r\n */\r\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\r\n return this._secondarySidenavs();\r\n }\r\n\r\n protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav) {\r\n if (sidenav.isDisposed) {\r\n const index = this._secondarySidenavs().findIndex(x => x === sidenav);\r\n this._secondarySidenavs().splice(index, 1);\r\n }\r\n }\r\n}\r\n","<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() ? sidenav.dispose() : null\">\r\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\r\n </ng0-sidenav>\r\n }\r\n\r\n</ng0-sidenav-container>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Layout1 header component.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1-header',\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 Layout1HeaderComponent {\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * Layout1 content component.\r\n */\r\n@Component({\r\n selector: 'ng0-layout1-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 Layout1ContentComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Layout1Component } from './layout1.component';\r\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\r\nimport { Layout1HeaderComponent } from './layout1-header.component';\r\nimport { Layout1ContentComponent } from './public-api';\r\n\r\nconst items = [\r\n Layout1Component,\r\n Layout1SidenavDirective,\r\n Layout1HeaderComponent,\r\n Layout1ContentComponent\r\n];\r\n\r\n/**\r\n * Layout1Module\r\n */\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class Layout1Module { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { TemplateRef, EventEmitter, WritableSignal, QueryList } from '@angular/core';
|
|
3
3
|
import { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';
|
|
4
4
|
import { CssClass } from '@bootkit/ng0/common';
|
|
@@ -9,16 +9,16 @@ import * as rxjs from 'rxjs';
|
|
|
9
9
|
*/
|
|
10
10
|
declare class Layout1SidenavDirective {
|
|
11
11
|
readonly template: TemplateRef<any>;
|
|
12
|
-
readonly open:
|
|
13
|
-
readonly mode:
|
|
14
|
-
readonly hasBackdrop:
|
|
15
|
-
readonly zIndex:
|
|
16
|
-
readonly position:
|
|
17
|
-
readonly size:
|
|
18
|
-
readonly css:
|
|
12
|
+
readonly open: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
readonly mode: _angular_core.InputSignal<SidenavMode>;
|
|
14
|
+
readonly hasBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
15
|
+
readonly zIndex: _angular_core.InputSignal<number | undefined>;
|
|
16
|
+
readonly position: _angular_core.InputSignal<SidenavPosition>;
|
|
17
|
+
readonly size: _angular_core.InputSignal<SidenavSize>;
|
|
18
|
+
readonly css: _angular_core.InputSignal<CssClass>;
|
|
19
19
|
backdropClick: EventEmitter<PointerEvent>;
|
|
20
|
-
static ɵfac:
|
|
21
|
-
static ɵdir:
|
|
20
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout1SidenavDirective, never>;
|
|
21
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Layout1SidenavDirective, "[ng0Layout1Sidenav]", ["ng0Layout1Sidenav"], { "open": { "alias": "open"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "css": { "alias": "css"; "required": false; "isSignal": true; }; }, { "backdropClick": "backdropClick"; }, never, never, true, never>;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -34,110 +34,167 @@ interface Layout1SecondarySidenavOptions {
|
|
|
34
34
|
css?: CssClass;
|
|
35
35
|
closeOnBackdropClick?: boolean;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Reference to a secondary sidenav in the Layout1Component.
|
|
39
|
+
*/
|
|
37
40
|
declare class Layout1SecondarySidenav {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
private _disposedSubject;
|
|
42
|
+
private _isDisposed;
|
|
43
|
+
/**
|
|
44
|
+
* Observable that emits when the sidenav is disposed.
|
|
45
|
+
*/
|
|
46
|
+
readonly disposed: rxjs.Observable<any>;
|
|
47
|
+
/**
|
|
48
|
+
* template of the sidenav content.
|
|
49
|
+
*/
|
|
50
|
+
readonly template: TemplateRef<any>;
|
|
51
|
+
/**
|
|
52
|
+
* Z-Index of the sidenav.
|
|
53
|
+
*/
|
|
54
|
+
readonly zIndex: WritableSignal<number | undefined>;
|
|
55
|
+
/**
|
|
56
|
+
* Sidenav css classes.
|
|
57
|
+
*/
|
|
58
|
+
readonly css: WritableSignal<CssClass>;
|
|
59
|
+
/**
|
|
60
|
+
* Size of the sidenav.
|
|
61
|
+
*/
|
|
62
|
+
readonly size: WritableSignal<SidenavSize>;
|
|
63
|
+
/**
|
|
64
|
+
* Position of the sidenav.
|
|
65
|
+
*/
|
|
66
|
+
readonly position: WritableSignal<SidenavPosition>;
|
|
67
|
+
/**
|
|
68
|
+
* Mode of the sidenav.
|
|
69
|
+
*/
|
|
70
|
+
readonly mode: WritableSignal<SidenavMode>;
|
|
71
|
+
/**
|
|
72
|
+
* Whether the sidenav has a backdrop.
|
|
73
|
+
*/
|
|
74
|
+
readonly hasBackdrop: WritableSignal<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the sidenav should close on backdrop click.
|
|
77
|
+
*/
|
|
78
|
+
readonly closeOnBackdropClick: WritableSignal<boolean>;
|
|
79
|
+
/**
|
|
80
|
+
* Whether the sidenav is disposed.
|
|
81
|
+
*/
|
|
82
|
+
get isDisposed(): boolean;
|
|
46
83
|
constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions);
|
|
84
|
+
/**
|
|
85
|
+
* Close and dispose the sidenav.
|
|
86
|
+
* @param result Optional result to emit when the sidenav is closed.
|
|
87
|
+
*/
|
|
88
|
+
dispose(result?: any): void;
|
|
47
89
|
}
|
|
48
90
|
|
|
49
91
|
/**
|
|
50
92
|
* Layout1 component that provides a layout with sidenavs.
|
|
51
93
|
*/
|
|
52
94
|
declare class Layout1Component {
|
|
95
|
+
private _zIndexCounter;
|
|
53
96
|
private readonly _manager;
|
|
54
97
|
protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;
|
|
55
|
-
protected readonly _secondarySidenavs:
|
|
98
|
+
protected readonly _secondarySidenavs: _angular_core.WritableSignal<Layout1SecondarySidenav[]>;
|
|
56
99
|
protected readonly _openSecondarySidenavs: Set<Layout1SecondarySidenav>;
|
|
57
100
|
private readonly _changeDetectorRef;
|
|
101
|
+
/**
|
|
102
|
+
* Default position for secondary sidenavs.
|
|
103
|
+
*/
|
|
104
|
+
defaultSidenavPosition: _angular_core.InputSignal<SidenavPosition>;
|
|
105
|
+
/**
|
|
106
|
+
* Default size for secondary sidenavs.
|
|
107
|
+
*/
|
|
108
|
+
defaultSidenavSize: _angular_core.InputSignal<SidenavSize>;
|
|
109
|
+
/**
|
|
110
|
+
* Default mode for secondary sidenavs.
|
|
111
|
+
*/
|
|
112
|
+
defaultSidenavMode: _angular_core.InputSignal<SidenavMode>;
|
|
113
|
+
/**
|
|
114
|
+
* Default hasBackdrop value for secondary sidenavs.
|
|
115
|
+
*/
|
|
116
|
+
defaultSidenavHasBackdrop: _angular_core.InputSignal<boolean>;
|
|
117
|
+
/**
|
|
118
|
+
* Default closeOnBackdropClick value for secondary sidenavs.
|
|
119
|
+
*/
|
|
120
|
+
defaultSidenavCloseOnBackdropClick: _angular_core.InputSignal<boolean>;
|
|
58
121
|
constructor();
|
|
59
122
|
/**
|
|
60
123
|
* Push a secondary sidenav.
|
|
61
|
-
* @param sidenav
|
|
124
|
+
* @param template The template for the secondary sidenav.
|
|
125
|
+
* @param options Options for the secondary sidenav.
|
|
126
|
+
* @returns The reference to the pushed secondary sidenav.
|
|
62
127
|
*/
|
|
63
|
-
pushSidenav(
|
|
128
|
+
pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav;
|
|
64
129
|
/**
|
|
65
|
-
*
|
|
66
|
-
|
|
67
|
-
|
|
130
|
+
* Close the last secondary sidenav and dispose it.
|
|
131
|
+
* @param result The result to pass when closing the sidenav.
|
|
132
|
+
* @return The reference to the closed secondary sidenav.
|
|
133
|
+
*/
|
|
134
|
+
popSidenav(result?: any): Layout1SecondarySidenav | undefined;
|
|
68
135
|
/**
|
|
69
|
-
*
|
|
70
|
-
* @param sidenav
|
|
136
|
+
* Get the list of secondary sidenavs.
|
|
71
137
|
*/
|
|
72
|
-
|
|
138
|
+
get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav>;
|
|
73
139
|
protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav): void;
|
|
74
|
-
static ɵfac:
|
|
75
|
-
static ɵcmp:
|
|
140
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout1Component, never>;
|
|
141
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Layout1Component, "ng0-layout1", never, { "defaultSidenavPosition": { "alias": "defaultSidenavPosition"; "required": false; "isSignal": true; }; "defaultSidenavSize": { "alias": "defaultSidenavSize"; "required": false; "isSignal": true; }; "defaultSidenavMode": { "alias": "defaultSidenavMode"; "required": false; "isSignal": true; }; "defaultSidenavHasBackdrop": { "alias": "defaultSidenavHasBackdrop"; "required": false; "isSignal": true; }; "defaultSidenavCloseOnBackdropClick": { "alias": "defaultSidenavCloseOnBackdropClick"; "required": false; "isSignal": true; }; }, {}, ["_sidenavs"], ["ng0-layout1-header", "ng0-layout1-content"], true, never>;
|
|
76
142
|
}
|
|
77
143
|
|
|
78
144
|
/**
|
|
79
145
|
* Layout1 header component.
|
|
80
146
|
*/
|
|
81
147
|
declare class Layout1HeaderComponent {
|
|
82
|
-
static ɵfac:
|
|
83
|
-
static ɵcmp:
|
|
148
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout1HeaderComponent, never>;
|
|
149
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Layout1HeaderComponent, "ng0-layout1-header", never, {}, {}, never, ["*"], true, never>;
|
|
84
150
|
}
|
|
85
151
|
|
|
86
152
|
/**
|
|
87
153
|
* Layout1 content component.
|
|
88
154
|
*/
|
|
89
155
|
declare class Layout1ContentComponent {
|
|
90
|
-
static ɵfac:
|
|
91
|
-
static ɵcmp:
|
|
156
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout1ContentComponent, never>;
|
|
157
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Layout1ContentComponent, "ng0-layout1-content", never, {}, {}, never, ["*"], true, never>;
|
|
92
158
|
}
|
|
93
159
|
|
|
94
160
|
/**
|
|
95
161
|
* Layout1Module
|
|
96
162
|
*/
|
|
97
163
|
declare class Layout1Module {
|
|
98
|
-
static ɵfac:
|
|
99
|
-
static ɵmod:
|
|
100
|
-
static ɵinj:
|
|
164
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout1Module, never>;
|
|
165
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<Layout1Module, never, [typeof Layout1Component, typeof Layout1SidenavDirective, typeof Layout1HeaderComponent, typeof Layout1ContentComponent], [typeof Layout1Component, typeof Layout1SidenavDirective, typeof Layout1HeaderComponent, typeof Layout1ContentComponent]>;
|
|
166
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<Layout1Module>;
|
|
101
167
|
}
|
|
102
168
|
|
|
103
169
|
/**
|
|
104
170
|
* Service to manage the configuration and state of Layout1Component.
|
|
105
171
|
*/
|
|
106
172
|
declare class Layout1Manager {
|
|
107
|
-
private _zIndexCounter;
|
|
108
|
-
private _sidenavPushSubject;
|
|
109
|
-
private _sidenavPopSubject;
|
|
110
|
-
private _sidenavRemoveSubject;
|
|
111
173
|
/**
|
|
112
|
-
*
|
|
174
|
+
* The Layout1Component instance associated with this manager.
|
|
113
175
|
*/
|
|
114
|
-
|
|
176
|
+
component: Layout1Component;
|
|
115
177
|
/**
|
|
116
|
-
*
|
|
178
|
+
* Push a secondary sidenav.
|
|
179
|
+
* @param content The template for the secondary sidenav.
|
|
180
|
+
* @param options Options for the secondary sidenav.
|
|
181
|
+
* @returns The reference to the pushed secondary sidenav.
|
|
117
182
|
*/
|
|
118
|
-
|
|
183
|
+
pushSidenav(content: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav;
|
|
119
184
|
/**
|
|
120
|
-
*
|
|
185
|
+
* Close the last secondary sidenav and dispose it.
|
|
121
186
|
*/
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Push a secondary sidenav.
|
|
125
|
-
* @param template
|
|
126
|
-
* @param options
|
|
127
|
-
* @returns
|
|
128
|
-
*/
|
|
129
|
-
pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav;
|
|
187
|
+
popSidenav(result?: any): Layout1SecondarySidenav | undefined;
|
|
130
188
|
/**
|
|
131
|
-
*
|
|
189
|
+
* Get the list of secondary sidenavs.
|
|
132
190
|
*/
|
|
133
|
-
|
|
191
|
+
get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav>;
|
|
134
192
|
/**
|
|
135
|
-
*
|
|
136
|
-
* @param sidenav
|
|
193
|
+
* Get the last secondary sidenav.
|
|
137
194
|
*/
|
|
138
|
-
|
|
139
|
-
static ɵfac:
|
|
140
|
-
static ɵprov:
|
|
195
|
+
get last(): Layout1SecondarySidenav | undefined;
|
|
196
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout1Manager, never>;
|
|
197
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<Layout1Manager>;
|
|
141
198
|
}
|
|
142
199
|
|
|
143
200
|
export { Layout1Component, Layout1ContentComponent, Layout1HeaderComponent, Layout1Manager, Layout1Module, Layout1SecondarySidenav, Layout1SidenavDirective };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bootkit/ng0",
|
|
3
|
-
"version": "0.0.0-alpha.
|
|
3
|
+
"version": "0.0.0-alpha.37",
|
|
4
4
|
"description": "Angular+Bootstrap Component Library",
|
|
5
5
|
"homepage": "https://bootkitlib.github.io/",
|
|
6
6
|
"author": "BootKit",
|
|
@@ -35,22 +35,22 @@
|
|
|
35
35
|
"types": "./index.d.ts",
|
|
36
36
|
"default": "./fesm2022/bootkit-ng0.mjs"
|
|
37
37
|
},
|
|
38
|
-
"./data": {
|
|
39
|
-
"types": "./data/index.d.ts",
|
|
40
|
-
"default": "./fesm2022/bootkit-ng0-data.mjs"
|
|
41
|
-
},
|
|
42
38
|
"./common": {
|
|
43
39
|
"types": "./common/index.d.ts",
|
|
44
40
|
"default": "./fesm2022/bootkit-ng0-common.mjs"
|
|
45
41
|
},
|
|
46
|
-
"./file": {
|
|
47
|
-
"types": "./file/index.d.ts",
|
|
48
|
-
"default": "./fesm2022/bootkit-ng0-file.mjs"
|
|
49
|
-
},
|
|
50
42
|
"./date": {
|
|
51
43
|
"types": "./date/index.d.ts",
|
|
52
44
|
"default": "./fesm2022/bootkit-ng0-date.mjs"
|
|
53
45
|
},
|
|
46
|
+
"./data": {
|
|
47
|
+
"types": "./data/index.d.ts",
|
|
48
|
+
"default": "./fesm2022/bootkit-ng0-data.mjs"
|
|
49
|
+
},
|
|
50
|
+
"./file": {
|
|
51
|
+
"types": "./file/index.d.ts",
|
|
52
|
+
"default": "./fesm2022/bootkit-ng0-file.mjs"
|
|
53
|
+
},
|
|
54
54
|
"./form": {
|
|
55
55
|
"types": "./form/index.d.ts",
|
|
56
56
|
"default": "./fesm2022/bootkit-ng0-form.mjs"
|
|
@@ -83,14 +83,14 @@
|
|
|
83
83
|
"types": "./components/backdrop/index.d.ts",
|
|
84
84
|
"default": "./fesm2022/bootkit-ng0-components-backdrop.mjs"
|
|
85
85
|
},
|
|
86
|
-
"./components/button": {
|
|
87
|
-
"types": "./components/button/index.d.ts",
|
|
88
|
-
"default": "./fesm2022/bootkit-ng0-components-button.mjs"
|
|
89
|
-
},
|
|
90
86
|
"./components/card": {
|
|
91
87
|
"types": "./components/card/index.d.ts",
|
|
92
88
|
"default": "./fesm2022/bootkit-ng0-components-card.mjs"
|
|
93
89
|
},
|
|
90
|
+
"./components/button": {
|
|
91
|
+
"types": "./components/button/index.d.ts",
|
|
92
|
+
"default": "./fesm2022/bootkit-ng0-components-button.mjs"
|
|
93
|
+
},
|
|
94
94
|
"./components/code": {
|
|
95
95
|
"types": "./components/code/index.d.ts",
|
|
96
96
|
"default": "./fesm2022/bootkit-ng0-components-code.mjs"
|