@coreui/angular 5.7.23 → 5.7.25

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Directive, input, Renderer2, effect, TemplateRef, booleanAttribute, untracked, NgModule, computed, Injectable, Component, linkedSignal, output, signal, contentChildren, numberAttribute, MAX_ANIMATION_TIMEOUT, DestroyRef, DOCUMENT, PLATFORM_ID, RendererFactory2, afterNextRender, forwardRef, NgZone, ChangeDetectorRef, contentChild, afterEveryRender, viewChild, ViewContainerRef, model, afterRenderEffect, ChangeDetectionStrategy, Pipe, Input, HostBinding, ContentChildren, HostListener, Injector, runInInjectionContext, ViewEncapsulation } from '@angular/core';
2
+ import { inject, ElementRef, Directive, input, Renderer2, effect, TemplateRef, booleanAttribute, untracked, NgModule, computed, Injectable, Component, linkedSignal, output, signal, contentChildren, numberAttribute, MAX_ANIMATION_TIMEOUT, DestroyRef, DOCUMENT, PLATFORM_ID, RendererFactory2, afterNextRender, forwardRef, NgZone, ChangeDetectorRef, contentChild, afterEveryRender, viewChild, ViewContainerRef, model, afterRenderEffect, Pipe, Input, HostBinding, ChangeDetectionStrategy, ContentChildren, HostListener, Injector, runInInjectionContext, ViewEncapsulation } from '@angular/core';
3
3
  import { NgTemplateOutlet, isPlatformServer, isPlatformBrowser } from '@angular/common';
4
4
  import { takeUntilDestroyed, toSignal, toObservable } from '@angular/core/rxjs-interop';
5
5
  import { fromEvent, Subject, BehaviorSubject, merge, takeWhile, skipWhile } from 'rxjs';
@@ -11,7 +11,6 @@ import * as i1$1 from '@angular/cdk/a11y';
11
11
  import { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';
12
12
  import { BreakpointObserver } from '@angular/cdk/layout';
13
13
  import { DomPortal, DomPortalOutlet } from '@angular/cdk/portal';
14
- import { trigger, state, style, transition, animate } from '@angular/animations';
15
14
  import { IconDirective } from '@coreui/icons-angular';
16
15
 
17
16
  var BreakpointInfix;
@@ -456,7 +455,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
456
455
  }]
457
456
  }] });
458
457
 
459
- let nextId$2 = 0;
458
+ let nextId$3 = 0;
460
459
  class AccordionItemComponent {
461
460
  #accordionService = inject(AccordionService);
462
461
  /**
@@ -477,7 +476,7 @@ class AccordionItemComponent {
477
476
  get visible() {
478
477
  return this.itemVisible();
479
478
  }
480
- contentId = `accordion-item-${nextId$2++}`;
479
+ contentId = `accordion-item-${nextId$3++}`;
481
480
  get itemContext() {
482
481
  return { $implicit: this.itemVisible() };
483
482
  }
@@ -1395,6 +1394,8 @@ class BackdropService {
1395
1394
  backdropClick$ = this.#backdropClick.asObservable();
1396
1395
  #document = inject(DOCUMENT);
1397
1396
  activeBackdrop;
1397
+ #clearBackdropId;
1398
+ #pendingBackdrop;
1398
1399
  get #scrollbarWidth() {
1399
1400
  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
1400
1401
  const documentWidth = this.#document.documentElement.clientWidth;
@@ -1403,6 +1404,7 @@ class BackdropService {
1403
1404
  }
1404
1405
  scrollbarWidth = this.#scrollbarWidth;
1405
1406
  setBackdrop(type = 'modal') {
1407
+ this.#flushClearBackdrop();
1406
1408
  const backdropElement = this.#document.createElement('div');
1407
1409
  backdropElement.classList.add(`${type}-backdrop`);
1408
1410
  backdropElement.classList.add('fade');
@@ -1428,17 +1430,37 @@ class BackdropService {
1428
1430
  delete backdropElement.__backdropClickHandler;
1429
1431
  }
1430
1432
  backdropElement.classList.remove('show');
1431
- setTimeout(() => {
1433
+ this.#flushClearBackdrop();
1434
+ this.#pendingBackdrop = backdropElement;
1435
+ this.#clearBackdropId = setTimeout(() => {
1436
+ this.#clearBackdropId = undefined;
1437
+ this.#pendingBackdrop = undefined;
1432
1438
  if (this.activeBackdrop === backdropElement) {
1433
1439
  this.resetScrollbar();
1440
+ this.activeBackdrop = undefined;
1434
1441
  }
1435
- if (backdropElement.parentElement === this.#document.body) {
1436
- this.#document.body.removeChild(backdropElement);
1437
- }
1442
+ this.#removeBackdrop(backdropElement);
1438
1443
  }, 300);
1439
1444
  }
1440
1445
  return undefined;
1441
1446
  }
1447
+ #flushClearBackdrop() {
1448
+ if (this.#clearBackdropId === undefined) {
1449
+ return;
1450
+ }
1451
+ clearTimeout(this.#clearBackdropId);
1452
+ this.#clearBackdropId = undefined;
1453
+ const pending = this.#pendingBackdrop;
1454
+ this.#pendingBackdrop = undefined;
1455
+ if (pending) {
1456
+ this.#removeBackdrop(pending);
1457
+ }
1458
+ }
1459
+ #removeBackdrop(backdropElement) {
1460
+ if (backdropElement.parentElement === this.#document.body) {
1461
+ this.#document.body.removeChild(backdropElement);
1462
+ }
1463
+ }
1442
1464
  get #isRTL() {
1443
1465
  return [this.#document.documentElement.dir, this.#document.body.dir].includes('rtl');
1444
1466
  }
@@ -4971,8 +4993,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
4971
4993
  }]
4972
4994
  }] });
4973
4995
 
4996
+ class NavGroupService {
4997
+ /**
4998
+ * Id of the open group at this level, `undefined` when none is open.
4999
+ */
5000
+ activeId = signal(undefined, /* @ts-ignore */
5001
+ ...(ngDevMode ? [{ debugName: "activeId" }] : /* istanbul ignore next */ []));
5002
+ /**
5003
+ * Opens the level owner within its own parent and cascades up to the root.
5004
+ * Replaced by the owning `c-nav-group`; stays a no-op for the root level.
5005
+ */
5006
+ openBranch = () => undefined;
5007
+ setActiveId(id) {
5008
+ this.activeId.set(id);
5009
+ }
5010
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5011
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupService });
5012
+ }
5013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupService, decorators: [{
5014
+ type: Injectable
5015
+ }] });
5016
+
5017
+ const DISABLED_ATTR_ELEMENTS = new Set(['button', 'fieldset', 'input', 'optgroup', 'option', 'select', 'textarea']);
4974
5018
  class NavLinkDirective {
4975
5019
  static ngAcceptInputType_disabled;
5020
+ #hostElement = inject(ElementRef);
5021
+ #navGroupService = inject(NavGroupService, { optional: true });
5022
+ #classObserver;
5023
+ constructor() {
5024
+ afterNextRender({
5025
+ read: () => {
5026
+ this.#observeActiveClass();
5027
+ }
5028
+ });
5029
+ }
4976
5030
  /**
4977
5031
  * Sets .nav-link class to the host
4978
5032
  * @returns boolean
@@ -5004,15 +5058,23 @@ class NavLinkDirective {
5004
5058
  ariaDisabled = null;
5005
5059
  attrDisabled = null;
5006
5060
  attrTabindex = null;
5007
- styleCursor = null;
5008
5061
  #disabledEffect = effect(() => {
5009
5062
  const disabled = this.disabled();
5010
- this.ariaDisabled = disabled || null;
5011
- this.attrDisabled = disabled ? '' : null;
5012
- this.attrTabindex = disabled ? -1 : (this.tabindex() ?? null);
5013
- this.styleCursor = disabled ? null : 'pointer';
5063
+ const tabindex = this.tabindex();
5064
+ const disabledAttrElement = DISABLED_ATTR_ELEMENTS.has(this.#tagName);
5065
+ this.ariaDisabled = (disabled && !disabledAttrElement) || null;
5066
+ this.attrDisabled = disabled && disabledAttrElement ? '' : null;
5067
+ this.attrTabindex = disabled && !disabledAttrElement ? -1 : (Number.isNaN(tabindex) ? null : (tabindex ?? null));
5014
5068
  }, /* @ts-ignore */
5015
5069
  ...(ngDevMode ? [{ debugName: "#disabledEffect" }] : /* istanbul ignore next */ []));
5070
+ #activeEffect = effect(() => {
5071
+ if (this.active()) {
5072
+ untracked(() => {
5073
+ this.#navGroupService?.openBranch();
5074
+ });
5075
+ }
5076
+ }, /* @ts-ignore */
5077
+ ...(ngDevMode ? [{ debugName: "#activeEffect" }] : /* istanbul ignore next */ []));
5016
5078
  hostClasses = computed(() => {
5017
5079
  return {
5018
5080
  'nav-link': this.cNavLink(),
@@ -5021,8 +5083,32 @@ class NavLinkDirective {
5021
5083
  };
5022
5084
  }, /* @ts-ignore */
5023
5085
  ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
5086
+ get #tagName() {
5087
+ return this.#hostElement.nativeElement.tagName.toLowerCase();
5088
+ }
5089
+ ngOnDestroy() {
5090
+ this.#classObserver?.disconnect();
5091
+ }
5092
+ #observeActiveClass() {
5093
+ const host = this.#hostElement.nativeElement;
5094
+ if (!this.#navGroupService) {
5095
+ return;
5096
+ }
5097
+ let wasActive = host.classList.contains('active');
5098
+ if (wasActive) {
5099
+ this.#navGroupService.openBranch();
5100
+ }
5101
+ this.#classObserver = new MutationObserver(() => {
5102
+ const active = host.classList.contains('active');
5103
+ if (active && !wasActive) {
5104
+ this.#navGroupService?.openBranch();
5105
+ }
5106
+ wasActive = active;
5107
+ });
5108
+ this.#classObserver.observe(host, { attributes: true, attributeFilter: ['class'] });
5109
+ }
5024
5110
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavLinkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5025
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: NavLinkDirective, isStandalone: true, selector: "[cNavLink]", inputs: { cNavLink: { classPropertyName: "cNavLink", publicName: "cNavLink", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.aria-current": "ariaCurrent()", "attr.aria-disabled": "ariaDisabled", "attr.disabled": "attrDisabled", "attr.tabindex": "attrTabindex", "style.cursor": "styleCursor" } }, ngImport: i0 });
5111
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: NavLinkDirective, isStandalone: true, selector: "[cNavLink]", inputs: { cNavLink: { classPropertyName: "cNavLink", publicName: "cNavLink", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.aria-current": "ariaCurrent()", "attr.aria-disabled": "ariaDisabled", "attr.disabled": "attrDisabled", "attr.tabindex": "attrTabindex" } }, ngImport: i0 });
5026
5112
  }
5027
5113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavLinkDirective, decorators: [{
5028
5114
  type: Directive,
@@ -5033,19 +5119,182 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
5033
5119
  '[attr.aria-current]': 'ariaCurrent()',
5034
5120
  '[attr.aria-disabled]': 'ariaDisabled',
5035
5121
  '[attr.disabled]': 'attrDisabled',
5036
- '[attr.tabindex]': 'attrTabindex',
5037
- '[style.cursor]': 'styleCursor'
5122
+ '[attr.tabindex]': 'attrTabindex'
5038
5123
  }
5039
5124
  }]
5040
- }], propDecorators: { cNavLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "cNavLink", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }] } });
5125
+ }], ctorParameters: () => [], propDecorators: { cNavLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "cNavLink", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }] } });
5126
+
5127
+ class NavGroupItemsComponent {
5128
+ static ngAcceptInputType_compact;
5129
+ /**
5130
+ * Make nav group items more compact by cutting all `padding` in half.
5131
+ * @returns boolean
5132
+ * @default false
5133
+ */
5134
+ compact = input(false, { ...(ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5135
+ hostClasses = computed(() => {
5136
+ return {
5137
+ 'nav-group-items': true,
5138
+ compact: this.compact()
5139
+ };
5140
+ }, /* @ts-ignore */
5141
+ ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
5142
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: NavGroupItemsComponent, isStandalone: true, selector: "c-nav-group-items", inputs: { compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] });
5144
+ }
5145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupItemsComponent, decorators: [{
5146
+ type: Component,
5147
+ args: [{ selector: 'c-nav-group-items', template: '<ng-content />', host: { '[class]': 'hostClasses()' }, styles: [":host{display:block}\n"] }]
5148
+ }], propDecorators: { compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }] } });
5149
+
5150
+ let nextId$2 = 0;
5151
+ class NavGroupComponent {
5152
+ static ngAcceptInputType_compact;
5153
+ static ngAcceptInputType_visible;
5154
+ #navGroupService = inject(NavGroupService);
5155
+ #parentNavGroupService = inject(NavGroupService, { optional: true, skipSelf: true });
5156
+ #id = `nav-group-${nextId$2++}`;
5157
+ constructor() {
5158
+ this.#navGroupService.openBranch = () => {
5159
+ this.openBranch();
5160
+ };
5161
+ }
5162
+ /**
5163
+ * Make nav group items more compact by cutting all `padding` in half.
5164
+ * @returns boolean
5165
+ * @default false
5166
+ */
5167
+ compact = input(false, { ...(ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5168
+ /**
5169
+ * Set group toggler label.
5170
+ * @returns string
5171
+ */
5172
+ toggler = input(/* @ts-ignore */
5173
+ ...(ngDevMode ? [undefined, { debugName: "toggler" }] : /* istanbul ignore next */ []));
5174
+ /**
5175
+ * Template for the group toggler content, receives the visible state as `$implicit`.
5176
+ * @returns TemplateRef
5177
+ */
5178
+ togglerTemplate = input(/* @ts-ignore */
5179
+ ...(ngDevMode ? [undefined, { debugName: "togglerTemplate" }] : /* istanbul ignore next */ []));
5180
+ /**
5181
+ * Show nav group items. Sets the initial state, and follows every later change.
5182
+ * @returns boolean
5183
+ */
5184
+ visible = input(undefined, { ...(ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5185
+ /**
5186
+ * Event emitted on visibility change.
5187
+ * @returns boolean
5188
+ */
5189
+ visibleChange = output();
5190
+ #uncontrolledVisible = signal(false, /* @ts-ignore */
5191
+ ...(ngDevMode ? [{ debugName: "#uncontrolledVisible" }] : /* istanbul ignore next */ []));
5192
+ display = signal(null, /* @ts-ignore */
5193
+ ...(ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []));
5194
+ visibleState = computed(() => {
5195
+ const parent = this.#parentNavGroupService;
5196
+ return parent ? parent.activeId() === this.#id : this.#uncontrolledVisible();
5197
+ }, /* @ts-ignore */
5198
+ ...(ngDevMode ? [{ debugName: "visibleState" }] : /* istanbul ignore next */ []));
5199
+ hostClasses = computed(() => {
5200
+ return {
5201
+ 'nav-group': true,
5202
+ show: this.visibleState()
5203
+ };
5204
+ }, /* @ts-ignore */
5205
+ ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
5206
+ #visibleEffect = effect(() => {
5207
+ const visible = this.visible();
5208
+ if (visible === undefined) {
5209
+ return;
5210
+ }
5211
+ untracked(() => {
5212
+ this.#setVisible(visible);
5213
+ });
5214
+ }, /* @ts-ignore */
5215
+ ...(ngDevMode ? [{ debugName: "#visibleEffect" }] : /* istanbul ignore next */ []));
5216
+ toggleGroup(event) {
5217
+ event.preventDefault();
5218
+ const next = !this.visibleState();
5219
+ this.#setVisible(next);
5220
+ this.visibleChange.emit(next);
5221
+ }
5222
+ openBranch() {
5223
+ const parent = this.#parentNavGroupService;
5224
+ if (!parent) {
5225
+ this.#uncontrolledVisible.set(true);
5226
+ return;
5227
+ }
5228
+ parent.setActiveId(this.#id);
5229
+ parent.openBranch();
5230
+ }
5231
+ onCollapseChange(state) {
5232
+ this.display.set(state === 'collapsed' || state === 'open' ? null : 'block');
5233
+ }
5234
+ #setVisible(visible) {
5235
+ const parent = this.#parentNavGroupService;
5236
+ if (!parent) {
5237
+ this.#uncontrolledVisible.set(visible);
5238
+ return;
5239
+ }
5240
+ if (visible) {
5241
+ parent.setActiveId(this.#id);
5242
+ return;
5243
+ }
5244
+ if (parent.activeId() === this.#id) {
5245
+ parent.setActiveId(undefined);
5246
+ }
5247
+ }
5248
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5249
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NavGroupComponent, isStandalone: true, selector: "c-nav-group", inputs: { compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, toggler: { classPropertyName: "toggler", publicName: "toggler", isSignal: true, isRequired: false, transformFunction: null }, togglerTemplate: { classPropertyName: "togglerTemplate", publicName: "togglerTemplate", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "hostClasses()" } }, providers: [NavGroupService], ngImport: i0, template: "@if (toggler() || togglerTemplate()) {\n <a\n (click)=\"toggleGroup($event)\"\n [attr.aria-expanded]=\"visibleState()\"\n class=\"nav-link nav-group-toggle\"\n href\n >\n @if (togglerTemplate(); as template) {\n <ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: visibleState(), visible: visibleState() }\"\n />\n } @else {\n {{ toggler() }}\n }\n </a>\n}\n<c-nav-group-items\n (collapseChange)=\"onCollapseChange($event)\"\n [compact]=\"compact()\"\n [style.display]=\"display()\"\n [visible]=\"visibleState()\"\n cCollapse\n>\n <ng-content />\n</c-nav-group-items>\n", styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"], dependencies: [{ kind: "directive", type: CollapseDirective, selector: "[cCollapse]", inputs: ["animate", "horizontal", "visible", "navbar"], outputs: ["visibleChange", "collapseChange"], exportAs: ["cCollapse"] }, { kind: "component", type: NavGroupItemsComponent, selector: "c-nav-group-items", inputs: ["compact"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
5250
+ }
5251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavGroupComponent, decorators: [{
5252
+ type: Component,
5253
+ args: [{ selector: 'c-nav-group', imports: [CollapseDirective, NavGroupItemsComponent, NgTemplateOutlet], providers: [NavGroupService], host: { '[class]': 'hostClasses()' }, template: "@if (toggler() || togglerTemplate()) {\n <a\n (click)=\"toggleGroup($event)\"\n [attr.aria-expanded]=\"visibleState()\"\n class=\"nav-link nav-group-toggle\"\n href\n >\n @if (togglerTemplate(); as template) {\n <ng-container\n *ngTemplateOutlet=\"template; context: { $implicit: visibleState(), visible: visibleState() }\"\n />\n } @else {\n {{ toggler() }}\n }\n </a>\n}\n<c-nav-group-items\n (collapseChange)=\"onCollapseChange($event)\"\n [compact]=\"compact()\"\n [style.display]=\"display()\"\n [visible]=\"visibleState()\"\n cCollapse\n>\n <ng-content />\n</c-nav-group-items>\n", styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"] }]
5254
+ }], ctorParameters: () => [], propDecorators: { compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], toggler: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggler", required: false }] }], togglerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "togglerTemplate", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }] } });
5041
5255
 
5042
5256
  class NavItemComponent {
5257
+ static ngAcceptInputType_active;
5258
+ static ngAcceptInputType_disabled;
5259
+ static ngAcceptInputType_tabindex;
5260
+ /**
5261
+ * Toggle the active state for the nav link rendered for `href`.
5262
+ * @returns boolean
5263
+ * @default undefined
5264
+ */
5265
+ active = input(undefined, { ...(ngDevMode ? { debugName: "active" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5266
+ /**
5267
+ * Set disabled attr for the nav link rendered for `href`.
5268
+ * @returns boolean
5269
+ * @default false
5270
+ */
5271
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5272
+ /**
5273
+ * The href attribute of the nav link. Set it to render the nav link, otherwise the item projects its content as is.
5274
+ * @returns string
5275
+ */
5276
+ href = input(/* @ts-ignore */
5277
+ ...(ngDevMode ? [undefined, { debugName: "href" }] : /* istanbul ignore next */ []));
5278
+ /**
5279
+ * The tabindex attribute of the nav link rendered for `href`.
5280
+ * @returns number | undefined
5281
+ */
5282
+ tabindex = input(undefined, { ...(ngDevMode ? { debugName: "tabindex" } : /* istanbul ignore next */ {}), transform: numberAttribute });
5043
5283
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5044
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: NavItemComponent, isStandalone: true, selector: "c-nav-item", host: { classAttribute: "nav-item" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"] });
5284
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: NavItemComponent, isStandalone: true, selector: "c-nav-item", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "nav-item" }, ngImport: i0, template: "@if (href()) {\n <a\n [active]=\"active()\"\n [attr.href]=\"href()\"\n [disabled]=\"disabled()\"\n [tabindex]=\"tabindex()\"\n cNavLink\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n} @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n}\n\n<ng-template #content>\n <ng-content />\n</ng-template>\n", styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"], dependencies: [{ kind: "directive", type: NavLinkDirective, selector: "[cNavLink]", inputs: ["cNavLink", "active", "disabled", "tabindex"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
5045
5285
  }
5046
5286
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavItemComponent, decorators: [{
5047
5287
  type: Component,
5048
- args: [{ selector: 'c-nav-item', template: '<ng-content />', host: { class: 'nav-item' }, styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"] }]
5288
+ args: [{ selector: 'c-nav-item', imports: [NavLinkDirective, NgTemplateOutlet], host: { class: 'nav-item' }, template: "@if (href()) {\n <a\n [active]=\"active()\"\n [attr.href]=\"href()\"\n [disabled]=\"disabled()\"\n [tabindex]=\"tabindex()\"\n cNavLink\n >\n <ng-container *ngTemplateOutlet=\"content\" />\n </a>\n} @else {\n <ng-container *ngTemplateOutlet=\"content\" />\n}\n\n<ng-template #content>\n <ng-content />\n</ng-template>\n", styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"] }]
5289
+ }], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }] } });
5290
+
5291
+ class NavTitleComponent {
5292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5293
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: NavTitleComponent, isStandalone: true, selector: "c-nav-title", host: { classAttribute: "nav-title" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"] });
5294
+ }
5295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavTitleComponent, decorators: [{
5296
+ type: Component,
5297
+ args: [{ selector: 'c-nav-title', template: '<ng-content />', host: { class: 'nav-title' }, styles: [":host{display:list-item;text-align:match-parent;text-align:-webkit-match-parent}\n"] }]
5049
5298
  }] });
5050
5299
 
5051
5300
  class NavComponent {
@@ -5055,6 +5304,13 @@ class NavComponent {
5055
5304
  */
5056
5305
  layout = input(/* @ts-ignore */
5057
5306
  ...(ngDevMode ? [undefined, { debugName: "layout" }] : /* istanbul ignore next */ []));
5307
+ /**
5308
+ * Default role for nav.
5309
+ * @returns string
5310
+ * @default 'navigation'
5311
+ */
5312
+ role = input('navigation', /* @ts-ignore */
5313
+ ...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
5058
5314
  /**
5059
5315
  * Set the nav variant to tabs or pills.
5060
5316
  * @default undefined
@@ -5067,25 +5323,32 @@ class NavComponent {
5067
5323
  return {
5068
5324
  nav: true,
5069
5325
  [`nav-${layout}`]: !!layout,
5326
+ 'nav-enclosed': variant === 'enclosed' || variant === 'enclosed-pills',
5070
5327
  [`nav-${variant}`]: !!variant
5071
5328
  };
5072
5329
  }, /* @ts-ignore */
5073
5330
  ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
5074
5331
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5075
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: NavComponent, isStandalone: true, selector: "c-nav", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "nav" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host .nav-link:focus{outline:0}:host.nav-underline-border{column-gap:0}\n"] });
5332
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: NavComponent, isStandalone: true, selector: "c-nav", inputs: { layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.role": "role()" }, classAttribute: "nav" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host .nav-link:focus{outline:0}:host.nav-underline-border{column-gap:0}\n"] });
5076
5333
  }
5077
5334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavComponent, decorators: [{
5078
5335
  type: Component,
5079
- args: [{ selector: 'c-nav', template: '<ng-content />', host: { class: 'nav', '[class]': 'hostClasses()' }, styles: [":host .nav-link:focus{outline:0}:host.nav-underline-border{column-gap:0}\n"] }]
5080
- }], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
5336
+ args: [{ selector: 'c-nav', template: '<ng-content />', host: { class: 'nav', '[class]': 'hostClasses()', '[attr.role]': 'role()' }, styles: [":host .nav-link:focus{outline:0}:host.nav-underline-border{column-gap:0}\n"] }]
5337
+ }], propDecorators: { layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
5081
5338
 
5082
5339
  class NavModule {
5083
5340
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5084
5341
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: NavModule, imports: [NavComponent,
5342
+ NavGroupComponent,
5343
+ NavGroupItemsComponent,
5085
5344
  NavItemComponent,
5086
- NavLinkDirective], exports: [NavComponent,
5345
+ NavLinkDirective,
5346
+ NavTitleComponent], exports: [NavComponent,
5347
+ NavGroupComponent,
5348
+ NavGroupItemsComponent,
5087
5349
  NavItemComponent,
5088
- NavLinkDirective] });
5350
+ NavLinkDirective,
5351
+ NavTitleComponent] });
5089
5352
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavModule });
5090
5353
  }
5091
5354
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: NavModule, decorators: [{
@@ -5093,13 +5356,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
5093
5356
  args: [{
5094
5357
  imports: [
5095
5358
  NavComponent,
5359
+ NavGroupComponent,
5360
+ NavGroupItemsComponent,
5096
5361
  NavItemComponent,
5097
- NavLinkDirective
5362
+ NavLinkDirective,
5363
+ NavTitleComponent
5098
5364
  ],
5099
5365
  exports: [
5100
5366
  NavComponent,
5367
+ NavGroupComponent,
5368
+ NavGroupItemsComponent,
5101
5369
  NavItemComponent,
5102
- NavLinkDirective
5370
+ NavLinkDirective,
5371
+ NavTitleComponent
5103
5372
  ]
5104
5373
  }]
5105
5374
  }] });
@@ -7649,7 +7918,7 @@ class SidebarComponent {
7649
7918
  }
7650
7919
  }
7651
7920
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7652
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SidebarComponent, isStandalone: true, selector: "c-sidebar", inputs: { colorScheme: { classPropertyName: "colorScheme", publicName: "colorScheme", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, narrowInput: { classPropertyName: "narrowInput", publicName: "narrow", isSignal: true, isRequired: false, transformFunction: null }, overlaid: { classPropertyName: "overlaid", publicName: "overlaid", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", 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 }, unfoldableInput: { classPropertyName: "unfoldableInput", publicName: "unfoldable", isSignal: true, isRequired: false, transformFunction: null }, visibleInput: { classPropertyName: "visibleInput", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "hostClasses()", "attr.inert": "!this.sidebarState.visible || null" }, classAttribute: "sidebar" }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.Eager });
7921
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SidebarComponent, isStandalone: true, selector: "c-sidebar", inputs: { colorScheme: { classPropertyName: "colorScheme", publicName: "colorScheme", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, narrowInput: { classPropertyName: "narrowInput", publicName: "narrow", isSignal: true, isRequired: false, transformFunction: null }, overlaid: { classPropertyName: "overlaid", publicName: "overlaid", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", 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 }, unfoldableInput: { classPropertyName: "unfoldableInput", publicName: "unfoldable", isSignal: true, isRequired: false, transformFunction: null }, visibleInput: { classPropertyName: "visibleInput", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "hostClasses()", "attr.inert": "!this.sidebarState.visible || null" }, classAttribute: "sidebar" }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true });
7653
7922
  }
7654
7923
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarComponent, decorators: [{
7655
7924
  type: Component,
@@ -7657,7 +7926,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
7657
7926
  selector: 'c-sidebar',
7658
7927
  exportAs: 'cSidebar',
7659
7928
  template: '<ng-content />',
7660
- changeDetection: ChangeDetectionStrategy.Eager,
7661
7929
  host: {
7662
7930
  class: 'sidebar',
7663
7931
  '[class]': 'hostClasses()',
@@ -7999,11 +8267,11 @@ class SidebarNavLinkComponent {
7999
8267
  this.linkClick?.emit();
8000
8268
  }
8001
8269
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarNavLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8002
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarNavLinkComponent, isStandalone: true, selector: "c-sidebar-nav-link", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { linkClick: "linkClick" }, providers: [SidebarNavHelper], ngImport: i0, template: "@let linkItem = item() ?? {};\n\n@switch (linkType) {\n @case ('disabled') {\n <a [cHtmlAttr]=\"linkItem.attributes ?? {}\" [class]=\"linkItem | cSidebarNavLink\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: linkItem }\" />\n <c-sidebar-nav-link-content [item]=\"linkItem\" />\n @if (linkItem.badge) {\n <span [class]=\"linkItem | cSidebarNavBadge\">{{ linkItem.badge?.text }}</span>\n }\n </a>\n }\n @case ('external') {\n <a\n (click)=\"linkClicked()\"\n [cHtmlAttr]=\"linkItem.attributes ?? {}\"\n [href]=\"href\"\n [class]=\"linkItem | cSidebarNavLink\"\n >\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: linkItem }\" />\n <c-sidebar-nav-link-content [item]=\"linkItem\" />\n @if (linkItem.badge) {\n <span [class]=\"linkItem | cSidebarNavBadge\">{{ linkItem.badge?.text }}</span>\n }\n </a>\n }\n @default {\n <a\n (click)=\"linkClicked()\"\n [cHtmlAttr]=\"linkItem.attributes ?? {}\"\n [fragment]=\"$safeNavigationMigration(linkItem.linkProps?.fragment)\"\n [class]=\"linkItem | cSidebarNavLink\"\n [preserveFragment]=\"linkItem.linkProps?.preserveFragment ?? false\"\n [queryParamsHandling]=\"$safeNavigationMigration(linkItem.linkProps?.queryParamsHandling)\"\n [queryParams]=\"linkItem.linkProps?.queryParams ?? null\"\n [replaceUrl]=\"linkItem.linkProps?.replaceUrl ?? false\"\n [routerLinkActiveOptions]=\"linkItem.linkProps?.routerLinkActiveOptions ?? { exact: false }\"\n [routerLink]=\"linkItem.url\"\n [skipLocationChange]=\"linkItem.linkProps?.skipLocationChange ?? false\"\n [state]=\"linkItem.linkProps?.state ?? {}\"\n [target]=\"$safeNavigationMigration(linkItem.attributes?.['target'])\"\n routerLinkActive=\"active\"\n >\n <!-- [class.active]=\"linkActive\"-->\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: linkItem }\" />\n <c-sidebar-nav-link-content [item]=\"linkItem\" />\n @if (linkItem.badge) {\n <span [class]=\"linkItem | cSidebarNavBadge\">{{ linkItem.badge?.text }}</span>\n }\n </a>\n }\n}\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [class]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [class]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"$safeNavigationMigration(item.iconComponent?.content)\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"$safeNavigationMigration(item.iconComponent?.name)\"\n ></svg>\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [class]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "directive", type: IconDirective, selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "component", type: SidebarNavLinkContentComponent, selector: "c-sidebar-nav-link-content", inputs: ["item"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: SidebarNavLinkPipe, name: "cSidebarNavLink" }, { kind: "pipe", type: SidebarNavBadgePipe, name: "cSidebarNavBadge" }, { kind: "pipe", type: SidebarNavIconPipe, name: "cSidebarNavIcon" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
8270
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarNavLinkComponent, isStandalone: true, selector: "c-sidebar-nav-link", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { linkClick: "linkClick" }, providers: [SidebarNavHelper], ngImport: i0, template: "@let linkItem = item() ?? {};\n\n@switch (linkType) {\n @case ('disabled') {\n <a [cHtmlAttr]=\"linkItem.attributes ?? {}\" [class]=\"linkItem | cSidebarNavLink\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: linkItem }\" />\n <c-sidebar-nav-link-content [item]=\"linkItem\" />\n @if (linkItem.badge) {\n <span [class]=\"linkItem | cSidebarNavBadge\">{{ linkItem.badge?.text }}</span>\n }\n </a>\n }\n @case ('external') {\n <a\n (click)=\"linkClicked()\"\n [cHtmlAttr]=\"linkItem.attributes ?? {}\"\n [href]=\"href\"\n [class]=\"linkItem | cSidebarNavLink\"\n >\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: linkItem }\" />\n <c-sidebar-nav-link-content [item]=\"linkItem\" />\n @if (linkItem.badge) {\n <span [class]=\"linkItem | cSidebarNavBadge\">{{ linkItem.badge?.text }}</span>\n }\n </a>\n }\n @default {\n <a\n (click)=\"linkClicked()\"\n [cHtmlAttr]=\"linkItem.attributes ?? {}\"\n [fragment]=\"$safeNavigationMigration(linkItem.linkProps?.fragment)\"\n [class]=\"linkItem | cSidebarNavLink\"\n [preserveFragment]=\"linkItem.linkProps?.preserveFragment ?? false\"\n [queryParamsHandling]=\"$safeNavigationMigration(linkItem.linkProps?.queryParamsHandling)\"\n [queryParams]=\"linkItem.linkProps?.queryParams ?? null\"\n [replaceUrl]=\"linkItem.linkProps?.replaceUrl ?? false\"\n [routerLinkActiveOptions]=\"linkItem.linkProps?.routerLinkActiveOptions ?? { exact: false }\"\n [routerLink]=\"linkItem.url\"\n [skipLocationChange]=\"linkItem.linkProps?.skipLocationChange ?? false\"\n [state]=\"linkItem.linkProps?.state ?? {}\"\n [target]=\"$safeNavigationMigration(linkItem.attributes?.['target'])\"\n routerLinkActive=\"active\"\n >\n <!-- [class.active]=\"linkActive\"-->\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: linkItem }\" />\n <c-sidebar-nav-link-content [item]=\"linkItem\" />\n @if (linkItem.badge) {\n <span [class]=\"linkItem | cSidebarNavBadge\">{{ linkItem.badge?.text }}</span>\n }\n </a>\n }\n}\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [class]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [class]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"$safeNavigationMigration(item.iconComponent?.content)\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"$safeNavigationMigration(item.iconComponent?.name)\"\n ></svg>\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [class]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "directive", type: IconDirective, selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "component", type: SidebarNavLinkContentComponent, selector: "c-sidebar-nav-link-content", inputs: ["item"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: SidebarNavLinkPipe, name: "cSidebarNavLink" }, { kind: "pipe", type: SidebarNavBadgePipe, name: "cSidebarNavBadge" }, { kind: "pipe", type: SidebarNavIconPipe, name: "cSidebarNavIcon" }] });
8003
8271
  }
8004
8272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarNavLinkComponent, decorators: [{
8005
8273
  type: Component,
8006
- args: [{ selector: 'c-sidebar-nav-link', providers: [SidebarNavHelper], changeDetection: ChangeDetectionStrategy.Eager, imports: [
8274
+ args: [{ selector: 'c-sidebar-nav-link', providers: [SidebarNavHelper], imports: [
8007
8275
  RouterModule,
8008
8276
  HtmlAttributesDirective,
8009
8277
  IconDirective,
@@ -8176,7 +8444,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
8176
8444
 
8177
8445
  class SidebarNavGroupComponent {
8178
8446
  #router = inject(Router);
8179
- #renderer = inject(Renderer2);
8180
8447
  #hostElement = inject(ElementRef);
8181
8448
  #sidebarNavGroupService = inject(SidebarNavGroupService);
8182
8449
  helper = inject(SidebarNavHelper);
@@ -8216,7 +8483,6 @@ class SidebarNavGroupComponent {
8216
8483
  };
8217
8484
  }, /* @ts-ignore */
8218
8485
  ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
8219
- sidebarNav = viewChild.required(forwardRef(() => SidebarNavComponent), { ...(ngDevMode ? { debugName: "sidebarNav" } : /* istanbul ignore next */ {}), read: ElementRef });
8220
8486
  navigationEndObservable;
8221
8487
  navSubscription;
8222
8488
  navGroupSubscription;
@@ -8224,7 +8490,7 @@ class SidebarNavGroupComponent {
8224
8490
  ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
8225
8491
  navItems = signal([], /* @ts-ignore */
8226
8492
  ...(ngDevMode ? [{ debugName: "navItems" }] : /* istanbul ignore next */ []));
8227
- display = signal({ display: 'block' }, /* @ts-ignore */
8493
+ display = signal(null, /* @ts-ignore */
8228
8494
  ...(ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []));
8229
8495
  ngOnInit() {
8230
8496
  this.navItems.set([...(this.item()?.children ?? [])]);
@@ -8259,6 +8525,10 @@ class SidebarNavGroupComponent {
8259
8525
  });
8260
8526
  }
8261
8527
  openGroup(open) {
8528
+ if (this.open() !== undefined && this.open() !== open) {
8529
+ // the group drops `show` in the same pass, hiding the nav before cCollapse can measure it
8530
+ this.display.set('block');
8531
+ }
8262
8532
  this.open.set(open);
8263
8533
  }
8264
8534
  toggleGroup($event) {
@@ -8271,64 +8541,26 @@ class SidebarNavGroupComponent {
8271
8541
  ngOnDestroy() {
8272
8542
  this.navSubscription?.unsubscribe();
8273
8543
  }
8274
- onAnimationStart($event) {
8275
- this.display.set({ display: 'block' });
8276
- setTimeout(() => {
8277
- const host = this.sidebarNav()?.nativeElement;
8278
- if ($event.toState === 'open' && host) {
8279
- this.#renderer.setStyle(host, 'height', `${host['scrollHeight']}px`);
8280
- }
8281
- });
8282
- }
8283
- onAnimationDone($event) {
8284
- setTimeout(() => {
8285
- const host = this.sidebarNav()?.nativeElement;
8286
- if ($event.toState === 'open' && host) {
8287
- this.#renderer.setStyle(host, 'height', 'auto');
8288
- }
8289
- if ($event.toState === 'closed') {
8290
- setTimeout(() => {
8291
- this.display.set(null);
8292
- });
8293
- }
8294
- });
8544
+ onCollapseChange(state) {
8545
+ this.display.set(state === 'collapsed' || state === 'open' ? null : 'block');
8295
8546
  }
8296
8547
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarNavGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8297
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarNavGroupComponent, isStandalone: true, selector: "c-sidebar-nav-group", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: true, isRequired: false, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, providers: [SidebarNavHelper], viewQueries: [{ propertyName: "sidebarNav", first: true, predicate: i0.forwardRef(() => SidebarNavComponent), descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@let grpItem = item();\n<a\n (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"$safeNavigationMigration(grpItem?.attributes)\"\n class=\"nav-link nav-group-toggle\"\n href\n>\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: grpItem }\" />\n <ng-container>{{ grpItem?.name }}</ng-container>\n @if (grpItem?.badge) {\n <span [class]=\"grpItem | cSidebarNavBadge\">{{ grpItem?.badge?.text }}</span>\n }\n</a>\n<c-sidebar-nav\n (@openClose.done)=\"onAnimationDone($event)\"\n (@openClose.start)=\"onAnimationStart($event)\"\n [@openClose]=\"open() ? 'open' : 'closed'\"\n [compact]=\"compact()\"\n [dropdownMode]=\"dropdownMode()\"\n [groupItems]=\"true\"\n [navItems]=\"navItems()\"\n [style]=\"display()\"\n/>\n\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [class]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [class]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"$safeNavigationMigration(item.iconComponent?.content)\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"$safeNavigationMigration(item.iconComponent?.name)\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [class]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", styles: [".nav-group-toggle{cursor:pointer}.nav-group-items{display:block}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => HtmlAttributesDirective), selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "directive", type: i0.forwardRef(() => IconDirective), selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavComponent), selector: "c-sidebar-nav", inputs: ["navItems", "dropdownMode", "groupItems", "compact", "role"] }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavIconPipe), name: "cSidebarNavIcon" }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavBadgePipe), name: "cSidebarNavBadge" }], animations: [
8298
- trigger('openClose', [
8299
- state('open', style({
8300
- height: '*'
8301
- })),
8302
- state('closed', style({
8303
- height: '0px'
8304
- })),
8305
- transition('open <=> closed', [animate('.15s ease')])
8306
- ])
8307
- ], changeDetection: i0.ChangeDetectionStrategy.Eager });
8548
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarNavGroupComponent, isStandalone: true, selector: "c-sidebar-nav-group", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: false, transformFunction: null }, dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: true, isRequired: false, transformFunction: null }, show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, providers: [SidebarNavHelper], ngImport: i0, template: "@let grpItem = item();\n<a\n (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"$safeNavigationMigration(grpItem?.attributes)\"\n class=\"nav-link nav-group-toggle\"\n href\n>\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: grpItem }\" />\n <ng-container>{{ grpItem?.name }}</ng-container>\n @if (grpItem?.badge) {\n <span [class]=\"grpItem | cSidebarNavBadge\">{{ grpItem?.badge?.text }}</span>\n }\n</a>\n<c-sidebar-nav\n (collapseChange)=\"onCollapseChange($event)\"\n [compact]=\"compact()\"\n [dropdownMode]=\"dropdownMode()\"\n [groupItems]=\"true\"\n [navItems]=\"navItems()\"\n [style.display]=\"display()\"\n [visible]=\"!!open()\"\n cCollapse\n/>\n\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [class]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [class]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"$safeNavigationMigration(item.iconComponent?.content)\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"$safeNavigationMigration(item.iconComponent?.name)\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [class]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", styles: [".nav-group-items{display:block}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => CollapseDirective), selector: "[cCollapse]", inputs: ["animate", "horizontal", "visible", "navbar"], outputs: ["visibleChange", "collapseChange"], exportAs: ["cCollapse"] }, { kind: "directive", type: i0.forwardRef(() => HtmlAttributesDirective), selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "directive", type: i0.forwardRef(() => IconDirective), selector: "svg[cIcon]", inputs: ["cIcon", "customClasses", "size", "title", "height", "width", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavComponent), selector: "c-sidebar-nav", inputs: ["navItems", "dropdownMode", "groupItems", "compact", "role"] }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavIconPipe), name: "cSidebarNavIcon" }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavBadgePipe), name: "cSidebarNavBadge" }] });
8308
8549
  }
8309
8550
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarNavGroupComponent, decorators: [{
8310
8551
  type: Component,
8311
8552
  args: [{ selector: 'c-sidebar-nav-group', providers: [SidebarNavHelper], imports: [
8553
+ CollapseDirective,
8312
8554
  HtmlAttributesDirective,
8313
8555
  IconDirective,
8314
8556
  NgTemplateOutlet,
8315
8557
  SidebarNavIconPipe,
8316
8558
  SidebarNavBadgePipe,
8317
8559
  forwardRef(() => SidebarNavComponent)
8318
- ], animations: [
8319
- trigger('openClose', [
8320
- state('open', style({
8321
- height: '*'
8322
- })),
8323
- state('closed', style({
8324
- height: '0px'
8325
- })),
8326
- transition('open <=> closed', [animate('.15s ease')])
8327
- ])
8328
- ], changeDetection: ChangeDetectionStrategy.Eager, host: {
8560
+ ], host: {
8329
8561
  '[class]': 'hostClasses()'
8330
- }, template: "@let grpItem = item();\n<a\n (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"$safeNavigationMigration(grpItem?.attributes)\"\n class=\"nav-link nav-group-toggle\"\n href\n>\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: grpItem }\" />\n <ng-container>{{ grpItem?.name }}</ng-container>\n @if (grpItem?.badge) {\n <span [class]=\"grpItem | cSidebarNavBadge\">{{ grpItem?.badge?.text }}</span>\n }\n</a>\n<c-sidebar-nav\n (@openClose.done)=\"onAnimationDone($event)\"\n (@openClose.start)=\"onAnimationStart($event)\"\n [@openClose]=\"open() ? 'open' : 'closed'\"\n [compact]=\"compact()\"\n [dropdownMode]=\"dropdownMode()\"\n [groupItems]=\"true\"\n [navItems]=\"navItems()\"\n [style]=\"display()\"\n/>\n\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [class]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [class]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"$safeNavigationMigration(item.iconComponent?.content)\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"$safeNavigationMigration(item.iconComponent?.name)\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [class]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", styles: [".nav-group-toggle{cursor:pointer}.nav-group-items{display:block}\n"] }]
8331
- }], ctorParameters: () => [], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: false }] }], dropdownMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownMode", required: false }] }], show: [{ type: i0.Input, args: [{ isSignal: true, alias: "show", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], sidebarNav: [{ type: i0.ViewChild, args: [forwardRef(() => SidebarNavComponent), { ...{ read: ElementRef }, isSignal: true }] }] } });
8562
+ }, template: "@let grpItem = item();\n<a\n (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"$safeNavigationMigration(grpItem?.attributes)\"\n class=\"nav-link nav-group-toggle\"\n href\n>\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: grpItem }\" />\n <ng-container>{{ grpItem?.name }}</ng-container>\n @if (grpItem?.badge) {\n <span [class]=\"grpItem | cSidebarNavBadge\">{{ grpItem?.badge?.text }}</span>\n }\n</a>\n<c-sidebar-nav\n (collapseChange)=\"onCollapseChange($event)\"\n [compact]=\"compact()\"\n [dropdownMode]=\"dropdownMode()\"\n [groupItems]=\"true\"\n [navItems]=\"navItems()\"\n [style.display]=\"display()\"\n [visible]=\"!!open()\"\n cCollapse\n/>\n\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [class]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [class]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"$safeNavigationMigration(item.iconComponent?.content)\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"$safeNavigationMigration(item.iconComponent?.name)\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [class]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", styles: [".nav-group-items{display:block}\n"] }]
8563
+ }], ctorParameters: () => [], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: false }] }], dropdownMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownMode", required: false }] }], show: [{ type: i0.Input, args: [{ isSignal: true, alias: "show", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }] } });
8332
8564
  class SidebarNavComponent {
8333
8565
  sidebar = inject(SidebarComponent, { optional: true });
8334
8566
  helper = inject(SidebarNavHelper);
@@ -8394,7 +8626,7 @@ class SidebarNavComponent {
8394
8626
  }
8395
8627
  }
8396
8628
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8397
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarNavComponent, isStandalone: true, selector: "c-sidebar-nav", inputs: { navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: false, transformFunction: null }, dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: true, isRequired: false, transformFunction: null }, groupItems: { classPropertyName: "groupItems", publicName: "groupItems", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.role": "role()" } }, providers: [SidebarNavGroupService], usesOnChanges: true, ngImport: i0, template: "@for (nItem of navItemsArray(); track nItem) {\n @switch (helper.itemType(nItem)) {\n @case ('group') {\n <c-sidebar-nav-group\n [dropdownMode]=\"dropdownMode()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n [compact]=\"compact()\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content />\n", dependencies: [{ kind: "directive", type: i0.forwardRef(() => HtmlAttributesDirective), selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavLinkComponent), selector: "c-sidebar-nav-link", inputs: ["item"], outputs: ["linkClick"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavLabelComponent), selector: "c-sidebar-nav-label", inputs: ["item"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavTitleComponent), selector: "c-sidebar-nav-title", inputs: ["item"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavDividerComponent), selector: "c-sidebar-nav-divider", inputs: ["item"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavGroupComponent), selector: "c-sidebar-nav-group", inputs: ["item", "dropdownMode", "show", "compact"] }, { kind: "ngmodule", type: i0.forwardRef(() => RouterModule) }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavItemClassPipe), name: "cSidebarNavItemClass" }], changeDetection: i0.ChangeDetectionStrategy.Eager });
8629
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SidebarNavComponent, isStandalone: true, selector: "c-sidebar-nav", inputs: { navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: false, transformFunction: null }, dropdownMode: { classPropertyName: "dropdownMode", publicName: "dropdownMode", isSignal: true, isRequired: false, transformFunction: null }, groupItems: { classPropertyName: "groupItems", publicName: "groupItems", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.role": "role()" } }, providers: [NavGroupService, SidebarNavGroupService], usesOnChanges: true, ngImport: i0, template: "@for (nItem of navItemsArray(); track nItem) {\n @switch (helper.itemType(nItem)) {\n @case ('group') {\n <c-sidebar-nav-group\n [dropdownMode]=\"dropdownMode()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n [compact]=\"compact()\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content />\n", styles: [":host .nav-item{display:block}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => HtmlAttributesDirective), selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavLinkComponent), selector: "c-sidebar-nav-link", inputs: ["item"], outputs: ["linkClick"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavLabelComponent), selector: "c-sidebar-nav-label", inputs: ["item"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavTitleComponent), selector: "c-sidebar-nav-title", inputs: ["item"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavDividerComponent), selector: "c-sidebar-nav-divider", inputs: ["item"] }, { kind: "component", type: i0.forwardRef(() => SidebarNavGroupComponent), selector: "c-sidebar-nav-group", inputs: ["item", "dropdownMode", "show", "compact"] }, { kind: "ngmodule", type: i0.forwardRef(() => RouterModule) }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavItemClassPipe), name: "cSidebarNavItemClass" }] });
8398
8630
  }
8399
8631
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SidebarNavComponent, decorators: [{
8400
8632
  type: Component,
@@ -8410,7 +8642,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
8410
8642
  ], host: {
8411
8643
  '[class]': 'hostClasses()',
8412
8644
  '[attr.role]': 'role()'
8413
- }, changeDetection: ChangeDetectionStrategy.Eager, providers: [SidebarNavGroupService], template: "@for (nItem of navItemsArray(); track nItem) {\n @switch (helper.itemType(nItem)) {\n @case ('group') {\n <c-sidebar-nav-group\n [dropdownMode]=\"dropdownMode()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n [compact]=\"compact()\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content />\n" }]
8645
+ }, providers: [NavGroupService, SidebarNavGroupService], template: "@for (nItem of navItemsArray(); track nItem) {\n @switch (helper.itemType(nItem)) {\n @case ('group') {\n <c-sidebar-nav-group\n [dropdownMode]=\"dropdownMode()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n [compact]=\"compact()\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"nItem.attributes ?? {}\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"nItem\"\n [class]=\"nItem | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content />\n", styles: [":host .nav-item{display:block}\n"] }]
8414
8646
  }], propDecorators: { navItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "navItems", required: false }] }], dropdownMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownMode", required: false }] }], groupItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupItems", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }] } });
8415
8647
 
8416
8648
  class SidebarModule {
@@ -9270,8 +9502,8 @@ class TabsListComponent {
9270
9502
  layout = input(/* @ts-ignore */
9271
9503
  ...(ngDevMode ? [undefined, { debugName: "layout" }] : /* istanbul ignore next */ []));
9272
9504
  /**
9273
- * Set the variant to tabs, pills or underline.
9274
- * @returns 'pills' | 'tabs' | 'underline' | 'underline-border' | undefined
9505
+ * Set the variant to tabs, pills, underline or enclosed.
9506
+ * @returns 'enclosed' | 'enclosed-pills' | 'pills' | 'tabs' | 'underline' | 'underline-border' | undefined
9275
9507
  * @default undefined
9276
9508
  */
9277
9509
  variant = input(/* @ts-ignore */
@@ -9288,6 +9520,7 @@ class TabsListComponent {
9288
9520
  return {
9289
9521
  nav: true,
9290
9522
  [`nav-${layout}`]: layout,
9523
+ 'nav-enclosed': variant === 'enclosed' || variant === 'enclosed-pills',
9291
9524
  [`nav-${variant}`]: variant
9292
9525
  };
9293
9526
  }, /* @ts-ignore */
@@ -10696,5 +10929,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
10696
10929
  * Generated bundle index. Do not edit.
10697
10930
  */
10698
10931
 
10699
- export { AccordionButtonDirective, AccordionComponent, AccordionItemComponent, AccordionModule, AlertComponent, AlertHeadingDirective, AlertLinkDirective, AlertModule, AlignDirective, AvatarComponent, AvatarModule, BackdropService, BadgeComponent, BadgeModule, BgColorDirective, BorderDirective, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbRouterComponent, BreadcrumbRouterService, BreakpointInfix, ButtonCloseDirective, ButtonDirective, ButtonGroupComponent, ButtonGroupModule, ButtonModule, ButtonToolbarComponent, CalloutComponent, CalloutModule, CardBodyComponent, CardComponent, CardFooterComponent, CardGroupComponent, CardHeaderActionsComponent, CardHeaderComponent, CardImgDirective, CardImgOverlayComponent, CardLinkDirective, CardModule, CardSubtitleDirective, CardTextDirective, CardTitleDirective, CarouselCaptionComponent, CarouselComponent, CarouselConfig, CarouselControlComponent, CarouselIndicatorsComponent, CarouselInnerComponent, CarouselItemComponent, CarouselModule, ClassToggleService, ColComponent, ColDirective, CollapseDirective, CollapseModule, ColorModeService, ContainerComponent, DropdownCloseDirective, DropdownComponent, DropdownDividerDirective, DropdownHeaderDirective, DropdownItemDirective, DropdownItemPlainDirective, DropdownMenuDirective, DropdownModule, DropdownService, DropdownToggleDirective, ElementRefDirective, FooterComponent, FooterModule, FormCheckComponent, FormCheckInputDirective, FormCheckLabelDirective, FormControlDirective, FormDirective, FormFeedbackComponent, FormFloatingDirective, FormLabelDirective, FormModule, FormSelectDirective, FormTextDirective, GridModule, GutterDirective, HeaderBrandComponent, HeaderComponent, HeaderDividerComponent, HeaderModule, HeaderNavComponent, HeaderTextComponent, HeaderTogglerDirective, HtmlAttributesDirective, ImgDirective, ImgModule, InMemoryStorageService, InputGroupComponent, InputGroupTextDirective, IntersectionService, ListGroupDirective, ListGroupItemDirective, ListGroupModule, ListenersService, LocalStorageService, ModalBodyComponent, ModalComponent, ModalContentComponent, ModalDialogComponent, ModalFooterComponent, ModalHeaderComponent, ModalModule, ModalService, ModalTitleDirective, ModalToggleDirective, NavComponent, NavItemComponent, NavLinkDirective, NavModule, NavbarBrandDirective, NavbarComponent, NavbarModule, NavbarNavComponent, NavbarTextComponent, NavbarTogglerDirective, OffcanvasBodyComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasModule, OffcanvasService, OffcanvasTitleDirective, OffcanvasToggleDirective, PageItemComponent, PageItemDirective, PageLinkDirective, PaginationComponent, PaginationModule, PlaceholderAnimationDirective, PlaceholderDirective, PlaceholderModule, PopoverComponent, PopoverDirective, PopoverModule, ProgressBarComponent, ProgressBarDirective, ProgressComponent, ProgressModule, ProgressStackedComponent, RoundedDirective, RowComponent, RowDirective, RtlService, SearchButtonComponent, SearchButtonModule, ShadowOnScrollDirective, SharedModule, SidebarBrandComponent, SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent, SidebarModule, SidebarNavComponent, SidebarNavHelper, SidebarService, SidebarToggleDirective, SidebarTogglerDirective, SpinnerComponent, SpinnerModule, TabContentComponent, TabContentRefDirective, TabDirective, TabPaneComponent, TabPanelComponent, TabService, TableActiveDirective, TableColorDirective, TableDirective, TableModule, Tabs2Module, TabsComponent, TabsContentComponent, TabsListComponent, TabsModule, TabsService, TemplateIdDirective, TextBgColorDirective, TextColorDirective, ThemeDirective, ToastBodyComponent, ToastCloseDirective, ToastComponent, ToastContentComponent, ToastHeaderComponent, ToastModule, ToasterComponent, ToasterHostDirective, ToasterPlacement, ToasterService, TooltipComponent, TooltipDirective, TooltipModule, UIDService, UtilitiesModule, WidgetModule, WidgetStatAComponent, WidgetStatBComponent, WidgetStatCComponent, WidgetStatDComponent, WidgetStatEComponent, WidgetStatFComponent };
10932
+ export { AccordionButtonDirective, AccordionComponent, AccordionItemComponent, AccordionModule, AlertComponent, AlertHeadingDirective, AlertLinkDirective, AlertModule, AlignDirective, AvatarComponent, AvatarModule, BackdropService, BadgeComponent, BadgeModule, BgColorDirective, BorderDirective, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbRouterComponent, BreadcrumbRouterService, BreakpointInfix, ButtonCloseDirective, ButtonDirective, ButtonGroupComponent, ButtonGroupModule, ButtonModule, ButtonToolbarComponent, CalloutComponent, CalloutModule, CardBodyComponent, CardComponent, CardFooterComponent, CardGroupComponent, CardHeaderActionsComponent, CardHeaderComponent, CardImgDirective, CardImgOverlayComponent, CardLinkDirective, CardModule, CardSubtitleDirective, CardTextDirective, CardTitleDirective, CarouselCaptionComponent, CarouselComponent, CarouselConfig, CarouselControlComponent, CarouselIndicatorsComponent, CarouselInnerComponent, CarouselItemComponent, CarouselModule, ClassToggleService, ColComponent, ColDirective, CollapseDirective, CollapseModule, ColorModeService, ContainerComponent, DropdownCloseDirective, DropdownComponent, DropdownDividerDirective, DropdownHeaderDirective, DropdownItemDirective, DropdownItemPlainDirective, DropdownMenuDirective, DropdownModule, DropdownService, DropdownToggleDirective, ElementRefDirective, FooterComponent, FooterModule, FormCheckComponent, FormCheckInputDirective, FormCheckLabelDirective, FormControlDirective, FormDirective, FormFeedbackComponent, FormFloatingDirective, FormLabelDirective, FormModule, FormSelectDirective, FormTextDirective, GridModule, GutterDirective, HeaderBrandComponent, HeaderComponent, HeaderDividerComponent, HeaderModule, HeaderNavComponent, HeaderTextComponent, HeaderTogglerDirective, HtmlAttributesDirective, ImgDirective, ImgModule, InMemoryStorageService, InputGroupComponent, InputGroupTextDirective, IntersectionService, ListGroupDirective, ListGroupItemDirective, ListGroupModule, ListenersService, LocalStorageService, ModalBodyComponent, ModalComponent, ModalContentComponent, ModalDialogComponent, ModalFooterComponent, ModalHeaderComponent, ModalModule, ModalService, ModalTitleDirective, ModalToggleDirective, NavComponent, NavGroupComponent, NavGroupItemsComponent, NavGroupService, NavItemComponent, NavLinkDirective, NavModule, NavTitleComponent, NavbarBrandDirective, NavbarComponent, NavbarModule, NavbarNavComponent, NavbarTextComponent, NavbarTogglerDirective, OffcanvasBodyComponent, OffcanvasComponent, OffcanvasHeaderComponent, OffcanvasModule, OffcanvasService, OffcanvasTitleDirective, OffcanvasToggleDirective, PageItemComponent, PageItemDirective, PageLinkDirective, PaginationComponent, PaginationModule, PlaceholderAnimationDirective, PlaceholderDirective, PlaceholderModule, PopoverComponent, PopoverDirective, PopoverModule, ProgressBarComponent, ProgressBarDirective, ProgressComponent, ProgressModule, ProgressStackedComponent, RoundedDirective, RowComponent, RowDirective, RtlService, SearchButtonComponent, SearchButtonModule, ShadowOnScrollDirective, SharedModule, SidebarBrandComponent, SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent, SidebarModule, SidebarNavComponent, SidebarNavHelper, SidebarService, SidebarToggleDirective, SidebarTogglerDirective, SpinnerComponent, SpinnerModule, TabContentComponent, TabContentRefDirective, TabDirective, TabPaneComponent, TabPanelComponent, TabService, TableActiveDirective, TableColorDirective, TableDirective, TableModule, Tabs2Module, TabsComponent, TabsContentComponent, TabsListComponent, TabsModule, TabsService, TemplateIdDirective, TextBgColorDirective, TextColorDirective, ThemeDirective, ToastBodyComponent, ToastCloseDirective, ToastComponent, ToastContentComponent, ToastHeaderComponent, ToastModule, ToasterComponent, ToasterHostDirective, ToasterPlacement, ToasterService, TooltipComponent, TooltipDirective, TooltipModule, UIDService, UtilitiesModule, WidgetModule, WidgetStatAComponent, WidgetStatBComponent, WidgetStatCComponent, WidgetStatDComponent, WidgetStatEComponent, WidgetStatFComponent };
10700
10933
  //# sourceMappingURL=coreui-angular.mjs.map