@koobiq/components 21.0.1 → 21.1.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 (180) hide show
  1. package/badge/_badge-theme.scss +31 -0
  2. package/breadcrumbs/breadcrumbs.scss +5 -1
  3. package/checkbox/_checkbox-theme.scss +0 -17
  4. package/checkbox/checkbox-tokens.scss +0 -4
  5. package/code-block/_code-block-theme.scss +7 -6
  6. package/code-block/code-block-tokens.scss +8 -4
  7. package/code-block/code-block.scss +54 -32
  8. package/content-panel/content-panel-header.scss +2 -3
  9. package/content-panel/content-panel.scss +3 -0
  10. package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
  11. package/fesm2022/koobiq-components-accordion.mjs +4 -4
  12. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  13. package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
  14. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  15. package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
  16. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  17. package/fesm2022/koobiq-components-badge.mjs +2 -2
  18. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  19. package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
  20. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  21. package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
  22. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  23. package/fesm2022/koobiq-components-checkbox.mjs +18 -8
  24. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  25. package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
  26. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  27. package/fesm2022/koobiq-components-code-block.mjs +63 -379
  28. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  29. package/fesm2022/koobiq-components-content-panel.mjs +4 -4
  30. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  31. package/fesm2022/koobiq-components-core.mjs +300 -37
  32. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  33. package/fesm2022/koobiq-components-datepicker.mjs +151 -60
  34. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  35. package/fesm2022/koobiq-components-divider.mjs +3 -3
  36. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  37. package/fesm2022/koobiq-components-dropdown.mjs +3 -3
  38. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  39. package/fesm2022/koobiq-components-file-upload.mjs +17 -8
  40. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  41. package/fesm2022/koobiq-components-filter-bar.mjs +115 -36
  42. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  43. package/fesm2022/koobiq-components-flag.mjs +3 -3
  44. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-form-field.mjs +90 -27
  46. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-icon.mjs +2 -2
  48. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
  50. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-input.mjs +76 -17
  52. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-list.mjs +1 -1
  54. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-modal.mjs +3 -3
  56. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-navbar.mjs +86 -25
  58. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  59. package/fesm2022/koobiq-components-notification-center.mjs +4 -4
  60. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  61. package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
  62. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  63. package/fesm2022/koobiq-components-popover.mjs +86 -7
  64. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  65. package/fesm2022/koobiq-components-radio.mjs +41 -19
  66. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  67. package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
  68. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  69. package/fesm2022/koobiq-components-select.mjs +49 -12
  70. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
  72. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-splitter.mjs +49 -25
  74. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-tabs.mjs +30 -11
  76. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-tags.mjs +1 -1
  78. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-textarea.mjs +28 -11
  80. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-time-range.mjs +2 -2
  82. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-timepicker.mjs +71 -16
  84. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  86. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-toast.mjs +2 -2
  88. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-toggle.mjs +25 -9
  90. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-tooltip.mjs +90 -17
  92. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-top-bar.mjs +27 -7
  94. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-tree-select.mjs +4 -4
  96. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-tree.mjs +71 -27
  98. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  99. package/file-upload/_file-upload-theme.scss +0 -12
  100. package/file-upload/file-upload-tokens.scss +0 -1
  101. package/file-upload/file-upload.scss +0 -1
  102. package/filter-bar/_filter-bar-theme.scss +7 -8
  103. package/filter-bar/filter-bar.scss +0 -1
  104. package/filter-bar/pipes/base-pipe.scss +36 -2
  105. package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
  106. package/form-field/_fieldset-theme.scss +2 -7
  107. package/form-field/_form-field-theme.scss +9 -22
  108. package/form-field/_hint-theme.scss +20 -0
  109. package/form-field/fieldset-tokens.scss +0 -1
  110. package/form-field/fieldset.scss +0 -3
  111. package/form-field/form-field-tokens.scss +1 -1
  112. package/form-field/form-field.scss +9 -0
  113. package/form-field/hint-tokens.scss +3 -0
  114. package/modal/modal.scss +2 -0
  115. package/navbar/_navbar-item_vertical.scss +48 -2
  116. package/navbar/_navbar-theme.scss +11 -3
  117. package/navbar/navbar-item.scss +17 -0
  118. package/navbar/navbar-tokens.scss +3 -0
  119. package/package.json +4 -4
  120. package/popover/popover.scss +1 -1
  121. package/radio/_radio-theme.scss +0 -30
  122. package/radio/radio-tokens.scss +0 -2
  123. package/schematics/migrations/deprecated-icons/README.md +21 -5
  124. package/schematics/migrations/deprecated-icons/index.cjs +8 -22
  125. package/schematics/migrations/deprecated-icons/schema.json +1 -1
  126. package/schematics/migrations/icons-replacement/README.md +16 -2
  127. package/schematics/migrations/icons-replacement/index.cjs +18 -16
  128. package/schematics/migrations/icons-replacement/schema.json +12 -3
  129. package/schematics/migrations/new-icons-pack/README.md +37 -25
  130. package/schematics/migrations/new-icons-pack/index.cjs +22 -32
  131. package/schematics/migrations/new-icons-pack/replacement.json +2 -14
  132. package/schematics/migrations/new-icons-pack/schema.json +3 -3
  133. package/schematics/ng-add/index.cjs +4 -4
  134. package/schematics/utils/custom-data.cjs +64 -0
  135. package/schematics/utils/icon-migration.cjs +9 -3
  136. package/schematics/utils/messages.cjs +4 -0
  137. package/schematics/utils/package-config.cjs +19 -0
  138. package/select/select.scss +7 -0
  139. package/tabs/_tabs-common.scss +23 -0
  140. package/textarea/textarea-tokens.scss +4 -1
  141. package/toast/toast.component.scss +1 -0
  142. package/toggle/_toggle-theme.scss +0 -17
  143. package/tooltip/tooltip.scss +1 -1
  144. package/top-bar/top-bar-tokens.scss +1 -0
  145. package/top-bar/top-bar.scss +10 -0
  146. package/types/koobiq-components-accordion.d.ts +25 -0
  147. package/types/koobiq-components-button-toggle.d.ts +6 -0
  148. package/types/koobiq-components-checkbox.d.ts +30 -0
  149. package/types/koobiq-components-clamped-text.d.ts +16 -3
  150. package/types/koobiq-components-code-block.d.ts +17 -3
  151. package/types/koobiq-components-core.d.ts +226 -13
  152. package/types/koobiq-components-datepicker.d.ts +28 -1
  153. package/types/koobiq-components-divider.d.ts +28 -10
  154. package/types/koobiq-components-dropdown.d.ts +19 -0
  155. package/types/koobiq-components-filter-bar.d.ts +77 -4
  156. package/types/koobiq-components-flag.d.ts +18 -0
  157. package/types/koobiq-components-form-field.d.ts +87 -6
  158. package/types/koobiq-components-icon.d.ts +15 -0
  159. package/types/koobiq-components-inline-edit.d.ts +8 -1
  160. package/types/koobiq-components-input.d.ts +22 -3
  161. package/types/koobiq-components-list.d.ts +6 -0
  162. package/types/koobiq-components-modal.d.ts +7 -0
  163. package/types/koobiq-components-navbar.d.ts +71 -7
  164. package/types/koobiq-components-notification-center.d.ts +13 -0
  165. package/types/koobiq-components-overflow-items.d.ts +26 -2
  166. package/types/koobiq-components-popover.d.ts +38 -3
  167. package/types/koobiq-components-radio.d.ts +30 -0
  168. package/types/koobiq-components-search-expandable.d.ts +10 -0
  169. package/types/koobiq-components-select.d.ts +36 -4
  170. package/types/koobiq-components-sidepanel.d.ts +52 -1
  171. package/types/koobiq-components-splitter.d.ts +13 -4
  172. package/types/koobiq-components-tabs.d.ts +4 -0
  173. package/types/koobiq-components-tags.d.ts +6 -0
  174. package/types/koobiq-components-textarea.d.ts +9 -2
  175. package/types/koobiq-components-timepicker.d.ts +15 -0
  176. package/types/koobiq-components-toggle.d.ts +30 -0
  177. package/types/koobiq-components-tooltip.d.ts +55 -10
  178. package/types/koobiq-components-top-bar.d.ts +11 -3
  179. package/types/koobiq-components-tree-select.d.ts +12 -0
  180. package/types/koobiq-components-tree.d.ts +37 -2
@@ -14,8 +14,9 @@ type KbqSplitterOrientation = 'horizontal' | 'vertical';
14
14
  */
15
15
  type KbqSplitterAppearance = 'divider' | 'transparent' | 'handle';
16
16
  /**
17
- * Size of a splitter panel: a number of pixels, a `<number>px` string, or a `<number>%` share of the
18
- * splitter's own size along the resize axis. A size in any other unit is ignored.
17
+ * Size of a splitter panel: a number of pixels, a `<number>px` string, a `<number>%` share of the splitter's own
18
+ * size along the resize axis, or a `<number>vw` / `<number>vh` share of the viewport's width / height. A size in
19
+ * any other unit is ignored.
19
20
  */
20
21
  type KbqSplitterSize = number | string;
21
22
  /**
@@ -122,8 +123,8 @@ declare class KbqSplitterPanel implements KbqSplitterPanelRef {
122
123
  */
123
124
  readonly id: InputSignal<string>;
124
125
  /**
125
- * Size the panel starts at, in pixels (`240`, `'240px'`) or as a share of the splitter (`'30%'`).
126
- * Panels that leave it unset share whatever the sized ones did not claim.
126
+ * Size the panel starts at, in pixels (`240`, `'240px'`), as a share of the splitter (`'30%'`) or as a share
127
+ * of the viewport (`'30vw'`, `'30vh'`). Panels that leave it unset share whatever the sized ones did not claim.
127
128
  */
128
129
  readonly size: InputSignal<KbqSplitterSize | undefined>;
129
130
  /** Smallest size the panel may be dragged to. Defaults to `0`. */
@@ -231,6 +232,7 @@ declare class KbqSplitter implements KbqSplitterGroup {
231
232
  private readonly platform;
232
233
  private readonly window;
233
234
  private readonly resizeObserver;
235
+ private readonly viewportRuler;
234
236
  private readonly directionality;
235
237
  private readonly options;
236
238
  /** Direction the panels are laid out in. */
@@ -255,6 +257,11 @@ declare class KbqSplitter implements KbqSplitterGroup {
255
257
  protected readonly dragging: Signal<boolean>;
256
258
  /** Splitter size along the resize axis, in pixels; `0` until the first measurement. */
257
259
  private readonly containerSize;
260
+ /**
261
+ * Viewport size `vw` and `vh` resolve against, in pixels. Known from the start rather than after the first render:
262
+ * tracks resolved against a zero viewport would be what a nested splitter measures itself in.
263
+ */
264
+ private readonly viewportSize;
258
265
  /** Sizes and layout captured when the drag began; every move is measured against these, so clamping cannot drift. */
259
266
  private dragSnapshot;
260
267
  private readonly rtl;
@@ -324,6 +331,8 @@ declare class KbqSplitter implements KbqSplitterGroup {
324
331
  handleSeparatorKeydown(index: number, event: KeyboardEvent): void;
325
332
  /** @docs-private */
326
333
  handleSeparatorDblClick(index: number): void;
334
+ /** Resolves a size in the units a panel understands into pixels, with `total` as the splitter's own size. */
335
+ private resolveSize;
327
336
  /**
328
337
  * Whether the panels are still the ones the drag was measured against.
329
338
  *
@@ -60,6 +60,10 @@ declare abstract class KbqPaginatedTabHeader implements OnChanges, AfterContentC
60
60
  disableScrollAfter: boolean;
61
61
  /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */
62
62
  disableScrollBefore: boolean;
63
+ /** @docs-private */
64
+ protected overflowBefore: boolean;
65
+ /** @docs-private */
66
+ protected overflowAfter: boolean;
63
67
  /**
64
68
  * Whether pagination should be disabled. This can be used to avoid unnecessary
65
69
  * layout recalculations if it's known that pagination won't be required.
@@ -241,6 +241,12 @@ declare class KbqTag extends KbqColorDirective implements IFocusableOption, OnCh
241
241
  set disabled(value: boolean);
242
242
  private readonly _disabled;
243
243
  private readonly disabledState;
244
+ /**
245
+ * Value of the `disabled` attribute.
246
+ *
247
+ * @docs-private
248
+ */
249
+ protected readonly disabledAttribute: _angular_core.Signal<true | null>;
244
250
  /**
245
251
  * Whether the tag is draggable.
246
252
  *
@@ -64,6 +64,11 @@ declare class KbqTextarea implements KbqFormFieldControl<any>, OnInit, DoCheck,
64
64
  * @docs-private
65
65
  */
66
66
  readonly disabled: _angular_core.Signal<boolean>;
67
+ /**
68
+ * Whether the textarea is read-only: its value can be selected and copied, but not changed. A read-only
69
+ * textarea shows no placeholder. Defaults to `false`.
70
+ */
71
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, string | boolean | null | undefined>;
67
72
  /** @docs-private */
68
73
  readonly idInput: _angular_core.InputSignal<string | undefined>;
69
74
  /**
@@ -127,8 +132,10 @@ declare class KbqTextarea implements KbqFormFieldControl<any>, OnInit, DoCheck,
127
132
  private valueAccessor;
128
133
  /** Measured once the textarea has been rendered; the growth arithmetic is in terms of these. */
129
134
  private readonly lineHeight;
130
- private readonly minHeight;
135
+ private readonly verticalPadding;
131
136
  private readonly rowsCount;
137
+ /** The `min-height` growth wrote last, so that turning growth off removes it and keeps a consumer's own. */
138
+ private grownMinHeight;
132
139
  constructor();
133
140
  ngOnInit(): void;
134
141
  ngDoCheck(): void;
@@ -166,7 +173,7 @@ declare class KbqTextarea implements KbqFormFieldControl<any>, OnInit, DoCheck,
166
173
  protected isBadInput(): boolean;
167
174
  private isEmpty;
168
175
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTextarea, never>;
169
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqTextarea, "textarea[kbqTextarea]", ["kbqTextarea"], { "canGrow": { "alias": "canGrow"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "freeRowsHeight": { "alias": "freeRowsHeight"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.KbqNativeScrollbar; inputs: {}; outputs: {}; }]>;
176
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqTextarea, "textarea[kbqTextarea]", ["kbqTextarea"], { "canGrow": { "alias": "canGrow"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "freeRowsHeight": { "alias": "freeRowsHeight"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.KbqNativeScrollbar; inputs: {}; outputs: {}; }]>;
170
177
  }
171
178
 
172
179
  declare class KbqTextareaModule {
@@ -139,6 +139,12 @@ declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, ControlValueAc
139
139
  get timeFormatPlaceholder(): string;
140
140
  private readonly validator;
141
141
  private lastValueValid;
142
+ /**
143
+ * Whether a drag started in this field, so that its drop here is the field's own text.
144
+ *
145
+ * @docs-private
146
+ */
147
+ protected draggingOwnText: boolean;
142
148
  private control?;
143
149
  private separator;
144
150
  /** Start of the part a caret key selects on a timer, until the selection lands there. */
@@ -154,6 +160,13 @@ declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, ControlValueAc
154
160
  focusChanged(isFocused: boolean): void;
155
161
  onBlur(): void;
156
162
  onPaste($event: any): void;
163
+ /**
164
+ * Takes dropped text the way a paste is taken. The browser would insert it at the pointer, with no event
165
+ * the parsing listens to.
166
+ *
167
+ * @docs-private
168
+ */
169
+ protected onDrop(event: DragEvent): void;
157
170
  onInput: () => void;
158
171
  /**
159
172
  * Implemented as part of KbqFormFieldControl.
@@ -168,6 +181,8 @@ declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, ControlValueAc
168
181
  registerOnChange(fn: (value: D) => void): void;
169
182
  registerOnTouched(fn: () => void): void;
170
183
  setDisabledState(isDisabled: boolean): void;
184
+ /** Takes a pasted or dropped text as the whole value; one that is not a time is rejected as a letter key is. */
185
+ private replaceText;
171
186
  private formatUserPaste;
172
187
  private formatUserInput;
173
188
  private replaceSymbols;
@@ -34,6 +34,18 @@ declare class KbqToggleComponent extends KbqColorDirective implements OnChanges,
34
34
  readonly errorStateMatcher: _angular_core.InputSignal<ErrorStateMatcher | undefined>;
35
35
  /** Error text projected into the toggle. */
36
36
  private readonly error;
37
+ /**
38
+ * Whether the projected `kbq-error` is shown. Without one, nothing is rendered under the label.
39
+ *
40
+ * @docs-private
41
+ */
42
+ protected readonly showError: Signal<boolean>;
43
+ /**
44
+ * Value of `aria-invalid` of the native input: set whenever the toggle is painted as invalid.
45
+ *
46
+ * @docs-private
47
+ */
48
+ protected readonly ariaInvalid: Signal<"true" | null>;
37
49
  readonly big: _angular_core.InputSignal<boolean>;
38
50
  readonly inputElement: Signal<ElementRef<HTMLInputElement>>;
39
51
  readonly labelPosition: _angular_core.InputSignal<ToggleLabelPositionType>;
@@ -103,6 +115,24 @@ declare class KbqToggleComponent extends KbqColorDirective implements OnChanges,
103
115
  onInputClick(event: MouseEvent): void;
104
116
  /** Id of the element wrapping the projected hint, referenced by the input's `aria-describedby`. */
105
117
  protected get hintId(): string;
118
+ /**
119
+ * Id of the element wrapping the projected `kbq-error`.
120
+ *
121
+ * @docs-private
122
+ */
123
+ protected get errorId(): string;
124
+ /**
125
+ * Id of the label text, which names the native input unless `aria-label` or `aria-labelledby` is given.
126
+ *
127
+ * @docs-private
128
+ */
129
+ protected get labelId(): string;
130
+ /**
131
+ * The error, while it is shown, and the hint, in the order a form field gives them.
132
+ *
133
+ * @docs-private
134
+ */
135
+ protected get ariaDescribedBy(): string;
106
136
  /** A native checkbox only reacts to Space, so Enter is forwarded to it manually. */
107
137
  protected onEnterKeydown(event: Event): void;
108
138
  private setTransitionCheckState;
@@ -1,11 +1,33 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, ElementRef, AfterViewInit, OnChanges, OnDestroy, InputSignal, Renderer2, WritableSignal, TemplateRef, EventEmitter, SimpleChanges, Type } from '@angular/core';
2
+ import { InjectionToken, AfterViewInit, ElementRef, OnChanges, OnDestroy, InputSignal, Renderer2, WritableSignal, TemplateRef, EventEmitter, SimpleChanges, Type } from '@angular/core';
3
3
  import * as rxjs from 'rxjs';
4
4
  import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
5
5
  import { BooleanInput } from '@angular/cdk/coercion';
6
6
  import { ScrollStrategy, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';
7
7
  import { KbqPopUp, KbqEnumValues, KbqPopUpTrigger, KbqParentPopup, KbqPopUpPlacementValues, KbqComponentColors } from '@koobiq/components/core';
8
8
 
9
+ /**
10
+ * Default options inherited by every tooltip in the token's scope. A bound input still wins: `kbqTooltipOffset`
11
+ * overrides `offset`, and a binding that changes to `undefined` restores the inherited value.
12
+ */
13
+ interface KbqTooltipDefaultOptions {
14
+ /**
15
+ * Distance in pixels between the tooltip and its trigger, used while `kbqTooltipOffset` is not bound.
16
+ * `null` keeps the gap of the stylesheet.
17
+ */
18
+ readonly offset?: number | null;
19
+ /** Extra CSS class applied to the tooltip's overlay panel. */
20
+ readonly panelClass?: string | string[];
21
+ }
22
+ /**
23
+ * Default options for the tooltips in the token's scope. Provided in root with an empty-object factory, so
24
+ * behavior stays unchanged unless a component tree — e.g. a navbar, so its items' tooltips inherit the
25
+ * horizontal-navbar panel class and a zero offset — provides its own values.
26
+ *
27
+ * @docs-private
28
+ */
29
+ declare const KBQ_TOOLTIP_DEFAULT_OPTIONS: InjectionToken<KbqTooltipDefaultOptions>;
30
+
9
31
  /**
10
32
  * Default value of the `kbqTooltipSingleInstance` input. Provide `false` at the application level to
11
33
  * globally disable the "only one tooltip is visible at a time" behavior.
@@ -100,9 +122,10 @@ declare class KbqTooltipDelayTracker {
100
122
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTooltipDelayTracker, never>;
101
123
  static ɵprov: i0.ɵɵInjectableDeclaration<KbqTooltipDelayTracker>;
102
124
  }
103
- declare class KbqTooltipComponent extends KbqPopUp {
125
+ declare class KbqTooltipComponent extends KbqPopUp implements AfterViewInit {
104
126
  private readonly delayTracker;
105
127
  prefix: string;
128
+ protected arrowCenterInset: number;
106
129
  /**
107
130
  * Id rendered on the tooltip element; the trigger points its `aria-describedby` at it.
108
131
  *
@@ -115,6 +138,9 @@ declare class KbqTooltipComponent extends KbqPopUp {
115
138
  private readonly tooltipElement;
116
139
  /** The tooltip panel, which the base pop-up measures and decorates instead of the host. */
117
140
  get elementRef(): ElementRef<HTMLElement>;
141
+ ngAfterViewInit(): void;
142
+ /** Recalculates from the settled geometry: the entrance starts from `scale(0)`, an empty measurement box. */
143
+ protected afterShowAnimation(): void;
118
144
  show(delay: number): void;
119
145
  /**
120
146
  * Applies `offset` as the gap between the tooltip and its trigger. Called both on show and whenever the
@@ -153,6 +179,11 @@ declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> imp
153
179
  /** Registry holding the single tooltip that is currently visible. */
154
180
  private readonly tooltipRegistry;
155
181
  private readonly injectedScrollStrategy;
182
+ /**
183
+ * Default options inherited from the token's scope: the initial `offset` and the overlay `panelClass`,
184
+ * and the value a `kbqTooltipOffset` binding changed to `undefined` restores.
185
+ */
186
+ private readonly defaultOptions;
156
187
  /**
157
188
  * Per-instance override for the scroll strategy, taking precedence over `KBQ_TOOLTIP_SCROLL_STRATEGY`
158
189
  * when set. An input rather than a DI override so it applies to this tooltip instance only, without
@@ -290,8 +321,15 @@ declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> imp
290
321
  /** Input (`kbqTooltipArrow`) — whether to render the tooltip's arrow/pointer. Defaults to `false`. */
291
322
  arrow: boolean;
292
323
  /**
293
- * Input (`kbqTooltipOffset`) — distance in pixels between the tooltip and its trigger. `null`, the default, keeps
294
- * the gap of the stylesheet.
324
+ * Input (`kbqTooltipArrowCentered`) — centers the arrow on the trigger while preserving the panel placement.
325
+ * Requires a visible arrow. Defaults to `false`.
326
+ */
327
+ arrowCentered: boolean;
328
+ /**
329
+ * Input (`kbqTooltipOffset`) — distance in pixels between the tooltip and its trigger. `null` keeps
330
+ * the gap of the stylesheet. Defaults to the `offset` of {@link KBQ_TOOLTIP_DEFAULT_OPTIONS}, when a
331
+ * provider in scope set one. Inside a provider scope such as the navbar's, `null`/`undefined` restores
332
+ * that inherited default.
295
333
  */
296
334
  offset: number | null;
297
335
  /** Output (`kbqPlacementChange`) that emits the new placement whenever the tooltip repositions. */
@@ -321,9 +359,9 @@ declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> imp
321
359
  */
322
360
  header: string | TemplateRef<unknown>;
323
361
  /**
324
- * Hands each bound input to its member, and pushes a later change of `modifier`, `header`, `arrow` or
325
- * `offset` — plain fields — into an open tooltip, which would otherwise show stale data until the next
326
- * show/hide cycle.
362
+ * Hands each bound input to its member, and pushes a later change of `modifier`, `header`, `arrow`,
363
+ * `arrowCentered` or `offset` — plain fields — into an open tooltip, which would otherwise show stale data
364
+ * until the next show/hide cycle.
327
365
  */
328
366
  ngOnChanges(changes: SimpleChanges): void;
329
367
  /**
@@ -390,6 +428,8 @@ declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> imp
390
428
  /** @docs-private */
391
429
  readonly arrowInput: i0.InputSignalWithTransform<boolean | undefined, string | boolean | null | undefined>;
392
430
  /** @docs-private */
431
+ readonly arrowCenteredInput: i0.InputSignalWithTransform<boolean | undefined, string | boolean | null | undefined>;
432
+ /** @docs-private */
393
433
  readonly offsetInput: i0.InputSignalWithTransform<number | undefined, string | number | null | undefined>;
394
434
  /** @docs-private */
395
435
  readonly disabledInput: i0.InputSignalWithTransform<boolean | undefined, string | boolean | null | undefined>;
@@ -576,6 +616,11 @@ declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> imp
576
616
  width: number;
577
617
  height: number;
578
618
  };
619
+ /** @docs-private */
620
+ protected getOriginCenter(): {
621
+ x: number;
622
+ y: number;
623
+ };
579
624
  /**
580
625
  * Rectangle the tooltip is anchored to: the caret or selection of the field — spanning the whole field
581
626
  * vertically when it anchors to the field — or the host element's box when the caret cannot be located or
@@ -597,7 +642,7 @@ declare class KbqTooltipTrigger extends KbqPopUpTrigger<KbqTooltipComponent> imp
597
642
  /** @docs-private */
598
643
  protected applyRelativeToPointer(): void;
599
644
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTooltipTrigger, never>;
600
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTooltipTrigger, "[kbqTooltip]", ["kbqTooltip"], { "scrollStrategyOverride": { "alias": "kbqTooltipScrollStrategy"; "required": false; "isSignal": true; }; "forDisabledComponent": { "alias": "forDisabledComponent"; "required": false; "isSignal": true; }; "ignoreTooltipPointerEvents": { "alias": "ignoreTooltipPointerEvents"; "required": false; "isSignal": true; }; "singleInstance": { "alias": "kbqTooltipSingleInstance"; "required": false; "isSignal": true; }; "triggerInput": { "alias": "kbqTrigger"; "required": false; "isSignal": true; }; "hideWithTimeoutInput": { "alias": "hideWithTimeout"; "required": false; "isSignal": true; }; "enterDelayInput": { "alias": "kbqEnterDelay"; "required": false; "isSignal": true; }; "leaveDelayInput": { "alias": "kbqLeaveDelay"; "required": false; "isSignal": true; }; "relativeToPointerInput": { "alias": "kbqRelativeToPointer"; "required": false; "isSignal": true; }; "relativeToCaretInput": { "alias": "kbqRelativeToCaret"; "required": false; "isSignal": true; }; "relativeToCaretVerticalInput": { "alias": "kbqRelativeToCaretVertical"; "required": false; "isSignal": true; }; "contentInput": { "alias": "kbqTooltip"; "required": false; "isSignal": true; }; "headerInput": { "alias": "kbqTooltipHeader"; "required": false; "isSignal": true; }; "modifierInput": { "alias": "kbqTooltipModifier"; "required": false; "isSignal": true; }; "contextInput": { "alias": "kbqTooltipContext"; "required": false; "isSignal": true; }; "customClassInput": { "alias": "kbqTooltipClass"; "required": false; "isSignal": true; }; "colorInput": { "alias": "kbqTooltipColor"; "required": false; "isSignal": true; }; "arrowInput": { "alias": "kbqTooltipArrow"; "required": false; "isSignal": true; }; "offsetInput": { "alias": "kbqTooltipOffset"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "kbqTooltipDisabled"; "required": false; "isSignal": true; }; "tooltipPlacementPriorityInput": { "alias": "kbqPlacementPriority"; "required": false; "isSignal": true; }; "tooltipPlacementInput": { "alias": "kbqPlacement"; "required": false; "isSignal": true; }; "tooltipVisibleInput": { "alias": "kbqVisible"; "required": false; "isSignal": true; }; }, { "placementChangeOutput": "kbqPlacementChange"; "visibleChangeOutput": "kbqVisibleChange"; }, never, never, true, never>;
645
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTooltipTrigger, "[kbqTooltip]", ["kbqTooltip"], { "scrollStrategyOverride": { "alias": "kbqTooltipScrollStrategy"; "required": false; "isSignal": true; }; "forDisabledComponent": { "alias": "forDisabledComponent"; "required": false; "isSignal": true; }; "ignoreTooltipPointerEvents": { "alias": "ignoreTooltipPointerEvents"; "required": false; "isSignal": true; }; "singleInstance": { "alias": "kbqTooltipSingleInstance"; "required": false; "isSignal": true; }; "triggerInput": { "alias": "kbqTrigger"; "required": false; "isSignal": true; }; "hideWithTimeoutInput": { "alias": "hideWithTimeout"; "required": false; "isSignal": true; }; "enterDelayInput": { "alias": "kbqEnterDelay"; "required": false; "isSignal": true; }; "leaveDelayInput": { "alias": "kbqLeaveDelay"; "required": false; "isSignal": true; }; "relativeToPointerInput": { "alias": "kbqRelativeToPointer"; "required": false; "isSignal": true; }; "relativeToCaretInput": { "alias": "kbqRelativeToCaret"; "required": false; "isSignal": true; }; "relativeToCaretVerticalInput": { "alias": "kbqRelativeToCaretVertical"; "required": false; "isSignal": true; }; "contentInput": { "alias": "kbqTooltip"; "required": false; "isSignal": true; }; "headerInput": { "alias": "kbqTooltipHeader"; "required": false; "isSignal": true; }; "modifierInput": { "alias": "kbqTooltipModifier"; "required": false; "isSignal": true; }; "contextInput": { "alias": "kbqTooltipContext"; "required": false; "isSignal": true; }; "customClassInput": { "alias": "kbqTooltipClass"; "required": false; "isSignal": true; }; "colorInput": { "alias": "kbqTooltipColor"; "required": false; "isSignal": true; }; "arrowInput": { "alias": "kbqTooltipArrow"; "required": false; "isSignal": true; }; "arrowCenteredInput": { "alias": "kbqTooltipArrowCentered"; "required": false; "isSignal": true; }; "offsetInput": { "alias": "kbqTooltipOffset"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "kbqTooltipDisabled"; "required": false; "isSignal": true; }; "tooltipPlacementPriorityInput": { "alias": "kbqPlacementPriority"; "required": false; "isSignal": true; }; "tooltipPlacementInput": { "alias": "kbqPlacement"; "required": false; "isSignal": true; }; "tooltipVisibleInput": { "alias": "kbqVisible"; "required": false; "isSignal": true; }; }, { "placementChangeOutput": "kbqPlacementChange"; "visibleChangeOutput": "kbqVisibleChange"; }, never, never, true, never>;
601
646
  }
602
647
 
603
648
  declare class KbqToolTipModule {
@@ -606,5 +651,5 @@ declare class KbqToolTipModule {
606
651
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqToolTipModule>;
607
652
  }
608
653
 
609
- export { KBQ_TOOLTIP_INSTANT_SHOW_WINDOW, KBQ_TOOLTIP_OPEN_TIME, KBQ_TOOLTIP_OPEN_TIME_PROVIDER, KBQ_TOOLTIP_SCROLL_STRATEGY, KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT, KbqToolTipModule, KbqTooltipComponent, KbqTooltipDelayTracker, KbqTooltipRegistry, KbqTooltipTrigger, MIN_TIME_FOR_DELAY, TooltipModifier, kbqTooltipScrollStrategyFactory };
610
- export type { KbqCaretVerticalAnchor, KbqExclusiveTooltip };
654
+ export { KBQ_TOOLTIP_DEFAULT_OPTIONS, KBQ_TOOLTIP_INSTANT_SHOW_WINDOW, KBQ_TOOLTIP_OPEN_TIME, KBQ_TOOLTIP_OPEN_TIME_PROVIDER, KBQ_TOOLTIP_SCROLL_STRATEGY, KBQ_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, KBQ_TOOLTIP_SINGLE_INSTANCE_DEFAULT, KbqToolTipModule, KbqTooltipComponent, KbqTooltipDelayTracker, KbqTooltipRegistry, KbqTooltipTrigger, MIN_TIME_FOR_DELAY, TooltipModifier, kbqTooltipScrollStrategyFactory };
655
+ export type { KbqCaretVerticalAnchor, KbqExclusiveTooltip, KbqTooltipDefaultOptions };
@@ -19,6 +19,14 @@ declare class KbqTopBarContainer {
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTopBarContainer, never>;
20
20
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTopBarContainer, "[kbqTopBarContainer]", never, { "placement": { "alias": "placement"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
21
21
  }
22
+ /**
23
+ * Marks the page title of `kbq-top-bar` and sizes it like `size="big"` breadcrumbs, so the bar keeps
24
+ * its height and the text its baseline when a page swaps the trail for a title.
25
+ */
26
+ declare class KbqTopBarTitle {
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqTopBarTitle, never>;
28
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqTopBarTitle, "[kbqTopBarTitle]", never, {}, {}, never, never, true, never>;
29
+ }
22
30
  /**
23
31
  * Toolbar row for the top of a page or a panel. It expects two `[kbqTopBarContainer]` slots —
24
32
  * `placement="start"` and `placement="end"` — with an optional `[kbqTopBarSpacer]` between them.
@@ -50,12 +58,12 @@ declare class KbqTopBar {
50
58
 
51
59
  /**
52
60
  * Kept for applications that still declare NgModules. Standalone code imports `KbqTopBar`,
53
- * `KbqTopBarContainer` and `KbqTopBarSpacer` directly instead.
61
+ * `KbqTopBarContainer`, `KbqTopBarSpacer` and `KbqTopBarTitle` directly instead.
54
62
  */
55
63
  declare class KbqTopBarModule {
56
64
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqTopBarModule, never>;
57
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqTopBarModule, never, [typeof KbqTopBar, typeof KbqTopBarContainer, typeof KbqTopBarSpacer], [typeof KbqTopBar, typeof KbqTopBarContainer, typeof KbqTopBarSpacer]>;
65
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqTopBarModule, never, [typeof KbqTopBar, typeof KbqTopBarContainer, typeof KbqTopBarSpacer, typeof KbqTopBarTitle], [typeof KbqTopBar, typeof KbqTopBarContainer, typeof KbqTopBarSpacer, typeof KbqTopBarTitle]>;
58
66
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqTopBarModule>;
59
67
  }
60
68
 
61
- export { KbqTopBar, KbqTopBarContainer, KbqTopBarModule, KbqTopBarSpacer };
69
+ export { KbqTopBar, KbqTopBarContainer, KbqTopBarModule, KbqTopBarSpacer, KbqTopBarTitle };
@@ -269,6 +269,12 @@ declare class KbqTreeSelect<T = any, K = T> extends KbqAbstractSelect implements
269
269
  * control.
270
270
  */
271
271
  readonly ariaLabelledby: InputSignal<string | null>;
272
+ /**
273
+ * Id of the element that names the control: its own `aria-labelledby`, or else the form-field label.
274
+ *
275
+ * @docs-private
276
+ */
277
+ protected readonly resolvedAriaLabelledby: _angular_core.Signal<string | null>;
272
278
  /** Object used to control when error messages are shown. */
273
279
  readonly errorStateMatcher: InputSignal<ErrorStateMatcher | undefined>;
274
280
  /**
@@ -343,6 +349,12 @@ declare class KbqTreeSelect<T = any, K = T> extends KbqAbstractSelect implements
343
349
  private readonly resolvedTabIndex;
344
350
  private readonly resolvedAriaLabel;
345
351
  /** @docs-private */
352
+ protected readonly disabledAttribute: _angular_core.Signal<true | null>;
353
+ /** @docs-private */
354
+ protected readonly disabledClass: _angular_core.Signal<boolean>;
355
+ /** @docs-private */
356
+ protected readonly invalidClass: _angular_core.Signal<boolean>;
357
+ /** @docs-private */
346
358
  readonly selectAllHandlerInput: _angular_core.InputSignalWithTransform<((event: KeyboardEvent, select: KbqTreeSelect<T, K>) => void) | undefined, ((event: KeyboardEvent, select: KbqTreeSelect<T, K>) => void) | undefined>;
347
359
  /**
348
360
  * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used.
@@ -27,8 +27,17 @@ interface TreeControl<T, K = T> {
27
27
  /** The expansion model: the keys of the expanded data nodes, which are the nodes themselves by default. */
28
28
  expansionModel: SelectionModel<K>;
29
29
  filterModel: SelectionModel<T>;
30
+ /** The query of the active filter, or `null` when no filter is active. */
31
+ readonly filterQuery: string | null;
32
+ /** Whether a filter is active: the filter model holds at least one node, or a query is set. */
33
+ readonly hasActiveFilter: boolean;
30
34
  /** Gives the key a data node is expanded by. Without it the node object is its own key. */
31
35
  trackBy?: (dataNode: T) => K;
36
+ /**
37
+ * Stream with the filter query or result. Published for backward compatibility.
38
+ *
39
+ * @deprecated Use `filterQuery` for the query string and `filterModel` for the filter state. Will be removed in 22.0.0.
40
+ */
32
41
  filterValue: BehaviorSubject<T[] | string | null>;
33
42
  /** Get depth of a given data node, return the level number. This is for flat tree node. */
34
43
  getLevel(dataNode: T): number;
@@ -74,7 +83,19 @@ declare abstract class BaseTreeControl<T, K = T> implements TreeControl<T, K> {
74
83
  */
75
84
  trackBy?: (dataNode: T) => K;
76
85
  filterModel: SelectionModel<T>;
86
+ /**
87
+ * Stream with the filter query or result. Published for backward compatibility.
88
+ *
89
+ * @deprecated Use `filterQuery` for the query string and `filterModel` for the filter state. Will be removed in 22.0.0.
90
+ */
77
91
  filterValue: BehaviorSubject<string | T[] | null>;
92
+ /**
93
+ * The query of the active filter, or `null` when no filter is active. Defaults to `null`.
94
+ * Set by `FlatTreeControl.applyFilter`; stays `null` on controls without filtering, such as `NestedTreeControl`.
95
+ */
96
+ filterQuery: string | null;
97
+ /** Whether a filter is active: the filter model holds at least one node, or a query is set. */
98
+ get hasActiveFilter(): boolean;
78
99
  /** Get depth of a given data node, return the level number. This is for flat tree node. */
79
100
  getLevel: (dataNode: T) => number;
80
101
  /**
@@ -115,13 +136,15 @@ interface FlatTreeControlFilter<T> {
115
136
  }
116
137
  /**
117
138
  * Default first stage of the filter pipeline: keeps the nodes whose view value matches the query.
139
+ * An optional `matches` predicate keeps a node matched by anything else, e.g. by another field.
118
140
  *
119
141
  * @docs-private
120
142
  */
121
143
  declare class FilterByViewValue<T, K = T> implements FlatTreeControlFilter<T> {
122
144
  private control;
145
+ private matches?;
123
146
  result: T[];
124
- constructor(control: FlatTreeControl<T, K>);
147
+ constructor(control: FlatTreeControl<T, K>, matches?: ((node: T, query: string | null) => boolean) | undefined);
125
148
  handle(value: string | null): T[];
126
149
  }
127
150
  /**
@@ -208,6 +231,15 @@ declare class FlatTreeControl<T, K = T> extends BaseTreeControl<T, K> {
208
231
  */
209
232
  getParents(node: T, result?: T[]): T[];
210
233
  hasValue(value: string): T | undefined;
234
+ /** Filters nodes by a query and expands the ancestors of every match. An empty string resets the filter. */
235
+ applyFilter(value?: string | null): void;
236
+ /** Clears the active filter and restores the expansion state saved before filtering. */
237
+ resetFilter(): void;
238
+ /**
239
+ * Filters nodes by a query and expands the ancestors of every match.
240
+ *
241
+ * @deprecated Use `applyFilter` instead. Will be removed in 22.0.0.
242
+ */
211
243
  filterNodes(value?: string | null): void;
212
244
  private updateFilterValue;
213
245
  private saveExpansionState;
@@ -745,6 +777,8 @@ declare class KbqTreeOption<T = any> extends KbqTreeNode<T> implements OnInit, A
745
777
  set value(value: any);
746
778
  private _value;
747
779
  /** @docs-private */
780
+ readonly viewValueInput: _angular_core.InputSignal<string | undefined>;
781
+ /** @docs-private */
748
782
  readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, string | boolean | null | undefined>;
749
783
  /** Whether the option is disabled: through its own input, the tree, or the tree control's `isDisabled`. */
750
784
  get disabled(): boolean;
@@ -794,6 +828,7 @@ declare class KbqTreeOption<T = any> extends KbqTreeNode<T> implements OnInit, A
794
828
  private readonly selectedState;
795
829
  get id(): string;
796
830
  private _id;
831
+ /** The displayed value used by type-ahead. Falls back to the text of the option. */
797
832
  get viewValue(): string;
798
833
  get hasFocus(): boolean;
799
834
  set hasFocus(value: boolean);
@@ -867,7 +902,7 @@ declare class KbqTreeOption<T = any> extends KbqTreeNode<T> implements OnInit, A
867
902
  private toAriaChecked;
868
903
  private resolvePredicates;
869
904
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTreeOption<any>, never>;
870
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqTreeOption<any>, "kbq-tree-option", ["kbqTreeOption"], { "checkboxThirdState": { "alias": "checkboxThirdState"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectAllRow": { "alias": "selectAllRow"; "required": false; "isSignal": true; }; "showCheckboxInput": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "onSelectionChange": "onSelectionChange"; }, ["toggleElementDirective", "toggleElementComponent", "pseudoCheckbox", "actionButton", "tooltipTriggerQuery", "dropdownTriggerQuery"], ["kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]", "kbq-pseudo-checkbox", "kbq-checkbox", "[kbq-icon]", "kbq-progress-spinner", "*", "kbq-option-action"], true, never>;
905
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqTreeOption<any>, "kbq-tree-option", ["kbqTreeOption"], { "checkboxThirdState": { "alias": "checkboxThirdState"; "required": false; "isSignal": true; }; "viewValueInput": { "alias": "viewValue"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selectAllRow": { "alias": "selectAllRow"; "required": false; "isSignal": true; }; "showCheckboxInput": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "onSelectionChange": "onSelectionChange"; }, ["toggleElementDirective", "toggleElementComponent", "pseudoCheckbox", "actionButton", "tooltipTriggerQuery", "dropdownTriggerQuery"], ["kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]", "kbq-pseudo-checkbox", "kbq-checkbox", "[kbq-icon]", "kbq-progress-spinner", "*", "kbq-option-action"], true, never>;
871
906
  }
872
907
 
873
908
  declare const KBQ_SELECTION_TREE_VALUE_ACCESSOR: Provider;