@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
@@ -1,20 +1,125 @@
1
- import * as i0 from '@angular/core';
2
- import { TemplateRef, InjectionToken, Provider, OnInit, ElementRef, DestroyRef, ChangeDetectorRef, EventEmitter, AfterContentInit, AfterViewInit, OnDestroy } from '@angular/core';
1
+ import * as _angular_core from '@angular/core';
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, KbqPseudoCheckboxState } from '@koobiq/components/core';
5
- import { Observable, BehaviorSubject, Subject } from 'rxjs';
4
+ import { PopUpPlacements, KbqComponentColors, PopUpSizes, KbqOption, DateAdapter, DateFormatter, KbqPseudoCheckboxState } from '@koobiq/components/core';
5
+ import { Subject, BehaviorSubject, Observable } from 'rxjs';
6
6
  import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
7
- import { UntypedFormControl, FormControl, FormGroup } from '@angular/forms';
7
+ import { FormControl, FormGroup } from '@angular/forms';
8
8
  import { KbqButtonStyles, KbqButton } from '@koobiq/components/button';
9
9
  import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
10
10
  import { KbqPopoverTrigger } from '@koobiq/components/popover';
11
11
  import { KbqSelect } from '@koobiq/components/select';
12
- import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
13
12
  import { KbqListSelection } from '@koobiq/components/list';
14
- import { FlatTreeControl, KbqTreeFlattener, KbqTreeFlatDataSource, KbqTreeOption } from '@koobiq/components/tree';
13
+ import { KbqInput } from '@koobiq/components/input';
14
+ import { FlatTreeControl, KbqTreeFlattener, KbqTreeFlatDataSource, KbqTreeSelection, KbqTreeOption } from '@koobiq/components/tree';
15
15
  import { KbqTreeSelect } from '@koobiq/components/tree-select';
16
16
 
17
- /**default configuration of filter-bar */
17
+ /** Injection Token for providing configuration of filter-bar */
18
+ declare const KBQ_PIPE_DATA: InjectionToken<unknown>;
19
+ /** function to get unique identifier of an element */
20
+ declare function getId(item: KbqPipeTemplate): KbqPipeType | string | number;
21
+ declare abstract class KbqBasePipe<V> implements AfterViewInit {
22
+ /** changes of state */
23
+ readonly stateChanges: Subject<void>;
24
+ /** pipe data. Provided from subclass */
25
+ readonly data: KbqPipeData<V>;
26
+ /** KbqFilterBar instance
27
+ * @docs-private */
28
+ protected readonly filterBar: KbqFilterBarHost | null;
29
+ /** @docs-private */
30
+ protected readonly changeDetectorRef: ChangeDetectorRef;
31
+ /** @docs-private */
32
+ protected readonly destroyRef: DestroyRef;
33
+ /** @docs-private */
34
+ protected readonly focusMonitor: FocusMonitor;
35
+ /** @docs-private */
36
+ protected readonly elementRef: ElementRef<HTMLElement>;
37
+ private readonly inputModalityDetector;
38
+ private readonly document;
39
+ /** Last known focus origin within the pipe. Used to preserve the keyboard focus ring on restore. */
40
+ private focusOrigin;
41
+ /**
42
+ * Whether this pipe has been destroyed. Guards deferred (`setTimeout`) work that could otherwise
43
+ * read view queries or mutate `data` after the pipe was removed or the filter switched.
44
+ * @docs-private
45
+ */
46
+ protected destroyed: boolean;
47
+ /** values to select from the pipe template */
48
+ protected values: any;
49
+ /** TemplateRef for selecting an option */
50
+ protected valueTemplate?: TemplateRef<any> | string;
51
+ /**
52
+ * Optional equality comparator forwarded from the pipe template to the underlying `kbq-select`.
53
+ * Only consumed by the select / multi-select pipe components; when unset they fall back to their
54
+ * own id-based `compareByValue`.
55
+ */
56
+ protected optionCompareWith?: (o1: KbqSelectValue | null | undefined, o2: KbqSelectValue | null | undefined) => boolean;
57
+ /**
58
+ * Whether the current platform is a Mac.
59
+ *
60
+ * @docs-private
61
+ */
62
+ isMac: boolean;
63
+ /** Data for the pipe.
64
+ * @docs-private */
65
+ $implicit: unknown;
66
+ /** Whether the current pipe is empty. Used for apply style modifier */
67
+ get isEmpty(): boolean;
68
+ /** Whether the current pipe is removable or cleanable. Used for apply style modifier */
69
+ get showRemoveButton(): boolean;
70
+ /** localized data
71
+ * @docs-private */
72
+ get localeData(): KbqFilterBarConfiguration;
73
+ constructor();
74
+ ngAfterViewInit(): void;
75
+ /** templateRef checker utility */
76
+ isTemplateRef(value: unknown): boolean;
77
+ /** updates values for selection and value template */
78
+ updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
79
+ /** removes pipe from filter-bar and triggers changes */
80
+ onRemove(): void;
81
+ /** clears the pipe and triggers changes */
82
+ onClear(): void;
83
+ /**
84
+ * Restores focus to the pipe's trigger button after a value is chosen or the panel closes.
85
+ * Focuses via {@link FocusMonitor} with the captured origin so a keyboard-driven interaction
86
+ * keeps its focus ring, while a mouse-driven one does not.
87
+ *
88
+ * @docs-private
89
+ */
90
+ protected restoreTriggerFocus(): void;
91
+ /** @docs-private */
92
+ abstract open(): void;
93
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqBasePipe<any>, never>;
94
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqBasePipe<any>, never, never, {}, {}, never, never, true, never>;
95
+ }
96
+ declare class KbqPipeMinWidth {
97
+ /** KbqFilterBar instance */
98
+ protected readonly filterBar: KbqFilterBarHost | null;
99
+ /** @docs-private */
100
+ protected readonly elementRef: ElementRef<HTMLElement>;
101
+ /** @docs-private */
102
+ protected readonly changeDetectorRef: ChangeDetectorRef;
103
+ /** @docs-private */
104
+ protected minWidth: string;
105
+ /** maximal symbols for apply fit-content to min-width */
106
+ maxSymbolsForFitContent: number;
107
+ /** current length of text */
108
+ get textLength(): number;
109
+ constructor();
110
+ update: () => void;
111
+ /** Schedules a deferred min-width recompute and returns the effect-cleanup that cancels it. */
112
+ private scheduleMinWidthUpdate;
113
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeMinWidth, never>;
114
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqPipeMinWidth, "[kbqPipeMinWidth]", never, {}, {}, never, never, true, never>;
115
+ }
116
+
117
+ /**
118
+ * Default localized strings for the filter-bar, used when no `KBQ_LOCALE_SERVICE` (nor an explicit
119
+ * `KBQ_FILTER_BAR_CONFIGURATION`) is provided. These are the Russian (`ru-RU`) strings, matching the
120
+ * library-wide default-locale convention (every `KBQ_*_DEFAULT_CONFIGURATION` resolves to `ruRULocaleData`).
121
+ * Provide `KBQ_LOCALE_SERVICE` at the application root to localize the filter-bar for other locales.
122
+ */
18
123
  declare const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION: {
19
124
  reset: {
20
125
  buttonName: string;
@@ -39,9 +144,15 @@ declare const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION: {
39
144
  errorHint: string;
40
145
  saveButton: string;
41
146
  cancelButton: string;
147
+ actionsTooltip: string;
42
148
  };
43
149
  add: {
44
150
  tooltip: string;
151
+ addedAnnouncement: string;
152
+ };
153
+ refresher: {
154
+ refresh: string;
155
+ settings: string;
45
156
  };
46
157
  pipe: {
47
158
  clearButtonTooltip: string;
@@ -58,16 +169,118 @@ declare const KBQ_FILTER_BAR_DEFAULT_CONFIGURATION: {
58
169
  backToPeriodSelection: string;
59
170
  };
60
171
  };
172
+ /** Shape of the localized strings consumed by the filter-bar and its pipes. */
173
+ type KbqFilterBarConfiguration = typeof KBQ_FILTER_BAR_DEFAULT_CONFIGURATION;
61
174
  /** Injection Token for providing configuration of filter-bar */
62
- declare const KBQ_FILTER_BAR_CONFIGURATION: InjectionToken<unknown>;
175
+ declare const KBQ_FILTER_BAR_CONFIGURATION: InjectionToken<{
176
+ reset: {
177
+ buttonName: string;
178
+ };
179
+ search: {
180
+ tooltip: string;
181
+ placeholder: string;
182
+ };
183
+ filters: {
184
+ defaultName: string;
185
+ saveNewFilterTooltip: string;
186
+ searchPlaceholder: string;
187
+ searchEmptyResult: string;
188
+ saveAsNewFilter: string;
189
+ saveChanges: string;
190
+ saveAsNew: string;
191
+ change: string;
192
+ resetChanges: string;
193
+ remove: string;
194
+ name: string;
195
+ error: string;
196
+ errorHint: string;
197
+ saveButton: string;
198
+ cancelButton: string;
199
+ actionsTooltip: string;
200
+ };
201
+ add: {
202
+ tooltip: string;
203
+ addedAnnouncement: string;
204
+ };
205
+ refresher: {
206
+ refresh: string;
207
+ settings: string;
208
+ };
209
+ pipe: {
210
+ clearButtonTooltip: string;
211
+ removeButtonTooltip: string;
212
+ applyButton: string;
213
+ emptySearchResult: string;
214
+ selectAll: string;
215
+ };
216
+ datePipe: {
217
+ customPeriod: string;
218
+ customPeriodFrom: string;
219
+ customPeriodTo: string;
220
+ customPeriodErrorHint: string;
221
+ backToPeriodSelection: string;
222
+ };
223
+ }>;
224
+ /**
225
+ * Contract a pipe (or filter-bar sub-component) depends on instead of the concrete `KbqFilterBar`.
226
+ * `KbqFilterBar` provides itself as {@link KBQ_FILTER_BAR_HOST}, so a pipe can be unit-tested against a
227
+ * lightweight mock of this seam rather than a full bar. Members mirror the current `KbqFilterBar` surface;
228
+ * they are expected to slim down once the state model moves to signals.
229
+ */
230
+ interface KbqFilterBarHost {
231
+ /** Localized strings and configuration for the filter-bar and its pipes. */
232
+ configuration: KbqFilterBarConfiguration;
233
+ /** Currently selected filter. A two-way-bindable `model()`: read via `filter()`, write via `filter.set()`. */
234
+ readonly filter: ModelSignal<KbqFilter | null>;
235
+ /** Templates used when adding a pipe (also hold the option lists). Read via `pipeTemplates()`. */
236
+ readonly pipeTemplates: Signal<KbqPipeTemplate[]>;
237
+ /** Whether selecting all options counts as selecting nothing. */
238
+ readonly selectedAllEqualsSelectedNothing: Signal<boolean>;
239
+ /** Whether the current filter is saved. */
240
+ readonly isSaved: Signal<boolean>;
241
+ /** Whether the current filter is changed. */
242
+ readonly isChanged: Signal<boolean>;
243
+ /** Whether the current filter is both saved and changed. */
244
+ readonly isSavedAndChanged: Signal<boolean>;
245
+ /** Whether the current filter is readonly. */
246
+ readonly isReadOnly: Signal<boolean>;
247
+ /**
248
+ * Emits whenever a pipe value changes.
249
+ * (The two-way-bound `filter` value is emitted by the `filter` model's `filterChange` output.)
250
+ */
251
+ readonly onChangePipe: OutputEmitterRef<KbqPipe>;
252
+ /** Emits whenever a pipe is cleared. */
253
+ readonly onClearPipe: OutputEmitterRef<KbqPipe>;
254
+ /** Emits whenever a select/multiselect pipe closes. */
255
+ readonly onClosePipe: OutputEmitterRef<KbqPipe>;
256
+ /** Internal filter changes. */
257
+ readonly internalFilterChanges: BehaviorSubject<KbqFilter | null>;
258
+ /** Internal pipe-template changes. */
259
+ readonly internalTemplatesChanges: BehaviorSubject<KbqPipeTemplate[] | null>;
260
+ /** Requests opening a pipe after it is added. */
261
+ readonly openPipe: BehaviorSubject<string | number | null>;
262
+ /** Emits when the filter is reset. */
263
+ readonly onResetFilter: BehaviorSubject<boolean>;
264
+ /** Removes a pipe from the current filter and emits the change. */
265
+ removePipe(pipe: KbqPipe): void;
266
+ /** Clears the current filter's "changed" flag. */
267
+ resetFilterChangedState(): void;
268
+ }
269
+ /**
270
+ * Injection token exposing the {@link KbqFilterBarHost} seam. `KbqFilterBar` provides itself via
271
+ * `useExisting`, so pipes `inject(KBQ_FILTER_BAR_HOST)` instead of depending on the concrete bar.
272
+ */
273
+ declare const KBQ_FILTER_BAR_HOST: InjectionToken<KbqFilterBarHost>;
63
274
  /** Injection Token for providing pipes in filter-bar */
64
- declare const KBQ_FILTER_BAR_PIPES: InjectionToken<any>;
275
+ declare const KBQ_FILTER_BAR_PIPES: InjectionToken<Map<KbqPipeType, Type<KbqBasePipe<unknown>>>>;
65
276
  /** Utility provider for `KBQ_FILTER_BAR_PIPES`. */
66
277
  declare const kbqFilterBarPipesProvider: () => Provider;
67
278
  /** list of pipe types available out of the box */
68
279
  declare enum KbqPipeTypes {
69
280
  ReadOnly = "readonly",
70
281
  Text = "text",
282
+ /** Renders a bare input: no popover, never opens. Commits while typing (debounced), on Enter and on blur. */
283
+ Input = "input",
71
284
  Select = "select",
72
285
  TreeSelect = "tree-select",
73
286
  MultiSelect = "multiselect",
@@ -75,9 +288,9 @@ declare enum KbqPipeTypes {
75
288
  Date = "date",
76
289
  Datetime = "datetime"
77
290
  }
78
- type KbqPipeType = `${KbqPipeTypes}` | string;
291
+ type KbqPipeType = `${KbqPipeTypes}` | (string & {});
79
292
  /** list of pipes available out of the box. */
80
- declare const defaultFilterBarPipes: [string, unknown][];
293
+ declare const defaultFilterBarPipes: [KbqPipeType, Type<KbqBasePipe<unknown>>][];
81
294
  interface KbqDateTimeValue {
82
295
  name?: string;
83
296
  start?: string;
@@ -86,6 +299,8 @@ interface KbqDateTimeValue {
86
299
  interface KbqSelectValue {
87
300
  name: string;
88
301
  value: unknown;
302
+ /** Optional stable identifier used by the select/multi-select pipe comparators. */
303
+ id?: string | number;
89
304
  }
90
305
  interface KbqFilter {
91
306
  name: string;
@@ -121,6 +336,12 @@ interface KbqPipeData<V> extends KbqPipe {
121
336
  interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
122
337
  values?: unknown[];
123
338
  valueTemplate?: TemplateRef<any> | string;
339
+ /**
340
+ * Custom equality comparator forwarded to the underlying `kbq-select` of the `select` /
341
+ * `multiselect` pipes. When omitted, the pipe's default id-based comparator (`compareByValue`)
342
+ * is used. Ignored by other pipe types.
343
+ */
344
+ compareWith?: (o1: KbqSelectValue | null | undefined, o2: KbqSelectValue | null | undefined) => boolean;
124
345
  }
125
346
  interface KbqSaveFilterError {
126
347
  text?: string;
@@ -154,19 +375,96 @@ interface KbqTreeSelectNode {
154
375
  * Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.
155
376
  * The return value is the list of extends `KbqTreeSelectNode`.
156
377
  */
157
- declare function kbqBuildTree<T extends KbqTreeSelectNode>(value: any, level: number): T[];
378
+ declare function kbqBuildTree<T extends KbqTreeSelectNode>(value: Record<string, unknown>, level: number): T[];
158
379
 
159
380
  declare class KbqFilterReset {
160
- /** KbqFilterBar instance */
381
+ /** KbqFilterBar host seam */
161
382
  private readonly filterBar;
162
383
  /** Event that is generated whenever the user reset a filter. */
163
- readonly onResetFilter: i0.OutputEmitterRef<KbqFilter | null>;
384
+ readonly onResetFilter: _angular_core.OutputEmitterRef<KbqFilter | null>;
164
385
  /** localized data
165
386
  * @docs-private */
166
- get localeData(): any;
387
+ get localeData(): string;
167
388
  protected resetFilter(): void;
168
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterReset, never>;
169
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterReset, "kbq-filter-reset", never, {}, { "onResetFilter": "onResetFilter"; }, never, ["*"], true, never>;
389
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilterReset, never>;
390
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqFilterReset, "kbq-filter-reset", never, {}, { "onResetFilter": "onResetFilter"; }, never, ["*"], true, never>;
391
+ }
392
+
393
+ /**
394
+ * The "save / rename filter" popover, extracted from `KbqFilters` (SRP). Owns the save form state, the
395
+ * name control, validation/error display and the save/rename flow. It declares the popover's header,
396
+ * content and footer templates and pushes them imperatively onto the trigger it is given (via the
397
+ * `popoverTrigger` input), so there is no cross-component template binding on the parent (which would
398
+ * otherwise risk `ExpressionChangedAfterItHasBeenCheckedError`). `KbqFilters` keeps the trigger (on its
399
+ * main button), focus management and the public `filterSavedSuccessfully`/`filterSavedUnsuccessfully` API,
400
+ * delegating to this component.
401
+ *
402
+ * @docs-private
403
+ */
404
+ declare class KbqFilterSavePopover implements AfterViewInit {
405
+ private readonly changeDetectorRef;
406
+ /** Popover trigger owned by the parent (`KbqFilters` main button). */
407
+ readonly popoverTrigger: _angular_core.InputSignal<KbqPopoverTrigger>;
408
+ /** Filter bar, used for the save payload, the current filter and localized strings. */
409
+ readonly filterBar: _angular_core.InputSignal<KbqFilterBar>;
410
+ /** Emits when the user saves/renames a filter. */
411
+ readonly save: _angular_core.OutputEmitterRef<KbqSaveFilterEvent>;
412
+ /** Emits when the popover closes; the boolean requests focus restoration by the parent. */
413
+ readonly closed: _angular_core.OutputEmitterRef<boolean>;
414
+ /** @docs-private */
415
+ readonly headerTemplate: _angular_core.Signal<TemplateRef<unknown>>;
416
+ /** @docs-private */
417
+ readonly contentTemplate: _angular_core.Signal<TemplateRef<unknown>>;
418
+ /** @docs-private */
419
+ readonly footerTemplate: _angular_core.Signal<TemplateRef<unknown>>;
420
+ private readonly newFilterName;
421
+ private readonly saveFilterButton;
422
+ /** new filter name for saving */
423
+ filterName: FormControl<string | null>;
424
+ /** true if saving a new filter, false if saving changes in filter */
425
+ saveNewFilter: boolean;
426
+ showFilterSavingError: boolean;
427
+ /** Custom error text passed to `showError()`; `null` when the locale-derived default should be used. */
428
+ private customErrorText;
429
+ isSaving: boolean;
430
+ /** localized data
431
+ * @docs-private */
432
+ get localeData(): {
433
+ defaultName: string;
434
+ saveNewFilterTooltip: string;
435
+ searchPlaceholder: string;
436
+ searchEmptyResult: string;
437
+ saveAsNewFilter: string;
438
+ saveChanges: string;
439
+ saveAsNew: string;
440
+ change: string;
441
+ resetChanges: string;
442
+ remove: string;
443
+ name: string;
444
+ error: string;
445
+ errorHint: string;
446
+ saveButton: string;
447
+ cancelButton: string;
448
+ actionsTooltip: string;
449
+ };
450
+ /** Filter saving error text (custom or locale-derived).
451
+ * @docs-private */
452
+ get filterSavingErrorText(): string;
453
+ /** header of popover. Depends on the mode */
454
+ get popoverHeader(): string;
455
+ ngAfterViewInit(): void;
456
+ openSaveAsNewFilterPopover(): void;
457
+ openChangeFilterNamePopover(): void;
458
+ saveAsNew(event?: Event): void;
459
+ showError(error?: KbqSaveFilterError): void;
460
+ close: (restoreFocus?: boolean) => void;
461
+ /** Hide the popover on a successful save. Focus restoration is handled by the parent. */
462
+ savedSuccessfully(): void;
463
+ /** Release the saving state after a failed save (the error itself is shown by the host via `showError`). */
464
+ savedUnsuccessfully(): void;
465
+ private preparePopover;
466
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilterSavePopover, never>;
467
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqFilterSavePopover, "kbq-filter-save-popover", never, { "popoverTrigger": { "alias": "popoverTrigger"; "required": true; "isSignal": true; }; "filterBar": { "alias": "filterBar"; "required": true; "isSignal": true; }; }, { "save": "save"; "closed": "closed"; }, never, never, true, never>;
170
468
  }
171
469
 
172
470
  declare class KbqFilters implements OnInit {
@@ -187,79 +485,89 @@ declare class KbqFilters implements OnInit {
187
485
  /** @docs-private */
188
486
  private readonly changeDetectorRef;
189
487
  /** @docs-private */
190
- protected readonly mainButton: i0.Signal<KbqButton>;
488
+ protected readonly mainButton: _angular_core.Signal<KbqButton>;
191
489
  /** @docs-private */
192
- protected readonly saveNewFilterButton: i0.Signal<KbqButton>;
490
+ protected readonly saveNewFilterButton: _angular_core.Signal<KbqButton>;
193
491
  /** @docs-private */
194
- protected readonly filterActionsButton: i0.Signal<KbqButton>;
492
+ protected readonly filterActionsButton: _angular_core.Signal<KbqButton>;
195
493
  /** @docs-private */
196
- protected readonly popover: i0.Signal<KbqPopoverTrigger>;
494
+ protected readonly popover: _angular_core.Signal<KbqPopoverTrigger>;
197
495
  /** @docs-private */
198
- protected readonly dropdown: i0.Signal<KbqDropdownTrigger>;
496
+ protected readonly dropdown: _angular_core.Signal<KbqDropdownTrigger>;
199
497
  /** @docs-private */
200
- protected readonly filterActionsDropdown: i0.Signal<KbqDropdownTrigger | undefined>;
498
+ protected readonly filterActionsDropdown: _angular_core.Signal<KbqDropdownTrigger | undefined>;
499
+ /** @docs-private */
500
+ protected readonly savePopover: _angular_core.Signal<KbqFilterSavePopover>;
201
501
  private readonly search;
202
- private readonly newFilterName;
203
- private readonly saveFilterButton;
204
502
  /** control for search filter */
205
- searchControl: UntypedFormControl;
503
+ readonly searchControl: FormControl<string | null>;
206
504
  /** filtered by search filters */
207
505
  filteredOptions: Observable<KbqFilter[]>;
208
506
  /** @docs-private */
209
- popoverSize: PopUpSizes;
507
+ protected readonly popoverSize = PopUpSizes.Medium;
210
508
  /** @docs-private */
211
- popoverOffset: number;
212
- /** new filter name for saving */
213
- filterName: FormControl<string | null>;
214
- /** true if saving a new filter, false if saving changes in filter */
215
- saveNewFilter: boolean;
216
- showFilterSavingError: boolean;
217
- filterSavingErrorText: string;
218
- isSaving: boolean;
219
- readonly filters: i0.InputSignal<KbqFilter[]>;
509
+ protected readonly popoverOffset: number;
510
+ readonly filters: _angular_core.InputSignal<KbqFilter[]>;
220
511
  /** Event that is generated whenever the user selects a filter. */
221
- readonly onSelectFilter: i0.OutputEmitterRef<KbqFilter>;
222
- /** Event that is generated whenever the user save a filter. */
223
- readonly onSave: i0.OutputEmitterRef<KbqSaveFilterEvent>;
512
+ readonly onSelectFilter: _angular_core.OutputEmitterRef<KbqFilter>;
513
+ /**
514
+ * Event that is generated whenever the user save a filter.
515
+ *
516
+ * The emitted `filter` shares its pipe objects with the live filter by design (so the rendered pipes keep
517
+ * their identity across a save instead of being destroyed and recreated). Consumers that persist
518
+ * `event.filter` as an immutable record should snapshot it first (e.g. via `KbqFilterBar.saveFilterState`
519
+ * or a structural copy) — otherwise later in-place pipe edits will mutate the stored reference.
520
+ */
521
+ readonly onSave: _angular_core.OutputEmitterRef<KbqSaveFilterEvent>;
224
522
  /** Event that is generated whenever the user change a filter. */
225
- readonly onChangeFilter: i0.OutputEmitterRef<KbqSaveFilterEvent>;
523
+ readonly onChangeFilter: _angular_core.OutputEmitterRef<KbqSaveFilterEvent>;
226
524
  /** Event that is generated whenever the user remove a filter. */
227
- readonly onRemoveFilter: i0.OutputEmitterRef<KbqFilter>;
525
+ readonly onRemoveFilter: _angular_core.OutputEmitterRef<KbqFilter>;
228
526
  /** Event that is generated whenever the user reset a filter changes. */
229
- readonly onResetFilterChanges: i0.OutputEmitterRef<KbqFilter | null>;
230
- /** header of popover. Depends on the mode */
231
- get popoverHeader(): string;
527
+ readonly onResetFilterChanges: _angular_core.OutputEmitterRef<KbqFilter | null>;
232
528
  /** Component state. true if opened dropdown or popup */
233
529
  get opened(): boolean;
234
530
  /** Component state. true if opened dropdown or popup of filterActions */
235
531
  get filterActionsOpened(): boolean;
236
- /** Selected filter */
532
+ /** Selected filter. Kept as a plain getter facade over the bar's `filter` model. */
237
533
  get filter(): KbqFilter | null;
238
534
  /** Component state. True if 'filters' input contains no elements. */
239
535
  get isEmpty(): boolean;
240
536
  /** localized data
241
537
  * @docs-private */
242
- get localeData(): any;
538
+ get localeData(): {
539
+ defaultName: string;
540
+ saveNewFilterTooltip: string;
541
+ searchPlaceholder: string;
542
+ searchEmptyResult: string;
543
+ saveAsNewFilter: string;
544
+ saveChanges: string;
545
+ saveAsNew: string;
546
+ change: string;
547
+ resetChanges: string;
548
+ remove: string;
549
+ name: string;
550
+ error: string;
551
+ errorHint: string;
552
+ saveButton: string;
553
+ cancelButton: string;
554
+ actionsTooltip: string;
555
+ };
243
556
  /** Current focus origin state.
244
557
  * @docs-private */
245
558
  get focusOrigin(): FocusOrigin;
246
559
  private _focusOrigin;
247
560
  private focusedElementBeforeOpen;
248
- constructor();
249
561
  ngOnInit(): void;
250
562
  /** @docs-private */
251
563
  focusedElementBeforeIs(button: KbqButton): boolean;
252
564
  selectFilter(filter: KbqFilter): void;
253
565
  saveChanges(): void;
254
- saveAsNew(event?: Event): void;
255
- showError(error?: KbqSaveFilterError): void;
256
566
  restoreFocus(): void;
257
- preparePopover(): void;
258
- openSaveAsNewFilterPopover(): void;
259
- openChangeFilterNamePopover(): void;
260
567
  /** @docs-private */
261
568
  saveFocusedElement(button?: KbqButton): void;
262
- closePopover: (restoreFocus?: boolean) => void;
569
+ /** Restore focus when the save popover reports it closed. @docs-private */
570
+ onSavePopoverClosed(restoreFocus: boolean): void;
263
571
  /** @docs-private */
264
572
  stopEventPropagation(event: Event): void;
265
573
  /** @docs-private */
@@ -273,64 +581,142 @@ declare class KbqFilters implements OnInit {
273
581
  filterSavedSuccessfully(): void;
274
582
  /** Shows an error. Use this method in the onSave or onChangeFilter events if saving data failed. */
275
583
  filterSavedUnsuccessfully(error?: KbqSaveFilterError): void;
584
+ /** @docs-private */
585
+ get filterName(): FormControl<string | null>;
586
+ /** @docs-private */
587
+ get saveNewFilter(): boolean;
588
+ /** @docs-private */
589
+ set saveNewFilter(value: boolean);
590
+ /** @docs-private */
591
+ get isSaving(): boolean;
592
+ /** @docs-private */
593
+ set isSaving(value: boolean);
594
+ /** @docs-private */
595
+ get showFilterSavingError(): boolean;
596
+ /** @docs-private */
597
+ set showFilterSavingError(value: boolean);
598
+ /** @docs-private */
599
+ get filterSavingErrorText(): string;
600
+ /** header of popover. Depends on the mode
601
+ * @docs-private */
602
+ get popoverHeader(): string;
603
+ /** @docs-private */
604
+ openSaveAsNewFilterPopover(): void;
605
+ /** @docs-private */
606
+ openChangeFilterNamePopover(): void;
607
+ /** @docs-private */
608
+ saveAsNew(event?: Event): void;
609
+ /** @docs-private */
610
+ showError(error?: KbqSaveFilterError): void;
611
+ /** @docs-private */
612
+ closePopover(restoreFocus?: boolean): void;
276
613
  private getFilteredOptions;
277
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilters, never>;
278
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilters, "kbq-filters", ["kbqFilters"], { "filters": { "alias": "filters"; "required": false; "isSignal": true; }; }, { "onSelectFilter": "onSelectFilter"; "onSave": "onSave"; "onChangeFilter": "onChangeFilter"; "onRemoveFilter": "onRemoveFilter"; "onResetFilterChanges": "onResetFilterChanges"; }, never, ["*"], true, never>;
614
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilters, never>;
615
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqFilters, "kbq-filters", ["kbqFilters"], { "filters": { "alias": "filters"; "required": true; "isSignal": true; }; }, { "onSelectFilter": "onSelectFilter"; "onSave": "onSave"; "onChangeFilter": "onChangeFilter"; "onRemoveFilter": "onRemoveFilter"; "onResetFilterChanges": "onResetFilterChanges"; }, never, ["*"], true, never>;
279
616
  }
280
617
 
281
- declare class KbqFilterBar {
618
+ declare class KbqFilterBar implements KbqFilterBarHost {
282
619
  /** @docs-private */
283
620
  protected readonly changeDetectorRef: ChangeDetectorRef;
284
621
  /** @docs-private */
285
622
  protected readonly localeService: _koobiq_components_core.KbqLocaleService | null;
286
- readonly externalConfiguration: unknown;
287
- configuration: any;
288
- /** @docs-private */
289
- readonly filters: i0.Signal<KbqFilters | undefined>;
290
- /** @docs-private */
291
- readonly filterReset: i0.Signal<KbqFilterReset | undefined>;
623
+ readonly externalConfiguration: {
624
+ reset: {
625
+ buttonName: string;
626
+ };
627
+ search: {
628
+ tooltip: string;
629
+ placeholder: string;
630
+ };
631
+ filters: {
632
+ defaultName: string;
633
+ saveNewFilterTooltip: string;
634
+ searchPlaceholder: string;
635
+ searchEmptyResult: string;
636
+ saveAsNewFilter: string;
637
+ saveChanges: string;
638
+ saveAsNew: string;
639
+ change: string;
640
+ resetChanges: string;
641
+ remove: string;
642
+ name: string;
643
+ error: string;
644
+ errorHint: string;
645
+ saveButton: string;
646
+ cancelButton: string;
647
+ actionsTooltip: string;
648
+ };
649
+ add: {
650
+ tooltip: string;
651
+ addedAnnouncement: string;
652
+ };
653
+ refresher: {
654
+ refresh: string;
655
+ settings: string;
656
+ };
657
+ pipe: {
658
+ clearButtonTooltip: string;
659
+ removeButtonTooltip: string;
660
+ applyButton: string;
661
+ emptySearchResult: string;
662
+ selectAll: string;
663
+ };
664
+ datePipe: {
665
+ customPeriod: string;
666
+ customPeriodFrom: string;
667
+ customPeriodTo: string;
668
+ customPeriodErrorHint: string;
669
+ backToPeriodSelection: string;
670
+ };
671
+ } | null;
672
+ /** Localized strings and configuration for the filter-bar and its pipes. */
673
+ get configuration(): KbqFilterBarConfiguration;
674
+ set configuration(value: KbqFilterBarConfiguration);
675
+ private readonly _configuration;
676
+ /** @docs-private */
677
+ readonly filters: _angular_core.Signal<KbqFilters | undefined>;
678
+ /** @docs-private */
679
+ readonly filterReset: _angular_core.Signal<KbqFilterReset | undefined>;
292
680
  /**
293
681
  * This is special logic that unselect all items when all selected because "all selected = nothing selected".
294
682
  * Default is true
295
683
  * */
296
- readonly selectedAllEqualsSelectedNothing: i0.InputSignalWithTransform<boolean, unknown>;
297
- /** Filter that is currently selected */
298
- get filter(): KbqFilter | null;
299
- set filter(value: KbqFilter | null);
300
- private _filter;
301
- /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */
302
- get pipeTemplates(): KbqPipeTemplate[];
303
- set pipeTemplates(value: KbqPipeTemplate[]);
304
- private _templates;
684
+ readonly selectedAllEqualsSelectedNothing: _angular_core.InputSignalWithTransform<boolean, unknown>;
305
685
  /**
306
- * Event that emits whenever the raw value of the filter changes. This is here primarily
307
- * to facilitate the two-way binding for the `filter` input.
308
- * @docs-private
686
+ * Filter that is currently selected. A two-way-bindable `model()`: derived state (`isSaved`/`isChanged`/…)
687
+ * is exposed via `computed()` off it and change detection is driven by signal reactivity. `model()`
688
+ * auto-provides the `filterChange` output for `[(filter)]` two-way binding.
309
689
  */
310
- readonly filterChange: i0.OutputEmitterRef<KbqFilter | null>;
690
+ readonly filter: _angular_core.ModelSignal<KbqFilter | null>;
691
+ /** An array of templates that are used when adding a pipe. Also contains lists of options to select (values). */
692
+ readonly pipeTemplates: _angular_core.InputSignal<KbqPipeTemplate[]>;
311
693
  /** Event that emits whenever the value of the pipe changes. */
312
- readonly onChangePipe: EventEmitter<KbqPipe>;
694
+ readonly onChangePipe: _angular_core.OutputEmitterRef<KbqPipe>;
313
695
  /** Event that emits whenever the pipe deleted. */
314
- readonly onRemovePipe: i0.OutputEmitterRef<KbqPipe>;
696
+ readonly onRemovePipe: _angular_core.OutputEmitterRef<KbqPipe>;
315
697
  /** Event that emits whenever the pipe cleared. */
316
- readonly onClearPipe: i0.OutputEmitterRef<KbqPipe>;
698
+ readonly onClearPipe: _angular_core.OutputEmitterRef<KbqPipe>;
317
699
  /** Event that emits whenever the select or multiselect pipe closed. */
318
- readonly onClosePipe: i0.OutputEmitterRef<KbqPipe>;
319
- /** Whether the current filter is saved and changed */
320
- get isSavedAndChanged(): boolean;
700
+ readonly onClosePipe: _angular_core.OutputEmitterRef<KbqPipe>;
321
701
  /** Whether the current filter is saved */
322
- get isSaved(): boolean;
702
+ readonly isSaved: _angular_core.Signal<boolean>;
323
703
  /** Whether the current filter is changed */
324
- get isChanged(): boolean;
704
+ readonly isChanged: _angular_core.Signal<boolean>;
705
+ /** Whether the current filter is saved and changed */
706
+ readonly isSavedAndChanged: _angular_core.Signal<boolean>;
325
707
  /** Whether the current filter is readonly */
326
- get isReadOnly(): boolean;
708
+ readonly isReadOnly: _angular_core.Signal<boolean>;
327
709
  /** Whether the current filter is disabled */
328
- get isDisabled(): boolean;
710
+ readonly isDisabled: _angular_core.Signal<boolean>;
329
711
  private savedFilter;
712
+ /**
713
+ * All changes.
714
+ * @deprecated noop. Reactivity is driven by the `filter` signal now; this never emits and will be
715
+ * removed in the next major.
716
+ */
717
+ readonly changes: BehaviorSubject<void>;
330
718
  /** Event that emits whenever the filter is reset. */
331
719
  readonly onResetFilter: BehaviorSubject<boolean>;
332
- /** all changes */
333
- readonly changes: BehaviorSubject<void>;
334
720
  /** internal filter changes */
335
721
  readonly internalFilterChanges: BehaviorSubject<KbqFilter | null>;
336
722
  /** internal changes in templates */
@@ -341,48 +727,118 @@ declare class KbqFilterBar {
341
727
  constructor();
342
728
  /** Remove pipe from current filter and emit event */
343
729
  removePipe(pipe: KbqPipe): void;
344
- /** Save current state of filter */
730
+ /**
731
+ * Save current state of filter.
732
+ *
733
+ * Deep-clones the filter via `structuredClone`, so any pipe `value` payload handed to save/restore must be
734
+ * structured-cloneable (plain data — no functions, DOM nodes, class instances or `TemplateRef`s), otherwise
735
+ * `structuredClone` throws `DataCloneError`. All built-in pipes produce cloneable values.
736
+ */
345
737
  saveFilterState(filter?: KbqFilter): void;
346
- /** Restore previously saved filter state */
738
+ /**
739
+ * Restore previously saved filter state.
740
+ *
741
+ * @see `saveFilterState` — pipe `value` payloads must be structured-cloneable.
742
+ */
347
743
  restoreFilterState(filter?: KbqFilter): void;
348
744
  /** Set the filter state "changed" to false */
349
745
  resetFilterChangedState(): void;
350
746
  private updateLocaleParams;
351
747
  private initDefaultParams;
352
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBar, never>;
353
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "selectedAllEqualsSelectedNothing": { "alias": "selectedAllEqualsSelectedNothing"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; }; }, { "filterChange": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; "onClearPipe": "onClearPipe"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-search-expandable", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
748
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilterBar, never>;
749
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqFilterBar, "kbq-filter-bar, [kbq-filter-bar]", never, { "selectedAllEqualsSelectedNothing": { "alias": "selectedAllEqualsSelectedNothing"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "pipeTemplates": { "alias": "pipeTemplates"; "required": false; "isSignal": true; }; }, { "filter": "filterChange"; "onChangePipe": "onChangePipe"; "onRemovePipe": "onRemovePipe"; "onClearPipe": "onClearPipe"; "onClosePipe": "onClosePipe"; }, ["filters", "filterReset"], ["kbq-filters", "*", "kbq-pipe-add", "kbq-filter-reset", "kbq-search-expandable", "kbq-filter-refresher, [kbq-filter-refresher]"], true, never>;
354
750
  }
355
751
 
356
752
  declare class KbqFilterBarButton {
357
753
  private readonly button;
358
- /** KbqFilterBar instance */
754
+ /** KbqFilterBar host seam */
359
755
  private readonly filterBar;
360
756
  /** KbqFilters instance */
361
757
  protected readonly filters: KbqFilters;
362
758
  constructor();
363
759
  /** @docs-private */
364
760
  saveFocusedElement(): void;
365
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarButton, never>;
366
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqFilterBarButton, "[kbqFilterBarButton]", never, {}, {}, never, never, true, never>;
761
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilterBarButton, never>;
762
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqFilterBarButton, "[kbqFilterBarButton]", never, {}, {}, never, never, true, never>;
367
763
  }
368
764
 
369
- declare class KbqFilterBarRefresher {
370
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarRefresher, never>;
371
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqFilterBarRefresher, "kbq-filter-refresher, [kbq-filter-refresher]", never, {}, {}, never, never, true, never>;
765
+ declare class KbqFilterRefresher {
766
+ /** KbqFilterBar host seam */
767
+ private readonly filterBar;
768
+ /** localized data
769
+ * @docs-private */
770
+ protected get localeData(): {
771
+ reset: {
772
+ buttonName: string;
773
+ };
774
+ search: {
775
+ tooltip: string;
776
+ placeholder: string;
777
+ };
778
+ filters: {
779
+ defaultName: string;
780
+ saveNewFilterTooltip: string;
781
+ searchPlaceholder: string;
782
+ searchEmptyResult: string;
783
+ saveAsNewFilter: string;
784
+ saveChanges: string;
785
+ saveAsNew: string;
786
+ change: string;
787
+ resetChanges: string;
788
+ remove: string;
789
+ name: string;
790
+ error: string;
791
+ errorHint: string;
792
+ saveButton: string;
793
+ cancelButton: string;
794
+ actionsTooltip: string;
795
+ };
796
+ add: {
797
+ tooltip: string;
798
+ addedAnnouncement: string;
799
+ };
800
+ refresher: {
801
+ refresh: string;
802
+ settings: string;
803
+ };
804
+ pipe: {
805
+ clearButtonTooltip: string;
806
+ removeButtonTooltip: string;
807
+ applyButton: string;
808
+ emptySearchResult: string;
809
+ selectAll: string;
810
+ };
811
+ datePipe: {
812
+ customPeriod: string;
813
+ customPeriodFrom: string;
814
+ customPeriodTo: string;
815
+ customPeriodErrorHint: string;
816
+ backToPeriodSelection: string;
817
+ };
818
+ };
819
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilterRefresher, never>;
820
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqFilterRefresher, "kbq-filter-refresher, [kbq-filter-refresher]", never, {}, {}, never, never, true, never>;
372
821
  }
373
822
 
374
823
  declare class KbqPipeAdd {
375
824
  /** KbqFilterBar instance */
376
- protected readonly filterBar: KbqFilterBar;
825
+ protected readonly filterBar: KbqFilterBarHost;
377
826
  /** @docs-private */
378
- readonly select: i0.Signal<KbqSelect>;
827
+ readonly select: _angular_core.Signal<KbqSelect>;
379
828
  /** Event that is generated after add pipe. */
380
- readonly onAddPipe: i0.OutputEmitterRef<KbqPipeTemplate>;
829
+ readonly onAddPipe: _angular_core.OutputEmitterRef<KbqPipeTemplate>;
381
830
  /** template of filter */
382
- readonly filterTemplate: i0.InputSignal<KbqFilter>;
383
- /** already added pipes. Used to open an already added pipe. */
384
- addedPipes: (string | number)[];
385
- constructor();
831
+ readonly filterTemplate: _angular_core.InputSignal<KbqFilter>;
832
+ /**
833
+ * Ids of the pipes already added to the current filter. Used to open an already-added pipe.
834
+ * Derived from the `filter` signal so it stays in sync without the retired `changes` bus.
835
+ */
836
+ readonly addedPipes: _angular_core.Signal<(string | number | (string & {}))[]>;
837
+ /**
838
+ * Visually-hidden live-region text announcing a newly-added pipe to assistive tech (WCAG 4.1.3).
839
+ * @docs-private
840
+ */
841
+ protected readonly announcement: _angular_core.WritableSignal<string>;
386
842
  addPipeFromTemplate(option: KbqOption): void;
387
843
  /**
388
844
  * Function to compare the option values with the selected values. The first argument
@@ -390,135 +846,45 @@ declare class KbqPipeAdd {
390
846
  * should be returned.
391
847
  */
392
848
  compareWith(o1: KbqPipe, o2: string): boolean;
393
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeAdd, never>;
394
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeAdd, "kbq-pipe-add", never, { "filterTemplate": { "alias": "filterTemplate"; "required": false; "isSignal": true; }; }, { "onAddPipe": "onAddPipe"; }, never, never, true, never>;
849
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeAdd, never>;
850
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeAdd, "kbq-pipe-add", never, { "filterTemplate": { "alias": "filterTemplate"; "required": false; "isSignal": true; }; }, { "onAddPipe": "onAddPipe"; }, never, never, true, never>;
395
851
  }
396
852
 
397
853
  declare class KbqPipeDirective<T extends KbqPipe> implements AfterContentInit {
398
854
  private injector;
399
855
  private pipes;
400
856
  private viewContainerRef;
401
- readonly pipe: i0.InputSignal<T>;
857
+ readonly pipe: _angular_core.InputSignal<T>;
402
858
  ngAfterContentInit(): void;
403
859
  private getInjector;
404
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeDirective<any>, never>;
405
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPipeDirective<any>, "[kbqPipe]", never, { "pipe": { "alias": "kbqPipe"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
406
- }
407
-
408
- /** Injection Token for providing configuration of filter-bar */
409
- declare const KBQ_PIPE_DATA: InjectionToken<unknown>;
410
- /** function to get unique identifier of an element */
411
- declare function getId(item: KbqPipeTemplate): KbqPipeType | string | number;
412
- declare abstract class KbqBasePipe<V> implements AfterViewInit {
413
- /** changes of state */
414
- readonly stateChanges: Subject<void>;
415
- /** pipe data. Provided from subclass */
416
- readonly data: KbqPipeData<V>;
417
- /** KbqFilterBar instance
418
- * @docs-private */
419
- protected readonly filterBar: KbqFilterBar | null;
420
- /** @docs-private */
421
- protected readonly changeDetectorRef: ChangeDetectorRef;
422
- /** @docs-private */
423
- protected readonly destroyRef: DestroyRef;
424
- /** values to select from the pipe template */
425
- protected values: any;
426
- /** TemplateRef for selecting an option */
427
- protected valueTemplate?: TemplateRef<any> | string;
428
- /**
429
- * Whether the current platform is a Mac.
430
- *
431
- * @docs-private
432
- */
433
- isMac: boolean;
434
- /** Data for the pipe.
435
- * @docs-private */
436
- $implicit: unknown;
437
- /** Whether the current pipe is empty. Used for apply style modifier */
438
- get isEmpty(): boolean;
439
- /** Whether the current pipe is removable or cleanable. Used for apply style modifier */
440
- get showRemoveButton(): boolean;
441
- /** localized data
442
- * @docs-private */
443
- get localeData(): any;
444
- constructor();
445
- ngAfterViewInit(): void;
446
- /** templateRef checker utility */
447
- isTemplateRef(value: unknown): boolean;
448
- /** updates values for selection and value template */
449
- updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
450
- /** removes pipe from filter-bar and triggers changes */
451
- onRemove(): void;
452
- /** clears the pipe and triggers changes */
453
- onClear(): void;
454
- /** @docs-private */
455
- abstract open(): void;
456
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqBasePipe<any>, never>;
457
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqBasePipe<any>, never, never, {}, {}, never, never, true, never>;
458
- }
459
- declare class KbqPipeMinWidth {
460
- /** KbqFilterBar instance */
461
- protected readonly filterBar: KbqFilterBar | null;
462
- /** @docs-private */
463
- protected readonly elementRef: ElementRef<HTMLElement>;
464
- /** @docs-private */
465
- protected readonly changeDetectorRef: ChangeDetectorRef;
466
- /** @docs-private */
467
- protected minWidth: string;
468
- /** maximal symbols for apply fit-content to min-width */
469
- maxSymbolsForFitContent: number;
470
- /** current length of text */
471
- get textLength(): number;
472
- constructor();
473
- update: () => void;
474
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeMinWidth, never>;
475
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPipeMinWidth, "[kbqPipeMinWidth]", never, {}, {}, never, never, true, never>;
860
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeDirective<any>, never>;
861
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqPipeDirective<any>, "[kbqPipe]", never, { "pipe": { "alias": "kbqPipe"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
476
862
  }
477
863
 
478
864
  declare class KbqPipeButton {
479
865
  /** KbqPipe instance */
480
866
  protected readonly pipe: KbqBasePipe<any>;
481
867
  /** KbqFilterBar instance */
482
- protected readonly filterBar: KbqFilterBar;
868
+ protected readonly filterBar: KbqFilterBarHost;
483
869
  /** @docs-private */
484
870
  protected readonly changeDetectorRef: ChangeDetectorRef;
485
871
  /** enables/disables read-only state */
486
- readonly readonly: i0.InputSignalWithTransform<boolean, unknown>;
872
+ readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
487
873
  /** localized data
488
874
  * @docs-private */
489
- get localeData(): any;
490
- constructor();
491
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeButton, never>;
492
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeButton, "kbq-pipe-button", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
493
- }
494
-
495
- declare class KbqPipeTitleDirective extends KbqTooltipTrigger implements AfterViewInit, OnDestroy {
496
- private componentInstance;
497
- get isOverflown(): boolean;
498
- readonly viewValue: i0.InputSignal<TemplateRef<any>>;
499
- get parent(): HTMLElement;
500
- get child(): HTMLElement;
501
- readonly resizeStream: Subject<Event>;
502
- private readonly debounceInterval;
503
- private resizeSubscription;
504
- private mutationSubscription;
505
- private focusMonitorSubscription;
506
- private childContainer;
507
- private parentContainer;
875
+ get localeData(): {
876
+ clearButtonTooltip: string;
877
+ removeButtonTooltip: string;
878
+ applyButton: string;
879
+ emptySearchResult: string;
880
+ selectAll: string;
881
+ };
508
882
  constructor();
509
- ngAfterViewInit(): void;
510
- ngOnDestroy(): void;
511
- handleElementEnter(): void;
512
- hideTooltip(): void;
513
- private listenToMutationObserver;
514
- private createMutationObserver;
515
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeTitleDirective, never>;
516
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPipeTitleDirective, "[kbqPipeTitle]", ["kbqPipeTitle"], { "viewValue": { "alias": "kbqPipeTitle"; "required": false; "isSignal": true; }; }, {}, ["parentContainer", "childContainer"], never, true, never>;
883
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeButton, never>;
884
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeButton, "kbq-pipe-button", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
517
885
  }
518
886
 
519
- declare class KbqPipeState<T> implements OnInit {
520
- /** @docs-private */
521
- private readonly destroyRef;
887
+ declare class KbqPipeState<T> {
522
888
  /** @docs-private */
523
889
  private readonly button;
524
890
  /** @docs-private */
@@ -526,25 +892,29 @@ declare class KbqPipeState<T> implements OnInit {
526
892
  /** KbqFilterBar instance
527
893
  * @docs-private */
528
894
  private readonly filterBar;
529
- /** calculates and updates styles of button from pipe state */
530
- get state(): T | null;
531
- set state(pipe: T | null);
532
- private _state;
533
- ngOnInit(): void;
895
+ /** Pipe state used to calculate/update the button style. */
896
+ readonly state: _angular_core.InputSignal<T | null>;
897
+ constructor();
534
898
  private updateState;
535
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeState<any>, never>;
536
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqPipeState<any>, "[kbqPipeState]", never, { "state": { "alias": "kbqPipeState"; "required": false; }; }, {}, never, never, true, never>;
899
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeState<any>, never>;
900
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqPipeState<any>, "[kbqPipeState]", never, { "state": { "alias": "kbqPipeState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
537
901
  }
538
902
 
539
903
  declare class KbqFilterBarModule {
540
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqFilterBarModule, never>;
541
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqFilterBarModule, never, [typeof KbqFilterBar, typeof KbqFilters, typeof KbqFilterBarRefresher, typeof KbqFilterBarButton, typeof KbqFilterReset, typeof KbqPipeAdd, typeof KbqPipeDirective, typeof KbqPipeButton, typeof KbqPipeTitleDirective, typeof KbqPipeState], [typeof KbqFilterBar, typeof KbqFilters, typeof KbqFilterBarRefresher, typeof KbqFilterBarButton, typeof KbqFilterReset, typeof KbqPipeAdd, typeof KbqPipeDirective, typeof KbqPipeButton, typeof KbqPipeTitleDirective, typeof KbqPipeState]>;
542
- static ɵinj: i0.ɵɵInjectorDeclaration<KbqFilterBarModule>;
904
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFilterBarModule, never>;
905
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<KbqFilterBarModule, never, [typeof KbqFilterBar, typeof KbqFilters, typeof KbqFilterRefresher, typeof KbqFilterBarButton, typeof KbqFilterReset, typeof KbqPipeAdd, typeof KbqPipeDirective, typeof KbqPipeButton, typeof KbqPipeState], [typeof KbqFilterBar, typeof KbqFilters, typeof KbqFilterRefresher, typeof KbqFilterBarButton, typeof KbqFilterReset, typeof KbqPipeAdd, typeof KbqPipeDirective, typeof KbqPipeButton, typeof KbqPipeState]>;
906
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<KbqFilterBarModule>;
543
907
  }
544
908
 
545
- declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {
546
- private readonly adapter;
547
- private readonly formatter;
909
+ /**
910
+ * Shared implementation for the `date` and `datetime` pipes. The two pipes differ only in how a range
911
+ * is formatted and in their default start/end values, exposed here as the {@link formatRange},
912
+ * {@link getDefaultStart} and {@link getDefaultEnd} hooks. Everything else — the period list / custom
913
+ * period flow, calendar handling and form group — is common.
914
+ */
915
+ declare abstract class KbqPipeDateBaseComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {
916
+ protected readonly adapter: DateAdapter<any>;
917
+ protected readonly formatter: DateFormatter<any>;
548
918
  /** @docs-private */
549
919
  protected readonly placements: typeof PopUpPlacements;
550
920
  /** @docs-private */
@@ -559,6 +929,12 @@ declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> impl
559
929
  protected showStartCalendar: boolean;
560
930
  /** @docs-private */
561
931
  protected showEndCalendar: boolean;
932
+ /** @docs-private */
933
+ readonly popover: _angular_core.Signal<KbqPopoverTrigger>;
934
+ /** @docs-private */
935
+ readonly listSelection: _angular_core.Signal<KbqListSelection | undefined>;
936
+ /** @docs-private */
937
+ readonly returnButton: _angular_core.Signal<KbqButton>;
562
938
  /** formatted value for period */
563
939
  get formattedValue(): string;
564
940
  /** Whether the current pipe is disabled. */
@@ -573,12 +949,6 @@ declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> impl
573
949
  get defaultEnd(): D;
574
950
  /** Whether the current pipe is empty. */
575
951
  get isEmpty(): boolean;
576
- /** @docs-private */
577
- readonly popover: i0.Signal<KbqPopoverTrigger>;
578
- /** @docs-private */
579
- listSelection: i0.Signal<KbqListSelection>;
580
- /** @docs-private */
581
- returnButton: i0.Signal<KbqButton>;
582
952
  ngAfterViewInit(): void;
583
953
  /** keydown handler
584
954
  * @docs-private */
@@ -594,78 +964,80 @@ declare class KbqPipeDateComponent<D> extends KbqBasePipe<KbqDateTimeValue> impl
594
964
  onFocusStartInput(): void;
595
965
  onFocusEndInput(): void;
596
966
  hideCalendars(): void;
967
+ /** Formats the selected range for display. */
968
+ protected abstract formatRange(start: D, end: D): string;
969
+ /** Default start value used when the pipe has no stored `start`. */
970
+ protected abstract getDefaultStart(): D;
971
+ /** Default end value used when the pipe has no stored `start`. */
972
+ protected abstract getDefaultEnd(): D;
597
973
  private initFormGroup;
598
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeDateComponent<any>, never>;
599
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeDateComponent<any>, "kbq-pipe-date", never, {}, {}, never, never, true, never>;
974
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeDateBaseComponent<any>, never>;
975
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqPipeDateBaseComponent<any>, never, never, {}, {}, never, never, true, never>;
600
976
  }
601
977
 
602
- declare class KbqPipeDatetimeComponent<D> extends KbqBasePipe<KbqDateTimeValue> implements AfterViewInit {
603
- private readonly adapter;
604
- private readonly formatter;
605
- /** @docs-private */
606
- protected readonly placements: typeof PopUpPlacements;
607
- /** @docs-private */
608
- protected readonly styles: typeof KbqButtonStyles;
609
- /** @docs-private */
610
- protected readonly colors: typeof KbqComponentColors;
611
- /** Whether the current state is list of periods. When false will displayed control for set custom period */
612
- protected isListMode: boolean;
613
- /** @docs-private */
614
- protected formGroup: FormGroup;
615
- /** @docs-private */
616
- protected showStartCalendar: boolean;
978
+ declare class KbqPipeDateComponent<D> extends KbqPipeDateBaseComponent<D> {
979
+ protected formatRange(start: D, end: D): string;
980
+ protected getDefaultStart(): D;
981
+ protected getDefaultEnd(): D;
982
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeDateComponent<any>, never>;
983
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeDateComponent<any>, "kbq-pipe-date", never, {}, {}, never, never, true, never>;
984
+ }
985
+
986
+ declare class KbqPipeDatetimeComponent<D> extends KbqPipeDateBaseComponent<D> {
987
+ protected formatRange(start: D, end: D): string;
988
+ protected getDefaultStart(): D;
989
+ protected getDefaultEnd(): D;
990
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeDatetimeComponent<any>, never>;
991
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeDatetimeComponent<any>, "kbq-pipe-datetime", never, {}, {}, never, never, true, never>;
992
+ }
993
+
994
+ declare class KbqPipeInputComponent extends KbqBasePipe<string | null> implements OnInit {
617
995
  /** @docs-private */
618
- protected showEndCalendar: boolean;
619
- /** formatted value for period */
620
- get formattedValue(): string;
621
- /** Whether the current pipe is disabled. */
622
- get disabled(): boolean;
623
- /** parsed start */
624
- get start(): D;
625
- /** default object for start */
626
- get defaultStart(): D;
627
- /** parsed end */
628
- get end(): D;
629
- /** default object for end */
630
- get defaultEnd(): D;
631
- /** Whether the current pipe is empty. */
996
+ protected readonly input: _angular_core.Signal<KbqInput>;
997
+ /**
998
+ * Input control.
999
+ *
1000
+ * Must stay nullable: `reset()` — all `KbqFormField.clearValue()` and its Escape handler ever call —
1001
+ * resolves to `defaultValue`, which is `null` only while `nonNullable` is unset. `{ nonNullable: true }`
1002
+ * would make `reset()` yield `''` and silently break the cleaner bridge below.
1003
+ */
1004
+ readonly control: FormControl<string | null>;
1005
+ /**
1006
+ * Debounce in milliseconds between the last keystroke and the typed value being applied to the filter.
1007
+ * Matches `defaultEmitValueTimeout` of `kbq-search-expandable`, so both search fields of a bar feel the
1008
+ * same. `Enter` and blur apply immediately and cancel a pending apply.
1009
+ */
1010
+ debounceTime: number;
1011
+ /**
1012
+ * Minimum number of characters before typing applies the value to the filter. Anything shorter —
1013
+ * including an emptied field — is applied as `null`, so the filter never keeps text the user has
1014
+ * already erased. `Enter` and blur ignore the threshold. Set to `0` to apply every keystroke.
1015
+ */
1016
+ minLength: number;
1017
+ /** Cancels a pending debounced apply once the value has been applied (or cleared) through another path. */
1018
+ private readonly cancelPendingApply;
1019
+ /** Whether the current pipe is empty. Used for apply style modifier */
632
1020
  get isEmpty(): boolean;
633
- /** @docs-private */
634
- readonly popover: i0.Signal<KbqPopoverTrigger>;
635
- /** @docs-private */
636
- listSelection: i0.Signal<KbqListSelection>;
637
- /** @docs-private */
638
- returnButton: i0.Signal<KbqButton>;
639
- ngAfterViewInit(): void;
640
- /** keydown handler
641
- * @docs-private */
642
- onKeydown($event: KeyboardEvent): void;
643
- /** @docs-private */
644
- onApplyPeriod(): void;
645
- onSelect(item: KbqDateTimeValue): void;
646
- showPeriod(): void;
647
- showList(): void;
648
- /** opens popover */
1021
+ ngOnInit(): void;
1022
+ /** clears the pipe and triggers changes */
1023
+ onClear(): void;
1024
+ /** focuses the input */
649
1025
  open(): void;
650
- onSelectStartDate(value: D): void;
651
- onSelectEndDate(value: D): void;
652
- onFocusStartInput(): void;
653
- onFocusEndInput(): void;
654
- hideCalendars(): void;
655
- private initFormGroup;
656
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeDatetimeComponent<any>, never>;
657
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeDatetimeComponent<any>, "kbq-pipe-datetime", never, {}, {}, never, never, true, never>;
1026
+ /** Commits a value to `data` and notifies the filter-bar. */
1027
+ private commit;
1028
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeInputComponent, never>;
1029
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeInputComponent, "kbq-pipe-input", never, {}, {}, never, never, true, never>;
658
1030
  }
659
1031
 
660
1032
  declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements AfterViewInit, OnInit {
661
1033
  /** control for search options */
662
- searchControl: UntypedFormControl;
1034
+ readonly searchControl: FormControl<string | null>;
663
1035
  /** filtered by search options */
664
- filteredOptions: Observable<any[]>;
1036
+ filteredOptions: Observable<KbqSelectValue[]>;
665
1037
  /** @docs-private */
666
- readonly select: i0.Signal<KbqSelect>;
1038
+ readonly select: _angular_core.Signal<KbqSelect>;
667
1039
  /** @docs-private */
668
- readonly options: i0.Signal<readonly KbqOption[]>;
1040
+ readonly options: _angular_core.Signal<readonly KbqOption[]>;
669
1041
  /** selected value */
670
1042
  get selected(): KbqSelectValue[] | null;
671
1043
  /** Whether the current pipe is empty. */
@@ -679,7 +1051,7 @@ declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]>
679
1051
  get selectedAllEqualsSelectedNothing(): boolean;
680
1052
  private get visibleOptions();
681
1053
  private selectionAllInProgress;
682
- private internalSelected;
1054
+ private readonly multiSelect;
683
1055
  /** @docs-private */
684
1056
  ngOnInit(): void;
685
1057
  ngAfterViewInit(): void;
@@ -691,34 +1063,108 @@ declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]>
691
1063
  toggleSelectionAllByEnterKey(): void;
692
1064
  /** @docs-private */
693
1065
  toggleSelectionAll(emitEvent?: boolean): void;
694
- /** Comparator of selected options */
695
- compareByValue: (o1: any, o2: any) => boolean;
1066
+ /** Comparator of selected options. Two null/absent values never match (aligned with the select pipe). */
1067
+ compareByValue: (o1: Pick<KbqSelectValue, "id"> | null, o2: Pick<KbqSelectValue, "id"> | null) => boolean;
696
1068
  /** handler for select all options in select */
697
1069
  selectAllHandler: (event: KeyboardEvent) => void;
698
1070
  /** @docs-private */
699
1071
  onClose(): void;
700
1072
  /** opens select */
701
1073
  open(): void;
702
- private updateInternalSelected;
703
- private emitChangePipeEvent;
704
1074
  private getFilteredOptions;
705
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeMultiSelectComponent, never>;
706
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeMultiSelectComponent, "kbq-pipe-multi-select", never, {}, {}, never, never, true, never>;
1075
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeMultiSelectComponent, never>;
1076
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeMultiSelectComponent, "kbq-pipe-multi-select", never, {}, {}, never, never, true, never>;
1077
+ }
1078
+
1079
+ /**
1080
+ * Shared scaffolding for the tree-based select pipes (`kbq-pipe-tree-select`,
1081
+ * `kbq-pipe-multi-tree-select`): the flat-tree control / flattener / data source, the node accessors,
1082
+ * search-driven filtering and open handling. Subclasses provide the value-specific pieces (`selected`,
1083
+ * `isEmpty`, `onSelect`, `updateTemplates`).
1084
+ *
1085
+ * The `internalTemplatesChanges` subscription is intentionally left in each subclass constructor: it must
1086
+ * be set up after the subclass's `updateTemplates` field initializer runs, so the initial `BehaviorSubject`
1087
+ * replay dispatches to the subclass override (which writes `dataSource.data`) rather than the base one.
1088
+ */
1089
+ declare abstract class KbqTreeSelectPipeBase<V> extends KbqBasePipe<V> implements OnInit, AfterViewInit {
1090
+ /** control for search options */
1091
+ readonly searchControl: FormControl<string | null>;
1092
+ treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;
1093
+ treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;
1094
+ dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;
1095
+ /** @docs-private */
1096
+ readonly select: _angular_core.Signal<KbqTreeSelect>;
1097
+ constructor();
1098
+ ngOnInit(): void;
1099
+ ngAfterViewInit(): void;
1100
+ /** tree-node predicate: whether the node has children */
1101
+ hasChild(_: number, nodeData: KbqTreeSelectFlatNode): boolean;
1102
+ /** opens the tree-select panel */
1103
+ open(): void;
1104
+ /** @docs-private */
1105
+ onOpen(): void;
1106
+ protected transformer: (node: KbqTreeSelectNode, level: number, parent: KbqTreeSelectFlatNode | null) => KbqTreeSelectFlatNode;
1107
+ protected getLevel: (node: KbqTreeSelectFlatNode) => number;
1108
+ protected isExpandable: (node: KbqTreeSelectFlatNode) => boolean;
1109
+ protected getChildren: (node: KbqTreeSelectNode) => KbqTreeSelectNode[] | null;
1110
+ protected getValue: (node: KbqTreeSelectFlatNode) => unknown;
1111
+ protected getViewValue: (node: KbqTreeSelectFlatNode) => string;
1112
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTreeSelectPipeBase<any>, never>;
1113
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqTreeSelectPipeBase<any>, never, never, {}, {}, never, never, true, never>;
1114
+ }
1115
+
1116
+ declare class KbqPipeMultiTreeSelectComponent extends KbqTreeSelectPipeBase<KbqSelectValue[]> implements OnInit {
1117
+ /** @docs-private */
1118
+ readonly tree: _angular_core.Signal<KbqTreeSelection>;
1119
+ /** selected value */
1120
+ get selected(): KbqSelectValue[] | null;
1121
+ /** Whether the current pipe is empty. */
1122
+ get isEmpty(): boolean;
1123
+ get selectAllCheckboxState(): KbqPseudoCheckboxState;
1124
+ get numberOfSelectedLeaves(): number;
1125
+ /** true if all options selected */
1126
+ get allOptionsSelected(): boolean;
1127
+ get selectedAllEqualsSelectedNothing(): boolean;
1128
+ /** true if all visible options selected */
1129
+ get allVisibleOptionsSelected(): boolean;
1130
+ private readonly multiSelect;
1131
+ constructor();
1132
+ ngOnInit(): void;
1133
+ isNodeSelectAll(_: number, nodeData: KbqTreeSelectFlatNode): boolean;
1134
+ onSelect({ value: option }: {
1135
+ value: any;
1136
+ }): void;
1137
+ searchKeydownHandler(): void;
1138
+ toggleSelectAllNode(emitEvent?: boolean): void;
1139
+ /**
1140
+ * Populates the tree data source from the pipe template. The shared `values`/`valueTemplate`
1141
+ * assignment is already performed by the base subscription, so this override only does the
1142
+ * tree-specific work and avoids a redundant double assignment.
1143
+ */
1144
+ updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
1145
+ onClear(): void;
1146
+ /** @docs-private */
1147
+ onClose(): void;
1148
+ /** handler for select all options in select */
1149
+ selectAllHandler: (event: KeyboardEvent) => void;
1150
+ private toggleParents;
1151
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeMultiTreeSelectComponent, never>;
1152
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeMultiTreeSelectComponent, "kbq-pipe-multi-tree-select", never, {}, {}, never, never, true, never>;
707
1153
  }
708
1154
 
709
1155
  declare class KbqPipeReadonlyComponent extends KbqBasePipe<string | null> {
710
1156
  open(): void;
711
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeReadonlyComponent, never>;
712
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeReadonlyComponent, "kbq-pipe-readonly", never, {}, {}, never, never, true, never>;
1157
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeReadonlyComponent, never>;
1158
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeReadonlyComponent, "kbq-pipe-readonly", never, {}, {}, never, never, true, never>;
713
1159
  }
714
1160
 
715
1161
  declare class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements AfterViewInit, OnInit {
716
1162
  /** control for search options */
717
- searchControl: UntypedFormControl;
1163
+ readonly searchControl: FormControl<string | null>;
718
1164
  /** filtered by search options */
719
- filteredOptions: Observable<any[]>;
1165
+ filteredOptions: Observable<KbqSelectValue[]>;
720
1166
  /** @docs-private */
721
- readonly select: i0.Signal<KbqSelect>;
1167
+ readonly select: _angular_core.Signal<KbqSelect>;
722
1168
  /** selected value */
723
1169
  get selected(): KbqSelectValue | null;
724
1170
  /** Whether the current pipe is empty. */
@@ -728,18 +1174,18 @@ declare class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> impleme
728
1174
  ngAfterViewInit(): void;
729
1175
  onSelect(item: KbqSelectValue): void;
730
1176
  /** Comparator of selected options */
731
- compareByValue: (o1: any, o2: any) => boolean;
1177
+ compareByValue: (o1: Pick<KbqSelectValue, "id"> | null, o2: Pick<KbqSelectValue, "id"> | null) => boolean;
732
1178
  /** opens select */
733
1179
  open(): void;
734
1180
  private getFilteredOptions;
735
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeSelectComponent, never>;
736
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeSelectComponent, "kbq-pipe-select", never, {}, {}, never, never, true, never>;
1181
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeSelectComponent, never>;
1182
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeSelectComponent, "kbq-pipe-select", never, {}, {}, never, never, true, never>;
737
1183
  }
738
1184
 
739
1185
  declare class KbqPipeTextComponent extends KbqBasePipe<string | null> implements AfterViewInit, OnInit {
740
1186
  readonly placements: typeof PopUpPlacements;
741
1187
  /** @docs-private */
742
- readonly popover: i0.Signal<KbqPopoverTrigger>;
1188
+ readonly popover: _angular_core.Signal<KbqPopoverTrigger>;
743
1189
  /** Whether the current pipe is disabled. */
744
1190
  get disabled(): boolean;
745
1191
  /** textarea control */
@@ -753,44 +1199,26 @@ declare class KbqPipeTextComponent extends KbqBasePipe<string | null> implements
753
1199
  onClear(): void;
754
1200
  /** opens popover */
755
1201
  open(): void;
756
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeTextComponent, never>;
757
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeTextComponent, "kbq-pipe-text", never, {}, {}, never, never, true, never>;
1202
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeTextComponent, never>;
1203
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeTextComponent, "kbq-pipe-text", never, {}, {}, never, never, true, never>;
758
1204
  }
759
1205
 
760
- declare class KbqPipeTreeSelectComponent extends KbqBasePipe<KbqSelectValue> implements OnInit, AfterViewInit {
761
- /** control for search options */
762
- searchControl: UntypedFormControl;
763
- /** filtered by search options */
764
- filteredOptions: Observable<any[]>;
765
- treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;
766
- treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;
767
- dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;
768
- template: any;
769
- /** @docs-private */
770
- readonly select: i0.Signal<KbqTreeSelect>;
1206
+ declare class KbqPipeTreeSelectComponent extends KbqTreeSelectPipeBase<KbqSelectValue> {
771
1207
  /** selected value */
772
1208
  get selected(): KbqSelectValue | null;
773
1209
  /** Whether the current pipe is empty. */
774
1210
  get isEmpty(): boolean;
775
1211
  constructor();
776
- ngOnInit(): void;
777
- ngAfterViewInit(): void;
778
- hasChild(_: number, nodeData: any): any;
779
1212
  onSelect(item: KbqTreeOption): void;
780
- /** updates values for selection and value template */
1213
+ /**
1214
+ * Populates the tree data source from the pipe template. The shared `values`/`valueTemplate`
1215
+ * assignment is already performed by the base subscription, so this override only does the
1216
+ * tree-specific work and avoids a redundant double assignment.
1217
+ */
781
1218
  updateTemplates: (templates: KbqPipeTemplate[] | null) => void;
782
- /** opens select */
783
- open(): void;
784
- onOpen(): void;
785
- private transformer;
786
- private getLevel;
787
- private isExpandable;
788
- private getChildren;
789
- private getValue;
790
- private getViewValue;
791
- static ɵfac: i0.ɵɵFactoryDeclaration<KbqPipeTreeSelectComponent, never>;
792
- static ɵcmp: i0.ɵɵComponentDeclaration<KbqPipeTreeSelectComponent, "kbq-pipe-tree-select", never, {}, {}, never, never, true, never>;
1219
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqPipeTreeSelectComponent, never>;
1220
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqPipeTreeSelectComponent, "kbq-pipe-tree-select", never, {}, {}, never, never, true, never>;
793
1221
  }
794
1222
 
795
- export { KBQ_FILTER_BAR_CONFIGURATION, KBQ_FILTER_BAR_DEFAULT_CONFIGURATION, KBQ_FILTER_BAR_PIPES, KBQ_PIPE_DATA, KbqBasePipe, KbqFilterBar, KbqFilterBarButton, KbqFilterBarModule, KbqFilterBarRefresher, KbqFilterReset, KbqFilters, KbqPipeAdd, KbqPipeButton, KbqPipeDateComponent, KbqPipeDatetimeComponent, KbqPipeDirective, KbqPipeMinWidth, KbqPipeMultiSelectComponent, KbqPipeReadonlyComponent, KbqPipeSelectComponent, KbqPipeState, KbqPipeTextComponent, KbqPipeTitleDirective, KbqPipeTreeSelectComponent, KbqPipeTypes, KbqSaveFilterStatuses, KbqTreeSelectFlatNode, defaultFilterBarPipes, getId, kbqBuildTree, kbqFilterBarPipesProvider };
796
- export type { KbqDateTimeValue, KbqFilter, KbqPipe, KbqPipeData, KbqPipeTemplate, KbqPipeType, KbqSaveFilterError, KbqSaveFilterEvent, KbqSelectValue, KbqTreeSelectNode };
1223
+ 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 };
1224
+ export type { KbqDateTimeValue, KbqFilter, KbqFilterBarConfiguration, KbqFilterBarHost, KbqPipe, KbqPipeData, KbqPipeTemplate, KbqPipeType, KbqSaveFilterError, KbqSaveFilterEvent, KbqSelectValue, KbqTreeSelectNode };