@coreui/angular 4.7.17 → 5.0.0-rc.0

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.
Files changed (128) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +11 -1
  3. package/esm2022/lib/accordion/accordion/accordion.component.mjs +22 -16
  4. package/esm2022/lib/alert/alert.component.mjs +28 -36
  5. package/esm2022/lib/avatar/avatar.component.mjs +8 -5
  6. package/esm2022/lib/backdrop/backdrop.service.mjs +1 -2
  7. package/esm2022/lib/badge/badge.component.mjs +8 -4
  8. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +5 -4
  9. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +3 -3
  10. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +6 -6
  11. package/esm2022/lib/button/button-close.directive.mjs +9 -3
  12. package/esm2022/lib/card/card.component.mjs +11 -8
  13. package/esm2022/lib/carousel/carousel/carousel.component.mjs +18 -17
  14. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +3 -3
  15. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +7 -7
  16. package/esm2022/lib/collapse/collapse.directive.mjs +30 -40
  17. package/esm2022/lib/coreui.types.mjs +1 -1
  18. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +28 -49
  19. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +10 -2
  20. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +76 -40
  21. package/esm2022/lib/dropdown/dropdown.service.mjs +2 -2
  22. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +10 -8
  23. package/esm2022/lib/grid/row.directive.mjs +4 -4
  24. package/esm2022/lib/header/header/header.component.mjs +3 -3
  25. package/esm2022/lib/modal/modal/modal.component.mjs +1 -1
  26. package/esm2022/lib/nav/nav.component.mjs +3 -3
  27. package/esm2022/lib/navbar/navbar.component.mjs +7 -11
  28. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +8 -4
  29. package/esm2022/lib/placeholder/placeholder.directive.mjs +11 -18
  30. package/esm2022/lib/popover/popover.directive.mjs +2 -2
  31. package/esm2022/lib/progress/progress-bar.component.mjs +21 -87
  32. package/esm2022/lib/progress/progress-bar.directive.mjs +112 -0
  33. package/esm2022/lib/progress/progress-stacked.component.mjs +19 -0
  34. package/esm2022/lib/progress/progress.component.mjs +25 -10
  35. package/esm2022/lib/progress/progress.module.mjs +15 -5
  36. package/esm2022/lib/progress/progress.type.mjs +2 -0
  37. package/esm2022/lib/progress/public_api.mjs +3 -1
  38. package/esm2022/lib/services/color-mode.service.mjs +73 -0
  39. package/esm2022/lib/services/in-memory-storage.service.mjs +33 -0
  40. package/esm2022/lib/services/local-storage.service.mjs +51 -0
  41. package/esm2022/lib/services/public_api.mjs +4 -1
  42. package/esm2022/lib/shared/public_api.mjs +2 -1
  43. package/esm2022/lib/shared/shared.module.mjs +5 -12
  44. package/esm2022/lib/shared/theme.directive.mjs +45 -0
  45. package/esm2022/lib/sidebar/public_api.mjs +2 -2
  46. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +38 -47
  47. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +3 -3
  48. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +3 -3
  49. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +8 -8
  50. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +19 -15
  51. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.mjs +39 -0
  52. package/esm2022/lib/sidebar/sidebar.module.mjs +6 -6
  53. package/esm2022/lib/table/table.type.mjs +1 -1
  54. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +7 -7
  55. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +12 -9
  56. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +5 -8
  57. package/esm2022/lib/toast/toast/toast.component.mjs +11 -9
  58. package/esm2022/lib/tooltip/tooltip.directive.mjs +2 -2
  59. package/esm2022/lib/utilities/public_api.mjs +4 -3
  60. package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +48 -0
  61. package/esm2022/lib/utilities/utilities.module.mjs +5 -29
  62. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +2 -2
  63. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +4 -4
  64. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +14 -16
  65. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +3 -3
  66. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +2 -2
  67. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +2 -2
  68. package/esm2022/public-api.mjs +2 -2
  69. package/fesm2022/coreui-angular.mjs +1124 -826
  70. package/fesm2022/coreui-angular.mjs.map +1 -1
  71. package/lib/accordion/accordion/accordion.component.d.ts +4 -6
  72. package/lib/alert/alert.component.d.ts +8 -12
  73. package/lib/avatar/avatar.component.d.ts +4 -3
  74. package/lib/badge/badge.component.d.ts +5 -3
  75. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -0
  76. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.d.ts +1 -1
  77. package/lib/button/button-close.directive.d.ts +3 -1
  78. package/lib/card/card.component.d.ts +3 -2
  79. package/lib/carousel/carousel/carousel.component.d.ts +4 -8
  80. package/lib/carousel/carousel-item/carousel-item.component.d.ts +1 -2
  81. package/lib/collapse/collapse.directive.d.ts +13 -13
  82. package/lib/coreui.types.d.ts +5 -3
  83. package/lib/dropdown/dropdown/dropdown.component.d.ts +10 -21
  84. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +5 -1
  85. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +13 -16
  86. package/lib/dropdown/dropdown.service.d.ts +0 -1
  87. package/lib/form/form-check/form-check-input.directive.d.ts +4 -3
  88. package/lib/nav/nav.component.d.ts +2 -2
  89. package/lib/navbar/navbar.component.d.ts +2 -5
  90. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +2 -1
  91. package/lib/placeholder/placeholder.directive.d.ts +3 -7
  92. package/lib/progress/progress-bar.component.d.ts +5 -46
  93. package/lib/progress/progress-bar.directive.d.ts +58 -0
  94. package/lib/progress/progress-stacked.component.d.ts +7 -0
  95. package/lib/progress/progress.component.d.ts +15 -6
  96. package/lib/progress/progress.module.d.ts +3 -1
  97. package/lib/progress/progress.type.d.ts +18 -0
  98. package/lib/progress/public_api.d.ts +3 -1
  99. package/lib/services/color-mode.service.d.ts +20 -0
  100. package/lib/services/in-memory-storage.service.d.ts +13 -0
  101. package/lib/services/local-storage.service.d.ts +17 -0
  102. package/lib/services/public_api.d.ts +3 -0
  103. package/lib/shared/public_api.d.ts +1 -0
  104. package/lib/shared/shared.module.d.ts +2 -1
  105. package/lib/shared/theme.directive.d.ts +19 -0
  106. package/lib/sidebar/public_api.d.ts +1 -1
  107. package/lib/sidebar/sidebar/sidebar.component.d.ts +13 -11
  108. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +5 -2
  109. package/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.d.ts +9 -0
  110. package/lib/sidebar/sidebar.module.d.ts +2 -2
  111. package/lib/table/table.type.d.ts +5 -6
  112. package/lib/tabs/tab-content/tab-content.component.d.ts +1 -0
  113. package/lib/tabs/tab-content-ref.directive.d.ts +4 -2
  114. package/lib/toast/toast/toast.component.d.ts +3 -2
  115. package/lib/utilities/public_api.d.ts +3 -2
  116. package/lib/utilities/shadow-on-scroll.directive.d.ts +8 -0
  117. package/lib/utilities/utilities.module.d.ts +7 -6
  118. package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +1 -1
  119. package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +3 -3
  120. package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +16 -15
  121. package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +1 -1
  122. package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +1 -1
  123. package/package.json +7 -5
  124. package/public-api.d.ts +1 -1
  125. package/esm2022/lib/progress/progress-bar.mjs +0 -2
  126. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +0 -27
  127. package/lib/progress/progress-bar.d.ts +0 -10
  128. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +0 -7
@@ -1,18 +1,18 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, Input, NgModule, HostBinding, Injectable, Component, EventEmitter, Output, booleanAttribute, ContentChildren, HostListener, inject, RendererFactory2, PLATFORM_ID, Inject, DestroyRef, ViewChild, forwardRef, Optional, ElementRef, ContentChild, signal, effect, TemplateRef, ViewContainerRef, numberAttribute, Pipe, ChangeDetectionStrategy } from '@angular/core';
3
- import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
4
- import { NgTemplateOutlet, NgClass, DOCUMENT, AsyncPipe, isPlatformServer, isPlatformBrowser, NgStyle } from '@angular/common';
2
+ import { Directive, Input, inject, ElementRef, Renderer2, booleanAttribute, NgModule, HostBinding, Injectable, Component, EventEmitter, Output, ContentChildren, HostListener, DestroyRef, signal, effect, RendererFactory2, PLATFORM_ID, Inject, ViewChild, forwardRef, Optional, ContentChild, TemplateRef, ViewContainerRef, computed, numberAttribute, ChangeDetectionStrategy, Pipe } from '@angular/core';
3
+ import { NgTemplateOutlet, DOCUMENT, NgClass, AsyncPipe, isPlatformServer, isPlatformBrowser, NgStyle } from '@angular/common';
5
4
  import * as i1 from '@angular/animations';
6
5
  import { animation, animate, style, useAnimation, trigger, state, transition, group, query } from '@angular/animations';
7
- import { Subject, BehaviorSubject, Observable, fromEvent } from 'rxjs';
6
+ import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
7
+ import { fromEvent, Subject, BehaviorSubject, Observable } from 'rxjs';
8
8
  import * as i1$1 from '@angular/router';
9
9
  import { RouterModule, NavigationEnd, RouterLink } from '@angular/router';
10
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
- import { filter, finalize, zipWith, withLatestFrom, debounceTime } from 'rxjs/operators';
10
+ import { filter, tap, finalize, zipWith, withLatestFrom, debounceTime } from 'rxjs/operators';
12
11
  import { createPopper } from '@popperjs/core';
13
- import * as i1$2 from '@angular/cdk/layout';
14
12
  import * as i3 from '@angular/cdk/a11y';
15
- import { FocusMonitor, A11yModule } from '@angular/cdk/a11y';
13
+ import { FocusKeyManager, FocusMonitor, A11yModule } from '@angular/cdk/a11y';
14
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
15
+ import * as i1$2 from '@angular/cdk/layout';
16
16
  import { IconDirective } from '@coreui/icons-angular';
17
17
 
18
18
  var BreakpointInfix;
@@ -94,6 +94,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
94
94
  args: ['cTemplateId']
95
95
  }] } });
96
96
 
97
+ class ThemeDirective {
98
+ #hostElement = inject(ElementRef);
99
+ #renderer = inject(Renderer2);
100
+ /**
101
+ * Add dark theme attribute.
102
+ * @type 'dark' | 'light' | undefined
103
+ */
104
+ set colorScheme(scheme) {
105
+ !!scheme ? this.setTheme(scheme) : this.unsetTheme();
106
+ }
107
+ ;
108
+ /**
109
+ * Add dark theme attribute.
110
+ * @type boolean
111
+ */
112
+ set dark(darkTheme) {
113
+ darkTheme ? this.setTheme('dark') : this.unsetTheme();
114
+ }
115
+ ;
116
+ setTheme(theme) {
117
+ if (theme) {
118
+ this.#renderer.setAttribute(this.#hostElement.nativeElement, 'data-coreui-theme', theme);
119
+ }
120
+ }
121
+ unsetTheme() {
122
+ this.#renderer.removeAttribute(this.#hostElement.nativeElement, 'data-coreui-theme');
123
+ }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ThemeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
125
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: ThemeDirective, isStandalone: true, selector: "[cTheme]", inputs: { colorScheme: "colorScheme", dark: ["dark", "dark", booleanAttribute] }, ngImport: i0 }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ThemeDirective, decorators: [{
128
+ type: Directive,
129
+ args: [{
130
+ selector: '[cTheme]',
131
+ standalone: true
132
+ }]
133
+ }], propDecorators: { colorScheme: [{
134
+ type: Input
135
+ }], dark: [{
136
+ type: Input,
137
+ args: [{ transform: booleanAttribute }]
138
+ }] } });
139
+
97
140
  class SharedModule {
98
141
  static forRoot() {
99
142
  return {
@@ -101,22 +144,14 @@ class SharedModule {
101
144
  };
102
145
  }
103
146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
104
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: SharedModule, imports: [HtmlAttributesDirective,
105
- TemplateIdDirective], exports: [HtmlAttributesDirective,
106
- TemplateIdDirective] }); }
147
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: SharedModule, imports: [HtmlAttributesDirective, TemplateIdDirective, ThemeDirective], exports: [HtmlAttributesDirective, TemplateIdDirective, ThemeDirective] }); }
107
148
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SharedModule }); }
108
149
  }
109
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SharedModule, decorators: [{
110
151
  type: NgModule,
111
152
  args: [{
112
- imports: [
113
- HtmlAttributesDirective,
114
- TemplateIdDirective
115
- ],
116
- exports: [
117
- HtmlAttributesDirective,
118
- TemplateIdDirective
119
- ],
153
+ imports: [HtmlAttributesDirective, TemplateIdDirective, ThemeDirective],
154
+ exports: [HtmlAttributesDirective, TemplateIdDirective, ThemeDirective]
120
155
  }]
121
156
  }] });
122
157
 
@@ -197,35 +232,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
197
232
  }], ctorParameters: () => [] });
198
233
 
199
234
  class AccordionComponent {
235
+ constructor() {
236
+ this.#accordionService = inject(AccordionService);
237
+ /**
238
+ * Removes the default background-color, some borders, and some rounded corners to render accordions edge-to-edge with their parent container.
239
+ * @type boolean
240
+ */
241
+ this.flush = false;
242
+ }
243
+ #accordionService;
200
244
  /**
201
245
  * Make accordion items stay open when another item is opened
202
246
  * @type boolean
203
247
  */
204
248
  set alwaysOpen(value) {
205
- this.accordionService.alwaysOpen = coerceBooleanProperty(value);
249
+ this.#accordionService.alwaysOpen = value;
206
250
  }
207
251
  get alwaysOpen() {
208
- return this.accordionService.alwaysOpen;
252
+ return this.#accordionService.alwaysOpen;
209
253
  }
210
254
  get hostClasses() {
211
255
  return {
212
256
  accordion: true,
213
- 'accordion-flush': !!this.flush
257
+ 'accordion-flush': this.flush
214
258
  };
215
259
  }
216
- constructor(accordionService) {
217
- this.accordionService = accordionService;
218
- }
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AccordionComponent, deps: [{ token: AccordionService }], target: i0.ɵɵFactoryTarget.Component }); }
220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: AccordionComponent, isStandalone: true, selector: "c-accordion", inputs: { flush: "flush", alwaysOpen: "alwaysOpen" }, host: { properties: { "class": "this.hostClasses" } }, providers: [AccordionService], exportAs: ["cAccordionItem"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
260
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
261
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: AccordionComponent, isStandalone: true, selector: "c-accordion", inputs: { flush: ["flush", "flush", booleanAttribute], alwaysOpen: ["alwaysOpen", "alwaysOpen", booleanAttribute] }, host: { properties: { "class": "this.hostClasses" } }, providers: [AccordionService], exportAs: ["cAccordionItem"], ngImport: i0, template: '<ng-content/>', isInline: true, styles: [":host{display:block}\n"] }); }
221
262
  }
222
263
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AccordionComponent, decorators: [{
223
264
  type: Component,
224
- args: [{ selector: 'c-accordion', template: `<ng-content></ng-content>`, exportAs: 'cAccordionItem', providers: [AccordionService], standalone: true, styles: [":host{display:block}\n"] }]
225
- }], ctorParameters: () => [{ type: AccordionService }], propDecorators: { flush: [{
226
- type: Input
265
+ args: [{ selector: 'c-accordion', template: '<ng-content/>', exportAs: 'cAccordionItem', providers: [AccordionService], standalone: true, styles: [":host{display:block}\n"] }]
266
+ }], propDecorators: { flush: [{
267
+ type: Input,
268
+ args: [{ transform: booleanAttribute }]
227
269
  }], alwaysOpen: [{
228
- type: Input
270
+ type: Input,
271
+ args: [{ transform: booleanAttribute }]
229
272
  }], hostClasses: [{
230
273
  type: HostBinding,
231
274
  args: ['class']
@@ -251,51 +294,38 @@ const collapseHorizontalAnimation = animation([
251
294
  // todo
252
295
  // tslint:disable-next-line:no-conflicting-lifecycle
253
296
  class CollapseDirective {
254
- /**
255
- * @ignore
256
- */
257
- set animate(value) {
258
- this._animate = value;
259
- }
260
- get animate() {
261
- return this._animate;
262
- }
263
- /**
264
- * Set horizontal collapsing to transition the width instead of height.
265
- */
266
- set horizontal(value) {
267
- this._horizontal = coerceBooleanProperty(value);
268
- }
269
- get horizontal() {
270
- return this._horizontal;
271
- }
272
297
  /**
273
298
  * Toggle the visibility of collapsible element.
299
+ * @type boolean
300
+ * @default false
274
301
  */
275
302
  set visible(value) {
276
- this._visible = coerceBooleanProperty(value);
303
+ this._visible = value;
277
304
  }
278
305
  get visible() {
279
306
  return this._visible;
280
307
  }
281
- /**
282
- * Add `navbar` prop for grouping and hiding navbar contents by a parent breakpoint.
283
- */
284
- set navbar(value) {
285
- this._navbar = coerceBooleanProperty(value);
286
- }
287
- ;
288
- get navbar() {
289
- return this._navbar;
290
- }
291
308
  constructor(hostElement, renderer, animationBuilder) {
292
309
  this.hostElement = hostElement;
293
310
  this.renderer = renderer;
294
311
  this.animationBuilder = animationBuilder;
295
- this._animate = true;
296
- this._horizontal = false;
312
+ /**
313
+ * @ignore
314
+ */
315
+ this.animate = true;
316
+ /**
317
+ * Set horizontal collapsing to transition the width instead of height.
318
+ * @type boolean
319
+ * @default false
320
+ */
321
+ this.horizontal = false;
297
322
  this._visible = false;
298
- this._navbar = false;
323
+ /**
324
+ * Add `navbar` prop for grouping and hiding navbar contents by a parent breakpoint.
325
+ * @type boolean
326
+ * @default false
327
+ */
328
+ this.navbar = false;
299
329
  /**
300
330
  * @ignore
301
331
  */
@@ -405,7 +435,7 @@ class CollapseDirective {
405
435
  // });
406
436
  }
407
437
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CollapseDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
408
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: CollapseDirective, isStandalone: true, selector: "[cCollapse]", inputs: { animate: "animate", horizontal: "horizontal", visible: "visible", navbar: "navbar", duration: "duration", transition: "transition" }, outputs: { collapseChange: "collapseChange" }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cCollapse"], usesOnChanges: true, ngImport: i0 }); }
438
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: CollapseDirective, isStandalone: true, selector: "[cCollapse]", inputs: { animate: ["animate", "animate", booleanAttribute], horizontal: ["horizontal", "horizontal", booleanAttribute], visible: ["visible", "visible", booleanAttribute], navbar: ["navbar", "navbar", booleanAttribute], duration: "duration", transition: "transition" }, outputs: { collapseChange: "collapseChange" }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cCollapse"], usesOnChanges: true, ngImport: i0 }); }
409
439
  }
410
440
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CollapseDirective, decorators: [{
411
441
  type: Directive,
@@ -415,13 +445,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
415
445
  standalone: true
416
446
  }]
417
447
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1.AnimationBuilder }], propDecorators: { animate: [{
418
- type: Input
448
+ type: Input,
449
+ args: [{ transform: booleanAttribute }]
419
450
  }], horizontal: [{
420
- type: Input
451
+ type: Input,
452
+ args: [{ transform: booleanAttribute }]
421
453
  }], visible: [{
422
- type: Input
454
+ type: Input,
455
+ args: [{ transform: booleanAttribute }]
423
456
  }], navbar: [{
424
- type: Input
457
+ type: Input,
458
+ args: [{ transform: booleanAttribute }]
425
459
  }], duration: [{
426
460
  type: Input
427
461
  }], transition: [{
@@ -686,6 +720,7 @@ class ButtonCloseDirective extends ButtonDirective {
686
720
  /**
687
721
  * Change the default color to white.
688
722
  * @type boolean
723
+ * @deprecated 5.0.0. Use `cButtonClose.dark` instead.
689
724
  */
690
725
  this.white = false;
691
726
  }
@@ -700,13 +735,16 @@ class ButtonCloseDirective extends ButtonDirective {
700
735
  };
701
736
  }
702
737
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ButtonCloseDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
703
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: ButtonCloseDirective, isStandalone: true, selector: "[cButtonClose]", inputs: { white: ["white", "white", booleanAttribute] }, host: { properties: { "class": "this.hostClasses" } }, usesInheritance: true, ngImport: i0 }); }
738
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: ButtonCloseDirective, isStandalone: true, selector: "[cButtonClose]", inputs: { white: ["white", "white", booleanAttribute] }, host: { properties: { "class": "this.hostClasses" } }, usesInheritance: true, hostDirectives: [{ directive: ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0 }); }
704
739
  }
705
740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ButtonCloseDirective, decorators: [{
706
741
  type: Directive,
707
742
  args: [{
708
743
  selector: '[cButtonClose]',
709
- standalone: true
744
+ standalone: true,
745
+ hostDirectives: [
746
+ { directive: ThemeDirective, inputs: ['dark'] }
747
+ ]
710
748
  }]
711
749
  }], propDecorators: { white: [{
712
750
  type: Input,
@@ -757,44 +795,34 @@ class AlertComponent {
757
795
  */
758
796
  this.visibleChange = new EventEmitter();
759
797
  this.templates = {};
760
- this._dismissible = false;
761
- this._fade = false;
762
- this._visible = true;
763
- }
764
- /**
765
- * Optionally adds a close button to alert and allow it to self dismiss.
766
- * @type boolean
767
- */
768
- get dismissible() {
769
- return this._dismissible;
770
- }
771
- set dismissible(value) {
772
- this._dismissible = coerceBooleanProperty(value);
773
- }
774
- /**
775
- * Adds animation for dismissible alert.
776
- * @type boolean
777
- */
778
- get fade() {
779
- return this._fade;
780
- }
781
- set fade(value) {
782
- this._fade = coerceBooleanProperty(value);
783
- }
784
- get visible() {
785
- return this._visible;
798
+ /**
799
+ * Optionally adds a close button to alert and allow it to self dismiss.
800
+ * @type boolean
801
+ * @default false
802
+ */
803
+ this.dismissible = false;
804
+ /**
805
+ * Adds animation for dismissible alert.
806
+ * @type boolean
807
+ */
808
+ this.fade = false;
809
+ this.#visible = true;
786
810
  }
787
811
  /**
788
812
  * Toggle the visibility of alert component.
789
813
  * @type boolean
790
814
  */
791
815
  set visible(value) {
792
- if (this._visible !== value) {
793
- this._visible = coerceBooleanProperty(value);
816
+ if (this.#visible !== value) {
817
+ this.#visible = value;
794
818
  this.visibleChange.emit(value);
795
819
  }
796
820
  }
797
821
  ;
822
+ get visible() {
823
+ return this.#visible;
824
+ }
825
+ #visible;
798
826
  get animationDisabled() {
799
827
  return !this.fade;
800
828
  }
@@ -833,7 +861,7 @@ class AlertComponent {
833
861
  }
834
862
  }
835
863
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
836
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: AlertComponent, isStandalone: true, selector: "c-alert", inputs: { color: "color", role: "role", variant: "variant", dismissible: "dismissible", fade: "fade", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "@fadeInOut.start": "onAnimationStart($event)", "@fadeInOut.done": "onAnimationDone($event)" }, properties: { "attr.role": "this.role", "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType", "class": "this.hostClasses" } }, queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], exportAs: ["cAlert"], ngImport: i0, template: "@if (visible || !hide) {\n @if (dismissible) {\n <ng-container *ngTemplateOutlet=\"templates?.alertButtonCloseTemplate || defaultAlertButtonCloseTemplate\" />\n }\n <ng-content />\n}\n\n<ng-template #defaultAlertButtonCloseTemplate>\n <button (click)=\"visible=false\" aria-label=\"Close\" cButtonClose></button>\n</ng-template>\n", styles: [":host{display:block;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonCloseDirective, selector: "[cButtonClose]", inputs: ["white"] }], animations: [
864
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: AlertComponent, isStandalone: true, selector: "c-alert", inputs: { color: "color", role: "role", variant: "variant", dismissible: ["dismissible", "dismissible", booleanAttribute], fade: ["fade", "fade", booleanAttribute], visible: ["visible", "visible", booleanAttribute] }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "@fadeInOut.start": "onAnimationStart($event)", "@fadeInOut.done": "onAnimationDone($event)" }, properties: { "attr.role": "this.role", "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType", "class": "this.hostClasses" } }, queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], exportAs: ["cAlert"], ngImport: i0, template: "@if (visible || !hide) {\n @if (dismissible) {\n <ng-container *ngTemplateOutlet=\"templates?.alertButtonCloseTemplate || defaultAlertButtonCloseTemplate\" />\n }\n <ng-content></ng-content>\n}\n<ng-template #defaultAlertButtonCloseTemplate>\n <button (click)=\"visible=false\" aria-label=\"Close\" cButtonClose></button>\n</ng-template>\n", styles: [":host{display:block;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonCloseDirective, selector: "[cButtonClose]", inputs: ["white"] }], animations: [
837
865
  trigger('fadeInOut', [
838
866
  state('show', style({ opacity: 1, height: '*', padding: '*', border: '*', margin: '*' })),
839
867
  state('hide', style({ opacity: 0, height: 0, padding: 0, border: 0, margin: 0 })),
@@ -873,7 +901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
873
901
  animate('.3s ease-in')
874
902
  ])
875
903
  ])
876
- ], template: "@if (visible || !hide) {\n @if (dismissible) {\n <ng-container *ngTemplateOutlet=\"templates?.alertButtonCloseTemplate || defaultAlertButtonCloseTemplate\" />\n }\n <ng-content />\n}\n\n<ng-template #defaultAlertButtonCloseTemplate>\n <button (click)=\"visible=false\" aria-label=\"Close\" cButtonClose></button>\n</ng-template>\n", styles: [":host{display:block;overflow:hidden}\n"] }]
904
+ ], template: "@if (visible || !hide) {\n @if (dismissible) {\n <ng-container *ngTemplateOutlet=\"templates?.alertButtonCloseTemplate || defaultAlertButtonCloseTemplate\" />\n }\n <ng-content></ng-content>\n}\n<ng-template #defaultAlertButtonCloseTemplate>\n <button (click)=\"visible=false\" aria-label=\"Close\" cButtonClose></button>\n</ng-template>\n", styles: [":host{display:block;overflow:hidden}\n"] }]
877
905
  }], propDecorators: { color: [{
878
906
  type: Input
879
907
  }], role: [{
@@ -889,11 +917,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
889
917
  type: ContentChildren,
890
918
  args: [TemplateIdDirective, { descendants: true }]
891
919
  }], dismissible: [{
892
- type: Input
920
+ type: Input,
921
+ args: [{ transform: booleanAttribute }]
893
922
  }], fade: [{
894
- type: Input
923
+ type: Input,
924
+ args: [{ transform: booleanAttribute }]
895
925
  }], visible: [{
896
- type: Input
926
+ type: Input,
927
+ args: [{ transform: booleanAttribute }]
897
928
  }], animationDisabled: [{
898
929
  type: HostBinding,
899
930
  args: ['@.disabled']
@@ -936,6 +967,277 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
936
967
  }]
937
968
  }] });
938
969
 
970
+ class AlignDirective {
971
+ get hostClasses() {
972
+ return {
973
+ [`align-${this.align}`]: !!this.align,
974
+ };
975
+ }
976
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AlignDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
977
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: AlignDirective, isStandalone: true, selector: "[cAlign]", inputs: { align: ["cAlign", "align"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
978
+ }
979
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AlignDirective, decorators: [{
980
+ type: Directive,
981
+ args: [{
982
+ selector: '[cAlign]',
983
+ standalone: true
984
+ }]
985
+ }], propDecorators: { align: [{
986
+ type: Input,
987
+ args: ['cAlign']
988
+ }], hostClasses: [{
989
+ type: HostBinding,
990
+ args: ['class']
991
+ }] } });
992
+
993
+ class BgColorDirective {
994
+ get hostClasses() {
995
+ return {
996
+ [`bg-${this.color}`]: !!this.color,
997
+ 'bg-gradient': this.gradient,
998
+ };
999
+ }
1000
+ constructor() {
1001
+ /**
1002
+ * Set the background of an element to any contextual class
1003
+ */
1004
+ this.color = '';
1005
+ }
1006
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BgColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1007
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: BgColorDirective, isStandalone: true, selector: "[cBgColor]", inputs: { color: ["cBgColor", "color"], gradient: "gradient" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
1008
+ }
1009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BgColorDirective, decorators: [{
1010
+ type: Directive,
1011
+ args: [{
1012
+ selector: '[cBgColor]',
1013
+ standalone: true
1014
+ }]
1015
+ }], ctorParameters: () => [], propDecorators: { color: [{
1016
+ type: Input,
1017
+ args: ['cBgColor']
1018
+ }], gradient: [{
1019
+ type: Input
1020
+ }], hostClasses: [{
1021
+ type: HostBinding,
1022
+ args: ['class']
1023
+ }] } });
1024
+
1025
+ class BorderDirective {
1026
+ constructor() {
1027
+ /**
1028
+ * Add or remove an element’s borders
1029
+ * @type Border
1030
+ */
1031
+ this.border = true;
1032
+ }
1033
+ get hostClasses() {
1034
+ if (typeof this.border === 'boolean') {
1035
+ return { border: true };
1036
+ }
1037
+ if (typeof this.border === 'number' || typeof this.border === 'string') {
1038
+ return {
1039
+ border: true,
1040
+ [`border-${this.border}`]: true
1041
+ };
1042
+ }
1043
+ if (typeof this.border === 'object') {
1044
+ const borderObj = { top: undefined, end: undefined, bottom: undefined, start: undefined, color: undefined, ...this.border };
1045
+ // @ts-ignore
1046
+ const keys = Object.keys(borderObj).filter(key => borderObj[key] !== undefined);
1047
+ const classes = {};
1048
+ keys.forEach(key => {
1049
+ // @ts-ignore
1050
+ const val = borderObj[key];
1051
+ if (typeof val === 'boolean') {
1052
+ // @ts-ignore
1053
+ classes[`border-${key}`] = true;
1054
+ }
1055
+ else if (typeof val === 'number' || typeof val === 'string') {
1056
+ // @ts-ignore
1057
+ classes[`border-${key}-${val}`] = true;
1058
+ }
1059
+ else if (typeof val === 'object') {
1060
+ if ('color' in val) {
1061
+ // @ts-ignore
1062
+ classes[`border-${key}-${val.color}`] = true;
1063
+ }
1064
+ if ('width' in val) {
1065
+ // @ts-ignore
1066
+ classes[`border-${key}-${val.width}`] = true;
1067
+ }
1068
+ }
1069
+ });
1070
+ return Object.entries(classes).length === 0 ? { border: false } : classes;
1071
+ }
1072
+ }
1073
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BorderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1074
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: BorderDirective, isStandalone: true, selector: "[cBorder]", inputs: { border: ["cBorder", "border"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
1075
+ }
1076
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BorderDirective, decorators: [{
1077
+ type: Directive,
1078
+ args: [{
1079
+ selector: '[cBorder]',
1080
+ standalone: true
1081
+ }]
1082
+ }], propDecorators: { border: [{
1083
+ type: Input,
1084
+ args: ['cBorder']
1085
+ }], hostClasses: [{
1086
+ type: HostBinding,
1087
+ args: ['class']
1088
+ }] } });
1089
+
1090
+ class RoundedDirective {
1091
+ constructor() {
1092
+ /**
1093
+ * Set border radius variant and radius size
1094
+ * @type Rounded
1095
+ */
1096
+ this.rounded = true;
1097
+ }
1098
+ get hostClasses() {
1099
+ if (typeof this.rounded === 'boolean') {
1100
+ return { rounded: true };
1101
+ }
1102
+ if (typeof this.rounded === 'number' || typeof this.rounded === 'string') {
1103
+ return {
1104
+ [`rounded-${this.rounded}`]: true
1105
+ };
1106
+ }
1107
+ if (typeof this.rounded === 'object') {
1108
+ const roundedObj = {
1109
+ top: undefined,
1110
+ end: undefined,
1111
+ bottom: undefined,
1112
+ start: undefined,
1113
+ circle: undefined,
1114
+ pill: undefined,
1115
+ size: undefined,
1116
+ ...this.rounded,
1117
+ };
1118
+ // @ts-ignore
1119
+ const keys = Object.keys(roundedObj).filter(key => roundedObj[key] !== undefined);
1120
+ const classes = {};
1121
+ keys.forEach(key => {
1122
+ // @ts-ignore
1123
+ const val = roundedObj[key];
1124
+ if (typeof val === 'boolean') {
1125
+ // @ts-ignore
1126
+ classes[`rounded-${key}`] = val;
1127
+ }
1128
+ else {
1129
+ // @ts-ignore
1130
+ classes[`rounded-${val}`] = true;
1131
+ }
1132
+ });
1133
+ // console.log('rounded keys', keys, classes);
1134
+ return Object.entries(classes).length === 0 ? { rounded: false } : classes;
1135
+ }
1136
+ }
1137
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1138
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: RoundedDirective, isStandalone: true, selector: "[cRounded]", inputs: { rounded: ["cRounded", "rounded"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
1139
+ }
1140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundedDirective, decorators: [{
1141
+ type: Directive,
1142
+ args: [{
1143
+ selector: '[cRounded]',
1144
+ standalone: true
1145
+ }]
1146
+ }], propDecorators: { rounded: [{
1147
+ type: Input,
1148
+ args: ['cRounded']
1149
+ }], hostClasses: [{
1150
+ type: HostBinding,
1151
+ args: ['class']
1152
+ }] } });
1153
+
1154
+ class ShadowOnScrollDirective {
1155
+ #destroyRef = inject(DestroyRef);
1156
+ #document = inject(DOCUMENT);
1157
+ #elementRef = inject(ElementRef);
1158
+ #scrolled = signal(false);
1159
+ #scrollEffect = effect(() => {
1160
+ this.#elementRef.nativeElement.classList.toggle(this.#shadowClass, this.#scrolled());
1161
+ });
1162
+ #observable;
1163
+ #shadowClass = 'shadow-sm';
1164
+ constructor() {
1165
+ this.#destroyRef.onDestroy(() => {
1166
+ this.#scrollEffect?.destroy();
1167
+ });
1168
+ }
1169
+ set cShadowOnScroll(value) {
1170
+ this.#scrolled.set(false);
1171
+ if (value) {
1172
+ this.#shadowClass = value === true ? 'shadow' : `shadow-${value}`;
1173
+ this.#observable = fromEvent(this.#document, 'scroll')
1174
+ .pipe(takeUntilDestroyed(this.#destroyRef))
1175
+ .subscribe(scrolled => {
1176
+ this.#scrolled.set(this.#document.documentElement.scrollTop > 0);
1177
+ });
1178
+ }
1179
+ else {
1180
+ this.#observable?.unsubscribe();
1181
+ }
1182
+ }
1183
+ ;
1184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ShadowOnScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1185
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: ShadowOnScrollDirective, isStandalone: true, selector: "[cShadowOnScroll]", inputs: { cShadowOnScroll: "cShadowOnScroll" }, ngImport: i0 }); }
1186
+ }
1187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ShadowOnScrollDirective, decorators: [{
1188
+ type: Directive,
1189
+ args: [{
1190
+ selector: '[cShadowOnScroll]',
1191
+ standalone: true
1192
+ }]
1193
+ }], ctorParameters: () => [], propDecorators: { cShadowOnScroll: [{
1194
+ type: Input
1195
+ }] } });
1196
+
1197
+ class TextColorDirective {
1198
+ get hostClasses() {
1199
+ const color = this.color;
1200
+ return {
1201
+ [`text-${color}`]: !!color
1202
+ };
1203
+ }
1204
+ constructor() {
1205
+ /**
1206
+ * Set text-color of element
1207
+ * @type TextColors
1208
+ */
1209
+ this.color = '';
1210
+ }
1211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TextColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1212
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: TextColorDirective, isStandalone: true, selector: "[cTextColor]", inputs: { color: ["cTextColor", "color"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
1213
+ }
1214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TextColorDirective, decorators: [{
1215
+ type: Directive,
1216
+ args: [{
1217
+ selector: '[cTextColor]',
1218
+ standalone: true
1219
+ }]
1220
+ }], ctorParameters: () => [], propDecorators: { color: [{
1221
+ type: Input,
1222
+ args: ['cTextColor']
1223
+ }], hostClasses: [{
1224
+ type: HostBinding,
1225
+ args: ['class']
1226
+ }] } });
1227
+
1228
+ const UTILITY_DIRECTIVES = [AlignDirective, BgColorDirective, BorderDirective, RoundedDirective, ShadowOnScrollDirective, TextColorDirective];
1229
+ class UtilitiesModule {
1230
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1231
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule, imports: [AlignDirective, BgColorDirective, BorderDirective, RoundedDirective, ShadowOnScrollDirective, TextColorDirective], exports: [AlignDirective, BgColorDirective, BorderDirective, RoundedDirective, ShadowOnScrollDirective, TextColorDirective] }); }
1232
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule }); }
1233
+ }
1234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule, decorators: [{
1235
+ type: NgModule,
1236
+ args: [{
1237
+ imports: [...UTILITY_DIRECTIVES], exports: [...UTILITY_DIRECTIVES]
1238
+ }]
1239
+ }] });
1240
+
939
1241
  class AvatarComponent {
940
1242
  constructor() {
941
1243
  /**
@@ -955,19 +1257,20 @@ class AvatarComponent {
955
1257
  avatar: true,
956
1258
  [`avatar-${this.size}`]: !!this.size,
957
1259
  [`bg-${this.color}`]: !!this.color,
958
- [`${this.shape}`]: !!this.shape,
959
- [`text-${this.textColor}`]: !!this.textColor
1260
+ [`${this.shape}`]: !!this.shape
960
1261
  };
961
1262
  }
962
1263
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
963
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: AvatarComponent, isStandalone: true, selector: "c-avatar", inputs: { color: "color", shape: "shape", size: "size", src: "src", status: "status", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<ng-container>\n <ng-container *ngTemplateOutlet=\"defaultImageTemplate\" />\n @if (!!status) {\n <span [ngClass]=\"statusClass\"></span>\n }\n</ng-container>\n\n<ng-template #defaultImageTemplate>\n @if (!!src) {\n <img [src]=\"src\" class=\"avatar-img\" />\n } @else {\n <ng-content />\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
1264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: AvatarComponent, isStandalone: true, selector: "c-avatar", inputs: { color: "color", shape: "shape", size: "size", src: "src", status: "status", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, hostDirectives: [{ directive: TextColorDirective, inputs: ["cTextColor", "textColor"] }], ngImport: i0, template: "<ng-container>\n <ng-container *ngTemplateOutlet=\"defaultImageTemplate\"></ng-container>\n @if (!!status) {\n <span [ngClass]=\"statusClass\"></span>\n }\n</ng-container>\n\n<ng-template #defaultImageTemplate>\n @if (!!src) {\n <img [src]=\"src\" class=\"avatar-img\" />\n } @else {\n <ng-content></ng-content>\n }\n <ng-template #imageContent>\n <ng-content></ng-content>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
964
1265
  }
965
1266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AvatarComponent, decorators: [{
966
1267
  type: Component,
967
1268
  args: [{ selector: 'c-avatar', standalone: true, imports: [
968
1269
  NgTemplateOutlet,
969
1270
  NgClass
970
- ], template: "<ng-container>\n <ng-container *ngTemplateOutlet=\"defaultImageTemplate\" />\n @if (!!status) {\n <span [ngClass]=\"statusClass\"></span>\n }\n</ng-container>\n\n<ng-template #defaultImageTemplate>\n @if (!!src) {\n <img [src]=\"src\" class=\"avatar-img\" />\n } @else {\n <ng-content />\n }\n</ng-template>\n" }]
1271
+ ], hostDirectives: [{
1272
+ directive: TextColorDirective, inputs: ['cTextColor: textColor']
1273
+ }], template: "<ng-container>\n <ng-container *ngTemplateOutlet=\"defaultImageTemplate\"></ng-container>\n @if (!!status) {\n <span [ngClass]=\"statusClass\"></span>\n }\n</ng-container>\n\n<ng-template #defaultImageTemplate>\n @if (!!src) {\n <img [src]=\"src\" class=\"avatar-img\" />\n } @else {\n <ng-content></ng-content>\n }\n <ng-template #imageContent>\n <ng-content></ng-content>\n </ng-template>\n</ng-template>\n" }]
971
1274
  }], ctorParameters: () => [], propDecorators: { color: [{
972
1275
  type: Input
973
1276
  }], shape: [{
@@ -1016,20 +1319,22 @@ class BadgeComponent {
1016
1319
  return Object.assign({
1017
1320
  badge: true,
1018
1321
  [`bg-${this.color}`]: !!this.color,
1019
- [`text-${this.textColor}`]: !!this.textColor,
1020
1322
  [`badge-${this.size}`]: !!this.size,
1021
1323
  [`${this.shape}`]: !!this.shape
1022
1324
  }, !!this.position ? positionClasses : {});
1023
1325
  }
1024
1326
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1025
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: BadgeComponent, isStandalone: true, selector: "c-badge", inputs: { color: "color", position: "position", shape: "shape", size: "size", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1327
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: BadgeComponent, isStandalone: true, selector: "c-badge", inputs: { color: "color", position: "position", shape: "shape", size: "size", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, hostDirectives: [{ directive: TextColorDirective, inputs: ["cTextColor", "textColor"] }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1026
1328
  }
1027
1329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BadgeComponent, decorators: [{
1028
1330
  type: Component,
1029
1331
  args: [{
1030
1332
  selector: 'c-badge',
1031
1333
  template: '<ng-content></ng-content>',
1032
- standalone: true
1334
+ standalone: true,
1335
+ hostDirectives: [{
1336
+ directive: TextColorDirective, inputs: ['cTextColor: textColor']
1337
+ }]
1033
1338
  }]
1034
1339
  }], ctorParameters: () => [], propDecorators: { color: [{
1035
1340
  type: Input
@@ -1081,7 +1386,6 @@ class BackdropService {
1081
1386
  get #scrollbarWidth() {
1082
1387
  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
1083
1388
  const documentWidth = this.#document.documentElement.clientWidth;
1084
- // const scrollbarWidth = Math.abs((window?.innerWidth ?? documentWidth) - documentWidth);
1085
1389
  const scrollbarWidth = Math.abs((this.#document.defaultView?.innerWidth ?? documentWidth) - documentWidth);
1086
1390
  return `${scrollbarWidth}px`;
1087
1391
  }
@@ -1153,13 +1457,14 @@ class BreadcrumbItemComponent {
1153
1457
  };
1154
1458
  }
1155
1459
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BreadcrumbItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: BreadcrumbItemComponent, isStandalone: true, selector: "c-breadcrumb-item", inputs: { active: "active", url: "url", attributes: "attributes", linkProps: "linkProps" }, host: { properties: { "attr.aria-current": "this.ariaCurrent", "class": "this.hostClasses" } }, ngImport: i0, template: "@if (!active) {\n <a [routerLink]=\"url\"\n [cHtmlAttr]=\"attributes ?? {}\"\n [target]=\"attributes?.['target']\"\n [queryParams]=\"linkProps?.queryParams ?? null\"\n [fragment]=\"linkProps?.fragment\"\n [queryParamsHandling]=\"linkProps?.queryParamsHandling ?? null\"\n [preserveFragment]=\"linkProps?.preserveFragment ?? false\"\n [skipLocationChange]=\"linkProps?.skipLocationChange ?? false\"\n [replaceUrl]=\"linkProps?.replaceUrl ?? false\"\n [state]=\"linkProps?.state ?? {}\"\n >\n <ng-container *ngTemplateOutlet=\"defaultBreadcrumbItemContentTemplate\" />\n </a>\n} @else {\n <span [cHtmlAttr]=\"attributes ?? {}\">\n <ng-container *ngTemplateOutlet=\"defaultBreadcrumbItemContentTemplate\" />\n </span>\n}\n\n<ng-template #defaultBreadcrumbItemContentTemplate>\n <ng-content />\n</ng-template>\n", styles: [":host{display:list-item;text-align:-webkit-match-parent;text-align:match-parent}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }] }); }
1460
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: BreadcrumbItemComponent, isStandalone: true, selector: "c-breadcrumb-item", inputs: { active: ["active", "active", booleanAttribute], url: "url", attributes: "attributes", linkProps: "linkProps" }, host: { properties: { "attr.aria-current": "this.ariaCurrent", "class": "this.hostClasses" } }, ngImport: i0, template: "@if (!active) {\n <a [routerLink]=\"url\"\n [cHtmlAttr]=\"attributes ?? {}\"\n [target]=\"attributes?.['target']\"\n [queryParams]=\"linkProps?.queryParams ?? null\"\n [fragment]=\"linkProps?.fragment\"\n [queryParamsHandling]=\"linkProps?.queryParamsHandling ?? null\"\n [preserveFragment]=\"linkProps?.preserveFragment ?? false\"\n [skipLocationChange]=\"linkProps?.skipLocationChange ?? false\"\n [replaceUrl]=\"linkProps?.replaceUrl ?? false\"\n [state]=\"linkProps?.state ?? {}\"\n >\n <ng-container *ngTemplateOutlet=\"defaultBreadcrumbItemContentTemplate\" />\n </a>\n} @else {\n <span [cHtmlAttr]=\"attributes ?? {}\">\n <ng-container *ngTemplateOutlet=\"defaultBreadcrumbItemContentTemplate\" />\n </span>\n}\n\n<ng-template #defaultBreadcrumbItemContentTemplate>\n <ng-content />\n</ng-template>\n", styles: [":host{display:list-item;text-align:-webkit-match-parent;text-align:match-parent}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }] }); }
1157
1461
  }
1158
1462
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
1159
1463
  type: Component,
1160
1464
  args: [{ selector: 'c-breadcrumb-item', standalone: true, imports: [RouterModule, NgTemplateOutlet, HtmlAttributesDirective], template: "@if (!active) {\n <a [routerLink]=\"url\"\n [cHtmlAttr]=\"attributes ?? {}\"\n [target]=\"attributes?.['target']\"\n [queryParams]=\"linkProps?.queryParams ?? null\"\n [fragment]=\"linkProps?.fragment\"\n [queryParamsHandling]=\"linkProps?.queryParamsHandling ?? null\"\n [preserveFragment]=\"linkProps?.preserveFragment ?? false\"\n [skipLocationChange]=\"linkProps?.skipLocationChange ?? false\"\n [replaceUrl]=\"linkProps?.replaceUrl ?? false\"\n [state]=\"linkProps?.state ?? {}\"\n >\n <ng-container *ngTemplateOutlet=\"defaultBreadcrumbItemContentTemplate\" />\n </a>\n} @else {\n <span [cHtmlAttr]=\"attributes ?? {}\">\n <ng-container *ngTemplateOutlet=\"defaultBreadcrumbItemContentTemplate\" />\n </span>\n}\n\n<ng-template #defaultBreadcrumbItemContentTemplate>\n <ng-content />\n</ng-template>\n", styles: [":host{display:list-item;text-align:-webkit-match-parent;text-align:match-parent}\n"] }]
1161
1465
  }], propDecorators: { active: [{
1162
- type: Input
1466
+ type: Input,
1467
+ args: [{ transform: booleanAttribute }]
1163
1468
  }], url: [{
1164
1469
  type: Input
1165
1470
  }], attributes: [{
@@ -1220,12 +1525,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
1220
1525
  }] } });
1221
1526
 
1222
1527
  class BreadcrumbRouterService {
1528
+ #breadcrumbsBehaviorSubject;
1223
1529
  constructor(router, route) {
1224
1530
  this.router = router;
1225
1531
  this.route = route;
1226
1532
  this.outlet = 'primary';
1227
- this.breadcrumbsBehaviorSubject = new BehaviorSubject(new Array());
1228
- this.breadcrumbs$ = this.breadcrumbsBehaviorSubject.asObservable();
1533
+ this.#breadcrumbsBehaviorSubject = new BehaviorSubject(new Array());
1534
+ this.breadcrumbs$ = this.#breadcrumbsBehaviorSubject.asObservable();
1229
1535
  this.router.events
1230
1536
  .pipe(takeUntilDestroyed(), filter((event) => event instanceof NavigationEnd))
1231
1537
  .subscribe((event) => {
@@ -1241,7 +1547,7 @@ class BreadcrumbRouterService {
1241
1547
  const routeSnapshot = childRoute.snapshot;
1242
1548
  url += '/' + routeSnapshot.url.map((segment) => segment.path).join('/');
1243
1549
  breadcrumbs.push({
1244
- label: childRoute.snapshot.data['title'] || '',
1550
+ label: routeSnapshot.data['title'] ?? routeSnapshot.title ?? '',
1245
1551
  url,
1246
1552
  queryParams: routeSnapshot.queryParams
1247
1553
  });
@@ -1249,8 +1555,7 @@ class BreadcrumbRouterService {
1249
1555
  }
1250
1556
  });
1251
1557
  } while (currentRoute);
1252
- this.breadcrumbsBehaviorSubject.next(Object.assign([], breadcrumbs));
1253
- // console.log('breadcrumbs', breadcrumbs);
1558
+ this.#breadcrumbsBehaviorSubject.next(Object.assign([], breadcrumbs));
1254
1559
  return breadcrumbs;
1255
1560
  });
1256
1561
  }
@@ -1289,11 +1594,11 @@ class BreadcrumbRouterComponent {
1289
1594
  this.breadcrumbs = undefined;
1290
1595
  }
1291
1596
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BreadcrumbRouterComponent, deps: [{ token: BreadcrumbRouterService }], target: i0.ɵɵFactoryTarget.Component }); }
1292
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: BreadcrumbRouterComponent, isStandalone: true, selector: "c-breadcrumb-router, [cBreadcrumbRouter]", inputs: { items: "items" }, usesOnChanges: true, ngImport: i0, template: "<c-breadcrumb class=\"m-0\">\n @for (breadcrumb of breadcrumbs | async; track breadcrumb; let last = $last) {\n @if (breadcrumb?.label && (breadcrumb?.url?.slice(-1) === '/' || last)) {\n <c-breadcrumb-item\n [active]=\"last\"\n [url]=\"breadcrumb?.url\"\n [attributes]=\"breadcrumb?.attributes\"\n [linkProps]=\"breadcrumb?.linkProps\"\n >\n {{ breadcrumb?.label }}\n </c-breadcrumb-item>\n }\n }\n</c-breadcrumb>\n", dependencies: [{ kind: "component", type: BreadcrumbComponent, selector: "c-breadcrumb", inputs: ["ariaLabel", "role"] }, { kind: "component", type: BreadcrumbItemComponent, selector: "c-breadcrumb-item", inputs: ["active", "url", "attributes", "linkProps"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
1597
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: BreadcrumbRouterComponent, isStandalone: true, selector: "c-breadcrumb-router, [cBreadcrumbRouter]", inputs: { items: "items" }, usesOnChanges: true, ngImport: i0, template: "<c-breadcrumb class=\"m-0\">\n @for (breadcrumb of breadcrumbs | async; track breadcrumb; let last = $last) {\n @if(breadcrumb?.label && (breadcrumb?.url?.slice(-1) === '/' || last)) {\n <c-breadcrumb-item\n [active]=\"last\"\n [url]=\"breadcrumb?.url\"\n [attributes]=\"breadcrumb?.attributes\"\n [linkProps]=\"breadcrumb?.linkProps\"\n >\n {{ breadcrumb?.label }}\n </c-breadcrumb-item>\n }\n }\n</c-breadcrumb>\n", dependencies: [{ kind: "component", type: BreadcrumbComponent, selector: "c-breadcrumb", inputs: ["ariaLabel", "role"] }, { kind: "component", type: BreadcrumbItemComponent, selector: "c-breadcrumb-item", inputs: ["active", "url", "attributes", "linkProps"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
1293
1598
  }
1294
1599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BreadcrumbRouterComponent, decorators: [{
1295
1600
  type: Component,
1296
- args: [{ selector: 'c-breadcrumb-router, [cBreadcrumbRouter]', standalone: true, imports: [BreadcrumbComponent, BreadcrumbItemComponent, AsyncPipe], template: "<c-breadcrumb class=\"m-0\">\n @for (breadcrumb of breadcrumbs | async; track breadcrumb; let last = $last) {\n @if (breadcrumb?.label && (breadcrumb?.url?.slice(-1) === '/' || last)) {\n <c-breadcrumb-item\n [active]=\"last\"\n [url]=\"breadcrumb?.url\"\n [attributes]=\"breadcrumb?.attributes\"\n [linkProps]=\"breadcrumb?.linkProps\"\n >\n {{ breadcrumb?.label }}\n </c-breadcrumb-item>\n }\n }\n</c-breadcrumb>\n" }]
1601
+ args: [{ selector: 'c-breadcrumb-router, [cBreadcrumbRouter]', standalone: true, imports: [BreadcrumbComponent, BreadcrumbItemComponent, AsyncPipe], template: "<c-breadcrumb class=\"m-0\">\n @for (breadcrumb of breadcrumbs | async; track breadcrumb; let last = $last) {\n @if(breadcrumb?.label && (breadcrumb?.url?.slice(-1) === '/' || last)) {\n <c-breadcrumb-item\n [active]=\"last\"\n [url]=\"breadcrumb?.url\"\n [attributes]=\"breadcrumb?.attributes\"\n [linkProps]=\"breadcrumb?.linkProps\"\n >\n {{ breadcrumb?.label }}\n </c-breadcrumb-item>\n }\n }\n</c-breadcrumb>\n" }]
1297
1602
  }], ctorParameters: () => [{ type: BreadcrumbRouterService }], propDecorators: { items: [{
1298
1603
  type: Input
1299
1604
  }] } });
@@ -1450,22 +1755,23 @@ class CardComponent {
1450
1755
  get hostClasses() {
1451
1756
  return {
1452
1757
  card: true,
1453
- [`bg-${this.color}`]: !!this.color,
1454
- [`text-${this.textColor}`]: !!this.textColor,
1758
+ [`bg-${this.color}`]: !!this.color
1455
1759
  };
1456
1760
  }
1457
- constructor() { }
1458
1761
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1459
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CardComponent, isStandalone: true, selector: "c-card, [c-card]", inputs: { color: "color", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
1762
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CardComponent, isStandalone: true, selector: "c-card, [c-card]", inputs: { color: "color", textColor: "textColor" }, host: { properties: { "class": "this.hostClasses" } }, hostDirectives: [{ directive: TextColorDirective, inputs: ["cTextColor", "textColor"] }], ngImport: i0, template: '<ng-content />', isInline: true }); }
1460
1763
  }
1461
1764
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CardComponent, decorators: [{
1462
1765
  type: Component,
1463
1766
  args: [{
1464
1767
  selector: 'c-card, [c-card]',
1465
- template: `<ng-content></ng-content>`,
1466
- standalone: true
1768
+ template: '<ng-content />',
1769
+ standalone: true,
1770
+ hostDirectives: [{
1771
+ directive: TextColorDirective, inputs: ['cTextColor: textColor']
1772
+ }]
1467
1773
  }]
1468
- }], ctorParameters: () => [], propDecorators: { color: [{
1774
+ }], propDecorators: { color: [{
1469
1775
  type: Input
1470
1776
  }], textColor: [{
1471
1777
  type: Input
@@ -1872,6 +2178,150 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
1872
2178
  args: [DOCUMENT]
1873
2179
  }] }, { type: i0.RendererFactory2 }] });
1874
2180
 
2181
+ class InMemoryStorageService {
2182
+ #storage = new Map();
2183
+ constructor() { }
2184
+ setItem(key, data) {
2185
+ this.#storage.set(key, JSON.stringify(data));
2186
+ }
2187
+ getItem(key) {
2188
+ return this.#storage.has(key) ? JSON.parse(this.#storage.get(key) ?? 'null') : undefined;
2189
+ }
2190
+ removeItem(key) {
2191
+ this.#storage.delete(key);
2192
+ }
2193
+ clear() {
2194
+ this.#storage.clear();
2195
+ }
2196
+ get length() {
2197
+ return this.#storage.size;
2198
+ }
2199
+ key(index) {
2200
+ return Array.from(this.#storage.keys())[index];
2201
+ }
2202
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InMemoryStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2203
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InMemoryStorageService, providedIn: 'root' }); }
2204
+ }
2205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: InMemoryStorageService, decorators: [{
2206
+ type: Injectable,
2207
+ args: [{
2208
+ providedIn: 'root'
2209
+ }]
2210
+ }], ctorParameters: () => [] });
2211
+
2212
+ class LocalStorageService {
2213
+ constructor(platformId, document) {
2214
+ this.platformId = platformId;
2215
+ this.document = document;
2216
+ this.#data$ = new BehaviorSubject(null);
2217
+ this.data$ = this.#data$.asObservable();
2218
+ this.#localStorage =
2219
+ isPlatformBrowser(this.platformId) && this.document.defaultView
2220
+ ? this.document.defaultView?.localStorage
2221
+ : new InMemoryStorageService();
2222
+ }
2223
+ #localStorage;
2224
+ #data$;
2225
+ setItem(key, data) {
2226
+ this.#localStorage.setItem(key, JSON.stringify(data));
2227
+ this.#data$.next({ key, data });
2228
+ }
2229
+ getItem(key) {
2230
+ const data = JSON.parse(this.#localStorage.getItem(key) ?? 'null');
2231
+ this.#data$.next({ key, data });
2232
+ return data;
2233
+ }
2234
+ removeItem(key) {
2235
+ this.#localStorage.removeItem(key);
2236
+ this.#data$.next({ key, data: null });
2237
+ }
2238
+ clear() {
2239
+ this.#localStorage.clear();
2240
+ this.#data$.next(null);
2241
+ }
2242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocalStorageService, deps: [{ token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
2243
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }
2244
+ }
2245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
2246
+ type: Injectable,
2247
+ args: [{
2248
+ providedIn: 'root'
2249
+ }]
2250
+ }], ctorParameters: () => [{ type: Object, decorators: [{
2251
+ type: Inject,
2252
+ args: [PLATFORM_ID]
2253
+ }] }, { type: Document, decorators: [{
2254
+ type: Inject,
2255
+ args: [DOCUMENT]
2256
+ }] }] });
2257
+
2258
+ class ColorModeService {
2259
+ #destroyRef;
2260
+ #document;
2261
+ #localStorage;
2262
+ constructor() {
2263
+ this.#destroyRef = inject(DestroyRef);
2264
+ this.#document = inject(DOCUMENT);
2265
+ this.#localStorage = inject(LocalStorageService);
2266
+ this.eventName = signal('ColorSchemeChange');
2267
+ this.localStorageItemName = signal(undefined);
2268
+ this.localStorageItemName$ = toObservable(this.localStorageItemName);
2269
+ this.colorMode = signal(undefined);
2270
+ this.colorModeEffect = effect(() => {
2271
+ const colorMode = this.colorMode();
2272
+ if (colorMode) {
2273
+ const localStorageItemName = this.localStorageItemName();
2274
+ localStorageItemName && this.setStoredTheme(localStorageItemName, colorMode);
2275
+ this.#setTheme(colorMode);
2276
+ }
2277
+ });
2278
+ this.localStorageItemName$
2279
+ .pipe(tap(params => {
2280
+ this.colorMode.set(this.getDefaultScheme(params));
2281
+ }), takeUntilDestroyed(this.#destroyRef))
2282
+ .subscribe();
2283
+ }
2284
+ getStoredTheme(localStorageItemName) {
2285
+ return this.#localStorage.getItem(localStorageItemName);
2286
+ }
2287
+ setStoredTheme(localStorageItemName, colorMode) {
2288
+ return this.#localStorage.setItem(localStorageItemName, colorMode);
2289
+ }
2290
+ removeStoredTheme(localStorageItemName) {
2291
+ this.#localStorage.removeItem(localStorageItemName);
2292
+ }
2293
+ getDefaultScheme(localStorageItemName) {
2294
+ if (this.#document.defaultView === undefined) {
2295
+ return this.getDatasetTheme();
2296
+ }
2297
+ const storedTheme = localStorageItemName && this.getStoredTheme(localStorageItemName);
2298
+ return storedTheme ?? this.getDatasetTheme();
2299
+ }
2300
+ ;
2301
+ getPrefersColorScheme() {
2302
+ return this.#document.defaultView?.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' :
2303
+ this.#document.defaultView?.matchMedia('(prefers-color-scheme: light)').matches ? 'light' :
2304
+ undefined;
2305
+ }
2306
+ getDatasetTheme() {
2307
+ return (this.#document.documentElement.dataset['coreuiTheme']);
2308
+ }
2309
+ #setTheme(colorMode) {
2310
+ this.#document.documentElement.dataset['coreuiTheme'] = (colorMode === 'auto' ? this.getPrefersColorScheme() : colorMode);
2311
+ const event = new Event(this.eventName());
2312
+ this.#document.documentElement.dispatchEvent(event);
2313
+ }
2314
+ ;
2315
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ColorModeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2316
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ColorModeService, providedIn: 'root' }); }
2317
+ }
2318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ColorModeService, decorators: [{
2319
+ type: Injectable,
2320
+ args: [{
2321
+ providedIn: 'root'
2322
+ }]
2323
+ }], ctorParameters: () => [] });
2324
+
1875
2325
  class CarouselService {
1876
2326
  constructor() {
1877
2327
  this.carouselIndex = new BehaviorSubject({});
@@ -1975,22 +2425,13 @@ class CarouselConfig {
1975
2425
  this.interval = 3000;
1976
2426
  }
1977
2427
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1978
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselConfig }); }
1979
- }
1980
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselConfig, decorators: [{
1981
- type: Injectable
1982
- }] });
1983
-
1984
- class CarouselComponent {
1985
- get hostClasses() {
1986
- return {
1987
- carousel: true,
1988
- slide: true,
1989
- 'carousel-dark': !!this.dark,
1990
- 'carousel-fade': this.transition === 'crossfade'
1991
- };
1992
- }
1993
- #destroyRef;
2428
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselConfig }); }
2429
+ }
2430
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselConfig, decorators: [{
2431
+ type: Injectable
2432
+ }] });
2433
+
2434
+ class CarouselComponent {
1994
2435
  constructor(config, hostElement, carouselService, carouselState, intersectionService, listenersService) {
1995
2436
  this.config = config;
1996
2437
  this.hostElement = hostElement;
@@ -2052,6 +2493,14 @@ class CarouselComponent {
2052
2493
  this._visible = true;
2053
2494
  Object.assign(this, config);
2054
2495
  }
2496
+ get hostClasses() {
2497
+ return {
2498
+ carousel: true,
2499
+ slide: true,
2500
+ 'carousel-fade': this.transition === 'crossfade'
2501
+ };
2502
+ }
2503
+ #destroyRef;
2055
2504
  ngOnInit() {
2056
2505
  this.carouselStateSubscribe();
2057
2506
  }
@@ -2115,6 +2564,7 @@ class CarouselComponent {
2115
2564
  });
2116
2565
  }
2117
2566
  intersectionServiceSubscribe() {
2567
+ this.intersectionService.createIntersectionObserver(this.hostElement);
2118
2568
  this.intersectionService.intersecting$
2119
2569
  .pipe(filter(next => next.hostElement === this.hostElement), finalize(() => {
2120
2570
  this.intersectionService.unobserve(this.hostElement);
@@ -2123,7 +2573,6 @@ class CarouselComponent {
2123
2573
  this.visible = next.isIntersecting;
2124
2574
  next.isIntersecting ? this.setTimer() : this.resetTimer();
2125
2575
  });
2126
- this.intersectionService.createIntersectionObserver(this.hostElement);
2127
2576
  }
2128
2577
  swipeSubscribe(subscribe = true) {
2129
2578
  if (this.touch && subscribe) {
@@ -2147,11 +2596,13 @@ class CarouselComponent {
2147
2596
  }
2148
2597
  }
2149
2598
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselComponent, deps: [{ token: CarouselConfig }, { token: i0.ElementRef }, { token: CarouselService }, { token: CarouselState }, { token: IntersectionService }, { token: ListenersService }], target: i0.ɵɵFactoryTarget.Component }); }
2150
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CarouselComponent, isStandalone: true, selector: "c-carousel", inputs: { activeIndex: "activeIndex", animate: "animate", dark: "dark", direction: "direction", interval: "interval", pause: "pause", touch: "touch", transition: "transition", wrap: "wrap" }, outputs: { itemChange: "itemChange" }, host: { properties: { "class": "this.hostClasses" } }, providers: [CarouselService, CarouselState, CarouselConfig, ListenersService], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block}\n"] }); }
2599
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: CarouselComponent, isStandalone: true, selector: "c-carousel", inputs: { activeIndex: "activeIndex", animate: "animate", direction: "direction", interval: "interval", pause: "pause", touch: "touch", transition: "transition", wrap: "wrap" }, outputs: { itemChange: "itemChange" }, host: { properties: { "class": "this.hostClasses" } }, providers: [CarouselService, CarouselState, CarouselConfig, ListenersService], hostDirectives: [{ directive: ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] }); }
2151
2600
  }
2152
2601
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselComponent, decorators: [{
2153
2602
  type: Component,
2154
- args: [{ selector: 'c-carousel', template: '<ng-content></ng-content>', providers: [CarouselService, CarouselState, CarouselConfig, ListenersService], standalone: true, styles: [":host{display:block}\n"] }]
2603
+ args: [{ selector: 'c-carousel', template: '<ng-content />', providers: [CarouselService, CarouselState, CarouselConfig, ListenersService], standalone: true, hostDirectives: [
2604
+ { directive: ThemeDirective, inputs: ['dark'] }
2605
+ ], styles: [":host{display:block}\n"] }]
2155
2606
  }], ctorParameters: () => [{ type: CarouselConfig, decorators: [{
2156
2607
  type: Inject,
2157
2608
  args: [CarouselConfig]
@@ -2159,8 +2610,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
2159
2610
  type: Input
2160
2611
  }], animate: [{
2161
2612
  type: Input
2162
- }], dark: [{
2163
- type: Input
2164
2613
  }], direction: [{
2165
2614
  type: Input
2166
2615
  }], interval: [{
@@ -2307,11 +2756,11 @@ class CarouselIndicatorsComponent {
2307
2756
  }
2308
2757
  }
2309
2758
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselIndicatorsComponent, deps: [{ token: CarouselService }, { token: CarouselState }], target: i0.ɵɵFactoryTarget.Component }); }
2310
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: CarouselIndicatorsComponent, isStandalone: true, selector: "c-carousel-indicators", ngImport: i0, template: "<div class=\"carousel-indicators\">\n @for (item of items; track item; let i = $index) {\n <button\n [attr.data-coreui-target]=\"i\"\n type=\"button\"\n (click)=\"onClick(i)\"\n [class]=\"{ active: active === i }\"\n [attr.aria-current]=\"active === i\"\n ></button>\n }\n</div>\n" }); }
2759
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: CarouselIndicatorsComponent, isStandalone: true, selector: "c-carousel-indicators", ngImport: i0, template: "<div class=\"carousel-indicators\">\n @for (item of items; track item; let i = $index) {\n <button\n [attr.data-coreui-target]=\"i\"\n type=\"button\"\n (click)=\"onClick(i)\"\n [class]=\"{ active: active === i }\"\n [attr.aria-current]=\"active === i\">\n </button>\n }\n</div>\n" }); }
2311
2760
  }
2312
2761
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselIndicatorsComponent, decorators: [{
2313
2762
  type: Component,
2314
- args: [{ selector: 'c-carousel-indicators', standalone: true, template: "<div class=\"carousel-indicators\">\n @for (item of items; track item; let i = $index) {\n <button\n [attr.data-coreui-target]=\"i\"\n type=\"button\"\n (click)=\"onClick(i)\"\n [class]=\"{ active: active === i }\"\n [attr.aria-current]=\"active === i\"\n ></button>\n }\n</div>\n" }]
2763
+ args: [{ selector: 'c-carousel-indicators', standalone: true, template: "<div class=\"carousel-indicators\">\n @for (item of items; track item; let i = $index) {\n <button\n [attr.data-coreui-target]=\"i\"\n type=\"button\"\n (click)=\"onClick(i)\"\n [class]=\"{ active: active === i }\"\n [attr.aria-current]=\"active === i\">\n </button>\n }\n</div>\n" }]
2315
2764
  }], ctorParameters: () => [{ type: CarouselService }, { type: CarouselState }] });
2316
2765
 
2317
2766
  function toLeft(fromState, toState) {
@@ -2388,7 +2837,7 @@ class CarouselItemComponent {
2388
2837
  * @ignore
2389
2838
  */
2390
2839
  set active(value) {
2391
- this._active = coerceBooleanProperty(value);
2840
+ this._active = value;
2392
2841
  this.changeDetectorRef.markForCheck();
2393
2842
  }
2394
2843
  get active() {
@@ -2432,13 +2881,14 @@ class CarouselItemComponent {
2432
2881
  }
2433
2882
  }
2434
2883
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselItemComponent, deps: [{ token: CarouselService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: CarouselItemComponent, isStandalone: true, selector: "c-carousel-item", inputs: { active: "active", interval: "interval" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "@if (active) {\n <ng-content />\n}\n\n", styles: [":host{display:block}\n"] }); }
2884
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: CarouselItemComponent, isStandalone: true, selector: "c-carousel-item", inputs: { active: ["active", "active", booleanAttribute], interval: "interval" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: "<!--todo ngIf-->\n@if (active) {\n <ng-content />\n}\n", styles: [":host{display:block}\n"] }); }
2436
2885
  }
2437
2886
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CarouselItemComponent, decorators: [{
2438
2887
  type: Component,
2439
- args: [{ selector: 'c-carousel-item', standalone: true, template: "@if (active) {\n <ng-content />\n}\n\n", styles: [":host{display:block}\n"] }]
2888
+ args: [{ selector: 'c-carousel-item', standalone: true, template: "<!--todo ngIf-->\n@if (active) {\n <ng-content />\n}\n", styles: [":host{display:block}\n"] }]
2440
2889
  }], ctorParameters: () => [{ type: CarouselService }, { type: i0.ChangeDetectorRef }], propDecorators: { active: [{
2441
- type: Input
2890
+ type: Input,
2891
+ args: [{ transform: booleanAttribute }]
2442
2892
  }], interval: [{
2443
2893
  type: Input
2444
2894
  }], hostClasses: [{
@@ -2582,80 +3032,110 @@ class DropdownService {
2582
3032
  }
2583
3033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownService, decorators: [{
2584
3034
  type: Injectable
2585
- }], ctorParameters: () => [] });
3035
+ }] });
2586
3036
 
2587
3037
  class DropdownMenuDirective {
2588
- constructor(elementRef, dropdownService) {
2589
- this.elementRef = elementRef;
2590
- this.dropdownService = dropdownService;
3038
+ constructor() {
3039
+ this.#destroyRef = inject(DestroyRef);
3040
+ this.elementRef = inject(ElementRef);
3041
+ this.#dropdownService = inject(DropdownService);
2591
3042
  /**
2592
3043
  * Toggle the visibility of dropdown menu component.
2593
- */
2594
- this.visible = false;
2595
- /**
2596
- * Sets a darker color scheme to match a dark navbar.
2597
3044
  * @type boolean
2598
3045
  */
2599
- this.dark = false;
3046
+ this.visible = false;
2600
3047
  }
3048
+ #destroyRef;
3049
+ #dropdownService;
3050
+ #focusKeyManager;
2601
3051
  get hostClasses() {
2602
3052
  return {
2603
- 'dropdown-menu': true,
2604
- 'dropdown-menu-dark': this.dark,
2605
- [`dropdown-menu-${this.alignment}`]: !!this.alignment,
2606
- show: this.visible
3053
+ 'dropdown-menu': true, [`dropdown-menu-${this.alignment}`]: !!this.alignment, show: this.visible
2607
3054
  };
2608
3055
  }
2609
3056
  get hostStyles() {
2610
3057
  // workaround for popper position calculate (see also: dropdown.component)
2611
3058
  return {
2612
- visibility: this.visible ? null : '',
2613
- display: this.visible ? null : ''
3059
+ visibility: this.visible ? null : '', display: this.visible ? null : ''
2614
3060
  };
2615
3061
  }
2616
- ngOnInit() {
2617
- this.dropdownStateSubscribe();
2618
- }
2619
- ngOnDestroy() {
2620
- this.dropdownStateSubscribe(false);
3062
+ onKeyDown($event) {
3063
+ if (!this.visible) {
3064
+ return;
3065
+ }
3066
+ if (['Space', 'ArrowDown'].includes($event.code)) {
3067
+ $event.preventDefault();
3068
+ }
3069
+ this.#focusKeyManager.onKeydown($event);
2621
3070
  }
2622
- dropdownStateSubscribe(subscribe = true) {
2623
- if (subscribe) {
2624
- this.dropdownStateSubscription =
2625
- this.dropdownService.dropdownState$.subscribe((state) => {
2626
- if ('visible' in state) {
2627
- this.visible =
2628
- state.visible === 'toggle' ? !this.visible : state.visible;
2629
- }
2630
- });
3071
+ onKeyUp($event) {
3072
+ if (!this.visible) {
3073
+ return;
2631
3074
  }
2632
- else {
2633
- this.dropdownStateSubscription?.unsubscribe();
3075
+ if (['Tab'].includes($event.key)) {
3076
+ if (this.#focusKeyManager.activeItem) {
3077
+ $event.shiftKey ? this.#focusKeyManager.setPreviousItemActive() : this.#focusKeyManager.setNextItemActive();
3078
+ }
3079
+ else {
3080
+ this.#focusKeyManager.setFirstItemActive();
3081
+ }
2634
3082
  }
2635
3083
  }
2636
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownMenuDirective, deps: [{ token: i0.ElementRef }, { token: DropdownService }], target: i0.ɵɵFactoryTarget.Directive }); }
2637
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: DropdownMenuDirective, isStandalone: true, selector: "[cDropdownMenu]", inputs: { alignment: "alignment", visible: "visible", dark: ["dark", "dark", booleanAttribute] }, host: { properties: { "class": "this.hostClasses", "style": "this.hostStyles" } }, exportAs: ["cDropdownMenu"], ngImport: i0 }); }
3084
+ ngAfterContentInit() {
3085
+ this.focusKeyManagerInit();
3086
+ this.dropdownItemsContent.changes
3087
+ .pipe(tap((change) => {
3088
+ this.focusKeyManagerInit();
3089
+ }), takeUntilDestroyed(this.#destroyRef)).subscribe();
3090
+ }
3091
+ ngOnInit() {
3092
+ this.#dropdownService.dropdownState$
3093
+ .pipe(tap((state) => {
3094
+ if ('visible' in state) {
3095
+ this.visible = state.visible === 'toggle' ? !this.visible : state.visible;
3096
+ if (!this.visible) {
3097
+ this.#focusKeyManager?.setActiveItem(-1);
3098
+ }
3099
+ }
3100
+ }), takeUntilDestroyed(this.#destroyRef)).subscribe();
3101
+ }
3102
+ focusKeyManagerInit() {
3103
+ this.#focusKeyManager = new FocusKeyManager(this.dropdownItemsContent)
3104
+ .withHomeAndEnd()
3105
+ .withPageUpDown()
3106
+ .withWrap()
3107
+ .skipPredicate((dropdownItem) => (dropdownItem.disabled === true));
3108
+ }
3109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3110
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: DropdownMenuDirective, isStandalone: true, selector: "[cDropdownMenu]", inputs: { alignment: "alignment", visible: "visible" }, host: { listeners: { "keydown": "onKeyDown($event)", "keyup": "onKeyUp($event)" }, properties: { "class": "this.hostClasses", "style": "this.hostStyles" } }, queries: [{ propertyName: "dropdownItemsContent", predicate: i0.forwardRef(() => DropdownItemDirective), descendants: true }], exportAs: ["cDropdownMenu"], hostDirectives: [{ directive: ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0 }); }
2638
3111
  }
2639
3112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownMenuDirective, decorators: [{
2640
3113
  type: Directive,
2641
3114
  args: [{
2642
3115
  selector: '[cDropdownMenu]',
2643
3116
  exportAs: 'cDropdownMenu',
2644
- standalone: true
3117
+ standalone: true,
3118
+ hostDirectives: [{ directive: ThemeDirective, inputs: ['dark'] }]
2645
3119
  }]
2646
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: DropdownService }], propDecorators: { alignment: [{
3120
+ }], propDecorators: { alignment: [{
2647
3121
  type: Input
2648
3122
  }], visible: [{
2649
3123
  type: Input
2650
- }], dark: [{
2651
- type: Input,
2652
- args: [{ transform: booleanAttribute }]
2653
3124
  }], hostClasses: [{
2654
3125
  type: HostBinding,
2655
3126
  args: ['class']
2656
3127
  }], hostStyles: [{
2657
3128
  type: HostBinding,
2658
3129
  args: ['style']
3130
+ }], onKeyDown: [{
3131
+ type: HostListener,
3132
+ args: ['keydown', ['$event']]
3133
+ }], onKeyUp: [{
3134
+ type: HostListener,
3135
+ args: ['keyup', ['$event']]
3136
+ }], dropdownItemsContent: [{
3137
+ type: ContentChildren,
3138
+ args: [forwardRef(() => DropdownItemDirective), { descendants: true }]
2659
3139
  }] } });
2660
3140
 
2661
3141
  // lightweight injection token
@@ -2677,17 +3157,12 @@ class DropdownToggleDirective {
2677
3157
  * @type boolean
2678
3158
  */
2679
3159
  this.caret = true;
2680
- this._split = false;
2681
- }
2682
- /**
2683
- * Create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` class for proper spacing around the dropdown caret.
2684
- * @type boolean
2685
- */
2686
- set split(value) {
2687
- this._split = coerceBooleanProperty(value);
2688
- }
2689
- get split() {
2690
- return this._split;
3160
+ /**
3161
+ * Create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` class for proper spacing around the dropdown caret.
3162
+ * @type boolean
3163
+ * @default false
3164
+ */
3165
+ this.split = false;
2691
3166
  }
2692
3167
  get hostClasses() {
2693
3168
  return {
@@ -2707,7 +3182,7 @@ class DropdownToggleDirective {
2707
3182
  }
2708
3183
  }
2709
3184
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownToggleDirective, deps: [{ token: i0.ElementRef }, { token: DropdownService }, { token: DropdownToken, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
2710
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: DropdownToggleDirective, isStandalone: true, selector: "[cDropdownToggle]", inputs: { dropdownComponent: "dropdownComponent", disabled: "disabled", caret: "caret", split: "split" }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "this.hostClasses" } }, providers: [{ provide: DropdownToken, useExisting: forwardRef(() => DropdownComponent) }], exportAs: ["cDropdownToggle"], ngImport: i0 }); }
3185
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: DropdownToggleDirective, isStandalone: true, selector: "[cDropdownToggle]", inputs: { dropdownComponent: "dropdownComponent", disabled: ["disabled", "disabled", booleanAttribute], caret: "caret", split: ["split", "split", booleanAttribute] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class": "this.hostClasses" } }, providers: [{ provide: DropdownToken, useExisting: forwardRef(() => DropdownComponent) }], exportAs: ["cDropdownToggle"], ngImport: i0 }); }
2711
3186
  }
2712
3187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownToggleDirective, decorators: [{
2713
3188
  type: Directive,
@@ -2722,11 +3197,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
2722
3197
  }] }], propDecorators: { dropdownComponent: [{
2723
3198
  type: Input
2724
3199
  }], disabled: [{
2725
- type: Input
3200
+ type: Input,
3201
+ args: [{ transform: booleanAttribute }]
2726
3202
  }], caret: [{
2727
3203
  type: Input
2728
3204
  }], split: [{
2729
- type: Input
3205
+ type: Input,
3206
+ args: [{ transform: booleanAttribute }]
2730
3207
  }], hostClasses: [{
2731
3208
  type: HostBinding,
2732
3209
  args: ['class']
@@ -2743,13 +3220,17 @@ class DropdownComponent {
2743
3220
  this.changeDetectorRef = changeDetectorRef;
2744
3221
  this.dropdownService = dropdownService;
2745
3222
  this.autoClose = true;
2746
- this._dark = false;
2747
3223
  /**
2748
3224
  * Describes the placement of your component after Popper.js has applied all the modifiers that may have flipped or altered the originally provided placement property.
2749
3225
  * @type Placement
2750
3226
  */
2751
3227
  this.placement = 'bottom-start';
2752
- this._popper = true;
3228
+ /**
3229
+ * If you want to disable dynamic positioning set this property to `false`.
3230
+ * @type boolean
3231
+ * @default true
3232
+ */
3233
+ this.popper = true;
2753
3234
  this._popperOptions = {
2754
3235
  placement: this.placement,
2755
3236
  modifiers: [],
@@ -2766,29 +3247,6 @@ class DropdownComponent {
2766
3247
  this.listeners = [];
2767
3248
  this.dropdownStateSubscribe();
2768
3249
  }
2769
- /**
2770
- * Sets a darker color scheme to match a dark navbar.
2771
- * @type boolean
2772
- * @default false
2773
- */
2774
- set dark(value) {
2775
- this._dark = coerceBooleanProperty(value);
2776
- }
2777
- ;
2778
- get dark() {
2779
- return this._dark;
2780
- }
2781
- /**
2782
- * If you want to disable dynamic positioning set this property to `false`.
2783
- * @type boolean
2784
- * @default true
2785
- */
2786
- set popper(value) {
2787
- this._popper = coerceBooleanProperty(value);
2788
- }
2789
- get popper() {
2790
- return this._popper;
2791
- }
2792
3250
  /**
2793
3251
  * Optional popper Options object, placement prop takes precedence over
2794
3252
  * @type Partial<Options>
@@ -2833,7 +3291,7 @@ class DropdownComponent {
2833
3291
  * @default false
2834
3292
  */
2835
3293
  set visible(value) {
2836
- const _value = coerceBooleanProperty(value);
3294
+ const _value = value;
2837
3295
  if (_value !== this._visible) {
2838
3296
  this.activeTrap = _value;
2839
3297
  this._visible = _value;
@@ -2976,11 +3434,11 @@ class DropdownComponent {
2976
3434
  this.listeners = [];
2977
3435
  }
2978
3436
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownComponent, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: DropdownService }], target: i0.ɵɵFactoryTarget.Component }); }
2979
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: DropdownComponent, isStandalone: true, selector: "c-dropdown", inputs: { alignment: "alignment", autoClose: "autoClose", dark: "dark", direction: "direction", placement: "placement", popper: "popper", popperOptions: "popperOptions", variant: "variant", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class": "this.hostClasses", "style": "this.hostStyle" } }, providers: [DropdownService], queries: [{ propertyName: "_toggler", first: true, predicate: DropdownToggleDirective, descendants: true }, { propertyName: "_menu", first: true, predicate: DropdownMenuDirective, descendants: true }, { propertyName: "_menuElementRef", first: true, predicate: DropdownMenuDirective, descendants: true, read: ElementRef }], exportAs: ["cDropdown"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host-context(.dropdown,.dropup):not(.btn-group){display:block;min-width:fit-content}:host-context(.dropstart,.dropend):not(.btn-group){display:inline-flex}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host{direction:rtl}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }); }
3437
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: DropdownComponent, isStandalone: true, selector: "c-dropdown", inputs: { alignment: "alignment", autoClose: "autoClose", direction: "direction", placement: "placement", popper: ["popper", "popper", booleanAttribute], popperOptions: "popperOptions", variant: "variant", visible: ["visible", "visible", booleanAttribute] }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class": "this.hostClasses", "style": "this.hostStyle" } }, providers: [DropdownService], queries: [{ propertyName: "_toggler", first: true, predicate: DropdownToggleDirective, descendants: true }, { propertyName: "_menu", first: true, predicate: DropdownMenuDirective, descendants: true }, { propertyName: "_menuElementRef", first: true, predicate: DropdownMenuDirective, descendants: true, read: ElementRef }], exportAs: ["cDropdown"], usesOnChanges: true, hostDirectives: [{ directive: ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host-context(.dropdown,.dropup):not(.btn-group){display:block}:host-context(.dropstart,.dropend):not(.btn-group){display:inline-flex}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host{direction:rtl}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }); }
2980
3438
  }
2981
3439
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: DropdownComponent, decorators: [{
2982
3440
  type: Component,
2983
- args: [{ selector: 'c-dropdown', template: '<ng-content></ng-content>', exportAs: 'cDropdown', providers: [DropdownService], standalone: true, styles: [":host-context(.dropdown,.dropup):not(.btn-group){display:block;min-width:fit-content}:host-context(.dropstart,.dropend):not(.btn-group){display:inline-flex}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host{direction:rtl}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }]
3441
+ args: [{ selector: 'c-dropdown', template: '<ng-content />', exportAs: 'cDropdown', providers: [DropdownService], standalone: true, hostDirectives: [{ directive: ThemeDirective, inputs: ['dark'] }], styles: [":host-context(.dropdown,.dropup):not(.btn-group){display:block}:host-context(.dropstart,.dropend):not(.btn-group){display:inline-flex}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-right-radius:0;border-bottom-right-radius:0}:host-context(html:not([dir=rtl])) :host-context(.input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host{direction:rtl}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :first-child{border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:first-child::ng-deep :not(:first-child):not(.dropdown-menu):not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child{border-top-right-radius:0;border-bottom-right-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :first-child:not(:only-of-type){border-top-left-radius:0;border-bottom-left-radius:0}:host-context([dir=rtl] .input-group) :host:last-child::ng-deep :not(:first-child):not(.dropdown-menu){margin-right:-1px;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }]
2984
3442
  }], ctorParameters: () => [{ type: Document, decorators: [{
2985
3443
  type: Inject,
2986
3444
  args: [DOCUMENT]
@@ -2988,20 +3446,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
2988
3446
  type: Input
2989
3447
  }], autoClose: [{
2990
3448
  type: Input
2991
- }], dark: [{
2992
- type: Input
2993
3449
  }], direction: [{
2994
3450
  type: Input
2995
3451
  }], placement: [{
2996
3452
  type: Input
2997
3453
  }], popper: [{
2998
- type: Input
3454
+ type: Input,
3455
+ args: [{ transform: booleanAttribute }]
2999
3456
  }], popperOptions: [{
3000
3457
  type: Input
3001
3458
  }], variant: [{
3002
3459
  type: Input
3003
3460
  }], visible: [{
3004
- type: Input
3461
+ type: Input,
3462
+ args: [{ transform: booleanAttribute }]
3005
3463
  }], visibleChange: [{
3006
3464
  type: Output
3007
3465
  }], _toggler: [{
@@ -3025,6 +3483,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
3025
3483
  }] } });
3026
3484
 
3027
3485
  class DropdownItemDirective {
3486
+ #elementRef;
3028
3487
  constructor(dropdownService, dropdown) {
3029
3488
  this.dropdownService = dropdownService;
3030
3489
  this.dropdown = dropdown;
@@ -3034,8 +3493,15 @@ class DropdownItemDirective {
3034
3493
  * @default true
3035
3494
  */
3036
3495
  this.autoClose = true;
3496
+ this.#elementRef = inject(ElementRef);
3037
3497
  this._tabIndex = null;
3038
3498
  }
3499
+ focus(origin) {
3500
+ this.#elementRef?.nativeElement?.focus();
3501
+ }
3502
+ getLabel() {
3503
+ return this.#elementRef?.nativeElement?.textContent.trim();
3504
+ }
3039
3505
  get ariaCurrent() {
3040
3506
  return this.active ? 'true' : null;
3041
3507
  }
@@ -3558,9 +4024,10 @@ class FormCheckInputDirective {
3558
4024
  /**
3559
4025
  * Set component indeterminate state.
3560
4026
  * @type boolean
4027
+ * @default false
3561
4028
  */
3562
4029
  set indeterminate(value) {
3563
- const indeterminate = coerceBooleanProperty(value);
4030
+ const indeterminate = value;
3564
4031
  if (this._indeterminate !== indeterminate) {
3565
4032
  this._indeterminate = indeterminate;
3566
4033
  const htmlInputElement = this.hostElement.nativeElement;
@@ -3582,7 +4049,7 @@ class FormCheckInputDirective {
3582
4049
  };
3583
4050
  }
3584
4051
  set checked(value) {
3585
- const checked = coerceBooleanProperty(value);
4052
+ const checked = value;
3586
4053
  const htmlInputElement = this.hostElement?.nativeElement;
3587
4054
  if (htmlInputElement) {
3588
4055
  this.renderer.setProperty(htmlInputElement, 'checked', checked);
@@ -3603,7 +4070,7 @@ class FormCheckInputDirective {
3603
4070
  this._indeterminate = false;
3604
4071
  }
3605
4072
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: FormCheckInputDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
3606
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: FormCheckInputDirective, isStandalone: true, selector: "input[cFormCheckInput]", inputs: { type: "type", indeterminate: "indeterminate", valid: "valid", checked: "checked" }, host: { properties: { "attr.type": "this.type", "class": "this.hostClasses" } }, ngImport: i0 }); }
4073
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: FormCheckInputDirective, isStandalone: true, selector: "input[cFormCheckInput]", inputs: { type: "type", indeterminate: ["indeterminate", "indeterminate", booleanAttribute], valid: "valid", checked: ["checked", "checked", booleanAttribute] }, host: { properties: { "attr.type": "this.type", "class": "this.hostClasses" } }, ngImport: i0 }); }
3607
4074
  }
3608
4075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: FormCheckInputDirective, decorators: [{
3609
4076
  type: Directive,
@@ -3617,14 +4084,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
3617
4084
  }, {
3618
4085
  type: Input
3619
4086
  }], indeterminate: [{
3620
- type: Input
4087
+ type: Input,
4088
+ args: [{ transform: booleanAttribute }]
3621
4089
  }], valid: [{
3622
4090
  type: Input
3623
4091
  }], hostClasses: [{
3624
4092
  type: HostBinding,
3625
4093
  args: ['class']
3626
4094
  }], checked: [{
3627
- type: Input
4095
+ type: Input,
4096
+ args: [{ transform: booleanAttribute }]
3628
4097
  }] } });
3629
4098
 
3630
4099
  class FormControlDirective {
@@ -4025,14 +4494,14 @@ class RowDirective {
4025
4494
  const cols = this.xs;
4026
4495
  const classes = {
4027
4496
  row: true,
4028
- [`row-cols-${cols}`]: !!cols,
4497
+ [`row-cols-${cols}`]: !!cols
4029
4498
  };
4030
4499
  Object.keys(BreakpointInfix).forEach(breakpoint => {
4031
4500
  // @ts-ignore
4032
4501
  const value = this[breakpoint];
4033
4502
  if ((typeof value === 'number') || (typeof value === 'string')) {
4034
- const infix = breakpoint === 'xs' ? '' : breakpoint;
4035
- classes[`row-cols-${infix}-${value}`] = !!value;
4503
+ const infix = breakpoint === 'xs' ? '' : `-${breakpoint}`;
4504
+ classes[`row-cols${infix}-${value}`] = !!value;
4036
4505
  }
4037
4506
  });
4038
4507
  return classes;
@@ -4192,11 +4661,11 @@ class HeaderComponent {
4192
4661
  };
4193
4662
  }
4194
4663
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4195
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: HeaderComponent, isStandalone: true, selector: "c-header, [c-header]", inputs: { container: "container", position: "position", role: "role" }, host: { properties: { "attr.role": "this.role", "class": "this.getClasses" } }, ngImport: i0, template: "@if (!!container) {\n <div [ngClass]=\"headerClasses\">\n <ng-content />\n </div>\n} @else {\n <ng-content />\n}\n\n\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
4664
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: HeaderComponent, isStandalone: true, selector: "c-header, [c-header]", inputs: { container: "container", position: "position", role: "role" }, host: { properties: { "attr.role": "this.role", "class": "this.getClasses" } }, ngImport: i0, template: "@if (!!container) {\n <div [ngClass]=\"headerClasses\">\n <ng-content />\n </div>\n} @else {\n <ng-content />\n}\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
4196
4665
  }
4197
4666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: HeaderComponent, decorators: [{
4198
4667
  type: Component,
4199
- args: [{ selector: 'c-header, [c-header]', standalone: true, imports: [NgClass], template: "@if (!!container) {\n <div [ngClass]=\"headerClasses\">\n <ng-content />\n </div>\n} @else {\n <ng-content />\n}\n\n\n" }]
4668
+ args: [{ selector: 'c-header, [c-header]', standalone: true, imports: [NgClass], template: "@if (!!container) {\n <div [ngClass]=\"headerClasses\">\n <ng-content />\n </div>\n} @else {\n <ng-content />\n}\n" }]
4200
4669
  }], propDecorators: { container: [{
4201
4670
  type: Input
4202
4671
  }], position: [{
@@ -4693,11 +5162,11 @@ class NavComponent {
4693
5162
  };
4694
5163
  }
4695
5164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4696
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: NavComponent, isStandalone: true, selector: "c-nav", inputs: { layout: "layout", variant: "variant" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host .nav-link:focus{outline:0}\n"] }); }
5165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: NavComponent, isStandalone: true, selector: "c-nav", inputs: { layout: "layout", variant: "variant" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host .nav-link:focus{outline:0}:host.nav-underline-border{column-gap:0}\n"] }); }
4697
5166
  }
4698
5167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NavComponent, decorators: [{
4699
5168
  type: Component,
4700
- args: [{ selector: 'c-nav', template: `<ng-content></ng-content>`, standalone: true, styles: [":host .nav-link:focus{outline:0}\n"] }]
5169
+ args: [{ selector: 'c-nav', template: `<ng-content></ng-content>`, standalone: true, styles: [":host .nav-link:focus{outline:0}:host.nav-underline-border{column-gap:0}\n"] }]
4701
5170
  }], propDecorators: { layout: [{
4702
5171
  type: Input
4703
5172
  }], variant: [{
@@ -4738,18 +5207,12 @@ class NavbarComponent {
4738
5207
  constructor(hostElement, breakpointObserver) {
4739
5208
  this.hostElement = hostElement;
4740
5209
  this.breakpointObserver = breakpointObserver;
4741
- /**
4742
- * Sets if the color of text should be colored for a light or dark dark background.
4743
- */
4744
- this.colorScheme = 'light';
4745
5210
  this.role = 'navigation';
4746
5211
  }
4747
5212
  get hostClasses() {
4748
5213
  const expandClassSuffix = this.expand === true ? '' : `-${this.expand}`;
4749
5214
  return {
4750
5215
  navbar: true,
4751
- 'navbar-light': this.colorScheme === 'light',
4752
- 'navbar-dark': this.colorScheme === 'dark',
4753
5216
  [`navbar-expand${expandClassSuffix}`]: !!this.expand,
4754
5217
  [`bg-${this.color}`]: !!this.color,
4755
5218
  [`${this.placement}`]: !!this.placement
@@ -4783,15 +5246,15 @@ class NavbarComponent {
4783
5246
  }
4784
5247
  }
4785
5248
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NavbarComponent, deps: [{ token: i0.ElementRef }, { token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
4786
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: NavbarComponent, isStandalone: true, selector: "c-navbar", inputs: { color: "color", colorScheme: "colorScheme", container: "container", expand: "expand", placement: "placement", role: "role" }, host: { properties: { "attr.role": "this.role", "class": "this.hostClasses" } }, queries: [{ propertyName: "collapse", first: true, predicate: CollapseDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"container ? withContainerTemplate : noContainerTemplate\"></ng-container>\n\n<ng-template #withContainerTemplate>\n <div [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template #noContainerTemplate>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
5249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: NavbarComponent, isStandalone: true, selector: "c-navbar", inputs: { color: "color", container: "container", expand: "expand", placement: "placement", role: "role" }, host: { properties: { "attr.role": "this.role", "class": "this.hostClasses" } }, queries: [{ propertyName: "collapse", first: true, predicate: CollapseDirective, descendants: true }], hostDirectives: [{ directive: ThemeDirective, inputs: ["colorScheme", "colorScheme"] }], ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"container ? withContainerTemplate : noContainerTemplate\"></ng-container>\n\n<ng-template #withContainerTemplate>\n <div [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template #noContainerTemplate>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
4787
5250
  }
4788
5251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NavbarComponent, decorators: [{
4789
5252
  type: Component,
4790
- args: [{ selector: 'c-navbar', standalone: true, imports: [NgClass, NgTemplateOutlet], template: "<ng-container *ngTemplateOutlet=\"container ? withContainerTemplate : noContainerTemplate\"></ng-container>\n\n<ng-template #withContainerTemplate>\n <div [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template #noContainerTemplate>\n <ng-content></ng-content>\n</ng-template>\n" }]
5253
+ args: [{ selector: 'c-navbar', standalone: true, imports: [NgClass, NgTemplateOutlet], hostDirectives: [
5254
+ { directive: ThemeDirective, inputs: ['colorScheme'] }
5255
+ ], template: "<ng-container *ngTemplateOutlet=\"container ? withContainerTemplate : noContainerTemplate\"></ng-container>\n\n<ng-template #withContainerTemplate>\n <div [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</ng-template>\n\n<ng-template #noContainerTemplate>\n <ng-content></ng-content>\n</ng-template>\n" }]
4791
5256
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$2.BreakpointObserver }], propDecorators: { color: [{
4792
5257
  type: Input
4793
- }], colorScheme: [{
4794
- type: Input
4795
5258
  }], container: [{
4796
5259
  type: Input
4797
5260
  }], expand: [{
@@ -5756,7 +6219,7 @@ class OffcanvasComponent {
5756
6219
  }
5757
6220
  }
5758
6221
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: OffcanvasComponent, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: OffcanvasService }, { token: BackdropService }, { token: i1$2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
5759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: OffcanvasComponent, isStandalone: true, selector: "c-offcanvas", inputs: { backdrop: "backdrop", keyboard: ["keyboard", "keyboard", booleanAttribute], placement: "placement", responsive: "responsive", id: "id", role: "role", ariaModal: ["ariaModal", "ariaModal", booleanAttribute], scroll: ["scroll", "scroll", booleanAttribute], visible: ["visible", "visible", booleanAttribute] }, outputs: { visibleChange: "visibleChange" }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "@showHide.start": "animateStart($event)", "@showHide.done": "animateDone($event)", "document:keydown": "onKeyDownHandler($event)" }, properties: { "attr.role": "this.role", "attr.aria-modal": "this.ariaModal", "class": "this.hostClasses", "attr.aria-hidden": "this.ariaHidden", "attr.tabindex": "this.tabIndex", "@showHide": "this.animateTrigger" } }, exportAs: ["cOffcanvas"], ngImport: i0, template: "<div cdkTrapFocus cdkTrapFocusAutoCapture>\n <ng-content></ng-content>\n</div>\n\n", styles: [":host{display:none}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [
6222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: OffcanvasComponent, isStandalone: true, selector: "c-offcanvas", inputs: { backdrop: "backdrop", keyboard: ["keyboard", "keyboard", booleanAttribute], placement: "placement", responsive: "responsive", id: "id", role: "role", ariaModal: ["ariaModal", "ariaModal", booleanAttribute], scroll: ["scroll", "scroll", booleanAttribute], visible: ["visible", "visible", booleanAttribute] }, outputs: { visibleChange: "visibleChange" }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "@showHide.start": "animateStart($event)", "@showHide.done": "animateDone($event)", "document:keydown": "onKeyDownHandler($event)" }, properties: { "attr.role": "this.role", "attr.aria-modal": "this.ariaModal", "class": "this.hostClasses", "attr.aria-hidden": "this.ariaHidden", "attr.tabindex": "this.tabIndex", "@showHide": "this.animateTrigger" } }, exportAs: ["cOffcanvas"], hostDirectives: [{ directive: ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0, template: "<div cdkTrapFocus cdkTrapFocusAutoCapture>\n <ng-content></ng-content>\n</div>\n\n", styles: [":host{display:none}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [
5760
6223
  trigger('showHide', [
5761
6224
  state('visible', style({
5762
6225
  // visibility: 'visible'
@@ -5780,7 +6243,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
5780
6243
  })),
5781
6244
  transition('visible <=> *', [animate('300ms')])
5782
6245
  ])
5783
- ], exportAs: 'cOffcanvas', standalone: true, imports: [A11yModule], host: { ngSkipHydration: 'true' }, template: "<div cdkTrapFocus cdkTrapFocusAutoCapture>\n <ng-content></ng-content>\n</div>\n\n", styles: [":host{display:none}\n"] }]
6246
+ ], exportAs: 'cOffcanvas', standalone: true, imports: [A11yModule], hostDirectives: [
6247
+ { directive: ThemeDirective, inputs: ['dark'] }
6248
+ ], host: { ngSkipHydration: 'true' }, template: "<div cdkTrapFocus cdkTrapFocusAutoCapture>\n <ng-content></ng-content>\n</div>\n\n", styles: [":host{display:none}\n"] }]
5784
6249
  }], ctorParameters: () => [{ type: Document, decorators: [{
5785
6250
  type: Inject,
5786
6251
  args: [DOCUMENT]
@@ -6121,18 +6586,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
6121
6586
 
6122
6587
  class PlaceholderDirective {
6123
6588
  constructor() {
6124
- this._visible = false;
6125
- }
6126
- /**
6127
- * placeholder toggler
6128
- * @type boolean
6129
- * @default false
6130
- */
6131
- set visible(value) {
6132
- this._visible = coerceBooleanProperty(value);
6133
- }
6134
- get visible() {
6135
- return this._visible;
6589
+ /**
6590
+ * placeholder toggler
6591
+ * @type boolean
6592
+ * @default false
6593
+ */
6594
+ this.visible = false;
6136
6595
  }
6137
6596
  get ariaHidden() {
6138
6597
  return this.visible ? null : true;
@@ -6145,7 +6604,7 @@ class PlaceholderDirective {
6145
6604
  };
6146
6605
  }
6147
6606
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6148
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: PlaceholderDirective, isStandalone: true, selector: "[cPlaceholder]", inputs: { visible: ["cPlaceholder", "visible"], size: ["cPlaceholderSize", "size"] }, host: { properties: { "attr.aria-hidden": "this.ariaHidden", "class": "this.hostClasses" } }, exportAs: ["cPlaceholder"], ngImport: i0 }); }
6607
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: PlaceholderDirective, isStandalone: true, selector: "[cPlaceholder]", inputs: { visible: ["cPlaceholder", "visible", booleanAttribute], size: ["cPlaceholderSize", "size"] }, host: { properties: { "attr.aria-hidden": "this.ariaHidden", "class": "this.hostClasses" } }, exportAs: ["cPlaceholder"], ngImport: i0 }); }
6149
6608
  }
6150
6609
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PlaceholderDirective, decorators: [{
6151
6610
  type: Directive,
@@ -6154,9 +6613,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
6154
6613
  exportAs: 'cPlaceholder',
6155
6614
  standalone: true
6156
6615
  }]
6157
- }], ctorParameters: () => [], propDecorators: { visible: [{
6616
+ }], propDecorators: { visible: [{
6158
6617
  type: Input,
6159
- args: ['cPlaceholder']
6618
+ args: [{ alias: 'cPlaceholder', transform: booleanAttribute }]
6160
6619
  }], size: [{
6161
6620
  type: Input,
6162
6621
  args: ['cPlaceholderSize']
@@ -6361,7 +6820,7 @@ class PopoverDirective {
6361
6820
  {
6362
6821
  name: 'offset',
6363
6822
  options: {
6364
- offset: [0, 8]
6823
+ offset: [0, 9]
6365
6824
  }
6366
6825
  }
6367
6826
  ]
@@ -6536,136 +6995,91 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
6536
6995
  }]
6537
6996
  }] });
6538
6997
 
6539
- class ProgressComponent {
6998
+ class ProgressBarDirective {
6540
6999
  constructor() {
6541
- /**
6542
- * Sets the height of the component. If you set that value the inner `<CProgressBar>` will automatically resize accordingly.
6543
- * @type number
6544
- */
6545
- this.height = 0;
6546
- /**
6547
- * Displays thin progress.
6548
- * @type boolean
6549
- */
6550
- this.thin = false;
6551
- /**
6552
- * Change the default color to white.
6553
- * @type boolean
6554
- */
6555
- this.white = false;
6556
- }
6557
- get hostClasses() {
6558
- return {
6559
- progress: true,
6560
- 'progress-thin': this.thin,
6561
- 'progress-white': this.white
6562
- };
6563
- }
6564
- get hostStyle() {
6565
- return !!this.height ? `${this.height}px` : '';
6566
- }
6567
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6568
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: ProgressComponent, isStandalone: true, selector: "c-progress", inputs: { height: ["height", "height", numberAttribute], thin: ["thin", "thin", booleanAttribute], white: ["white", "white", booleanAttribute] }, host: { properties: { "class": "this.hostClasses", "style.height": "this.hostStyle" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
6569
- }
6570
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressComponent, decorators: [{
6571
- type: Component,
6572
- args: [{
6573
- selector: 'c-progress',
6574
- template: '<ng-content></ng-content>',
6575
- standalone: true
6576
- }]
6577
- }], propDecorators: { height: [{
6578
- type: Input,
6579
- args: [{ transform: numberAttribute }]
6580
- }], thin: [{
6581
- type: Input,
6582
- args: [{ transform: booleanAttribute }]
6583
- }], white: [{
6584
- type: Input,
6585
- args: [{ transform: booleanAttribute }]
6586
- }], hostClasses: [{
6587
- type: HostBinding,
6588
- args: ['class']
6589
- }], hostStyle: [{
6590
- type: HostBinding,
6591
- args: ['style.height']
6592
- }] } });
6593
-
6594
- class ProgressBarComponent {
6595
- constructor(renderer, hostElement) {
6596
- this.renderer = renderer;
6597
- this.hostElement = hostElement;
6598
- /**
6599
- * Use to animate the stripes right to left via CSS3 animations.
6600
- * @type boolean
6601
- */
6602
- this.animated = false;
7000
+ this.#renderer = inject(Renderer2);
7001
+ this.#hostElement = inject(ElementRef);
7002
+ this.#max = signal(100);
7003
+ this.#min = 0;
7004
+ this.#value = signal(undefined);
7005
+ this.#width = signal(undefined);
7006
+ this.percent = computed(() => {
7007
+ return +((((this.#value() ?? this.#width() ?? 0) - this.#min) / (this.#max() - this.#min)) * 100).toFixed(this.precision);
7008
+ });
7009
+ this.#valuesEffect = effect(() => {
7010
+ const host = this.#hostElement.nativeElement;
7011
+ if (this.#value() === undefined || this.#width()) {
7012
+ for (let name of ['aria-valuenow', 'aria-valuemax', 'aria-valuemin', 'role']) {
7013
+ this.#renderer.removeAttribute(host, name);
7014
+ }
7015
+ }
7016
+ else {
7017
+ this.#renderer.setAttribute(host, 'aria-valuenow', String(this.#value()));
7018
+ this.#renderer.setAttribute(host, 'aria-valuemin', String(this.#min));
7019
+ this.#renderer.setAttribute(host, 'aria-valuemax', String(this.#max()));
7020
+ this.#renderer.setAttribute(host, 'role', this.role);
7021
+ }
7022
+ const tagName = host.tagName;
7023
+ if (this.percent() && ((this.stacked && tagName === 'C-PROGRESS') || (!this.stacked && tagName !== 'C-PROGRESS'))) {
7024
+ this.#renderer.setStyle(host, 'width', `${this.percent()}%`);
7025
+ }
7026
+ else {
7027
+ this.#renderer.removeStyle(host, 'width');
7028
+ }
7029
+ });
6603
7030
  // TODO: check if this is necessary.
6604
7031
  this.precision = 0;
6605
7032
  /**
6606
- * The percent to progress the ProgressBar.
6607
- * @type number
7033
+ * Stacked ProgressBars.
7034
+ * @type boolean
7035
+ * @default false
6608
7036
  */
6609
- this.value = 0;
7037
+ this.stacked = false;
6610
7038
  /**
6611
7039
  * Set default html role attribute.
6612
7040
  * @type string
6613
7041
  */
6614
7042
  this.role = 'progressbar';
6615
- this.state = {
6616
- percent: 0,
6617
- min: 0,
6618
- max: 100
6619
- };
6620
- }
6621
- get min() {
6622
- return this.state.min;
6623
- }
6624
- set min(value) {
6625
- this.state.min = isNaN(value) ? 0 : value;
6626
- }
6627
- get max() {
6628
- return this.state.max;
6629
- }
6630
- set max(value) {
6631
- this.state.max = isNaN(value) || value <= 0 || value === this.min ? 100 : value;
6632
- }
6633
- get hostClasses() {
6634
- return {
6635
- 'progress-bar': true,
6636
- 'progress-bar-animated': this.animated,
6637
- [`progress-bar-${this.variant}`]: !!this.variant,
6638
- [`bg-${this.color}`]: !!this.color
6639
- };
6640
7043
  }
6641
- ngOnInit() {
6642
- this.setValues();
7044
+ #renderer;
7045
+ #hostElement;
7046
+ #max;
7047
+ #min;
7048
+ #value;
7049
+ #width;
7050
+ #valuesEffect;
7051
+ /**
7052
+ * The percent value the ProgressBar.
7053
+ * @type number
7054
+ * @default 0
7055
+ */
7056
+ set value(value) {
7057
+ this.#value.set(value);
6643
7058
  }
6644
- setPercent() {
6645
- this.state.percent = +((this.value / (this.max - this.min)) * 100).toFixed(this.precision);
7059
+ get value() {
7060
+ return this.#value();
6646
7061
  }
6647
- setValues() {
6648
- this.setPercent();
6649
- const host = this.hostElement.nativeElement;
6650
- this.renderer.setStyle(host, 'width', `${this.state.percent}%`);
6651
- this.renderer.setAttribute(host, 'aria-valuenow', String(this.value));
6652
- this.renderer.setAttribute(host, 'aria-valuemin', String(this.min));
6653
- this.renderer.setAttribute(host, 'aria-valuemax', String(this.max));
7062
+ set width(value) {
7063
+ this.#width.set(value);
6654
7064
  }
6655
- ngOnChanges(changes) {
6656
- this.setValues();
7065
+ /**
7066
+ * The max value of the ProgressBar.
7067
+ * @type number
7068
+ * @default 100
7069
+ */
7070
+ set max(max) {
7071
+ this.#max.set(isNaN(max) || max <= 0 ? 100 : max);
6657
7072
  }
6658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressBarComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
6659
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: ProgressBarComponent, isStandalone: true, selector: "c-progress-bar", inputs: { animated: ["animated", "animated", booleanAttribute], color: "color", precision: ["precision", "precision", numberAttribute], value: ["value", "value", numberAttribute], variant: "variant", role: "role", min: "min", max: "max" }, host: { properties: { "attr.role": "this.role", "class": "this.hostClasses" } }, usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
7073
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7074
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: ProgressBarDirective, isStandalone: true, selector: "[cProgressBar]", inputs: { animated: ["animated", "animated", booleanAttribute], color: "color", precision: ["precision", "precision", numberAttribute], value: ["value", "value", numberAttribute], width: ["width", "width", numberAttribute], variant: "variant", max: ["max", "max", numberAttribute], stacked: ["stacked", "stacked", booleanAttribute], role: "role" }, ngImport: i0 }); }
6660
7075
  }
6661
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressBarComponent, decorators: [{
6662
- type: Component,
7076
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressBarDirective, decorators: [{
7077
+ type: Directive,
6663
7078
  args: [{
6664
- selector: 'c-progress-bar',
6665
- template: '<ng-content></ng-content>',
7079
+ selector: '[cProgressBar]',
6666
7080
  standalone: true
6667
7081
  }]
6668
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { animated: [{
7082
+ }], ctorParameters: () => [], propDecorators: { animated: [{
6669
7083
  type: Input,
6670
7084
  args: [{ transform: booleanAttribute }]
6671
7085
  }], color: [{
@@ -6676,103 +7090,161 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
6676
7090
  }], value: [{
6677
7091
  type: Input,
6678
7092
  args: [{ transform: numberAttribute }]
7093
+ }], width: [{
7094
+ type: Input,
7095
+ args: [{ transform: numberAttribute }]
6679
7096
  }], variant: [{
6680
7097
  type: Input
6681
- }], role: [{
6682
- type: Input
6683
- }, {
6684
- type: HostBinding,
6685
- args: ['attr.role']
6686
- }], min: [{
6687
- type: Input
6688
7098
  }], max: [{
6689
- type: Input
6690
- }], hostClasses: [{
6691
- type: HostBinding,
6692
- args: ['class']
7099
+ type: Input,
7100
+ args: [{ transform: numberAttribute }]
7101
+ }], stacked: [{
7102
+ type: Input,
7103
+ args: [{ transform: booleanAttribute }]
7104
+ }], role: [{
7105
+ type: Input
6693
7106
  }] } });
6694
7107
 
6695
- class ProgressModule {
6696
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6697
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule, imports: [ProgressComponent,
6698
- ProgressBarComponent], exports: [ProgressComponent,
6699
- ProgressBarComponent] }); }
6700
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule }); }
7108
+ class ProgressBarComponent {
7109
+ #progressBarDirective = inject(ProgressBarDirective, { optional: true });
7110
+ get hostClasses() {
7111
+ const animated = this.#progressBarDirective?.animated;
7112
+ const color = this.#progressBarDirective?.color;
7113
+ const variant = this.#progressBarDirective?.variant;
7114
+ return {
7115
+ 'progress-bar': true,
7116
+ 'progress-bar-animated': !!animated,
7117
+ [`progress-bar-${variant}`]: !!variant,
7118
+ [`bg-${color}`]: !!color
7119
+ };
7120
+ }
7121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: ProgressBarComponent, isStandalone: true, selector: "c-progress-bar", host: { properties: { "class": "this.hostClasses" } }, hostDirectives: [{ directive: ProgressBarDirective, inputs: ["animated", "animated", "color", "color", "max", "max", "role", "role", "stacked", "stacked", "value", "value", "variant", "variant", "width", "width"] }], ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6701
7123
  }
6702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule, decorators: [{
6703
- type: NgModule,
7124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressBarComponent, decorators: [{
7125
+ type: Component,
6704
7126
  args: [{
6705
- exports: [
6706
- ProgressComponent,
6707
- ProgressBarComponent
6708
- ],
6709
- imports: [
6710
- ProgressComponent,
6711
- ProgressBarComponent
6712
- ]
7127
+ selector: 'c-progress-bar',
7128
+ template: '<ng-content />',
7129
+ standalone: true,
7130
+ hostDirectives: [{
7131
+ directive: ProgressBarDirective,
7132
+ inputs: ['animated', 'color', 'max', 'role', 'stacked', 'value', 'variant', 'width']
7133
+ }],
7134
+ changeDetection: ChangeDetectionStrategy.OnPush
6713
7135
  }]
6714
- }] });
7136
+ }], propDecorators: { hostClasses: [{
7137
+ type: HostBinding,
7138
+ args: ['class']
7139
+ }] } });
6715
7140
 
6716
- class SpinnerComponent {
7141
+ class ProgressStackedComponent {
7142
+ constructor() {
7143
+ this.stacked = true;
7144
+ }
7145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressStackedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7146
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: ProgressStackedComponent, isStandalone: true, selector: "c-progress-stacked", inputs: { stacked: "stacked" }, host: { properties: { "class.progress-stacked": "this.stacked" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7147
+ }
7148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressStackedComponent, decorators: [{
7149
+ type: Component,
7150
+ args: [{ selector: 'c-progress-stacked', standalone: true, template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:flex}\n"] }]
7151
+ }], propDecorators: { stacked: [{
7152
+ type: Input
7153
+ }, {
7154
+ type: HostBinding,
7155
+ args: ['class.progress-stacked']
7156
+ }] } });
7157
+
7158
+ class ProgressComponent {
7159
+ #stacked;
7160
+ #elementRef;
6717
7161
  constructor() {
7162
+ this.pbd = inject(ProgressBarDirective, { optional: true });
7163
+ this.#stacked = inject(ProgressStackedComponent, { optional: true })?.stacked;
7164
+ this.#elementRef = inject(ElementRef);
6718
7165
  /**
6719
- * Label for accessibility.
6720
- * @type string
6721
- * @default 'Loading...'
7166
+ * Sets the height of the component. If you set that value the inner `<CProgressBar>` will automatically resize accordingly.
7167
+ * @type number
6722
7168
  */
6723
- this.label = "Loading...";
7169
+ this.height = 0;
6724
7170
  /**
6725
- * Set the button variant to an outlined button or a ghost button.
6726
- * @values 'border' | 'grow'
6727
- * @default 'border'
7171
+ * Displays thin progress.
7172
+ * @type boolean
6728
7173
  */
6729
- this.variant = 'border';
6730
- this.role = 'status';
7174
+ this.thin = false;
7175
+ /**
7176
+ * Change the default color to white.
7177
+ * @type boolean
7178
+ */
7179
+ this.white = false;
7180
+ if (this.pbd) {
7181
+ this.pbd.stacked = this.#stacked;
7182
+ }
6731
7183
  }
6732
7184
  get hostClasses() {
6733
7185
  return {
6734
- [`spinner-${this.variant}`]: true,
6735
- [`text-${this.color}`]: !!this.color,
6736
- [`spinner-${this.variant}-${this.size}`]: !!this.size
7186
+ progress: true,
7187
+ 'progress-thin': this.thin,
7188
+ 'progress-white': this.white
6737
7189
  };
6738
7190
  }
6739
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6740
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: SpinnerComponent, isStandalone: true, selector: "c-spinner", inputs: { color: "color", label: "label", size: "size", variant: "variant", role: "role" }, host: { properties: { "attr.role": "this.role", "class": "this.hostClasses" } }, ngImport: i0, template: "<span class=\"visually-hidden\">{{label}}</span>\n" }); }
7191
+ get hostStyle() {
7192
+ return !!this.height ? `${this.height}px` : this.#elementRef?.nativeElement?.style?.height ?? undefined;
7193
+ }
7194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7195
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: ProgressComponent, isStandalone: true, selector: "c-progress", inputs: { height: ["height", "height", numberAttribute], thin: ["thin", "thin", booleanAttribute], white: ["white", "white", booleanAttribute] }, host: { properties: { "class": "this.hostClasses", "style.height": "this.hostStyle" } }, queries: [{ propertyName: "contentProgressBars", predicate: ProgressBarComponent }], hostDirectives: [{ directive: ProgressBarDirective, inputs: ["animated", "animated", "color", "color", "max", "max", "role", "role", "value", "value", "variant", "variant"] }], ngImport: i0, template: "@if (contentProgressBars.length) {\n <ng-container *ngTemplateOutlet=\"defaultContent\" />\n} @else if (pbd?.stacked) {\n <c-progress-bar [animated]=\"pbd?.animated\" [variant]=\"pbd?.variant\" [color]=\"pbd?.color\" stacked>\n <ng-container *ngTemplateOutlet=\"defaultContent\" />\n </c-progress-bar>\n} @else {\n <c-progress-bar [width]=\"pbd?.percent()\" [animated]=\"pbd?.animated\" [variant]=\"pbd?.variant\" [color]=\"pbd?.color\">\n <ng-container *ngTemplateOutlet=\"defaultContent\" />\n </c-progress-bar>\n}\n\n<ng-template #defaultContent>\n <ng-content />\n</ng-template>\n\n", styles: [":host-context(.progress-stacked).progress{transition:var(--cui-progress-bar-transition)}\n"], dependencies: [{ kind: "component", type: ProgressBarComponent, selector: "c-progress-bar" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6741
7196
  }
6742
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerComponent, decorators: [{
7197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressComponent, decorators: [{
6743
7198
  type: Component,
6744
- args: [{ selector: 'c-spinner', standalone: true, template: "<span class=\"visually-hidden\">{{label}}</span>\n" }]
6745
- }], propDecorators: { color: [{
6746
- type: Input
6747
- }], label: [{
6748
- type: Input
6749
- }], size: [{
6750
- type: Input
6751
- }], variant: [{
6752
- type: Input
6753
- }], role: [{
6754
- type: Input
6755
- }, {
6756
- type: HostBinding,
6757
- args: ['attr.role']
7199
+ args: [{ selector: 'c-progress', imports: [ProgressBarComponent, NgTemplateOutlet], standalone: true, hostDirectives: [{
7200
+ directive: ProgressBarDirective,
7201
+ inputs: ['animated', 'color', 'max', 'role', 'value', 'variant']
7202
+ }], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (contentProgressBars.length) {\n <ng-container *ngTemplateOutlet=\"defaultContent\" />\n} @else if (pbd?.stacked) {\n <c-progress-bar [animated]=\"pbd?.animated\" [variant]=\"pbd?.variant\" [color]=\"pbd?.color\" stacked>\n <ng-container *ngTemplateOutlet=\"defaultContent\" />\n </c-progress-bar>\n} @else {\n <c-progress-bar [width]=\"pbd?.percent()\" [animated]=\"pbd?.animated\" [variant]=\"pbd?.variant\" [color]=\"pbd?.color\">\n <ng-container *ngTemplateOutlet=\"defaultContent\" />\n </c-progress-bar>\n}\n\n<ng-template #defaultContent>\n <ng-content />\n</ng-template>\n\n", styles: [":host-context(.progress-stacked).progress{transition:var(--cui-progress-bar-transition)}\n"] }]
7203
+ }], ctorParameters: () => [], propDecorators: { contentProgressBars: [{
7204
+ type: ContentChildren,
7205
+ args: [ProgressBarComponent]
7206
+ }], height: [{
7207
+ type: Input,
7208
+ args: [{ transform: numberAttribute }]
7209
+ }], thin: [{
7210
+ type: Input,
7211
+ args: [{ transform: booleanAttribute }]
7212
+ }], white: [{
7213
+ type: Input,
7214
+ args: [{ transform: booleanAttribute }]
6758
7215
  }], hostClasses: [{
6759
7216
  type: HostBinding,
6760
7217
  args: ['class']
7218
+ }], hostStyle: [{
7219
+ type: HostBinding,
7220
+ args: ['style.height']
6761
7221
  }] } });
6762
7222
 
6763
- class SpinnerModule {
6764
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6765
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule, imports: [SpinnerComponent], exports: [SpinnerComponent] }); }
6766
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule }); }
7223
+ class ProgressModule {
7224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7225
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule, imports: [ProgressComponent,
7226
+ ProgressBarComponent,
7227
+ ProgressBarDirective,
7228
+ ProgressStackedComponent], exports: [ProgressComponent,
7229
+ ProgressBarComponent,
7230
+ ProgressBarDirective,
7231
+ ProgressStackedComponent] }); }
7232
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule }); }
6767
7233
  }
6768
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule, decorators: [{
7234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ProgressModule, decorators: [{
6769
7235
  type: NgModule,
6770
7236
  args: [{
6771
7237
  exports: [
6772
- SpinnerComponent
7238
+ ProgressComponent,
7239
+ ProgressBarComponent,
7240
+ ProgressBarDirective,
7241
+ ProgressStackedComponent
6773
7242
  ],
6774
7243
  imports: [
6775
- SpinnerComponent
7244
+ ProgressComponent,
7245
+ ProgressBarComponent,
7246
+ ProgressBarDirective,
7247
+ ProgressStackedComponent
6776
7248
  ]
6777
7249
  }]
6778
7250
  }] });
@@ -6852,48 +7324,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
6852
7324
  }] }, { type: SidebarService }] });
6853
7325
 
6854
7326
  class SidebarComponent {
6855
- #narrow;
6856
- #overlaid;
6857
- #unfoldable;
6858
7327
  #visible;
6859
7328
  #onMobile;
6860
7329
  #layoutChangeSubscription;
6861
7330
  #stateToggleSubscription;
6862
7331
  #stateInitial;
6863
- /**
6864
- * Make sidebar narrow. [docs]
6865
- * @type boolean
6866
- */
6867
- set narrow(value) {
6868
- this.#narrow = coerceBooleanProperty(value);
6869
- }
6870
- get narrow() {
6871
- return this.#narrow;
6872
- }
6873
- /**
6874
- * Set sidebar to overlaid variant.
6875
- * @type boolean
6876
- */
6877
- set overlaid(value) {
6878
- this.#overlaid = coerceBooleanProperty(value);
6879
- }
6880
- get overlaid() {
6881
- return this.#overlaid;
6882
- }
6883
- /**
6884
- * Expand narrowed sidebar on hover. [docs]
6885
- */
6886
- set unfoldable(value) {
6887
- this.#unfoldable = coerceBooleanProperty(value);
6888
- }
6889
- get unfoldable() {
6890
- return this.#unfoldable;
6891
- }
6892
7332
  /**
6893
7333
  * Toggle the visibility of sidebar component. [docs]
7334
+ * @type boolean
7335
+ * @default false
6894
7336
  */
6895
7337
  set visible(value) {
6896
- const visible = coerceBooleanProperty(value);
7338
+ const visible = value;
6897
7339
  if (this.#visible !== visible) {
6898
7340
  this.#visible = visible;
6899
7341
  this.visibleChange.emit(this.#visible);
@@ -6940,9 +7382,6 @@ class SidebarComponent {
6940
7382
  this.breakpointObserver = breakpointObserver;
6941
7383
  this.sidebarService = sidebarService;
6942
7384
  this.backdropService = backdropService;
6943
- this.#narrow = false;
6944
- this.#overlaid = false;
6945
- this.#unfoldable = false;
6946
7385
  this.#visible = false;
6947
7386
  this.#onMobile = false;
6948
7387
  this.state = {
@@ -6953,11 +7392,29 @@ class SidebarComponent {
6953
7392
  visible: false,
6954
7393
  unfoldable: false
6955
7394
  };
7395
+ /**
7396
+ * Make sidebar narrow. [docs]
7397
+ * @type boolean
7398
+ * @default false
7399
+ */
7400
+ this.narrow = false;
7401
+ /**
7402
+ * Set sidebar to overlaid variant.
7403
+ * @type boolean
7404
+ * @default false
7405
+ */
7406
+ this.overlaid = false;
6956
7407
  /**
6957
7408
  * Place sidebar in non-static positions. [docs]
6958
7409
  * @default 'fixed'
6959
7410
  */
6960
7411
  this.position = 'fixed';
7412
+ /**
7413
+ * Expand narrowed sidebar on hover. [docs]
7414
+ * @type boolean
7415
+ * @default false
7416
+ */
7417
+ this.unfoldable = false;
6961
7418
  /**
6962
7419
  * Event emitted on visibility change. [docs]
6963
7420
  * @type boolean
@@ -6973,8 +7430,11 @@ class SidebarComponent {
6973
7430
  'sidebar-narrow': this.narrow && !this.unfoldable,
6974
7431
  'sidebar-narrow-unfoldable': this.unfoldable,
6975
7432
  'sidebar-overlaid': this.overlaid,
7433
+ [`sidebar-${this.placement}`]: !!this.placement,
7434
+ [`sidebar-${this.colorScheme}`]: !!this.colorScheme,
6976
7435
  [`sidebar-${this.size}`]: !!this.size,
6977
- show: visible && this.#onMobile,
7436
+ show: visible,
7437
+ // show: visible && this.#onMobile, //todo: check
6978
7438
  hide: !visible
6979
7439
  };
6980
7440
  }
@@ -6995,7 +7455,7 @@ class SidebarComponent {
6995
7455
  for (const propName in changes) {
6996
7456
  if (propList.includes(propName)) {
6997
7457
  if (changes[propName] && !changes[propName].firstChange) {
6998
- const value = coerceBooleanProperty(changes[propName].currentValue);
7458
+ const value = booleanAttribute(changes[propName].currentValue);
6999
7459
  if (oldStateMap.get(propName) !== value) {
7000
7460
  newStateMap.set(propName, value);
7001
7461
  }
@@ -7054,14 +7514,14 @@ class SidebarComponent {
7054
7514
  }
7055
7515
  }
7056
7516
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i1$2.BreakpointObserver }, { token: SidebarService }, { token: SidebarBackdropService }], target: i0.ɵɵFactoryTarget.Component }); }
7057
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: SidebarComponent, isStandalone: true, selector: "c-sidebar", inputs: { colorScheme: "colorScheme", id: "id", narrow: "narrow", overlaid: "overlaid", placement: "placement", position: "position", size: "size", unfoldable: "unfoldable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "this.getClasses" } }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
7517
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: SidebarComponent, isStandalone: true, selector: "c-sidebar", inputs: { colorScheme: "colorScheme", id: "id", narrow: ["narrow", "narrow", booleanAttribute], overlaid: ["overlaid", "overlaid", booleanAttribute], placement: "placement", position: "position", size: "size", unfoldable: ["unfoldable", "unfoldable", booleanAttribute], visible: ["visible", "visible", booleanAttribute] }, outputs: { visibleChange: "visibleChange" }, host: { properties: { "class": "this.getClasses" } }, exportAs: ["cSidebar"], usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true }); }
7058
7518
  }
7059
7519
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarComponent, decorators: [{
7060
7520
  type: Component,
7061
7521
  args: [{
7062
7522
  selector: 'c-sidebar',
7063
7523
  exportAs: 'cSidebar',
7064
- template: '<ng-content></ng-content>',
7524
+ template: '<ng-content />',
7065
7525
  standalone: true
7066
7526
  }]
7067
7527
  }], ctorParameters: () => [{ type: Document, decorators: [{
@@ -7072,9 +7532,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7072
7532
  }], id: [{
7073
7533
  type: Input
7074
7534
  }], narrow: [{
7075
- type: Input
7535
+ type: Input,
7536
+ args: [{ transform: booleanAttribute }]
7076
7537
  }], overlaid: [{
7077
- type: Input
7538
+ type: Input,
7539
+ args: [{ transform: booleanAttribute }]
7078
7540
  }], placement: [{
7079
7541
  type: Input
7080
7542
  }], position: [{
@@ -7082,9 +7544,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7082
7544
  }], size: [{
7083
7545
  type: Input
7084
7546
  }], unfoldable: [{
7085
- type: Input
7547
+ type: Input,
7548
+ args: [{ transform: booleanAttribute }]
7086
7549
  }], visible: [{
7087
- type: Input
7550
+ type: Input,
7551
+ args: [{ transform: booleanAttribute }]
7088
7552
  }], visibleChange: [{
7089
7553
  type: Output
7090
7554
  }], getClasses: [{
@@ -7101,11 +7565,11 @@ class SidebarBrandComponent {
7101
7565
  this.brandImg = Boolean(this.brandFull || this.brandNarrow);
7102
7566
  }
7103
7567
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarBrandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarBrandComponent, isStandalone: true, selector: "c-sidebar-brand", inputs: { brandFull: "brandFull", brandNarrow: "brandNarrow", routerLink: "routerLink" }, host: { properties: { "class.sidebar-brand": "this.sidebarBrandClass" } }, ngImport: i0, template: "@if (brandImg) {\n <a [routerLink]=\"routerLink\">\n @if (brandFull) {\n <img [cHtmlAttr]=\"brandFull\"\n [ngClass]=\"'sidebar-brand-full'\">\n }\n @if (brandNarrow) {\n <img [cHtmlAttr]=\"brandNarrow\"\n [ngClass]=\"'sidebar-brand-narrow'\">\n }\n </a>\n} @else {\n <ng-content />\n}\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
7568
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarBrandComponent, isStandalone: true, selector: "c-sidebar-brand", inputs: { brandFull: "brandFull", brandNarrow: "brandNarrow", routerLink: "routerLink" }, host: { properties: { "class.sidebar-brand": "this.sidebarBrandClass" } }, ngImport: i0, template: "@if (brandImg) {\n <a [routerLink]=\"routerLink\">\n @if (brandFull) {\n <img [cHtmlAttr]=\"brandFull\" [ngClass]=\"'sidebar-brand-full'\">\n }\n @if (brandNarrow) {\n <img [cHtmlAttr]=\"brandNarrow\" [ngClass]=\"'sidebar-brand-narrow'\">\n }\n </a>\n} @else {\n <ng-content />\n}\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
7105
7569
  }
7106
7570
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarBrandComponent, decorators: [{
7107
7571
  type: Component,
7108
- args: [{ selector: 'c-sidebar-brand', standalone: true, imports: [RouterLink, HtmlAttributesDirective, NgClass], template: "@if (brandImg) {\n <a [routerLink]=\"routerLink\">\n @if (brandFull) {\n <img [cHtmlAttr]=\"brandFull\"\n [ngClass]=\"'sidebar-brand-full'\">\n }\n @if (brandNarrow) {\n <img [cHtmlAttr]=\"brandNarrow\"\n [ngClass]=\"'sidebar-brand-narrow'\">\n }\n </a>\n} @else {\n <ng-content />\n}\n" }]
7572
+ args: [{ selector: 'c-sidebar-brand', standalone: true, imports: [RouterLink, HtmlAttributesDirective, NgClass], template: "@if (brandImg) {\n <a [routerLink]=\"routerLink\">\n @if (brandFull) {\n <img [cHtmlAttr]=\"brandFull\" [ngClass]=\"'sidebar-brand-full'\">\n }\n @if (brandNarrow) {\n <img [cHtmlAttr]=\"brandNarrow\" [ngClass]=\"'sidebar-brand-narrow'\">\n }\n </a>\n} @else {\n <ng-content />\n}\n" }]
7109
7573
  }], propDecorators: { brandFull: [{
7110
7574
  type: Input
7111
7575
  }], brandNarrow: [{
@@ -7155,20 +7619,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7155
7619
  args: ['click', ['$event']]
7156
7620
  }] } });
7157
7621
 
7158
- class SidebarTogglerComponent {
7622
+ class SidebarTogglerDirective {
7159
7623
  constructor() {
7160
7624
  this.role = 'button';
7161
7625
  this.sidebarTogglerClass = true;
7162
7626
  }
7163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarTogglerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7164
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: SidebarTogglerComponent, isStandalone: true, selector: "c-sidebar-toggler", inputs: { role: "role" }, host: { properties: { "attr.role": "this.role", "class.sidebar-toggler": "this.sidebarTogglerClass" } }, ngImport: i0, template: ``, isInline: true }); }
7627
+ get getStyles() {
7628
+ return {
7629
+ appearance: 'button',
7630
+ 'align-items': 'flex-start',
7631
+ cursor: 'pointer'
7632
+ };
7633
+ }
7634
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarTogglerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7635
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: SidebarTogglerDirective, isStandalone: true, selector: "[cSidebarToggler]", inputs: { role: "role" }, host: { properties: { "attr.role": "this.role", "class.sidebar-toggler": "this.sidebarTogglerClass", "style": "this.getStyles" } }, hostDirectives: [{ directive: SidebarToggleDirective, inputs: ["cSidebarToggle", "cSidebarToggler", "toggle", "toggle"] }], ngImport: i0 }); }
7165
7636
  }
7166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarTogglerComponent, decorators: [{
7167
- type: Component,
7637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarTogglerDirective, decorators: [{
7638
+ type: Directive,
7168
7639
  args: [{
7169
- selector: 'c-sidebar-toggler',
7170
- template: ``,
7171
- standalone: true
7640
+ selector: '[cSidebarToggler]',
7641
+ standalone: true,
7642
+ hostDirectives: [{ directive: SidebarToggleDirective, inputs: ['cSidebarToggle: cSidebarToggler', 'toggle'] }]
7172
7643
  }]
7173
7644
  }], propDecorators: { role: [{
7174
7645
  type: HostBinding,
@@ -7178,6 +7649,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7178
7649
  }], sidebarTogglerClass: [{
7179
7650
  type: HostBinding,
7180
7651
  args: ['class.sidebar-toggler']
7652
+ }], getStyles: [{
7653
+ type: HostBinding,
7654
+ args: ['style']
7181
7655
  }] } });
7182
7656
 
7183
7657
  class SidebarHeaderComponent {
@@ -7428,7 +7902,7 @@ class SidebarNavLinkComponent {
7428
7902
  this.linkClick.emit();
7429
7903
  }
7430
7904
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavLinkComponent, deps: [{ token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
7431
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavLinkComponent, isStandalone: true, selector: "c-sidebar-nav-link", inputs: { item: "item" }, outputs: { linkClick: "linkClick" }, providers: [SidebarNavHelper], ngImport: i0, template: "@switch (linkType) {\n @case ('disabled') {\n <a [ngClass]=\"item | cSidebarNavLink\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n >\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @case ('external') {\n <a [ngClass]=\"item | cSidebarNavLink\"\n [href]=\"href\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n (click)=\"linkClicked()\"\n >\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @default {\n <a [ngClass]=\"item | cSidebarNavLink\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [target]=\"item.attributes?.['target']\"\n [queryParams]=\"item.linkProps?.queryParams ?? null\"\n [fragment]=\"item.linkProps?.fragment\"\n [queryParamsHandling]=\"item.linkProps?.queryParamsHandling\"\n [preserveFragment]=\"item.linkProps?.preserveFragment ?? false\"\n [skipLocationChange]=\"item.linkProps?.skipLocationChange ?? false\"\n [replaceUrl]=\"item.linkProps?.replaceUrl ?? false\"\n [state]=\"item.linkProps?.state ?? {}\"\n [routerLink]=\"item.url\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"item.linkProps?.routerLinkActiveOptions ?? { exact: false }\"\n (click)=\"linkClicked()\"\n >\n <!-- [class.active]=\"linkActive\"-->\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n}\n\n<ng-template #iconTemplate let-item>\n @if (item?.icon) {\n <i [ngClass]=\"item | cSidebarNavIcon\"></i>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [name]=\"item.iconComponent?.name\"\n [customClasses]=\"item | cSidebarNavIcon\"\n ></svg>\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.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", "size", "title", "customClasses", "width", "height", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SidebarNavLinkContentComponent, selector: "c-sidebar-nav-link-content", inputs: ["item"] }, { kind: "pipe", type: SidebarNavLinkPipe, name: "cSidebarNavLink" }, { kind: "pipe", type: SidebarNavBadgePipe, name: "cSidebarNavBadge" }, { kind: "pipe", type: SidebarNavIconPipe, name: "cSidebarNavIcon" }] }); }
7905
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavLinkComponent, isStandalone: true, selector: "c-sidebar-nav-link", inputs: { item: "item" }, outputs: { linkClick: "linkClick" }, providers: [SidebarNavHelper], ngImport: i0, template: "@switch (linkType) {\n @case ('disabled') {\n <a [cHtmlAttr]=\"item.attributes ?? {}\" [ngClass]=\"item | cSidebarNavLink\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @case ('external') {\n <a (click)=\"linkClicked()\" [cHtmlAttr]=\"item.attributes ?? {}\" [href]=\"href\" [ngClass]=\"item | cSidebarNavLink\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @default {\n <a (click)=\"linkClicked()\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [fragment]=\"item.linkProps?.fragment\"\n [ngClass]=\"item | cSidebarNavLink\"\n [preserveFragment]=\"item.linkProps?.preserveFragment ?? false\"\n [queryParamsHandling]=\"item.linkProps?.queryParamsHandling\"\n [queryParams]=\"item.linkProps?.queryParams ?? null\"\n [replaceUrl]=\"item.linkProps?.replaceUrl ?? false\"\n [routerLinkActiveOptions]=\"item.linkProps?.routerLinkActiveOptions ?? { exact: false }\"\n [routerLink]=\"item.url\"\n [skipLocationChange]=\"item.linkProps?.skipLocationChange ?? false\"\n [state]=\"item.linkProps?.state ?? {}\"\n [target]=\"item.attributes?.['target']\"\n routerLinkActive=\"active\"\n >\n <!-- [class.active]=\"linkActive\"-->\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n}\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [ngClass]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [ngClass]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"item.iconComponent?.name\"\n ></svg>\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.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", "size", "title", "customClasses", "width", "height", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "component", type: SidebarNavLinkContentComponent, selector: "c-sidebar-nav-link-content", inputs: ["item"] }, { kind: "pipe", type: SidebarNavLinkPipe, name: "cSidebarNavLink" }, { kind: "pipe", type: SidebarNavBadgePipe, name: "cSidebarNavBadge" }, { kind: "pipe", type: SidebarNavIconPipe, name: "cSidebarNavIcon" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
7432
7906
  }
7433
7907
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavLinkComponent, decorators: [{
7434
7908
  type: Component,
@@ -7436,13 +7910,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7436
7910
  RouterModule,
7437
7911
  HtmlAttributesDirective,
7438
7912
  IconDirective,
7439
- NgClass,
7440
- NgTemplateOutlet,
7441
7913
  SidebarNavLinkContentComponent,
7442
7914
  SidebarNavLinkPipe,
7443
7915
  SidebarNavBadgePipe,
7444
- SidebarNavIconPipe
7445
- ], template: "@switch (linkType) {\n @case ('disabled') {\n <a [ngClass]=\"item | cSidebarNavLink\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n >\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @case ('external') {\n <a [ngClass]=\"item | cSidebarNavLink\"\n [href]=\"href\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n (click)=\"linkClicked()\"\n >\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @default {\n <a [ngClass]=\"item | cSidebarNavLink\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [target]=\"item.attributes?.['target']\"\n [queryParams]=\"item.linkProps?.queryParams ?? null\"\n [fragment]=\"item.linkProps?.fragment\"\n [queryParamsHandling]=\"item.linkProps?.queryParamsHandling\"\n [preserveFragment]=\"item.linkProps?.preserveFragment ?? false\"\n [skipLocationChange]=\"item.linkProps?.skipLocationChange ?? false\"\n [replaceUrl]=\"item.linkProps?.replaceUrl ?? false\"\n [state]=\"item.linkProps?.state ?? {}\"\n [routerLink]=\"item.url\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"item.linkProps?.routerLinkActiveOptions ?? { exact: false }\"\n (click)=\"linkClicked()\"\n >\n <!-- [class.active]=\"linkActive\"-->\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n}\n\n<ng-template #iconTemplate let-item>\n @if (item?.icon) {\n <i [ngClass]=\"item | cSidebarNavIcon\"></i>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [name]=\"item.iconComponent?.name\"\n [customClasses]=\"item | cSidebarNavIcon\"\n ></svg>\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n" }]
7916
+ SidebarNavIconPipe,
7917
+ NgTemplateOutlet,
7918
+ NgClass
7919
+ ], template: "@switch (linkType) {\n @case ('disabled') {\n <a [cHtmlAttr]=\"item.attributes ?? {}\" [ngClass]=\"item | cSidebarNavLink\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @case ('external') {\n <a (click)=\"linkClicked()\" [cHtmlAttr]=\"item.attributes ?? {}\" [href]=\"href\" [ngClass]=\"item | cSidebarNavLink\">\n <ng-container *ngTemplateOutlet=\"iconTemplate; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n @default {\n <a (click)=\"linkClicked()\"\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [fragment]=\"item.linkProps?.fragment\"\n [ngClass]=\"item | cSidebarNavLink\"\n [preserveFragment]=\"item.linkProps?.preserveFragment ?? false\"\n [queryParamsHandling]=\"item.linkProps?.queryParamsHandling\"\n [queryParams]=\"item.linkProps?.queryParams ?? null\"\n [replaceUrl]=\"item.linkProps?.replaceUrl ?? false\"\n [routerLinkActiveOptions]=\"item.linkProps?.routerLinkActiveOptions ?? { exact: false }\"\n [routerLink]=\"item.url\"\n [skipLocationChange]=\"item.linkProps?.skipLocationChange ?? false\"\n [state]=\"item.linkProps?.state ?? {}\"\n [target]=\"item.attributes?.['target']\"\n routerLinkActive=\"active\"\n >\n <!-- [class.active]=\"linkActive\"-->\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <c-sidebar-nav-link-content [item]=\"item\" />\n @if (item.badge) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge?.text }}</span>\n }\n </a>\n }\n}\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [ngClass]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [ngClass]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"item.iconComponent?.name\"\n ></svg>\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n" }]
7446
7920
  }], ctorParameters: () => [{ type: i1$1.Router }], propDecorators: { item: [{
7447
7921
  type: Input
7448
7922
  }], linkClick: [{
@@ -7477,11 +7951,11 @@ class SidebarNavLabelComponent {
7477
7951
  return this.iconClasses;
7478
7952
  }
7479
7953
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavLabelComponent, deps: [{ token: SidebarNavHelper }], target: i0.ɵɵFactoryTarget.Component }); }
7480
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavLabelComponent, isStandalone: true, selector: "c-sidebar-nav-label", inputs: { item: "item" }, ngImport: i0, template: "<a [ngClass]=\"getItemClass()\"\n href=\"{{item.url}}\"\n [cHtmlAttr]=\"item.attributes\">\n @if (helper.hasIcon(item)) {\n <i [ngClass]=\"getLabelIconClass()\"></i>\n }\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge.text }}</span>\n }\n</a>\n", dependencies: [{ kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "pipe", type: SidebarNavBadgePipe, name: "cSidebarNavBadge" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
7954
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavLabelComponent, isStandalone: true, selector: "c-sidebar-nav-label", inputs: { item: "item" }, ngImport: i0, template: "<a [cHtmlAttr]=\"item.attributes\"\n [ngClass]=\"getItemClass()\"\n href=\"{{item.url}}\">\n @if (helper.hasIcon(item)) {\n <i [ngClass]=\"getLabelIconClass()\"></i>\n }\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge.text }}</span>\n }\n</a>\n", dependencies: [{ kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "pipe", type: SidebarNavBadgePipe, name: "cSidebarNavBadge" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
7481
7955
  }
7482
7956
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavLabelComponent, decorators: [{
7483
7957
  type: Component,
7484
- args: [{ selector: 'c-sidebar-nav-label', standalone: true, imports: [HtmlAttributesDirective, SidebarNavBadgePipe, NgClass], template: "<a [ngClass]=\"getItemClass()\"\n href=\"{{item.url}}\"\n [cHtmlAttr]=\"item.attributes\">\n @if (helper.hasIcon(item)) {\n <i [ngClass]=\"getLabelIconClass()\"></i>\n }\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge.text }}</span>\n }\n</a>\n" }]
7958
+ args: [{ selector: 'c-sidebar-nav-label', standalone: true, imports: [HtmlAttributesDirective, SidebarNavBadgePipe, NgClass], template: "<a [cHtmlAttr]=\"item.attributes\"\n [ngClass]=\"getItemClass()\"\n href=\"{{item.url}}\">\n @if (helper.hasIcon(item)) {\n <i [ngClass]=\"getLabelIconClass()\"></i>\n }\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.badge.text }}</span>\n }\n</a>\n" }]
7485
7959
  }], ctorParameters: () => [{ type: SidebarNavHelper }], propDecorators: { item: [{
7486
7960
  type: Input
7487
7961
  }] } });
@@ -7682,7 +8156,7 @@ class SidebarNavGroupComponent {
7682
8156
  }
7683
8157
  }
7684
8158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavGroupComponent, deps: [{ token: i1$1.Router }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: SidebarNavHelper }, { token: SidebarNavGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
7685
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavGroupComponent, isStandalone: true, selector: "c-sidebar-nav-group", inputs: { item: "item", dropdownMode: "dropdownMode", show: "show" }, host: { properties: { "class": "this.hostClasses" } }, providers: [SidebarNavHelper, SidebarNavGroupService], viewQueries: [{ propertyName: "sidebarNav", first: true, predicate: i0.forwardRef(() => SidebarNavComponent), descendants: true, read: ElementRef }], ngImport: i0, template: "<a (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"item.attributes\"\n class=\"nav-link nav-group-toggle\"\n href>\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.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 [dropdownMode]=\"dropdownMode\"\n [groupItems]=\"true\"\n [navItems]=\"navItems\"\n [ngStyle]=\"display\"\n/>\n\n<ng-template #iconTemplate let-item>\n @if (item?.icon) {\n <i [ngClass]=\"item | cSidebarNavIcon\"></i>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"item.iconComponent?.name\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"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", "size", "title", "customClasses", "width", "height", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavIconPipe), name: "cSidebarNavIcon" }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavBadgePipe), name: "cSidebarNavBadge" }, { kind: "component", type: i0.forwardRef(() => SidebarNavComponent), selector: "c-sidebar-nav", inputs: ["navItems", "dropdownMode", "groupItems", "compact"] }, { kind: "directive", type: i0.forwardRef(() => NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
8159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavGroupComponent, isStandalone: true, selector: "c-sidebar-nav-group", inputs: { item: "item", dropdownMode: "dropdownMode", show: "show", compact: ["compact", "compact", booleanAttribute] }, host: { properties: { "class": "this.hostClasses" } }, providers: [SidebarNavHelper, SidebarNavGroupService], viewQueries: [{ propertyName: "sidebarNav", first: true, predicate: i0.forwardRef(() => SidebarNavComponent), descendants: true, read: ElementRef }], ngImport: i0, template: "<a (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"item.attributes\"\n class=\"nav-link nav-group-toggle\"\n href>\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.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 [ngStyle]=\"display\"\n/>\n\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [ngClass]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [ngClass]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"item.iconComponent?.name\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"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", "size", "title", "customClasses", "width", "height", "name", "viewBox", "xmlns", "pointer-events", "role"], exportAs: ["cIcon"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavIconPipe), name: "cSidebarNavIcon" }, { kind: "pipe", type: i0.forwardRef(() => SidebarNavBadgePipe), name: "cSidebarNavBadge" }, { kind: "component", type: i0.forwardRef(() => SidebarNavComponent), selector: "c-sidebar-nav", inputs: ["navItems", "dropdownMode", "groupItems", "compact"] }, { kind: "directive", type: i0.forwardRef(() => NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
7686
8160
  trigger('openClose', [
7687
8161
  state('open', style({
7688
8162
  height: '*'
@@ -7719,13 +8193,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7719
8193
  animate('.15s ease')
7720
8194
  ])
7721
8195
  ])
7722
- ], template: "<a (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"item.attributes\"\n class=\"nav-link nav-group-toggle\"\n href>\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.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 [dropdownMode]=\"dropdownMode\"\n [groupItems]=\"true\"\n [navItems]=\"navItems\"\n [ngStyle]=\"display\"\n/>\n\n<ng-template #iconTemplate let-item>\n @if (item?.icon) {\n <i [ngClass]=\"item | cSidebarNavIcon\"></i>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"item.iconComponent?.name\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", styles: [".nav-group-toggle{cursor:pointer}.nav-group-items{display:block}\n"] }]
8196
+ ], template: "<a (click)=\"toggleGroup($event)\"\n [cHtmlAttr]=\"item.attributes\"\n class=\"nav-link nav-group-toggle\"\n href>\n <ng-container *ngTemplateOutlet=\"iconTemplate ; context: {$implicit: item}\" />\n <ng-container>{{ item.name }}</ng-container>\n @if (helper.hasBadge(item)) {\n <span [ngClass]=\"item | cSidebarNavBadge\">{{ item.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 [ngStyle]=\"display\"\n/>\n\n<ng-template #iconTemplate let-item>\n <!-- <i *ngIf=\"item?.icon\" [ngClass]=\"item | cSidebarNavIcon\"></i>-->\n @if (item?.icon) {\n <span class=\"nav-icon\">\n <span [ngClass]=\"item.icon ?? ''\"></span>\n </span>\n }\n @if (item?.iconComponent) {\n <svg\n [cIcon]=\"item.iconComponent?.content\"\n [customClasses]=\"item | cSidebarNavIcon\"\n [name]=\"item.iconComponent?.name\"\n />\n }\n @if (!item?.icon && !item?.iconComponent) {\n <span [ngClass]=\"item | cSidebarNavIcon\"></span>\n }\n</ng-template>\n", styles: [".nav-group-toggle{cursor:pointer}.nav-group-items{display:block}\n"] }]
7723
8197
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: SidebarNavHelper }, { type: SidebarNavGroupService }], propDecorators: { item: [{
7724
8198
  type: Input
7725
8199
  }], dropdownMode: [{
7726
8200
  type: Input
7727
8201
  }], show: [{
7728
8202
  type: Input
8203
+ }], compact: [{
8204
+ type: Input,
8205
+ args: [{ transform: booleanAttribute }]
7729
8206
  }], hostClasses: [{
7730
8207
  type: HostBinding,
7731
8208
  args: ['class']
@@ -7743,18 +8220,20 @@ class SidebarNavComponent {
7743
8220
  this.sidebarService = sidebarService;
7744
8221
  this.navItems = [];
7745
8222
  this.dropdownMode = 'path';
8223
+ // @HostBinding('class.nav-group-items')
8224
+ // get sidebarNavGroupItemsClass(): boolean {
8225
+ // return !!this.groupItems;
8226
+ // }
7746
8227
  this.role = 'nav';
7747
8228
  this.navItemsArray = [];
7748
8229
  }
7749
8230
  get hostClasses() {
7750
8231
  return {
7751
8232
  'sidebar-nav': !this.groupItems,
7752
- compact: !this.groupItems && !!this.compact
8233
+ 'nav-group-items': this.groupItems,
8234
+ compact: this.groupItems && this.compact
7753
8235
  };
7754
8236
  }
7755
- get sidebarNavGroupItemsClass() {
7756
- return !!this.groupItems;
7757
- }
7758
8237
  ngOnChanges(changes) {
7759
8238
  this.navItemsArray = Array.isArray(this.navItems) ? this.navItems.slice() : [];
7760
8239
  }
@@ -7765,7 +8244,7 @@ class SidebarNavComponent {
7765
8244
  }
7766
8245
  }
7767
8246
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavComponent, deps: [{ token: SidebarComponent, optional: true }, { token: SidebarNavHelper }, { token: i1$1.Router }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: SidebarService }], target: i0.ɵɵFactoryTarget.Component }); }
7768
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavComponent, isStandalone: true, selector: "c-sidebar-nav", inputs: { navItems: "navItems", dropdownMode: "dropdownMode", groupItems: "groupItems", compact: "compact" }, host: { properties: { "class": "this.hostClasses", "class.nav-group-items": "this.sidebarNavGroupItemsClass", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: "@for (item of navItemsArray; track item) {\n @switch (helper.itemType(item)) {\n @case ('group') {\n <c-sidebar-nav-group\n #rla=\"routerLinkActive\"\n [dropdownMode]=\"dropdownMode\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n routerLinkActive=\"show\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content />\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "component", type: SidebarNavLinkComponent, selector: "c-sidebar-nav-link", inputs: ["item"], outputs: ["linkClick"] }, { kind: "component", type: SidebarNavLabelComponent, selector: "c-sidebar-nav-label", inputs: ["item"] }, { kind: "component", type: SidebarNavTitleComponent, selector: "c-sidebar-nav-title", inputs: ["item"] }, { kind: "component", type: SidebarNavDividerComponent, selector: "c-sidebar-nav-divider", inputs: ["item"] }, { kind: "component", type: SidebarNavGroupComponent, selector: "c-sidebar-nav-group", inputs: ["item", "dropdownMode", "show"] }, { kind: "pipe", type: SidebarNavItemClassPipe, name: "cSidebarNavItemClass" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] }); }
8247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: SidebarNavComponent, isStandalone: true, selector: "c-sidebar-nav", inputs: { navItems: "navItems", dropdownMode: "dropdownMode", groupItems: ["groupItems", "groupItems", booleanAttribute], compact: ["compact", "compact", booleanAttribute] }, host: { properties: { "class": "this.hostClasses", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: "@for (item of navItemsArray; track item) {\n @switch (helper.itemType(item)) {\n @case ('group') {\n <c-sidebar-nav-group\n #rla=\"routerLinkActive\"\n [dropdownMode]=\"dropdownMode\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n routerLinkActive=\"show\"\n [compact]=\"compact\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: HtmlAttributesDirective, selector: "[cHtmlAttr]", inputs: ["cHtmlAttr"], exportAs: ["cHtmlAttr"] }, { kind: "component", type: SidebarNavLinkComponent, selector: "c-sidebar-nav-link", inputs: ["item"], outputs: ["linkClick"] }, { kind: "component", type: SidebarNavLabelComponent, selector: "c-sidebar-nav-label", inputs: ["item"] }, { kind: "component", type: SidebarNavTitleComponent, selector: "c-sidebar-nav-title", inputs: ["item"] }, { kind: "component", type: SidebarNavDividerComponent, selector: "c-sidebar-nav-divider", inputs: ["item"] }, { kind: "component", type: SidebarNavGroupComponent, selector: "c-sidebar-nav-group", inputs: ["item", "dropdownMode", "show", "compact"] }, { kind: "pipe", type: SidebarNavItemClassPipe, name: "cSidebarNavItemClass" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] }); }
7769
8248
  }
7770
8249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SidebarNavComponent, decorators: [{
7771
8250
  type: Component,
@@ -7779,7 +8258,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7779
8258
  SidebarNavGroupComponent,
7780
8259
  SidebarNavItemClassPipe,
7781
8260
  RouterModule
7782
- ], template: "@for (item of navItemsArray; track item) {\n @switch (helper.itemType(item)) {\n @case ('group') {\n <c-sidebar-nav-group\n #rla=\"routerLinkActive\"\n [dropdownMode]=\"dropdownMode\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n routerLinkActive=\"show\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content />\n" }]
8261
+ ], template: "@for (item of navItemsArray; track item) {\n @switch (helper.itemType(item)) {\n @case ('group') {\n <c-sidebar-nav-group\n #rla=\"routerLinkActive\"\n [dropdownMode]=\"dropdownMode\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n routerLinkActive=\"show\"\n [compact]=\"compact\"\n />\n }\n @case ('divider') {\n <c-sidebar-nav-divider\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('title') {\n <c-sidebar-nav-title\n [cHtmlAttr]=\"item.attributes ?? {}\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('label') {\n <c-sidebar-nav-label\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n @case ('empty') {\n <ng-container />\n }\n @default {\n <c-sidebar-nav-link\n (linkClick)=\"hideMobile()\"\n [item]=\"item\"\n [ngClass]=\"item | cSidebarNavItemClass\"\n />\n }\n }\n}\n<ng-content></ng-content>\n" }]
7783
8262
  }], ctorParameters: () => [{ type: SidebarComponent, decorators: [{
7784
8263
  type: Optional
7785
8264
  }] }, { type: SidebarNavHelper }, { type: i1$1.Router }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: SidebarService }], propDecorators: { navItems: [{
@@ -7787,15 +8266,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7787
8266
  }], dropdownMode: [{
7788
8267
  type: Input
7789
8268
  }], groupItems: [{
7790
- type: Input
8269
+ type: Input,
8270
+ args: [{ transform: booleanAttribute }]
7791
8271
  }], compact: [{
7792
- type: Input
8272
+ type: Input,
8273
+ args: [{ transform: booleanAttribute }]
7793
8274
  }], hostClasses: [{
7794
8275
  type: HostBinding,
7795
8276
  args: ['class']
7796
- }], sidebarNavGroupItemsClass: [{
7797
- type: HostBinding,
7798
- args: ['class.nav-group-items']
7799
8277
  }], role: [{
7800
8278
  type: HostBinding,
7801
8279
  args: ['attr.role']
@@ -7819,9 +8297,9 @@ class SidebarModule {
7819
8297
  SidebarNavLinkPipe,
7820
8298
  SidebarNavTitleComponent,
7821
8299
  SidebarToggleDirective,
7822
- SidebarTogglerComponent], exports: [SidebarComponent,
8300
+ SidebarTogglerDirective], exports: [SidebarComponent,
7823
8301
  SidebarToggleDirective,
7824
- SidebarTogglerComponent,
8302
+ SidebarTogglerDirective,
7825
8303
  SidebarBrandComponent,
7826
8304
  SidebarNavComponent,
7827
8305
  SidebarHeaderComponent,
@@ -7854,12 +8332,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7854
8332
  SidebarNavLinkPipe,
7855
8333
  SidebarNavTitleComponent,
7856
8334
  SidebarToggleDirective,
7857
- SidebarTogglerComponent
8335
+ SidebarTogglerDirective
7858
8336
  ],
7859
8337
  exports: [
7860
8338
  SidebarComponent,
7861
8339
  SidebarToggleDirective,
7862
- SidebarTogglerComponent,
8340
+ SidebarTogglerDirective,
7863
8341
  SidebarBrandComponent,
7864
8342
  SidebarNavComponent,
7865
8343
  SidebarHeaderComponent,
@@ -7873,6 +8351,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
7873
8351
  }]
7874
8352
  }] });
7875
8353
 
8354
+ class SpinnerComponent {
8355
+ constructor() {
8356
+ /**
8357
+ * Label for accessibility.
8358
+ * @type string
8359
+ * @default 'Loading...'
8360
+ */
8361
+ this.label = "Loading...";
8362
+ /**
8363
+ * Set the button variant to an outlined button or a ghost button.
8364
+ * @values 'border' | 'grow'
8365
+ * @default 'border'
8366
+ */
8367
+ this.variant = 'border';
8368
+ this.role = 'status';
8369
+ }
8370
+ get hostClasses() {
8371
+ return {
8372
+ [`spinner-${this.variant}`]: true,
8373
+ [`text-${this.color}`]: !!this.color,
8374
+ [`spinner-${this.variant}-${this.size}`]: !!this.size
8375
+ };
8376
+ }
8377
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8378
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: SpinnerComponent, isStandalone: true, selector: "c-spinner", inputs: { color: "color", label: "label", size: "size", variant: "variant", role: "role" }, host: { properties: { "attr.role": "this.role", "class": "this.hostClasses" } }, ngImport: i0, template: "<span class=\"visually-hidden\">{{label}}</span>\n" }); }
8379
+ }
8380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerComponent, decorators: [{
8381
+ type: Component,
8382
+ args: [{ selector: 'c-spinner', standalone: true, template: "<span class=\"visually-hidden\">{{label}}</span>\n" }]
8383
+ }], propDecorators: { color: [{
8384
+ type: Input
8385
+ }], label: [{
8386
+ type: Input
8387
+ }], size: [{
8388
+ type: Input
8389
+ }], variant: [{
8390
+ type: Input
8391
+ }], role: [{
8392
+ type: Input
8393
+ }, {
8394
+ type: HostBinding,
8395
+ args: ['attr.role']
8396
+ }], hostClasses: [{
8397
+ type: HostBinding,
8398
+ args: ['class']
8399
+ }] } });
8400
+
8401
+ class SpinnerModule {
8402
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8403
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule, imports: [SpinnerComponent], exports: [SpinnerComponent] }); }
8404
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule }); }
8405
+ }
8406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: SpinnerModule, decorators: [{
8407
+ type: NgModule,
8408
+ args: [{
8409
+ exports: [
8410
+ SpinnerComponent
8411
+ ],
8412
+ imports: [
8413
+ SpinnerComponent
8414
+ ]
8415
+ }]
8416
+ }] });
8417
+
7876
8418
  class TableColorDirective {
7877
8419
  get hostClasses() {
7878
8420
  return {
@@ -8086,7 +8628,7 @@ class TabPaneComponent {
8086
8628
  this.subscribeTabService();
8087
8629
  }
8088
8630
  set active(value) {
8089
- const newValue = coerceBooleanProperty(value);
8631
+ const newValue = booleanAttribute(value);
8090
8632
  if (this._active !== newValue) {
8091
8633
  this._active = newValue;
8092
8634
  this.changeDetectorRef.markForCheck();
@@ -8119,13 +8661,11 @@ class TabPaneComponent {
8119
8661
  }
8120
8662
  }
8121
8663
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TabPaneComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TabService }], target: i0.ɵɵFactoryTarget.Component }); }
8122
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TabPaneComponent, isStandalone: true, selector: "c-tab-pane", host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cTabPane"], ngImport: i0, template: `
8123
- <ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"] }); }
8664
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TabPaneComponent, isStandalone: true, selector: "c-tab-pane", host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cTabPane"], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] }); }
8124
8665
  }
8125
8666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TabPaneComponent, decorators: [{
8126
8667
  type: Component,
8127
- args: [{ selector: 'c-tab-pane', template: `
8128
- <ng-content></ng-content>`, exportAs: 'cTabPane', standalone: true, styles: [":host{display:block}\n"] }]
8668
+ args: [{ selector: 'c-tab-pane', template: '<ng-content />', exportAs: 'cTabPane', standalone: true, styles: [":host{display:block}\n"] }]
8129
8669
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: TabService }], propDecorators: { hostClasses: [{
8130
8670
  type: HostBinding,
8131
8671
  args: ['class']
@@ -8137,7 +8677,7 @@ class TabContentComponent {
8137
8677
  * @type number
8138
8678
  */
8139
8679
  set activeTabPaneIdx(value) {
8140
- const newValue = coerceNumberProperty(value);
8680
+ const newValue = value;
8141
8681
  if (this._activeTabPaneIdx != newValue) {
8142
8682
  this._activeTabPaneIdx = newValue;
8143
8683
  this.activeTabPaneIdxChange.emit(newValue);
@@ -8201,13 +8741,14 @@ class TabContentComponent {
8201
8741
  });
8202
8742
  }
8203
8743
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TabContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: TabService }], target: i0.ɵɵFactoryTarget.Component }); }
8204
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: TabContentComponent, isStandalone: true, selector: "c-tab-content", inputs: { activeTabPaneIdx: "activeTabPaneIdx" }, outputs: { activeTabPaneIdxChange: "activeTabPaneIdxChange" }, host: { properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["cTabContent"], usesOnChanges: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8744
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: TabContentComponent, isStandalone: true, selector: "c-tab-content", inputs: { activeTabPaneIdx: ["activeTabPaneIdx", "activeTabPaneIdx", numberAttribute] }, outputs: { activeTabPaneIdxChange: "activeTabPaneIdxChange" }, host: { properties: { "class": "this.hostClasses" } }, queries: [{ propertyName: "panes", predicate: TabPaneComponent }], exportAs: ["cTabContent"], usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8205
8745
  }
8206
8746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TabContentComponent, decorators: [{
8207
8747
  type: Component,
8208
- args: [{ selector: 'c-tab-content', template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cTabContent', standalone: true, styles: [":host{display:block}\n"] }]
8748
+ args: [{ selector: 'c-tab-content', template: '<ng-content />', changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cTabContent', standalone: true, styles: [":host{display:block}\n"] }]
8209
8749
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: TabService }], propDecorators: { activeTabPaneIdx: [{
8210
- type: Input
8750
+ type: Input,
8751
+ args: [{ transform: numberAttribute }]
8211
8752
  }], activeTabPaneIdxChange: [{
8212
8753
  type: Output
8213
8754
  }], panes: [{
@@ -8234,9 +8775,10 @@ class TabContentRefDirective {
8234
8775
  /**
8235
8776
  * Set active state of tab content
8236
8777
  * @type boolean
8778
+ * @default false
8237
8779
  */
8238
8780
  set active(value) {
8239
- const newValue = coerceBooleanProperty(value);
8781
+ const newValue = value;
8240
8782
  if (this._active !== newValue) {
8241
8783
  this._active = newValue;
8242
8784
  this.changeDetectorRef.detectChanges();
@@ -8250,7 +8792,7 @@ class TabContentRefDirective {
8250
8792
  * @type boolean
8251
8793
  */
8252
8794
  set disabled(value) {
8253
- this._disabled = coerceBooleanProperty(value);
8795
+ this._disabled = value;
8254
8796
  }
8255
8797
  get disabled() {
8256
8798
  return this._disabled || this.tabPaneIdx >= this.tabContentRef?.panes?.length;
@@ -8307,7 +8849,7 @@ class TabContentRefDirective {
8307
8849
  }
8308
8850
  }
8309
8851
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TabContentRefDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: TabService }], target: i0.ɵɵFactoryTarget.Directive }); }
8310
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: TabContentRefDirective, isStandalone: true, selector: "[cTabContent]", inputs: { tabContentRef: ["cTabContent", "tabContentRef"], active: "active", disabled: "disabled", tabPaneIdx: "tabPaneIdx" }, host: { listeners: { "click": "toggleOpen($event)" }, properties: { "class": "this.hostClasses", "attr.aria-disabled": "this.isDisabled", "attr.disabled": "this.attrDisabled", "attr.tabindex": "this.getTabindex" } }, usesOnChanges: true, ngImport: i0 }); }
8852
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.0", type: TabContentRefDirective, isStandalone: true, selector: "[cTabContent]", inputs: { tabContentRef: ["cTabContent", "tabContentRef"], active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], tabPaneIdx: ["tabPaneIdx", "tabPaneIdx", numberAttribute] }, host: { listeners: { "click": "toggleOpen($event)" }, properties: { "class": "this.hostClasses", "attr.aria-disabled": "this.isDisabled", "attr.disabled": "this.attrDisabled", "attr.tabindex": "this.getTabindex" } }, usesOnChanges: true, ngImport: i0 }); }
8311
8853
  }
8312
8854
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TabContentRefDirective, decorators: [{
8313
8855
  type: Directive,
@@ -8319,11 +8861,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
8319
8861
  type: Input,
8320
8862
  args: ['cTabContent']
8321
8863
  }], active: [{
8322
- type: Input
8864
+ type: Input,
8865
+ args: [{ transform: booleanAttribute }]
8323
8866
  }], disabled: [{
8324
- type: Input
8867
+ type: Input,
8868
+ args: [{ transform: booleanAttribute }]
8325
8869
  }], tabPaneIdx: [{
8326
- type: Input
8870
+ type: Input,
8871
+ args: [{ transform: numberAttribute }]
8327
8872
  }], hostClasses: [{
8328
8873
  type: HostBinding,
8329
8874
  args: ['class']
@@ -8432,7 +8977,7 @@ class ToastComponent {
8432
8977
  * @type boolean
8433
8978
  */
8434
8979
  set visible(value) {
8435
- const newValue = coerceBooleanProperty(value);
8980
+ const newValue = value;
8436
8981
  if (this._visible !== newValue) {
8437
8982
  this._visible = newValue;
8438
8983
  newValue ? this.setTimer() : this.clearTimer();
@@ -8522,7 +9067,7 @@ class ToastComponent {
8522
9067
  this.clockId = undefined;
8523
9068
  }
8524
9069
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ToastComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ToasterService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
8525
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.0", type: ToastComponent, isStandalone: true, selector: "c-toast", inputs: { autohide: "autohide", color: "color", delay: "delay", fade: "fade", visible: "visible", index: "index" }, outputs: { visibleChange: "visibleChange", timer: "timer" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" }, properties: { "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType", "class": "this.hostClasses" } }, exportAs: ["cToast"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block;overflow:hidden}\n"], animations: [
9070
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.0", type: ToastComponent, isStandalone: true, selector: "c-toast", inputs: { autohide: "autohide", color: "color", delay: ["delay", "delay", numberAttribute], fade: "fade", visible: ["visible", "visible", booleanAttribute], index: ["index", "index", numberAttribute] }, outputs: { visibleChange: "visibleChange", timer: "timer" }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" }, properties: { "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType", "class": "this.hostClasses" } }, exportAs: ["cToast"], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block;overflow:hidden}\n"], animations: [
8526
9071
  trigger('fadeInOut', [
8527
9072
  state('show', style({ opacity: 1, height: '*', padding: '*', border: '*', margin: '*' })),
8528
9073
  state('hide', style({ opacity: 0, height: 0, padding: 0, border: 0, margin: 0 })),
@@ -8546,7 +9091,7 @@ class ToastComponent {
8546
9091
  }
8547
9092
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ToastComponent, decorators: [{
8548
9093
  type: Component,
8549
- args: [{ selector: 'c-toast', template: '<ng-content></ng-content>', exportAs: 'cToast', standalone: true, animations: [
9094
+ args: [{ selector: 'c-toast', template: '<ng-content />', exportAs: 'cToast', standalone: true, animations: [
8550
9095
  trigger('fadeInOut', [
8551
9096
  state('show', style({ opacity: 1, height: '*', padding: '*', border: '*', margin: '*' })),
8552
9097
  state('hide', style({ opacity: 0, height: 0, padding: 0, border: 0, margin: 0 })),
@@ -8572,13 +9117,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
8572
9117
  }], color: [{
8573
9118
  type: Input
8574
9119
  }], delay: [{
8575
- type: Input
9120
+ type: Input,
9121
+ args: [{ transform: numberAttribute }]
8576
9122
  }], fade: [{
8577
9123
  type: Input
8578
9124
  }], visible: [{
8579
- type: Input
9125
+ type: Input,
9126
+ args: [{ transform: booleanAttribute }]
8580
9127
  }], index: [{
8581
- type: Input
9128
+ type: Input,
9129
+ args: [{ transform: numberAttribute }]
8582
9130
  }], visibleChange: [{
8583
9131
  type: Output
8584
9132
  }], timer: [{
@@ -8980,7 +9528,7 @@ class TooltipDirective {
8980
9528
  {
8981
9529
  name: 'offset',
8982
9530
  options: {
8983
- offset: [0, 0]
9531
+ offset: [0, 5]
8984
9532
  }
8985
9533
  }
8986
9534
  ]
@@ -9150,254 +9698,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
9150
9698
  }]
9151
9699
  }] });
9152
9700
 
9153
- class BgColorDirective {
9154
- get hostClasses() {
9155
- return {
9156
- [`bg-${this.color}`]: !!this.color,
9157
- 'bg-gradient': this.gradient,
9158
- };
9159
- }
9160
- constructor() {
9161
- /**
9162
- * Set the background of an element to any contextual class
9163
- */
9164
- this.color = '';
9165
- }
9166
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BgColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9167
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: BgColorDirective, isStandalone: true, selector: "[cBgColor]", inputs: { color: ["cBgColor", "color"], gradient: "gradient" }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9168
- }
9169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BgColorDirective, decorators: [{
9170
- type: Directive,
9171
- args: [{
9172
- selector: '[cBgColor]',
9173
- standalone: true
9174
- }]
9175
- }], ctorParameters: () => [], propDecorators: { color: [{
9176
- type: Input,
9177
- args: ['cBgColor']
9178
- }], gradient: [{
9179
- type: Input
9180
- }], hostClasses: [{
9181
- type: HostBinding,
9182
- args: ['class']
9183
- }] } });
9184
-
9185
- class BorderDirective {
9186
- constructor() {
9187
- /**
9188
- * Add or remove an element’s borders
9189
- * @type Border
9190
- */
9191
- this.border = true;
9192
- }
9193
- get hostClasses() {
9194
- if (typeof this.border === 'boolean') {
9195
- return { border: true };
9196
- }
9197
- if (typeof this.border === 'number' || typeof this.border === 'string') {
9198
- return {
9199
- border: true,
9200
- [`border-${this.border}`]: true
9201
- };
9202
- }
9203
- if (typeof this.border === 'object') {
9204
- const borderObj = { top: undefined, end: undefined, bottom: undefined, start: undefined, color: undefined, ...this.border };
9205
- // @ts-ignore
9206
- const keys = Object.keys(borderObj).filter(key => borderObj[key] !== undefined);
9207
- const classes = {};
9208
- keys.forEach(key => {
9209
- // @ts-ignore
9210
- const val = borderObj[key];
9211
- if (typeof val === 'boolean') {
9212
- // @ts-ignore
9213
- classes[`border-${key}`] = true;
9214
- }
9215
- else if (typeof val === 'number' || typeof val === 'string') {
9216
- // @ts-ignore
9217
- classes[`border-${key}-${val}`] = true;
9218
- }
9219
- else if (typeof val === 'object') {
9220
- if ('color' in val) {
9221
- // @ts-ignore
9222
- classes[`border-${key}-${val.color}`] = true;
9223
- }
9224
- if ('width' in val) {
9225
- // @ts-ignore
9226
- classes[`border-${key}-${val.width}`] = true;
9227
- }
9228
- }
9229
- });
9230
- return Object.entries(classes).length === 0 ? { border: false } : classes;
9231
- }
9232
- }
9233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BorderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9234
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: BorderDirective, isStandalone: true, selector: "[cBorder]", inputs: { border: ["cBorder", "border"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9235
- }
9236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: BorderDirective, decorators: [{
9237
- type: Directive,
9238
- args: [{
9239
- selector: '[cBorder]',
9240
- standalone: true
9241
- }]
9242
- }], propDecorators: { border: [{
9243
- type: Input,
9244
- args: ['cBorder']
9245
- }], hostClasses: [{
9246
- type: HostBinding,
9247
- args: ['class']
9248
- }] } });
9249
-
9250
- class TextColorDirective {
9251
- get hostClasses() {
9252
- const color = this.color;
9253
- return {
9254
- [`text-${color}`]: !!color
9255
- };
9256
- }
9257
- constructor() {
9258
- /**
9259
- * Set text-color of element
9260
- * @type TextColors
9261
- */
9262
- this.color = '';
9263
- }
9264
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TextColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9265
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: TextColorDirective, isStandalone: true, selector: "[cTextColor]", inputs: { color: ["cTextColor", "color"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9266
- }
9267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: TextColorDirective, decorators: [{
9268
- type: Directive,
9269
- args: [{
9270
- selector: '[cTextColor]',
9271
- standalone: true
9272
- }]
9273
- }], ctorParameters: () => [], propDecorators: { color: [{
9274
- type: Input,
9275
- args: ['cTextColor']
9276
- }], hostClasses: [{
9277
- type: HostBinding,
9278
- args: ['class']
9279
- }] } });
9280
-
9281
- class RoundedDirective {
9282
- constructor() {
9283
- /**
9284
- * Set border radius variant and radius size
9285
- * @type Rounded
9286
- */
9287
- this.rounded = true;
9288
- }
9289
- get hostClasses() {
9290
- if (typeof this.rounded === 'boolean') {
9291
- return { rounded: true };
9292
- }
9293
- if (typeof this.rounded === 'number' || typeof this.rounded === 'string') {
9294
- return {
9295
- [`rounded-${this.rounded}`]: true
9296
- };
9297
- }
9298
- if (typeof this.rounded === 'object') {
9299
- const roundedObj = {
9300
- top: undefined,
9301
- end: undefined,
9302
- bottom: undefined,
9303
- start: undefined,
9304
- circle: undefined,
9305
- pill: undefined,
9306
- size: undefined,
9307
- ...this.rounded,
9308
- };
9309
- // @ts-ignore
9310
- const keys = Object.keys(roundedObj).filter(key => roundedObj[key] !== undefined);
9311
- const classes = {};
9312
- keys.forEach(key => {
9313
- // @ts-ignore
9314
- const val = roundedObj[key];
9315
- if (typeof val === 'boolean') {
9316
- // @ts-ignore
9317
- classes[`rounded-${key}`] = val;
9318
- }
9319
- else {
9320
- // @ts-ignore
9321
- classes[`rounded-${val}`] = true;
9322
- }
9323
- });
9324
- // console.log('rounded keys', keys, classes);
9325
- return Object.entries(classes).length === 0 ? { rounded: false } : classes;
9326
- }
9327
- }
9328
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9329
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: RoundedDirective, isStandalone: true, selector: "[cRounded]", inputs: { rounded: ["cRounded", "rounded"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9330
- }
9331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: RoundedDirective, decorators: [{
9332
- type: Directive,
9333
- args: [{
9334
- selector: '[cRounded]',
9335
- standalone: true
9336
- }]
9337
- }], propDecorators: { rounded: [{
9338
- type: Input,
9339
- args: ['cRounded']
9340
- }], hostClasses: [{
9341
- type: HostBinding,
9342
- args: ['class']
9343
- }] } });
9344
-
9345
- class AlignDirective {
9346
- get hostClasses() {
9347
- return {
9348
- [`align-${this.align}`]: !!this.align,
9349
- };
9350
- }
9351
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AlignDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
9352
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: AlignDirective, isStandalone: true, selector: "[cAlign]", inputs: { align: ["cAlign", "align"] }, host: { properties: { "class": "this.hostClasses" } }, ngImport: i0 }); }
9353
- }
9354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: AlignDirective, decorators: [{
9355
- type: Directive,
9356
- args: [{
9357
- selector: '[cAlign]',
9358
- standalone: true
9359
- }]
9360
- }], propDecorators: { align: [{
9361
- type: Input,
9362
- args: ['cAlign']
9363
- }], hostClasses: [{
9364
- type: HostBinding,
9365
- args: ['class']
9366
- }] } });
9367
-
9368
- class UtilitiesModule {
9369
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9370
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule, imports: [BgColorDirective,
9371
- BorderDirective,
9372
- RoundedDirective,
9373
- TextColorDirective,
9374
- AlignDirective], exports: [BgColorDirective,
9375
- BorderDirective,
9376
- RoundedDirective,
9377
- TextColorDirective,
9378
- AlignDirective] }); }
9379
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule }); }
9380
- }
9381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UtilitiesModule, decorators: [{
9382
- type: NgModule,
9383
- args: [{
9384
- imports: [
9385
- BgColorDirective,
9386
- BorderDirective,
9387
- RoundedDirective,
9388
- TextColorDirective,
9389
- AlignDirective
9390
- ],
9391
- exports: [
9392
- BgColorDirective,
9393
- BorderDirective,
9394
- RoundedDirective,
9395
- TextColorDirective,
9396
- AlignDirective
9397
- ]
9398
- }]
9399
- }] });
9400
-
9401
9701
  class WidgetStatAComponent {
9402
9702
  constructor() {
9403
9703
  this.templates = {};
@@ -9406,7 +9706,7 @@ class WidgetStatAComponent {
9406
9706
  return {
9407
9707
  'card': true,
9408
9708
  [`bg-${this.color}`]: !!this.color,
9409
- 'text-high-emphasis-inverse': !!this.color
9709
+ 'text-white': !!this.color
9410
9710
  };
9411
9711
  }
9412
9712
  get bodyClasses() {
@@ -9456,15 +9756,15 @@ class WidgetStatBComponent extends CardComponent {
9456
9756
  'card': true,
9457
9757
  [`bg-${this.color}`]: !!this.color,
9458
9758
  [`text-${this.textColor}`]: !!this.textColor,
9459
- 'text-high-emphasis-inverse': !!this.color
9759
+ 'text-white': !!this.inverse
9460
9760
  };
9461
9761
  }
9462
9762
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: WidgetStatBComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9463
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: WidgetStatBComponent, isStandalone: true, selector: "c-widget-stat-b", inputs: { color: "color", textColor: "textColor", title: "title", text: "text", value: "value", inverse: ["inverse", "inverse", booleanAttribute] }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cWidgetStatB"], usesInheritance: true, ngImport: i0, template: "<c-card-body>\n @if (!!value) {\n <div class=\"fs-4 fw-semibold\">{{ value }}</div>\n }\n @if (!!title) {\n <div>{{ title }}</div>\n }\n <ng-content />\n @if (text) {\n <small [ngClass]=\"inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis'\">\n {{ text }}\n </small>\n }\n</c-card-body>\n", dependencies: [{ kind: "component", type: CardBodyComponent, selector: "c-card-body, [c-card-body]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
9763
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: WidgetStatBComponent, isStandalone: true, selector: "c-widget-stat-b", inputs: { color: "color", textColor: "textColor", title: "title", text: "text", value: "value", inverse: ["inverse", "inverse", booleanAttribute] }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cWidgetStatB"], usesInheritance: true, ngImport: i0, template: "<c-card-body>\n @if (!!value) {\n <div class=\"fs-4 fw-semibold\">{{ value }}</div>\n }\n @if (!!title) {\n <div>{{ title }}</div>\n }\n <ng-content />\n @if (text) {\n <small [ngClass]=\"inverse ? 'text-white text-opacity-75' : 'text-body-secondary'\">\n {{ text }}\n </small>\n }\n</c-card-body>\n", dependencies: [{ kind: "component", type: CardBodyComponent, selector: "c-card-body, [c-card-body]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
9464
9764
  }
9465
9765
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: WidgetStatBComponent, decorators: [{
9466
9766
  type: Component,
9467
- args: [{ selector: 'c-widget-stat-b', exportAs: 'cWidgetStatB', standalone: true, imports: [CardBodyComponent, NgClass], template: "<c-card-body>\n @if (!!value) {\n <div class=\"fs-4 fw-semibold\">{{ value }}</div>\n }\n @if (!!title) {\n <div>{{ title }}</div>\n }\n <ng-content />\n @if (text) {\n <small [ngClass]=\"inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis'\">\n {{ text }}\n </small>\n }\n</c-card-body>\n" }]
9767
+ args: [{ selector: 'c-widget-stat-b', exportAs: 'cWidgetStatB', standalone: true, imports: [CardBodyComponent, NgClass], template: "<c-card-body>\n @if (!!value) {\n <div class=\"fs-4 fw-semibold\">{{ value }}</div>\n }\n @if (!!title) {\n <div>{{ title }}</div>\n }\n <ng-content />\n @if (text) {\n <small [ngClass]=\"inverse ? 'text-white text-opacity-75' : 'text-body-secondary'\">\n {{ text }}\n </small>\n }\n</c-card-body>\n" }]
9468
9768
  }], ctorParameters: () => [], propDecorators: { color: [{
9469
9769
  type: Input
9470
9770
  }], textColor: [{
@@ -9495,22 +9795,14 @@ class WidgetStatCComponent extends CardComponent {
9495
9795
  }
9496
9796
  get hostExtendedClass() {
9497
9797
  return {
9498
- 'high-emphasis-inverse': this.inverse
9499
- };
9500
- }
9501
- get iconClasses() {
9502
- return {
9503
- 'mb-4': !this.textColor,
9504
- 'text-end': true,
9505
- 'text-medium-emphasis': !this.inverse,
9506
- 'text-medium-emphasis-inverse': this.inverse,
9507
- [`text-${this.textColor}`]: !!this.textColor
9798
+ 'text-white': this.inverse
9508
9799
  };
9509
9800
  }
9510
9801
  get titleClasses() {
9511
9802
  return {
9512
- 'text-medium-emphasis': !this.inverse,
9513
- 'text-medium-emphasis-inverse': this.inverse,
9803
+ 'text-body-secondary': !this.inverse,
9804
+ 'text-white': this.inverse,
9805
+ 'text-opacity-75': this.inverse,
9514
9806
  [`text-${this.textColor}`]: !!this.textColor
9515
9807
  };
9516
9808
  }
@@ -9518,9 +9810,15 @@ class WidgetStatCComponent extends CardComponent {
9518
9810
  return {
9519
9811
  'fs-4': !this.textColor,
9520
9812
  'fw-semibold': true,
9521
- 'text-high-emphasis': !this.inverse,
9522
- 'text-high-emphasis-inverse': this.inverse,
9523
- [`text-${this.textColor}`]: !!this.textColor
9813
+ ...this.titleClasses,
9814
+ 'text-opacity-75': false
9815
+ };
9816
+ }
9817
+ get iconClasses() {
9818
+ return {
9819
+ 'mb-4': !this.textColor,
9820
+ 'text-end': true,
9821
+ ...this.titleClasses
9524
9822
  };
9525
9823
  }
9526
9824
  ngAfterContentInit() {
@@ -9568,11 +9866,11 @@ class WidgetStatDComponent {
9568
9866
  };
9569
9867
  }
9570
9868
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: WidgetStatDComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9571
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: WidgetStatDComponent, isStandalone: true, selector: "c-widget-stat-d", inputs: { color: "color", values: "values" }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cWidgetStatD"], ngImport: i0, template: "<c-card-header [ngClass]=\"headerClasses\">\n <ng-content />\n</c-card-header>\n<c-card-body cRow class=\"text-center\">\n @for (item of values; track item; let i = $index) {\n @if (i % 2 !== 0) {\n <div class=\"vr\"></div>\n }\n <c-col>\n <div class=\"fs-5 fw-semibold\">{{ item.value }}</div>\n <div class=\"text-uppercase text-medium-emphasis small\">{{ item.title }}</div>\n </c-col>\n }\n</c-card-body>\n", dependencies: [{ kind: "component", type: CardHeaderComponent, selector: "c-card-header, [c-card-header]" }, { kind: "component", type: CardBodyComponent, selector: "c-card-body, [c-card-body]" }, { kind: "component", type: ColComponent, selector: "c-col" }, { kind: "directive", type: RowDirective, selector: "[cRow]", inputs: ["xs", "sm", "md", "lg", "xl", "xxl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
9869
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: WidgetStatDComponent, isStandalone: true, selector: "c-widget-stat-d", inputs: { color: "color", values: "values" }, host: { properties: { "class": "this.hostClasses" } }, exportAs: ["cWidgetStatD"], ngImport: i0, template: "<c-card-header [ngClass]=\"headerClasses\">\n <ng-content />\n</c-card-header>\n<c-card-body cRow class=\"text-center\">\n @for (item of values; track item; let i = $index) {\n @if (i % 2 !== 0) {\n <div class=\"vr\"></div>\n }\n <c-col>\n <div class=\"fs-5 fw-semibold\">{{ item.value }}</div>\n <div class=\"text-uppercase text-body-secondary small\">{{ item.title }}</div>\n </c-col>\n }\n</c-card-body>\n", dependencies: [{ kind: "component", type: CardHeaderComponent, selector: "c-card-header, [c-card-header]" }, { kind: "component", type: CardBodyComponent, selector: "c-card-body, [c-card-body]" }, { kind: "component", type: ColComponent, selector: "c-col" }, { kind: "directive", type: RowDirective, selector: "[cRow]", inputs: ["xs", "sm", "md", "lg", "xl", "xxl"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
9572
9870
  }
9573
9871
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: WidgetStatDComponent, decorators: [{
9574
9872
  type: Component,
9575
- args: [{ selector: 'c-widget-stat-d', exportAs: 'cWidgetStatD', standalone: true, imports: [CardHeaderComponent, CardBodyComponent, ColComponent, RowDirective, NgClass], template: "<c-card-header [ngClass]=\"headerClasses\">\n <ng-content />\n</c-card-header>\n<c-card-body cRow class=\"text-center\">\n @for (item of values; track item; let i = $index) {\n @if (i % 2 !== 0) {\n <div class=\"vr\"></div>\n }\n <c-col>\n <div class=\"fs-5 fw-semibold\">{{ item.value }}</div>\n <div class=\"text-uppercase text-medium-emphasis small\">{{ item.title }}</div>\n </c-col>\n }\n</c-card-body>\n" }]
9873
+ args: [{ selector: 'c-widget-stat-d', exportAs: 'cWidgetStatD', standalone: true, imports: [CardHeaderComponent, CardBodyComponent, ColComponent, RowDirective, NgClass], template: "<c-card-header [ngClass]=\"headerClasses\">\n <ng-content />\n</c-card-header>\n<c-card-body cRow class=\"text-center\">\n @for (item of values; track item; let i = $index) {\n @if (i % 2 !== 0) {\n <div class=\"vr\"></div>\n }\n <c-col>\n <div class=\"fs-5 fw-semibold\">{{ item.value }}</div>\n <div class=\"text-uppercase text-body-secondary small\">{{ item.title }}</div>\n </c-col>\n }\n</c-card-body>\n" }]
9576
9874
  }], ctorParameters: () => [], propDecorators: { color: [{
9577
9875
  type: Input
9578
9876
  }], values: [{
@@ -9588,7 +9886,7 @@ class WidgetStatEComponent extends CardComponent {
9588
9886
  }
9589
9887
  get titleClasses() {
9590
9888
  return {
9591
- 'text-medium-emphasis': !this.textColor,
9889
+ 'text-body-secondary': !this.textColor,
9592
9890
  'small': true,
9593
9891
  'text-uppercase': true,
9594
9892
  'fw-semibold': true,
@@ -9639,7 +9937,7 @@ class WidgetStatFComponent {
9639
9937
  }
9640
9938
  get titleClasses() {
9641
9939
  return {
9642
- 'text-medium-emphasis': !this.textColor,
9940
+ 'text-body-secondary': !this.textColor,
9643
9941
  'small': true,
9644
9942
  'text-uppercase': true,
9645
9943
  'fw-semibold': true,
@@ -9732,5 +10030,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
9732
10030
  * Generated bundle index. Do not edit.
9733
10031
  */
9734
10032
 
9735
- 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, ContainerComponent, DropdownCloseDirective, DropdownComponent, DropdownDividerDirective, DropdownHeaderDirective, DropdownItemDirective, DropdownItemPlainDirective, DropdownMenuDirective, DropdownModule, DropdownService, DropdownToggleDirective, 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, InputGroupComponent, InputGroupTextDirective, IntersectionService, ListGroupDirective, ListGroupItemDirective, ListGroupModule, ListenersService, 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, ProgressComponent, ProgressModule, RoundedDirective, RowComponent, RowDirective, SharedModule, SidebarBrandComponent, SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent, SidebarModule, SidebarNavComponent, SidebarNavHelper, SidebarService, SidebarToggleDirective, SidebarTogglerComponent, SpinnerComponent, SpinnerModule, TabContentComponent, TabContentRefDirective, TabPaneComponent, TabService, TableActiveDirective, TableColorDirective, TableDirective, TableModule, TabsModule, TemplateIdDirective, TextColorDirective, ToastBodyComponent, ToastCloseDirective, ToastComponent, ToastHeaderComponent, ToastModule, ToasterComponent, ToasterHostDirective, ToasterPlacement, ToasterService, TooltipComponent, TooltipDirective, TooltipModule, UtilitiesModule, WidgetModule, WidgetStatAComponent, WidgetStatBComponent, WidgetStatCComponent, WidgetStatDComponent, WidgetStatEComponent, WidgetStatFComponent };
10033
+ 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, 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, ShadowOnScrollDirective, SharedModule, SidebarBrandComponent, SidebarComponent, SidebarFooterComponent, SidebarHeaderComponent, SidebarModule, SidebarNavComponent, SidebarNavHelper, SidebarService, SidebarToggleDirective, SidebarTogglerDirective, SpinnerComponent, SpinnerModule, TabContentComponent, TabContentRefDirective, TabPaneComponent, TabService, TableActiveDirective, TableColorDirective, TableDirective, TableModule, TabsModule, TemplateIdDirective, TextColorDirective, ThemeDirective, ToastBodyComponent, ToastCloseDirective, ToastComponent, ToastHeaderComponent, ToastModule, ToasterComponent, ToasterHostDirective, ToasterPlacement, ToasterService, TooltipComponent, TooltipDirective, TooltipModule, UtilitiesModule, WidgetModule, WidgetStatAComponent, WidgetStatBComponent, WidgetStatCComponent, WidgetStatDComponent, WidgetStatEComponent, WidgetStatFComponent };
9736
10034
  //# sourceMappingURL=coreui-angular.mjs.map