@koobiq/components 20.0.0 → 20.2.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 (231) hide show
  1. package/accordion/_accordion-theme.scss +1 -1
  2. package/accordion/accordion-tokens.scss +1 -0
  3. package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +4 -18
  4. package/accordion/{accordion.component.scss → accordion.scss} +12 -5
  5. package/accordion/index.d.ts +215 -119
  6. package/actions-panel/index.d.ts +1 -0
  7. package/alert/_alert-theme.scss +14 -4
  8. package/alert/alert-tokens.scss +4 -4
  9. package/alert/alert.component.scss +24 -13
  10. package/alert/index.d.ts +63 -29
  11. package/app-switcher/app-switcher-dropdown-app.scss +2 -0
  12. package/autocomplete/autocomplete.scss +2 -1
  13. package/autocomplete/index.d.ts +35 -29
  14. package/badge/index.d.ts +2 -3
  15. package/breadcrumbs/breadcrumbs.scss +4 -0
  16. package/breadcrumbs/index.d.ts +2 -1
  17. package/button/button-group.scss +42 -2
  18. package/button-toggle/button-toggle.scss +23 -0
  19. package/button-toggle/index.d.ts +3 -1
  20. package/checkbox/checkbox.scss +5 -4
  21. package/clamped-text/index.d.ts +4 -2
  22. package/core/index.d.ts +515 -21
  23. package/core/styles/_core.scss +2 -0
  24. package/core/styles/common/_animation.scss +35 -24
  25. package/core/styles/common/_connected-overlay.scss +36 -0
  26. package/core/styles/common/_select.scss +7 -2
  27. package/core/styles/theming/_components-theming.scss +1 -1
  28. package/core/styles/theming/_scrollbar-theme.scss +4 -0
  29. package/datepicker/_datepicker-theme.scss +1 -1
  30. package/datepicker/datepicker-toggle.scss +3 -3
  31. package/dl/index.d.ts +1 -0
  32. package/dropdown/dropdown-item.scss +16 -0
  33. package/dropdown/dropdown-tokens.scss +2 -1
  34. package/dropdown/dropdown.scss +11 -2
  35. package/dropdown/index.d.ts +73 -6
  36. package/fesm2022/koobiq-components-accordion.mjs +406 -303
  37. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  38. package/fesm2022/koobiq-components-actions-panel.mjs +15 -6
  39. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  40. package/fesm2022/koobiq-components-alert.mjs +88 -48
  41. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  42. package/fesm2022/koobiq-components-app-switcher.mjs +7 -7
  43. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  44. package/fesm2022/koobiq-components-autocomplete.mjs +37 -23
  45. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  46. package/fesm2022/koobiq-components-badge.mjs +5 -4
  47. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  48. package/fesm2022/koobiq-components-breadcrumbs.mjs +6 -4
  49. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  50. package/fesm2022/koobiq-components-button-toggle.mjs +9 -6
  51. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  52. package/fesm2022/koobiq-components-button.mjs +4 -4
  53. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  54. package/fesm2022/koobiq-components-checkbox.mjs +2 -2
  55. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  56. package/fesm2022/koobiq-components-clamped-text.mjs +9 -0
  57. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  58. package/fesm2022/koobiq-components-code-block.mjs +5 -1
  59. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  60. package/fesm2022/koobiq-components-core.mjs +544 -113
  61. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  62. package/fesm2022/koobiq-components-datepicker.mjs +13 -10
  63. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  64. package/fesm2022/koobiq-components-dl.mjs +3 -2
  65. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  66. package/fesm2022/koobiq-components-dropdown.mjs +105 -31
  67. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  68. package/fesm2022/koobiq-components-file-upload.mjs +33 -22
  69. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-filter-bar.mjs +1169 -782
  71. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-flag.mjs +66 -0
  73. package/fesm2022/koobiq-components-flag.mjs.map +1 -0
  74. package/fesm2022/koobiq-components-form-field.mjs +6 -6
  75. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-icon.mjs +16 -7
  77. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-inline-edit.mjs +30 -7
  79. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-list.mjs +39 -20
  81. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
  83. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-modal.mjs +9 -5
  85. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-navbar.mjs +123 -27
  87. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-notification-center.mjs +193 -19
  89. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-overflow-items.mjs +12 -4
  91. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-popover.mjs +9 -4
  93. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
  95. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
  97. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-radio.mjs +3 -7
  99. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-search-expandable.mjs +43 -8
  101. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-select.mjs +72 -59
  103. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-sidebar.mjs +4 -0
  105. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
  107. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-skeleton.mjs +2 -2
  109. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-split-button.mjs +5 -12
  111. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-splitter.mjs +6 -2
  113. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-table.mjs +8 -6
  115. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-tabs.mjs +42 -18
  117. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-tags.mjs +8 -1
  119. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-textarea.mjs +7 -14
  121. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-time-range.mjs +4 -4
  123. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-timepicker.mjs +3 -4
  125. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  126. package/fesm2022/koobiq-components-timezone.mjs +9 -5
  127. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-title.mjs +132 -14
  129. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-toast.mjs +1 -1
  131. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-toggle.mjs +2 -2
  133. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-tooltip.mjs +168 -8
  135. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-tree-select.mjs +79 -38
  137. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-tree.mjs +67 -41
  139. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-username.mjs +16 -3
  141. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  142. package/file-upload/file-upload-tokens.scss +1 -0
  143. package/file-upload/index.d.ts +10 -7
  144. package/filter-bar/_filter-bar-theme.scss +82 -0
  145. package/filter-bar/filter-bar-tokens.scss +9 -0
  146. package/filter-bar/filter-bar.scss +10 -4
  147. package/filter-bar/filter-refresher.scss +1 -1
  148. package/filter-bar/filters.scss +25 -20
  149. package/filter-bar/index.d.ts +764 -336
  150. package/filter-bar/pipes/base-pipe.scss +12 -44
  151. package/filter-bar/pipes/pipe-date.scss +20 -14
  152. package/filter-bar/pipes/pipe-input.scss +10 -0
  153. package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
  154. package/filter-bar/pipes/pipe-multiselect.scss +5 -3
  155. package/filter-bar/pipes/pipe-readonly.scss +4 -13
  156. package/filter-bar/pipes/pipe-select.scss +3 -1
  157. package/filter-bar/pipes/pipe-tree-select.scss +3 -1
  158. package/flag/flag.scss +53 -0
  159. package/flag/index.d.ts +44 -0
  160. package/icon/icon-button.scss +3 -1
  161. package/icon/icon-item-tokens.scss +1 -1
  162. package/icon/index.d.ts +15 -2
  163. package/inline-edit/index.d.ts +5 -0
  164. package/inline-edit/inline-edit.scss +7 -7
  165. package/link/link-tokens.scss +2 -2
  166. package/list/index.d.ts +11 -2
  167. package/loader-overlay/loader-overlay-tokens.scss +1 -1
  168. package/modal/_modal-animation.scss +6 -6
  169. package/modal/_modal-theme.scss +5 -0
  170. package/modal/index.d.ts +3 -1
  171. package/modal/modal.scss +15 -0
  172. package/navbar/_navbar-item_vertical.scss +7 -5
  173. package/navbar/index.d.ts +39 -4
  174. package/navbar/navbar-brand.scss +17 -7
  175. package/navbar/navbar-item.scss +9 -0
  176. package/notification-center/_notification-center-theme.scss +2 -1
  177. package/notification-center/index.d.ts +89 -3
  178. package/notification-center/notification-center.scss +42 -4
  179. package/notification-center/notification-item.scss +3 -2
  180. package/overflow-items/index.d.ts +1 -0
  181. package/package.json +7 -3
  182. package/prebuilt-themes/dark-theme.css +1 -1
  183. package/prebuilt-themes/light-theme.css +1 -1
  184. package/prebuilt-themes/theme.css +1 -1
  185. package/progress-bar/progress-bar.scss +4 -0
  186. package/progress-spinner/progress-spinner.scss +5 -1
  187. package/radio/index.d.ts +1 -5
  188. package/radio/radio.scss +18 -4
  189. package/schematics/collection.json +15 -0
  190. package/schematics/migrations/alert-signals/README.md +64 -0
  191. package/schematics/migrations/alert-signals/data.js +70 -0
  192. package/schematics/migrations/alert-signals/index.js +350 -0
  193. package/schematics/migrations/alert-signals/schema.json +20 -0
  194. package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
  195. package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
  196. package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
  197. package/schematics/migrations/filter-bar-signals/README.md +66 -0
  198. package/schematics/migrations/filter-bar-signals/data.js +72 -0
  199. package/schematics/migrations/filter-bar-signals/index.js +316 -0
  200. package/schematics/migrations/filter-bar-signals/schema.json +20 -0
  201. package/schematics/migrations.json +15 -0
  202. package/schematics/ng-add/index.js +1 -1
  203. package/schematics/utils/angular-parsing.js +11 -2
  204. package/search-expandable/index.d.ts +3 -0
  205. package/select/index.d.ts +59 -24
  206. package/sidebar/index.d.ts +1 -0
  207. package/skeleton/skeleton.scss +4 -0
  208. package/split-button/_split-button-theme.scss +2 -2
  209. package/splitter/_splitter-theme.scss +2 -2
  210. package/splitter/index.d.ts +1 -0
  211. package/table/_table-theme.scss +4 -0
  212. package/table/index.d.ts +3 -2
  213. package/tabs/_tabs-common.scss +60 -31
  214. package/tabs/_tabs-theme.scss +12 -0
  215. package/tabs/index.d.ts +4 -2
  216. package/tabs/tab-header.scss +15 -0
  217. package/tabs/tab-nav-bar.scss +4 -0
  218. package/tabs/tabs-tokens.scss +2 -1
  219. package/textarea/index.d.ts +0 -1
  220. package/time-range/time-range.scss +0 -8
  221. package/timepicker/timepicker.scss +2 -2
  222. package/timezone/index.d.ts +2 -3
  223. package/title/index.d.ts +92 -2
  224. package/tooltip/index.d.ts +124 -7
  225. package/tree/_tree-theme.scss +2 -7
  226. package/tree/index.d.ts +19 -4
  227. package/tree/toggle.scss +5 -0
  228. package/tree/tree-option.scss +0 -4
  229. package/tree-select/_tree-select-theme.scss +1 -1
  230. package/tree-select/index.d.ts +53 -22
  231. package/username/index.d.ts +20 -2
@@ -6,7 +6,7 @@ import * as i1 from '@angular/cdk/overlay';
6
6
  import { ConnectedPosition, CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
7
7
  import { ControlValueAccessor, NgForm, FormGroupDirective, NgControl } from '@angular/forms';
8
8
  import * as i5 from '@koobiq/components/core';
9
- import { KbqAbstractSelect, CanUpdateErrorState, ErrorStateMatcher, KbqSelectTrigger, KbqSelectMatcher, KbqSelectSearch, KbqComponentColors } from '@koobiq/components/core';
9
+ import { KbqPanelWidth, KbqPanelMinWidth, KbqPanelMaxWidth, KbqAbstractSelect, CanUpdateErrorState, ErrorStateMatcher, KbqSelectTrigger, KbqSelectMatcher, KbqSelectSearch, KbqSelectAllEvent, KbqComponentColors } from '@koobiq/components/core';
10
10
  import * as i9 from '@koobiq/components/form-field';
11
11
  import { KbqFormFieldControl, KbqCleaner } from '@koobiq/components/form-field';
12
12
  import * as i4 from '@koobiq/components/tags';
@@ -24,19 +24,27 @@ type KbqTreeSelectTriggerValue = {
24
24
  value: string;
25
25
  viewValue: string;
26
26
  };
27
- /** Tree select panel width type. */
28
- type KbqTreeSelectPanelWidth = 'auto' | number | null;
27
+ /**
28
+ * Tree select panel width type.
29
+ * @deprecated Use `KbqPanelWidth` from `@koobiq/components/core` instead.
30
+ */
31
+ type KbqTreeSelectPanelWidth = KbqPanelWidth;
29
32
  /** Options for the `kbq-tree-select` that can be configured using the `KBQ_TREE_SELECT_OPTIONS` injection token. */
30
33
  type KbqTreeSelectOptions = Partial<{
31
34
  /**
32
35
  * Width of the panel. If set to `auto`, the panel will match the trigger width.
33
36
  * If set to null or an empty string, the panel will grow to match the longest option's text.
34
37
  */
35
- panelWidth: KbqTreeSelectPanelWidth;
38
+ panelWidth: KbqPanelWidth;
36
39
  /**
37
40
  * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.
38
41
  */
39
- panelMinWidth: Exclude<KbqTreeSelectPanelWidth, 'auto'>;
42
+ panelMinWidth: KbqPanelMinWidth;
43
+ /**
44
+ * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an
45
+ * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.
46
+ */
47
+ panelMaxWidth: KbqPanelMaxWidth;
40
48
  /**
41
49
  * Whether to enable hiding search by default if options is less than minimum.
42
50
  *
@@ -52,11 +60,16 @@ declare const KBQ_TREE_SELECT_OPTIONS: InjectionToken<Partial<{
52
60
  * Width of the panel. If set to `auto`, the panel will match the trigger width.
53
61
  * If set to null or an empty string, the panel will grow to match the longest option's text.
54
62
  */
55
- panelWidth: KbqTreeSelectPanelWidth;
63
+ panelWidth: KbqPanelWidth;
56
64
  /**
57
65
  * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.
58
66
  */
59
- panelMinWidth: Exclude<KbqTreeSelectPanelWidth, "auto">;
67
+ panelMinWidth: KbqPanelMinWidth;
68
+ /**
69
+ * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an
70
+ * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.
71
+ */
72
+ panelMaxWidth: KbqPanelMaxWidth;
60
73
  /**
61
74
  * Whether to enable hiding search by default if options is less than minimum.
62
75
  *
@@ -115,11 +128,20 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
115
128
  /** Strategy that will be used to handle scrolling while the select panel is open. */
116
129
  scrollStrategy: _angular_cdk_overlay_module_d.ScrollStrategy;
117
130
  /**
118
- * The y-offset of the overlay panel in relation to the trigger's top start corner.
119
- * This must be adjusted to align the selected option text over the trigger text.
120
- * when the panel opens. Will change based on the y-position of the selected option.
131
+ * The y-offset of the overlay panel in relation to the trigger.
132
+ *
133
+ * @deprecated noop. The trigger↔panel gap is now controlled by the `--kbq-connected-overlay-gap` CSS
134
+ * variable (transparent padding inside the pane via the `kbq-connected-overlay_below/_above` panel
135
+ * classes), not by a physical overlay offset — so setting this has no effect. Will be removed in 21.0.0.
121
136
  */
122
137
  offsetY: number;
138
+ /**
139
+ * Minimum space to keep between the overlay and the viewport edge.
140
+ * At least `defaultOffsetY` so CDK's fit check — which runs before the `kbq-connected-overlay_below/_above`
141
+ * gap padding is applied to the pane — stays conservative enough to absorb that padding instead of
142
+ * letting the panel overflow the viewport by the size of the gap.
143
+ */
144
+ protected readonly viewportMargin: number;
123
145
  /**
124
146
  * This position config ensures that the top "start" corner of the overlay
125
147
  * is aligned with with the top "start" of the origin by default (overlapping
@@ -132,7 +154,8 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
132
154
  * Trigger - is a clickable field to open select dropdown panel
133
155
  */
134
156
  readonly trigger: _angular_core.Signal<ElementRef<any>>;
135
- readonly panel: _angular_core.Signal<ElementRef<any>>;
157
+ /** Reference to the overlay panel element. */
158
+ readonly panel: _angular_core.Signal<ElementRef<any> | undefined>;
136
159
  overlayDir: CdkConnectedOverlay;
137
160
  tags: QueryList<KbqTag>;
138
161
  readonly cleaner: _angular_core.Signal<KbqCleaner | undefined>;
@@ -151,6 +174,11 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
151
174
  readonly closedStream: Observable<void>;
152
175
  /** Event emitted when the selected value has been changed by the user. */
153
176
  readonly selectionChange: _angular_core.OutputEmitterRef<KbqTreeSelectChange>;
177
+ /**
178
+ * Event emitted when all options are selected or deselected via the Ctrl/Cmd + A shortcut.
179
+ * Not emitted when a custom `selectAllHandler` is supplied — the handler owns the behaviour then.
180
+ */
181
+ readonly onSelectAll: _angular_core.OutputEmitterRef<KbqSelectAllEvent<KbqTreeOption, KbqTreeSelect>>;
154
182
  /**
155
183
  * Event that emits whenever the raw value of the select changes. This is here primarily
156
184
  * to facilitate the two-way binding for the `value` input.
@@ -189,6 +217,8 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
189
217
  get autoSelect(): boolean;
190
218
  set autoSelect(value: boolean);
191
219
  private _autoSelect;
220
+ /** When `true`, a repeated Ctrl/Cmd+A deselects all options. Off by default (Ctrl+A only selects). */
221
+ readonly selectAllToggle: _angular_core.InputSignalWithTransform<boolean, unknown>;
192
222
  get value(): any;
193
223
  get id(): string;
194
224
  set id(value: string);
@@ -215,22 +245,25 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
215
245
  /** Whether multiple choice is enabled or not. True if multiple or multiline */
216
246
  get multiSelection(): boolean;
217
247
  private _focused;
218
- /** Width of the overlay panel. */
219
- protected overlayWidth: string | number;
220
- /** Min width of the overlay panel. */
221
- protected overlayMinWidth: string | number;
222
248
  /**
223
249
  * Minimum width of the panel.
224
250
  * If minWidth is larger than window width, it will be ignored.
225
251
  */
226
- readonly panelMinWidth: _angular_core.InputSignalWithTransform<number | null, unknown>;
252
+ readonly panelMinWidth: _angular_core.InputSignalWithTransform<KbqPanelMinWidth, unknown>;
227
253
  /** Origin for the overlay panel. */
228
254
  protected overlayOrigin?: CdkOverlayOrigin | ElementRef;
229
255
  /**
230
- * Width of the panel. If set to `auto`, the panel will match the trigger width.
231
- * If set to null or an empty string, the panel will grow to match the longest option's text.
256
+ * Width of the panel. If set to `auto`, the panel will match the trigger width, but will never be
257
+ * narrower than `panelMinWidth`. If set to null or an empty string, the panel will grow to match the
258
+ * longest option's text. Any other value is used as an exact width, and `panelMinWidth` is not applied.
259
+ */
260
+ readonly panelWidth: _angular_core.InputSignal<KbqPanelWidth>;
261
+ /**
262
+ * Maximum width of the panel in pixels. Caps how far the panel grows with its content — it never makes
263
+ * the panel narrower than the trigger, and never clamps an explicit `panelWidth`.
264
+ * When null, the `--kbq-panel-size-width-max` token applies.
232
265
  */
233
- readonly panelWidth: _angular_core.InputSignal<KbqTreeSelectPanelWidth>;
266
+ readonly panelMaxWidth: _angular_core.InputSignalWithTransform<KbqPanelMaxWidth, unknown>;
234
267
  /**
235
268
  * Controls when the search functionality is displayed based on the number of available options.
236
269
  *
@@ -340,8 +373,6 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
340
373
  private closingActions;
341
374
  private getTotalItemsWidthInMatcher;
342
375
  private getTotalVisibleItems;
343
- /** Gets how wide the overlay panel should be. */
344
- private getOverlayWidth;
345
376
  private buildTriggerClone;
346
377
  private getItemWidth;
347
378
  private refreshTriggerValues;
@@ -362,7 +393,7 @@ declare class KbqTreeSelect extends KbqAbstractSelect implements AfterContentIni
362
393
  private scrollActiveOptionIntoView;
363
394
  private subscribeOnSearchChanges;
364
395
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTreeSelect, never>;
365
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; "isSignal": true; }; "multiline": { "alias": "multiline"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "autoSelect": { "alias": "autoSelect"; "required": false; }; "id": { "alias": "id"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "searchMinOptionsThreshold": { "alias": "searchMinOptionsThreshold"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "valueChange": "valueChange"; }, ["cleaner", "customTrigger", "customMatcher", "customTagTemplateRef", "tree", "search"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "kbq-tree-selection", "kbq-select-footer,[kbq-tree-select-footer]"], true, never>;
396
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqTreeSelect, "kbq-tree-select", ["kbqTreeSelect"], { "hiddenItemsText": { "alias": "hiddenItemsText"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; "backdropClass": { "alias": "backdropClass"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "sortComparator": { "alias": "sortComparator"; "required": false; "isSignal": true; }; "multiline": { "alias": "multiline"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "autoSelect": { "alias": "autoSelect"; "required": false; }; "selectAllToggle": { "alias": "selectAllToggle"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; "hasBackdrop": { "alias": "hasBackdrop"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "selectAllHandler": { "alias": "selectAllHandler"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; "isSignal": true; }; "panelWidth": { "alias": "panelWidth"; "required": false; "isSignal": true; }; "panelMaxWidth": { "alias": "panelMaxWidth"; "required": false; "isSignal": true; }; "searchMinOptionsThreshold": { "alias": "searchMinOptionsThreshold"; "required": false; }; "hiddenItemsTextFormatter": { "alias": "hiddenItemsTextFormatter"; "required": false; }; }, { "openedChange": "openedChange"; "openedStream": "opened"; "closedStream": "closed"; "selectionChange": "selectionChange"; "onSelectAll": "onSelectAll"; "valueChange": "valueChange"; }, ["cleaner", "customTrigger", "customMatcher", "customTagTemplateRef", "tree", "search"], ["kbq-select-matcher, [kbq-select-matcher]", "kbq-select-trigger, [kbq-select-trigger]", "kbq-cleaner", "[kbqSelectSearch]", "[kbq-select-search-empty-result]", "kbq-tree-selection", "kbq-select-footer,[kbq-tree-select-footer]"], true, never>;
366
397
  static ngAcceptInputType_multiple: unknown;
367
398
  static ngAcceptInputType_disabled: unknown;
368
399
  }
@@ -165,6 +165,24 @@ declare class KbqUsernameCustomPipe<T = unknown> implements PipeTransform {
165
165
  static ɵpipe: i0.ɵɵPipeDeclaration<KbqUsernameCustomPipe<any>, "kbqUsernameCustom", true>;
166
166
  static ɵprov: i0.ɵɵInjectableDeclaration<KbqUsernameCustomPipe<any>>;
167
167
  }
168
+ interface KbqUsernameTextOptions {
169
+ /** Formats the login segment. Defaults to identity. */
170
+ formatLogin?: (login: string) => string;
171
+ /**
172
+ * Formats the site segment.
173
+ * Defaults to wrapping in parentheses, matching kbq-username display.
174
+ */
175
+ formatSite?: (site: string) => string;
176
+ }
177
+ /**
178
+ * Builds a full username string from a pre-formatted name plus optional login and site,
179
+ * mirroring the text rendered by `kbq-username`.
180
+ *
181
+ * Provide custom `formatLogin` / `formatSite` to tailor the output.
182
+ */
183
+ declare function kbqBuildUsernameText(data: {
184
+ name: string;
185
+ } & Partial<Pick<KbqUserInfo, 'login' | 'site'>>, options?: KbqUsernameTextOptions): string;
168
186
 
169
187
  declare class KbqUsernameModule {
170
188
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqUsernameModule, never>;
@@ -172,5 +190,5 @@ declare class KbqUsernameModule {
172
190
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqUsernameModule>;
173
191
  }
174
192
 
175
- export { KBQ_PROFILE_MAPPING, KbqMappingMissingError, KbqUsername, KbqUsernameCustomPipe, KbqUsernameCustomView, KbqUsernameFormatKey, KbqUsernameModule, KbqUsernamePipe, KbqUsernamePrimary, KbqUsernameSecondary, KbqUsernameSecondaryHint, kbqDefaultFullNameFormat, kbqDefaultFullNameFormatCustom };
176
- export type { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUserInfo, KbqUsernameMode, KbqUsernameStyle };
193
+ export { KBQ_PROFILE_MAPPING, KbqMappingMissingError, KbqUsername, KbqUsernameCustomPipe, KbqUsernameCustomView, KbqUsernameFormatKey, KbqUsernameModule, KbqUsernamePipe, KbqUsernamePrimary, KbqUsernameSecondary, KbqUsernameSecondaryHint, kbqBuildUsernameText, kbqDefaultFullNameFormat, kbqDefaultFullNameFormatCustom };
194
+ export type { KbqFormatKeyToProfileMapping, KbqFormatKeyToProfileMappingExtended, KbqUserInfo, KbqUsernameMode, KbqUsernameStyle, KbqUsernameTextOptions };