@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,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, TemplateRef, InjectionToken, ModelSignal, Signal, OutputEmitterRef, Type, Provider, OnInit, AfterContentInit } from '@angular/core';
3
3
  import * as _koobiq_components_core from '@koobiq/components/core';
4
- import { PopUpPlacements, KbqComponentColors, PopUpSizes, KbqOption, DateAdapter, DateFormatter, KbqPseudoCheckboxState } from '@koobiq/components/core';
4
+ import { KbqPanelMaxHeight, PopUpPlacements, KbqComponentColors, PopUpSizes, KbqOption, DateAdapter, DateFormatter, KbqPseudoCheckboxState } from '@koobiq/components/core';
5
5
  import { Subject, BehaviorSubject, Observable } from 'rxjs';
6
6
  import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
7
7
  import { FormControl, FormGroup } from '@angular/forms';
@@ -10,6 +10,7 @@ import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
10
10
  import { KbqPopoverTrigger } from '@koobiq/components/popover';
11
11
  import { KbqSelect } from '@koobiq/components/select';
12
12
  import { KbqListSelection } from '@koobiq/components/list';
13
+ import { KbqInput } from '@koobiq/components/input';
13
14
  import { FlatTreeControl, KbqTreeFlattener, KbqTreeFlatDataSource, KbqTreeSelection, KbqTreeOption } from '@koobiq/components/tree';
14
15
  import { KbqTreeSelect } from '@koobiq/components/tree-select';
15
16
 
@@ -35,8 +36,6 @@ declare abstract class KbqBasePipe<V> implements AfterViewInit {
35
36
  protected readonly elementRef: ElementRef<HTMLElement>;
36
37
  private readonly inputModalityDetector;
37
38
  private readonly document;
38
- /** Last known focus origin within the pipe. Used to preserve the keyboard focus ring on restore. */
39
- private focusOrigin;
40
39
  /**
41
40
  * Whether this pipe has been destroyed. Guards deferred (`setTimeout`) work that could otherwise
42
41
  * read view queries or mutate `data` after the pipe was removed or the filter switched.
@@ -47,6 +46,23 @@ declare abstract class KbqBasePipe<V> implements AfterViewInit {
47
46
  protected values: any;
48
47
  /** TemplateRef for selecting an option */
49
48
  protected valueTemplate?: TemplateRef<any> | string;
49
+ /**
50
+ * Optional equality comparator forwarded from the pipe template to the underlying `kbq-select`.
51
+ * Only consumed by the select / multi-select pipe components; when unset they fall back to their
52
+ * own id-based `compareByValue`.
53
+ */
54
+ protected optionCompareWith?: (o1: KbqSelectValue | null | undefined, o2: KbqSelectValue | null | undefined) => boolean;
55
+ /**
56
+ * Values forwarded from the pipe template whose selection the user cannot remove. Only consumed by
57
+ * the multi-select pipe components; other pipe types ignore it.
58
+ */
59
+ protected lockedValues?: unknown[];
60
+ /**
61
+ * Maximum height of the dropdown panel's scrollable list, forwarded from the pipe template to the
62
+ * underlying `kbq-select` / `kbq-tree-select`. Only consumed by the select-family pipe components;
63
+ * `undefined` leaves the list at the select-family default of 256px.
64
+ */
65
+ protected panelMaxHeight?: KbqPanelMaxHeight;
50
66
  /**
51
67
  * Whether the current platform is a Mac.
52
68
  *
@@ -73,10 +89,33 @@ declare abstract class KbqBasePipe<V> implements AfterViewInit {
73
89
  onRemove(): void;
74
90
  /** clears the pipe and triggers changes */
75
91
  onClear(): void;
92
+ /**
93
+ * Value a cleared pipe is left with. Overridden by pipes that keep part of their value across a clear
94
+ * — the multi-select pipes hold on to their locked options.
95
+ *
96
+ * @docs-private
97
+ */
98
+ protected clearedValue(): V | null;
99
+ /**
100
+ * Focus origin to hand to {@link FocusMonitor} whenever this pipe moves focus programmatically, so the
101
+ * `.cdk-keyboard-focused` ring is painted for keyboard navigation only and never for a mouse-driven one.
102
+ *
103
+ * `InputModalityDetector.mostRecentModality` reflects what the user is doing *right now*, and is the
104
+ * only source that stays correct while a panel is open: panel content lives in the CDK overlay
105
+ * container, which is not a DOM descendant of the pipe host, so a focus origin captured on the host
106
+ * itself would freeze at "how the trigger was focused" and couldn't tell a click inside the panel apart
107
+ * from the keypress that opened it. The detector reacts only to `keydown`/`mousedown`/`touchstart`
108
+ * (never to hover or scroll), so merely moving the mouse cannot strip a keyboard user's ring, and it
109
+ * maps a screen reader's synthetic mousedown to `keyboard`. It falls back to `'program'` only before any
110
+ * such interaction has ever occurred on the page — at which point no ring should be shown anyway.
111
+ *
112
+ * @docs-private
113
+ */
114
+ protected get currentFocusOrigin(): NonNullable<FocusOrigin>;
76
115
  /**
77
116
  * Restores focus to the pipe's trigger button after a value is chosen or the panel closes.
78
- * Focuses via {@link FocusMonitor} with the captured origin so a keyboard-driven interaction
79
- * keeps its focus ring, while a mouse-driven one does not.
117
+ * Focuses via {@link FocusMonitor} with `currentFocusOrigin` so a keyboard-driven interaction keeps
118
+ * its focus ring, while a mouse-driven one does not.
80
119
  *
81
120
  * @docs-private
82
121
  */
@@ -159,6 +198,8 @@ declare const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION: {
159
198
  customPeriodFrom: string;
160
199
  customPeriodTo: string;
161
200
  customPeriodErrorHint: string;
201
+ customPeriodMinIntervalErrorHint: string;
202
+ customPeriodMaxIntervalErrorHint: string;
162
203
  backToPeriodSelection: string;
163
204
  };
164
205
  };
@@ -211,6 +252,8 @@ declare const KBQ_FILTER_BAR_CONFIGURATION: InjectionToken<{
211
252
  customPeriodFrom: string;
212
253
  customPeriodTo: string;
213
254
  customPeriodErrorHint: string;
255
+ customPeriodMinIntervalErrorHint: string;
256
+ customPeriodMaxIntervalErrorHint: string;
214
257
  backToPeriodSelection: string;
215
258
  };
216
259
  }>;
@@ -272,6 +315,8 @@ declare const kbqFilterBarPipesProvider: () => Provider;
272
315
  declare enum KbqPipeTypes {
273
316
  ReadOnly = "readonly",
274
317
  Text = "text",
318
+ /** Renders a bare input: no popover, never opens. Commits while typing (debounced), on Enter and on blur. */
319
+ Input = "input",
275
320
  Select = "select",
276
321
  TreeSelect = "tree-select",
277
322
  MultiSelect = "multiselect",
@@ -327,6 +372,65 @@ interface KbqPipeData<V> extends KbqPipe {
327
372
  interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
328
373
  values?: unknown[];
329
374
  valueTemplate?: TemplateRef<any> | string;
375
+ /**
376
+ * Custom equality comparator forwarded to the underlying `kbq-select` of the `select` /
377
+ * `multiselect` pipes. When omitted, the pipe's default id-based comparator (`compareByValue`)
378
+ * is used. Ignored by other pipe types.
379
+ */
380
+ compareWith?: (o1: KbqSelectValue | null | undefined, o2: KbqSelectValue | null | undefined) => boolean;
381
+ /**
382
+ * Options whose selection cannot be removed by the user: they are always selected, render as
383
+ * `disabled` with a checked checkbox, and survive both "select all" toggling and clearing the pipe.
384
+ *
385
+ * Entries have the same shape as the entries of the owning pipe's `value`: `KbqSelectValue` objects
386
+ * for the `multiselect` pipe (matched with `compareWith`, falling back to the pipe's id-based
387
+ * comparator), and raw node values for the `multi-tree-select` pipe. Locking a tree branch locks its
388
+ * whole subtree. Ignored by other pipe types.
389
+ */
390
+ lockedValues?: unknown[];
391
+ /**
392
+ * Maximum height of the dropdown panel's scrollable list, in pixels, forwarded to the underlying
393
+ * `kbq-select` / `kbq-tree-select` of the `select`, `multiselect`, `tree-select` and `multi-tree-select`
394
+ * pipes. Omitting it — or passing `null` — keeps the select-family default of 256px, i.e. exactly eight
395
+ * 32px options.
396
+ *
397
+ * The cap covers the scrollable list only, and the list's own padding is added on top of it, so a
398
+ * multiple of the option height fits without a scrollbar. The pipe's search field is rendered above the
399
+ * list and adds to the panel's total height, while the "select all" row scrolls with the options and is
400
+ * counted by the cap. A value taller than the room left in the viewport is clipped by the overlay rather
401
+ * than scrolled. Ignored by other pipe types.
402
+ */
403
+ panelMaxHeight?: KbqPanelMaxHeight;
404
+ /**
405
+ * Earliest selectable instant for the `date` / `datetime` pipe custom period. Accepts any value the
406
+ * configured `DateAdapter` can deserialize (with the default Luxon adapter: an ISO-8601 string, a
407
+ * `Date`, or a `DateTime`). The `date` pipe uses only its day (pinned to the start of day). Ignored by
408
+ * other pipe types.
409
+ */
410
+ minDateTime?: unknown;
411
+ /**
412
+ * Latest selectable instant for the `date` / `datetime` pipe custom period. See
413
+ * {@link KbqPipeTemplate.minDateTime}. The `date` pipe uses only its day (pinned to the end of day).
414
+ * Ignored by other pipe types.
415
+ */
416
+ maxDateTime?: unknown;
417
+ /**
418
+ * Minimum length of the `date` / `datetime` pipe custom period (`end − start`), as a Luxon
419
+ * duration-like object, e.g. `{ days: 1 }` or `{ hours: 2 }`. When the selected period is shorter, the
420
+ * editor shows an error and disables Apply. Ignored by other pipe types.
421
+ *
422
+ * Unlike {@link KbqPipeTemplate.minDateTime}, this value is NOT deserialized through the configured
423
+ * `DateAdapter` — it is applied directly via the date value's own `.plus()`, so this option currently
424
+ * assumes the default Luxon adapter and is not portable to other `DateAdapter` implementations (e.g.
425
+ * the Moment adapter).
426
+ */
427
+ minInterval?: unknown;
428
+ /**
429
+ * Maximum length of the `date` / `datetime` pipe custom period (`end − start`). See
430
+ * {@link KbqPipeTemplate.minInterval}. When the selected period is longer, the editor shows an error and
431
+ * disables Apply. Ignored by other pipe types.
432
+ */
433
+ maxInterval?: unknown;
330
434
  }
331
435
  interface KbqSaveFilterError {
332
436
  text?: string;
@@ -388,6 +492,8 @@ declare class KbqFilterReset {
388
492
  */
389
493
  declare class KbqFilterSavePopover implements AfterViewInit {
390
494
  private readonly changeDetectorRef;
495
+ private readonly focusMonitor;
496
+ private readonly inputModalityDetector;
391
497
  /** Popover trigger owned by the parent (`KbqFilters` main button). */
392
498
  readonly popoverTrigger: _angular_core.InputSignal<KbqPopoverTrigger>;
393
499
  /** Filter bar, used for the save payload, the current filter and localized strings. */
@@ -409,7 +515,8 @@ declare class KbqFilterSavePopover implements AfterViewInit {
409
515
  /** true if saving a new filter, false if saving changes in filter */
410
516
  saveNewFilter: boolean;
411
517
  showFilterSavingError: boolean;
412
- filterSavingErrorText: string;
518
+ /** Custom error text passed to `showError()`; `null` when the locale-derived default should be used. */
519
+ private customErrorText;
413
520
  isSaving: boolean;
414
521
  /** localized data
415
522
  * @docs-private */
@@ -431,6 +538,9 @@ declare class KbqFilterSavePopover implements AfterViewInit {
431
538
  cancelButton: string;
432
539
  actionsTooltip: string;
433
540
  };
541
+ /** Filter saving error text (custom or locale-derived).
542
+ * @docs-private */
543
+ get filterSavingErrorText(): string;
434
544
  /** header of popover. Depends on the mode */
435
545
  get popoverHeader(): string;
436
546
  ngAfterViewInit(): void;
@@ -647,11 +757,15 @@ declare class KbqFilterBar implements KbqFilterBarHost {
647
757
  customPeriodFrom: string;
648
758
  customPeriodTo: string;
649
759
  customPeriodErrorHint: string;
760
+ customPeriodMinIntervalErrorHint: string;
761
+ customPeriodMaxIntervalErrorHint: string;
650
762
  backToPeriodSelection: string;
651
763
  };
652
764
  } | null;
653
765
  /** Localized strings and configuration for the filter-bar and its pipes. */
654
- configuration: KbqFilterBarConfiguration;
766
+ get configuration(): KbqFilterBarConfiguration;
767
+ set configuration(value: KbqFilterBarConfiguration);
768
+ private readonly _configuration;
655
769
  /** @docs-private */
656
770
  readonly filters: _angular_core.Signal<KbqFilters | undefined>;
657
771
  /** @docs-private */
@@ -792,6 +906,8 @@ declare class KbqFilterRefresher {
792
906
  customPeriodFrom: string;
793
907
  customPeriodTo: string;
794
908
  customPeriodErrorHint: string;
909
+ customPeriodMinIntervalErrorHint: string;
910
+ customPeriodMaxIntervalErrorHint: string;
795
911
  backToPeriodSelection: string;
796
912
  };
797
913
  };
@@ -908,12 +1024,53 @@ declare abstract class KbqPipeDateBaseComponent<D> extends KbqBasePipe<KbqDateTi
908
1024
  protected showStartCalendar: boolean;
909
1025
  /** @docs-private */
910
1026
  protected showEndCalendar: boolean;
1027
+ /**
1028
+ * Lower bound instant applied to the calendars, date inputs and (datetime) timepickers.
1029
+ * @docs-private
1030
+ */
1031
+ protected min: any;
1032
+ /**
1033
+ * Upper bound instant applied to the calendars, date inputs and (datetime) timepickers.
1034
+ * @docs-private
1035
+ */
1036
+ protected max: any;
1037
+ /** Minimum length of the custom period (`end − start`), resolved from the template as a duration-like object. */
1038
+ private minInterval?;
1039
+ /** Maximum length of the custom period (`end − start`), resolved from the template as a duration-like object. */
1040
+ private maxInterval?;
1041
+ /** Canonical duration units (largest-first) used to render an interval limit faithfully to its config. */
1042
+ private static readonly INTERVAL_UNITS;
911
1043
  /** @docs-private */
912
1044
  readonly popover: _angular_core.Signal<KbqPopoverTrigger>;
913
1045
  /** @docs-private */
914
- readonly listSelection: _angular_core.Signal<KbqListSelection | undefined>;
1046
+ readonly listSelection: _angular_core.Signal<KbqListSelection<any> | undefined>;
915
1047
  /** @docs-private */
916
1048
  readonly returnButton: _angular_core.Signal<KbqButton>;
1049
+ /** Resolves the `minDateTime` / `maxDateTime` bounds from the pipe template matching this pipe. */
1050
+ private updateDateBounds;
1051
+ /**
1052
+ * Deserializes a `minDateTime` / `maxDateTime` template value, treating an unset (`null`/`undefined`)
1053
+ * value and an unparseable one alike as "no bound", so call sites need no own null-check.
1054
+ */
1055
+ private toValidDate;
1056
+ /**
1057
+ * Validates a `minInterval` / `maxInterval` template value, treating anything that isn't a genuine
1058
+ * duration-like object — or that resolves to an invalid or sub-second span — as "no constraint"
1059
+ * instead of letting it crash `validateInterval`/`formatInterval` downstream (both call `.plus()` on
1060
+ * it directly). A bare number is rejected too: Luxon would silently read it as milliseconds, which
1061
+ * would otherwise disable the constraint without any error (e.g. a `{ days: 5 }` typo'd as `5`).
1062
+ */
1063
+ private toValidInterval;
1064
+ /** Clamps `value` into the configured `[min, max]` bounds using full-instant comparison. */
1065
+ private clampToBounds;
1066
+ /**
1067
+ * Cross-field validator flagging the custom period when its length (`end − start`) is outside the
1068
+ * configured `[minInterval, maxInterval]`. Intervals are applied via `DateTime.plus`, so calendar units
1069
+ * (months/years) are respected; unset intervals impose no constraint.
1070
+ */
1071
+ private validateInterval;
1072
+ /** Formats a duration-like interval as a locale-aware human string via the formatter, e.g. "7 дней". */
1073
+ private formatInterval;
917
1074
  /** formatted value for period */
918
1075
  get formattedValue(): string;
919
1076
  /** Whether the current pipe is disabled. */
@@ -926,6 +1083,42 @@ declare abstract class KbqPipeDateBaseComponent<D> extends KbqBasePipe<KbqDateTi
926
1083
  get end(): D;
927
1084
  /** default object for end */
928
1085
  get defaultEnd(): D;
1086
+ /**
1087
+ * Computes the default `start`/`end` pair used when the pipe has no stored value, clamped into
1088
+ * `[min, max]` and, unlike a plain clamp, also reconciled against `[minInterval, maxInterval]`: `end`
1089
+ * is extended or shrunk to fit, falling back to pulling `start` back when `[min, max]` doesn't leave
1090
+ * enough room past `start` to satisfy `minInterval`. If `[min, max]` is itself narrower than
1091
+ * `minInterval`, the result may still violate it — that's a contradictory host configuration (the
1092
+ * same class of issue as `min` configured later than `max`), not something to further engineer around.
1093
+ */
1094
+ private computeDefaultRange;
1095
+ /**
1096
+ * Upper bound for the START date input: the earlier of the END value and the configured `max`.
1097
+ * @docs-private
1098
+ */
1099
+ get startMax(): any;
1100
+ /**
1101
+ * Whether the period is invalid specifically because it runs backwards (`start` later than `end`) —
1102
+ * the one case `customPeriodErrorHint` actually describes. Deliberately compares the values rather
1103
+ * than keying off the START control's `kbqDatepickerMax` error: `startMax` is `min(max, end)`, so that
1104
+ * error fires both for a backwards period AND for a start beyond the configured `max`, and cannot
1105
+ * tell them apart. Everything else that can invalidate a control here — a value outside
1106
+ * `[min, max]` (`kbqDatepickerMin`/`kbqDatepickerMax`, `kbqTimepickerLowerThenMin`/
1107
+ * `kbqTimepickerHigherThenMax`) or unparseable typed text (`kbqDatepickerParse`/`kbqTimepickerParse`)
1108
+ * — is left to the field's own error styling instead of being mislabelled as an ordering problem.
1109
+ * @docs-private
1110
+ */
1111
+ protected get isPeriodInverted(): boolean;
1112
+ /**
1113
+ * Localized "period too short" hint with the `minInterval` limit interpolated and locale-formatted.
1114
+ * @docs-private
1115
+ */
1116
+ get minIntervalErrorHint(): string;
1117
+ /**
1118
+ * Localized "period too long" hint with the `maxInterval` limit interpolated and locale-formatted.
1119
+ * @docs-private
1120
+ */
1121
+ get maxIntervalErrorHint(): string;
929
1122
  /** Whether the current pipe is empty. */
930
1123
  get isEmpty(): boolean;
931
1124
  ngAfterViewInit(): void;
@@ -943,6 +1136,11 @@ declare abstract class KbqPipeDateBaseComponent<D> extends KbqBasePipe<KbqDateTi
943
1136
  onFocusStartInput(): void;
944
1137
  onFocusEndInput(): void;
945
1138
  hideCalendars(): void;
1139
+ /**
1140
+ * Whether this pipe edits the time part (`datetime`) or only the date (`date`). Gates whether the
1141
+ * `minDateTime` / `maxDateTime` bounds keep their time or are pinned to day edges.
1142
+ */
1143
+ protected abstract usesTime(): boolean;
946
1144
  /** Formats the selected range for display. */
947
1145
  protected abstract formatRange(start: D, end: D): string;
948
1146
  /** Default start value used when the pipe has no stored `start`. */
@@ -955,6 +1153,7 @@ declare abstract class KbqPipeDateBaseComponent<D> extends KbqBasePipe<KbqDateTi
955
1153
  }
956
1154
 
957
1155
  declare class KbqPipeDateComponent<D> extends KbqPipeDateBaseComponent<D> {
1156
+ protected usesTime(): boolean;
958
1157
  protected formatRange(start: D, end: D): string;
959
1158
  protected getDefaultStart(): D;
960
1159
  protected getDefaultEnd(): D;
@@ -963,6 +1162,7 @@ declare class KbqPipeDateComponent<D> extends KbqPipeDateBaseComponent<D> {
963
1162
  }
964
1163
 
965
1164
  declare class KbqPipeDatetimeComponent<D> extends KbqPipeDateBaseComponent<D> {
1165
+ protected usesTime(): boolean;
966
1166
  protected formatRange(start: D, end: D): string;
967
1167
  protected getDefaultStart(): D;
968
1168
  protected getDefaultEnd(): D;
@@ -970,6 +1170,44 @@ declare class KbqPipeDatetimeComponent<D> extends KbqPipeDateBaseComponent<D> {
970
1170
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeDatetimeComponent<any>, "kbq-pipe-datetime", never, {}, {}, never, never, true, never>;
971
1171
  }
972
1172
 
1173
+ declare class KbqPipeInputComponent extends KbqBasePipe<string | null> implements OnInit {
1174
+ /** @docs-private */
1175
+ protected readonly input: _angular_core.Signal<KbqInput>;
1176
+ /**
1177
+ * Input control.
1178
+ *
1179
+ * Must stay nullable: `KbqCleaner` resets the control, and `reset()` resolves to `defaultValue`, which is
1180
+ * `null` only while `nonNullable` is unset. `{ nonNullable: true }` would make `reset()` yield `''` and silently
1181
+ * break the cleaner bridge below.
1182
+ */
1183
+ readonly control: FormControl<string | null>;
1184
+ /**
1185
+ * Debounce in milliseconds between the last keystroke and the typed value being applied to the filter.
1186
+ * Matches `defaultEmitValueTimeout` of `kbq-search-expandable`, so both search fields of a bar feel the
1187
+ * same. `Enter` and blur apply immediately and cancel a pending apply.
1188
+ */
1189
+ debounceTime: number;
1190
+ /**
1191
+ * Minimum number of characters before typing applies the value to the filter. Anything shorter —
1192
+ * including an emptied field — is applied as `null`, so the filter never keeps text the user has
1193
+ * already erased. `Enter` and blur ignore the threshold. Set to `0` to apply every keystroke.
1194
+ */
1195
+ minLength: number;
1196
+ /** Cancels a pending debounced apply once the value has been applied (or cleared) through another path. */
1197
+ private readonly cancelPendingApply;
1198
+ /** Whether the current pipe is empty. Used for apply style modifier */
1199
+ get isEmpty(): boolean;
1200
+ ngOnInit(): void;
1201
+ /** clears the pipe and triggers changes */
1202
+ onClear(): void;
1203
+ /** focuses the input */
1204
+ open(): void;
1205
+ /** Commits a value to `data` and notifies the filter-bar. */
1206
+ private commit;
1207
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeInputComponent, never>;
1208
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeInputComponent, "kbq-pipe-input", never, {}, {}, never, never, true, never>;
1209
+ }
1210
+
973
1211
  declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements AfterViewInit, OnInit {
974
1212
  /** control for search options */
975
1213
  readonly searchControl: FormControl<string | null>;
@@ -989,15 +1227,24 @@ declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]>
989
1227
  get allVisibleOptionsSelected(): boolean;
990
1228
  /** true if all options selected */
991
1229
  get allOptionsSelected(): boolean;
1230
+ /**
1231
+ * Selection tally restricted to the options the user can actually toggle — the one place the
1232
+ * "ignore the locked options" rule of "select all" is expressed. `null` while there is nothing to
1233
+ * tally: no options came from the pipe template yet, or the view is not up.
1234
+ */
1235
+ private get unlockedTally();
992
1236
  get selectedAllEqualsSelectedNothing(): boolean;
993
1237
  private get visibleOptions();
994
1238
  private selectionAllInProgress;
995
1239
  private readonly multiSelect;
1240
+ constructor();
996
1241
  /** @docs-private */
997
1242
  ngOnInit(): void;
998
1243
  ngAfterViewInit(): void;
999
1244
  /** @docs-private */
1000
1245
  onSelect(item: KbqSelectValue[]): void;
1246
+ /** Whether the option cannot be deselected by the user. Template-only. */
1247
+ protected isLocked(item: KbqSelectValue): boolean;
1001
1248
  /** @docs-private */
1002
1249
  onClear(): void;
1003
1250
  /** @docs-private */
@@ -1065,12 +1312,27 @@ declare class KbqPipeMultiTreeSelectComponent extends KbqTreeSelectPipeBase<KbqS
1065
1312
  get numberOfSelectedLeaves(): number;
1066
1313
  /** true if all options selected */
1067
1314
  get allOptionsSelected(): boolean;
1315
+ /**
1316
+ * Selection tally restricted to the nodes the user can actually toggle — the one place the "ignore the
1317
+ * locked nodes" rule of "select all" is expressed. `null` until the tree data has been built.
1318
+ *
1319
+ * `triggerValues` is derived from the very same selection model as `selected`, so either would do.
1320
+ */
1321
+ private get unlockedTally();
1068
1322
  get selectedAllEqualsSelectedNothing(): boolean;
1069
1323
  /** true if all visible options selected */
1070
1324
  get allVisibleOptionsSelected(): boolean;
1325
+ /** Flat nodes whose selection the user cannot remove, the subtree of a locked branch included. */
1326
+ private get lockedDataNodes();
1327
+ /**
1328
+ * Values of every locked node, the subtree of a locked branch included. Resolved once per template
1329
+ * change rather than on demand — `isEmpty` reads it on every change-detection pass.
1330
+ */
1331
+ private lockedNodeValues;
1071
1332
  private readonly multiSelect;
1072
1333
  constructor();
1073
1334
  ngOnInit(): void;
1335
+ ngAfterViewInit(): void;
1074
1336
  isNodeSelectAll(_: number, nodeData: KbqTreeSelectFlatNode): boolean;
1075
1337
  onSelect({ value: option }: {
1076
1338
  value: any;
@@ -1084,10 +1346,20 @@ declare class KbqPipeMultiTreeSelectComponent extends KbqTreeSelectPipeBase<KbqS
1084
1346
  */
1085
1347
  updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
1086
1348
  onClear(): void;
1349
+ /** Clearing keeps the locked values; with none configured the pipe resets to `null` as before. */
1350
+ protected clearedValue(): KbqSelectValue[] | null;
1087
1351
  /** @docs-private */
1088
1352
  onClose(): void;
1089
1353
  /** handler for select all options in select */
1090
1354
  selectAllHandler: (event: KeyboardEvent) => void;
1355
+ /**
1356
+ * Whether the node cannot be deselected: either its own value is locked, or it descends from a locked
1357
+ * branch. Locking a branch has to lock its subtree — deselecting a child would otherwise switch the
1358
+ * locked parent's own checkbox off.
1359
+ */
1360
+ private isLockedNode;
1361
+ /** Puts back every locked node the tree's own cascades may have deselected. */
1362
+ private enforceLockedNodes;
1091
1363
  private toggleParents;
1092
1364
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeMultiTreeSelectComponent, never>;
1093
1365
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeMultiTreeSelectComponent, "kbq-pipe-multi-tree-select", never, {}, {}, never, never, true, never>;
@@ -1161,5 +1433,5 @@ declare class KbqPipeTreeSelectComponent extends KbqTreeSelectPipeBase<KbqSelect
1161
1433
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeTreeSelectComponent, "kbq-pipe-tree-select", never, {}, {}, never, never, true, never>;
1162
1434
  }
1163
1435
 
1164
- export { KBQ_FILTER_BAR_CONFIGURATION, KBQ_FILTER_BAR_DEFAULT_CONFIGURATION, KBQ_FILTER_BAR_HOST, KBQ_FILTER_BAR_PIPES, KBQ_PIPE_DATA, KbqBasePipe, KbqFilterBar, KbqFilterBarButton, KbqFilterBarModule, KbqFilterRefresher as KbqFilterBarRefresher, KbqFilterRefresher, KbqFilterReset, KbqFilterSavePopover, KbqFilters, KbqPipeAdd, KbqPipeButton, KbqPipeDateBaseComponent, KbqPipeDateComponent, KbqPipeDatetimeComponent, KbqPipeDirective, KbqPipeMinWidth, KbqPipeMultiSelectComponent, KbqPipeMultiTreeSelectComponent, KbqPipeReadonlyComponent, KbqPipeSelectComponent, KbqPipeState, KbqPipeTextComponent, KbqPipeTreeSelectComponent, KbqPipeTypes, KbqSaveFilterStatuses, KbqTreeSelectFlatNode, KbqTreeSelectPipeBase, defaultFilterBarPipes, getId, kbqBuildTree, kbqFilterBarPipesProvider };
1436
+ export { KBQ_FILTER_BAR_CONFIGURATION, KBQ_FILTER_BAR_DEFAULT_CONFIGURATION, KBQ_FILTER_BAR_HOST, KBQ_FILTER_BAR_PIPES, KBQ_PIPE_DATA, KbqBasePipe, KbqFilterBar, KbqFilterBarButton, KbqFilterBarModule, KbqFilterRefresher as KbqFilterBarRefresher, KbqFilterRefresher, KbqFilterReset, KbqFilterSavePopover, KbqFilters, KbqPipeAdd, KbqPipeButton, KbqPipeDateBaseComponent, KbqPipeDateComponent, KbqPipeDatetimeComponent, KbqPipeDirective, KbqPipeInputComponent, KbqPipeMinWidth, KbqPipeMultiSelectComponent, KbqPipeMultiTreeSelectComponent, KbqPipeReadonlyComponent, KbqPipeSelectComponent, KbqPipeState, KbqPipeTextComponent, KbqPipeTreeSelectComponent, KbqPipeTypes, KbqSaveFilterStatuses, KbqTreeSelectFlatNode, KbqTreeSelectPipeBase, defaultFilterBarPipes, getId, kbqBuildTree, kbqFilterBarPipesProvider };
1165
1437
  export type { KbqDateTimeValue, KbqFilter, KbqFilterBarConfiguration, KbqFilterBarHost, KbqPipe, KbqPipeData, KbqPipeTemplate, KbqPipeType, KbqSaveFilterError, KbqSaveFilterEvent, KbqSelectValue, KbqTreeSelectNode };
@@ -31,17 +31,6 @@
31
31
  }
32
32
  }
33
33
 
34
- .kbq-pipe__separator {
35
- z-index: 1;
36
-
37
- margin-inline-start: -1px;
38
- margin-inline-end: 0;
39
-
40
- height: var(--kbq-size-l);
41
-
42
- align-self: center;
43
- }
44
-
45
34
  .kbq-select:not(:hover, .kbq-active),
46
35
  .kbq-tree-select:not(:hover, .kbq-active),
47
36
  .kbq-button:not(:hover, .kbq-active, [disabled]) {
@@ -0,0 +1,10 @@
1
+ .kbq-pipe.kbq-pipe__input {
2
+ // Fall back like base-pipe.scss does for --kbq-filter-bar-pipe-max-width: the token is declared on
3
+ // .kbq-filter-bar, which a pipe rendered outside a bar never sees.
4
+ width: var(--kbq-filter-bar-pipe-input-width, 240px);
5
+ flex: none;
6
+
7
+ .kbq-form-field {
8
+ width: 100%;
9
+ }
10
+ }
@@ -1,5 +1,3 @@
1
- @use '../filter-bar-theme' as *;
2
-
3
1
  .kbq-pipe__multi-tree-select {
4
2
  .kbq-pipe__value {
5
3
  margin-inline-start: var(--kbq-size-xxs);
@@ -15,7 +13,3 @@
15
13
  height: unset;
16
14
  }
17
15
  }
18
-
19
- .kbq-pipe-multi-tree-select__panel .kbq-select__content {
20
- @include kbq-filter-bar-panel-content-max-height();
21
- }
@@ -1,5 +1,3 @@
1
- @use '../filter-bar-theme' as *;
2
-
3
1
  .kbq-pipe__multiselect {
4
2
  .kbq-pipe__value {
5
3
  margin-inline-start: var(--kbq-size-xxs);
@@ -11,7 +9,3 @@
11
9
  margin-inline-start: var(--kbq-size-xs);
12
10
  }
13
11
  }
14
-
15
- .kbq-pipe-multiselect__panel .kbq-select__content {
16
- @include kbq-filter-bar-panel-content-max-height();
17
- }
@@ -1,9 +1,3 @@
1
- @use '../filter-bar-theme' as *;
2
-
3
- .kbq-pipe-tree-select__panel .kbq-tree-select__content {
4
- @include kbq-filter-bar-panel-content-max-height();
5
- }
6
-
7
1
  .kbq-pipe__tree-select {
8
2
  .kbq-select__trigger {
9
3
  height: unset;