@koobiq/components 20.1.0 → 20.3.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 (249) hide show
  1. package/accordion/_accordion-theme.scss +6 -2
  2. package/accordion/accordion-tokens.scss +3 -0
  3. package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +10 -0
  4. package/accordion/accordion.scss +71 -0
  5. package/accordion/index.d.ts +264 -121
  6. package/actions-panel/index.d.ts +25 -13
  7. package/alert/_alert-theme.scss +14 -0
  8. package/alert/alert.component.scss +24 -13
  9. package/alert/index.d.ts +63 -29
  10. package/app-switcher/app-switcher-dropdown-app.scss +7 -5
  11. package/app-switcher/app-switcher-dropdown-site.scss +6 -4
  12. package/app-switcher/index.d.ts +41 -4
  13. package/app-switcher/kbq-app-switcher-list-item.scss +6 -8
  14. package/autocomplete/autocomplete.scss +2 -1
  15. package/autocomplete/index.d.ts +58 -37
  16. package/badge/index.d.ts +2 -3
  17. package/breadcrumbs/index.d.ts +1 -1
  18. package/button/index.d.ts +2 -2
  19. package/button-toggle/button-toggle-tokens.scss +2 -0
  20. package/button-toggle/button-toggle.scss +9 -0
  21. package/button-toggle/index.d.ts +5 -0
  22. package/checkbox/index.d.ts +33 -29
  23. package/clamped-text/index.d.ts +3 -2
  24. package/code-block/index.d.ts +24 -19
  25. package/content-panel/index.d.ts +1 -1
  26. package/core/index.d.ts +1217 -186
  27. package/core/option/_action-container-mixins.scss +28 -0
  28. package/core/option/_option-theme.scss +24 -0
  29. package/core/option/action.scss +7 -0
  30. package/core/styles/_core.scss +2 -0
  31. package/core/styles/_koobiq-theme.scss +2 -0
  32. package/core/styles/_tokens.scss +1 -0
  33. package/core/styles/common/_animation.scss +31 -24
  34. package/core/styles/common/_connected-overlay.scss +39 -0
  35. package/core/styles/common/_select.scss +19 -2
  36. package/core/styles/common/_tokens.scss +0 -9
  37. package/core/styles/theming/_index.scss +0 -1
  38. package/core/styles/theming/_theming.scss +34 -5
  39. package/datepicker/index.d.ts +46 -15
  40. package/dl/dl.scss +26 -0
  41. package/dl/index.d.ts +8 -1
  42. package/dropdown/_dropdown-theme.scss +28 -2
  43. package/dropdown/dropdown-item.scss +29 -0
  44. package/dropdown/dropdown-tokens.scss +2 -1
  45. package/dropdown/dropdown.scss +16 -1
  46. package/dropdown/index.d.ts +331 -17
  47. package/dynamic-translation/index.d.ts +1 -1
  48. package/fesm2022/koobiq-components-accordion.mjs +480 -317
  49. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  50. package/fesm2022/koobiq-components-actions-panel.mjs +57 -46
  51. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  52. package/fesm2022/koobiq-components-alert.mjs +98 -58
  53. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  54. package/fesm2022/koobiq-components-app-switcher.mjs +233 -38
  55. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  56. package/fesm2022/koobiq-components-autocomplete.mjs +89 -52
  57. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-badge.mjs +18 -17
  59. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  60. package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
  61. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  62. package/fesm2022/koobiq-components-button-toggle.mjs +17 -12
  63. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  64. package/fesm2022/koobiq-components-button.mjs +25 -25
  65. package/fesm2022/koobiq-components-checkbox.mjs +69 -92
  66. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  67. package/fesm2022/koobiq-components-clamped-text.mjs +18 -13
  68. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  69. package/fesm2022/koobiq-components-code-block.mjs +56 -69
  70. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-content-panel.mjs +29 -29
  72. package/fesm2022/koobiq-components-core.mjs +2485 -735
  73. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-datepicker.mjs +168 -126
  75. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-divider.mjs +7 -7
  77. package/fesm2022/koobiq-components-dl.mjs +23 -15
  78. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-dropdown.mjs +814 -136
  80. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
  82. package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
  83. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  84. package/fesm2022/koobiq-components-file-upload.mjs +74 -42
  85. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-filter-bar.mjs +783 -199
  87. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-flag.mjs +7 -7
  89. package/fesm2022/koobiq-components-form-field.mjs +350 -162
  90. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-icon.mjs +52 -25
  92. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-inline-edit.mjs +175 -28
  94. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-input.mjs +41 -24
  96. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-link.mjs +8 -8
  98. package/fesm2022/koobiq-components-list.mjs +657 -143
  99. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
  101. package/fesm2022/koobiq-components-markdown.mjs +14 -11
  102. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  103. package/fesm2022/koobiq-components-modal.mjs +59 -35
  104. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-navbar.mjs +177 -67
  106. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-notification-center.mjs +40 -24
  108. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-overflow-items.mjs +16 -17
  110. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  111. package/fesm2022/koobiq-components-popover.mjs +31 -21
  112. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  113. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  114. package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
  115. package/fesm2022/koobiq-components-radio.mjs +10 -10
  116. package/fesm2022/koobiq-components-resizer.mjs +33 -14
  117. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
  119. package/fesm2022/koobiq-components-search-expandable.mjs +49 -14
  120. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-select.mjs +450 -146
  122. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-sidebar.mjs +14 -14
  124. package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
  125. package/fesm2022/koobiq-components-skeleton.mjs +10 -10
  126. package/fesm2022/koobiq-components-split-button.mjs +10 -17
  127. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-splitter.mjs +17 -17
  129. package/fesm2022/koobiq-components-table.mjs +15 -13
  130. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-tabs.mjs +80 -68
  132. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-tags.mjs +283 -122
  134. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-textarea.mjs +13 -8
  136. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-time-range.mjs +29 -24
  138. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-timepicker.mjs +61 -30
  140. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-timezone.mjs +77 -42
  142. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  143. package/fesm2022/koobiq-components-title.mjs +7 -7
  144. package/fesm2022/koobiq-components-toast.mjs +51 -26
  145. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-toggle.mjs +72 -64
  147. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-tooltip.mjs +219 -28
  149. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-top-bar.mjs +13 -13
  151. package/fesm2022/koobiq-components-tree-select.mjs +222 -80
  152. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-tree.mjs +302 -81
  154. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-username.mjs +27 -27
  156. package/file-upload/index.d.ts +25 -6
  157. package/file-upload/multiple-file-upload.component.scss +14 -0
  158. package/filter-bar/_filter-bar-theme.scss +0 -10
  159. package/filter-bar/filter-bar-tokens.scss +3 -0
  160. package/filter-bar/filters.scss +3 -2
  161. package/filter-bar/index.d.ts +281 -9
  162. package/filter-bar/pipes/base-pipe.scss +0 -11
  163. package/filter-bar/pipes/pipe-input.scss +10 -0
  164. package/filter-bar/pipes/pipe-multi-tree-select.scss +0 -6
  165. package/filter-bar/pipes/pipe-multiselect.scss +0 -6
  166. package/filter-bar/pipes/pipe-tree-select.scss +0 -6
  167. package/form-field/_form-field-theme.scss +76 -20
  168. package/form-field/fieldset.scss +10 -0
  169. package/form-field/form-field-tokens.scss +15 -1
  170. package/form-field/form-field.scss +15 -19
  171. package/form-field/index.d.ts +147 -65
  172. package/icon/icon-button.scss +3 -1
  173. package/icon/index.d.ts +45 -7
  174. package/inline-edit/index.d.ts +57 -4
  175. package/inline-edit/inline-edit.scss +10 -0
  176. package/input/index.d.ts +17 -2
  177. package/list/_list-theme.scss +42 -10
  178. package/list/index.d.ts +326 -79
  179. package/list/list-tokens.scss +43 -8
  180. package/list/list.scss +186 -12
  181. package/markdown/index.d.ts +1 -1
  182. package/modal/index.d.ts +21 -4
  183. package/modal/modal-tokens.scss +1 -1
  184. package/navbar/_navbar-item_vertical.scss +7 -5
  185. package/navbar/index.d.ts +54 -5
  186. package/navbar/navbar-brand.scss +23 -7
  187. package/navbar/vertical-navbar.scss +6 -0
  188. package/notification-center/index.d.ts +2 -1
  189. package/notification-center/notification-item.scss +6 -0
  190. package/package.json +3 -6
  191. package/popover/index.d.ts +2 -2
  192. package/prebuilt-themes/dark-theme.css +1 -1
  193. package/prebuilt-themes/light-theme.css +1 -1
  194. package/prebuilt-themes/theme.css +1 -1
  195. package/resizer/index.d.ts +12 -0
  196. package/schematics/collection.json +10 -0
  197. package/schematics/migrations/alert-signals/README.md +64 -0
  198. package/schematics/migrations/alert-signals/data.js +70 -0
  199. package/schematics/migrations/alert-signals/index.js +350 -0
  200. package/schematics/migrations/alert-signals/schema.json +20 -0
  201. package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
  202. package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
  203. package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
  204. package/schematics/migrations/deprecated-icons/README.md +29 -4
  205. package/schematics/migrations/deprecated-icons/data.js +7 -0
  206. package/schematics/migrations/deprecated-icons/index.js +62 -35
  207. package/schematics/migrations/filter-bar-signals/README.md +1 -1
  208. package/schematics/migrations/new-icons-pack/README.md +37 -2
  209. package/schematics/migrations/new-icons-pack/data.js +8 -0
  210. package/schematics/migrations/new-icons-pack/index.js +144 -53
  211. package/schematics/migrations.json +11 -1
  212. package/schematics/ng-add/index.js +3 -3
  213. package/schematics/utils/angular-parsing.js +41 -14
  214. package/schematics/utils/ast.js +31 -0
  215. package/schematics/utils/icon-migration.js +530 -0
  216. package/schematics/utils/typescript.js +44 -0
  217. package/scrollbar/index.d.ts +1 -1
  218. package/search-expandable/index.d.ts +3 -0
  219. package/select/index.d.ts +212 -40
  220. package/select/select-tokens.scss +0 -1
  221. package/select/select.scss +0 -2
  222. package/splitter/index.d.ts +1 -1
  223. package/table/_table-theme.scss +4 -0
  224. package/table/index.d.ts +2 -1
  225. package/table/table.scss +8 -0
  226. package/tabs/_tabs-common.scss +60 -31
  227. package/tabs/_tabs-theme.scss +12 -0
  228. package/tabs/index.d.ts +2 -2
  229. package/tabs/tab-header.scss +14 -0
  230. package/tabs/tab-nav-bar.scss +4 -0
  231. package/tabs/tabs-tokens.scss +1 -0
  232. package/tags/index.d.ts +128 -29
  233. package/textarea/index.d.ts +5 -0
  234. package/time-range/index.d.ts +1 -1
  235. package/timepicker/index.d.ts +4 -0
  236. package/timezone/index.d.ts +10 -8
  237. package/toast/index.d.ts +26 -3
  238. package/toggle/index.d.ts +34 -14
  239. package/tooltip/index.d.ts +119 -7
  240. package/tree/_tree-theme.scss +25 -5
  241. package/tree/index.d.ts +71 -3
  242. package/tree/tree-option.scss +2 -8
  243. package/tree-select/_tree-select-theme.scss +22 -0
  244. package/tree-select/index.d.ts +127 -36
  245. package/accordion/accordion.component.scss +0 -50
  246. package/core/styles/_tokens.kbq.import.scss +0 -4
  247. package/core/styles/theming/_components-theming.scss +0 -1927
  248. package/filter-bar/pipes/pipe-select.scss +0 -5
  249. package/overflow-items/overflow-items.scss +0 -20
@@ -1,10 +1,10 @@
1
- import * as i0 from '@angular/core';
2
- import { ElementRef, AfterContentInit, TemplateRef, QueryList, InjectionToken, Provider, AfterViewInit, OnDestroy } from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
2
+ import { ElementRef, InjectionToken, AfterContentInit, TemplateRef, QueryList, Provider, AfterViewInit, OnDestroy } from '@angular/core';
3
3
  import * as i2 from '@angular/cdk/overlay';
4
4
  import { ScrollStrategy, Overlay } from '@angular/cdk/overlay';
5
5
  import { ControlValueAccessor } from '@angular/forms';
6
6
  import * as i1 from '@koobiq/components/core';
7
- import { ActiveDescendantKeyManager, KbqOption, KbqOptgroup, KeyboardNavigationHandler, KbqOptionSelectionChange } from '@koobiq/components/core';
7
+ import { ActiveDescendantKeyManager, KbqOption, KbqOptgroup, KbqPanelWidth, KbqPanelMaxWidth, KeyboardNavigationHandler, KbqSiblingPopup, KbqOptionSelectionChange } from '@koobiq/components/core';
8
8
  import { Observable } from 'rxjs';
9
9
 
10
10
  /**
@@ -13,14 +13,14 @@ import { Observable } from 'rxjs';
13
13
  */
14
14
  declare class KbqAutocompleteOrigin {
15
15
  elementRef: ElementRef<HTMLElement>;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqAutocompleteOrigin, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqAutocompleteOrigin, "[kbqAutocompleteOrigin]", ["kbqAutocompleteOrigin"], {}, {}, never, never, true, never>;
16
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAutocompleteOrigin, never>;
17
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqAutocompleteOrigin, "[kbqAutocompleteOrigin]", ["kbqAutocompleteOrigin"], {}, {}, never, never, true, never>;
18
18
  }
19
19
 
20
20
  /** Footer that is rendered below the autocomplete options panel. */
21
21
  declare class KbqAutocompleteFooter {
22
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqAutocompleteFooter, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqAutocompleteFooter, "[kbqAutocompleteFooter], kbq-autocomplete-footer", never, {}, {}, never, never, true, never>;
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAutocompleteFooter, never>;
23
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqAutocompleteFooter, "[kbqAutocompleteFooter], kbq-autocomplete-footer", never, {}, {}, never, never, true, never>;
24
24
  }
25
25
  declare class KbqAutocompleteSelectedEvent {
26
26
  source: KbqAutocomplete;
@@ -46,28 +46,36 @@ declare class KbqAutocomplete implements AfterContentInit {
46
46
  keyManager: ActiveDescendantKeyManager<KbqOption>;
47
47
  /** Whether the autocomplete panel should be visible, depending on option length. */
48
48
  showPanel: boolean;
49
- readonly template: i0.Signal<TemplateRef<any>>;
50
- readonly panel: i0.Signal<ElementRef<any>>;
49
+ readonly template: _angular_core.Signal<TemplateRef<any>>;
50
+ readonly panel: _angular_core.Signal<ElementRef<any>>;
51
51
  options: QueryList<KbqOption>;
52
- readonly optionGroups: i0.Signal<readonly KbqOptgroup[]>;
52
+ readonly optionGroups: _angular_core.Signal<readonly KbqOptgroup[]>;
53
53
  /** Function that maps an option's control value to its display value in the trigger. */
54
54
  displayWith: ((value: any) => string) | null;
55
55
  /**
56
- * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will
57
- * match the width of its host.
56
+ * Specify the width of the autocomplete panel. If set to `auto`, the panel will match the width of
57
+ * its host, but will never be narrower than `panelMinWidth`. Any other CSS sizing value is used as an
58
+ * exact width, and `panelMinWidth` is not applied. When not set, the panel sizes to its content and is
59
+ * at least as wide as its host.
58
60
  */
59
- panelWidth: string | number;
61
+ readonly panelWidth: _angular_core.InputSignal<KbqPanelWidth | undefined>;
60
62
  /**
61
63
  * Minimum width of the panel in pixels.
62
64
  * When panelWidth is not set, the panel will be at least as wide as its host and no less than panelMinWidth.
63
65
  */
64
- panelMinWidth: number;
66
+ readonly panelMinWidth: _angular_core.InputSignalWithTransform<number, unknown>;
67
+ /**
68
+ * Maximum width of the panel in pixels. Caps how far the panel grows with its content — it never makes
69
+ * the panel narrower than its host, and never clamps an explicit `panelWidth`.
70
+ * When null, the `--kbq-panel-size-width-max` token applies.
71
+ */
72
+ readonly panelMaxWidth: _angular_core.InputSignalWithTransform<KbqPanelMaxWidth, unknown>;
65
73
  /** Event that is emitted whenever an option from the list is selected. */
66
- readonly optionSelected: i0.OutputEmitterRef<KbqAutocompleteSelectedEvent>;
74
+ readonly optionSelected: _angular_core.OutputEmitterRef<KbqAutocompleteSelectedEvent>;
67
75
  /** Event that is emitted when the autocomplete panel is opened. */
68
- readonly opened: i0.OutputEmitterRef<void>;
76
+ readonly opened: _angular_core.OutputEmitterRef<void>;
69
77
  /** Event that is emitted when the autocomplete panel is closed. */
70
- readonly closed: i0.OutputEmitterRef<void>;
78
+ readonly closed: _angular_core.OutputEmitterRef<void>;
71
79
  /**
72
80
  * Takes classes set on the host kbq-autocomplete element and applies them to the panel
73
81
  * inside the overlay container to allow for easy styling.
@@ -96,19 +104,23 @@ declare class KbqAutocomplete implements AfterContentInit {
96
104
  emitSelectEvent(option: KbqOption): void;
97
105
  onKeydown(event: KeyboardEvent): any;
98
106
  private updateFocusClass;
99
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqAutocomplete, never>;
100
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqAutocomplete, "kbq-autocomplete", ["kbqAutocomplete"], { "displayWith": { "alias": "displayWith"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "classList": { "alias": "class"; "required": false; }; "autoActiveFirstOption": { "alias": "autoActiveFirstOption"; "required": false; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; }; }, { "optionSelected": "optionSelected"; "opened": "opened"; "closed": "closed"; }, ["optionGroups", "options"], ["*", "[kbqAutocompleteFooter], kbq-autocomplete-footer"], true, never>;
101
- static ngAcceptInputType_panelMinWidth: unknown;
107
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAutocomplete, never>;
108
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqAutocomplete, "kbq-autocomplete", ["kbqAutocomplete"], { "displayWith": { "alias": "displayWith"; "required": false; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; "isSignal": true; }; "panelMaxWidth": { "alias": "panelMaxWidth"; "required": false; "isSignal": true; }; "classList": { "alias": "class"; "required": false; }; "autoActiveFirstOption": { "alias": "autoActiveFirstOption"; "required": false; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; }; }, { "optionSelected": "optionSelected"; "opened": "opened"; "closed": "closed"; }, ["optionGroups", "options"], ["*", "[kbqAutocompleteFooter], kbq-autocomplete-footer"], true, never>;
102
109
  }
103
110
 
104
111
  /**
105
- * The following style constants are necessary to save here in order
106
- * to properly calculate the scrollTop of the panel. Because we are not
107
- * actually focusing the active item, scroll must be handled manually.
112
+ * The total height of the autocomplete panel.
113
+ *
114
+ * @deprecated Unused the panel is capped by `--kbq-autocomplete-size-panel-max-height` and reveals its
115
+ * active option through `KbqOption.focus`, so nothing computes a scroll offset from this. Will be removed
116
+ * in the next major release.
108
117
  */
109
- /** The total height of the autocomplete panel. */
110
118
  declare const AUTOCOMPLETE_PANEL_HEIGHT = 256;
111
- /** Injection token that determines the scroll handling while the autocomplete panel is open. */
119
+ /**
120
+ * Injection token that determines the scroll handling while the autocomplete panel is open. The root default
121
+ * keeps the trigger usable outside `KbqAutocompleteModule`'s injector; providing the token anywhere still wins
122
+ * over it.
123
+ */
112
124
  declare const KBQ_AUTOCOMPLETE_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>;
113
125
  declare function KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy;
114
126
  declare const KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER: {
@@ -126,14 +138,14 @@ declare const KBQ_AUTOCOMPLETE_VALUE_ACCESSOR: Provider;
126
138
  * @docs-private
127
139
  */
128
140
  declare function getKbqAutocompleteMissingPanelError(): Error;
129
- declare class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler {
141
+ declare class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAccessor, OnDestroy, KeyboardNavigationHandler, KbqSiblingPopup {
130
142
  private elementRef;
131
143
  private viewContainerRef;
132
144
  private changeDetectorRef;
133
145
  private overlay;
134
146
  private zone;
135
147
  private dir;
136
- private formField;
148
+ private readonly formField;
137
149
  private viewportRuler;
138
150
  protected readonly document: Document;
139
151
  readonly optionSelections: Observable<KbqOptionSelectionChange>;
@@ -141,17 +153,27 @@ declare class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAcces
141
153
  get activeOption(): KbqOption | null;
142
154
  get panelOpen(): boolean;
143
155
  /** The autocomplete panel to be attached to this trigger. */
144
- readonly autocomplete: i0.InputSignal<KbqAutocomplete>;
156
+ readonly autocomplete: _angular_core.InputSignal<KbqAutocomplete>;
157
+ /** Whether the autocomplete panel is currently on screen. Part of the `KbqSiblingPopup` contract. */
158
+ get isAttached(): boolean;
159
+ /**
160
+ * Emits `true` when the panel opens and `false` when it closes. Part of the `KbqSiblingPopup`
161
+ * contract.
162
+ *
163
+ * Built on top of the `autocomplete` signal rather than read once: the panel is bound after the consumers
164
+ * of this stream are created (a tooltip on the same element subscribes in its constructor).
165
+ */
166
+ readonly openedChange: Observable<boolean>;
145
167
  /**
146
168
  * Reference relative to which to position the autocomplete panel.
147
169
  * Defaults to the autocomplete trigger element.
148
170
  */
149
- readonly connectedTo: i0.InputSignal<KbqAutocompleteOrigin>;
171
+ readonly connectedTo: _angular_core.InputSignal<KbqAutocompleteOrigin>;
150
172
  /**
151
173
  * `autocomplete` attribute to be set on the input element.
152
174
  * @docs-private
153
175
  */
154
- readonly autocompleteAttribute: i0.InputSignal<string>;
176
+ readonly autocompleteAttribute: _angular_core.InputSignal<string>;
155
177
  /**
156
178
  * Whether the autocomplete is disabled. When disabled, the element will
157
179
  * act as a regular input and the user won't be able to open the panel.
@@ -163,7 +185,7 @@ declare class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAcces
163
185
  * Determines whether the blur event is triggered outside the specific target
164
186
  * @returns A boolean indicating if the blur event happened outside the target element
165
187
  */
166
- readonly onInputBlur: i0.InputSignal<(event: FocusEvent) => boolean>;
188
+ readonly onInputBlur: _angular_core.InputSignal<(event: FocusEvent) => boolean>;
167
189
  private _autocompleteDisabled;
168
190
  private overlayAttached;
169
191
  private overlayRef;
@@ -242,7 +264,6 @@ declare class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAcces
242
264
  private getOverlayConfig;
243
265
  private getOverlayPosition;
244
266
  private getConnectedElement;
245
- private getPanelMinWidth;
246
267
  private getOverlaySize;
247
268
  private getHostWidth;
248
269
  /**
@@ -251,14 +272,14 @@ declare class KbqAutocompleteTrigger implements AfterViewInit, ControlValueAcces
251
272
  */
252
273
  private resetActiveItem;
253
274
  private canOpen;
254
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqAutocompleteTrigger, never>;
255
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqAutocompleteTrigger, "input[kbqAutocomplete], textarea[kbqAutocomplete]", ["kbqAutocompleteTrigger"], { "autocomplete": { "alias": "kbqAutocomplete"; "required": false; "isSignal": true; }; "connectedTo": { "alias": "kbqAutocompleteConnectedTo"; "required": false; "isSignal": true; }; "autocompleteAttribute": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "autocompleteDisabled": { "alias": "kbqAutocompleteDisabled"; "required": false; }; "onInputBlur": { "alias": "kbqAutocompleteOnBlur"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
275
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAutocompleteTrigger, never>;
276
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqAutocompleteTrigger, "input[kbqAutocomplete], textarea[kbqAutocomplete]", ["kbqAutocompleteTrigger"], { "autocomplete": { "alias": "kbqAutocomplete"; "required": false; "isSignal": true; }; "connectedTo": { "alias": "kbqAutocompleteConnectedTo"; "required": false; "isSignal": true; }; "autocompleteAttribute": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "autocompleteDisabled": { "alias": "kbqAutocompleteDisabled"; "required": false; }; "onInputBlur": { "alias": "kbqAutocompleteOnBlur"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
256
277
  }
257
278
 
258
279
  declare class KbqAutocompleteModule {
259
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqAutocompleteModule, never>;
260
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqAutocompleteModule, never, [typeof i1.KbqOptionModule, typeof i2.OverlayModule, typeof KbqAutocomplete, typeof KbqAutocompleteTrigger, typeof KbqAutocompleteOrigin, typeof KbqAutocompleteFooter], [typeof KbqAutocomplete, typeof i1.KbqOptionModule, typeof KbqAutocompleteTrigger, typeof KbqAutocompleteOrigin, typeof KbqAutocompleteFooter]>;
261
- static ɵinj: i0.ɵɵInjectorDeclaration<KbqAutocompleteModule>;
280
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqAutocompleteModule, never>;
281
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<KbqAutocompleteModule, never, [typeof i1.KbqOptionModule, typeof i2.OverlayModule, typeof KbqAutocomplete, typeof KbqAutocompleteTrigger, typeof KbqAutocompleteOrigin, typeof KbqAutocompleteFooter], [typeof KbqAutocomplete, typeof i1.KbqOptionModule, typeof KbqAutocompleteTrigger, typeof KbqAutocompleteOrigin, typeof KbqAutocompleteFooter]>;
282
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<KbqAutocompleteModule>;
262
283
  }
263
284
 
264
285
  export { AUTOCOMPLETE_PANEL_HEIGHT, KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS, KBQ_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, KBQ_AUTOCOMPLETE_SCROLL_STRATEGY, KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, KBQ_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_AUTOCOMPLETE_VALUE_ACCESSOR, KbqAutocomplete, KbqAutocompleteFooter, KbqAutocompleteModule, KbqAutocompleteOrigin, KbqAutocompleteSelectedEvent, KbqAutocompleteTrigger, getKbqAutocompleteMissingPanelError };
package/badge/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import * as i0 from '@angular/core';
2
- import { AfterContentInit } from '@angular/core';
3
2
  import { KbqIconItem } from '@koobiq/components/icon';
4
3
  import * as i1 from '@angular/cdk/a11y';
5
4
  import * as i2 from '@angular/cdk/platform';
@@ -25,14 +24,14 @@ declare const leftIconClassName = "kbq-icon_left";
25
24
  declare const rightIconClassName = "kbq-icon_right";
26
25
  declare const badgeLeftIconClassName = "kbq-badge-icon_left";
27
26
  declare const badgeRightIconClassName = "kbq-badge-icon_right";
28
- declare class KbqBadgeCssStyler implements AfterContentInit {
27
+ declare class KbqBadgeCssStyler {
29
28
  private renderer;
30
29
  private cdr;
31
30
  readonly icons: i0.Signal<readonly any[]>;
32
31
  nativeElement: HTMLElement;
33
32
  isIconButton: boolean;
34
33
  constructor();
35
- ngAfterContentInit(): void;
34
+ /** @docs-private */
36
35
  updateClassModifierForIcons(): void;
37
36
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqBadgeCssStyler, never>;
38
37
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqBadgeCssStyler, "kbq-badge", never, {}, {}, ["icons"], never, true, never>;
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, OnDestroy, InjectionToken, Provider, TemplateRef } from '@angular/core';
2
+ import { OnInit, OnDestroy, InjectionToken, TemplateRef, Provider } from '@angular/core';
3
3
  import { RouterLink } from '@angular/router';
4
4
  import { KbqButtonStyles } from '@koobiq/components/button';
5
5
  import { KbqDefaultSizes, KbqComponentColors, PopUpPlacements } from '@koobiq/components/core';
package/button/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { AfterContentInit, OnDestroy, AfterViewInit, ElementRef } from '@angular/core';
3
- import { KbqColorDirective, KbqTitleTextRef, KbqComponentColors, ThemePalette, KbqOrientation } from '@koobiq/components/core';
2
+ import { OnDestroy, AfterViewInit, AfterContentInit, ElementRef } from '@angular/core';
3
+ import { KbqColorDirective, KbqTitleTextRef, KbqOrientation, KbqComponentColors, ThemePalette } from '@koobiq/components/core';
4
4
  import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
5
5
  import * as i1 from '@angular/cdk/a11y';
6
6
  import * as i2 from '@angular/cdk/platform';
@@ -3,6 +3,8 @@
3
3
  --kbq-button-toggle-size-container-padding-horizontal: var(--kbq-size-xxs);
4
4
  --kbq-button-toggle-size-container-padding-vertical: var(--kbq-size-xxs);
5
5
  --kbq-button-toggle-size-container-content-gap-horizontal: var(--kbq-size-xxs);
6
+ // 22px, not the design's 24px: the item's 1px border is outside this height. See the
7
+ // `box-sizing: content-box` in button-toggle.scss, which is what keeps that arithmetic true.
6
8
  --kbq-button-toggle-size-item-height: 22px;
7
9
  --kbq-button-toggle-size-item-border-radius: var(--kbq-size-xxs);
8
10
  --kbq-button-toggle-size-item-padding-horizontal: var(--kbq-size-s);
@@ -21,6 +21,15 @@
21
21
  justify-content: flex-start;
22
22
  align-items: center;
23
23
 
24
+ // Content-box on purpose, and load-bearing. `--kbq-button-toggle-size-item-height` is 22px,
25
+ // not the 24px of the design's `--kbq-size-xxl`: DS-3136 subtracted the border it added here
26
+ // from the token rather than from the rendered box, so the item only reaches its designed
27
+ // 24px while the border sits outside the declared height. A global `border-box` reset in a
28
+ // consuming application would pull the border back inside and leave the item 2px short —
29
+ // and the inner button, which is sized from the same token, would overflow the shrunken
30
+ // content box and be clipped by `overflow: hidden` above.
31
+ box-sizing: content-box;
32
+
24
33
  height: var(--kbq-button-toggle-size-item-height);
25
34
  min-height: var(--kbq-button-toggle-size-item-height);
26
35
 
@@ -147,6 +147,11 @@ declare class KbqButtonToggle implements OnInit, AfterContentInit, AfterViewInit
147
147
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqButtonToggle, "kbq-button-toggle", ["kbqButtonToggle"], { "checked": { "alias": "checked"; "required": false; }; "value": { "alias": "value"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "change": "change"; }, ["icons"], ["*"], true, never>;
148
148
  }
149
149
 
150
+ /**
151
+ * Entry point for `KbqButtonToggleGroup`/`KbqButtonToggle`. Both are standalone, so a bare
152
+ * `imports: [KbqButtonToggle]` works; this module is the convenience bundle that also pulls in
153
+ * `KbqButtonModule`/`KbqTitleModule` and re-exports the slot markers.
154
+ */
150
155
  declare class KbqButtonToggleModule {
151
156
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqButtonToggleModule, never>;
152
157
  static ɵmod: _angular_core.ɵɵNgModuleDeclaration<KbqButtonToggleModule, never, [typeof i1.KbqButtonModule, typeof i2.KbqTitleModule, typeof KbqButtonToggleGroup, typeof KbqButtonToggle], [typeof KbqButtonToggleGroup, typeof KbqButtonToggle]>;
@@ -1,7 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, AfterViewInit, OnDestroy, ElementRef, Provider } from '@angular/core';
3
3
  import { ControlValueAccessor, CheckboxRequiredValidator } from '@angular/forms';
4
- import { KbqColorDirective, KbqCheckedState } from '@koobiq/components/core';
4
+ import * as i1 from '@koobiq/components/core';
5
+ import { KbqCheckableClickAction, KbqColorDirective, KbqCheckedState } from '@koobiq/components/core';
6
+ export { TransitionCheckState } from '@koobiq/components/core';
5
7
 
6
8
  /**
7
9
  * Checkbox click action when user click on input element.
@@ -10,32 +12,19 @@ import { KbqColorDirective, KbqCheckedState } from '@koobiq/components/core';
10
12
  * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.
11
13
  * undefined: Same as `check-indeterminate`.
12
14
  */
13
- type KbqCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;
15
+ type KbqCheckboxClickAction = KbqCheckableClickAction;
14
16
  /**
15
17
  * Injection token that can be used to specify the checkbox click behavior.
16
18
  */
17
- declare const KBQ_CHECKBOX_CLICK_ACTION: InjectionToken<KbqCheckboxClickAction>;
19
+ declare const KBQ_CHECKBOX_CLICK_ACTION: InjectionToken<KbqCheckableClickAction>;
18
20
 
19
21
  /**
20
22
  * Provider Expression that allows kbq-checkbox to register as a ControlValueAccessor.
21
23
  * This allows it to support [(ngModel)].
22
24
  * @docs-private
25
+ * @deprecated Unused - the `ControlValueAccessor` is now registered by the `KbqCheckable` host directive.
23
26
  */
24
27
  declare const KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR: any;
25
- /**
26
- * Represents the different states that require custom transitions between them.
27
- * @docs-private
28
- */
29
- declare enum TransitionCheckState {
30
- /** The initial state of the component before any user interaction. */
31
- Init = "init",
32
- /** The state representing the component when it's becoming checked. */
33
- Checked = "checked",
34
- /** The state representing the component when it's becoming unchecked. */
35
- Unchecked = "unchecked",
36
- /** The state representing the component when it's becoming indeterminate. */
37
- Indeterminate = "indeterminate"
38
- }
39
28
  /** Change event object emitted by KbqCheckbox. */
40
29
  declare class KbqCheckboxChange {
41
30
  /** The source KbqCheckbox of the event. */
@@ -51,8 +40,9 @@ declare class KbqCheckboxChange {
51
40
  * have the checkbox be accessible, you may supply an [aria-label] input.
52
41
  */
53
42
  declare class KbqCheckbox extends KbqColorDirective implements ControlValueAccessor, AfterViewInit, OnDestroy {
54
- private changeDetectorRef;
55
- private focusMonitor;
43
+ private readonly changeDetectorRef;
44
+ private readonly focusMonitor;
45
+ private readonly checkable;
56
46
  readonly big: _angular_core.InputSignal<boolean>;
57
47
  /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */
58
48
  id: string;
@@ -79,14 +69,11 @@ declare class KbqCheckbox extends KbqColorDirective implements ControlValueAcces
79
69
  */
80
70
  get checked(): boolean;
81
71
  set checked(value: boolean);
82
- private _checked;
83
72
  /** Whether the checkbox is disabled. */
84
73
  get disabled(): boolean;
85
74
  set disabled(value: boolean);
86
- private _disabled;
87
75
  get tabIndex(): number;
88
76
  set tabIndex(value: number);
89
- private _tabIndex;
90
77
  /**
91
78
  * Whether the checkbox is indeterminate. This is also known as "mixed" mode and can be used to
92
79
  * represent a checkbox with three states, e.g. a checkbox that represents a nested list of
@@ -95,23 +82,42 @@ declare class KbqCheckbox extends KbqColorDirective implements ControlValueAcces
95
82
  */
96
83
  get indeterminate(): boolean;
97
84
  set indeterminate(value: boolean);
98
- private _indeterminate;
99
85
  private uniqueId;
100
- private currentAnimationClass;
101
- private currentCheckState;
102
86
  constructor();
103
87
  /**
104
88
  * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.
105
89
  * @docs-private
90
+ * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,
91
+ * so this is never called by Angular forms. Will be removed in the next major version.
106
92
  */
107
93
  onTouched: () => any;
108
94
  ngAfterViewInit(): void;
109
95
  ngOnDestroy(): void;
110
96
  /** Method being called whenever the label text changes. */
111
97
  onLabelTextChange(): void;
98
+ /**
99
+ * Implemented as part of ControlValueAccessor.
100
+ * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,
101
+ * so this is never called by Angular forms. Will be removed in the next major version.
102
+ */
112
103
  writeValue(value: any): void;
104
+ /**
105
+ * Implemented as part of ControlValueAccessor.
106
+ * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,
107
+ * so this is never called by Angular forms. Will be removed in the next major version.
108
+ */
113
109
  registerOnChange(fn: (value: any) => void): void;
110
+ /**
111
+ * Implemented as part of ControlValueAccessor.
112
+ * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,
113
+ * so this is never called by Angular forms. Will be removed in the next major version.
114
+ */
114
115
  registerOnTouched(fn: any): void;
116
+ /**
117
+ * Implemented as part of ControlValueAccessor.
118
+ * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,
119
+ * so this is never called by Angular forms. Will be removed in the next major version.
120
+ */
115
121
  setDisabledState(isDisabled: boolean): void;
116
122
  getAriaChecked(): KbqCheckedState;
117
123
  /** Toggles the `checked` state of the checkbox. */
@@ -127,13 +133,11 @@ declare class KbqCheckbox extends KbqColorDirective implements ControlValueAcces
127
133
  /** Focuses the checkbox. */
128
134
  focus(): void;
129
135
  onInteractionEvent(event: Event): void;
130
- private controlValueAccessorChangeFn;
131
- private transitionCheckState;
132
136
  private emitChangeEvent;
133
137
  /** Function is called whenever the focus changes for the input element. */
134
138
  private onInputFocusChange;
135
139
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqCheckbox, never>;
136
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqCheckbox, "kbq-checkbox", ["kbqCheckbox"], { "big": { "alias": "big"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "clickAction": { "alias": "clickAction"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; }, { "change": "change"; "indeterminateChange": "indeterminateChange"; }, never, ["*", "kbq-hint"], true, never>;
140
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqCheckbox, "kbq-checkbox", ["kbqCheckbox"], { "big": { "alias": "big"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "clickAction": { "alias": "clickAction"; "required": false; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; }, { "change": "change"; "indeterminateChange": "indeterminateChange"; }, never, ["*", "kbq-hint"], true, [{ directive: typeof i1.KbqCheckable; inputs: {}; outputs: {}; }]>;
137
141
  static ngAcceptInputType_disabled: unknown;
138
142
  static ngAcceptInputType_tabIndex: unknown;
139
143
  }
@@ -155,5 +159,5 @@ declare class KbqCheckboxModule {
155
159
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<KbqCheckboxModule>;
156
160
  }
157
161
 
158
- export { KBQ_CHECKBOX_CLICK_ACTION, KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR, KBQ_CHECKBOX_REQUIRED_VALIDATOR, KbqCheckbox, KbqCheckboxChange, KbqCheckboxModule, KbqCheckboxRequiredValidator, TransitionCheckState };
162
+ export { KBQ_CHECKBOX_CLICK_ACTION, KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR, KBQ_CHECKBOX_REQUIRED_VALIDATOR, KbqCheckbox, KbqCheckboxChange, KbqCheckboxModule, KbqCheckboxRequiredValidator };
159
163
  export type { KbqCheckboxClickAction };
@@ -1,7 +1,7 @@
1
1
  import * as _koobiq_components_core from '@koobiq/components/core';
2
2
  import { KbqClampedTextLocaleConfig } from '@koobiq/components/core';
3
3
  import * as _angular_core from '@angular/core';
4
- import { Signal, InjectionToken, Provider, AfterViewInit, ElementRef } from '@angular/core';
4
+ import { InjectionToken, Signal, Provider, OnInit, AfterViewInit, ElementRef } from '@angular/core';
5
5
 
6
6
  /**
7
7
  * Default maximum number of visible rows for the clamped text component
@@ -76,7 +76,7 @@ declare class KbqClampedListTrigger {
76
76
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqClampedListTrigger, "[kbqClampedListTrigger]", ["kbqClampedListTrigger"], {}, {}, never, never, true, never>;
77
77
  }
78
78
 
79
- declare class KbqClampedText implements KbqClamped, AfterViewInit {
79
+ declare class KbqClampedText implements KbqClamped, OnInit, AfterViewInit {
80
80
  /**
81
81
  * Max rows before text is clamped.
82
82
  * @default kbqClampedTextDefaultMaxRows
@@ -120,6 +120,7 @@ declare class KbqClampedText implements KbqClamped, AfterViewInit {
120
120
  */
121
121
  private isEventFromToggle;
122
122
  constructor();
123
+ ngOnInit(): void;
123
124
  ngAfterViewInit(): void;
124
125
  /** @docs-private */
125
126
  toggle(event: Event): void;
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { InjectionToken, Provider, AfterViewInit, TemplateRef } from '@angular/core';
2
+ import { InjectionToken, AfterViewInit, TemplateRef, Provider } from '@angular/core';
3
3
  import { CdkScrollable, ExtendedScrollToOptions } from '@angular/cdk/scrolling';
4
4
  import { KbqButtonStyles } from '@koobiq/components/button';
5
5
  import { KbqCodeBlockLocaleConfiguration, KbqComponentColors } from '@koobiq/components/core';
@@ -48,6 +48,18 @@ declare const kbqCodeBlockLocaleConfigurationProvider: (configuration: KbqCodeBl
48
48
  declare const KBQ_CODE_BLOCK_FALLBACK_FILE_NAME: InjectionToken<string>;
49
49
  /** Utility provider for `KBQ_CODE_BLOCK_FALLBACK_FILE_NAME`. */
50
50
  declare const kbqCodeBlockFallbackFileNameProvider: (fileName: string) => Provider;
51
+ /** Default options for `kbq-code-block`. */
52
+ type KbqCodeBlockDefaultOptions = Partial<{
53
+ /** Whether the actionbar should remain visible when tabs are hidden. */
54
+ alwaysShowActionbar: boolean;
55
+ }>;
56
+ /** Injection token used to configure the default options for all `kbq-code-block` components. */
57
+ declare const KBQ_CODE_BLOCK_DEFAULT_OPTIONS: InjectionToken<Partial<{
58
+ /** Whether the actionbar should remain visible when tabs are hidden. */
59
+ alwaysShowActionbar: boolean;
60
+ }>>;
61
+ /** Utility provider for `KBQ_CODE_BLOCK_DEFAULT_OPTIONS`. */
62
+ declare const kbqCodeBlockDefaultOptionsProvider: (options: KbqCodeBlockDefaultOptions) => Provider;
51
63
  /** Marks a template as a custom tab link. */
52
64
  declare class KbqCodeBlockTabLinkContent {
53
65
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqCodeBlockTabLinkContent, never>;
@@ -58,6 +70,7 @@ declare class KbqCodeBlockTabLinkContent {
58
70
  */
59
71
  declare class KbqCodeBlock implements AfterViewInit {
60
72
  private readonly copyButtonTooltip;
73
+ private readonly defaultOptions;
61
74
  /**
62
75
  * Reference to the scrollable code content.
63
76
  *
@@ -114,6 +127,8 @@ declare class KbqCodeBlock implements AfterViewInit {
114
127
  canDownload: boolean;
115
128
  /** Added copy code button. */
116
129
  readonly canCopy: _angular_core.InputSignalWithTransform<boolean, unknown>;
130
+ /** Whether the actionbar should remain visible when tabs are hidden. */
131
+ readonly alwaysShowActionbar: _angular_core.InputSignalWithTransform<boolean, unknown>;
117
132
  /**
118
133
  * @deprecated Will be removed in next major release, use `files` instead.
119
134
  */
@@ -141,7 +156,8 @@ declare class KbqCodeBlock implements AfterViewInit {
141
156
  */
142
157
  get hideTabs(): boolean;
143
158
  set hideTabs(value: boolean);
144
- private _hideTabs;
159
+ private readonly _hideTabs;
160
+ private readonly actionbarHovered;
145
161
  /**
146
162
  * Output to support two-way binding on `[(hideTabs)]` property.
147
163
  */
@@ -179,7 +195,6 @@ declare class KbqCodeBlock implements AfterViewInit {
179
195
  private readonly changeDetectorRef;
180
196
  private readonly localeService;
181
197
  private readonly destroyRef;
182
- private readonly renderer;
183
198
  private readonly platform;
184
199
  private readonly focusMonitor;
185
200
  private readonly clipboard;
@@ -191,6 +206,8 @@ declare class KbqCodeBlock implements AfterViewInit {
191
206
  */
192
207
  protected readonly fallbackFileName: string;
193
208
  private readonly window;
209
+ /** @docs-private */
210
+ protected readonly actionbarVisible: _angular_core.Signal<boolean>;
194
211
  constructor();
195
212
  ngAfterViewInit(): void;
196
213
  /**
@@ -222,21 +239,9 @@ declare class KbqCodeBlock implements AfterViewInit {
222
239
  * @docs-private
223
240
  */
224
241
  protected onSelectedTabChange(index: number): void;
225
- /**
226
- * Tracks hover events to show/hide the actionbar when `hideTabs` is `true`.
227
- * Reacts to `hideTabs` changes dynamically.
228
- */
242
+ /** Tracks hover when tabs are hidden and `alwaysShowActionbar` is disabled. */
229
243
  private trackHoverState;
230
244
  private setupContentOverflowDetection;
231
- /**
232
- * Adds or removes the actionbar display class from the code block based on the specified condition.
233
- *
234
- * The actionbar is always visible on mobile devices and when the tabs are visible.
235
- * Otherwise, the actionbar is only visible when the mouse is hovered over the code block.
236
- *
237
- * @param shouldShowActionbar - A boolean indicating whether the actionbar should be visible.
238
- */
239
- private setupActionbarDisplay;
240
245
  /** Whether the element has scroll. */
241
246
  private hasScroll;
242
247
  /**
@@ -271,7 +276,7 @@ declare class KbqCodeBlock implements AfterViewInit {
271
276
  */
272
277
  protected downloadCode(): void;
273
278
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqCodeBlock, never>;
274
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqCodeBlock, "kbq-code-block", ["kbqCodeBlock"], { "lineNumbers": { "alias": "lineNumbers"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "canToggleSoftWrap": { "alias": "canToggleSoftWrap"; "required": false; "isSignal": true; }; "softWrap": { "alias": "softWrap"; "required": false; }; "viewAll": { "alias": "viewAll"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "canLoad": { "alias": "canLoad"; "required": false; }; "canDownload": { "alias": "canDownload"; "required": false; }; "canCopy": { "alias": "canCopy"; "required": false; "isSignal": true; }; "codeFiles": { "alias": "codeFiles"; "required": false; }; "files": { "alias": "files"; "required": false; }; "activeFileIndex": { "alias": "activeFileIndex"; "required": false; }; "noBorder": { "alias": "noBorder"; "required": false; "isSignal": true; }; "hideTabs": { "alias": "hideTabs"; "required": false; }; }, { "softWrapChange": "softWrapChange"; "viewAllChange": "viewAllChange"; "activeFileIndexChange": "activeFileIndexChange"; "hideTabsChange": "hideTabsChange"; }, ["tabLinkTemplate"], never, true, never>;
279
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqCodeBlock, "kbq-code-block", ["kbqCodeBlock"], { "lineNumbers": { "alias": "lineNumbers"; "required": false; "isSignal": true; }; "filled": { "alias": "filled"; "required": false; "isSignal": true; }; "canToggleSoftWrap": { "alias": "canToggleSoftWrap"; "required": false; "isSignal": true; }; "softWrap": { "alias": "softWrap"; "required": false; }; "viewAll": { "alias": "viewAll"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "canLoad": { "alias": "canLoad"; "required": false; }; "canDownload": { "alias": "canDownload"; "required": false; }; "canCopy": { "alias": "canCopy"; "required": false; "isSignal": true; }; "alwaysShowActionbar": { "alias": "alwaysShowActionbar"; "required": false; "isSignal": true; }; "codeFiles": { "alias": "codeFiles"; "required": false; }; "files": { "alias": "files"; "required": false; }; "activeFileIndex": { "alias": "activeFileIndex"; "required": false; }; "noBorder": { "alias": "noBorder"; "required": false; "isSignal": true; }; "hideTabs": { "alias": "hideTabs"; "required": false; }; }, { "softWrapChange": "softWrapChange"; "viewAllChange": "viewAllChange"; "activeFileIndexChange": "activeFileIndexChange"; "hideTabsChange": "hideTabsChange"; }, ["tabLinkTemplate"], never, true, never>;
275
280
  static ngAcceptInputType_softWrap: unknown;
276
281
  static ngAcceptInputType_viewAll: unknown;
277
282
  static ngAcceptInputType_canLoad: unknown;
@@ -379,5 +384,5 @@ declare class KbqCodeBlockModule {
379
384
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<KbqCodeBlockModule>;
380
385
  }
381
386
 
382
- export { KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE, KBQ_CODE_BLOCK_FALLBACK_FILE_NAME, KBQ_CODE_BLOCK_HIGHLIGHT_JS_CONFIG, KBQ_CODE_BLOCK_LOCALE_CONFIGURATION, KbqCodeBlock, KbqCodeBlockHighlight, KbqCodeBlockModule, KbqCodeBlockTabLinkContent, kbqCodeBlockFallbackFileLanguageProvider, kbqCodeBlockFallbackFileNameProvider, kbqCodeBlockHighlightJsConfigProvider, kbqCodeBlockLocaleConfigurationProvider };
383
- export type { KbqCodeBlockFile, KbqCodeBlockHighlightJsConfig, KbqTabLinkTemplateContext };
387
+ export { KBQ_CODE_BLOCK_DEFAULT_OPTIONS, KBQ_CODE_BLOCK_FALLBACK_FILE_LANGUAGE, KBQ_CODE_BLOCK_FALLBACK_FILE_NAME, KBQ_CODE_BLOCK_HIGHLIGHT_JS_CONFIG, KBQ_CODE_BLOCK_LOCALE_CONFIGURATION, KbqCodeBlock, KbqCodeBlockHighlight, KbqCodeBlockModule, KbqCodeBlockTabLinkContent, kbqCodeBlockDefaultOptionsProvider, kbqCodeBlockFallbackFileLanguageProvider, kbqCodeBlockFallbackFileNameProvider, kbqCodeBlockHighlightJsConfigProvider, kbqCodeBlockLocaleConfigurationProvider };
388
+ export type { KbqCodeBlockDefaultOptions, KbqCodeBlockFile, KbqCodeBlockHighlightJsConfig, KbqTabLinkTemplateContext };
@@ -1,5 +1,5 @@
1
1
  import * as _koobiq_components_core from '@koobiq/components/core';
2
- import { KbqComponentColors, KbqOverflowShadowContainer } from '@koobiq/components/core';
2
+ import { KbqOverflowShadowContainer, KbqComponentColors } from '@koobiq/components/core';
3
3
  import * as i0 from '@angular/core';
4
4
  import { KbqButtonStyles } from '@koobiq/components/button';
5
5
  import { KbqResizerSizeChangeEvent } from '@koobiq/components/resizer';