@bootkit/ng0 0.0.0-alpha.47 → 0.0.0-alpha.49

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.
@@ -12,7 +12,7 @@ import { ListItemSelectEvent } from '@bootkit/ng0/components/list';
12
12
  */
13
13
  declare class SelectComponent implements ControlValueAccessor {
14
14
  private _viewpoerRulerSubscription?;
15
- private _injector;
15
+ private readonly _injector;
16
16
  private _filterElementRef?;
17
17
  private _listComponent?;
18
18
  private _changeCallback;
@@ -22,8 +22,9 @@ declare class SidenavComponent implements OnDestroy {
22
22
  private readonly _sidenavContainer;
23
23
  private readonly _document;
24
24
  private readonly _renderer;
25
- private _backdropRef;
26
- private _backdropClickHandlerUnlisten?;
25
+ private _backdropRef?;
26
+ private _backdropClickUnlistenFunc?;
27
+ private _backdropAnimationEndUnlistenFunc?;
27
28
  private _platformId;
28
29
  protected _isPlatformServer: boolean;
29
30
  private _resizeSubscription?;
@@ -55,6 +55,7 @@ declare class VerticalMenuItemComponent {
55
55
  isExpanded(): boolean;
56
56
  protected _onContentClick(e: PointerEvent): void;
57
57
  protected _onRouteChange(isActive: boolean): void;
58
+ protected _getItemTemplateContext(): any;
58
59
  static ɵfac: i0.ɵɵFactoryDeclaration<VerticalMenuItemComponent, never>;
59
60
  static ɵcmp: i0.ɵɵComponentDeclaration<VerticalMenuItemComponent, "ng0-vmenu-item", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "tag": { "alias": "tag"; "required": false; "isSignal": true; }; "tagCssClass": { "alias": "tagCssClass"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, ["_children"], ["*"], true, never>;
60
61
  }
@@ -116,7 +116,7 @@ class SelectComponent {
116
116
  */
117
117
  itemSelect = new EventEmitter();
118
118
  constructor() {
119
- ['ng0-select', 'form-select'].forEach(c => this._renderer.addClass(this._elementRef.nativeElement, c));
119
+ ['form-select'].forEach(c => this._renderer.addClass(this._elementRef.nativeElement, c));
120
120
  this._scrollStrategy = this._overlay.scrollStrategies.block();
121
121
  effect(() => {
122
122
  let source = this.source();
@@ -386,7 +386,7 @@ class SelectComponent {
386
386
  provide: NG_VALUE_ACCESSOR,
387
387
  useExisting: forwardRef(() => SelectComponent),
388
388
  multi: true
389
- }], queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "_filterElementRef", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "_listComponent", first: true, predicate: ListComponent, descendants: true }], exportAs: ["ng0Select"], ngImport: i0, template: "@if(multiple()) {\n\n@for(item of _selectedItems.values(); track $index; let last=$last) {\n{{formatBy()(item)}}@if(!last) {,}\n}\n\n} @else {\n@if(_selectedItems.size > 0) {\n{{formatBy()(_selectedItems.values().next().value)}}\n}\n}\n\n@if(source().isLoading()) {\n<div class=\"spinner-grow text-secondary spinner-grow-sm ng0-select-spinner\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n</div>\n\n&nbsp; <!-- This space is required to prevent layout shift after loading indicator hides. -->\n}\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"_elementRef.nativeElement\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown']\"\n [cdkConnectedOverlayWidth]=\"_elementRef.nativeElement.clientWidth\"\n (overlayOutsideClick)=\"this.open.set(false)\"\n (attach)=\"_onOverlayAttach();\"\n (detach)=\"_onOverlayDetach()\">\n\n @if(filterable()) {\n <div class=\"ng0-select-filter-container\">\n <input #filterInput\n type=\"text\"\n class=\"ng0-select-filter-input\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (input)=\"_filterValue.set($event.target.value)\"\n (keydown)=\"_onFilterKeydown($event)\">\n </div>\n }\n\n <ng0-select-list #list\n [source]=\"_sourceItems()\"\n [multiple]=\"multiple()\"\n [formatBy]=\"formatBy()\"\n [compareBy]=\"compareBy()\"\n [itemClass]=\"itemClass()\"\n [showSelectionIndicator]=\"showSelectionIndicator()\"\n [itemTemplate]=\"itemTemplate\"\n [filterBy]=\"_filterPredicate()\"\n focusMode=\"none\"\n (mousedown)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n (itemSelect)=\"_onListSelectionChange($event)\">\n </ng0-select-list>\n</ng-template>\n", styles: ["ng0-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;display:flex!important;align-items:center}ng0-select[disabled],ng0-select.disabled{opacity:.5;pointer-events:none}ng0-select:empty:before{content:\" \";white-space:pre}ng0-select:focus,ng0-select:focus-visible,ng0-select.ng0-select-open.ng0-select-filterable{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.ng0-select-dropdown{display:flex;flex-direction:column;background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow-y:auto;margin:var(--bs-focus-ring-width, 0) 0}.ng0-select-filter-container{padding:.5rem;background-color:inherit}.ng0-select-filter-container .ng0-select-filter-input{width:100%;border:1px solid var(--bs-border-color);border-radius:.2rem;padding:.25rem}.ng0-select-filter-container .ng0-select-filter-input:focus,.ng0-select-filter-container .ng0-select-filter-input:focus-visible{outline:0}ng0-select-list{flex-grow:1;overflow-y:auto}ng0-select-list ng0-list-item{padding:.5rem;display:flex}ng0-select-list ng0-list-item.selected{background-color:var(--bs-primary);color:var(--bs-light)}ng0-select-list ng0-list-item.active:not(.selected){background-color:color-mix(in srgb,var(--bs-primary),white 85%)}ng0-select-list ng0-list-item:hover:not(.selected):not(.disabled):not(.active){background-color:color-mix(in srgb,var(--bs-primary),white 95%)}ng0-select-list ng0-list-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}ng0-select-list ng0-list-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}ng0-select-list ng0-list-item .ng0-selection-indicator{margin-inline-end:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i1.ListComponent, selector: "ng0-list, ng0-select-list", inputs: ["source", "multiple", "showSelectionIndicator", "compareBy", "formatBy", "writeBy", "filterBy", "trackBy", "itemClass", "focusMode", "idGenerator", "itemTemplate"], outputs: ["itemSelect"], exportAs: ["ng0List"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
389
+ }], queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "_filterElementRef", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "_listComponent", first: true, predicate: ListComponent, descendants: true }], exportAs: ["ng0Select"], ngImport: i0, template: "@if(multiple()) {\n\n@for(item of _selectedItems.values(); track $index; let last=$last) {\n{{formatBy()(item)}}@if(!last) {,}\n}\n\n} @else {\n@if(_selectedItems.size > 0) {\n{{formatBy()(_selectedItems.values().next().value)}}\n}\n}\n\n@if(source().isLoading()) {\n<div class=\"spinner-grow text-secondary spinner-grow-sm ng0-select-spinner\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n</div>\n\n&nbsp; <!-- This space is required to prevent layout shift after loading indicator hides. -->\n}\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"_elementRef.nativeElement\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown']\"\n [cdkConnectedOverlayWidth]=\"_elementRef.nativeElement.clientWidth\"\n (overlayOutsideClick)=\"this.open.set(false)\"\n (attach)=\"_onOverlayAttach();\"\n (detach)=\"_onOverlayDetach()\">\n\n @if(filterable()) {\n <div class=\"ng0-select-filter-container\">\n <input #filterInput\n type=\"text\"\n class=\"ng0-select-filter-input\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (input)=\"_filterValue.set($event.target.value)\"\n (keydown)=\"_onFilterKeydown($event)\">\n </div>\n }\n\n <ng0-select-list #list\n [source]=\"_sourceItems()\"\n [multiple]=\"multiple()\"\n [formatBy]=\"formatBy()\"\n [compareBy]=\"compareBy()\"\n [itemClass]=\"itemClass()\"\n [showSelectionIndicator]=\"showSelectionIndicator()\"\n [itemTemplate]=\"itemTemplate\"\n [filterBy]=\"_filterPredicate()\"\n focusMode=\"none\"\n (mousedown)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n (itemSelect)=\"_onListSelectionChange($event)\">\n </ng0-select-list>\n</ng-template>\n", styles: [":root{--ng0-select-dropdown-duration: .1s;--ng0-select-dropdown-timing-function: ease-out}@keyframes dropdownEnter{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes dropdownLeave{0%{opacity:1}to{opacity:0}}ng0-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;display:flex!important;align-items:center}ng0-select[disabled],ng0-select.disabled{opacity:.5;pointer-events:none}ng0-select:empty:before{content:\" \";white-space:pre}ng0-select:focus,ng0-select:focus-visible,ng0-select.ng0-select-open.ng0-select-filterable{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.ng0-select-dropdown{display:flex;width:100%;flex-direction:column;background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow-y:auto;margin:var(--bs-focus-ring-width, 0) 0;transform-origin:top;animation:dropdownEnter var(--ng0-select-dropdown-duration) var(--ng0-select-dropdown-timing-function) forwards}.ng0-select-filter-container{padding:.5rem;background-color:inherit}.ng0-select-filter-container .ng0-select-filter-input{width:100%;border:1px solid var(--bs-border-color);border-radius:.2rem;padding:.25rem}.ng0-select-filter-container .ng0-select-filter-input:focus,.ng0-select-filter-container .ng0-select-filter-input:focus-visible{outline:0}ng0-select-list{flex-grow:1;overflow-y:auto}ng0-select-list ng0-list-item{padding:.5rem;display:flex;-webkit-user-select:none;user-select:none}ng0-select-list ng0-list-item.selected{background-color:var(--bs-primary);color:var(--bs-light)}ng0-select-list ng0-list-item.active:not(.selected){background-color:color-mix(in srgb,var(--bs-primary),white 85%)}ng0-select-list ng0-list-item:hover:not(.selected):not(.disabled):not(.active){background-color:color-mix(in srgb,var(--bs-primary),white 95%)}ng0-select-list ng0-list-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}ng0-select-list ng0-list-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}ng0-select-list ng0-list-item .ng0-selection-indicator{margin-inline-end:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ListModule }, { kind: "component", type: i1.ListComponent, selector: "ng0-list, ng0-select-list", inputs: ["source", "multiple", "showSelectionIndicator", "compareBy", "formatBy", "writeBy", "filterBy", "trackBy", "itemClass", "focusMode", "idGenerator", "itemTemplate"], outputs: ["itemSelect"], exportAs: ["ng0List"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
390
390
  }
391
391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SelectComponent, decorators: [{
392
392
  type: Component,
@@ -401,7 +401,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
401
401
  '[attr.disabled]': '_isDisabled() ? "" : undefined',
402
402
  '[attr.aria-disabled]': '_isDisabled() ? "" : undefined',
403
403
  '[attr.tabindex]': '_isDisabled() ? undefined : 0',
404
- }, template: "@if(multiple()) {\n\n@for(item of _selectedItems.values(); track $index; let last=$last) {\n{{formatBy()(item)}}@if(!last) {,}\n}\n\n} @else {\n@if(_selectedItems.size > 0) {\n{{formatBy()(_selectedItems.values().next().value)}}\n}\n}\n\n@if(source().isLoading()) {\n<div class=\"spinner-grow text-secondary spinner-grow-sm ng0-select-spinner\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n</div>\n\n&nbsp; <!-- This space is required to prevent layout shift after loading indicator hides. -->\n}\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"_elementRef.nativeElement\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown']\"\n [cdkConnectedOverlayWidth]=\"_elementRef.nativeElement.clientWidth\"\n (overlayOutsideClick)=\"this.open.set(false)\"\n (attach)=\"_onOverlayAttach();\"\n (detach)=\"_onOverlayDetach()\">\n\n @if(filterable()) {\n <div class=\"ng0-select-filter-container\">\n <input #filterInput\n type=\"text\"\n class=\"ng0-select-filter-input\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (input)=\"_filterValue.set($event.target.value)\"\n (keydown)=\"_onFilterKeydown($event)\">\n </div>\n }\n\n <ng0-select-list #list\n [source]=\"_sourceItems()\"\n [multiple]=\"multiple()\"\n [formatBy]=\"formatBy()\"\n [compareBy]=\"compareBy()\"\n [itemClass]=\"itemClass()\"\n [showSelectionIndicator]=\"showSelectionIndicator()\"\n [itemTemplate]=\"itemTemplate\"\n [filterBy]=\"_filterPredicate()\"\n focusMode=\"none\"\n (mousedown)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n (itemSelect)=\"_onListSelectionChange($event)\">\n </ng0-select-list>\n</ng-template>\n", styles: ["ng0-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;display:flex!important;align-items:center}ng0-select[disabled],ng0-select.disabled{opacity:.5;pointer-events:none}ng0-select:empty:before{content:\" \";white-space:pre}ng0-select:focus,ng0-select:focus-visible,ng0-select.ng0-select-open.ng0-select-filterable{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.ng0-select-dropdown{display:flex;flex-direction:column;background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow-y:auto;margin:var(--bs-focus-ring-width, 0) 0}.ng0-select-filter-container{padding:.5rem;background-color:inherit}.ng0-select-filter-container .ng0-select-filter-input{width:100%;border:1px solid var(--bs-border-color);border-radius:.2rem;padding:.25rem}.ng0-select-filter-container .ng0-select-filter-input:focus,.ng0-select-filter-container .ng0-select-filter-input:focus-visible{outline:0}ng0-select-list{flex-grow:1;overflow-y:auto}ng0-select-list ng0-list-item{padding:.5rem;display:flex}ng0-select-list ng0-list-item.selected{background-color:var(--bs-primary);color:var(--bs-light)}ng0-select-list ng0-list-item.active:not(.selected){background-color:color-mix(in srgb,var(--bs-primary),white 85%)}ng0-select-list ng0-list-item:hover:not(.selected):not(.disabled):not(.active){background-color:color-mix(in srgb,var(--bs-primary),white 95%)}ng0-select-list ng0-list-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}ng0-select-list ng0-list-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}ng0-select-list ng0-list-item .ng0-selection-indicator{margin-inline-end:.5rem}\n"] }]
404
+ }, template: "@if(multiple()) {\n\n@for(item of _selectedItems.values(); track $index; let last=$last) {\n{{formatBy()(item)}}@if(!last) {,}\n}\n\n} @else {\n@if(_selectedItems.size > 0) {\n{{formatBy()(_selectedItems.values().next().value)}}\n}\n}\n\n@if(source().isLoading()) {\n<div class=\"spinner-grow text-secondary spinner-grow-sm ng0-select-spinner\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n</div>\n\n&nbsp; <!-- This space is required to prevent layout shift after loading indicator hides. -->\n}\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"_elementRef.nativeElement\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown']\"\n [cdkConnectedOverlayWidth]=\"_elementRef.nativeElement.clientWidth\"\n (overlayOutsideClick)=\"this.open.set(false)\"\n (attach)=\"_onOverlayAttach();\"\n (detach)=\"_onOverlayDetach()\">\n\n @if(filterable()) {\n <div class=\"ng0-select-filter-container\">\n <input #filterInput\n type=\"text\"\n class=\"ng0-select-filter-input\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (input)=\"_filterValue.set($event.target.value)\"\n (keydown)=\"_onFilterKeydown($event)\">\n </div>\n }\n\n <ng0-select-list #list\n [source]=\"_sourceItems()\"\n [multiple]=\"multiple()\"\n [formatBy]=\"formatBy()\"\n [compareBy]=\"compareBy()\"\n [itemClass]=\"itemClass()\"\n [showSelectionIndicator]=\"showSelectionIndicator()\"\n [itemTemplate]=\"itemTemplate\"\n [filterBy]=\"_filterPredicate()\"\n focusMode=\"none\"\n (mousedown)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n (itemSelect)=\"_onListSelectionChange($event)\">\n </ng0-select-list>\n</ng-template>\n", styles: [":root{--ng0-select-dropdown-duration: .1s;--ng0-select-dropdown-timing-function: ease-out}@keyframes dropdownEnter{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes dropdownLeave{0%{opacity:1}to{opacity:0}}ng0-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;display:flex!important;align-items:center}ng0-select[disabled],ng0-select.disabled{opacity:.5;pointer-events:none}ng0-select:empty:before{content:\" \";white-space:pre}ng0-select:focus,ng0-select:focus-visible,ng0-select.ng0-select-open.ng0-select-filterable{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.ng0-select-dropdown{display:flex;width:100%;flex-direction:column;background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow-y:auto;margin:var(--bs-focus-ring-width, 0) 0;transform-origin:top;animation:dropdownEnter var(--ng0-select-dropdown-duration) var(--ng0-select-dropdown-timing-function) forwards}.ng0-select-filter-container{padding:.5rem;background-color:inherit}.ng0-select-filter-container .ng0-select-filter-input{width:100%;border:1px solid var(--bs-border-color);border-radius:.2rem;padding:.25rem}.ng0-select-filter-container .ng0-select-filter-input:focus,.ng0-select-filter-container .ng0-select-filter-input:focus-visible{outline:0}ng0-select-list{flex-grow:1;overflow-y:auto}ng0-select-list ng0-list-item{padding:.5rem;display:flex;-webkit-user-select:none;user-select:none}ng0-select-list ng0-list-item.selected{background-color:var(--bs-primary);color:var(--bs-light)}ng0-select-list ng0-list-item.active:not(.selected){background-color:color-mix(in srgb,var(--bs-primary),white 85%)}ng0-select-list ng0-list-item:hover:not(.selected):not(.disabled):not(.active){background-color:color-mix(in srgb,var(--bs-primary),white 95%)}ng0-select-list ng0-list-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}ng0-select-list ng0-list-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}ng0-select-list ng0-list-item .ng0-selection-indicator{margin-inline-end:.5rem}\n"] }]
405
405
  }], ctorParameters: () => [], propDecorators: { _filterElementRef: [{
406
406
  type: ViewChild,
407
407
  args: ['filterInput']
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-select.mjs","sources":["../../../projects/ng0/components/select/select.component.ts","../../../projects/ng0/components/select/select.component.html","../../../projects/ng0/components/select/select.module.ts","../../../projects/ng0/components/select/public-api.ts","../../../projects/ng0/components/select/bootkit-ng0-components-select.ts"],"sourcesContent":["import { Component, ElementRef, Renderer2, input, signal, model, HostListener, inject, forwardRef, ViewChild, TemplateRef, ContentChild, ViewEncapsulation, ChangeDetectionStrategy, booleanAttribute, ChangeDetectorRef, effect, computed, untracked, Output, EventEmitter, EnvironmentInjector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { dataSourceAttribute, DataSource, DataSourceLike, DataRequest } from '@bootkit/ng0/data';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayModule, ScrollStrategy, ViewportRuler } from '@angular/cdk/overlay';\nimport { Subscription } from 'rxjs';\nimport { objectFormatterAttribute, defaultFormatter, LocalizationService } from '@bootkit/ng0/localization';\nimport { ListComponent, ListModule, ListItemSelectEvent } from '@bootkit/ng0/components/list';\nimport {\n CssClassAttribute, equalityComparerAttribute, defaultEqualityComparer, valueWriterAttribute, defaultValueWriter,\n IdGeneratorAttribute, defaultFilter, filterPredicateAttribute\n} from '@bootkit/ng0/common';\n\n/**\n * Select component that allows users to choose an option from a dropdown list.\n */\n@Component({\n selector: 'ng0-select',\n exportAs: 'ng0Select',\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, ListModule, OverlayModule],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }],\n host: {\n '[class.ng0-select-open]': 'open()',\n '[class.ng0-select-filterable]': 'filterable()',\n '[class.ng0-select-loading]': 'source().isLoading()',\n '[attr.disabled]': '_isDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': '_isDisabled() ? \"\" : undefined',\n '[attr.tabindex]': '_isDisabled() ? undefined : 0',\n }\n})\nexport class SelectComponent implements ControlValueAccessor {\n // private _resizeObserver?: ResizeObserver;\n private _viewpoerRulerSubscription?: Subscription;\n private _injector = inject(EnvironmentInjector);\n @ViewChild('filterInput') private _filterElementRef?: ElementRef;\n @ViewChild(ListComponent) private _listComponent?: ListComponent;\n private _changeCallback!: (value: any) => void;\n private _touchCallback!: () => void;\n protected readonly _sourceItems = signal<any[] | undefined>(undefined);\n protected readonly _selectedItems = new Set<any>();\n protected readonly _isDisabled = signal<boolean>(false);\n protected _positionStrategy!: FlexibleConnectedPositionStrategy;\n protected _scrollStrategy!: ScrollStrategy;\n private readonly _overlay = inject(Overlay);\n private readonly _localizationService = inject(LocalizationService);\n protected readonly _elementRef = inject(ElementRef<HTMLDivElement>);\n protected readonly _filterValue = signal('');\n private readonly _renderer = inject(Renderer2);\n private readonly _viewportRuler = inject(ViewportRuler);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _value = signal<any>(undefined);\n\n /**\n * Template for rendering each item in the select component.\n */\n @ContentChild(TemplateRef) public itemTemplate?: TemplateRef<any>;\n\n /**\n * The data source for the select component.\n * This can be an array of data, a function that returns an observable of data,\n * or an instance of DataSource.\n */\n public readonly source = input.required<DataSource<any>, DataSourceLike<any>>({\n transform: v => dataSourceAttribute(v)\n });\n\n /** \n * Indicates whether multi selection is enabled or not.\n */\n public readonly multiple = input(false, {\n transform: booleanAttribute\n });\n\n /**\n * Indicates whether to show selection indicator (checkbox/radio) next to each item.\n * Default is false.\n */\n public readonly showSelectionIndicator = input(false, {\n transform: booleanAttribute\n });\n\n /** \n * Indicates whether the dropdown is open or closed.\n */\n public readonly open = model(false);\n\n /**\n * A comparer to compare items for selection.\n */\n public readonly compareBy = input(defaultEqualityComparer, {\n transform: equalityComparerAttribute\n });\n\n /**\n * A fromatter to convert each item to a string for display.\n */\n public readonly formatBy = input(defaultFormatter, {\n transform: objectFormatterAttribute(this._injector)\n });\n\n /**\n * Custom value writer to extract the value of any object while writing values.\n */\n public readonly writeBy = input(defaultValueWriter, {\n transform: valueWriterAttribute\n });\n\n /**\n * Indicates whether the select component is filterable.\n */\n public readonly filterable = input(false, { transform: booleanAttribute });\n\n /**\n * Custom filter function to filter items based on a filter value.\n * Default checks if the item contains the filter value (case-insensitive).\n */\n public readonly filterBy = input(defaultFilter, {\n transform: filterPredicateAttribute\n });\n\n /**\n * Placeholder text for the filter input field.\n */\n public readonly filterPlaceholder = input<string | undefined>(undefined);\n\n /**\n * CSS class or classes to apply to the items.\n */\n public readonly itemClass = input(undefined, {\n transform: CssClassAttribute\n });\n\n /**\n * A function that generates unique ids for each item in the list.\n * If set to a function, it will be called with the item as an argument to generate the id.\n * If set to undefined, no ids will be generated for the items.\n * @default undefined\n */\n public readonly idGenerator = input(undefined, {\n transform: IdGeneratorAttribute\n });\n\n /**\n * Event emitted when the selected value changes.\n */\n @Output() public readonly itemSelect = new EventEmitter<ItemSelectEvent>();\n\n constructor() {\n ['ng0-select', 'form-select'].forEach(c => this._renderer.addClass(this._elementRef.nativeElement, c));\n this._scrollStrategy = this._overlay.scrollStrategies.block();\n\n effect(() => {\n let source = this.source();\n source.load(new DataRequest()).subscribe(res => {\n untracked(() => {\n this._sourceItems.set(res.data);\n this._findAndSelectItems();\n this._changeDetectorRef.markForCheck();\n })\n });\n });\n }\n\n /**\n * Indicates whether the given value is selected.\n * @param item \n * @returns \n */\n public isSelected(value: any): boolean {\n return this._selectedItems.has(value);\n }\n\n /**\n * Selects the given value.\n * @param item \n */\n public select(value: any): void {\n if (this.multiple()) {\n if (!this._selectedItems.has(value)) {\n this._selectedItems.add(value);\n this._updateValue();\n this._changeCallback?.(this._value());\n }\n } else {\n this._selectedItems.clear();\n this._selectedItems.add(value);\n this._updateValue();\n this._changeCallback?.(this._value());\n }\n }\n\n /**\n * Deselects the given value.\n * @param item \n */\n public deselect(value: any): void {\n this._selectedItems.delete(value);\n this._updateValue();\n this._changeCallback?.(this._value());\n }\n\n /**\n * Toggles the selection state of the given value.\n * @param item\n */\n public toggle(value: any): void {\n if (this.isSelected(value)) {\n this.deselect(value);\n } else {\n this.select(value);\n }\n }\n\n writeValue(obj: any): void {\n if (this.multiple()) {\n if (obj === null || obj === undefined) {\n obj = [];\n } else if (!Array.isArray(obj)) {\n throw Error('invalid value. Expected an array in multiple selection mode.');\n }\n }\n\n this._value.set(obj);\n this._findAndSelectItems();\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this._changeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._touchCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n }\n\n private _findAndSelectItems(): void {\n let value = this._value();\n let compareBy = this.compareBy();\n let sourceItems = this._sourceItems();\n this._selectedItems.clear();\n if (sourceItems == undefined || sourceItems.length == 0) {\n return;\n }\n\n let findAndSelect = (v: any) => {\n let index = sourceItems.findIndex(sourceItem => compareBy(sourceItem, v));\n if (index > -1) {\n let item = sourceItems.at(index)!;\n this._selectedItems.add(item);\n }\n };\n\n if (this.multiple()) {\n if (Array.isArray(value)) {\n (value as any[]).forEach(v => findAndSelect(v));\n }\n } else {\n findAndSelect(value);\n }\n }\n\n private _updateValue(): void {\n let value: any;\n\n if (this.multiple()) {\n let values: any[] = [];\n this._selectedItems.forEach(v => {\n values.push(this.writeBy()(v));\n });\n value = values;\n } else {\n if (this._selectedItems.size > 0) {\n let first = this._selectedItems.values().next().value;\n value = this.writeBy()(first);\n } else {\n value = undefined;\n }\n }\n\n this._value.set(value);\n }\n\n protected _onOverlayAttach() {\n this._listenToResizeEvents();\n\n setTimeout(() => {\n if (this.filterable()) {\n this._filterElementRef?.nativeElement.focus();\n }\n\n this._listComponent!.writeValue(this._value());\n // if (this._activeOptionIndex() > -1) {\n // this._listComponent?.active(this._activeOptionIndex());\n // }\n }, 0);\n }\n\n protected _onOverlayDetach() {\n this._unlistenFromResizeEvents();\n this._elementRef!.nativeElement.focus();\n this._filterValue.set('');\n this.open.set(false);\n }\n\n protected _onListSelectionChange(e: ListItemSelectEvent) {\n let value = e.item.value();\n\n if (this.multiple()) {\n this.toggle(value);\n } else {\n this.select(value);\n }\n\n this.itemSelect.emit({ value: e.value, select: this });\n this._changeDetectorRef.detectChanges();\n if (!this.multiple()) {\n this.open.set(false);\n }\n }\n\n protected _filterPredicate = computed(() => {\n let filterValue = this._filterValue();\n let filterBy = this.filterBy();\n\n return (item: any) => filterBy(item, filterValue);\n })\n\n protected _onFilterKeydown(e: KeyboardEvent) {\n let keys = ['ArrowDown', 'ArrowUp', 'Enter', 'Home', 'End'];\n\n if (e.key === 'Tab') {\n e.preventDefault();\n this.open.set(false);\n }\n\n if (keys.includes(e.key)) {\n e.preventDefault();\n const newEvent = new KeyboardEvent(e.type, e);\n this._listComponent?.elementRef.nativeElement.dispatchEvent(newEvent);\n }\n }\n\n private _listenToResizeEvents() {\n this._viewportRuler.change().subscribe(x => {\n this.open.set(false);\n });\n\n // this._resizeObserver = new ResizeObserver(e => {\n // // update overlay size\n // // const width = (e[0].target as HTMLDivElement).offsetWidth;\n // // this._connectedOverlay.overlayRef.updateSize({ width });\n // });\n\n // this._resizeObserver.observe(this._elementRef.nativeElement);\n }\n\n private _unlistenFromResizeEvents() {\n this._viewpoerRulerSubscription?.unsubscribe();\n this._viewpoerRulerSubscription = undefined;\n\n // this._resizeObserver?.disconnect();\n // this._resizeObserver = undefined;\n }\n\n @HostListener('keydown', ['$event'])\n protected _onHostKeydown(e: KeyboardEvent) {\n let sourceItems = this._sourceItems()\n let itemsCount = sourceItems?.length || 0;\n\n if (this._isDisabled() || !sourceItems || itemsCount === 0) {\n return;\n }\n\n if (this.open()) {\n const newEvent = new KeyboardEvent(e.type, e);\n this._listComponent?.elementRef.nativeElement.dispatchEvent(newEvent);\n return;\n } else {\n if (e.key == 'Enter') {\n this.open.set(true);\n e.preventDefault();\n return;\n }\n }\n\n if (this.multiple()) {\n return;\n }\n\n let selectedItemindex: number;\n if (this._selectedItems.size == 0) {\n selectedItemindex = -1\n } else {\n let firstValue = this._selectedItems.values().next().value;\n selectedItemindex = sourceItems.findIndex(i => i === firstValue);\n }\n\n let newItemIndex = selectedItemindex;\n\n switch (e.key) {\n case 'ArrowDown':\n if (selectedItemindex < itemsCount - 1) {\n newItemIndex = selectedItemindex + 1;\n this.select(sourceItems[newItemIndex]);\n }\n e.preventDefault();\n break;\n case 'ArrowUp':\n if (selectedItemindex > 0) {\n newItemIndex = selectedItemindex - 1;\n this.select(sourceItems[newItemIndex]);\n }\n e.preventDefault();\n break;\n case 'Home':\n if (itemsCount > 0) {\n newItemIndex = 0;\n this.select(sourceItems[0]);\n }\n e.preventDefault();\n break;\n case 'End':\n if (itemsCount > 0) {\n newItemIndex = itemsCount - 1;\n this.select(sourceItems[newItemIndex]);\n }\n e.preventDefault();\n break;\n }\n\n if (selectedItemindex != newItemIndex!) {\n this.itemSelect.emit({ value: sourceItems[newItemIndex], select: this });\n this._changeDetectorRef.markForCheck();\n }\n }\n\n @HostListener('click', ['$event'])\n protected _onHostClick(e: MouseEvent) {\n if (this._isDisabled() || this.source().isLoading()) {\n return;\n }\n\n this.open.update(x => !x);\n this._touchCallback?.();\n }\n}\n\n\n/**\n * Event emitted when the selection state of the select component changes by user interaction.\n */\nexport interface ItemSelectEvent {\n /**\n * The value of the item that was selected or deselected.\n */\n value: any;\n\n /**\n * The select component that emitted the event.\n */\n readonly select: SelectComponent\n}\n","@if(multiple()) {\n\n@for(item of _selectedItems.values(); track $index; let last=$last) {\n{{formatBy()(item)}}@if(!last) {,}\n}\n\n} @else {\n@if(_selectedItems.size > 0) {\n{{formatBy()(_selectedItems.values().next().value)}}\n}\n}\n\n@if(source().isLoading()) {\n<div class=\"spinner-grow text-secondary spinner-grow-sm ng0-select-spinner\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n</div>\n\n&nbsp; <!-- This space is required to prevent layout shift after loading indicator hides. -->\n}\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"_elementRef.nativeElement\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown']\"\n [cdkConnectedOverlayWidth]=\"_elementRef.nativeElement.clientWidth\"\n (overlayOutsideClick)=\"this.open.set(false)\"\n (attach)=\"_onOverlayAttach();\"\n (detach)=\"_onOverlayDetach()\">\n\n @if(filterable()) {\n <div class=\"ng0-select-filter-container\">\n <input #filterInput\n type=\"text\"\n class=\"ng0-select-filter-input\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (input)=\"_filterValue.set($event.target.value)\"\n (keydown)=\"_onFilterKeydown($event)\">\n </div>\n }\n\n <ng0-select-list #list\n [source]=\"_sourceItems()\"\n [multiple]=\"multiple()\"\n [formatBy]=\"formatBy()\"\n [compareBy]=\"compareBy()\"\n [itemClass]=\"itemClass()\"\n [showSelectionIndicator]=\"showSelectionIndicator()\"\n [itemTemplate]=\"itemTemplate\"\n [filterBy]=\"_filterPredicate()\"\n focusMode=\"none\"\n (mousedown)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n (itemSelect)=\"_onListSelectionChange($event)\">\n </ng0-select-list>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { SelectComponent } from './select.component';\n\nconst Items = [SelectComponent]\n\n/**\n * Select module.\n */\n@NgModule({\n imports: Items,\n exports: Items\n})\nexport class SelectModule { }\n","// export * from './types';\nexport * from './select.component';\nexport * from './select.module';\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-select.mjs","sources":["../../../projects/ng0/components/select/select.component.ts","../../../projects/ng0/components/select/select.component.html","../../../projects/ng0/components/select/select.module.ts","../../../projects/ng0/components/select/public-api.ts","../../../projects/ng0/components/select/bootkit-ng0-components-select.ts"],"sourcesContent":["import { Component, ElementRef, Renderer2, input, signal, model, HostListener, inject, forwardRef, ViewChild, TemplateRef, ContentChild, ViewEncapsulation, ChangeDetectionStrategy, booleanAttribute, ChangeDetectorRef, effect, computed, untracked, Output, EventEmitter, EnvironmentInjector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { dataSourceAttribute, DataSource, DataSourceLike, DataRequest } from '@bootkit/ng0/data';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayModule, ScrollStrategy, ViewportRuler } from '@angular/cdk/overlay';\nimport { Subscription } from 'rxjs';\nimport { objectFormatterAttribute, defaultFormatter, LocalizationService } from '@bootkit/ng0/localization';\nimport { ListComponent, ListModule, ListItemSelectEvent } from '@bootkit/ng0/components/list';\nimport {\n CssClassAttribute, equalityComparerAttribute, defaultEqualityComparer, valueWriterAttribute, defaultValueWriter,\n IdGeneratorAttribute, defaultFilter, filterPredicateAttribute\n} from '@bootkit/ng0/common';\n\n/**\n * Select component that allows users to choose an option from a dropdown list.\n */\n@Component({\n selector: 'ng0-select',\n exportAs: 'ng0Select',\n templateUrl: './select.component.html',\n styleUrl: './select.component.scss',\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, ListModule, OverlayModule],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }],\n host: {\n '[class.ng0-select-open]': 'open()',\n '[class.ng0-select-filterable]': 'filterable()',\n '[class.ng0-select-loading]': 'source().isLoading()',\n '[attr.disabled]': '_isDisabled() ? \"\" : undefined',\n '[attr.aria-disabled]': '_isDisabled() ? \"\" : undefined',\n '[attr.tabindex]': '_isDisabled() ? undefined : 0',\n }\n})\nexport class SelectComponent implements ControlValueAccessor {\n // private _resizeObserver?: ResizeObserver;\n private _viewpoerRulerSubscription?: Subscription;\n private readonly _injector = inject(EnvironmentInjector);\n @ViewChild('filterInput') private _filterElementRef?: ElementRef;\n @ViewChild(ListComponent) private _listComponent?: ListComponent;\n private _changeCallback!: (value: any) => void;\n private _touchCallback!: () => void;\n protected readonly _sourceItems = signal<any[] | undefined>(undefined);\n protected readonly _selectedItems = new Set<any>();\n protected readonly _isDisabled = signal<boolean>(false);\n protected _positionStrategy!: FlexibleConnectedPositionStrategy;\n protected _scrollStrategy!: ScrollStrategy;\n private readonly _overlay = inject(Overlay);\n private readonly _localizationService = inject(LocalizationService);\n protected readonly _elementRef = inject(ElementRef<HTMLDivElement>);\n protected readonly _filterValue = signal('');\n private readonly _renderer = inject(Renderer2);\n private readonly _viewportRuler = inject(ViewportRuler);\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n private readonly _value = signal<any>(undefined);\n\n /**\n * Template for rendering each item in the select component.\n */\n @ContentChild(TemplateRef) public itemTemplate?: TemplateRef<any>;\n\n /**\n * The data source for the select component.\n * This can be an array of data, a function that returns an observable of data,\n * or an instance of DataSource.\n */\n public readonly source = input.required<DataSource<any>, DataSourceLike<any>>({\n transform: v => dataSourceAttribute(v)\n });\n\n /** \n * Indicates whether multi selection is enabled or not.\n */\n public readonly multiple = input(false, {\n transform: booleanAttribute\n });\n\n /**\n * Indicates whether to show selection indicator (checkbox/radio) next to each item.\n * Default is false.\n */\n public readonly showSelectionIndicator = input(false, {\n transform: booleanAttribute\n });\n\n /** \n * Indicates whether the dropdown is open or closed.\n */\n public readonly open = model(false);\n\n /**\n * A comparer to compare items for selection.\n */\n public readonly compareBy = input(defaultEqualityComparer, {\n transform: equalityComparerAttribute\n });\n\n /**\n * A fromatter to convert each item to a string for display.\n */\n public readonly formatBy = input(defaultFormatter, {\n transform: objectFormatterAttribute(this._injector)\n });\n\n /**\n * Custom value writer to extract the value of any object while writing values.\n */\n public readonly writeBy = input(defaultValueWriter, {\n transform: valueWriterAttribute\n });\n\n /**\n * Indicates whether the select component is filterable.\n */\n public readonly filterable = input(false, { transform: booleanAttribute });\n\n /**\n * Custom filter function to filter items based on a filter value.\n * Default checks if the item contains the filter value (case-insensitive).\n */\n public readonly filterBy = input(defaultFilter, {\n transform: filterPredicateAttribute\n });\n\n /**\n * Placeholder text for the filter input field.\n */\n public readonly filterPlaceholder = input<string | undefined>(undefined);\n\n /**\n * CSS class or classes to apply to the items.\n */\n public readonly itemClass = input(undefined, {\n transform: CssClassAttribute\n });\n\n /**\n * A function that generates unique ids for each item in the list.\n * If set to a function, it will be called with the item as an argument to generate the id.\n * If set to undefined, no ids will be generated for the items.\n * @default undefined\n */\n public readonly idGenerator = input(undefined, {\n transform: IdGeneratorAttribute\n });\n\n /**\n * Event emitted when the selected value changes.\n */\n @Output() public readonly itemSelect = new EventEmitter<ItemSelectEvent>();\n\n constructor() {\n ['form-select'].forEach(c => this._renderer.addClass(this._elementRef.nativeElement, c));\n this._scrollStrategy = this._overlay.scrollStrategies.block();\n\n effect(() => {\n let source = this.source();\n source.load(new DataRequest()).subscribe(res => {\n untracked(() => {\n this._sourceItems.set(res.data);\n this._findAndSelectItems();\n this._changeDetectorRef.markForCheck();\n })\n });\n });\n }\n\n /**\n * Indicates whether the given value is selected.\n * @param item \n * @returns \n */\n public isSelected(value: any): boolean {\n return this._selectedItems.has(value);\n }\n\n /**\n * Selects the given value.\n * @param item \n */\n public select(value: any): void {\n if (this.multiple()) {\n if (!this._selectedItems.has(value)) {\n this._selectedItems.add(value);\n this._updateValue();\n this._changeCallback?.(this._value());\n }\n } else {\n this._selectedItems.clear();\n this._selectedItems.add(value);\n this._updateValue();\n this._changeCallback?.(this._value());\n }\n }\n\n /**\n * Deselects the given value.\n * @param item \n */\n public deselect(value: any): void {\n this._selectedItems.delete(value);\n this._updateValue();\n this._changeCallback?.(this._value());\n }\n\n /**\n * Toggles the selection state of the given value.\n * @param item\n */\n public toggle(value: any): void {\n if (this.isSelected(value)) {\n this.deselect(value);\n } else {\n this.select(value);\n }\n }\n\n writeValue(obj: any): void {\n if (this.multiple()) {\n if (obj === null || obj === undefined) {\n obj = [];\n } else if (!Array.isArray(obj)) {\n throw Error('invalid value. Expected an array in multiple selection mode.');\n }\n }\n\n this._value.set(obj);\n this._findAndSelectItems();\n this._changeDetectorRef.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this._changeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._touchCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._isDisabled.set(isDisabled);\n }\n\n private _findAndSelectItems(): void {\n let value = this._value();\n let compareBy = this.compareBy();\n let sourceItems = this._sourceItems();\n this._selectedItems.clear();\n if (sourceItems == undefined || sourceItems.length == 0) {\n return;\n }\n\n let findAndSelect = (v: any) => {\n let index = sourceItems.findIndex(sourceItem => compareBy(sourceItem, v));\n if (index > -1) {\n let item = sourceItems.at(index)!;\n this._selectedItems.add(item);\n }\n };\n\n if (this.multiple()) {\n if (Array.isArray(value)) {\n (value as any[]).forEach(v => findAndSelect(v));\n }\n } else {\n findAndSelect(value);\n }\n }\n\n private _updateValue(): void {\n let value: any;\n\n if (this.multiple()) {\n let values: any[] = [];\n this._selectedItems.forEach(v => {\n values.push(this.writeBy()(v));\n });\n value = values;\n } else {\n if (this._selectedItems.size > 0) {\n let first = this._selectedItems.values().next().value;\n value = this.writeBy()(first);\n } else {\n value = undefined;\n }\n }\n\n this._value.set(value);\n }\n\n protected _onOverlayAttach() {\n this._listenToResizeEvents();\n\n setTimeout(() => {\n if (this.filterable()) {\n this._filterElementRef?.nativeElement.focus();\n }\n\n this._listComponent!.writeValue(this._value());\n // if (this._activeOptionIndex() > -1) {\n // this._listComponent?.active(this._activeOptionIndex());\n // }\n }, 0);\n }\n\n protected _onOverlayDetach() {\n this._unlistenFromResizeEvents();\n this._elementRef!.nativeElement.focus();\n this._filterValue.set('');\n this.open.set(false);\n }\n\n protected _onListSelectionChange(e: ListItemSelectEvent) {\n let value = e.item.value();\n\n if (this.multiple()) {\n this.toggle(value);\n } else {\n this.select(value);\n }\n\n this.itemSelect.emit({ value: e.value, select: this });\n this._changeDetectorRef.detectChanges();\n if (!this.multiple()) {\n this.open.set(false);\n }\n }\n\n protected _filterPredicate = computed(() => {\n let filterValue = this._filterValue();\n let filterBy = this.filterBy();\n\n return (item: any) => filterBy(item, filterValue);\n })\n\n protected _onFilterKeydown(e: KeyboardEvent) {\n let keys = ['ArrowDown', 'ArrowUp', 'Enter', 'Home', 'End'];\n\n if (e.key === 'Tab') {\n e.preventDefault();\n this.open.set(false);\n }\n\n if (keys.includes(e.key)) {\n e.preventDefault();\n const newEvent = new KeyboardEvent(e.type, e);\n this._listComponent?.elementRef.nativeElement.dispatchEvent(newEvent);\n }\n }\n\n private _listenToResizeEvents() {\n this._viewportRuler.change().subscribe(x => {\n this.open.set(false);\n });\n\n // this._resizeObserver = new ResizeObserver(e => {\n // // update overlay size\n // // const width = (e[0].target as HTMLDivElement).offsetWidth;\n // // this._connectedOverlay.overlayRef.updateSize({ width });\n // });\n\n // this._resizeObserver.observe(this._elementRef.nativeElement);\n }\n\n private _unlistenFromResizeEvents() {\n this._viewpoerRulerSubscription?.unsubscribe();\n this._viewpoerRulerSubscription = undefined;\n\n // this._resizeObserver?.disconnect();\n // this._resizeObserver = undefined;\n }\n\n @HostListener('keydown', ['$event'])\n protected _onHostKeydown(e: KeyboardEvent) {\n let sourceItems = this._sourceItems()\n let itemsCount = sourceItems?.length || 0;\n\n if (this._isDisabled() || !sourceItems || itemsCount === 0) {\n return;\n }\n\n if (this.open()) {\n const newEvent = new KeyboardEvent(e.type, e);\n this._listComponent?.elementRef.nativeElement.dispatchEvent(newEvent);\n return;\n } else {\n if (e.key == 'Enter') {\n this.open.set(true);\n e.preventDefault();\n return;\n }\n }\n\n if (this.multiple()) {\n return;\n }\n\n let selectedItemindex: number;\n if (this._selectedItems.size == 0) {\n selectedItemindex = -1\n } else {\n let firstValue = this._selectedItems.values().next().value;\n selectedItemindex = sourceItems.findIndex(i => i === firstValue);\n }\n\n let newItemIndex = selectedItemindex;\n\n switch (e.key) {\n case 'ArrowDown':\n if (selectedItemindex < itemsCount - 1) {\n newItemIndex = selectedItemindex + 1;\n this.select(sourceItems[newItemIndex]);\n }\n e.preventDefault();\n break;\n case 'ArrowUp':\n if (selectedItemindex > 0) {\n newItemIndex = selectedItemindex - 1;\n this.select(sourceItems[newItemIndex]);\n }\n e.preventDefault();\n break;\n case 'Home':\n if (itemsCount > 0) {\n newItemIndex = 0;\n this.select(sourceItems[0]);\n }\n e.preventDefault();\n break;\n case 'End':\n if (itemsCount > 0) {\n newItemIndex = itemsCount - 1;\n this.select(sourceItems[newItemIndex]);\n }\n e.preventDefault();\n break;\n }\n\n if (selectedItemindex != newItemIndex!) {\n this.itemSelect.emit({ value: sourceItems[newItemIndex], select: this });\n this._changeDetectorRef.markForCheck();\n }\n }\n\n @HostListener('click', ['$event'])\n protected _onHostClick(e: MouseEvent) {\n if (this._isDisabled() || this.source().isLoading()) {\n return;\n }\n\n this.open.update(x => !x);\n this._touchCallback?.();\n }\n}\n\n\n/**\n * Event emitted when the selection state of the select component changes by user interaction.\n */\nexport interface ItemSelectEvent {\n /**\n * The value of the item that was selected or deselected.\n */\n value: any;\n\n /**\n * The select component that emitted the event.\n */\n readonly select: SelectComponent\n}\n","@if(multiple()) {\n\n@for(item of _selectedItems.values(); track $index; let last=$last) {\n{{formatBy()(item)}}@if(!last) {,}\n}\n\n} @else {\n@if(_selectedItems.size > 0) {\n{{formatBy()(_selectedItems.values().next().value)}}\n}\n}\n\n@if(source().isLoading()) {\n<div class=\"spinner-grow text-secondary spinner-grow-sm ng0-select-spinner\" role=\"status\">\n <span class=\"visually-hidden\">Loading...</span>\n</div>\n\n&nbsp; <!-- This space is required to prevent layout shift after loading indicator hides. -->\n}\n\n<ng-template cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"_elementRef.nativeElement\"\n [cdkConnectedOverlayOpen]=\"open()\"\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown']\"\n [cdkConnectedOverlayWidth]=\"_elementRef.nativeElement.clientWidth\"\n (overlayOutsideClick)=\"this.open.set(false)\"\n (attach)=\"_onOverlayAttach();\"\n (detach)=\"_onOverlayDetach()\">\n\n @if(filterable()) {\n <div class=\"ng0-select-filter-container\">\n <input #filterInput\n type=\"text\"\n class=\"ng0-select-filter-input\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (input)=\"_filterValue.set($event.target.value)\"\n (keydown)=\"_onFilterKeydown($event)\">\n </div>\n }\n\n <ng0-select-list #list\n [source]=\"_sourceItems()\"\n [multiple]=\"multiple()\"\n [formatBy]=\"formatBy()\"\n [compareBy]=\"compareBy()\"\n [itemClass]=\"itemClass()\"\n [showSelectionIndicator]=\"showSelectionIndicator()\"\n [itemTemplate]=\"itemTemplate\"\n [filterBy]=\"_filterPredicate()\"\n focusMode=\"none\"\n (mousedown)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n (itemSelect)=\"_onListSelectionChange($event)\">\n </ng0-select-list>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { SelectComponent } from './select.component';\n\nconst Items = [SelectComponent]\n\n/**\n * Select module.\n */\n@NgModule({\n imports: Items,\n exports: Items\n})\nexport class SelectModule { }\n","// export * from './types';\nexport * from './select.component';\nexport * from './select.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;AAaA;;AAEG;MAwBU,eAAe,CAAA;;AAEhB,IAAA,0BAA0B;AACjB,IAAA,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtB,IAAA,iBAAiB;AACjB,IAAA,cAAc;AACxC,IAAA,eAAe;AACf,IAAA,cAAc;AACH,IAAA,YAAY,GAAG,MAAM,CAAoB,SAAS,wDAAC;AACnD,IAAA,cAAc,GAAG,IAAI,GAAG,EAAO;AAC/B,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,uDAAC;AAC7C,IAAA,iBAAiB;AACjB,IAAA,eAAe;AACR,IAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,IAAA,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAChD,IAAA,WAAW,GAAG,MAAM,EAAC,UAA0B,EAAC;AAChD,IAAA,YAAY,GAAG,MAAM,CAAC,EAAE,wDAAC;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC9C,IAAA,MAAM,GAAG,MAAM,CAAM,SAAS,kDAAC;AAEhD;;AAEG;AAC+B,IAAA,YAAY;AAE9C;;;;AAIG;AACa,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,yCACnC,SAAS,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAA,CAAA,GAAA,CADoC;YAC1E,SAAS,EAAE,CAAC,IAAI,mBAAmB,CAAC,CAAC;AACxC,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;IACa,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAClC,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADS;AACpC,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;AAGG;IACa,sBAAsB,GAAG,KAAK,CAAC,KAAK,0DAChD,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CADuB;AAClD,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACa,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,gDAAC;AAEnC;;AAEE;IACc,SAAS,GAAG,KAAK,CAAC,uBAAuB,6CACrD,SAAS,EAAE,yBAAyB,EAAA,CAAA,GAAA,CADmB;AACvD,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACa,IAAA,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAC7C,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAA,CAAA,GAAA,CADJ;AAC/C,YAAA,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,SAAS;AACrD,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;IACa,OAAO,GAAG,KAAK,CAAC,kBAAkB,2CAC9C,SAAS,EAAE,oBAAoB,EAAA,CAAA,GAAA,CADiB;AAChD,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACa,IAAA,UAAU,GAAG,KAAK,CAAC,KAAK,8CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE1E;;;AAGG;IACa,QAAQ,GAAG,KAAK,CAAC,aAAa,4CAC1C,SAAS,EAAE,wBAAwB,EAAA,CAAA,GAAA,CADS;AAC5C,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACa,IAAA,iBAAiB,GAAG,KAAK,CAAqB,SAAS,6DAAC;AAExE;;AAEG;IACa,SAAS,GAAG,KAAK,CAAC,SAAS,6CACvC,SAAS,EAAE,iBAAiB,EAAA,CAAA,GAAA,CADa;AACzC,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;;;;AAKG;IACa,WAAW,GAAG,KAAK,CAAC,SAAS,+CACzC,SAAS,EAAE,oBAAoB,EAAA,CAAA,GAAA,CADY;AAC3C,YAAA,SAAS,EAAE;AACd,SAAA,CAAA,CAAA,CAAC;AAEF;;AAEG;AACuB,IAAA,UAAU,GAAG,IAAI,YAAY,EAAmB;AAE1E,IAAA,WAAA,GAAA;QACI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAE7D,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;gBAC3C,SAAS,CAAC,MAAK;oBACX,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC/B,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAC1C,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;AACI,IAAA,UAAU,CAAC,KAAU,EAAA;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IACzC;AAEA;;;AAGG;AACI,IAAA,MAAM,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC9B,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACzC;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzC;IACJ;AAEA;;;AAGG;AACI,IAAA,QAAQ,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IACzC;AAEA;;;AAGE;AACK,IAAA,MAAM,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxB;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;IACJ;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;gBACnC,GAAG,GAAG,EAAE;YACZ;iBAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC5B,gBAAA,MAAM,KAAK,CAAC,8DAA8D,CAAC;YAC/E;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;IAC1C;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACpB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;IAC7B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;IAC5B;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;IAEQ,mBAAmB,GAAA;AACvB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;QAC3B,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YACrD;QACJ;AAEA,QAAA,IAAI,aAAa,GAAG,CAAC,CAAM,KAAI;AAC3B,YAAA,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACzE,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAE;AACjC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YACjC;AACJ,QAAA,CAAC;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrB,gBAAA,KAAe,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YACnD;QACJ;aAAO;YACH,aAAa,CAAC,KAAK,CAAC;QACxB;IACJ;IAEQ,YAAY,GAAA;AAChB,QAAA,IAAI,KAAU;AAEd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB,IAAI,MAAM,GAAU,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;gBAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;YACF,KAAK,GAAG,MAAM;QAClB;aAAO;YACH,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE;AAC9B,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;gBACrD,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;YACjC;iBAAO;gBACH,KAAK,GAAG,SAAS;YACrB;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IAEU,gBAAgB,GAAA;QACtB,IAAI,CAAC,qBAAqB,EAAE;QAE5B,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,KAAK,EAAE;YACjD;YAEA,IAAI,CAAC,cAAe,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;;;;QAIlD,CAAC,EAAE,CAAC,CAAC;IACT;IAEU,gBAAgB,GAAA;QACtB,IAAI,CAAC,yBAAyB,EAAE;AAChC,QAAA,IAAI,CAAC,WAAY,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEU,IAAA,sBAAsB,CAAC,CAAsB,EAAA;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACtB;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACtD,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;IACJ;AAEU,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE9B,OAAO,CAAC,IAAS,KAAK,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;AACrD,IAAA,CAAC,4DAAC;AAEQ,IAAA,gBAAgB,CAAC,CAAgB,EAAA;AACvC,QAAA,IAAI,IAAI,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;AAE3D,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;YACjB,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACxB;QAEA,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACtB,CAAC,CAAC,cAAc,EAAE;YAClB,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;QACzE;IACJ;IAEQ,qBAAqB,GAAA;QACzB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,IAAG;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,CAAC,CAAC;;;;;;;IASN;IAEQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,0BAA0B,EAAE,WAAW,EAAE;AAC9C,QAAA,IAAI,CAAC,0BAA0B,GAAG,SAAS;;;IAI/C;AAGU,IAAA,cAAc,CAAC,CAAgB,EAAA;AACrC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,QAAA,IAAI,UAAU,GAAG,WAAW,EAAE,MAAM,IAAI,CAAC;AAEzC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,CAAC,EAAE;YACxD;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;YACrE;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACnB,CAAC,CAAC,cAAc,EAAE;gBAClB;YACJ;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;AAEA,QAAA,IAAI,iBAAyB;QAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,EAAE;YAC/B,iBAAiB,GAAG,CAAC,CAAC;QAC1B;aAAO;AACH,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC1D,YAAA,iBAAiB,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;QACpE;QAEA,IAAI,YAAY,GAAG,iBAAiB;AAEpC,QAAA,QAAQ,CAAC,CAAC,GAAG;AACT,YAAA,KAAK,WAAW;AACZ,gBAAA,IAAI,iBAAiB,GAAG,UAAU,GAAG,CAAC,EAAE;AACpC,oBAAA,YAAY,GAAG,iBAAiB,GAAG,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1C;gBACA,CAAC,CAAC,cAAc,EAAE;gBAClB;AACJ,YAAA,KAAK,SAAS;AACV,gBAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACvB,oBAAA,YAAY,GAAG,iBAAiB,GAAG,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1C;gBACA,CAAC,CAAC,cAAc,EAAE;gBAClB;AACJ,YAAA,KAAK,MAAM;AACP,gBAAA,IAAI,UAAU,GAAG,CAAC,EAAE;oBAChB,YAAY,GAAG,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC/B;gBACA,CAAC,CAAC,cAAc,EAAE;gBAClB;AACJ,YAAA,KAAK,KAAK;AACN,gBAAA,IAAI,UAAU,GAAG,CAAC,EAAE;AAChB,oBAAA,YAAY,GAAG,UAAU,GAAG,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1C;gBACA,CAAC,CAAC,cAAc,EAAE;gBAClB;;AAGR,QAAA,IAAI,iBAAiB,IAAI,YAAa,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACxE,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC1C;IACJ;AAGU,IAAA,YAAY,CAAC,CAAa,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE;YACjD;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,IAAI;IAC3B;wGAlaS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,smEAdb,CAAC;AACR,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE;aACV,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAmCY,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EApBd,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5C5B,suEAyDA,EAAA,MAAA,EAAA,CAAA,0rEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjCc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAexC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,SAAS;+BACI,YAAY,EAAA,QAAA,EACZ,WAAW,EAAA,UAAA,EAGT,IAAI,iBACD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,EAAA,SAAA,EACvC,CAAC;AACR,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE;AACV,yBAAA,CAAC,EAAA,IAAA,EACI;AACF,wBAAA,yBAAyB,EAAE,QAAQ;AACnC,wBAAA,+BAA+B,EAAE,cAAc;AAC/C,wBAAA,4BAA4B,EAAE,sBAAsB;AACpD,wBAAA,iBAAiB,EAAE,gCAAgC;AACnD,wBAAA,sBAAsB,EAAE,gCAAgC;AACxD,wBAAA,iBAAiB,EAAE,+BAA+B;AACrD,qBAAA,EAAA,QAAA,EAAA,suEAAA,EAAA,MAAA,EAAA,CAAA,0rEAAA,CAAA,EAAA;;sBAMA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,aAAa;;sBAoBvB,YAAY;uBAAC,WAAW;;sBA0FxB;;sBA+NA,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAwElC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AE9brC,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC;AAE/B;;AAEG;MAKU,YAAY,CAAA;wGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAZ,YAAY,EAAA,OAAA,EAAA,CATV,eAAe,CAAA,EAAA,OAAA,EAAA,CAAf,eAAe,CAAA,EAAA,CAAA;AASjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAHZ,KAAK,CAAA,EAAA,CAAA;;4FAGL,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACXD;;ACAA;;AAEG;;;;"}
@@ -12,7 +12,8 @@ class SidenavComponent {
12
12
  _document = inject(DOCUMENT);
13
13
  _renderer = inject(Renderer2);
14
14
  _backdropRef;
15
- _backdropClickHandlerUnlisten;
15
+ _backdropClickUnlistenFunc;
16
+ _backdropAnimationEndUnlistenFunc;
16
17
  _platformId = inject(PLATFORM_ID);
17
18
  _isPlatformServer = isPlatformServer(this._platformId);
18
19
  _resizeSubscription;
@@ -64,46 +65,30 @@ class SidenavComponent {
64
65
  */
65
66
  backdropClick = new EventEmitter();
66
67
  constructor() {
67
- this._createBackdrop();
68
- effect(() => {
69
- const fixed = this.fixedInViewport();
70
- const cssClass = 'ng0-sidenav-backdrop-fullscreen';
71
- if (fixed) {
72
- this._renderer.addClass(this._backdropRef, cssClass);
73
- }
74
- else {
75
- this._renderer.removeClass(this._backdropRef, cssClass);
76
- }
77
- });
78
- effect(() => {
79
- const zIndex = this.zIndex();
80
- if (isFinite(zIndex)) {
81
- this._renderer.setStyle(this._backdropRef, 'z-index', zIndex);
82
- }
83
- else {
84
- this._renderer.removeStyle(this._backdropRef, 'z-index');
85
- }
86
- });
87
68
  effect(() => {
88
69
  var mode = this.mode();
89
70
  var open = this.open();
90
71
  var hasBackdrop = this.hasBackdrop();
91
- const cssClass = 'ng0-sidenav-backdrop-show';
92
- if (mode == 'over' && open && hasBackdrop) {
93
- this._renderer.addClass(this._backdropRef, cssClass);
94
- // disable body scroll when sidenav is open and fixedInViewport is true
95
- if (!this._isPlatformServer && this.fixedInViewport()) {
96
- const body = this._document.getElementsByTagName('body')[0];
97
- this._bodyOverflowStyle = body.style.overflow;
98
- this._renderer.setStyle(body, 'overflow', 'hidden');
72
+ if (hasBackdrop) {
73
+ if (mode == 'over' && open) {
74
+ this._createBackdrop();
75
+ // disable body scroll when sidenav is open and fixedInViewport is true
76
+ if (!this._isPlatformServer && this.fixedInViewport()) {
77
+ const body = this._document.getElementsByTagName('body')[0];
78
+ this._bodyOverflowStyle = body.style.overflow;
79
+ this._renderer.setStyle(body, 'overflow', 'hidden');
80
+ }
99
81
  }
100
- }
101
- else {
102
- this._renderer.removeClass(this._backdropRef, cssClass);
103
- // restore body scroll when sidenav is closed
104
- if (!this._isPlatformServer && this.fixedInViewport()) {
105
- const body = document.getElementsByTagName('body')[0];
106
- this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);
82
+ else {
83
+ // trigger closing animation
84
+ if (this._backdropRef) {
85
+ this._renderer.addClass(this._backdropRef, 'ng0-sidenav-backdrop-closing');
86
+ }
87
+ // restore body scroll when sidenav is closed
88
+ if (!this._isPlatformServer && this.fixedInViewport()) {
89
+ const body = document.getElementsByTagName('body')[0];
90
+ this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);
91
+ }
107
92
  }
108
93
  }
109
94
  });
@@ -139,26 +124,40 @@ class SidenavComponent {
139
124
  }
140
125
  _createBackdrop() {
141
126
  this._backdropRef = this._renderer.createElement('div');
142
- ['ng0-sidenav-backdrop', 'ng0-sidenav-backdrop-show'].forEach(x => this._renderer.addClass(this._backdropRef, x));
143
- this._backdropClickHandlerUnlisten = this._renderer.listen(this._backdropRef, 'click', (e) => {
127
+ let classes = ['ng0-sidenav-backdrop', 'ng0-sidenav-backdrop-opening'];
128
+ if (this.fixedInViewport()) {
129
+ classes.push('ng0-sidenav-backdrop-fullscreen');
130
+ }
131
+ classes.forEach(x => this._renderer.addClass(this._backdropRef, x));
132
+ this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropRef, 'click', (e) => {
144
133
  this.backdropClick.emit(e);
145
134
  });
135
+ this._backdropAnimationEndUnlistenFunc = this._renderer.listen(this._backdropRef, 'animationend', (e) => {
136
+ if (!this.open()) {
137
+ this._destroyBackdrop();
138
+ }
139
+ });
140
+ if (this.zIndex() != undefined) {
141
+ this._renderer.setStyle(this._backdropRef, 'z-index', this.zIndex());
142
+ }
146
143
  // Move backdrop element before Host element
147
- const hostElm = this.elmentRef.nativeElement;
148
- const parentElm = hostElm.parentNode;
149
- this._renderer.insertBefore(parentElm, this._backdropRef, hostElm);
144
+ const parent = this._renderer.parentNode(this.elmentRef.nativeElement);
145
+ this._renderer.insertBefore(parent, this._backdropRef, this.elmentRef.nativeElement);
150
146
  }
151
147
  _destroyBackdrop() {
152
- this._backdropClickHandlerUnlisten?.();
153
- this._backdropRef?.remove();
154
- this._backdropClickHandlerUnlisten = undefined;
148
+ if (this._backdropRef) {
149
+ this._backdropClickUnlistenFunc?.();
150
+ this._backdropAnimationEndUnlistenFunc?.();
151
+ this._renderer.removeChild(this._elementRef.nativeElement.parentNode, this._backdropRef);
152
+ this._backdropRef = undefined;
153
+ }
155
154
  }
156
155
  ngOnDestroy() {
157
156
  this._destroyBackdrop();
158
157
  this._resizeSubscription?.unsubscribe();
159
158
  }
160
159
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
161
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.11", type: SidenavComponent, isStandalone: true, selector: "ng0-sidenav", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fixedInViewport: { classPropertyName: "fixedInViewport", publicName: "fixedInViewport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, host: { properties: { "class.ng0-sidenav-open": "open()", "class.ng0-sidenav-fixed": "fixedInViewport()", "class.ng0-sidenav-has-backdrop": "hasBackdrop()", "style.width": "position() == 'start' || position() == 'end' ? _getFixedSize() : undefined", "style.height": "undefined", "style.z-index": "zIndex()", "class.ng0-sidenav-start": "position() == 'start'", "class.ng0-sidenav-end": "position() == 'end'", "class.ng0-sidenav-top": "position() == 'top'", "class.ng0-sidenav-bottom": "position() == 'bottom'", "class.ng0-sidenav-small": "size() == 'small'", "class.ng0-sidenav-medium": "size() == 'medium'", "class.ng0-sidenav-large": "size() == 'large'", "class.ng0-sidenav-full": "size() == 'full'" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":root{--ng0-sidenav-backdrop-background: rgba(0, 0, 0, .5)}ng0-sidenav{position:absolute;will-change:transform,width,height;overflow:auto;display:none}.ng0-sidenav-backdrop{position:absolute;inset:0;background-color:transparent;transition:background-color var(--ng0-sidenav-transition-duration);pointer-events:none}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-fullscreen{position:fixed}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-show{background-color:var(--ng0-sidenav-backdrop-background)!important;pointer-events:all}.ng0-sidenav-transition ng0-sidenav{transition:transform var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),width var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),height var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}.ng0-sidenav-fixed{position:fixed!important}.ng0-sidenav-top{display:block;left:0;right:0;top:0;transform:translateY(-100%)}.ng0-sidenav-top.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-bottom{display:block;left:0;right:0;bottom:0;transform:translateY(100%)}.ng0-sidenav-bottom.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-start{display:block;top:0;bottom:0;inset-inline-start:0;transform:translate(-100%)}:dir(rtl) .ng0-sidenav-start,body[dir=rtl] .ng0-sidenav-start{transform:translate(100%)}.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-end{display:block;top:0;bottom:0;inset-inline-end:0;transform:translate(100%)}:dir(rtl) .ng0-sidenav-end,body[dir=rtl] .ng0-sidenav-end{transform:translate(-100%)}.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-small.ng0-sidenav-start,.ng0-sidenav-small.ng0-sidenav-end{width:min(350px,95%)}.ng0-sidenav-small.ng0-sidenav-top,.ng0-sidenav-small.ng0-sidenav-bottom{height:min(350px,95%)}@media (min-width: 0){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(700px,95%)}}@media (min-height: 0){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-width: 0){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(700px,95%)}}@media (min-width: 992px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(900px,95%)}}@media (min-width: 1200px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(1200px,95%)}}@media (min-height: 0){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-height: 992px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(900px,95%)}}@media (min-height: 1200px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(1200px,95%)}}.ng0-sidenav-full{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
160
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.11", type: SidenavComponent, isStandalone: true, selector: "ng0-sidenav", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, fixedInViewport: { classPropertyName: "fixedInViewport", publicName: "fixedInViewport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, host: { properties: { "class.ng0-sidenav-open": "open()", "class.ng0-sidenav-fixed": "fixedInViewport()", "class.ng0-sidenav-has-backdrop": "hasBackdrop()", "style.width": "position() == 'start' || position() == 'end' ? _getFixedSize() : undefined", "style.height": "undefined", "style.z-index": "zIndex()", "class.ng0-sidenav-start": "position() == 'start'", "class.ng0-sidenav-end": "position() == 'end'", "class.ng0-sidenav-top": "position() == 'top'", "class.ng0-sidenav-bottom": "position() == 'bottom'", "class.ng0-sidenav-small": "size() == 'small'", "class.ng0-sidenav-medium": "size() == 'medium'", "class.ng0-sidenav-large": "size() == 'large'", "class.ng0-sidenav-full": "size() == 'full'" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":root{--ng0-sidenav-backdrop-background: rgba(0, 0, 0, .5)}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}ng0-sidenav{position:absolute;will-change:transform,width,height;overflow:auto;display:none}.ng0-sidenav-backdrop{position:absolute;inset:0;background-color:var(--ng0-sidenav-backdrop-background)!important;pointer-events:all}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-fullscreen{position:fixed}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-opening{animation:backdropFadeIn var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function) forwards}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-closing{animation:backdropFadeOut var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function) forwards}.ng0-sidenav-transition ng0-sidenav{transition:transform var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function),width var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function),height var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function)}.ng0-sidenav-fixed{position:fixed!important}.ng0-sidenav-top{display:block;left:0;right:0;top:0;transform:translateY(-100%)}.ng0-sidenav-top.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-bottom{display:block;left:0;right:0;bottom:0;transform:translateY(100%)}.ng0-sidenav-bottom.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-start{display:block;top:0;bottom:0;inset-inline-start:0;transform:translate(-100%)}:dir(rtl) .ng0-sidenav-start,body[dir=rtl] .ng0-sidenav-start{transform:translate(100%)}.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-end{display:block;top:0;bottom:0;inset-inline-end:0;transform:translate(100%)}:dir(rtl) .ng0-sidenav-end,body[dir=rtl] .ng0-sidenav-end{transform:translate(-100%)}.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-small.ng0-sidenav-start,.ng0-sidenav-small.ng0-sidenav-end{width:min(350px,95%)}.ng0-sidenav-small.ng0-sidenav-top,.ng0-sidenav-small.ng0-sidenav-bottom{height:min(350px,95%)}@media (min-width: 0){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(700px,95%)}}@media (min-height: 0){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-width: 0){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(700px,95%)}}@media (min-width: 992px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(900px,95%)}}@media (min-width: 1200px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(1200px,95%)}}@media (min-height: 0){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-height: 992px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(900px,95%)}}@media (min-height: 1200px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(1200px,95%)}}.ng0-sidenav-full{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
162
161
  }
163
162
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SidenavComponent, decorators: [{
164
163
  type: Component,
@@ -177,7 +176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
177
176
  "[class.ng0-sidenav-medium]": "size() == 'medium'",
178
177
  "[class.ng0-sidenav-large]": "size() == 'large'",
179
178
  "[class.ng0-sidenav-full]": "size() == 'full'",
180
- }, styles: [":root{--ng0-sidenav-backdrop-background: rgba(0, 0, 0, .5)}ng0-sidenav{position:absolute;will-change:transform,width,height;overflow:auto;display:none}.ng0-sidenav-backdrop{position:absolute;inset:0;background-color:transparent;transition:background-color var(--ng0-sidenav-transition-duration);pointer-events:none}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-fullscreen{position:fixed}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-show{background-color:var(--ng0-sidenav-backdrop-background)!important;pointer-events:all}.ng0-sidenav-transition ng0-sidenav{transition:transform var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),width var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function),height var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}.ng0-sidenav-fixed{position:fixed!important}.ng0-sidenav-top{display:block;left:0;right:0;top:0;transform:translateY(-100%)}.ng0-sidenav-top.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-bottom{display:block;left:0;right:0;bottom:0;transform:translateY(100%)}.ng0-sidenav-bottom.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-start{display:block;top:0;bottom:0;inset-inline-start:0;transform:translate(-100%)}:dir(rtl) .ng0-sidenav-start,body[dir=rtl] .ng0-sidenav-start{transform:translate(100%)}.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-end{display:block;top:0;bottom:0;inset-inline-end:0;transform:translate(100%)}:dir(rtl) .ng0-sidenav-end,body[dir=rtl] .ng0-sidenav-end{transform:translate(-100%)}.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-small.ng0-sidenav-start,.ng0-sidenav-small.ng0-sidenav-end{width:min(350px,95%)}.ng0-sidenav-small.ng0-sidenav-top,.ng0-sidenav-small.ng0-sidenav-bottom{height:min(350px,95%)}@media (min-width: 0){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(700px,95%)}}@media (min-height: 0){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-width: 0){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(700px,95%)}}@media (min-width: 992px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(900px,95%)}}@media (min-width: 1200px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(1200px,95%)}}@media (min-height: 0){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-height: 992px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(900px,95%)}}@media (min-height: 1200px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(1200px,95%)}}.ng0-sidenav-full{width:100%;height:100%}\n"] }]
179
+ }, styles: [":root{--ng0-sidenav-backdrop-background: rgba(0, 0, 0, .5)}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}ng0-sidenav{position:absolute;will-change:transform,width,height;overflow:auto;display:none}.ng0-sidenav-backdrop{position:absolute;inset:0;background-color:var(--ng0-sidenav-backdrop-background)!important;pointer-events:all}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-fullscreen{position:fixed}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-opening{animation:backdropFadeIn var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function) forwards}.ng0-sidenav-backdrop.ng0-sidenav-backdrop-closing{animation:backdropFadeOut var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function) forwards}.ng0-sidenav-transition ng0-sidenav{transition:transform var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function),width var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function),height var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function)}.ng0-sidenav-fixed{position:fixed!important}.ng0-sidenav-top{display:block;left:0;right:0;top:0;transform:translateY(-100%)}.ng0-sidenav-top.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-bottom{display:block;left:0;right:0;bottom:0;transform:translateY(100%)}.ng0-sidenav-bottom.ng0-sidenav-open{transform:translateY(0)!important}.ng0-sidenav-start{display:block;top:0;bottom:0;inset-inline-start:0;transform:translate(-100%)}:dir(rtl) .ng0-sidenav-start,body[dir=rtl] .ng0-sidenav-start{transform:translate(100%)}.ng0-sidenav-start.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-end{display:block;top:0;bottom:0;inset-inline-end:0;transform:translate(100%)}:dir(rtl) .ng0-sidenav-end,body[dir=rtl] .ng0-sidenav-end{transform:translate(-100%)}.ng0-sidenav-end.ng0-sidenav-open{transform:translate(0)!important}.ng0-sidenav-small.ng0-sidenav-start,.ng0-sidenav-small.ng0-sidenav-end{width:min(350px,95%)}.ng0-sidenav-small.ng0-sidenav-top,.ng0-sidenav-small.ng0-sidenav-bottom{height:min(350px,95%)}@media (min-width: 0){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-medium.ng0-sidenav-start,.ng0-sidenav-medium.ng0-sidenav-end{width:min(700px,95%)}}@media (min-height: 0){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-medium.ng0-sidenav-top,.ng0-sidenav-medium.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-width: 0){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(350px,95%)}}@media (min-width: 576px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(500px,95%)}}@media (min-width: 768px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(700px,95%)}}@media (min-width: 992px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(900px,95%)}}@media (min-width: 1200px){.ng0-sidenav-large.ng0-sidenav-start,.ng0-sidenav-large.ng0-sidenav-end{width:min(1200px,95%)}}@media (min-height: 0){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(350px,95%)}}@media (min-height: 576px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(500px,95%)}}@media (min-height: 768px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(700px,95%)}}@media (min-height: 992px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(900px,95%)}}@media (min-height: 1200px){.ng0-sidenav-large.ng0-sidenav-top,.ng0-sidenav-large.ng0-sidenav-bottom{height:min(1200px,95%)}}.ng0-sidenav-full{width:100%;height:100%}\n"] }]
181
180
  }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], hasBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackdrop", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], fixedInViewport: [{ type: i0.Input, args: [{ isSignal: true, alias: "fixedInViewport", required: false }] }], backdropClick: [{
182
181
  type: Output
183
182
  }] } });
@@ -232,7 +231,7 @@ class SidenavContainerComponent {
232
231
  return true;
233
232
  }
234
233
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SidenavContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
235
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: SidenavContainerComponent, isStandalone: true, selector: "ng0-sidenav-container", host: { properties: { "style.padding-inline-start": "_getPadding('start')", "style.padding-inline-end": "_getPadding('end')", "style.padding-top": "_getPadding('top')", "style.padding-bottom": "_getPadding('bottom')", "class.ng0-sidenav-transition": "_isTransitionEnabled", "class.ng0-sidenav-content-hidden": "!_canComputePadding()" } }, queries: [{ propertyName: "_sidenavs", predicate: SidenavComponent }], ngImport: i0, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-transition-duration: .2s;--ng0-sidenav-transition-function: ease-out}ng0-sidenav-container{position:relative;display:block;overflow:hidden;will-change:padding}ng0-sidenav-container.ng0-sidenav-transition{transition:padding var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}ng0-sidenav-container.ng0-sidenav-content-hidden ng0-sidenav-content{opacity:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
234
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: SidenavContainerComponent, isStandalone: true, selector: "ng0-sidenav-container", host: { properties: { "style.padding-inline-start": "_getPadding('start')", "style.padding-inline-end": "_getPadding('end')", "style.padding-top": "_getPadding('top')", "style.padding-bottom": "_getPadding('bottom')", "class.ng0-sidenav-transition": "_isTransitionEnabled", "class.ng0-sidenav-content-hidden": "!_canComputePadding()" } }, queries: [{ propertyName: "_sidenavs", predicate: SidenavComponent }], ngImport: i0, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-animation-duration: .2s;--ng0-sidenav-animation-function: ease-out}ng0-sidenav-container{position:relative;display:block;overflow:hidden;will-change:padding}ng0-sidenav-container.ng0-sidenav-transition{transition:padding var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function)}ng0-sidenav-container.ng0-sidenav-content-hidden ng0-sidenav-content{opacity:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
236
235
  }
237
236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SidenavContainerComponent, decorators: [{
238
237
  type: Component,
@@ -243,7 +242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
243
242
  "[style.padding-bottom]": "_getPadding('bottom')",
244
243
  "[class.ng0-sidenav-transition]": "_isTransitionEnabled",
245
244
  "[class.ng0-sidenav-content-hidden]": "!_canComputePadding()",
246
- }, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-transition-duration: .2s;--ng0-sidenav-transition-function: ease-out}ng0-sidenav-container{position:relative;display:block;overflow:hidden;will-change:padding}ng0-sidenav-container.ng0-sidenav-transition{transition:padding var(--ng0-sidenav-transition-duration) var(--ng0-sidenav-transition-function)}ng0-sidenav-container.ng0-sidenav-content-hidden ng0-sidenav-content{opacity:0}\n"] }]
245
+ }, template: "<ng-content select=\"ng0-sidenav-content\"></ng-content>\n<ng-content></ng-content>", styles: [":root{--ng0-sidenav-animation-duration: .2s;--ng0-sidenav-animation-function: ease-out}ng0-sidenav-container{position:relative;display:block;overflow:hidden;will-change:padding}ng0-sidenav-container.ng0-sidenav-transition{transition:padding var(--ng0-sidenav-animation-duration) var(--ng0-sidenav-animation-function)}ng0-sidenav-container.ng0-sidenav-content-hidden ng0-sidenav-content{opacity:0}\n"] }]
247
246
  }], propDecorators: { _sidenavs: [{
248
247
  type: ContentChildren,
249
248
  args: [SidenavComponent]
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-sidenav.mjs","sources":["../../../projects/ng0/components/sidenav/sidenav.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.html","../../../projects/ng0/components/sidenav/sidenav-content.component.ts","../../../projects/ng0/components/sidenav/sidenav.module.ts","../../../projects/ng0/components/sidenav/bootkit-ng0-components-sidenav.ts"],"sourcesContent":["import { booleanAttribute, numberAttribute, Component, effect, ElementRef, EventEmitter, input, OnDestroy, Output, Renderer2, ViewContainerRef, inject, ChangeDetectionStrategy, ViewEncapsulation, PLATFORM_ID, Inject, DOCUMENT, OnInit, Injector, AfterViewInit } from '@angular/core';\nimport { SidenavMode, SidenavPosition, SidenavSize } from './types';\nimport { isPlatformServer } from '@angular/common';\nimport { SidenavContainerComponent } from './sidenav-container.component';\nimport { Observable, Subscription, throttleTime } from 'rxjs';\n\n/**\n * A sidenav component that displays a sliding navigation panel.\n */\n@Component({\n selector: 'ng0-sidenav',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./sidenav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n \"[class.ng0-sidenav-open]\": \"open()\",\n \"[class.ng0-sidenav-fixed]\": \"fixedInViewport()\",\n \"[class.ng0-sidenav-has-backdrop]\": \"hasBackdrop()\",\n \"[style.width]\": \"position() == 'start' || position() == 'end' ? _getFixedSize() : undefined\",\n \"[style.height]\": \"undefined\",\n \"[style.z-index]\": \"zIndex()\",\n \"[class.ng0-sidenav-start]\": \"position() == 'start'\",\n \"[class.ng0-sidenav-end]\": \"position() == 'end'\",\n \"[class.ng0-sidenav-top]\": \"position() == 'top'\",\n \"[class.ng0-sidenav-bottom]\": \"position() == 'bottom'\",\n \"[class.ng0-sidenav-small]\": \"size() == 'small'\",\n \"[class.ng0-sidenav-medium]\": \"size() == 'medium'\",\n \"[class.ng0-sidenav-large]\": \"size() == 'large'\",\n \"[class.ng0-sidenav-full]\": \"size() == 'full'\",\n }\n})\nexport class SidenavComponent implements OnDestroy {\n private _bodyOverflowStyle?: string;\n private readonly _sidenavContainer = inject(SidenavContainerComponent);\n private readonly _document = inject(DOCUMENT);\n private readonly _renderer = inject(Renderer2);\n private _backdropRef!: HTMLDivElement;\n private _backdropClickHandlerUnlisten?: () => void;\n private _platformId = inject(PLATFORM_ID);\n protected _isPlatformServer = isPlatformServer(this._platformId)\n private _resizeSubscription?: Subscription;\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n\n /**\n * Whether the sidenav is open.\n */\n public readonly open = input(false, { transform: booleanAttribute });\n\n /**\n * Sidenav mode.\n * Determines how the sidenav is displayed.\n * Can be either 'push' or 'over'.\n * - 'push': The content is pushed aside to make room for the sidenav.\n * - 'over': The sidenav is displayed on top of the content.\n */\n public readonly mode = input<SidenavMode>('push');\n\n /**\n * Whether the sidenav has a backdrop.\n * The backdrop is shown only when the sidenav is open and mode is 'over'.\n */\n public readonly hasBackdrop = input(false, { transform: booleanAttribute });\n\n /**\n * Sidenav z-index.\n * Determines the stack order of the sidenav.\n */\n public readonly zIndex = input(1000, { transform: numberAttribute });\n\n /**\n * Sidenav position.\n * Determines the position of the sidenav.\n * Can be either 'start', 'end', 'top', or 'bottom'.\n */\n public readonly position = input<SidenavPosition>('start');\n\n /**\n * Sidenav size.\n * Determines the size of the sidenav. \n * Can be either 'small', 'medium', 'large', 'full', or a specific value. \n * If a specific value is provided, it will be used as the width/height of the sidenav.\n * @example\n * - 100, '300px', '50%', '50vh', 'small', 'full', ...\n */\n public readonly size = input<SidenavSize>();\n\n /**\n * Whether the sidenav is fixed in the viewport.\n */\n public readonly fixedInViewport = input(false, { transform: booleanAttribute });\n\n public readonly elmentRef = inject(ElementRef);\n\n /**\n * Emits when the backdrop is clicked.\n */\n @Output() public readonly backdropClick = new EventEmitter<PointerEvent>();\n\n constructor() {\n this._createBackdrop();\n\n effect(() => {\n const fixed = this.fixedInViewport();\n const cssClass = 'ng0-sidenav-backdrop-fullscreen';\n\n if (fixed) {\n this._renderer.addClass(this._backdropRef, cssClass);\n } else {\n this._renderer.removeClass(this._backdropRef, cssClass);\n }\n })\n\n effect(() => {\n const zIndex = this.zIndex();\n if (isFinite(zIndex)) {\n this._renderer.setStyle(this._backdropRef, 'z-index', zIndex);\n } else {\n this._renderer.removeStyle(this._backdropRef, 'z-index');\n }\n })\n\n effect(() => {\n var mode = this.mode();\n var open = this.open();\n var hasBackdrop = this.hasBackdrop();\n\n const cssClass = 'ng0-sidenav-backdrop-show';\n if (mode == 'over' && open && hasBackdrop) {\n this._renderer.addClass(this._backdropRef, cssClass);\n\n // disable body scroll when sidenav is open and fixedInViewport is true\n if (!this._isPlatformServer && this.fixedInViewport()) {\n const body = this._document.getElementsByTagName('body')[0];\n this._bodyOverflowStyle = body.style.overflow;\n this._renderer.setStyle(body, 'overflow', 'hidden');\n }\n } else {\n this._renderer.removeClass(this._backdropRef, cssClass);\n\n // restore body scroll when sidenav is closed\n if (!this._isPlatformServer && this.fixedInViewport()) {\n const body = document.getElementsByTagName('body')[0];\n this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);\n }\n }\n });\n\n if (!this._isPlatformServer) {\n this._observeResize()\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n .subscribe(entries => {\n this._sidenavContainer.changeDetectorRef.markForCheck();\n // console.log('Resized to:', entries[0].contentRect.width, entries[0].contentRect.height);\n });\n }\n }\n\n\n _getFixedSize(): string | undefined {\n let size = this.size();\n let t = typeof size;\n if (t == 'string') {\n return ['small', 'medium', 'large', 'full'].includes(size as string) ? undefined : size as string;\n } else if (t == 'number') {\n return `${size}px`;\n } else {\n return undefined;\n }\n };\n\n private _observeResize(): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\n resizeObserver.observe(this._elementRef.nativeElement);\n return () => resizeObserver.disconnect();\n });\n }\n\n private _createBackdrop() {\n this._backdropRef = this._renderer.createElement('div');\n ['ng0-sidenav-backdrop', 'ng0-sidenav-backdrop-show'].forEach(x => this._renderer.addClass(this._backdropRef, x));\n this._backdropClickHandlerUnlisten = this._renderer.listen(this._backdropRef, 'click', (e) => {\n this.backdropClick.emit(e);\n });\n\n // Move backdrop element before Host element\n const hostElm = this.elmentRef.nativeElement;\n const parentElm = hostElm.parentNode;\n this._renderer.insertBefore(parentElm, this._backdropRef, hostElm);\n }\n\n private _destroyBackdrop() {\n this._backdropClickHandlerUnlisten?.();\n this._backdropRef?.remove();\n this._backdropClickHandlerUnlisten = undefined;\n }\n\n ngOnDestroy(): void {\n this._destroyBackdrop();\n this._resizeSubscription?.unsubscribe();\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, PLATFORM_ID, QueryList, ViewEncapsulation } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { SidenavComponent } from './sidenav.component';\nimport { SidenavPosition } from './types';\n\n/**\n * Sidenav container component\n */\n@Component({\n selector: 'ng0-sidenav-container',\n templateUrl: './sidenav-container.component.html',\n styleUrls: ['./sidenav-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n \"[style.padding-inline-start]\": \"_getPadding('start')\",\n \"[style.padding-inline-end]\": \"_getPadding('end')\",\n \"[style.padding-top]\": \"_getPadding('top')\",\n \"[style.padding-bottom]\": \"_getPadding('bottom')\",\n \"[class.ng0-sidenav-transition]\": \"_isTransitionEnabled\",\n \"[class.ng0-sidenav-content-hidden]\": \"!_canComputePadding()\",\n }\n})\nexport class SidenavContainerComponent implements AfterViewInit {\n private readonly _platformId = inject(PLATFORM_ID);\n protected readonly _isPlatformServer = isPlatformServer(this._platformId)\n protected _isTransitionEnabled = false;\n @ContentChildren(SidenavComponent) protected _sidenavs!: QueryList<SidenavComponent>;\n\n public readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n protected _getPadding(position: SidenavPosition) {\n let openSidenavs = this._sidenavs.filter(x => x.open() && x.mode() == 'push');\n let filteredSidenavs = openSidenavs.filter(x => x.position() == position);\n if(filteredSidenavs.length == 0) return undefined;\n\n if (this._isPlatformServer) {\n let hasDynamicSidenavs = openSidenavs.some(x => x._getFixedSize() == undefined);\n if (hasDynamicSidenavs) {\n // we cannot compute padding on the server\n return undefined;\n } else {\n let fixedSizes = filteredSidenavs.map(x => x._getFixedSize());\n return fixedSizes.length > 1 ? `max(${fixedSizes.join(', ')})` : fixedSizes[0];\n }\n } else {\n let horizontal = position == 'start' || position == 'end';\n let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.offsetWidth : x.elmentRef.nativeElement.offsetHeight);\n return `${Math.max(...sizes)}px`;\n }\n };\n\n ngAfterViewInit() {\n if (!this._isPlatformServer) {\n setTimeout(() => this._isTransitionEnabled = true);\n }\n }\n\n // In some modes the content is pushed based on the width of the opened sidenavs, however on\n // the server we can't measure the sidenav-container padding, so the padding is always zero. This can cause the\n // content to jump around when it's rendered on the server and hydrated on the client.\n // We avoid it by hiding the content on the initial render and then showing it once the sidenav\n // has been measured on the client.\n protected _canComputePadding() {\n if (this._isPlatformServer) {\n let hasDynamicSizenavs = this._sidenavs.some(x => x.open() && x.mode() == 'push' && x._getFixedSize() == undefined);\n return !hasDynamicSizenavs;\n }\n\n return true;\n }\n}\n","<ng-content select=\"ng0-sidenav-content\"></ng-content>\n<ng-content></ng-content>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Sidenav content component\n */\n@Component({\n selector: 'ng0-sidenav-content',\n template: `<ng-content></ng-content>`,\n styles: `ng0-sidenav-content {display: block}`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SidenavContentComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { SidenavContainerComponent } from './sidenav-container.component';\nimport { SidenavComponent } from './sidenav.component';\nimport { SidenavContentComponent } from './sidenav-content.component';\n\n/**\n * Sidenav module\n */\n@NgModule({\n imports: [\n SidenavContainerComponent,\n SidenavComponent,\n SidenavContentComponent\n ],\n exports: [\n SidenavContainerComponent,\n SidenavComponent,\n SidenavContentComponent\n ]\n})\nexport class SidenavModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAMA;;AAEG;MAyBU,gBAAgB,CAAA;AACnB,IAAA,kBAAkB;AACT,IAAA,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACrD,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC5B,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACtC,IAAA,YAAY;AACZ,IAAA,6BAA6B;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/B,IAAA,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;AACxD,IAAA,mBAAmB;AACV,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAG9D;;AAEG;AACa,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,wCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAEpE;;;;;;AAMG;AACa,IAAA,IAAI,GAAG,KAAK,CAAc,MAAM,gDAAC;AAEjD;;;AAGG;AACa,IAAA,WAAW,GAAG,KAAK,CAAC,KAAK,+CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE3E;;;AAGG;AACa,IAAA,MAAM,GAAG,KAAK,CAAC,IAAI,0CAAI,SAAS,EAAE,eAAe,EAAA,CAAA,GAAA,CAA5B,EAAE,SAAS,EAAE,eAAe,EAAE,GAAC;AAEpE;;;;AAIG;AACa,IAAA,QAAQ,GAAG,KAAK,CAAkB,OAAO,oDAAC;AAE1D;;;;;;;AAOG;IACa,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;AAE3C;;AAEG;AACa,IAAA,eAAe,GAAG,KAAK,CAAC,KAAK,mDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAE/D,IAAA,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AAE9C;;AAEG;AACuB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAgB;AAE1E,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,eAAe,EAAE;QAEtB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;YACpC,MAAM,QAAQ,GAAG,iCAAiC;YAElD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;YACtD;iBAAO;gBACL,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;YACzD;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;YAC/D;iBAAO;gBACL,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;YAC1D;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YAEpC,MAAM,QAAQ,GAAG,2BAA2B;YAC5C,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,WAAW,EAAE;gBACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;;gBAGpD,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACrD,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAC7C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;gBACrD;YACF;iBAAO;gBACL,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;;gBAGvD,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;oBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrD,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC;gBACpE;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,cAAc;AAChB,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBACpE,SAAS,CAAC,OAAO,IAAG;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,EAAE;;AAEzD,YAAA,CAAC,CAAC;QACN;IACF;IAGA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,GAAG,OAAO,IAAI;AACnB,QAAA,IAAI,CAAC,IAAI,QAAQ,EAAE;YACjB,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAc,CAAC,GAAG,SAAS,GAAG,IAAc;QACnG;AAAO,aAAA,IAAI,CAAC,IAAI,QAAQ,EAAE;YACxB,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI;QACpB;aAAO;AACL,YAAA,OAAO,SAAS;QAClB;IACF;;IAEQ,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AAC/B,YAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5E,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AACtD,YAAA,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE;AAC1C,QAAA,CAAC,CAAC;IACJ;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;QACvD,CAAC,sBAAsB,EAAE,2BAA2B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACjH,QAAA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,KAAI;AAC3F,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AAC5C,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;IACpE;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,6BAA6B,IAAI;AACtC,QAAA,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,6BAA6B,GAAG,SAAS;IAChD;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;IACzC;wGA1KW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,6rDAtBjB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kwHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAsB1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,QAAA,EACb,CAAA,yBAAA,CAA2B,EAAA,aAAA,EAEtB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,IAAA,EACV;AACJ,wBAAA,0BAA0B,EAAE,QAAQ;AACpC,wBAAA,2BAA2B,EAAE,mBAAmB;AAChD,wBAAA,kCAAkC,EAAE,eAAe;AACnD,wBAAA,eAAe,EAAE,4EAA4E;AAC7F,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,2BAA2B,EAAE,uBAAuB;AACpD,wBAAA,yBAAyB,EAAE,qBAAqB;AAChD,wBAAA,yBAAyB,EAAE,qBAAqB;AAChD,wBAAA,4BAA4B,EAAE,wBAAwB;AACtD,wBAAA,2BAA2B,EAAE,mBAAmB;AAChD,wBAAA,4BAA4B,EAAE,oBAAoB;AAClD,wBAAA,2BAA2B,EAAE,mBAAmB;AAChD,wBAAA,0BAA0B,EAAE,kBAAkB;AAC/C,qBAAA,EAAA,MAAA,EAAA,CAAA,kwHAAA,CAAA,EAAA;;sBAoEA;;;AC9FH;;AAEG;MAiBU,yBAAyB,CAAA;AACnB,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/B,IAAA,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/D,oBAAoB,GAAG,KAAK;AACO,IAAA,SAAS;AAEtC,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAEnD,IAAA,WAAW,CAAC,QAAyB,EAAA;QAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC;AAC7E,QAAA,IAAI,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC;AACzE,QAAA,IAAG,gBAAgB,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,SAAS;AAEjD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;YAC/E,IAAI,kBAAkB,EAAE;;AAEtB,gBAAA,OAAO,SAAS;YAClB;iBAAO;AACL,gBAAA,IAAI,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC7D,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,IAAA,EAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,GAAG,UAAU,CAAC,CAAC,CAAC;YAChF;QACF;aAAO;YACL,IAAI,UAAU,GAAG,QAAQ,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK;AACzD,YAAA,IAAI,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,YAAY,CAAC;YAClI,OAAO,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA,EAAA,CAAI;QAClC;IACF;;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,UAAU,CAAC,MAAM,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpD;IACF;;;;;;IAOU,kBAAkB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;YACnH,OAAO,CAAC,kBAAkB;QAC5B;AAEA,QAAA,OAAO,IAAI;IACb;wGA/CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,8BAAA,EAAA,sBAAA,EAAA,kCAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAInB,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BnC,qFACyB,EAAA,MAAA,EAAA,CAAA,oZAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FDuBZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;+BACE,uBAAuB,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,IAAA,EACV;AACJ,wBAAA,8BAA8B,EAAE,sBAAsB;AACtD,wBAAA,4BAA4B,EAAE,oBAAoB;AAClD,wBAAA,qBAAqB,EAAE,oBAAoB;AAC3C,wBAAA,wBAAwB,EAAE,uBAAuB;AACjD,wBAAA,gCAAgC,EAAE,sBAAsB;AACxD,wBAAA,oCAAoC,EAAE,uBAAuB;AAC9D,qBAAA,EAAA,QAAA,EAAA,qFAAA,EAAA,MAAA,EAAA,CAAA,oZAAA,CAAA,EAAA;;sBAMA,eAAe;uBAAC,gBAAgB;;;AE1BnC;;AAEG;MASU,uBAAuB,CAAA;wGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+EANxB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAM1B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EACrB,CAAA,yBAAA,CAA2B,EAAA,aAAA,EAEtB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,MAAA,EAAA,CAAA,sCAAA,CAAA,EAAA;;;ACNlB;;AAEG;MAaU,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAVtB,yBAAyB;YACzB,gBAAgB;AAChB,YAAA,uBAAuB,aAGvB,yBAAyB;YACzB,gBAAgB;YAChB,uBAAuB,CAAA,EAAA,CAAA;yGAGd,aAAa,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,gBAAgB;wBAChB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,gBAAgB;wBAChB;AACD;AACF,iBAAA;;;ACnBD;;AAEG;;;;"}
1
+ {"version":3,"file":"bootkit-ng0-components-sidenav.mjs","sources":["../../../projects/ng0/components/sidenav/sidenav.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.ts","../../../projects/ng0/components/sidenav/sidenav-container.component.html","../../../projects/ng0/components/sidenav/sidenav-content.component.ts","../../../projects/ng0/components/sidenav/sidenav.module.ts","../../../projects/ng0/components/sidenav/bootkit-ng0-components-sidenav.ts"],"sourcesContent":["import { booleanAttribute, numberAttribute, Component, effect, ElementRef, EventEmitter, input, OnDestroy, Output, Renderer2, ViewContainerRef, inject, ChangeDetectionStrategy, ViewEncapsulation, PLATFORM_ID, Inject, DOCUMENT, OnInit, Injector, AfterViewInit } from '@angular/core';\nimport { SidenavMode, SidenavPosition, SidenavSize } from './types';\nimport { isPlatformServer } from '@angular/common';\nimport { SidenavContainerComponent } from './sidenav-container.component';\nimport { Observable, Subscription, throttleTime } from 'rxjs';\n\n/**\n * A sidenav component that displays a sliding navigation panel.\n */\n@Component({\n selector: 'ng0-sidenav',\n template: `<ng-content></ng-content>`,\n styleUrls: ['./sidenav.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n \"[class.ng0-sidenav-open]\": \"open()\",\n \"[class.ng0-sidenav-fixed]\": \"fixedInViewport()\",\n \"[class.ng0-sidenav-has-backdrop]\": \"hasBackdrop()\",\n \"[style.width]\": \"position() == 'start' || position() == 'end' ? _getFixedSize() : undefined\",\n \"[style.height]\": \"undefined\",\n \"[style.z-index]\": \"zIndex()\",\n \"[class.ng0-sidenav-start]\": \"position() == 'start'\",\n \"[class.ng0-sidenav-end]\": \"position() == 'end'\",\n \"[class.ng0-sidenav-top]\": \"position() == 'top'\",\n \"[class.ng0-sidenav-bottom]\": \"position() == 'bottom'\",\n \"[class.ng0-sidenav-small]\": \"size() == 'small'\",\n \"[class.ng0-sidenav-medium]\": \"size() == 'medium'\",\n \"[class.ng0-sidenav-large]\": \"size() == 'large'\",\n \"[class.ng0-sidenav-full]\": \"size() == 'full'\",\n }\n})\nexport class SidenavComponent implements OnDestroy {\n private _bodyOverflowStyle?: string;\n private readonly _sidenavContainer = inject(SidenavContainerComponent);\n private readonly _document = inject(DOCUMENT);\n private readonly _renderer = inject(Renderer2);\n private _backdropRef?: HTMLDivElement;\n private _backdropClickUnlistenFunc?: () => void;\n private _backdropAnimationEndUnlistenFunc?: () => void;\n private _platformId = inject(PLATFORM_ID);\n protected _isPlatformServer = isPlatformServer(this._platformId)\n private _resizeSubscription?: Subscription;\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n\n /**\n * Whether the sidenav is open.\n */\n public readonly open = input(false, { transform: booleanAttribute });\n\n /**\n * Sidenav mode.\n * Determines how the sidenav is displayed.\n * Can be either 'push' or 'over'.\n * - 'push': The content is pushed aside to make room for the sidenav.\n * - 'over': The sidenav is displayed on top of the content.\n */\n public readonly mode = input<SidenavMode>('push');\n\n /**\n * Whether the sidenav has a backdrop.\n * The backdrop is shown only when the sidenav is open and mode is 'over'.\n */\n public readonly hasBackdrop = input(false, { transform: booleanAttribute });\n\n /**\n * Sidenav z-index.\n * Determines the stack order of the sidenav.\n */\n public readonly zIndex = input(1000, { transform: numberAttribute });\n\n /**\n * Sidenav position.\n * Determines the position of the sidenav.\n * Can be either 'start', 'end', 'top', or 'bottom'.\n */\n public readonly position = input<SidenavPosition>('start');\n\n /**\n * Sidenav size.\n * Determines the size of the sidenav. \n * Can be either 'small', 'medium', 'large', 'full', or a specific value. \n * If a specific value is provided, it will be used as the width/height of the sidenav.\n * @example\n * - 100, '300px', '50%', '50vh', 'small', 'full', ...\n */\n public readonly size = input<SidenavSize>();\n\n /**\n * Whether the sidenav is fixed in the viewport.\n */\n public readonly fixedInViewport = input(false, { transform: booleanAttribute });\n\n public readonly elmentRef = inject(ElementRef);\n\n /**\n * Emits when the backdrop is clicked.\n */\n @Output() public readonly backdropClick = new EventEmitter<PointerEvent>();\n\n constructor() {\n effect(() => {\n var mode = this.mode();\n var open = this.open();\n var hasBackdrop = this.hasBackdrop();\n\n if (hasBackdrop) {\n if (mode == 'over' && open) {\n this._createBackdrop();\n\n // disable body scroll when sidenav is open and fixedInViewport is true\n if (!this._isPlatformServer && this.fixedInViewport()) {\n const body = this._document.getElementsByTagName('body')[0];\n this._bodyOverflowStyle = body.style.overflow;\n this._renderer.setStyle(body, 'overflow', 'hidden');\n }\n } else {\n // trigger closing animation\n if (this._backdropRef) {\n this._renderer.addClass(this._backdropRef, 'ng0-sidenav-backdrop-closing');\n }\n\n // restore body scroll when sidenav is closed\n if (!this._isPlatformServer && this.fixedInViewport()) {\n const body = document.getElementsByTagName('body')[0];\n this._renderer.setStyle(body, 'overflow', this._bodyOverflowStyle);\n }\n }\n }\n });\n\n if (!this._isPlatformServer) {\n this._observeResize()\n .pipe(throttleTime(100, undefined, { leading: true, trailing: true }))\n .subscribe(entries => {\n this._sidenavContainer.changeDetectorRef.markForCheck();\n // console.log('Resized to:', entries[0].contentRect.width, entries[0].contentRect.height);\n });\n }\n }\n\n _getFixedSize(): string | undefined {\n let size = this.size();\n let t = typeof size;\n if (t == 'string') {\n return ['small', 'medium', 'large', 'full'].includes(size as string) ? undefined : size as string;\n } else if (t == 'number') {\n return `${size}px`;\n } else {\n return undefined;\n }\n };\n\n private _observeResize(): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\n resizeObserver.observe(this._elementRef.nativeElement);\n return () => resizeObserver.disconnect();\n });\n }\n\n private _createBackdrop() {\n this._backdropRef = this._renderer.createElement('div');\n let classes = ['ng0-sidenav-backdrop', 'ng0-sidenav-backdrop-opening'];\n if(this.fixedInViewport()) {\n classes.push('ng0-sidenav-backdrop-fullscreen');\n }\n\n classes.forEach(x => this._renderer.addClass(this._backdropRef, x));\n \n this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropRef, 'click', (e) => {\n this.backdropClick.emit(e);\n });\n\n this._backdropAnimationEndUnlistenFunc = this._renderer.listen(this._backdropRef, 'animationend', (e) => {\n if (!this.open()) {\n this._destroyBackdrop();\n }\n });\n\n if (this.zIndex() != undefined) {\n this._renderer.setStyle(this._backdropRef, 'z-index', this.zIndex());\n }\n\n // Move backdrop element before Host element\n const parent = this._renderer.parentNode(this.elmentRef.nativeElement);\n this._renderer.insertBefore(parent, this._backdropRef, this.elmentRef.nativeElement);\n }\n\n private _destroyBackdrop() {\n if (this._backdropRef) {\n this._backdropClickUnlistenFunc?.();\n this._backdropAnimationEndUnlistenFunc?.();\n this._renderer.removeChild(this._elementRef.nativeElement.parentNode, this._backdropRef);\n this._backdropRef = undefined;\n }\n }\n\n ngOnDestroy(): void {\n this._destroyBackdrop();\n this._resizeSubscription?.unsubscribe();\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, PLATFORM_ID, QueryList, ViewEncapsulation } from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { SidenavComponent } from './sidenav.component';\nimport { SidenavPosition } from './types';\n\n/**\n * Sidenav container component\n */\n@Component({\n selector: 'ng0-sidenav-container',\n templateUrl: './sidenav-container.component.html',\n styleUrls: ['./sidenav-container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n \"[style.padding-inline-start]\": \"_getPadding('start')\",\n \"[style.padding-inline-end]\": \"_getPadding('end')\",\n \"[style.padding-top]\": \"_getPadding('top')\",\n \"[style.padding-bottom]\": \"_getPadding('bottom')\",\n \"[class.ng0-sidenav-transition]\": \"_isTransitionEnabled\",\n \"[class.ng0-sidenav-content-hidden]\": \"!_canComputePadding()\",\n }\n})\nexport class SidenavContainerComponent implements AfterViewInit {\n private readonly _platformId = inject(PLATFORM_ID);\n protected readonly _isPlatformServer = isPlatformServer(this._platformId)\n protected _isTransitionEnabled = false;\n @ContentChildren(SidenavComponent) protected _sidenavs!: QueryList<SidenavComponent>;\n\n public readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n protected _getPadding(position: SidenavPosition) {\n let openSidenavs = this._sidenavs.filter(x => x.open() && x.mode() == 'push');\n let filteredSidenavs = openSidenavs.filter(x => x.position() == position);\n if(filteredSidenavs.length == 0) return undefined;\n\n if (this._isPlatformServer) {\n let hasDynamicSidenavs = openSidenavs.some(x => x._getFixedSize() == undefined);\n if (hasDynamicSidenavs) {\n // we cannot compute padding on the server\n return undefined;\n } else {\n let fixedSizes = filteredSidenavs.map(x => x._getFixedSize());\n return fixedSizes.length > 1 ? `max(${fixedSizes.join(', ')})` : fixedSizes[0];\n }\n } else {\n let horizontal = position == 'start' || position == 'end';\n let sizes = filteredSidenavs.map(x => horizontal ? x.elmentRef.nativeElement.offsetWidth : x.elmentRef.nativeElement.offsetHeight);\n return `${Math.max(...sizes)}px`;\n }\n };\n\n ngAfterViewInit() {\n if (!this._isPlatformServer) {\n setTimeout(() => this._isTransitionEnabled = true);\n }\n }\n\n // In some modes the content is pushed based on the width of the opened sidenavs, however on\n // the server we can't measure the sidenav-container padding, so the padding is always zero. This can cause the\n // content to jump around when it's rendered on the server and hydrated on the client.\n // We avoid it by hiding the content on the initial render and then showing it once the sidenav\n // has been measured on the client.\n protected _canComputePadding() {\n if (this._isPlatformServer) {\n let hasDynamicSizenavs = this._sidenavs.some(x => x.open() && x.mode() == 'push' && x._getFixedSize() == undefined);\n return !hasDynamicSizenavs;\n }\n\n return true;\n }\n}\n","<ng-content select=\"ng0-sidenav-content\"></ng-content>\n<ng-content></ng-content>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Sidenav content component\n */\n@Component({\n selector: 'ng0-sidenav-content',\n template: `<ng-content></ng-content>`,\n styles: `ng0-sidenav-content {display: block}`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class SidenavContentComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { SidenavContainerComponent } from './sidenav-container.component';\nimport { SidenavComponent } from './sidenav.component';\nimport { SidenavContentComponent } from './sidenav-content.component';\n\n/**\n * Sidenav module\n */\n@NgModule({\n imports: [\n SidenavContainerComponent,\n SidenavComponent,\n SidenavContentComponent\n ],\n exports: [\n SidenavContainerComponent,\n SidenavComponent,\n SidenavContentComponent\n ]\n})\nexport class SidenavModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -89,8 +89,11 @@ class VerticalMenuItemComponent {
89
89
  _onRouteChange(isActive) {
90
90
  this._menuItemState.routeActivated.set(isActive);
91
91
  }
92
+ _getItemTemplateContext() {
93
+ return { $implicit: this };
94
+ }
92
95
  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-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 });
96
+ 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: _getItemTemplateContext()\"></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-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 });
94
97
  }
95
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: VerticalMenuItemComponent, decorators: [{
96
99
  type: Component,
@@ -98,7 +101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
98
101
  '[class.ng0-has-children]': 'hasChildren()',
99
102
  '[class.ng0-expanded]': 'isExpanded()',
100
103
  '[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-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"] }]
104
+ }, 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: _getItemTemplateContext()\"></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-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
105
  }], propDecorators: { _children: [{
103
106
  type: ContentChildren,
104
107
  args: [VerticalMenuItemComponent]
@@ -1 +1 @@
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, ChangeDetectionStrategy, Component, ContentChild, inject, input } from '@angular/core';\nimport { MenuItem } from '@bootkit/ng0/common';\nimport { CommonModule } from '@angular/common';\nimport { User, UserDirective, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n providers: [VerticalMenuState],\n imports: [\n CommonModule,\n RouterModule,\n UserDirective,\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\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 <ng-container *ng0User=\"item.user\">\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 </ng-container>\n }\n</ng-template>\n\n\n<style>\n :host {\n display: block;\n }\n</style>","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":"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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 protected _getItemTemplateContext(): any {\n return { $implicit: this }\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: _getItemTemplateContext()\"></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, ChangeDetectionStrategy, Component, ContentChild, inject, input } from '@angular/core';\nimport { MenuItem } from '@bootkit/ng0/common';\nimport { CommonModule } from '@angular/common';\nimport { User, UserDirective, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n providers: [VerticalMenuState],\n imports: [\n CommonModule,\n RouterModule,\n UserDirective,\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\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 <ng-container *ng0User=\"item.user\">\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 </ng-container>\n }\n</ng-template>\n\n\n<style>\n :host {\n display: block;\n }\n</style>","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":"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"}
@@ -193,8 +193,8 @@ class Layout1Component {
193
193
  options.mode = options.mode ?? this.defaultSidenavMode();
194
194
  options.position = options.position ?? this.defaultSidenavPosition();
195
195
  options.size = options.size ?? this.defaultSidenavSize();
196
- options.hasBackdrop = options.hasBackdrop ?? this.defaultSidenavHasBackdrop();
197
- options.closeOnBackdropClick = options.closeOnBackdropClick ?? this.defaultSidenavCloseOnBackdropClick();
196
+ options.hasBackdrop = options.hasBackdrop == null ? this.defaultSidenavHasBackdrop() : options.hasBackdrop;
197
+ options.closeOnBackdropClick = options.closeOnBackdropClick == null ? options.closeOnBackdropClick : this.defaultSidenavCloseOnBackdropClick();
198
198
  const sidenavRef = new Layout1SecondarySidenav(template, options);
199
199
  this._secondarySidenavs().push(sidenavRef);
200
200
  this._changeDetectorRef.markForCheck();
@@ -1 +1 @@
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';\nimport { Layout1SecondarySidenav, Layout1SecondarySidenavOptions } from './secondary-sidenav';\nimport { Layout1Component } from './layout1.component';\n\n/**\n * Service to manage the configuration and state of Layout1Component.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Layout1Manager {\n /**\n * The Layout1Component instance associated with this manager.\n */\n public component!: Layout1Component;\n\n /**\n * Push a secondary sidenav.\n * @param content The template for the secondary sidenav.\n * @param options Options for the secondary sidenav.\n * @returns The reference to the pushed secondary sidenav.\n */\n public pushSidenav(content: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\n return this.component.pushSidenav(content, options);\n }\n\n /**\n * Close the last secondary sidenav and dispose it.\n */\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\n return this.component.popSidenav(result);\n }\n\n /**\n * Get the list of secondary sidenavs.\n */\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\n return this.component.secondarySidenavs;\n }\n\n /**\n * Get the last secondary sidenav.\n */\n public get last(): Layout1SecondarySidenav | undefined {\n return this.component.secondarySidenavs.at(-1);\n }\n}\n","import { booleanAttribute, Directive, EventEmitter, inject, input, Output, TemplateRef } from '@angular/core';\nimport { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\nimport { CssClass } from '@bootkit/ng0/common';\n\n/** \n * Directive to define a sidenav within Layout1Component.\n */\n@Directive({\n selector: '[ng0Layout1Sidenav]',\n exportAs: 'ng0Layout1Sidenav',\n standalone: true,\n})\nexport class Layout1SidenavDirective {\n public readonly template = inject(TemplateRef<any>);\n public readonly open = input(true, { transform: booleanAttribute });\n public readonly mode = input<SidenavMode>('push');\n public readonly hasBackdrop = input(true, { transform: booleanAttribute });\n public readonly zIndex = input<number | undefined>(undefined);\n public readonly position = input<SidenavPosition>('start');\n public readonly size = input<SidenavSize>();\n public readonly css = input<CssClass>();\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\n}\n","import { signal, TemplateRef, WritableSignal } from \"@angular/core\";\nimport { CssClass } from \"@bootkit/ng0/common\";\nimport { SidenavMode, SidenavPosition, SidenavSize } from \"@bootkit/ng0/components/sidenav\";\nimport { Subject } from \"rxjs\";\n\n/**\n * Represents a secondary sidenav options in the Layout1Component.\n */\nexport interface Layout1SecondarySidenavOptions {\n size?: SidenavSize;\n zIndex?: number;\n position?: SidenavPosition;\n mode?: SidenavMode;\n fixedInViewport?: boolean;\n hasBackdrop?: boolean;\n css?: CssClass;\n closeOnBackdropClick?: boolean\n}\n\n/**\n * Reference to a secondary sidenav in the Layout1Component.\n */\nexport class Layout1SecondarySidenav {\n private _disposedSubject = new Subject<any>();\n private _isDisposed = false;\n\n /**\n * Observable that emits when the sidenav is disposed.\n */\n public readonly disposed = this._disposedSubject.asObservable();\n\n /**\n * template of the sidenav content.\n */\n public readonly template: TemplateRef<any>;\n\n /**\n * Z-Index of the sidenav.\n */\n public readonly zIndex: WritableSignal<number | undefined>;\n\n /**\n * Sidenav css classes.\n */\n public readonly css: WritableSignal<CssClass>;\n\n /**\n * Size of the sidenav.\n */\n public readonly size: WritableSignal<SidenavSize>;\n\n /**\n * Position of the sidenav.\n */\n public readonly position: WritableSignal<SidenavPosition>;\n\n /**\n * Mode of the sidenav.\n */\n public readonly mode: WritableSignal<SidenavMode>;\n\n /**\n * Whether the sidenav has a backdrop.\n */\n public readonly hasBackdrop: WritableSignal<boolean>;\n\n /**\n * Whether the sidenav should close on backdrop click.\n */\n public readonly closeOnBackdropClick: WritableSignal<boolean>;\n\n /**\n * Whether the sidenav is disposed.\n */\n public get isDisposed() {\n return this._isDisposed;\n }\n\n constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions) {\n this.template = template;\n this.zIndex = signal(options?.zIndex);\n this.css = signal(options?.css);\n this.size = signal(options?.size);\n this.position = signal(options?.position ?? 'start');\n this.mode = signal(options?.mode ?? 'over');\n this.hasBackdrop = signal(options?.hasBackdrop ?? true);\n this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false);\n }\n\n /**\n * Close and dispose the sidenav.\n * @param result Optional result to emit when the sidenav is closed.\n */\n public dispose(result?: any): void {\n if (!this._isDisposed) {\n this._isDisposed = true;\n this._disposedSubject.next(result);\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, input, QueryList, signal, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { SidenavMode, SidenavModule, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\nimport { CommonModule } from '@angular/common';\nimport { Layout1Manager } from './layout1-manager';\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\nimport { Layout1SecondarySidenavOptions, Layout1SecondarySidenav } from './secondary-sidenav';\n\n/**\n * Layout1 component that provides a layout with sidenavs.\n */\n@Component({\n selector: 'ng0-layout1',\n templateUrl: './layout1.component.html',\n styleUrls: ['./layout1.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, SidenavModule]\n})\nexport class Layout1Component {\n private _zIndexCounter = 1000;\n private readonly _manager = inject(Layout1Manager);\n @ContentChildren(Layout1SidenavDirective) protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;\n protected readonly _secondarySidenavs = signal<Layout1SecondarySidenav[]>([]);\n protected readonly _openSecondarySidenavs = new Set<Layout1SecondarySidenav>();\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Default position for secondary sidenavs.\n */\n defaultSidenavPosition = input<SidenavPosition>('start');\n\n /**\n * Default size for secondary sidenavs.\n */\n defaultSidenavSize = input<SidenavSize>();\n\n /**\n * Default mode for secondary sidenavs.\n */\n defaultSidenavMode = input<SidenavMode>('over');\n\n /**\n * Default hasBackdrop value for secondary sidenavs.\n */\n defaultSidenavHasBackdrop = input(true);\n\n /**\n * Default closeOnBackdropClick value for secondary sidenavs.\n */\n defaultSidenavCloseOnBackdropClick = input(false);\n\n\n constructor() {\n this._manager.component = this;\n }\n\n /**\n * Push a secondary sidenav.\n * @param template The template for the secondary sidenav.\n * @param options Options for the secondary sidenav.\n * @returns The reference to the pushed secondary sidenav.\n */\n public pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\n options = options || {};\n options.zIndex = options.zIndex ?? this._zIndexCounter++;\n options.mode = options.mode ?? this.defaultSidenavMode();\n options.position = options.position ?? this.defaultSidenavPosition();\n options.size = options.size ?? this.defaultSidenavSize();\n options.hasBackdrop = options.hasBackdrop ?? this.defaultSidenavHasBackdrop();\n options.closeOnBackdropClick = options.closeOnBackdropClick ?? this.defaultSidenavCloseOnBackdropClick();\n\n const sidenavRef = new Layout1SecondarySidenav(template, options);\n this._secondarySidenavs().push(sidenavRef);\n this._changeDetectorRef.markForCheck();\n\n // Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.\n setTimeout(() => {\n this._openSecondarySidenavs.add(sidenavRef);\n this._changeDetectorRef.markForCheck();\n });\n\n sidenavRef.disposed.subscribe((result?: any) => {\n // Close the sidenav first. After the transition ends, it will be removed from DOM.\n this._openSecondarySidenavs.delete(sidenavRef);\n });\n\n return sidenavRef;\n }\n\n /**\n * Close the last secondary sidenav and dispose it.\n * @param result The result to pass when closing the sidenav.\n * @return The reference to the closed secondary sidenav.\n */\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\n const last = this._secondarySidenavs().at(-1);\n if (last) {\n last.dispose(result);\n return last;\n }\n\n return undefined;\n }\n\n /**\n * Get the list of secondary sidenavs.\n */\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\n return this._secondarySidenavs();\n }\n\n protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav) {\n if (sidenav.isDisposed) {\n const index = this._secondarySidenavs().findIndex(x => x === sidenav);\n this._secondarySidenavs().splice(index, 1);\n }\n }\n}\n","<ng0-sidenav-container>\n <ng0-sidenav-content>\n <ng-content select=\"ng0-layout1-header\" />\n <ng-content select=\"ng0-layout1-content\" />\n </ng0-sidenav-content>\n\n @for (sidenav of _sidenavs; track $index) {\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"sidenav.open()\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n @for (sidenav of _secondarySidenavs(); track $index) {\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n</ng0-sidenav-container>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Layout1 header component.\n */\n@Component({\n selector: 'ng0-layout1-header',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Layout1HeaderComponent {\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Layout1 content component.\n */\n@Component({\n selector: 'ng0-layout1-content',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Layout1ContentComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { Layout1Component } from './layout1.component';\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\nimport { Layout1HeaderComponent } from './layout1-header.component';\nimport { Layout1ContentComponent } from './public-api';\n\nconst items = [\n Layout1Component,\n Layout1SidenavDirective,\n Layout1HeaderComponent,\n Layout1ContentComponent\n];\n\n/**\n * Layout1Module\n */\n@NgModule({\n imports: items,\n exports: items\n})\nexport class Layout1Module { }\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';\nimport { Layout1SecondarySidenav, Layout1SecondarySidenavOptions } from './secondary-sidenav';\nimport { Layout1Component } from './layout1.component';\n\n/**\n * Service to manage the configuration and state of Layout1Component.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class Layout1Manager {\n /**\n * The Layout1Component instance associated with this manager.\n */\n public component!: Layout1Component;\n\n /**\n * Push a secondary sidenav.\n * @param content The template for the secondary sidenav.\n * @param options Options for the secondary sidenav.\n * @returns The reference to the pushed secondary sidenav.\n */\n public pushSidenav(content: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\n return this.component.pushSidenav(content, options);\n }\n\n /**\n * Close the last secondary sidenav and dispose it.\n */\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\n return this.component.popSidenav(result);\n }\n\n /**\n * Get the list of secondary sidenavs.\n */\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\n return this.component.secondarySidenavs;\n }\n\n /**\n * Get the last secondary sidenav.\n */\n public get last(): Layout1SecondarySidenav | undefined {\n return this.component.secondarySidenavs.at(-1);\n }\n}\n","import { booleanAttribute, Directive, EventEmitter, inject, input, Output, TemplateRef } from '@angular/core';\nimport { SidenavMode, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\nimport { CssClass } from '@bootkit/ng0/common';\n\n/** \n * Directive to define a sidenav within Layout1Component.\n */\n@Directive({\n selector: '[ng0Layout1Sidenav]',\n exportAs: 'ng0Layout1Sidenav',\n standalone: true,\n})\nexport class Layout1SidenavDirective {\n public readonly template = inject(TemplateRef<any>);\n public readonly open = input(true, { transform: booleanAttribute });\n public readonly mode = input<SidenavMode>('push');\n public readonly hasBackdrop = input(true, { transform: booleanAttribute });\n public readonly zIndex = input<number | undefined>(undefined);\n public readonly position = input<SidenavPosition>('start');\n public readonly size = input<SidenavSize>();\n public readonly css = input<CssClass>();\n @Output() public backdropClick = new EventEmitter<PointerEvent>();\n}\n","import { signal, TemplateRef, WritableSignal } from \"@angular/core\";\nimport { CssClass } from \"@bootkit/ng0/common\";\nimport { SidenavMode, SidenavPosition, SidenavSize } from \"@bootkit/ng0/components/sidenav\";\nimport { Subject } from \"rxjs\";\n\n/**\n * Represents a secondary sidenav options in the Layout1Component.\n */\nexport interface Layout1SecondarySidenavOptions {\n size?: SidenavSize;\n zIndex?: number;\n position?: SidenavPosition;\n mode?: SidenavMode;\n fixedInViewport?: boolean;\n hasBackdrop?: boolean;\n css?: CssClass;\n closeOnBackdropClick?: boolean\n}\n\n/**\n * Reference to a secondary sidenav in the Layout1Component.\n */\nexport class Layout1SecondarySidenav {\n private _disposedSubject = new Subject<any>();\n private _isDisposed = false;\n\n /**\n * Observable that emits when the sidenav is disposed.\n */\n public readonly disposed = this._disposedSubject.asObservable();\n\n /**\n * template of the sidenav content.\n */\n public readonly template: TemplateRef<any>;\n\n /**\n * Z-Index of the sidenav.\n */\n public readonly zIndex: WritableSignal<number | undefined>;\n\n /**\n * Sidenav css classes.\n */\n public readonly css: WritableSignal<CssClass>;\n\n /**\n * Size of the sidenav.\n */\n public readonly size: WritableSignal<SidenavSize>;\n\n /**\n * Position of the sidenav.\n */\n public readonly position: WritableSignal<SidenavPosition>;\n\n /**\n * Mode of the sidenav.\n */\n public readonly mode: WritableSignal<SidenavMode>;\n\n /**\n * Whether the sidenav has a backdrop.\n */\n public readonly hasBackdrop: WritableSignal<boolean>;\n\n /**\n * Whether the sidenav should close on backdrop click.\n */\n public readonly closeOnBackdropClick: WritableSignal<boolean>;\n\n /**\n * Whether the sidenav is disposed.\n */\n public get isDisposed() {\n return this._isDisposed;\n }\n\n constructor(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions) {\n this.template = template;\n this.zIndex = signal(options?.zIndex);\n this.css = signal(options?.css);\n this.size = signal(options?.size);\n this.position = signal(options?.position ?? 'start');\n this.mode = signal(options?.mode ?? 'over');\n this.hasBackdrop = signal(options?.hasBackdrop ?? true);\n this.closeOnBackdropClick = signal(options?.closeOnBackdropClick ?? false);\n }\n\n /**\n * Close and dispose the sidenav.\n * @param result Optional result to emit when the sidenav is closed.\n */\n public dispose(result?: any): void {\n if (!this._isDisposed) {\n this._isDisposed = true;\n this._disposedSubject.next(result);\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, inject, input, QueryList, signal, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { SidenavMode, SidenavModule, SidenavPosition, SidenavSize } from '@bootkit/ng0/components/sidenav';\nimport { CommonModule } from '@angular/common';\nimport { Layout1Manager } from './layout1-manager';\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\nimport { Layout1SecondarySidenavOptions, Layout1SecondarySidenav } from './secondary-sidenav';\n\n/**\n * Layout1 component that provides a layout with sidenavs.\n */\n@Component({\n selector: 'ng0-layout1',\n templateUrl: './layout1.component.html',\n styleUrls: ['./layout1.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CommonModule, SidenavModule]\n})\nexport class Layout1Component {\n private _zIndexCounter = 1000;\n private readonly _manager = inject(Layout1Manager);\n @ContentChildren(Layout1SidenavDirective) protected readonly _sidenavs?: QueryList<Layout1SidenavDirective>;\n protected readonly _secondarySidenavs = signal<Layout1SecondarySidenav[]>([]);\n protected readonly _openSecondarySidenavs = new Set<Layout1SecondarySidenav>();\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * Default position for secondary sidenavs.\n */\n defaultSidenavPosition = input<SidenavPosition>('start');\n\n /**\n * Default size for secondary sidenavs.\n */\n defaultSidenavSize = input<SidenavSize>();\n\n /**\n * Default mode for secondary sidenavs.\n */\n defaultSidenavMode = input<SidenavMode>('over');\n\n /**\n * Default hasBackdrop value for secondary sidenavs.\n */\n defaultSidenavHasBackdrop = input(true);\n\n /**\n * Default closeOnBackdropClick value for secondary sidenavs.\n */\n defaultSidenavCloseOnBackdropClick = input(false);\n\n\n constructor() {\n this._manager.component = this;\n }\n\n /**\n * Push a secondary sidenav.\n * @param template The template for the secondary sidenav.\n * @param options Options for the secondary sidenav.\n * @returns The reference to the pushed secondary sidenav.\n */\n public pushSidenav(template: TemplateRef<any>, options?: Layout1SecondarySidenavOptions): Layout1SecondarySidenav {\n options = options || {};\n options.zIndex = options.zIndex ?? this._zIndexCounter++;\n options.mode = options.mode ?? this.defaultSidenavMode();\n options.position = options.position ?? this.defaultSidenavPosition();\n options.size = options.size ?? this.defaultSidenavSize();\n options.hasBackdrop = options.hasBackdrop == null ? this.defaultSidenavHasBackdrop() : options.hasBackdrop\n options.closeOnBackdropClick = options.closeOnBackdropClick == null ? options.closeOnBackdropClick : this.defaultSidenavCloseOnBackdropClick();\n\n const sidenavRef = new Layout1SecondarySidenav(template, options);\n this._secondarySidenavs().push(sidenavRef);\n this._changeDetectorRef.markForCheck();\n\n // Open the sidenav in the next tick to ensure it's 'transform' transition works correctly.\n setTimeout(() => {\n this._openSecondarySidenavs.add(sidenavRef);\n this._changeDetectorRef.markForCheck();\n });\n\n sidenavRef.disposed.subscribe((result?: any) => {\n // Close the sidenav first. After the transition ends, it will be removed from DOM.\n this._openSecondarySidenavs.delete(sidenavRef);\n });\n\n return sidenavRef;\n }\n\n /**\n * Close the last secondary sidenav and dispose it.\n * @param result The result to pass when closing the sidenav.\n * @return The reference to the closed secondary sidenav.\n */\n public popSidenav(result?: any): Layout1SecondarySidenav | undefined {\n const last = this._secondarySidenavs().at(-1);\n if (last) {\n last.dispose(result);\n return last;\n }\n\n return undefined;\n }\n\n /**\n * Get the list of secondary sidenavs.\n */\n public get secondarySidenavs(): ReadonlyArray<Layout1SecondarySidenav> {\n return this._secondarySidenavs();\n }\n\n protected _onSecondarySidenavTransitionEnd(sidenav: Layout1SecondarySidenav) {\n if (sidenav.isDisposed) {\n const index = this._secondarySidenavs().findIndex(x => x === sidenav);\n this._secondarySidenavs().splice(index, 1);\n }\n }\n}\n","<ng0-sidenav-container>\n <ng0-sidenav-content>\n <ng-content select=\"ng0-layout1-header\" />\n <ng-content select=\"ng0-layout1-content\" />\n </ng0-sidenav-content>\n\n @for (sidenav of _sidenavs; track $index) {\n <ng0-sidenav class=\"ng0-layout1-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"sidenav.open()\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (backdropClick)=\"sidenav.backdropClick.emit($event)\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n @for (sidenav of _secondarySidenavs(); track $index) {\n <ng0-sidenav class=\"ng0-layout1-secondary-sidenav\"\n [size]=\"sidenav.size()\"\n [open]=\"_openSecondarySidenavs.has(sidenav)\"\n [mode]=\"sidenav.mode()\"\n [hasBackdrop]=\"sidenav.hasBackdrop()\"\n [position]=\"sidenav.position()\"\n [zIndex]=\"sidenav.zIndex()\"\n [fixedInViewport]=\"true\"\n [ngClass]=\"sidenav.css()\"\n (transitionEnd)=\"_onSecondarySidenavTransitionEnd(sidenav)\"\n (backdropClick)=\"sidenav.closeOnBackdropClick() ? sidenav.dispose() : null\">\n <ng-container *ngTemplateOutlet=\"sidenav.template\" />\n </ng0-sidenav>\n }\n\n</ng0-sidenav-container>","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Layout1 header component.\n */\n@Component({\n selector: 'ng0-layout1-header',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Layout1HeaderComponent {\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * Layout1 content component.\n */\n@Component({\n selector: 'ng0-layout1-content',\n template: `<ng-content></ng-content>`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class Layout1ContentComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { Layout1Component } from './layout1.component';\nimport { Layout1SidenavDirective } from './layout1-sidenav.directive';\nimport { Layout1HeaderComponent } from './layout1-header.component';\nimport { Layout1ContentComponent } from './public-api';\n\nconst items = [\n Layout1Component,\n Layout1SidenavDirective,\n Layout1HeaderComponent,\n Layout1ContentComponent\n];\n\n/**\n * Layout1Module\n */\n@NgModule({\n imports: items,\n exports: items\n})\nexport class Layout1Module { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAIA;;AAEG;MAIU,cAAc,CAAA;AACzB;;AAEG;AACI,IAAA,SAAS;AAEhB;;;;;AAKG;IACI,WAAW,CAAC,OAAyB,EAAE,OAAwC,EAAA;QACpF,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;IACrD;AAEA;;AAEG;AACI,IAAA,UAAU,CAAC,MAAY,EAAA;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;IAC1C;AAEA;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB;IACzC;AAEA;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD;wGAnCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACLD;;AAEG;MAMU,uBAAuB,CAAA;AAChB,IAAA,QAAQ,GAAG,MAAM,EAAC,WAAgB,EAAC;AACnC,IAAA,IAAI,GAAG,KAAK,CAAC,IAAI,wCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACnD,IAAA,IAAI,GAAG,KAAK,CAAc,MAAM,gDAAC;AACjC,IAAA,WAAW,GAAG,KAAK,CAAC,IAAI,+CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AAC1D,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,kDAAC;AAC7C,IAAA,QAAQ,GAAG,KAAK,CAAkB,OAAO,oDAAC;IAC1C,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;IAC3B,GAAG,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAY;AACtB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAgB;wGATxD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;sBAUI;;;ACFL;;AAEG;MACU,uBAAuB,CAAA;AACxB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAO;IACrC,WAAW,GAAG,KAAK;AAE3B;;AAEG;AACa,IAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AAE/D;;AAEG;AACa,IAAA,QAAQ;AAExB;;AAEG;AACa,IAAA,MAAM;AAEtB;;AAEG;AACa,IAAA,GAAG;AAEnB;;AAEG;AACa,IAAA,IAAI;AAEpB;;AAEG;AACa,IAAA,QAAQ;AAExB;;AAEG;AACa,IAAA,IAAI;AAEpB;;AAEG;AACa,IAAA,WAAW;AAE3B;;AAEG;AACa,IAAA,oBAAoB;AAEpC;;AAEG;AACH,IAAA,IAAW,UAAU,GAAA;QACjB,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEA,WAAA,CAAY,QAA0B,EAAE,OAAwC,EAAA;AAC5E,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAO,EAAE,oBAAoB,IAAI,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC9E;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,MAAY,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC;IACJ;AACH;;AC5FD;;AAEG;MAUU,gBAAgB,CAAA;IACnB,cAAc,GAAG,IAAI;AACZ,IAAA,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;AACW,IAAA,SAAS;AACnD,IAAA,kBAAkB,GAAG,MAAM,CAA4B,EAAE,8DAAC;AAC1D,IAAA,sBAAsB,GAAG,IAAI,GAAG,EAA2B;AAC7D,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE/D;;AAEG;AACH,IAAA,sBAAsB,GAAG,KAAK,CAAkB,OAAO,kEAAC;AAExD;;AAEG;IACH,kBAAkB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAe;AAEzC;;AAEG;AACH,IAAA,kBAAkB,GAAG,KAAK,CAAc,MAAM,8DAAC;AAE/C;;AAEG;AACH,IAAA,yBAAyB,GAAG,KAAK,CAAC,IAAI,qEAAC;AAEvC;;AAEG;AACH,IAAA,kCAAkC,GAAG,KAAK,CAAC,KAAK,8EAAC;AAGjD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI;IAChC;AAEA;;;;;AAKG;IACI,WAAW,CAAC,QAA0B,EAAE,OAAwC,EAAA;AACrF,QAAA,OAAO,GAAG,OAAO,IAAI,EAAE;QACvB,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE;QACxD,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;QACxD,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE;QACpE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;QACxD,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,yBAAyB,EAAE,GAAG,OAAO,CAAC,WAAW;QAC1G,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,IAAI,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,kCAAkC,EAAE;QAE9I,MAAM,UAAU,GAAG,IAAI,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACjE,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;;QAGtC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;QAEF,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAY,KAAI;;AAE7C,YAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC;AAChD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,UAAU;IACnB;AAEA;;;;AAIE;AACK,IAAA,UAAU,CAAC,MAAY,EAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,SAAS;IAClB;AAEA;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;IAClC;AAEU,IAAA,gCAAgC,CAAC,OAAgC,EAAA;AACzE,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;YACrE,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5C;IACF;wGAlGW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,y9BAGV,uBAAuB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB1C,4iDAqCwB,EAAA,MAAA,EAAA,CAAA,8TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBZ,YAAY,mSAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAE1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,aAAA,EAGR,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,4iDAAA,EAAA,MAAA,EAAA,CAAA,8TAAA,CAAA,EAAA;;sBAKrC,eAAe;uBAAC,uBAAuB;;;AEpB1C;;AAEG;MAQU,sBAAsB,CAAA;wGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,8EALvB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAK1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACTD;;AAEG;MAQU,uBAAuB,CAAA;wGAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,+EALxB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAK1B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;oBACrC,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACLD,MAAM,KAAK,GAAG;IACV,gBAAgB;IAChB,uBAAuB;IACvB,sBAAsB;IACtB;CACH;AAED;;AAEG;MAKU,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAbtB,gBAAgB;YAChB,uBAAuB;YACvB,sBAAsB;AACtB,YAAA,uBAAuB,aAHvB,gBAAgB;YAChB,uBAAuB;YACvB,sBAAsB;YACtB,uBAAuB,CAAA,EAAA,CAAA;AAUd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAbtB,gBAAgB,CAAA,EAAA,CAAA;;4FAaP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,KAAK;AACd,oBAAA,OAAO,EAAE;AACZ,iBAAA;;;ACnBD;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bootkit/ng0",
3
- "version": "0.0.0-alpha.47",
3
+ "version": "0.0.0-alpha.49",
4
4
  "description": "Angular+Bootstrap Component Library",
5
5
  "homepage": "https://bootkitlib.github.io/",
6
6
  "author": "BootKit",
@@ -35,14 +35,14 @@
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
  },
42
+ "./data": {
43
+ "types": "./data/index.d.ts",
44
+ "default": "./fesm2022/bootkit-ng0-data.mjs"
45
+ },
46
46
  "./date": {
47
47
  "types": "./date/index.d.ts",
48
48
  "default": "./fesm2022/bootkit-ng0-date.mjs"