@bootkit/ng0 0.0.0-alpha.42 → 0.0.0-alpha.43
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/common/index.d.ts +30 -6
- package/components/accordion/index.d.ts +8 -8
- package/components/button/index.d.ts +10 -12
- package/components/card/index.d.ts +1 -5
- package/components/collapse/index.d.ts +4 -40
- package/components/confirmation/index.d.ts +14 -16
- package/components/dropdown/index.d.ts +3 -3
- package/components/list/index.d.ts +5 -5
- package/components/modal/index.d.ts +14 -10
- package/components/nav/index.d.ts +13 -15
- package/components/pagination/index.d.ts +7 -7
- package/components/popover/index.d.ts +6 -6
- package/components/sidenav/index.d.ts +17 -21
- package/components/stepper/index.d.ts +3 -4
- package/components/table/index.d.ts +29 -31
- package/components/toast/index.d.ts +14 -8
- package/components/tooltip/index.d.ts +18 -13
- package/components/vertical-menu/index.d.ts +78 -37
- package/fesm2022/bootkit-ng0-components-accordion.mjs +5 -5
- package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-button.mjs +8 -12
- package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-card.mjs +4 -10
- package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-collapse.mjs +15 -123
- package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-confirmation.mjs +15 -25
- package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-dropdown.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-modal.mjs +13 -11
- package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-nav.mjs +7 -14
- package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-sidenav.mjs +50 -43
- package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-stepper.mjs +6 -33
- package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-table.mjs +23 -29
- package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-toast.mjs +59 -81
- package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-tooltip.mjs +54 -60
- package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +168 -97
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-http.mjs +22 -30
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs +1 -1
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-security.mjs +46 -30
- package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-utils.mjs +49 -2
- package/fesm2022/bootkit-ng0-utils.mjs.map +1 -1
- package/http/index.d.ts +10 -10
- package/package.json +5 -9
- package/security/index.d.ts +17 -11
- package/utils/index.d.ts +22 -1
- package/components/backdrop/index.d.ts +0 -12
- package/fesm2022/bootkit-ng0-components-backdrop.mjs +0 -46
- package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +0 -1
|
@@ -1,136 +1,207 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Component, inject, signal, Injectable, input, EventEmitter, Output, ContentChildren, ViewEncapsulation, TemplateRef, Directive, ContentChild, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import
|
|
5
|
+
import * as i2 from '@angular/router';
|
|
6
|
+
import { RouterModule } from '@angular/router';
|
|
7
|
+
import { CollapseComponent } from '@bootkit/ng0/components/collapse';
|
|
8
|
+
import { UserStore } from '@bootkit/ng0/security';
|
|
6
9
|
|
|
7
|
-
class
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
this.templateRef = templateRef;
|
|
11
|
-
}
|
|
12
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuArrowDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.11", type: VerticalMenuArrowDirective, isStandalone: true, selector: "[ng0VerticalMenuArrow], [ng0VmenuArrow]", exportAs: ["ng0VerticalMenuArrow"], ngImport: i0 });
|
|
10
|
+
class VerticalMenuDividerComponent {
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: VerticalMenuDividerComponent, isStandalone: true, selector: "ng0-vmenu-divider", ngImport: i0, template: '', isInline: true, styles: [":host{display:block;height:1px;background-color:var(--bs-border-color);margin:1rem 0}\n"] });
|
|
14
13
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type:
|
|
16
|
-
type:
|
|
17
|
-
args: [{
|
|
18
|
-
|
|
19
|
-
exportAs: 'ng0VerticalMenuArrow',
|
|
20
|
-
standalone: true,
|
|
21
|
-
}]
|
|
22
|
-
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuDividerComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'ng0-vmenu-divider', template: '', standalone: true, styles: [":host{display:block;height:1px;background-color:var(--bs-border-color);margin:1rem 0}\n"] }]
|
|
17
|
+
}] });
|
|
23
18
|
|
|
24
|
-
class
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
*/
|
|
28
|
-
expandItemsByClick = input(true, ...(ngDevMode ? [{ debugName: "expandItemsByClick" }] : []));
|
|
29
|
-
collapseTimings = input('0.15s', ...(ngDevMode ? [{ debugName: "collapseTimings" }] : []));
|
|
30
|
-
arrowDirective;
|
|
31
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.11", type: VerticalMenuComponent, isStandalone: true, selector: "ng0-vertical-menu, ng0-vmenu", inputs: { expandItemsByClick: { classPropertyName: "expandItemsByClick", publicName: "expandItemsByClick", isSignal: true, isRequired: false, transformFunction: null }, collapseTimings: { classPropertyName: "collapseTimings", publicName: "collapseTimings", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "arrowDirective", first: true, predicate: VerticalMenuArrowDirective }], ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{display:block}\n"] });
|
|
19
|
+
class VerticalMenuHeaderComponent {
|
|
20
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: VerticalMenuHeaderComponent, isStandalone: true, selector: "ng0-vmenu-header", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] });
|
|
33
22
|
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type:
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuHeaderComponent, decorators: [{
|
|
35
24
|
type: Component,
|
|
36
|
-
args: [{ selector: 'ng0-
|
|
37
|
-
}]
|
|
38
|
-
type: ContentChild,
|
|
39
|
-
args: [VerticalMenuArrowDirective, { descendants: false }]
|
|
40
|
-
}] } });
|
|
25
|
+
args: [{ selector: 'ng0-vmenu-header', standalone: true, template: `<ng-content></ng-content>`, styles: [":host{display:block}\n"] }]
|
|
26
|
+
}] });
|
|
41
27
|
|
|
42
|
-
class
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.
|
|
28
|
+
class VerticalMenuItemState {
|
|
29
|
+
parent = inject(VerticalMenuItemState, { optional: true, skipSelf: true });
|
|
30
|
+
routeActivated = signal(false, ...(ngDevMode ? [{ debugName: "routeActivated" }] : []));
|
|
31
|
+
hasChildren = signal(false, ...(ngDevMode ? [{ debugName: "hasChildren" }] : []));
|
|
32
|
+
childStates = signal([], ...(ngDevMode ? [{ debugName: "childStates" }] : []));
|
|
33
|
+
expanded = signal(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
|
|
34
|
+
hasActiveRoute() {
|
|
35
|
+
return this.routeActivated() || this.childStates().some(x => x.hasActiveRoute());
|
|
50
36
|
}
|
|
51
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type:
|
|
52
|
-
static
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemState });
|
|
53
39
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type:
|
|
55
|
-
type:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemState, decorators: [{
|
|
41
|
+
type: Injectable
|
|
42
|
+
}] });
|
|
43
|
+
|
|
44
|
+
class VerticalMenuState {
|
|
45
|
+
itemTemplate = signal(undefined, ...(ngDevMode ? [{ debugName: "itemTemplate" }] : []));
|
|
46
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuState, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
47
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuState });
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuState, decorators: [{
|
|
50
|
+
type: Injectable
|
|
51
|
+
}] });
|
|
63
52
|
|
|
64
53
|
class VerticalMenuItemComponent {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
54
|
+
_menuItemState = inject(VerticalMenuItemState);
|
|
55
|
+
_menuState = inject(VerticalMenuState);
|
|
56
|
+
_children;
|
|
57
|
+
text = input(...(ngDevMode ? [undefined, { debugName: "text" }] : []));
|
|
58
|
+
tag = input(...(ngDevMode ? [undefined, { debugName: "tag" }] : []));
|
|
59
|
+
tagCssClass = input(...(ngDevMode ? [undefined, { debugName: "tagCssClass" }] : []));
|
|
60
|
+
icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
|
|
61
|
+
/**
|
|
62
|
+
* Router link
|
|
63
|
+
*/
|
|
64
|
+
link = input(...(ngDevMode ? [undefined, { debugName: "link" }] : []));
|
|
65
|
+
routerLinkActiveOptions = input({ exact: true }, ...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : []));
|
|
66
|
+
href = input(...(ngDevMode ? [undefined, { debugName: "href" }] : []));
|
|
67
|
+
target = input('_blank', ...(ngDevMode ? [{ debugName: "target" }] : []));
|
|
68
|
+
itemClick = new EventEmitter();
|
|
69
|
+
ngOnInit() {
|
|
70
|
+
if (this._menuItemState.parent) {
|
|
71
|
+
this._menuItemState.parent.childStates().push(this._menuItemState);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
hasActiveRoute() {
|
|
75
|
+
return this._menuItemState.hasActiveRoute();
|
|
76
|
+
}
|
|
77
|
+
hasChildren() {
|
|
78
|
+
return this._menuItemState.hasChildren();
|
|
79
|
+
}
|
|
80
|
+
isExpanded() {
|
|
81
|
+
return this._menuItemState.expanded();
|
|
70
82
|
}
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
_onContentClick(e) {
|
|
84
|
+
if (this.hasChildren()) {
|
|
85
|
+
this._menuItemState.expanded.update(x => !x);
|
|
86
|
+
}
|
|
87
|
+
this.itemClick.emit(e);
|
|
73
88
|
}
|
|
74
|
-
|
|
75
|
-
|
|
89
|
+
_onRouteChange(isActive) {
|
|
90
|
+
this._menuItemState.routeActivated.set(isActive);
|
|
76
91
|
}
|
|
77
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemComponent, deps: [
|
|
78
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
92
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
93
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: VerticalMenuItemComponent, isStandalone: true, selector: "ng0-vmenu-item", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, tag: { classPropertyName: "tag", publicName: "tag", isSignal: true, isRequired: false, transformFunction: null }, tagCssClass: { classPropertyName: "tagCssClass", publicName: "tagCssClass", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.ng0-has-children": "hasChildren()", "class.ng0-expanded": "isExpanded()", "class.ng0-has-active-route": "hasActiveRoute()" } }, providers: [VerticalMenuItemState], queries: [{ propertyName: "_children", predicate: VerticalMenuItemComponent }], ngImport: i0, template: "@let itemTemplate = _menuState.itemTemplate();\n\n<div class=\"ng0-vmenu-item-content\" (click)=\"_onContentClick($event)\">\n @if(hasChildren()) {\n <div class=\"ng0-vmenu-item-expander\"\n [class.ng0-expanded]=\"isExpanded()\"\n >\n @if(itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: this }\"></ng-container>\n }@else {\n @if(icon()) {\n <i class=\"ng0-vmenu-item-icon\" [ngClass]=\"icon()\"></i>\n }\n\n <span class=\"ng0-vmenu-item-text\">\n {{text()}}\n </span>\n\n @if(tag()) {\n <span class=\"ng0-vmenu-item-tag\" [ngClass]=\"tagCssClass()\">{{tag()}}</span>\n }\n\n <div class=\"ng0-vmenu-item-end\">\n <div class=\"ng0-vmenu-item-expand-icon\">\n \u276F\n </div>\n </div>\n\n }\n\n </div>\n }@else {\n <a class=\"ng0-vmenu-item-link\"\n [routerLink]=\"link()\"\n [attr.href]=\"href()\"\n [attr.target]=\"target()\"\n routerLinkActive=\"ng0-active\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n (isActiveChange)=\"_onRouteChange($event)\">\n\n @if(itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: this }\"></ng-container>\n }@else {\n @if(icon()) {\n <i class=\"ng0-vmenu-item-icon\" [ngClass]=\"icon()\"></i>\n }\n\n {{text()}}\n\n @if(tag()) {\n <span class=\"ng0-vmenu-item-tag\" [ngClass]=\"tagCssClass()\">{{tag()}}</span>\n }\n }\n </a>\n }\n</div>\n\n<ng-content></ng-content>", styles: ["ng0-vmenu-item{display:block}.ng0-vmenu-item-content{border-radius:.3rem;transition:background-color .2s}.ng0-vmenu-item-content:hover:not(:has(a.ng0-active)){background-color:var(--bs-light)}.ng0-vmenu-item-expander,.ng0-vmenu-item-link{padding:.2rem .8rem;display:flex;align-items:baseline;cursor:pointer;color:inherit}.ng0-vmenu-item-expander.ng0-expanded .ng0-vmenu-item-expand-icon{transform:rotate(90deg)}.ng0-vmenu-item-link{text-decoration:none}.ng0-vmenu-item-link.active{color:var(--bs-primary)}.ng0-vmenu-item-text{flex-grow:1}.ng0-vmenu-item-expand-icon{transition:transform var(--ng0-collapse-transition-duration)}ng0-vmenu-item.ng0-active .ng0-vmenu-item-content,ng0-vmenu-item.ng0-has-active-route .ng0-vmenu-item-content{font-weight:500}.ng0-vmenu-item-link.ng0-active{color:var(--bs-primary)}.ng0-vmenu-item-end{margin-inline-start:auto}.ng0-vmenu-item-tag{margin-inline-start:1rem;padding:0 .4rem;border-radius:.4rem;font-size:small;font-weight:400;color:var(--bs-light);background-color:var(--bs-secondary)}\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: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
79
94
|
}
|
|
80
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemComponent, decorators: [{
|
|
81
96
|
type: Component,
|
|
82
|
-
args: [{ selector: 'ng0-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}],
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
args: [{ selector: 'ng0-vmenu-item', encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, RouterModule], providers: [VerticalMenuItemState], host: {
|
|
98
|
+
'[class.ng0-has-children]': 'hasChildren()',
|
|
99
|
+
'[class.ng0-expanded]': 'isExpanded()',
|
|
100
|
+
'[class.ng0-has-active-route]': 'hasActiveRoute()'
|
|
101
|
+
}, template: "@let itemTemplate = _menuState.itemTemplate();\n\n<div class=\"ng0-vmenu-item-content\" (click)=\"_onContentClick($event)\">\n @if(hasChildren()) {\n <div class=\"ng0-vmenu-item-expander\"\n [class.ng0-expanded]=\"isExpanded()\"\n >\n @if(itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: this }\"></ng-container>\n }@else {\n @if(icon()) {\n <i class=\"ng0-vmenu-item-icon\" [ngClass]=\"icon()\"></i>\n }\n\n <span class=\"ng0-vmenu-item-text\">\n {{text()}}\n </span>\n\n @if(tag()) {\n <span class=\"ng0-vmenu-item-tag\" [ngClass]=\"tagCssClass()\">{{tag()}}</span>\n }\n\n <div class=\"ng0-vmenu-item-end\">\n <div class=\"ng0-vmenu-item-expand-icon\">\n \u276F\n </div>\n </div>\n\n }\n\n </div>\n }@else {\n <a class=\"ng0-vmenu-item-link\"\n [routerLink]=\"link()\"\n [attr.href]=\"href()\"\n [attr.target]=\"target()\"\n routerLinkActive=\"ng0-active\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n (isActiveChange)=\"_onRouteChange($event)\">\n\n @if(itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: this }\"></ng-container>\n }@else {\n @if(icon()) {\n <i class=\"ng0-vmenu-item-icon\" [ngClass]=\"icon()\"></i>\n }\n\n {{text()}}\n\n @if(tag()) {\n <span class=\"ng0-vmenu-item-tag\" [ngClass]=\"tagCssClass()\">{{tag()}}</span>\n }\n }\n </a>\n }\n</div>\n\n<ng-content></ng-content>", styles: ["ng0-vmenu-item{display:block}.ng0-vmenu-item-content{border-radius:.3rem;transition:background-color .2s}.ng0-vmenu-item-content:hover:not(:has(a.ng0-active)){background-color:var(--bs-light)}.ng0-vmenu-item-expander,.ng0-vmenu-item-link{padding:.2rem .8rem;display:flex;align-items:baseline;cursor:pointer;color:inherit}.ng0-vmenu-item-expander.ng0-expanded .ng0-vmenu-item-expand-icon{transform:rotate(90deg)}.ng0-vmenu-item-link{text-decoration:none}.ng0-vmenu-item-link.active{color:var(--bs-primary)}.ng0-vmenu-item-text{flex-grow:1}.ng0-vmenu-item-expand-icon{transition:transform var(--ng0-collapse-transition-duration)}ng0-vmenu-item.ng0-active .ng0-vmenu-item-content,ng0-vmenu-item.ng0-has-active-route .ng0-vmenu-item-content{font-weight:500}.ng0-vmenu-item-link.ng0-active{color:var(--bs-primary)}.ng0-vmenu-item-end{margin-inline-start:auto}.ng0-vmenu-item-tag{margin-inline-start:1rem;padding:0 .4rem;border-radius:.4rem;font-size:small;font-weight:400;color:var(--bs-light);background-color:var(--bs-secondary)}\n"] }]
|
|
102
|
+
}], propDecorators: { _children: [{
|
|
103
|
+
type: ContentChildren,
|
|
104
|
+
args: [VerticalMenuItemComponent]
|
|
105
|
+
}], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], tag: [{ type: i0.Input, args: [{ isSignal: true, alias: "tag", required: false }] }], tagCssClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "tagCssClass", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], itemClick: [{
|
|
106
|
+
type: Output
|
|
92
107
|
}] } });
|
|
93
108
|
|
|
94
|
-
class
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (this._menu.expandItemsByClick() && this.menuItem.hasChildren) {
|
|
99
|
-
this.menuItem.children?.expanded.update(x => !x);
|
|
100
|
-
}
|
|
109
|
+
class VerticalMenuItemChildrenComponent {
|
|
110
|
+
_menuItemState = inject(VerticalMenuItemState);
|
|
111
|
+
ngOnInit() {
|
|
112
|
+
this._menuItemState.hasChildren.set(true);
|
|
101
113
|
}
|
|
102
|
-
|
|
103
|
-
|
|
114
|
+
isExpanded() {
|
|
115
|
+
return this._menuItemState.expanded();
|
|
116
|
+
}
|
|
117
|
+
expand() {
|
|
118
|
+
return this._menuItemState.expanded.set(true);
|
|
119
|
+
}
|
|
120
|
+
collapse() {
|
|
121
|
+
return this._menuItemState.expanded.set(false);
|
|
122
|
+
}
|
|
123
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemChildrenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: VerticalMenuItemChildrenComponent, isStandalone: true, selector: "ng0-vmenu-item-children", host: { properties: { "class.ng0-expanded": "isExpanded()" } }, exportAs: ["ng0VmenuItemChildren"], ngImport: i0, template: "<ng0-collapse [collapsed]=\"!isExpanded()\">\n <ng-content></ng-content>\n</ng0-collapse>\n\n<style>\n :host {\n display: block;\n padding-inline-start: .5rem;\n }\n</style>", styles: [":host{display:block;padding-inline-start:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: CollapseComponent, selector: "ng0-collapse", inputs: ["collapsed"] }] });
|
|
104
125
|
}
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type:
|
|
126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemChildrenComponent, decorators: [{
|
|
106
127
|
type: Component,
|
|
107
|
-
args: [{ selector: 'ng0-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
128
|
+
args: [{ selector: 'ng0-vmenu-item-children', exportAs: 'ng0VmenuItemChildren', standalone: true, imports: [CommonModule, CollapseComponent], host: {
|
|
129
|
+
'[class.ng0-expanded]': 'isExpanded()'
|
|
130
|
+
}, template: "<ng0-collapse [collapsed]=\"!isExpanded()\">\n <ng-content></ng-content>\n</ng0-collapse>\n\n<style>\n :host {\n display: block;\n padding-inline-start: .5rem;\n }\n</style>" }]
|
|
131
|
+
}] });
|
|
132
|
+
|
|
133
|
+
class VerticalMenuItemTemplateDirective {
|
|
134
|
+
templateRef = inject(TemplateRef);
|
|
135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
136
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.11", type: VerticalMenuItemTemplateDirective, isStandalone: true, selector: "[ng0VerticalMenuItemTemplate]", exportAs: ["ng0VerticalMenuItemTemplate"], ngImport: i0 });
|
|
137
|
+
}
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemTemplateDirective, decorators: [{
|
|
139
|
+
type: Directive,
|
|
140
|
+
args: [{
|
|
141
|
+
selector: '[ng0VerticalMenuItemTemplate]',
|
|
142
|
+
exportAs: 'ng0VerticalMenuItemTemplate',
|
|
143
|
+
standalone: true
|
|
144
|
+
}]
|
|
145
|
+
}] });
|
|
146
|
+
|
|
147
|
+
class VerticalMenuComponent {
|
|
148
|
+
_userStore = inject(UserStore);
|
|
149
|
+
_state = inject(VerticalMenuState);
|
|
150
|
+
_itemTemplate;
|
|
151
|
+
/**
|
|
152
|
+
* Menu items
|
|
153
|
+
*/
|
|
154
|
+
items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
155
|
+
ngAfterContentInit() {
|
|
156
|
+
this._state.itemTemplate.set(this._itemTemplate?.templateRef);
|
|
157
|
+
}
|
|
158
|
+
_onActiveChange(item, isActive) {
|
|
159
|
+
// item.active = isActive;
|
|
160
|
+
// if (item.parent)
|
|
161
|
+
// item.parent.active = isActive;
|
|
162
|
+
}
|
|
163
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: VerticalMenuComponent, isStandalone: true, selector: "ng0-vmenu, ng0-vertical-menu", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, providers: [VerticalMenuState], queries: [{ propertyName: "_itemTemplate", first: true, predicate: VerticalMenuItemTemplateDirective, descendants: true }], ngImport: i0, template: "@let user = _userStore.user();\n\n<ng-content></ng-content>\n\n<ng-container *ngTemplateOutlet=\"menuItemTemplate; context: { $implicit: items()}\"></ng-container>\n\n<ng-template #menuItemTemplate let-items>\n @for (item of items; track $index) {\n @let itemType = item.type || 'node';\n\n @if ((!item.claim) || (user && user.hasClaim(item.claim))) {\n\n @switch (itemType) {\n @case('divider') {\n <ng0-vmenu-divider></ng0-vmenu-divider>\n }\n @case('header') {\n <ng0-vmenu-header>{{item.text}}</ng0-vmenu-header>\n }\n @case('node') {\n <ng0-vmenu-item\n [text]=\"item.text\"\n [tag]=\"item.tag\"\n [tagCssClass]=\"item.tagCssClass\"\n [link]=\"item.routerLink\"\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions ?? {exact: true}\"\n [href]=\"item.href\"\n [icon]=\"item.icon\"\n [target]=\"item.target\"\n [ngClass]=\"item.cssClass\">\n @if(item.children?.length) {\n <ng0-vmenu-item-children>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate; context: { $implicit: item.children }\">\n </ng-container>\n </ng0-vmenu-item-children>\n }\n </ng0-vmenu-item>\n }\n }\n }\n }\n</ng-template>", styles: [":host{display:block}\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: RouterModule }, { kind: "component", type: VerticalMenuItemComponent, selector: "ng0-vmenu-item", inputs: ["text", "tag", "tagCssClass", "icon", "link", "routerLinkActiveOptions", "href", "target"], outputs: ["itemClick"] }, { kind: "component", type: VerticalMenuDividerComponent, selector: "ng0-vmenu-divider" }, { kind: "component", type: VerticalMenuHeaderComponent, selector: "ng0-vmenu-header" }, { kind: "component", type: VerticalMenuItemChildrenComponent, selector: "ng0-vmenu-item-children", exportAs: ["ng0VmenuItemChildren"] }] });
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuComponent, decorators: [{
|
|
167
|
+
type: Component,
|
|
168
|
+
args: [{ selector: 'ng0-vmenu, ng0-vertical-menu', standalone: true, providers: [VerticalMenuState], imports: [
|
|
169
|
+
CommonModule,
|
|
170
|
+
RouterModule,
|
|
171
|
+
VerticalMenuItemComponent,
|
|
172
|
+
VerticalMenuDividerComponent,
|
|
173
|
+
VerticalMenuHeaderComponent,
|
|
174
|
+
VerticalMenuItemChildrenComponent
|
|
175
|
+
], template: "@let user = _userStore.user();\n\n<ng-content></ng-content>\n\n<ng-container *ngTemplateOutlet=\"menuItemTemplate; context: { $implicit: items()}\"></ng-container>\n\n<ng-template #menuItemTemplate let-items>\n @for (item of items; track $index) {\n @let itemType = item.type || 'node';\n\n @if ((!item.claim) || (user && user.hasClaim(item.claim))) {\n\n @switch (itemType) {\n @case('divider') {\n <ng0-vmenu-divider></ng0-vmenu-divider>\n }\n @case('header') {\n <ng0-vmenu-header>{{item.text}}</ng0-vmenu-header>\n }\n @case('node') {\n <ng0-vmenu-item\n [text]=\"item.text\"\n [tag]=\"item.tag\"\n [tagCssClass]=\"item.tagCssClass\"\n [link]=\"item.routerLink\"\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions ?? {exact: true}\"\n [href]=\"item.href\"\n [icon]=\"item.icon\"\n [target]=\"item.target\"\n [ngClass]=\"item.cssClass\">\n @if(item.children?.length) {\n <ng0-vmenu-item-children>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate; context: { $implicit: item.children }\">\n </ng-container>\n </ng0-vmenu-item-children>\n }\n </ng0-vmenu-item>\n }\n }\n }\n }\n</ng-template>", styles: [":host{display:block}\n"] }]
|
|
176
|
+
}], propDecorators: { _itemTemplate: [{
|
|
177
|
+
type: ContentChild,
|
|
178
|
+
args: [VerticalMenuItemTemplateDirective]
|
|
179
|
+
}], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }] } });
|
|
112
180
|
|
|
113
181
|
const items = [
|
|
114
182
|
VerticalMenuComponent,
|
|
115
183
|
VerticalMenuItemComponent,
|
|
116
184
|
VerticalMenuItemChildrenComponent,
|
|
117
|
-
|
|
118
|
-
|
|
185
|
+
VerticalMenuDividerComponent,
|
|
186
|
+
VerticalMenuHeaderComponent,
|
|
187
|
+
VerticalMenuItemTemplateDirective
|
|
119
188
|
];
|
|
120
189
|
class VerticalMenuModule {
|
|
121
190
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
122
191
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuModule, imports: [VerticalMenuComponent,
|
|
123
192
|
VerticalMenuItemComponent,
|
|
124
193
|
VerticalMenuItemChildrenComponent,
|
|
125
|
-
|
|
126
|
-
|
|
194
|
+
VerticalMenuDividerComponent,
|
|
195
|
+
VerticalMenuHeaderComponent,
|
|
196
|
+
VerticalMenuItemTemplateDirective], exports: [VerticalMenuComponent,
|
|
127
197
|
VerticalMenuItemComponent,
|
|
128
198
|
VerticalMenuItemChildrenComponent,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
199
|
+
VerticalMenuDividerComponent,
|
|
200
|
+
VerticalMenuHeaderComponent,
|
|
201
|
+
VerticalMenuItemTemplateDirective] });
|
|
202
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuModule, imports: [VerticalMenuComponent,
|
|
203
|
+
VerticalMenuItemComponent,
|
|
204
|
+
VerticalMenuItemChildrenComponent] });
|
|
134
205
|
}
|
|
135
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuModule, decorators: [{
|
|
136
207
|
type: NgModule,
|
|
@@ -144,5 +215,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
144
215
|
* Generated bundle index. Do not edit.
|
|
145
216
|
*/
|
|
146
217
|
|
|
147
|
-
export {
|
|
218
|
+
export { VerticalMenuComponent, VerticalMenuDividerComponent, VerticalMenuHeaderComponent, VerticalMenuItemChildrenComponent, VerticalMenuItemComponent, VerticalMenuItemTemplateDirective, VerticalMenuModule };
|
|
148
219
|
//# sourceMappingURL=bootkit-ng0-components-vertical-menu.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-components-vertical-menu.mjs","sources":["../../../projects/ng0/components/vertical-menu/item-arrow.directive.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.html","../../../projects/ng0/components/vertical-menu/item-children.component.ts","../../../projects/ng0/components/vertical-menu/item-children.component.html","../../../projects/ng0/components/vertical-menu/item.component.ts","../../../projects/ng0/components/vertical-menu/item.component.html","../../../projects/ng0/components/vertical-menu/item-content.component.ts","../../../projects/ng0/components/vertical-menu/item-content.component.html","../../../projects/ng0/components/vertical-menu/vertical-menu.module.ts","../../../projects/ng0/components/vertical-menu/bootkit-ng0-components-vertical-menu.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ng0VerticalMenuArrow], [ng0VmenuArrow]',\n exportAs: 'ng0VerticalMenuArrow',\n standalone: true,\n})\nexport class VerticalMenuArrowDirective {\n constructor(public readonly templateRef: TemplateRef<any>) { }\n}\n","import { Component, ContentChild, input } from '@angular/core';\nimport { VerticalMenuArrowDirective } from './item-arrow.directive';\n\n@Component({\n selector: 'ng0-vertical-menu, ng0-vmenu',\n templateUrl: './vertical-menu.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [],\n})\nexport class VerticalMenuComponent {\n /**\n * Whether to expand/collapse items when clicking on them\n */\n public readonly expandItemsByClick = input(true);\n\n public readonly collapseTimings = input<string | number>('0.15s');\n\n @ContentChild(VerticalMenuArrowDirective, { descendants: false })\n public readonly arrowDirective?: VerticalMenuArrowDirective;\n}\n\n","<ng-content></ng-content>","import { Component, ContentChild, model } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { CollapseDirective } from '@bootkit/ng0/components/collapse';\n\n@Component({\n selector: 'ng0-vertical-menu-item-children, ng0-vmenu-item-children, ng0-vmenu-children',\n templateUrl: './item-children.component.html',\n exportAs: 'ng0VmenuItemChildren',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [CommonModule, CollapseDirective],\n host: {\n '[class.ng0-expanded]': 'expanded()'\n }\n})\nexport class VerticalMenuItemChildrenComponent {\n public expanded = model(false);\n\n @ContentChild(VerticalMenuItemComponent, { descendants: false }) protected _items?: VerticalMenuItemComponent;\n\n constructor(public menuItem: VerticalMenuItemComponent, protected _menu: VerticalMenuComponent,) { }\n}\n","<div ng0Collapse\n [collapsed]=\"!expanded()\"\n [timings]=\"_menu.collapseTimings()\">\n <ng-content></ng-content>\n</div>\n","import { Component, ContentChild, HostBinding, model } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\n\n@Component({\n selector: 'ng0-vertical-menu-item, ng0-vmenu-item',\n templateUrl: './item.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n imports: [CommonModule],\n host: {\n }\n})\nexport class VerticalMenuItemComponent {\n public readonly active = model(false);\n\n @ContentChild(VerticalMenuItemChildrenComponent, { descendants: false }) \n public readonly children?: VerticalMenuItemChildrenComponent;\n\n constructor(protected _menu: VerticalMenuComponent) {\n }\n\n @HostBinding('class.ng0-has-children')\n public get hasChildren(): boolean {\n return this.children != null;\n }\n\n @HostBinding('class.ng0-expanded')\n public get isExpanded(): boolean {\n return this.children != null && this.children.expanded();\n }\n}\n\n","<ng-content></ng-content>","import { Component, HostListener, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuItemComponent } from './item.component';\n\n@Component({\n selector: 'ng0-vertical-menu-item-content, ng0-vmenu-item-content, ng0-vmenu-content',\n templateUrl: './item-content.component.html',\n standalone: true,\n styles: `:host {display: flex; align-items: center; }`,\n imports: [CommonModule]\n})\nexport class VerticalMenuItemContentComponent {\n protected readonly _menu = inject(VerticalMenuComponent);\n protected readonly menuItem = inject(VerticalMenuItemComponent);\n\n @HostListener('click')\n protected _onClick() {\n if (this._menu.expandItemsByClick() && this.menuItem.hasChildren) {\n this.menuItem.children?.expanded.update(x => !x);\n }\n }\n}\n","<ng-content></ng-content>\n\n@defer {\n@if(_menu.arrowDirective && menuItem.hasChildren) {\n<ng-container *ngTemplateOutlet=\"_menu.arrowDirective.templateRef!; context: {$implicit: menuItem}\"></ng-container>\n}\n}","import { NgModule } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuArrowDirective } from './item-arrow.directive';\nimport { VerticalMenuItemContentComponent } from './item-content.component';\n\nconst items = [\n VerticalMenuComponent,\n VerticalMenuItemComponent,\n VerticalMenuItemChildrenComponent,\n VerticalMenuItemContentComponent,\n VerticalMenuArrowDirective,\n];\n\n@NgModule({\n imports: items,\n exports: items\n})\nexport class VerticalMenuModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.VerticalMenuItemComponent","i2.VerticalMenuComponent","i1.VerticalMenuComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-components-vertical-menu.mjs","sources":["../../../projects/ng0/components/vertical-menu/divider.component.ts","../../../projects/ng0/components/vertical-menu/header.component.ts","../../../projects/ng0/components/vertical-menu/item-state.ts","../../../projects/ng0/components/vertical-menu/vertical-menu-state.ts","../../../projects/ng0/components/vertical-menu/item.component.ts","../../../projects/ng0/components/vertical-menu/item.component.html","../../../projects/ng0/components/vertical-menu/item-children.component.ts","../../../projects/ng0/components/vertical-menu/item-children.component.html","../../../projects/ng0/components/vertical-menu/item-template.directive.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.ts","../../../projects/ng0/components/vertical-menu/vertical-menu.component.html","../../../projects/ng0/components/vertical-menu/vertical-menu.module.ts","../../../projects/ng0/components/vertical-menu/bootkit-ng0-components-vertical-menu.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'ng0-vmenu-divider',\n template: '',\n standalone: true,\n styles: `:host {display: block; height: 1px; background-color: var(--bs-border-color); margin: 1rem 0; }`\n})\nexport class VerticalMenuDividerComponent {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ng0-vmenu-header',\n standalone: true,\n template: `<ng-content></ng-content>`,\n styles: `:host {display: block; }`\n})\nexport class VerticalMenuHeaderComponent {\n}\n","import { computed, inject, Injectable, signal } from '@angular/core';\n\n@Injectable()\nexport class VerticalMenuItemState {\n public parent? = inject(VerticalMenuItemState, { optional: true, skipSelf: true });\n public readonly routeActivated = signal(false);\n public readonly hasChildren = signal(false);\n public readonly childStates = signal<VerticalMenuItemState[]>([]);\n public readonly expanded = signal(false);\n\n public hasActiveRoute(): boolean {\n return this.routeActivated() || this.childStates().some(x => x.hasActiveRoute());\n }\n}\n\n","import { Injectable, signal, TemplateRef } from '@angular/core';\n\n@Injectable()\nexport class VerticalMenuState {\n public readonly itemTemplate = signal<TemplateRef<any> | undefined>(undefined);\n\n}\n\n","import { booleanAttribute, Component, ContentChildren, EventEmitter, inject, input, Output, QueryList, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IsActiveMatchOptions, RouterModule } from '@angular/router';\nimport { VerticalMenuItemState } from './item-state';\nimport { VerticalMenuState } from './vertical-menu-state';\n\n@Component({\n selector: 'ng0-vmenu-item',\n templateUrl: './item.component.html',\n styleUrl: './item.component.scss',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CommonModule, RouterModule],\n providers: [VerticalMenuItemState],\n host: {\n '[class.ng0-has-children]': 'hasChildren()',\n '[class.ng0-expanded]': 'isExpanded()',\n '[class.ng0-has-active-route]': 'hasActiveRoute()'\n }\n})\nexport class VerticalMenuItemComponent {\n protected _menuItemState = inject(VerticalMenuItemState);\n protected _menuState = inject(VerticalMenuState);\n @ContentChildren(VerticalMenuItemComponent) protected _children!: QueryList<VerticalMenuItemComponent>;\n\n public readonly text = input<string>();\n public readonly tag = input<string>();\n public readonly tagCssClass = input<string | string[]>();\n public readonly icon = input<string>();\n\n /**\n * Router link\n */\n public readonly link = input<string | string[]>();\n public readonly routerLinkActiveOptions = input<{ exact: boolean } | IsActiveMatchOptions>({ exact: true });\n public readonly href = input<string>();\n public readonly target = input<'_blank' | '_parent' | '_self' | '_top'>('_blank');\n\n @Output() public readonly itemClick = new EventEmitter<PointerEvent>();\n\n ngOnInit(): void {\n if (this._menuItemState.parent) {\n this._menuItemState.parent.childStates().push(this._menuItemState);\n }\n }\n\n public hasActiveRoute(): boolean {\n return this._menuItemState.hasActiveRoute();\n }\n\n public hasChildren(): boolean {\n return this._menuItemState.hasChildren();\n }\n\n public isExpanded(): boolean {\n return this._menuItemState.expanded();\n }\n\n protected _onContentClick(e: PointerEvent) {\n if (this.hasChildren()) {\n this._menuItemState.expanded.update(x => !x);\n }\n\n this.itemClick.emit(e);\n }\n\n protected _onRouteChange(isActive: boolean) {\n this._menuItemState.routeActivated.set(isActive);\n }\n}\n\n","@let itemTemplate = _menuState.itemTemplate();\n\n<div class=\"ng0-vmenu-item-content\" (click)=\"_onContentClick($event)\">\n @if(hasChildren()) {\n <div class=\"ng0-vmenu-item-expander\"\n [class.ng0-expanded]=\"isExpanded()\"\n >\n @if(itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: this }\"></ng-container>\n }@else {\n @if(icon()) {\n <i class=\"ng0-vmenu-item-icon\" [ngClass]=\"icon()\"></i>\n }\n\n <span class=\"ng0-vmenu-item-text\">\n {{text()}}\n </span>\n\n @if(tag()) {\n <span class=\"ng0-vmenu-item-tag\" [ngClass]=\"tagCssClass()\">{{tag()}}</span>\n }\n\n <div class=\"ng0-vmenu-item-end\">\n <div class=\"ng0-vmenu-item-expand-icon\">\n ❯\n </div>\n </div>\n\n }\n\n </div>\n }@else {\n <a class=\"ng0-vmenu-item-link\"\n [routerLink]=\"link()\"\n [attr.href]=\"href()\"\n [attr.target]=\"target()\"\n routerLinkActive=\"ng0-active\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n (isActiveChange)=\"_onRouteChange($event)\">\n\n @if(itemTemplate) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: this }\"></ng-container>\n }@else {\n @if(icon()) {\n <i class=\"ng0-vmenu-item-icon\" [ngClass]=\"icon()\"></i>\n }\n\n {{text()}}\n\n @if(tag()) {\n <span class=\"ng0-vmenu-item-tag\" [ngClass]=\"tagCssClass()\">{{tag()}}</span>\n }\n }\n </a>\n }\n</div>\n\n<ng-content></ng-content>","import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CollapseComponent } from '@bootkit/ng0/components/collapse';\nimport { VerticalMenuItemState } from './item-state';\n\n@Component({\n selector: 'ng0-vmenu-item-children',\n templateUrl: './item-children.component.html',\n exportAs: 'ng0VmenuItemChildren',\n standalone: true,\n imports: [CommonModule, CollapseComponent],\n host: {\n '[class.ng0-expanded]': 'isExpanded()'\n }\n})\nexport class VerticalMenuItemChildrenComponent implements OnInit {\n private _menuItemState = inject(VerticalMenuItemState);\n\n ngOnInit(): void {\n this._menuItemState.hasChildren.set(true);\n }\n\n public isExpanded() {\n return this._menuItemState.expanded();\n }\n\n public expand() {\n return this._menuItemState.expanded.set(true);\n }\n\n public collapse() {\n return this._menuItemState.expanded.set(false);\n }\n}\n","<ng0-collapse [collapsed]=\"!isExpanded()\">\n <ng-content></ng-content>\n</ng0-collapse>\n\n<style>\n :host {\n display: block;\n padding-inline-start: .5rem;\n }\n</style>","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ng0VerticalMenuItemTemplate]',\n exportAs: 'ng0VerticalMenuItemTemplate',\n standalone: true\n})\nexport class VerticalMenuItemTemplateDirective {\n public readonly templateRef = inject(TemplateRef);\n}\n","import { AfterContentInit, Component, ContentChild, inject, input } from '@angular/core';\nimport { MenuItem } from '@bootkit/ng0/common';\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\nimport { User, UserStore } from '@bootkit/ng0/security';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { RouterModule } from '@angular/router';\nimport { VerticalMenuDividerComponent } from './divider.component';\nimport { VerticalMenuHeaderComponent } from './header.component';\nimport { VerticalMenuState } from './vertical-menu-state';\nimport { VerticalMenuItemTemplateDirective } from './item-template.directive';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\n\n@Component({\n selector: 'ng0-vmenu, ng0-vertical-menu',\n templateUrl: './vertical-menu.component.html',\n standalone: true,\n styles: `:host {display: block}`,\n providers: [VerticalMenuState],\n imports: [\n CommonModule,\n RouterModule,\n VerticalMenuItemComponent,\n VerticalMenuDividerComponent,\n VerticalMenuHeaderComponent,\n VerticalMenuItemChildrenComponent\n],\n})\nexport class VerticalMenuComponent implements AfterContentInit {\n protected readonly _userStore = inject<UserStore<User>>(UserStore);\n protected readonly _state = inject(VerticalMenuState);\n @ContentChild(VerticalMenuItemTemplateDirective) protected _itemTemplate?: VerticalMenuItemTemplateDirective;\n\n /**\n * Menu items\n */\n public readonly items = input<MenuItem[]>([]);\n\n ngAfterContentInit(): void {\n this._state.itemTemplate.set(this._itemTemplate?.templateRef);\n }\n\n protected _onActiveChange(item: MenuItem, isActive: boolean) {\n // item.active = isActive;\n // if (item.parent)\n // item.parent.active = isActive;\n }\n}\n\n","@let user = _userStore.user();\n\n<ng-content></ng-content>\n\n<ng-container *ngTemplateOutlet=\"menuItemTemplate; context: { $implicit: items()}\"></ng-container>\n\n<ng-template #menuItemTemplate let-items>\n @for (item of items; track $index) {\n @let itemType = item.type || 'node';\n\n @if ((!item.claim) || (user && user.hasClaim(item.claim))) {\n\n @switch (itemType) {\n @case('divider') {\n <ng0-vmenu-divider></ng0-vmenu-divider>\n }\n @case('header') {\n <ng0-vmenu-header>{{item.text}}</ng0-vmenu-header>\n }\n @case('node') {\n <ng0-vmenu-item\n [text]=\"item.text\"\n [tag]=\"item.tag\"\n [tagCssClass]=\"item.tagCssClass\"\n [link]=\"item.routerLink\"\n [routerLinkActiveOptions]=\"item.routerLinkActiveOptions ?? {exact: true}\"\n [href]=\"item.href\"\n [icon]=\"item.icon\"\n [target]=\"item.target\"\n [ngClass]=\"item.cssClass\">\n @if(item.children?.length) {\n <ng0-vmenu-item-children>\n <ng-container *ngTemplateOutlet=\"menuItemTemplate; context: { $implicit: item.children }\">\n </ng-container>\n </ng0-vmenu-item-children>\n }\n </ng0-vmenu-item>\n }\n }\n }\n }\n</ng-template>","import { NgModule } from '@angular/core';\nimport { VerticalMenuItemComponent } from './item.component';\nimport { VerticalMenuComponent } from './vertical-menu.component';\nimport { VerticalMenuDividerComponent } from './divider.component';\nimport { VerticalMenuHeaderComponent } from './header.component';\nimport { VerticalMenuItemChildrenComponent } from './item-children.component';\nimport { VerticalMenuItemTemplateDirective } from './item-template.directive';\n\nconst items = [\n VerticalMenuComponent,\n VerticalMenuItemComponent,\n VerticalMenuItemChildrenComponent,\n VerticalMenuDividerComponent,\n VerticalMenuHeaderComponent,\n VerticalMenuItemTemplateDirective\n];\n\n@NgModule({\n imports: items,\n exports: items\n})\nexport class VerticalMenuModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAQa,4BAA4B,CAAA;wGAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,6EAJ7B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA,CAAA;;4FAID,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;+BACE,mBAAmB,EAAA,QAAA,EACnB,EAAE,EAAA,UAAA,EACA,IAAI,EAAA,MAAA,EAAA,CAAA,yFAAA,CAAA,EAAA;;;MCGL,2BAA2B,CAAA;wGAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,4EAH5B,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAG1B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBANvC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN,CAAA,yBAAA,CAA2B,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;MCF1B,qBAAqB,CAAA;AACzB,IAAA,MAAM,GAAI,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClE,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;AAC9B,IAAA,WAAW,GAAG,MAAM,CAAC,KAAK,uDAAC;AAC3B,IAAA,WAAW,GAAG,MAAM,CAA0B,EAAE,uDAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;IAEjC,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;IAClF;wGATW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAArB,qBAAqB,EAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;;MCCY,iBAAiB,CAAA;AACZ,IAAA,YAAY,GAAG,MAAM,CAA+B,SAAS,wDAAC;wGADnE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAjB,iBAAiB,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCkBY,yBAAyB,CAAA;AAC1B,IAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC9C,IAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACM,IAAA,SAAS;IAE/C,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACtB,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IACrB,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;IACxC,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEtC;;AAEG;IACa,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;IACjC,uBAAuB,GAAG,KAAK,CAA4C,EAAE,KAAK,EAAE,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC3F,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACtB,IAAA,MAAM,GAAG,KAAK,CAA0C,QAAQ,kDAAC;AAEvD,IAAA,SAAS,GAAG,IAAI,YAAY,EAAgB;IAEtE,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACpE;IACF;IAEO,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;IAC7C;IAEO,WAAW,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IAC1C;IAEO,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IACvC;AAEU,IAAA,eAAe,CAAC,CAAe,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxB;AAEU,IAAA,cAAc,CAAC,QAAiB,EAAA;QACxC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClD;wGAhDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAPzB,CAAC,qBAAqB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAUjB,yBAAyB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvB5C,opDAyDyB,EAAA,MAAA,EAAA,CAAA,sgCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7Cb,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAQzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,iBAGX,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,YAAY,CAAC,EAAA,SAAA,EAC1B,CAAC,qBAAqB,CAAC,EAAA,IAAA,EAC5B;AACJ,wBAAA,0BAA0B,EAAE,eAAe;AAC3C,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,8BAA8B,EAAE;AACjC,qBAAA,EAAA,QAAA,EAAA,opDAAA,EAAA,MAAA,EAAA,CAAA,sgCAAA,CAAA,EAAA;;sBAKA,eAAe;uBAAC,yBAAyB;;sBAezC;;;MEvBU,iCAAiC,CAAA;AAClC,IAAA,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAEtD,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7C;IAEO,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IACzC;IAEO,MAAM,GAAA;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACjD;IAEO,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAClD;wGAjBS,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf9C,+LASQ,EAAA,MAAA,EAAA,CAAA,mDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCM,YAAY,+BAAE,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKhC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAV7C,SAAS;+BACI,yBAAyB,EAAA,QAAA,EAEzB,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,IAAA,EACpC;AACF,wBAAA,sBAAsB,EAAE;AAC3B,qBAAA,EAAA,QAAA,EAAA,+LAAA,EAAA;;;MENQ,iCAAiC,CAAA;AAC5B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;wGADtC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,CAAA,6BAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAL7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCqBY,qBAAqB,CAAA;AACb,IAAA,UAAU,GAAG,MAAM,CAAkB,SAAS,CAAC;AAC/C,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACM,IAAA,aAAa;AAExE;;AAEG;AACa,IAAA,KAAK,GAAG,KAAK,CAAa,EAAE,iDAAC;IAE7C,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;IAC/D;IAEU,eAAe,CAAC,IAAc,EAAE,QAAiB,EAAA;;;;IAI3D;wGAlBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+MAVrB,CAAC,iBAAiB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAahB,iCAAiC,gDC9BjD,m2CAyCc,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtBV,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,+BACZ,yBAAyB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,4BAA4B,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,2BAA2B,6DAC3B,iCAAiC,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGxB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAE5B,IAAI,EAAA,SAAA,EAEL,CAAC,iBAAiB,CAAC,EAAA,OAAA,EACrB;wBACP,YAAY;wBACZ,YAAY;wBACZ,yBAAyB;wBACzB,4BAA4B;wBAC5B,2BAA2B;wBAC3B;AACH,qBAAA,EAAA,QAAA,EAAA,m2CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAKE,YAAY;uBAAC,iCAAiC;;;AEtBjD,MAAM,KAAK,GAAG;IACZ,qBAAqB;IACrB,yBAAyB;IACzB,iCAAiC;IACjC,4BAA4B;IAC5B,2BAA2B;IAC3B;CACD;MAMY,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAZ7B,qBAAqB;YACrB,yBAAyB;YACzB,iCAAiC;YACjC,4BAA4B;YAC5B,2BAA2B;AAC3B,YAAA,iCAAiC,aALjC,qBAAqB;YACrB,yBAAyB;YACzB,iCAAiC;YACjC,4BAA4B;YAC5B,2BAA2B;YAC3B,iCAAiC,CAAA,EAAA,CAAA;AAOtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAZ7B,qBAAqB;YACrB,yBAAyB;YACzB,iCAAiC,CAAA,EAAA,CAAA;;4FAUtB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;AACV,iBAAA;;;ACpBD;;AAEG;;;;"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
1
2
|
import { Subject, of, tap, Observable, map } from 'rxjs';
|
|
2
3
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { InjectionToken, makeEnvironmentProviders, inject,
|
|
4
|
+
import { InjectionToken, makeEnvironmentProviders, inject, TransferState, Injector, PLATFORM_ID, makeStateKey, runInInjectionContext, Injectable } from '@angular/core';
|
|
4
5
|
import { isPlatformServer } from '@angular/common';
|
|
5
|
-
import * as i1 from '@angular/common/http';
|
|
6
|
-
import { HttpClient } from '@angular/common/http';
|
|
7
6
|
import { DataResult } from '@bootkit/ng0/data';
|
|
8
7
|
|
|
9
8
|
const HTTP_SERVICE_CONFIG = new InjectionToken('HttpServiceConfig');
|
|
@@ -30,20 +29,16 @@ function provideHttpService(config, ...features) {
|
|
|
30
29
|
* It can also handle multipart/form-data requests.
|
|
31
30
|
*/
|
|
32
31
|
class HttpService {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
_config = inject(HTTP_SERVICE_CONFIG);
|
|
33
|
+
_http = inject(HttpClient);
|
|
34
|
+
_transferState = inject(TransferState);
|
|
35
|
+
_injector = inject(Injector);
|
|
36
|
+
_platformId = inject(PLATFORM_ID);
|
|
37
37
|
_eventsSubject = new Subject();
|
|
38
38
|
_baseUrl;
|
|
39
39
|
events = this._eventsSubject.asObservable();
|
|
40
40
|
defaultHeaders;
|
|
41
|
-
|
|
42
|
-
constructor(http, transferState, injector, platformId) {
|
|
43
|
-
this.http = http;
|
|
44
|
-
this.transferState = transferState;
|
|
45
|
-
this.injector = injector;
|
|
46
|
-
this.platformId = platformId;
|
|
41
|
+
constructor() {
|
|
47
42
|
this._baseUrl = this._config.baseUrl ?? '';
|
|
48
43
|
}
|
|
49
44
|
/**
|
|
@@ -59,10 +54,10 @@ class HttpService {
|
|
|
59
54
|
return of(transferStateData.data);
|
|
60
55
|
}
|
|
61
56
|
this._eventsSubject.next({ type: 'Send', url, options });
|
|
62
|
-
let obs = this.
|
|
63
|
-
if (isPlatformServer(this.
|
|
57
|
+
let obs = this._http.get(this._makeUrl(url, options), options).pipe(tap(result => {
|
|
58
|
+
if (isPlatformServer(this._platformId) && options?.transferState) {
|
|
64
59
|
const key = makeStateKey(options.id);
|
|
65
|
-
this.
|
|
60
|
+
this._transferState.set(key, result);
|
|
66
61
|
}
|
|
67
62
|
}));
|
|
68
63
|
return this._handleEvents(obs, url, options);
|
|
@@ -88,7 +83,7 @@ class HttpService {
|
|
|
88
83
|
throw new Error('No HttpDataRequestResolver provided.');
|
|
89
84
|
}
|
|
90
85
|
const URL = this._makeUrl(url, options);
|
|
91
|
-
let obs = runInInjectionContext(this.
|
|
86
|
+
let obs = runInInjectionContext(this._injector, resolver.bind(null, URL, request, options));
|
|
92
87
|
if (!(obs instanceof Observable)) {
|
|
93
88
|
throw Error('HttpDataRequestResolver should return an observable.');
|
|
94
89
|
}
|
|
@@ -105,7 +100,7 @@ class HttpService {
|
|
|
105
100
|
this._verifyOptions(options);
|
|
106
101
|
this._eventsSubject.next({ type: 'Send', url, options });
|
|
107
102
|
const BODY = this._makeBody(body, options);
|
|
108
|
-
let obs = this.
|
|
103
|
+
let obs = this._http.post(this._makeUrl(url, options), BODY, options);
|
|
109
104
|
return this._handleEvents(obs, url, options);
|
|
110
105
|
}
|
|
111
106
|
/**
|
|
@@ -119,7 +114,7 @@ class HttpService {
|
|
|
119
114
|
this._verifyOptions(options);
|
|
120
115
|
this._eventsSubject.next({ type: 'Send', url, options });
|
|
121
116
|
const BODY = this._makeBody(body, options);
|
|
122
|
-
let obs = this.
|
|
117
|
+
let obs = this._http.put(this._makeUrl(url, options), BODY, options);
|
|
123
118
|
return this._handleEvents(obs, url, options);
|
|
124
119
|
}
|
|
125
120
|
/**
|
|
@@ -131,7 +126,7 @@ class HttpService {
|
|
|
131
126
|
delete(url, options) {
|
|
132
127
|
this._verifyOptions(options);
|
|
133
128
|
this._eventsSubject.next({ type: 'Send', url, options });
|
|
134
|
-
let obs = this.
|
|
129
|
+
let obs = this._http.delete(this._makeUrl(url, options), options);
|
|
135
130
|
return this._handleEvents(obs, url, options);
|
|
136
131
|
}
|
|
137
132
|
_makeUrl(url, options) {
|
|
@@ -177,34 +172,31 @@ class HttpService {
|
|
|
177
172
|
if (options.transferState && !options.id) {
|
|
178
173
|
throw Error('To use transferState, set request id');
|
|
179
174
|
}
|
|
180
|
-
if (this.
|
|
175
|
+
if (this._transferState && (options.observe == 'events' || options.observe == 'response')) {
|
|
181
176
|
throw Error('TransferState is only supported with observe == body.');
|
|
182
177
|
}
|
|
183
178
|
}
|
|
184
179
|
}
|
|
185
180
|
_findInTransferState(options) {
|
|
186
|
-
if (!options?.transferState || isPlatformServer(this.
|
|
181
|
+
if (!options?.transferState || isPlatformServer(this._platformId)) {
|
|
187
182
|
return { found: false, data: undefined };
|
|
188
183
|
}
|
|
189
184
|
const key = makeStateKey(options.id);
|
|
190
|
-
if (this.
|
|
191
|
-
const data = this.
|
|
185
|
+
if (this._transferState.hasKey(key)) {
|
|
186
|
+
const data = this._transferState.get(key, null);
|
|
192
187
|
if (options.transferState?.['clearAfterUse']) {
|
|
193
|
-
this.
|
|
188
|
+
this._transferState.remove(key); // Free memory
|
|
194
189
|
}
|
|
195
190
|
return { found: true, data: data };
|
|
196
191
|
}
|
|
197
192
|
return { found: false, data: undefined };
|
|
198
193
|
}
|
|
199
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: HttpService, deps: [
|
|
194
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: HttpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
200
195
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: HttpService });
|
|
201
196
|
}
|
|
202
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: HttpService, decorators: [{
|
|
203
198
|
type: Injectable
|
|
204
|
-
}], ctorParameters: () => [
|
|
205
|
-
type: Inject,
|
|
206
|
-
args: [PLATFORM_ID]
|
|
207
|
-
}] }] });
|
|
199
|
+
}], ctorParameters: () => [] });
|
|
208
200
|
|
|
209
201
|
/**
|
|
210
202
|
* HttpDataRequestWriter is a function that takes an HTTP request and a DataRequest
|