@koobiq/components 19.4.1 → 19.5.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 (171) hide show
  1. package/LICENSE +1 -1
  2. package/accordion/accordion-content.d.ts +1 -1
  3. package/accordion/accordion-content.directive.d.ts +18 -7
  4. package/accordion/accordion-header.directive.d.ts +2 -2
  5. package/accordion/accordion-item.d.ts +74 -3
  6. package/accordion/accordion-trigger.component.d.ts +15 -2
  7. package/accordion/accordion-trigger.directive.d.ts +9 -5
  8. package/accordion/accordion.component.d.ts +67 -6
  9. package/accordion/accordion.component.scss +9 -27
  10. package/accordion/public-api.d.ts +0 -2
  11. package/checkbox/checkbox.scss +5 -5
  12. package/clamped-text/clamped-list.d.ts +41 -0
  13. package/clamped-text/clamped-text.d.ts +10 -6
  14. package/clamped-text/constants.d.ts +21 -1
  15. package/clamped-text/index.d.ts +1 -0
  16. package/clamped-text/module.d.ts +2 -1
  17. package/code-block/code-block.d.ts +10 -3
  18. package/code-block/code-block.module.d.ts +1 -1
  19. package/code-block/code-block.scss +1 -0
  20. package/code-block/types.d.ts +9 -0
  21. package/core/common-behaviors/flex.d.ts +4 -0
  22. package/core/common-behaviors/index.d.ts +1 -0
  23. package/core/form-field/form-field-ref.d.ts +3 -1
  24. package/core/locales/en-US.d.ts +2 -0
  25. package/core/locales/es-LA.d.ts +2 -0
  26. package/core/locales/locale-service.d.ts +10 -0
  27. package/core/locales/pt-BR.d.ts +2 -0
  28. package/core/locales/ru-RU.d.ts +2 -0
  29. package/core/locales/tk-TM.d.ts +2 -0
  30. package/core/locales/types.d.ts +2 -0
  31. package/core/option/_option-theme.scss +4 -17
  32. package/core/option/option.d.ts +5 -1
  33. package/core/pop-up/pop-up-trigger.d.ts +10 -1
  34. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +2 -2
  35. package/core/styles/common/_overlay.scss +1 -1
  36. package/dropdown/dropdown.component.d.ts +2 -1
  37. package/fesm2022/koobiq-components-accordion.mjs +278 -236
  38. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
  40. package/fesm2022/koobiq-components-alert.mjs +16 -16
  41. package/fesm2022/koobiq-components-app-switcher.mjs +19 -19
  42. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
  44. package/fesm2022/koobiq-components-badge.mjs +13 -13
  45. package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
  46. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
  48. package/fesm2022/koobiq-components-button.mjs +13 -13
  49. package/fesm2022/koobiq-components-checkbox.mjs +11 -11
  50. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-clamped-text.mjs +134 -47
  52. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-code-block.mjs +35 -16
  54. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-content-panel.mjs +28 -28
  56. package/fesm2022/koobiq-components-core.mjs +267 -233
  57. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-datepicker.mjs +40 -40
  59. package/fesm2022/koobiq-components-divider.mjs +7 -7
  60. package/fesm2022/koobiq-components-dl.mjs +13 -13
  61. package/fesm2022/koobiq-components-dropdown.mjs +29 -21
  62. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  63. package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
  64. package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
  65. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  66. package/fesm2022/koobiq-components-file-upload.mjs +39 -39
  67. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  68. package/fesm2022/koobiq-components-filter-bar.mjs +88 -88
  69. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-form-field.mjs +68 -63
  71. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-icon.mjs +14 -14
  73. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-inline-edit.mjs +26 -16
  75. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-input.mjs +28 -26
  77. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-link.mjs +13 -7
  79. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-list.mjs +19 -19
  81. package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
  82. package/fesm2022/koobiq-components-markdown.mjs +10 -10
  83. package/fesm2022/koobiq-components-modal.mjs +90 -63
  84. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-navbar-ic.mjs +34 -34
  86. package/fesm2022/koobiq-components-navbar.mjs +51 -44
  87. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-notification-center.mjs +16 -16
  89. package/fesm2022/koobiq-components-overflow-items.mjs +29 -17
  90. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-popover.mjs +16 -16
  92. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  93. package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
  94. package/fesm2022/koobiq-components-radio.mjs +10 -10
  95. package/fesm2022/koobiq-components-resizer.mjs +10 -10
  96. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  97. package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
  98. package/fesm2022/koobiq-components-search-expandable.mjs +8 -8
  99. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-select.mjs +13 -12
  101. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-sidebar.mjs +13 -13
  103. package/fesm2022/koobiq-components-sidepanel.mjs +49 -40
  104. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-skeleton.mjs +26 -10
  106. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-split-button.mjs +7 -7
  108. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  109. package/fesm2022/koobiq-components-table.mjs +10 -10
  110. package/fesm2022/koobiq-components-tabs.mjs +54 -54
  111. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-tags.mjs +42 -45
  113. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-textarea.mjs +10 -9
  115. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-time-range.mjs +24 -24
  117. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-timepicker.mjs +10 -10
  119. package/fesm2022/koobiq-components-timezone.mjs +24 -24
  120. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-title.mjs +7 -7
  122. package/fesm2022/koobiq-components-toast.mjs +16 -16
  123. package/fesm2022/koobiq-components-toggle.mjs +7 -7
  124. package/fesm2022/koobiq-components-tooltip.mjs +28 -18
  125. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  126. package/fesm2022/koobiq-components-top-bar.mjs +13 -13
  127. package/fesm2022/koobiq-components-tree-select.mjs +10 -9
  128. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-tree.mjs +63 -50
  130. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-username.mjs +27 -27
  132. package/filter-bar/pipes/pipe-date.scss +3 -15
  133. package/form-field/form-field.d.ts +7 -1
  134. package/form-field/form-field.scss +4 -0
  135. package/icon/icon-button.scss +4 -0
  136. package/inline-edit/inline-edit.d.ts +1 -0
  137. package/input/input-password.d.ts +1 -0
  138. package/input/input.d.ts +1 -0
  139. package/link/_link-theme.scss +15 -7
  140. package/link/link-tokens.scss +2 -0
  141. package/link/link.component.d.ts +4 -1
  142. package/markdown/markdown.component.d.ts +1 -1
  143. package/modal/modal-ref.class.d.ts +1 -0
  144. package/modal/modal.component.d.ts +14 -8
  145. package/modal/modal.scss +1 -0
  146. package/modal/modal.type.d.ts +5 -0
  147. package/navbar/navbar-item.component.d.ts +3 -1
  148. package/overflow-items/overflow-items.d.ts +8 -2
  149. package/package.json +4 -4
  150. package/prebuilt-themes/dark-theme.css +1 -1
  151. package/prebuilt-themes/light-theme.css +1 -1
  152. package/prebuilt-themes/theme.css +1 -1
  153. package/schematics/ng-add/index.js +4 -5
  154. package/select/select.component.d.ts +1 -0
  155. package/sidepanel/_sidepanel-theme.scss +1 -7
  156. package/sidepanel/sidepanel-config.d.ts +4 -1
  157. package/sidepanel/sidepanel.service.d.ts +0 -1
  158. package/skeleton/skeleton.d.ts +5 -0
  159. package/skeleton/skeleton.scss +3 -2
  160. package/tabs/_tabs-common.scss +2 -1
  161. package/tags/tag-input.d.ts +4 -3
  162. package/tags/tag-list.component.d.ts +1 -0
  163. package/textarea/textarea.component.d.ts +1 -0
  164. package/tooltip/tooltip.component.d.ts +2 -0
  165. package/tree/_tree-theme.scss +0 -19
  166. package/tree/tree-option.component.d.ts +9 -3
  167. package/tree/tree-option.scss +2 -5
  168. package/tree/tree-selection.component.d.ts +2 -0
  169. package/tree-select/tree-select.component.d.ts +1 -0
  170. package/accordion/accordion-item.directive.d.ts +0 -72
  171. package/accordion/accordion-root.directive.d.ts +0 -64
@@ -1,64 +1,99 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, EventEmitter, booleanAttribute, Output, Input, forwardRef, ContentChildren, Directive, ElementRef, ChangeDetectorRef, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
2
+ import { inject, ElementRef, ChangeDetectorRef, HostAttributeToken, EventEmitter, booleanAttribute, Output, Input, forwardRef, ContentChildren, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive, afterNextRender, ViewChild, ContentChild, Renderer2, signal, NgModule } from '@angular/core';
3
+ import { KBQ_WINDOW, kbqInjectNativeElement } from '@koobiq/components/core';
3
4
  import { UniqueSelectionDispatcher } from '@angular/cdk/collections';
4
5
  import { Subject, merge, Subscription } from 'rxjs';
5
- import { FocusKeyManager, FocusMonitor } from '@angular/cdk/a11y';
6
+ import { KbqIcon } from '@koobiq/components/icon';
7
+ import { FocusMonitor, FocusKeyManager } from '@angular/cdk/a11y';
6
8
  import { Directionality } from '@angular/cdk/bidi';
7
9
  import { ENTER, SPACE, TAB } from '@angular/cdk/keycodes';
8
- import { KbqIcon } from '@koobiq/components/icon';
10
+ import { Platform } from '@angular/cdk/platform';
9
11
 
10
- const KbqAccordionRootToken = new InjectionToken('KbqAccordionRootDirective');
11
- let nextId$1 = 0;
12
- class KbqAccordionRootDirective {
13
- constructor() {
14
- /** @docs-private */
15
- this.selectionDispatcher = inject(UniqueSelectionDispatcher);
16
- /** @docs-private */
17
- this.dir = inject(Directionality, { optional: true });
18
- /** @docs-private */
19
- this.id = `kbq-accordion-${nextId$1++}`;
20
- /** @docs-private */
21
- this.openCloseAllActions = new Subject();
22
- /** The orientation of the accordion. */
23
- this.orientation = 'vertical';
24
- /**
25
- * Determines whether one or multiple items can be opened at the same time.
26
- */
27
- this.type = 'single';
28
- /** @docs-private */
29
- this.collapsible = true;
30
- this.onValueChange = new EventEmitter();
31
- this._defaultValue = [];
32
- }
33
- get isMultiple() {
34
- return this.type === 'multiple';
35
- }
12
+ var KbqAccordionVariant;
13
+ (function (KbqAccordionVariant) {
14
+ KbqAccordionVariant["fill"] = "fill";
15
+ KbqAccordionVariant["hug"] = "hug";
16
+ KbqAccordionVariant["hugSpaceBetween"] = "hugSpaceBetween";
17
+ })(KbqAccordionVariant || (KbqAccordionVariant = {}));
18
+ let uniqueIdCounter$1 = 0;
19
+ class KbqAccordion {
36
20
  /**
37
21
  * The value of the item to expand when initially rendered and type is "single". Use when you do not need to control the state of the items.
38
22
  */
23
+ get defaultValue() {
24
+ return this.isMultiple ? this._defaultValue : this._defaultValue[0];
25
+ }
39
26
  set defaultValue(value) {
40
27
  if (value !== this._defaultValue) {
41
28
  this._defaultValue = Array.isArray(value) ? value : [value];
42
29
  }
43
30
  }
44
- get defaultValue() {
45
- return this.isMultiple ? this._defaultValue : this._defaultValue[0];
46
- }
47
31
  /** The controlled value of the item to expand */
32
+ get value() {
33
+ if (this._value === undefined) {
34
+ return this.defaultValue;
35
+ }
36
+ return this.isMultiple ? this._value : this._value[0];
37
+ }
48
38
  set value(value) {
49
39
  if (value !== this._value) {
50
40
  this._value = Array.isArray(value) ? value : [value];
51
41
  this.selectionDispatcher.notify(this.value, this.id);
52
42
  }
53
43
  }
54
- get value() {
55
- if (this._value === undefined) {
56
- return this.defaultValue;
44
+ get id() {
45
+ return this._id;
46
+ }
47
+ get isMultiple() {
48
+ return this.type === 'multiple';
49
+ }
50
+ get hasSavedState() {
51
+ return typeof this.state === 'object' && this.state !== null;
52
+ }
53
+ constructor() {
54
+ this.isBrowser = inject(Platform).isBrowser;
55
+ this.localStorage = inject(KBQ_WINDOW)?.localStorage;
56
+ /** @docs-private */
57
+ this.focusMonitor = inject(FocusMonitor);
58
+ /** @docs-private */
59
+ this.elementRef = inject(ElementRef);
60
+ /** @docs-private */
61
+ this.changeDetectorRef = inject(ChangeDetectorRef);
62
+ /** @docs-private */
63
+ this.selectionDispatcher = inject(UniqueSelectionDispatcher);
64
+ /** @docs-private */
65
+ this.dir = inject(Directionality, { optional: true });
66
+ /** @docs-private */
67
+ this.openCloseAllActions = new Subject();
68
+ /** Specifies whether the accordion saves its states. Default is false */
69
+ this.useStateSaving = inject(new HostAttributeToken('useStateSaving'), { optional: true }) !== null;
70
+ this.variant = KbqAccordionVariant.fill;
71
+ /** The orientation of the accordion. */
72
+ this.orientation = 'vertical';
73
+ /** Determines whether one or multiple items can be opened at the same time. */
74
+ this.type = 'single';
75
+ this.collapsible = true;
76
+ this.onValueChange = new EventEmitter();
77
+ this._defaultValue = [];
78
+ this._id = `kbq-accordion-${uniqueIdCounter$1++}`;
79
+ if (this.useStateSaving) {
80
+ this.getSavedState();
57
81
  }
58
- return this.isMultiple ? this._value : this._value[0];
59
82
  }
60
83
  ngAfterContentInit() {
61
- this.selectionDispatcher.notify((this._value ?? this._defaultValue), this.id);
84
+ if (this._value) {
85
+ this.selectionDispatcher.notify(this._value, this.id);
86
+ }
87
+ else if (this.useStateSaving && this.hasSavedState) {
88
+ Object.keys(this.state).forEach((key) => {
89
+ if (this.state && this.state[key].expanded) {
90
+ this.selectionDispatcher.notify(this.state[key].value, this.id);
91
+ }
92
+ });
93
+ }
94
+ else {
95
+ this.selectionDispatcher.notify(this._defaultValue, this.id);
96
+ }
62
97
  this.keyManager = new FocusKeyManager(this.items).withHomeAndEnd();
63
98
  if (this.orientation === 'horizontal') {
64
99
  this.keyManager.withHorizontalOrientation(this.dir?.value || 'ltr');
@@ -68,12 +103,16 @@ class KbqAccordionRootDirective {
68
103
  }
69
104
  this.onValueChangeSubscription = merge(...this.items.map((item) => item.expandedChange)).subscribe(() => this.onValueChange.emit());
70
105
  }
106
+ ngAfterViewInit() {
107
+ this.focusMonitor.monitor(this.elementRef, true);
108
+ }
71
109
  ngOnDestroy() {
110
+ this.focusMonitor.stopMonitoring(this.elementRef);
72
111
  this.openCloseAllActions.complete();
73
112
  this.onValueChangeSubscription.unsubscribe();
74
113
  }
75
114
  /** @docs-private */
76
- handleKeydown(event) {
115
+ keydownHandler(event) {
77
116
  if (!this.keyManager.activeItem) {
78
117
  this.keyManager.setFirstItemActive();
79
118
  }
@@ -101,17 +140,13 @@ class KbqAccordionRootDirective {
101
140
  this.keyManager.onKeydown(event);
102
141
  }
103
142
  }
104
- /** Opens all enabled accordion items in an accordion where multi is enabled.
105
- * @docs-private
106
- */
143
+ /** Opens all enabled accordion items in an accordion where multi is enabled. */
107
144
  openAll() {
108
145
  if (this.isMultiple) {
109
146
  this.openCloseAllActions.next(true);
110
147
  }
111
148
  }
112
- /** Closes all enabled accordion items.
113
- * @docs-private
114
- */
149
+ /** Closes all enabled accordion items. */
115
150
  closeAll() {
116
151
  this.openCloseAllActions.next(false);
117
152
  }
@@ -119,33 +154,43 @@ class KbqAccordionRootDirective {
119
154
  setActiveItem(item) {
120
155
  this.keyManager.setActiveItem(item);
121
156
  }
122
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionRootDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.18", type: KbqAccordionRootDirective, isStandalone: true, selector: "[kbqAccordionRoot]", inputs: { disabled: ["disabled", "disabled", booleanAttribute], orientation: "orientation", defaultValue: "defaultValue", type: "type", collapsible: "collapsible", value: "value" }, outputs: { onValueChange: "onValueChange" }, host: { listeners: { "keydown": "handleKeydown($event)" }, properties: { "attr.data-orientation": "orientation" } }, providers: [
124
- { provide: KbqAccordionRootToken, useExisting: KbqAccordionRootDirective },
157
+ /** @docs-private */
158
+ saveItemState(item, force = true) {
159
+ if (!this.isBrowser || (!force && !!this.state && !!this.state[item.id]))
160
+ return;
161
+ this.state = this.state || {};
162
+ this.state[item.id] = item.getState();
163
+ this.localStorage.setItem(this.id, JSON.stringify(this.state));
164
+ }
165
+ getSavedState() {
166
+ if (!this.isBrowser)
167
+ return;
168
+ this.state = JSON.parse(this.localStorage.getItem(this.id));
169
+ }
170
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
171
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.19", type: KbqAccordion, isStandalone: true, selector: "kbq-accordion, [kbq-accordion]", inputs: { variant: "variant", disabled: ["disabled", "disabled", booleanAttribute], orientation: "orientation", defaultValue: "defaultValue", type: "type", collapsible: "collapsible", value: "value" }, outputs: { onValueChange: "onValueChange" }, host: { listeners: { "keydown": "keydownHandler($event)" }, properties: { "attr.data-orientation": "orientation" }, classAttribute: "kbq-accordion" }, providers: [
125
172
  { provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }
126
- ], queries: [{ propertyName: "items", predicate: i0.forwardRef(() => KbqAccordionItemDirective), descendants: true }], ngImport: i0 }); }
173
+ ], queries: [{ propertyName: "items", predicate: i0.forwardRef(() => KbqAccordionItem), descendants: true }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [".kbq-accordion{display:block}.kbq-accordion-item{box-sizing:border-box;display:block;border-width:2px;border-style:solid;border-color:transparent}.kbq-accordion-header{display:flex;height:var(--kbq-accordion-size-item-header-height)}.kbq-accordion-content{display:block;overflow:hidden}.kbq-accordion-content>p{margin:unset;padding:var(--kbq-accordion-size-item-content-padding)}.kbq-accordion-content[data-state=open]{transition:.3s ease-out;height:var(--radix-accordion-content-height)}.kbq-accordion-content[data-state=closed]{transition:.3s ease-out;height:0}.kbq-accordion.cdk-keyboard-focused .kbq-accordion-item:focus-within{border-color:var(--kbq-accordion-item-states-focus-border-color)}.kbq-accordion-item{background:var(--kbq-accordion-item-default-background);color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-item .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-default-icon-color)}.kbq-accordion-trigger{width:100%;background:transparent;border:none;outline:none;color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger[data-disabled=true]{color:var(--kbq-accordion-item-states-disabled-text-color)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}.kbq-accordion-header,.kbq-accordion-trigger{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-accordion-trigger__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-accordion-content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
127
174
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionRootDirective, decorators: [{
129
- type: Directive,
130
- args: [{
131
- selector: '[kbqAccordionRoot]',
132
- providers: [
133
- { provide: KbqAccordionRootToken, useExisting: KbqAccordionRootDirective },
134
- { provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }
135
- ],
136
- host: {
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordion, decorators: [{
176
+ type: Component,
177
+ args: [{ selector: 'kbq-accordion, [kbq-accordion]', template: '<ng-content />', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
178
+ class: 'kbq-accordion',
137
179
  '[attr.data-orientation]': 'orientation',
138
- '(keydown)': 'handleKeydown($event)'
139
- }
140
- }]
141
- }], propDecorators: { disabled: [{
180
+ '(keydown)': 'keydownHandler($event)'
181
+ }, providers: [
182
+ { provide: UniqueSelectionDispatcher, useClass: UniqueSelectionDispatcher }
183
+ ], styles: [".kbq-accordion{display:block}.kbq-accordion-item{box-sizing:border-box;display:block;border-width:2px;border-style:solid;border-color:transparent}.kbq-accordion-header{display:flex;height:var(--kbq-accordion-size-item-header-height)}.kbq-accordion-content{display:block;overflow:hidden}.kbq-accordion-content>p{margin:unset;padding:var(--kbq-accordion-size-item-content-padding)}.kbq-accordion-content[data-state=open]{transition:.3s ease-out;height:var(--radix-accordion-content-height)}.kbq-accordion-content[data-state=closed]{transition:.3s ease-out;height:0}.kbq-accordion.cdk-keyboard-focused .kbq-accordion-item:focus-within{border-color:var(--kbq-accordion-item-states-focus-border-color)}.kbq-accordion-item{background:var(--kbq-accordion-item-default-background);color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-item .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-default-icon-color)}.kbq-accordion-trigger{width:100%;background:transparent;border:none;outline:none;color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger[data-disabled=true]{color:var(--kbq-accordion-item-states-disabled-text-color)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}.kbq-accordion-header,.kbq-accordion-trigger{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-accordion-trigger__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-accordion-content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"] }]
184
+ }], ctorParameters: () => [], propDecorators: { items: [{
185
+ type: ContentChildren,
186
+ args: [forwardRef(() => KbqAccordionItem), { descendants: true }]
187
+ }], variant: [{
188
+ type: Input
189
+ }], disabled: [{
142
190
  type: Input,
143
191
  args: [{ transform: booleanAttribute }]
144
192
  }], orientation: [{
145
193
  type: Input
146
- }], items: [{
147
- type: ContentChildren,
148
- args: [forwardRef(() => KbqAccordionItemDirective), { descendants: true }]
149
194
  }], defaultValue: [{
150
195
  type: Input
151
196
  }], type: [{
@@ -160,24 +205,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
160
205
 
161
206
  class KbqAccordionTriggerDirective {
162
207
  constructor() {
163
- this.nativeElement = inject(ElementRef).nativeElement;
164
- this.accordionRoot = inject(KbqAccordionRootDirective);
165
- this.item = inject(KbqAccordionItemDirective);
208
+ /** @docs-private */
209
+ this.nativeElement = kbqInjectNativeElement();
210
+ /** @docs-private */
211
+ this.accordion = inject(KbqAccordion);
212
+ /** @docs-private */
213
+ this.item = inject(KbqAccordionItem);
166
214
  }
167
215
  /** Fires when trigger clicked */
168
216
  onClick() {
169
- if (!this.accordionRoot.collapsible && this.item.expanded)
217
+ if (!this.accordion.collapsible && this.item.expanded)
170
218
  return;
171
219
  this.item.toggle();
172
- this.accordionRoot.setActiveItem(this.item);
220
+ this.accordion.setActiveItem(this.item);
173
221
  }
222
+ /** @docs-private */
174
223
  focus() {
175
224
  this.nativeElement.focus();
176
225
  }
177
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
178
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordionTriggerDirective, isStandalone: true, selector: "[kbqAccordionTrigger]", host: { listeners: { "click": "onClick()" }, properties: { "attr.role": "\"button\"", "attr.aria-expanded": "item.expanded", "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.disabled": "item.disabled ? \"\" : null", "attr.data-orientation": "item.orientation" } }, ngImport: i0 }); }
226
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
227
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: KbqAccordionTriggerDirective, isStandalone: true, selector: "[kbqAccordionTrigger]", host: { listeners: { "click": "onClick()" }, properties: { "attr.role": "\"button\"", "attr.aria-expanded": "item.expanded", "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.disabled": "item.disabled ? \"\" : null", "attr.data-orientation": "item.orientation" } }, ngImport: i0 }); }
179
228
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionTriggerDirective, decorators: [{
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionTriggerDirective, decorators: [{
181
230
  type: Directive,
182
231
  args: [{
183
232
  selector: '[kbqAccordionTrigger]',
@@ -193,8 +242,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
193
242
  }]
194
243
  }] });
195
244
 
196
- let nextId = 0;
197
- class KbqAccordionItemDirective {
245
+ class KbqAccordionTrigger {
246
+ get isFill() {
247
+ return this.accordion.variant === KbqAccordionVariant.fill;
248
+ }
249
+ get isHug() {
250
+ return this.accordion.variant === KbqAccordionVariant.hug;
251
+ }
252
+ get isHugSpaceBetween() {
253
+ return this.accordion.variant === KbqAccordionVariant.hugSpaceBetween;
254
+ }
255
+ constructor() {
256
+ /** @docs-private */
257
+ this.nativeElement = kbqInjectNativeElement();
258
+ /** @docs-private */
259
+ this.accordion = inject(KbqAccordion);
260
+ this.afterRenderRef = afterNextRender(() => {
261
+ setTimeout(() => this.enableAnimation());
262
+ this.afterRenderRef?.destroy();
263
+ });
264
+ }
265
+ ngAfterViewInit() {
266
+ this.disableAnimation();
267
+ }
268
+ disableAnimation() {
269
+ this.savedTransition = this.icon.elementRef.nativeElement.style.transition;
270
+ this.icon.getHostElement().style.transition = 'none';
271
+ }
272
+ enableAnimation() {
273
+ this.icon.getHostElement().style.transition = this.savedTransition;
274
+ }
275
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
276
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: KbqAccordionTrigger, isStandalone: true, selector: "kbq-accordion-trigger, [kbq-accordion-trigger]", host: { properties: { "class.kbq-accordion-trigger_fill": "isFill", "class.kbq-accordion-trigger_hug": "isHug", "class.kbq-accordion-trigger_hug-space-between": "isHugSpaceBetween" }, classAttribute: "kbq-accordion-trigger" }, viewQueries: [{ propertyName: "icon", first: true, predicate: KbqIcon, descendants: true }], hostDirectives: [{ directive: KbqAccordionTriggerDirective }], ngImport: i0, template: `
277
+ <i
278
+ kbq-icon="{{ isHugSpaceBetween ? 'kbq-chevron-down-s_16' : 'kbq-chevron-right-s_16' }}"
279
+ class="kbq-accordion-trigger__icon"
280
+ ></i>
281
+
282
+ <ng-content />
283
+ `, isInline: true, styles: [".kbq-accordion-trigger{display:flex;flex-direction:row;align-items:center;background:transparent;border:none;outline:none}.kbq-accordion-trigger .kbq-accordion-trigger__icon{box-sizing:initial;align-self:flex-start;padding:var(--kbq-size-xxs);transition:transform .3s ease-out}.kbq-accordion-trigger .kbq-accordion-trigger__badge,.kbq-accordion-trigger .kbq-accordion-trigger__caption{margin-top:var(--kbq-size-xxs);margin-right:var(--kbq-size-s)}.kbq-accordion-trigger .kbq-accordion-trigger__action{padding:var(--kbq-size-xxs) var(--kbq-size-xxs) var(--kbq-size-3xs);margin-bottom:calc(-1 * var(--kbq-size-3xs))}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger.kbq-accordion-trigger_fill{padding:var(--kbq-accordion-size-item-header-variant-fill-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_fill[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug{flex-direction:row-reverse;justify-content:flex-end;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between{flex-direction:row-reverse;justify-content:space-between;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(-180deg)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}button.kbq-accordion-trigger{flex:1}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"], dependencies: [{ kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], encapsulation: i0.ViewEncapsulation.None }); }
284
+ }
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionTrigger, decorators: [{
286
+ type: Component,
287
+ args: [{ selector: 'kbq-accordion-trigger, [kbq-accordion-trigger]', imports: [KbqIcon], template: `
288
+ <i
289
+ kbq-icon="{{ isHugSpaceBetween ? 'kbq-chevron-down-s_16' : 'kbq-chevron-right-s_16' }}"
290
+ class="kbq-accordion-trigger__icon"
291
+ ></i>
292
+
293
+ <ng-content />
294
+ `, encapsulation: ViewEncapsulation.None, hostDirectives: [KbqAccordionTriggerDirective], host: {
295
+ class: 'kbq-accordion-trigger',
296
+ '[class.kbq-accordion-trigger_fill]': 'isFill',
297
+ '[class.kbq-accordion-trigger_hug]': 'isHug',
298
+ '[class.kbq-accordion-trigger_hug-space-between]': 'isHugSpaceBetween'
299
+ }, styles: [".kbq-accordion-trigger{display:flex;flex-direction:row;align-items:center;background:transparent;border:none;outline:none}.kbq-accordion-trigger .kbq-accordion-trigger__icon{box-sizing:initial;align-self:flex-start;padding:var(--kbq-size-xxs);transition:transform .3s ease-out}.kbq-accordion-trigger .kbq-accordion-trigger__badge,.kbq-accordion-trigger .kbq-accordion-trigger__caption{margin-top:var(--kbq-size-xxs);margin-right:var(--kbq-size-s)}.kbq-accordion-trigger .kbq-accordion-trigger__action{padding:var(--kbq-size-xxs) var(--kbq-size-xxs) var(--kbq-size-3xs);margin-bottom:calc(-1 * var(--kbq-size-3xs))}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger.kbq-accordion-trigger_fill{padding:var(--kbq-accordion-size-item-header-variant-fill-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_fill[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug{flex-direction:row-reverse;justify-content:flex-end;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between{flex-direction:row-reverse;justify-content:space-between;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(-180deg)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}button.kbq-accordion-trigger{flex:1}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"] }]
300
+ }], ctorParameters: () => [], propDecorators: { icon: [{
301
+ type: ViewChild,
302
+ args: [KbqIcon]
303
+ }] } });
304
+
305
+ let uniqueIdCounter = 0;
306
+ class KbqAccordionItem {
307
+ /** The unique AccordionItem id. */
308
+ get id() {
309
+ return this._id;
310
+ }
198
311
  get dataState() {
199
312
  return this.expanded ? 'open' : 'closed';
200
313
  }
@@ -202,6 +315,9 @@ class KbqAccordionItemDirective {
202
315
  return this.accordion.orientation;
203
316
  }
204
317
  /** Whether the AccordionItem is expanded. */
318
+ get expanded() {
319
+ return this._expanded;
320
+ }
205
321
  set expanded(expanded) {
206
322
  // Only emit events and update the internal value if the value changes.
207
323
  if (this._expanded !== expanded) {
@@ -210,7 +326,7 @@ class KbqAccordionItemDirective {
210
326
  if (expanded) {
211
327
  this.opened.emit();
212
328
  /**
213
- * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,
329
+ * In the unique selection dispatcher, the id parameter is the id of the KbqAccordionItem,
214
330
  * the name value is the id of the accordion.
215
331
  */
216
332
  const accordionId = this.accordion ? this.accordion.id : this.value;
@@ -219,14 +335,13 @@ class KbqAccordionItemDirective {
219
335
  else {
220
336
  this.closed.emit();
221
337
  }
338
+ this.content.toggle();
339
+ this.accordion.saveItemState(this);
222
340
  // Ensures that the animation will run when the value is set outside of an `@Input`.
223
341
  // This includes cases like the open, close and toggle methods.
224
342
  this.changeDetectorRef.markForCheck();
225
343
  }
226
344
  }
227
- get expanded() {
228
- return this._expanded;
229
- }
230
345
  set value(value) {
231
346
  this._value = value;
232
347
  }
@@ -234,24 +349,20 @@ class KbqAccordionItemDirective {
234
349
  return this._value || this.id;
235
350
  }
236
351
  /** Whether the AccordionItem is disabled. */
237
- set disabled(value) {
238
- this._disabled = value;
239
- }
240
352
  get disabled() {
241
353
  return this.accordion.disabled ?? this._disabled;
242
354
  }
355
+ set disabled(value) {
356
+ this._disabled = value;
357
+ }
243
358
  constructor() {
244
359
  /** @docs-private */
245
- this.accordion = inject(KbqAccordionRootToken, { skipSelf: true });
360
+ this.accordion = inject(KbqAccordion);
246
361
  /** @docs-private */
247
362
  this.changeDetectorRef = inject(ChangeDetectorRef);
248
363
  /** @docs-private */
249
364
  this.expansionDispatcher = inject(UniqueSelectionDispatcher);
250
- /**
251
- * The unique AccordionItem id.
252
- * @docs-private
253
- */
254
- this.id = `kbq-accordion-item-${nextId++}`;
365
+ this._id = `kbq-accordion-item-${uniqueIdCounter++}`;
255
366
  this._expanded = false;
256
367
  this._disabled = false;
257
368
  /** Event emitted every time the AccordionItem is closed. */
@@ -285,6 +396,7 @@ class KbqAccordionItemDirective {
285
396
  if (this.accordion) {
286
397
  this.openCloseAllSubscription = this.subscribeToOpenCloseAllActions();
287
398
  }
399
+ this.accordion.saveItemState(this, false);
288
400
  }
289
401
  /** Emits an event for the accordion item being destroyed. */
290
402
  ngOnDestroy() {
@@ -301,7 +413,6 @@ class KbqAccordionItemDirective {
301
413
  /** Toggles the expanded state of the accordion item. */
302
414
  toggle() {
303
415
  if (!this.disabled) {
304
- this.content.onToggle();
305
416
  this.expanded = !this.expanded;
306
417
  }
307
418
  }
@@ -317,6 +428,20 @@ class KbqAccordionItemDirective {
317
428
  this.expanded = true;
318
429
  }
319
430
  }
431
+ getState() {
432
+ return {
433
+ expanded: this.expanded,
434
+ value: this.value
435
+ };
436
+ }
437
+ disableAnimation() {
438
+ this.content.disableAnimation();
439
+ this.triggerComponent.disableAnimation();
440
+ }
441
+ enableAnimation() {
442
+ this.content.enableAnimation();
443
+ this.triggerComponent.enableAnimation();
444
+ }
320
445
  subscribeToOpenCloseAllActions() {
321
446
  return this.accordion.openCloseAllActions.subscribe((expanded) => {
322
447
  // Only change expanded state if item is enabled
@@ -325,28 +450,26 @@ class KbqAccordionItemDirective {
325
450
  }
326
451
  });
327
452
  }
328
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
329
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.18", type: KbqAccordionItemDirective, isStandalone: true, selector: "[kbqAccordionItem]", inputs: { expanded: ["expanded", "expanded", booleanAttribute], value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { closed: "closed", opened: "opened", expandedChange: "expandedChange" }, host: { properties: { "attr.data-state": "dataState", "attr.data-disabled": "disabled", "attr.data-orientation": "orientation" } }, providers: [
330
- { provide: KbqAccordionRootToken, useValue: undefined }
331
- ], queries: [{ propertyName: "trigger", first: true, predicate: KbqAccordionTriggerDirective, descendants: true }, { propertyName: "content", first: true, predicate: i0.forwardRef(() => KbqAccordionContentDirective), descendants: true }], exportAs: ["kbqAccordionItem"], ngImport: i0 }); }
453
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
454
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.2.19", type: KbqAccordionItem, isStandalone: true, selector: "kbq-accordion-item, [kbq-accordion-item]", inputs: { expanded: ["expanded", "expanded", booleanAttribute], value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { closed: "closed", opened: "opened", expandedChange: "expandedChange" }, host: { properties: { "attr.data-state": "dataState", "attr.data-disabled": "disabled", "attr.data-orientation": "orientation" }, classAttribute: "kbq-accordion-item" }, queries: [{ propertyName: "trigger", first: true, predicate: KbqAccordionTriggerDirective, descendants: true }, { propertyName: "triggerComponent", first: true, predicate: KbqAccordionTrigger, descendants: true }, { propertyName: "content", first: true, predicate: i0.forwardRef(() => KbqAccordionContentDirective), descendants: true }], ngImport: i0 }); }
332
455
  }
333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionItemDirective, decorators: [{
456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionItem, decorators: [{
334
457
  type: Directive,
335
458
  args: [{
336
- selector: '[kbqAccordionItem]',
337
- exportAs: 'kbqAccordionItem',
459
+ selector: 'kbq-accordion-item, [kbq-accordion-item]',
338
460
  host: {
461
+ class: 'kbq-accordion-item',
339
462
  '[attr.data-state]': 'dataState',
340
463
  '[attr.data-disabled]': 'disabled',
341
464
  '[attr.data-orientation]': 'orientation'
342
- },
343
- providers: [
344
- { provide: KbqAccordionRootToken, useValue: undefined }
345
- ]
465
+ }
346
466
  }]
347
467
  }], ctorParameters: () => [], propDecorators: { trigger: [{
348
468
  type: ContentChild,
349
469
  args: [KbqAccordionTriggerDirective, { descendants: true }]
470
+ }], triggerComponent: [{
471
+ type: ContentChild,
472
+ args: [KbqAccordionTrigger, { descendants: true }]
350
473
  }], content: [{
351
474
  type: ContentChild,
352
475
  args: [forwardRef(() => KbqAccordionContentDirective), { descendants: true }]
@@ -368,51 +491,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
368
491
 
369
492
  class KbqAccordionContentDirective {
370
493
  constructor() {
371
- this.item = inject(KbqAccordionItemDirective);
372
- this.nativeElement = inject(ElementRef).nativeElement;
373
- this.hidden = false;
494
+ this.renderer = inject(Renderer2);
495
+ /** @docs-private */
496
+ this.nativeElement = kbqInjectNativeElement();
497
+ /** @docs-private */
498
+ this.item = inject(KbqAccordionItem);
499
+ /** @docs-private */
500
+ this.hidden = signal(true);
501
+ this.afterRenderRef = afterNextRender(() => {
502
+ this.enableAnimation();
503
+ this.afterRenderRef?.destroy();
504
+ });
505
+ }
506
+ ngAfterViewInit() {
507
+ this.disableAnimation();
374
508
  }
375
- onAnimationEnd() {
376
- this.hidden = !this.item.expanded;
509
+ ngAfterContentInit() {
377
510
  const { height, width } = this.nativeElement.getBoundingClientRect();
378
- this.nativeElement.style.setProperty('--radix-collapsible-content-height', `${height}px`);
379
- this.nativeElement.style.setProperty('--radix-collapsible-content-width', `${width}px`);
380
- this.nativeElement.style.setProperty('--radix-accordion-content-height', 'var(--radix-collapsible-content-height)');
381
- this.nativeElement.style.setProperty('--radix-accordion-content-width', 'var(--radix-collapsible-content-width)');
382
- }
383
- onToggle() {
384
- if (!this.item.expanded) {
385
- this.hidden = false;
386
- }
511
+ this.renderer.setProperty(this.nativeElement, 'style', `
512
+ --radix-accordion-content-height: ${height}px;
513
+ --radix-accordion-content-width: ${width}px;
514
+ `);
515
+ }
516
+ toggle() {
517
+ this.hidden.set(!this.item.expanded);
518
+ }
519
+ disableAnimation() {
520
+ this.savedTransition = this.nativeElement.style.transition;
521
+ this.nativeElement.style.transition = 'none';
387
522
  }
388
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
389
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordionContentDirective, isStandalone: true, selector: "[kbqAccordionContent]", host: { listeners: { "animationend": "onAnimationEnd()" }, properties: { "attr.role": "\"region\"", "style.display": "hidden ? \"none\" : \"\"", "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.data-orientation": "item.orientation" } }, exportAs: ["kbqAccordionContent"], ngImport: i0 }); }
523
+ enableAnimation() {
524
+ this.nativeElement.style.transition = this.savedTransition;
525
+ }
526
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
527
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: KbqAccordionContentDirective, isStandalone: true, selector: "[kbqAccordionContent]", host: { listeners: { "transitionend": "toggle()" }, properties: { "attr.role": "\"region\"", "attr.hidden": "hidden().toString()", "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.data-orientation": "item.orientation" } }, exportAs: ["kbqAccordionContent"], ngImport: i0 }); }
390
528
  }
391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionContentDirective, decorators: [{
529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionContentDirective, decorators: [{
392
530
  type: Directive,
393
531
  args: [{
394
532
  selector: '[kbqAccordionContent]',
395
533
  exportAs: 'kbqAccordionContent',
396
534
  host: {
397
535
  '[attr.role]': '"region"',
398
- '[style.display]': 'hidden ? "none" : ""',
536
+ '[attr.hidden]': 'hidden().toString()',
399
537
  '[attr.data-state]': 'item.dataState',
400
538
  '[attr.data-disabled]': 'item.disabled',
401
539
  '[attr.data-orientation]': 'item.orientation',
402
- '(animationend)': 'onAnimationEnd()'
540
+ '(transitionend)': 'toggle()'
403
541
  }
404
542
  }]
405
- }] });
543
+ }], ctorParameters: () => [] });
406
544
 
407
545
  class KbqAccordionContent {
408
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
409
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordionContent, isStandalone: true, selector: "kbq-accordion-content, [kbq-accordion-content]", host: { classAttribute: "kbq-accordion-content" }, hostDirectives: [{ directive: KbqAccordionContentDirective }], ngImport: i0 }); }
546
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
547
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: KbqAccordionContent, isStandalone: true, selector: "kbq-accordion-content, [kbq-accordion-content]", host: { classAttribute: "kbq-accordion-content" }, hostDirectives: [{ directive: KbqAccordionContentDirective }], ngImport: i0, template: `
548
+ <p><ng-content /></p>
549
+ `, isInline: true }); }
410
550
  }
411
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionContent, decorators: [{
412
- type: Directive,
551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionContent, decorators: [{
552
+ type: Component,
413
553
  args: [{
414
554
  selector: 'kbq-accordion-content, [kbq-accordion-content]',
415
555
  hostDirectives: [KbqAccordionContentDirective],
556
+ template: `
557
+ <p><ng-content /></p>
558
+ `,
416
559
  host: {
417
560
  class: 'kbq-accordion-content'
418
561
  }
@@ -421,12 +564,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
421
564
 
422
565
  class KbqAccordionHeaderDirective {
423
566
  constructor() {
424
- this.item = inject(KbqAccordionItemDirective);
567
+ this.item = inject(KbqAccordionItem);
425
568
  }
426
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
427
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordionHeaderDirective, isStandalone: true, selector: "[kbqAccordionHeader]", host: { properties: { "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.data-orientation": "item.orientation" } }, ngImport: i0 }); }
569
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
570
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: KbqAccordionHeaderDirective, isStandalone: true, selector: "[kbqAccordionHeader]", host: { properties: { "attr.data-state": "item.dataState", "attr.data-disabled": "item.disabled", "attr.data-orientation": "item.orientation" } }, ngImport: i0 }); }
428
571
  }
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionHeaderDirective, decorators: [{
572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionHeaderDirective, decorators: [{
430
573
  type: Directive,
431
574
  args: [{
432
575
  selector: '[kbqAccordionHeader]',
@@ -439,10 +582,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
439
582
  }] });
440
583
 
441
584
  class KbqAccordionHeader {
442
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
443
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordionHeader, isStandalone: true, selector: "kbq-accordion-header, [kbq-accordion-header]", host: { classAttribute: "kbq-accordion-header" }, hostDirectives: [{ directive: KbqAccordionHeaderDirective }], ngImport: i0 }); }
585
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
586
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: KbqAccordionHeader, isStandalone: true, selector: "kbq-accordion-header, [kbq-accordion-header]", host: { classAttribute: "kbq-accordion-header" }, hostDirectives: [{ directive: KbqAccordionHeaderDirective }], ngImport: i0 }); }
444
587
  }
445
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionHeader, decorators: [{
588
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionHeader, decorators: [{
446
589
  type: Directive,
447
590
  args: [{
448
591
  selector: 'kbq-accordion-header, [kbq-accordion-header]',
@@ -453,110 +596,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
453
596
  }]
454
597
  }] });
455
598
 
456
- class KbqAccordionItem {
457
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
458
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordionItem, isStandalone: true, selector: "kbq-accordion-item, [kbq-accordion-item]", host: { classAttribute: "kbq-accordion-item" }, hostDirectives: [{ directive: KbqAccordionItemDirective, inputs: ["expanded", "expanded", "disabled", "disabled", "value", "value"], outputs: ["closed", "closed", "opened", "opened", "expandedChange", "expandedChange"] }], ngImport: i0 }); }
459
- }
460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionItem, decorators: [{
461
- type: Directive,
462
- args: [{
463
- selector: 'kbq-accordion-item, [kbq-accordion-item]',
464
- hostDirectives: [
465
- {
466
- directive: KbqAccordionItemDirective,
467
- inputs: ['expanded', 'disabled', 'value'],
468
- outputs: ['closed', 'opened', 'expandedChange']
469
- }
470
- ],
471
- host: {
472
- class: 'kbq-accordion-item'
473
- }
474
- }]
475
- }] });
476
-
477
- var KbqAccordionVariant;
478
- (function (KbqAccordionVariant) {
479
- KbqAccordionVariant["fill"] = "fill";
480
- KbqAccordionVariant["hug"] = "hug";
481
- KbqAccordionVariant["hugSpaceBetween"] = "hugSpaceBetween";
482
- })(KbqAccordionVariant || (KbqAccordionVariant = {}));
483
- class KbqAccordion {
484
- constructor() {
485
- this.focusMonitor = inject(FocusMonitor);
486
- this.elementRef = inject(ElementRef);
487
- this.variant = KbqAccordionVariant.fill;
488
- }
489
- ngAfterViewInit() {
490
- this.focusMonitor.monitor(this.elementRef, true);
491
- }
492
- ngOnDestroy() {
493
- this.focusMonitor.stopMonitoring(this.elementRef);
494
- }
495
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
496
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: KbqAccordion, isStandalone: true, selector: "kbq-accordion, [kbq-accordion]", inputs: { variant: "variant" }, host: { classAttribute: "kbq-accordion" }, hostDirectives: [{ directive: KbqAccordionRootDirective, inputs: ["type", "type", "collapsible", "collapsible", "disabled", "disabled", "defaultValue", "defaultValue", "value", "value"], outputs: ["onValueChange", "onValueChange"] }], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@keyframes slideDown{0%{height:0;padding-bottom:0}to{height:var(--radix-accordion-content-height);padding-bottom:0}}@keyframes slideUp{0%{height:var(--radix-accordion-content-height);padding-bottom:0}to{height:0;padding-bottom:0}}.kbq-accordion{display:block}.kbq-accordion-item{box-sizing:border-box;display:block;border-width:2px;border-style:solid;border-color:transparent}.kbq-accordion-header{display:flex;height:var(--kbq-accordion-size-item-header-height)}.kbq-accordion-content{display:block;overflow:hidden;padding:var(--kbq-accordion-size-item-content-padding)}.kbq-accordion-content[data-state=open]{animation:slideDown .3s ease-out}.kbq-accordion-content[data-state=closed]{animation:slideUp .3s ease-out}.kbq-accordion.cdk-keyboard-focused .kbq-accordion-item:focus-within{border-color:var(--kbq-accordion-item-states-focus-border-color)}.kbq-accordion-item{background:var(--kbq-accordion-item-default-background);color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-item .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-default-icon-color)}.kbq-accordion-trigger{width:100%;background:transparent;border:none;outline:none;color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger[data-disabled=true]{color:var(--kbq-accordion-item-states-disabled-text-color)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}.kbq-accordion-header,.kbq-accordion-trigger{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-accordion-trigger__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-accordion-content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
497
- }
498
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordion, decorators: [{
499
- type: Component,
500
- args: [{ selector: 'kbq-accordion, [kbq-accordion]', template: '<ng-content />', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
501
- {
502
- directive: KbqAccordionRootDirective,
503
- inputs: ['type', 'collapsible', 'disabled', 'defaultValue', 'value'],
504
- outputs: ['onValueChange']
505
- }
506
- ], host: {
507
- class: 'kbq-accordion'
508
- }, styles: ["@keyframes slideDown{0%{height:0;padding-bottom:0}to{height:var(--radix-accordion-content-height);padding-bottom:0}}@keyframes slideUp{0%{height:var(--radix-accordion-content-height);padding-bottom:0}to{height:0;padding-bottom:0}}.kbq-accordion{display:block}.kbq-accordion-item{box-sizing:border-box;display:block;border-width:2px;border-style:solid;border-color:transparent}.kbq-accordion-header{display:flex;height:var(--kbq-accordion-size-item-header-height)}.kbq-accordion-content{display:block;overflow:hidden;padding:var(--kbq-accordion-size-item-content-padding)}.kbq-accordion-content[data-state=open]{animation:slideDown .3s ease-out}.kbq-accordion-content[data-state=closed]{animation:slideUp .3s ease-out}.kbq-accordion.cdk-keyboard-focused .kbq-accordion-item:focus-within{border-color:var(--kbq-accordion-item-states-focus-border-color)}.kbq-accordion-item{background:var(--kbq-accordion-item-default-background);color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-item .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-default-icon-color)}.kbq-accordion-trigger{width:100%;background:transparent;border:none;outline:none;color:var(--kbq-accordion-item-default-text-color)}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger[data-disabled=true]{color:var(--kbq-accordion-item-states-disabled-text-color)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}.kbq-accordion-header,.kbq-accordion-trigger{font-size:var(--kbq-typography-text-big-font-size);font-style:var(--kbq-typography-text-big-font-style);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-accordion-trigger__caption{font-size:var(--kbq-typography-text-compact-font-size);font-style:var(--kbq-typography-text-compact-font-style);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-accordion-content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"] }]
509
- }], propDecorators: { variant: [{
510
- type: Input
511
- }] } });
512
-
513
- class KbqAccordionTrigger {
514
- constructor() {
515
- this.accordion = inject(KbqAccordion);
516
- }
517
- get isFill() {
518
- return this.accordion.variant === KbqAccordionVariant.fill;
519
- }
520
- get isHug() {
521
- return this.accordion.variant === KbqAccordionVariant.hug;
522
- }
523
- get isHugSpaceBetween() {
524
- return this.accordion.variant === KbqAccordionVariant.hugSpaceBetween;
525
- }
526
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionTrigger, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
527
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.18", type: KbqAccordionTrigger, isStandalone: true, selector: "kbq-accordion-trigger, [kbq-accordion-trigger]", host: { properties: { "class.kbq-accordion-trigger_fill": "isFill", "class.kbq-accordion-trigger_hug": "isHug", "class.kbq-accordion-trigger_hug-space-between": "isHugSpaceBetween" }, classAttribute: "kbq-accordion-trigger" }, hostDirectives: [{ directive: KbqAccordionTriggerDirective }], ngImport: i0, template: `
528
- @if (isHugSpaceBetween) {
529
- <i class="kbq-accordion-trigger__icon" kbq-icon="kbq-chevron-down-s_16"></i>
530
- } @else {
531
- <i class="kbq-accordion-trigger__icon" kbq-icon="kbq-chevron-right-s_16"></i>
532
- }
533
-
534
- <ng-content />
535
- `, isInline: true, styles: [".kbq-accordion-trigger{display:flex;flex-direction:row;align-items:center;background:transparent;border:none;outline:none}.kbq-accordion-trigger .kbq-accordion-trigger__icon{box-sizing:initial;align-self:flex-start;padding:var(--kbq-size-xxs);transition:transform .3s ease-out}.kbq-accordion-trigger .kbq-accordion-trigger__badge,.kbq-accordion-trigger .kbq-accordion-trigger__caption{margin-top:var(--kbq-size-xxs);margin-right:var(--kbq-size-s)}.kbq-accordion-trigger .kbq-accordion-trigger__action{padding:var(--kbq-size-xxs) var(--kbq-size-xxs) var(--kbq-size-3xs);margin-bottom:calc(-1 * var(--kbq-size-3xs))}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger.kbq-accordion-trigger_fill{padding:var(--kbq-accordion-size-item-header-variant-fill-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_fill[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug{flex-direction:row-reverse;justify-content:flex-end;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between{flex-direction:row-reverse;justify-content:space-between;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(-180deg)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}button.kbq-accordion-trigger{flex:1}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"], dependencies: [{ kind: "component", type: KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }], encapsulation: i0.ViewEncapsulation.None }); }
536
- }
537
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionTrigger, decorators: [{
538
- type: Component,
539
- args: [{ selector: 'kbq-accordion-trigger, [kbq-accordion-trigger]', imports: [
540
- KbqIcon
541
- ], template: `
542
- @if (isHugSpaceBetween) {
543
- <i class="kbq-accordion-trigger__icon" kbq-icon="kbq-chevron-down-s_16"></i>
544
- } @else {
545
- <i class="kbq-accordion-trigger__icon" kbq-icon="kbq-chevron-right-s_16"></i>
546
- }
547
-
548
- <ng-content />
549
- `, encapsulation: ViewEncapsulation.None, hostDirectives: [KbqAccordionTriggerDirective], host: {
550
- class: 'kbq-accordion-trigger',
551
- '[class.kbq-accordion-trigger_fill]': 'isFill',
552
- '[class.kbq-accordion-trigger_hug]': 'isHug',
553
- '[class.kbq-accordion-trigger_hug-space-between]': 'isHugSpaceBetween'
554
- }, styles: [".kbq-accordion-trigger{display:flex;flex-direction:row;align-items:center;background:transparent;border:none;outline:none}.kbq-accordion-trigger .kbq-accordion-trigger__icon{box-sizing:initial;align-self:flex-start;padding:var(--kbq-size-xxs);transition:transform .3s ease-out}.kbq-accordion-trigger .kbq-accordion-trigger__badge,.kbq-accordion-trigger .kbq-accordion-trigger__caption{margin-top:var(--kbq-size-xxs);margin-right:var(--kbq-size-s)}.kbq-accordion-trigger .kbq-accordion-trigger__action{padding:var(--kbq-size-xxs) var(--kbq-size-xxs) var(--kbq-size-3xs);margin-bottom:calc(-1 * var(--kbq-size-3xs))}.kbq-accordion-trigger:hover:not([data-disabled=true]){cursor:pointer}.kbq-accordion-trigger:hover:not([data-disabled=true]) .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-hover-icon-color)}.kbq-accordion-trigger.kbq-accordion-trigger_fill{padding:var(--kbq-accordion-size-item-header-variant-fill-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_fill[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug{flex-direction:row-reverse;justify-content:flex-end;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(90deg)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between{flex-direction:row-reverse;justify-content:space-between;padding:var(--kbq-accordion-size-item-header-variant-hug-padding)}.kbq-accordion-trigger.kbq-accordion-trigger_hug-space-between[data-state=open]>.kbq-accordion-trigger__icon{transform:rotate(-180deg)}.kbq-accordion-trigger[data-disabled=true] .kbq-accordion-trigger__icon{color:var(--kbq-accordion-item-states-disabled-icon-color)!important}button.kbq-accordion-trigger{flex:1}\n", ".kbq-accordion{--kbq-accordion-size-item-header-height: 36px;--kbq-accordion-size-item-header-variant-fill-padding: var(--kbq-size-xs) var(--kbq-size-s);--kbq-accordion-size-item-header-variant-hug-padding: var(--kbq-size-xs) var(--kbq-size-s) var(--kbq-size-xs) var(--kbq-size-m);--kbq-accordion-size-item-content-padding: 0px var(--kbq-size-m) var(--kbq-size-s) var(--kbq-size-m);--kbq-accordion-item-default-background: transparent;--kbq-accordion-item-default-text-color: var(--kbq-foreground-contrast);--kbq-accordion-item-default-icon-color: var(--kbq-icon-contrast-fade);--kbq-accordion-item-states-hover-icon-color: var(--kbq-icon-contrast);--kbq-accordion-item-states-focus-border-color: var(--kbq-line-theme);--kbq-accordion-item-states-disabled-text-color: var(--kbq-foreground-contrast-secondary);--kbq-accordion-item-states-disabled-icon-color: var(--kbq-states-icon-disabled)}\n"] }]
555
- }] });
556
-
557
599
  class KbqAccordionModule {
558
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
559
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionModule, imports: [KbqIcon,
600
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
601
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionModule, imports: [KbqIcon,
560
602
  KbqAccordion,
561
603
  KbqAccordionContent,
562
604
  KbqAccordionHeader,
@@ -566,10 +608,10 @@ class KbqAccordionModule {
566
608
  KbqAccordionHeader,
567
609
  KbqAccordionItem,
568
610
  KbqAccordionTrigger] }); }
569
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionModule, imports: [KbqIcon,
611
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionModule, imports: [KbqIcon,
570
612
  KbqAccordionTrigger] }); }
571
613
  }
572
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: KbqAccordionModule, decorators: [{
614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: KbqAccordionModule, decorators: [{
573
615
  type: NgModule,
574
616
  args: [{
575
617
  imports: [
@@ -594,5 +636,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
594
636
  * Generated bundle index. Do not edit.
595
637
  */
596
638
 
597
- export { KbqAccordion, KbqAccordionContent, KbqAccordionContentDirective, KbqAccordionHeader, KbqAccordionHeaderDirective, KbqAccordionItem, KbqAccordionItemDirective, KbqAccordionModule, KbqAccordionRootDirective, KbqAccordionRootToken, KbqAccordionTrigger, KbqAccordionTriggerDirective, KbqAccordionVariant };
639
+ export { KbqAccordion, KbqAccordionContent, KbqAccordionContentDirective, KbqAccordionHeader, KbqAccordionHeaderDirective, KbqAccordionItem, KbqAccordionModule, KbqAccordionTrigger, KbqAccordionTriggerDirective, KbqAccordionVariant };
598
640
  //# sourceMappingURL=koobiq-components-accordion.mjs.map