@acorex/components 22.1.0-next.3 → 22.1.0-next.31

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 (53) hide show
  1. package/fesm2022/acorex-components-alert.mjs +2 -2
  2. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  3. package/fesm2022/acorex-components-combo-box.mjs +229 -25
  4. package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
  5. package/fesm2022/{acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs → acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs} +6 -19
  6. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-DnSW908R.mjs.map +1 -0
  7. package/fesm2022/acorex-components-conversation.mjs +7568 -9585
  8. package/fesm2022/acorex-components-conversation.mjs.map +1 -1
  9. package/fesm2022/acorex-components-data-table.mjs +57 -23
  10. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  11. package/fesm2022/acorex-components-decorators.mjs +2 -2
  12. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  13. package/fesm2022/acorex-components-dropdown.mjs +2 -2
  14. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  15. package/fesm2022/acorex-components-fab.mjs +5 -5
  16. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  17. package/fesm2022/acorex-components-form.mjs +21 -5
  18. package/fesm2022/acorex-components-form.mjs.map +1 -1
  19. package/fesm2022/acorex-components-label.mjs +2 -2
  20. package/fesm2022/acorex-components-label.mjs.map +1 -1
  21. package/fesm2022/acorex-components-loading-dialog.mjs +59 -42
  22. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  23. package/fesm2022/acorex-components-lookup.mjs +1191 -171
  24. package/fesm2022/acorex-components-lookup.mjs.map +1 -1
  25. package/fesm2022/acorex-components-menu.mjs +11 -5
  26. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  27. package/fesm2022/acorex-components-notification.mjs +6 -6
  28. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  29. package/fesm2022/acorex-components-popover.mjs +22 -0
  30. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  31. package/fesm2022/acorex-components-select-box.mjs +38 -11
  32. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  33. package/fesm2022/acorex-components-tabs.mjs +2 -2
  34. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  35. package/fesm2022/acorex-components-tag-box.mjs +2 -2
  36. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  37. package/fesm2022/acorex-components-tree-view.mjs +40 -3
  38. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  39. package/lookup/README.md +19 -8
  40. package/package.json +4 -7
  41. package/types/acorex-components-combo-box.d.ts +46 -9
  42. package/types/acorex-components-conversation.d.ts +663 -1293
  43. package/types/acorex-components-data-table.d.ts +12 -2
  44. package/types/acorex-components-loading-dialog.d.ts +12 -4
  45. package/types/acorex-components-lookup.d.ts +258 -64
  46. package/types/acorex-components-popover.d.ts +6 -0
  47. package/types/acorex-components-select-box.d.ts +11 -0
  48. package/types/acorex-components-tree-view.d.ts +9 -1
  49. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-BuNEjswI.mjs.map +0 -1
  50. package/fesm2022/acorex-components-selection-list-2.mjs +0 -168
  51. package/fesm2022/acorex-components-selection-list-2.mjs.map +0 -1
  52. package/selection-list-2/README.md +0 -3
  53. package/types/acorex-components-selection-list-2.d.ts +0 -52
@@ -1,8 +1,9 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, ElementRef } from '@angular/core';
3
- import { AXEvent, AXDataSource, AXListDataSource, AXHtmlEvent, NXComponent, AXStyleLookType, AXValueChangedEvent, AXFocusEvent, AXItemClickEvent, AXItemSelectedEvent } from '@acorex/cdk/common';
3
+ import { AXEvent, AXDataSource, AXListDataSource, AXHtmlEvent, NXValueComponent, AXStyleLookType, AXValueChangedEvent, AXFocusEvent, AXItemClickEvent, AXItemSelectedEvent } from '@acorex/cdk/common';
4
4
  import { AXPopoverComponent } from '@acorex/components/popover';
5
- import { AXTreeViewNode, AXTreeViewDataSource, AXTreeViewSelectionBehavior, AXTreeViewItemTemplateContext, AXTreeViewSelectionChangeEvent } from '@acorex/components/tree-view';
5
+ import { AXSearchBoxComponent } from '@acorex/components/search-box';
6
+ import { AXTreeViewDataSource, AXTreeViewItemTemplateContext, AXTreeViewSelectionChangeEvent, AXTreeViewSelectionBehavior, AXTreeViewNode } from '@acorex/components/tree-view';
6
7
  import { FormValueControl } from '@angular/forms/signals';
7
8
  import { AXListNavigationDirective, AXListNavigationItemDirective } from '@acorex/cdk/list-navigation';
8
9
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
@@ -16,19 +17,25 @@ import { AXDataTableComponent, AXDataTableRowClick } from '@acorex/components/da
16
17
  * - `drop-down-tree` — a tree-like structure for single item selection.
17
18
  * - `multi-select-tree` — a tree-like structure for multiple item selection.
18
19
  * - `multi-column` — a table-structured list for single selection.
20
+ * - `multi-column-tree` — a multi-column table with a drop-down tree inside it (expandable rows).
19
21
  */
20
- type AXLookupMode = 'drop-down-list' | 'multi-select' | 'drop-down-tree' | 'multi-select-tree' | 'multi-column';
22
+ type AXLookupMode = 'drop-down-list' | 'multi-select' | 'drop-down-tree' | 'multi-select-tree' | 'multi-column' | 'multi-column-tree';
21
23
  /**
22
- * A column definition for the `multi-column` lookup mode (rendered via `ax-data-table`).
24
+ * A column definition for the `multi-column` and `multi-column-tree` lookup modes
25
+ * (rendered via `ax-data-table`).
23
26
  *
24
27
  * - `field` — the item property rendered in this column (`ax-text-column` `dataField`).
25
28
  * - `title` — the header text of the column (`ax-text-column` `caption`).
26
29
  * - `width` — optional column width (`120px`, `20%`, or `auto`). Defaults to `auto`.
30
+ * - `expandHandler` — when `true`, this column shows the tree expand/collapse control
31
+ * (`multi-column-tree` only). If omitted, the column matching `textField` (or the first
32
+ * column) is used.
27
33
  */
28
34
  interface AXLookupColumn {
29
35
  field: string;
30
36
  title: string;
31
37
  width?: string;
38
+ expandHandler?: boolean;
32
39
  }
33
40
  /**
34
41
  * A lookup item. Items are plain records; the lookup reads them through
@@ -50,6 +57,66 @@ interface AXLookupSelectionChangedEvent extends AXEvent {
50
57
  value: unknown | unknown[] | null;
51
58
  }
52
59
 
60
+ /**
61
+ * Internal mini component for the `drop-down-tree` lookup mode:
62
+ * a predefined list rendered in a tree-like structure for single item selection.
63
+ *
64
+ * @category Components
65
+ */
66
+ declare class AXLookupDropDownTreeComponent {
67
+ /**
68
+ * The tree datasource: an array of nodes or a lazy children callback.
69
+ */
70
+ dataSource: _angular_core.InputSignal<AXTreeViewDataSource>;
71
+ /**
72
+ * The node property used as the selection value (tree `idField`).
73
+ */
74
+ valueField: _angular_core.InputSignal<string>;
75
+ /**
76
+ * The node property used as the display text (tree `titleField`).
77
+ */
78
+ textField: _angular_core.InputSignal<string>;
79
+ /**
80
+ * The node property marking a node as disabled.
81
+ */
82
+ disabledField: _angular_core.InputSignal<string>;
83
+ /**
84
+ * Currently selected values (at most one for single selection).
85
+ */
86
+ selectedValues: _angular_core.InputSignal<unknown[]>;
87
+ /**
88
+ * Custom template rendered for each tree node.
89
+ */
90
+ nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
91
+ /**
92
+ * Custom template rendered when the filtered tree has no nodes.
93
+ */
94
+ emptyTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
95
+ /**
96
+ * When `true`, visible tree nodes use alternating background colors.
97
+ */
98
+ alternate: _angular_core.InputSignal<boolean>;
99
+ /**
100
+ * Unique id that changes on every search apply so a new tree instance is created.
101
+ */
102
+ filterKey: _angular_core.InputSignal<string>;
103
+ /**
104
+ * Emitted when the user selects a node.
105
+ */
106
+ itemClick: _angular_core.OutputEmitterRef<AXLookupItemClickEvent>;
107
+ protected selectedIds: _angular_core.Signal<string[]>;
108
+ protected isEmpty: _angular_core.Signal<boolean>;
109
+ protected treeInstances: _angular_core.Signal<{
110
+ id: string;
111
+ source: AXTreeViewDataSource;
112
+ }[]>;
113
+ /** Whether the filtered tree currently has no nodes. */
114
+ hasNoMatches(): boolean;
115
+ protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent): void;
116
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupDropDownTreeComponent, never>;
117
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupDropDownTreeComponent, "ax-lookup-drop-down-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; "filterKey": { "alias": "filterKey"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
118
+ }
119
+
53
120
  /**
54
121
  * Shared `AXDataSource` + CDK virtual scroll plumbing for the list-based lookup views
55
122
  * (`ax-lookup-drop-down-list`, `ax-lookup-multi-select`).
@@ -86,6 +153,7 @@ declare abstract class AXLookupListViewBase {
86
153
  maxVisibleItems: _angular_core.InputSignal<number>;
87
154
  /**
88
155
  * Custom template rendered for each item. Context: `$implicit` is the item.
156
+ * Default option chrome is not applied on top of the template.
89
157
  */
90
158
  itemTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
91
159
  /**
@@ -114,6 +182,10 @@ declare abstract class AXLookupListViewBase {
114
182
  protected totalCount: _angular_core.WritableSignal<number>;
115
183
  protected isLoading: _angular_core.WritableSignal<boolean>;
116
184
  protected isEmpty: _angular_core.Signal<boolean>;
185
+ /** Whether the filtered datasource currently has no items. */
186
+ hasNoMatches(): boolean;
187
+ /** Number of items in the current filtered result set. */
188
+ matchCount(): number;
117
189
  /** Viewport height so the popup grows with the items up to `maxVisibleItems`. */
118
190
  protected viewportHeight: _angular_core.Signal<number>;
119
191
  protected viewportRef: _angular_core.Signal<CdkVirtualScrollViewport>;
@@ -127,6 +199,11 @@ declare abstract class AXLookupListViewBase {
127
199
  protected isSelected(item: AXLookupItem): boolean;
128
200
  protected isDisabled(item: AXLookupItem): boolean;
129
201
  protected handleItemClick(item: AXLookupItem | null | undefined): void;
202
+ /**
203
+ * Commit on mousedown (not click) so a searchable trigger blur cannot destroy the
204
+ * list before the pick is applied.
205
+ */
206
+ protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined): void;
130
207
  protected handleItemKeypress(e: AXHtmlEvent<KeyboardEvent>, item: AXLookupItem | null | undefined): void;
131
208
  protected handleListKeypress(e: AXHtmlEvent<KeyboardEvent>): void;
132
209
  protected activateNavItem(nav: AXListNavigationDirective, item: AXListNavigationItemDirective): void;
@@ -177,25 +254,48 @@ declare class AXLookupMultiSelectTreeComponent {
177
254
  * Custom template rendered for each tree node.
178
255
  */
179
256
  nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
257
+ /**
258
+ * Custom template rendered when the filtered tree has no nodes.
259
+ */
260
+ emptyTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
261
+ /**
262
+ * When `true`, visible tree nodes use alternating background colors.
263
+ */
264
+ alternate: _angular_core.InputSignal<boolean>;
265
+ /**
266
+ * Unique id that changes on every search apply so a new tree instance is created.
267
+ */
268
+ filterKey: _angular_core.InputSignal<string>;
180
269
  /**
181
270
  * Emitted when the user changes the tree selection.
182
271
  */
183
272
  selectionChange: _angular_core.OutputEmitterRef<AXLookupTreeSelectionEvent>;
184
273
  protected selectedIds: _angular_core.Signal<string[]>;
274
+ protected isEmpty: _angular_core.Signal<boolean>;
275
+ protected treeInstances: _angular_core.Signal<{
276
+ id: string;
277
+ source: AXTreeViewDataSource;
278
+ }[]>;
279
+ /** Whether the filtered tree currently has no nodes. */
280
+ hasNoMatches(): boolean;
185
281
  protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent): void;
186
282
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupMultiSelectTreeComponent, never>;
187
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupMultiSelectTreeComponent, "ax-lookup-multi-select-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
283
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupMultiSelectTreeComponent, "ax-lookup-multi-select-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; "filterKey": { "alias": "filterKey"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
188
284
  }
189
285
 
190
286
  /**
191
- * An advanced drop-down (lookup) editor with five modes, `AXDataSource` support, and virtual scrolling.
287
+ * An advanced drop-down (lookup) editor with six modes, `AXDataSource` support, and virtual scrolling.
192
288
  *
193
289
  * Modes (each rendered by its own internal mini component):
194
290
  * - `drop-down-list` — a predefined list of options for picking single values.
195
291
  * - `multi-select` — a predefined list of options for multiple item selection (chips in the trigger).
196
- * - `drop-down-tree` — a predefined list rendered in a tree-like structure for single item selection.
197
- * - `multi-select-tree` a tree-like structure for multiple item selection.
198
- * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type.
292
+ * - `drop-down-tree` — a tree-like structure for single item selection; when searchable, the trigger
293
+ * input filters nested nodes as you type (on small screens the search field is inside the actionsheet).
294
+ * - `multi-select-tree` — a tree-like structure for multiple item selection; searchable the same way.
295
+ * - `multi-column` — an `ax-data-table` grid; when searchable, the trigger input filters as you type
296
+ * (on small screens the search field is inside the actionsheet).
297
+ * - `multi-column-tree` — a multi-column `ax-data-table` with a drop-down tree inside it
298
+ * (expandable hierarchical rows). Uses `treeDataSource` + `columns`, or a hierarchical `dataSource`.
199
299
  *
200
300
  * With `adaptivityEnabled` (default `true`), the list opens as a bottom actionsheet on small
201
301
  * screens instead of an anchored dropdown — the same alternate presentation as `ax-select-box`.
@@ -205,19 +305,24 @@ declare class AXLookupMultiSelectTreeComponent {
205
305
  *
206
306
  * @category Components
207
307
  */
208
- declare class AXLookupComponent extends NXComponent implements FormValueControl<unknown | unknown[] | null> {
308
+ declare class AXLookupComponent extends NXValueComponent implements FormValueControl<unknown | unknown[] | null> {
209
309
  #private;
310
+ /**
311
+ * The name of the form field, used by validation rules and `ax-form.validate(names)`.
312
+ */
313
+ name: _angular_core.InputSignal<string>;
210
314
  /**
211
315
  * The lookup rendering mode. Selects which mini component renders in the popup.
212
316
  */
213
317
  mode: _angular_core.InputSignal<AXLookupMode>;
214
318
  /**
215
- * The items source for list-based modes (`drop-down-list`, `multi-select`, `multi-column`).
319
+ * The items source for list-based modes (`drop-down-list`, `multi-select`, `multi-column`)
320
+ * and for `multi-column-tree` when `treeDataSource` is not set.
216
321
  * Accepts an `AXDataSource` (remote paging, `byKey`, server-side filter) or a plain array.
217
322
  */
218
323
  dataSource: _angular_core.InputSignal<AXLookupItem[] | AXDataSource<AXLookupItem>>;
219
324
  /**
220
- * The nodes source for tree modes (`drop-down-tree`, `multi-select-tree`):
325
+ * The nodes source for tree modes (`drop-down-tree`, `multi-select-tree`, `multi-column-tree`):
221
326
  * an array of nodes or a lazy children callback.
222
327
  */
223
328
  treeDataSource: _angular_core.InputSignal<AXTreeViewDataSource>;
@@ -235,18 +340,32 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
235
340
  */
236
341
  disabledField: _angular_core.InputSignal<string>;
237
342
  /**
238
- * Column definitions for the `multi-column` mode (rendered as `ax-text-column` in `ax-data-table`).
343
+ * Column definitions for the `multi-column` and `multi-column-tree` modes
344
+ * (rendered as `ax-text-column` in `ax-data-table`).
239
345
  */
240
346
  columns: _angular_core.InputSignal<AXLookupColumn[]>;
347
+ /**
348
+ * Field used by `multi-column-tree` to fetch children when a row is expanded
349
+ * (`AXDataSource` filter). Defaults to `parentId`. Nested `children` arrays are also supported.
350
+ */
351
+ treeParentField: _angular_core.InputSignal<string>;
352
+ /**
353
+ * Field used by `multi-column-tree` to decide whether a row shows an expand control.
354
+ * Defaults to `hasChild`. Nodes with `children` / `childrenCount` are mapped automatically
355
+ * when using `treeDataSource`.
356
+ */
357
+ hasChildrenField: _angular_core.InputSignal<string>;
241
358
  /**
242
359
  * Whether the trigger accepts typing and filters the datasource (`true`),
243
360
  * or is select-only with no writable input (`false`).
244
- * Applies to `drop-down-list`, `multi-select`, and `multi-column`. Tree modes ignore this.
361
+ * Applies to all modes, including `drop-down-tree` and `multi-select-tree`.
362
+ * On small screens with `adaptivityEnabled`, search is typed in the actionsheet instead of the trigger.
245
363
  */
246
364
  searchable: _angular_core.InputSignal<boolean>;
247
365
  /**
248
366
  * When `true` (default), the popup list uses the alternate actionsheet presentation on small
249
- * screens (`SM`). When `false`, the list always opens as an anchored dropdown.
367
+ * screens (`SM`). Searchable list modes then show a search field inside the sheet. When `false`,
368
+ * the list always opens as an anchored dropdown.
250
369
  */
251
370
  adaptivityEnabled: _angular_core.InputSignal<boolean>;
252
371
  /**
@@ -255,12 +374,13 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
255
374
  caption: _angular_core.InputSignal<string>;
256
375
  /**
257
376
  * When `true`, list rows use alternating background colors for easier scanning
258
- * (`drop-down-list`, `multi-select`, and `multi-column` modes).
377
+ * (all lookup modes, including drop-down-tree and multi-select-tree).
259
378
  */
260
379
  alternate: _angular_core.InputSignal<boolean>;
261
380
  /**
262
381
  * Placeholder for the trigger search input when items are already selected
263
- * (mainly useful in `multi-select`). Falls back to `placeholder` when the selection is empty.
382
+ * (mainly useful in `multi-select` / `multi-select-tree`), and for the in-sheet search field on small screens.
383
+ * Falls back to `placeholder` when the selection is empty on desktop.
264
384
  */
265
385
  searchPlaceholder: _angular_core.InputSignal<string>;
266
386
  /**
@@ -293,6 +413,8 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
293
413
  treeSelectionBehavior: _angular_core.InputSignal<AXTreeViewSelectionBehavior>;
294
414
  /**
295
415
  * Custom template rendered for each item/node. Context: `$implicit` is the item.
416
+ * Default option chrome (padding, typography, check icon) is not applied; only the
417
+ * template's styles are used. Selection and hover backgrounds remain on the row.
296
418
  */
297
419
  itemTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
298
420
  /**
@@ -359,10 +481,19 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
359
481
  protected isMultiple: _angular_core.Signal<boolean>;
360
482
  /** Whether the current mode renders a tree. */
361
483
  protected isTreeMode: _angular_core.Signal<boolean>;
362
- /** Whether the trigger input is writable and filters as you type. */
484
+ /** Whether the current mode can filter as you type (list, table, or tree). */
485
+ protected isListSearchMode: _angular_core.Signal<boolean>;
486
+ /** Whether the trigger input is writable and filters as you type (desktop only). */
363
487
  protected isEditableTrigger: _angular_core.Signal<boolean>;
488
+ /** Whether search is typed in the actionsheet instead of the trigger. */
489
+ protected isSheetSearchEnabled: _angular_core.Signal<boolean>;
490
+ /** Query typed in the actionsheet search field (independent of the trigger display text). */
491
+ protected sheetSearchText: _angular_core.WritableSignal<string>;
492
+ /** Increments on every tree filter apply so the tree view remounts with a new instance. */
493
+ protected treeFilterKey: _angular_core.Signal<string>;
364
494
  /** The datasource for list-based modes; plain arrays are converted. */
365
495
  protected resolvedDataSource: _angular_core.Signal<AXDataSource<AXLookupItem>>;
496
+ protected resolvedTreeDataSource: _angular_core.Signal<AXTreeViewDataSource>;
366
497
  /** The current selection normalized to an array. */
367
498
  protected selectedValues: _angular_core.Signal<unknown[]>;
368
499
  /** The resolved selected items (via cache, datasource `find`/`byKey`, or tree node lookup). */
@@ -380,9 +511,16 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
380
511
  * the selected display text (same pattern as combo-box).
381
512
  */
382
513
  protected showSelectedTemplate: _angular_core.Signal<boolean>;
514
+ /** Placeholder for the editable trigger search input. */
515
+ protected triggerSearchPlaceholder: _angular_core.Signal<string>;
383
516
  protected popoverRef: _angular_core.Signal<AXPopoverComponent>;
517
+ protected originRef: _angular_core.Signal<ElementRef<HTMLElement>>;
518
+ protected popupRef: _angular_core.Signal<ElementRef<HTMLElement>>;
384
519
  protected triggerSearchInput: _angular_core.Signal<ElementRef<HTMLInputElement>>;
385
520
  protected listView: _angular_core.Signal<AXLookupListViewBase>;
521
+ protected dropDownTreeView: _angular_core.Signal<AXLookupDropDownTreeComponent>;
522
+ protected multiSelectTreeView: _angular_core.Signal<AXLookupMultiSelectTreeComponent>;
523
+ protected sheetSearchRef: _angular_core.Signal<AXSearchBoxComponent>;
386
524
  constructor();
387
525
  /** Returns the display text of an item using the `textField` mapping. */
388
526
  protected getItemText(item: AXLookupItem): string;
@@ -400,10 +538,12 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
400
538
  * Handles keyboard interaction on the trigger input.
401
539
  */
402
540
  protected onTriggerKeydown(e: KeyboardEvent): void;
541
+ /** Filters the datasource from the actionsheet search field and handles Enter with no matches. */
542
+ protected onSheetSearchKeydown(e: AXHtmlEvent<KeyboardEvent>): void;
403
543
  /** Blocks typing when the trigger is not editable (keeps Tab / keyboard open working). */
404
544
  protected onBeforeInput(event: Event): void;
405
545
  /**
406
- * Returns focus to the trigger input when list navigation requests it.
546
+ * Returns focus to the search field when list navigation requests it.
407
547
  */
408
548
  protected onListNavigateOut(_reason: 'up' | 'typeahead'): void;
409
549
  protected focusListFirst(): void;
@@ -428,10 +568,10 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
428
568
  * Handles typing in the editable trigger input.
429
569
  */
430
570
  protected onTriggerSearchInput(text: string): void;
431
- /** Placeholder for the editable trigger search input. */
432
- protected triggerSearchPlaceholder: _angular_core.Signal<string>;
571
+ /** Filters the datasource from the actionsheet search field (reads the input so delayed ngModel cannot block typing). */
572
+ protected onSheetSearchInput(): void;
433
573
  /**
434
- * Commits a single pick (drop-down-list, drop-down-tree, multi-column) and closes the popup.
574
+ * Commits a single pick (drop-down-list, drop-down-tree, multi-column, multi-column-tree) and closes the popup.
435
575
  */
436
576
  protected handleSinglePick(e: AXLookupItemClickEvent): void;
437
577
  /**
@@ -466,7 +606,7 @@ declare class AXLookupComponent extends NXComponent implements FormValueControl<
466
606
  */
467
607
  reset(isUserInteraction?: boolean): void;
468
608
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupComponent, never>;
469
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupComponent, "ax-lookup", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; "treeDataSource": { "alias": "treeDataSource"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "adaptivityEnabled": { "alias": "adaptivityEnabled"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; "isSignal": true; }; "treeSelectionBehavior": { "alias": "treeSelectionBehavior"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "selectedTemplate": { "alias": "selectedTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "loadingTemplate": { "alias": "loadingTemplate"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueItems": { "alias": "valueItems"; "required": false; "isSignal": true; }; }, { "look": "lookChange"; "value": "valueChange"; "onValueChanged": "onValueChanged"; "onSelectionChanged": "onSelectionChanged"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onItemClick": "onItemClick"; "onItemSelected": "onItemSelected"; "onOpened": "onOpened"; "onClosed": "onClosed"; }, never, ["ax-prefix", "ax-clear-button", "ax-suffix", "ax-header", "ax-footer"], true, never>;
609
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupComponent, "ax-lookup", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; "treeDataSource": { "alias": "treeDataSource"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "treeParentField": { "alias": "treeParentField"; "required": false; "isSignal": true; }; "hasChildrenField": { "alias": "hasChildrenField"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "adaptivityEnabled": { "alias": "adaptivityEnabled"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; "isSignal": true; }; "treeSelectionBehavior": { "alias": "treeSelectionBehavior"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "selectedTemplate": { "alias": "selectedTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "loadingTemplate": { "alias": "loadingTemplate"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueItems": { "alias": "valueItems"; "required": false; "isSignal": true; }; }, { "look": "lookChange"; "value": "valueChange"; "onValueChanged": "onValueChanged"; "onSelectionChanged": "onSelectionChanged"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onItemClick": "onItemClick"; "onItemSelected": "onItemSelected"; "onOpened": "onOpened"; "onClosed": "onClosed"; }, never, ["ax-prefix", "ax-clear-button", "ax-suffix", "ax-header", "ax-footer", "ax-validation-rule"], true, never>;
470
610
  }
471
611
 
472
612
  /**
@@ -492,72 +632,134 @@ declare class AXLookupMultiSelectComponent extends AXLookupListViewBase {
492
632
  }
493
633
 
494
634
  /**
495
- * Internal mini component for the `drop-down-tree` lookup mode:
496
- * a predefined list rendered in a tree-like structure for single item selection.
635
+ * Internal mini component for the `multi-column` lookup mode:
636
+ * renders selectable rows in an `ax-data-table` grid and loads further
637
+ * pages as the user scrolls (no pager UI).
497
638
  *
498
639
  * @category Components
499
640
  */
500
- declare class AXLookupDropDownTreeComponent {
641
+ declare class AXLookupMultiColumnComponent {
642
+ #private;
501
643
  /**
502
- * The tree datasource: an array of nodes or a lazy children callback.
644
+ * The datasource providing the grid rows (paged, remote-capable).
645
+ * Pages are fetched on demand as the user scrolls the table body.
503
646
  */
504
- dataSource: _angular_core.InputSignal<AXTreeViewDataSource>;
647
+ dataSource: _angular_core.InputSignal<AXDataSource<AXLookupItem>>;
505
648
  /**
506
- * The node property used as the selection value (tree `idField`).
649
+ * The item property used as the selection value.
507
650
  */
508
651
  valueField: _angular_core.InputSignal<string>;
509
652
  /**
510
- * The node property used as the display text (tree `titleField`).
653
+ * The item property used as the display text.
511
654
  */
512
655
  textField: _angular_core.InputSignal<string>;
513
656
  /**
514
- * The node property marking a node as disabled.
657
+ * The item property marking an item as disabled.
515
658
  */
516
659
  disabledField: _angular_core.InputSignal<string>;
517
660
  /**
518
- * Currently selected values (at most one for single selection).
661
+ * Currently selected values (always an array, even for single selection).
519
662
  */
520
663
  selectedValues: _angular_core.InputSignal<unknown[]>;
521
664
  /**
522
- * Custom template rendered for each tree node.
665
+ * The fixed row height in pixels passed to the data table.
523
666
  */
524
- nodeTemplate: _angular_core.InputSignal<TemplateRef<AXTreeViewItemTemplateContext>>;
667
+ itemHeight: _angular_core.InputSignal<number>;
525
668
  /**
526
- * Emitted when the user selects a node.
669
+ * The maximum number of body rows visible before the table scrolls.
670
+ */
671
+ maxVisibleItems: _angular_core.InputSignal<number>;
672
+ /**
673
+ * Column definitions rendered as `ax-text-column` instances.
674
+ */
675
+ columns: _angular_core.InputSignal<AXLookupColumn[]>;
676
+ /**
677
+ * Optional custom row content. Context: `$implicit` is the row item.
678
+ * When set, replaces the default multi-column cell layout.
679
+ */
680
+ itemTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
681
+ /**
682
+ * Custom template rendered when the datasource has no items.
683
+ */
684
+ emptyTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
685
+ /**
686
+ * Custom template rendered while the table is loading.
687
+ */
688
+ loadingTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
689
+ /**
690
+ * When `true`, table rows use alternating background colors for easier scanning.
691
+ */
692
+ alternate: _angular_core.InputSignal<boolean>;
693
+ /**
694
+ * Emitted when the user picks a row.
527
695
  */
528
696
  itemClick: _angular_core.OutputEmitterRef<AXLookupItemClickEvent>;
529
- protected selectedIds: _angular_core.Signal<string[]>;
530
- protected handleSelectionChange(e: AXTreeViewSelectionChangeEvent): void;
531
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupDropDownTreeComponent, never>;
532
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupDropDownTreeComponent, "ax-lookup-drop-down-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "nodeTemplate": { "alias": "nodeTemplate"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
697
+ protected tableRef: _angular_core.Signal<AXDataTableComponent>;
698
+ /**
699
+ * Local table source: one page of whatever has been scrolled in so far.
700
+ * Kept as a stable instance so the table host is not recreated on each page load.
701
+ * `pageSize` grows with `#loadedItems` — never seed with a huge empty array (data-table
702
+ * initializes `displayedRows` as `new Array(pageSize)`, which caused NG0955-level jank).
703
+ */
704
+ protected readonly tableDataSource: AXDataSource<AXLookupItem>;
705
+ /**
706
+ * Header (~40px) + body rows. Grows with results up to `maxVisibleItems`,
707
+ * then the table body scrolls for the rest.
708
+ */
709
+ protected tableHeight: _angular_core.Signal<number>;
710
+ protected loadingConfig: _angular_core.Signal<{
711
+ enabled: boolean;
712
+ animation: boolean;
713
+ loadingTemplate: TemplateRef<unknown>;
714
+ }>;
715
+ constructor();
716
+ /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */
717
+ protected trackColumnKey(index: number, column: AXLookupColumn): string;
718
+ protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto';
719
+ protected resolveRowCssClass: (row: unknown) => string;
720
+ protected handleRowClick(event: AXDataTableRowClick): void;
721
+ protected handleItemClick(item: AXLookupItem | null | undefined): void;
722
+ protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined): void;
723
+ protected isSelected(item: AXLookupItem): boolean;
724
+ protected isDisabled(item: AXLookupItem): boolean;
725
+ private getValue;
726
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupMultiColumnComponent, never>;
727
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupMultiColumnComponent, "ax-lookup-multi-column", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "loadingTemplate": { "alias": "loadingTemplate"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
533
728
  }
534
729
 
535
730
  /**
536
- * Internal mini component for the `multi-column` lookup mode:
537
- * renders selectable rows in an `ax-data-table` grid and loads further
538
- * pages as the user scrolls (no pager UI).
731
+ * Internal mini component for the `multi-column-tree` lookup mode:
732
+ * a multi-column `ax-data-table` with a drop-down tree inside it.
733
+ * Rows expand/collapse via the data-table hierarchy (`parentField` / nested `children`).
539
734
  *
540
735
  * @category Components
541
736
  */
542
- declare class AXLookupMultiColumnComponent {
543
- #private;
737
+ declare class AXLookupMultiColumnTreeComponent {
544
738
  /**
545
- * The datasource providing the grid rows (paged, remote-capable).
546
- * Pages are fetched on demand as the user scrolls the table body.
739
+ * The datasource providing hierarchical rows (roots on load, children via `parentField`).
547
740
  */
548
741
  dataSource: _angular_core.InputSignal<AXDataSource<AXLookupItem>>;
549
742
  /**
550
- * The item property used as the selection value.
743
+ * The item property used as the selection value (also the data-table row key).
551
744
  */
552
745
  valueField: _angular_core.InputSignal<string>;
553
746
  /**
554
- * The item property used as the display text.
747
+ * The item property used as the display text. The matching column shows the expand control
748
+ * unless another column sets `expandHandler`.
555
749
  */
556
750
  textField: _angular_core.InputSignal<string>;
557
751
  /**
558
752
  * The item property marking an item as disabled.
559
753
  */
560
754
  disabledField: _angular_core.InputSignal<string>;
755
+ /**
756
+ * Field used by the data table to fetch children (`AXDataSource` filter on expand).
757
+ */
758
+ parentField: _angular_core.InputSignal<string>;
759
+ /**
760
+ * Field used by the data table to decide whether a row can expand.
761
+ */
762
+ hasChildrenField: _angular_core.InputSignal<string>;
561
763
  /**
562
764
  * Currently selected values (always an array, even for single selection).
563
765
  */
@@ -592,20 +794,11 @@ declare class AXLookupMultiColumnComponent {
592
794
  */
593
795
  alternate: _angular_core.InputSignal<boolean>;
594
796
  /**
595
- * Emitted when the user picks a row.
797
+ * Emitted when the user picks a row (not when expanding/collapsing).
596
798
  */
597
799
  itemClick: _angular_core.OutputEmitterRef<AXLookupItemClickEvent>;
598
- protected tableRef: _angular_core.Signal<AXDataTableComponent>;
599
- /**
600
- * Local table source: one page of whatever has been scrolled in so far.
601
- * Kept as a stable instance so the table host is not recreated on each page load.
602
- * `pageSize` grows with `#loadedItems` — never seed with a huge empty array (data-table
603
- * initializes `displayedRows` as `new Array(pageSize)`, which caused NG0955-level jank).
604
- */
605
- protected readonly tableDataSource: AXDataSource<AXLookupItem>;
606
800
  /**
607
- * Header (~40px) + body rows. Grows with results up to `maxVisibleItems`,
608
- * then the table body scrolls for the rest.
801
+ * Header (~40px) + up to `maxVisibleItems` body rows. Expanded children scroll inside.
609
802
  */
610
803
  protected tableHeight: _angular_core.Signal<number>;
611
804
  protected loadingConfig: _angular_core.Signal<{
@@ -613,25 +806,26 @@ declare class AXLookupMultiColumnComponent {
613
806
  animation: boolean;
614
807
  loadingTemplate: TemplateRef<unknown>;
615
808
  }>;
616
- constructor();
617
809
  /** Stable unique key for `@for` — avoids NG0955 when `field` is missing or duplicated. */
618
810
  protected trackColumnKey(index: number, column: AXLookupColumn): string;
619
811
  protected resolveColumnWidth(column: AXLookupColumn): string | number | 'auto';
812
+ protected isExpandColumn(index: number, column: AXLookupColumn): boolean;
620
813
  protected resolveRowCssClass: (row: unknown) => string;
621
814
  protected handleRowClick(event: AXDataTableRowClick): void;
622
815
  protected handleItemClick(item: AXLookupItem | null | undefined): void;
816
+ protected handleItemMouseDown(event: Event, item: AXLookupItem | null | undefined): void;
623
817
  protected isSelected(item: AXLookupItem): boolean;
624
818
  protected isDisabled(item: AXLookupItem): boolean;
625
819
  private getValue;
626
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupMultiColumnComponent, never>;
627
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupMultiColumnComponent, "ax-lookup-multi-column", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "loadingTemplate": { "alias": "loadingTemplate"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
820
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupMultiColumnTreeComponent, never>;
821
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupMultiColumnTreeComponent, "ax-lookup-multi-column-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "disabledField": { "alias": "disabledField"; "required": false; "isSignal": true; }; "parentField": { "alias": "parentField"; "required": false; "isSignal": true; }; "hasChildrenField": { "alias": "hasChildrenField"; "required": false; "isSignal": true; }; "selectedValues": { "alias": "selectedValues"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; "isSignal": true; }; "loadingTemplate": { "alias": "loadingTemplate"; "required": false; "isSignal": true; }; "alternate": { "alias": "alternate"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
628
822
  }
629
823
 
630
824
  declare class AXLookupModule {
631
825
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupModule, never>;
632
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXLookupModule, never, [typeof AXLookupComponent, typeof AXLookupDropDownListComponent, typeof AXLookupMultiSelectComponent, typeof AXLookupDropDownTreeComponent, typeof AXLookupMultiSelectTreeComponent, typeof AXLookupMultiColumnComponent], [typeof AXLookupComponent, typeof AXLookupDropDownListComponent, typeof AXLookupMultiSelectComponent, typeof AXLookupDropDownTreeComponent, typeof AXLookupMultiSelectTreeComponent, typeof AXLookupMultiColumnComponent]>;
826
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXLookupModule, never, [typeof AXLookupComponent, typeof AXLookupDropDownListComponent, typeof AXLookupMultiSelectComponent, typeof AXLookupDropDownTreeComponent, typeof AXLookupMultiSelectTreeComponent, typeof AXLookupMultiColumnComponent, typeof AXLookupMultiColumnTreeComponent], [typeof AXLookupComponent, typeof AXLookupDropDownListComponent, typeof AXLookupMultiSelectComponent, typeof AXLookupDropDownTreeComponent, typeof AXLookupMultiSelectTreeComponent, typeof AXLookupMultiColumnComponent, typeof AXLookupMultiColumnTreeComponent]>;
633
827
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXLookupModule>;
634
828
  }
635
829
 
636
- export { AXLookupComponent, AXLookupDropDownListComponent, AXLookupDropDownTreeComponent, AXLookupModule, AXLookupMultiColumnComponent, AXLookupMultiSelectComponent, AXLookupMultiSelectTreeComponent };
830
+ export { AXLookupComponent, AXLookupDropDownListComponent, AXLookupDropDownTreeComponent, AXLookupModule, AXLookupMultiColumnComponent, AXLookupMultiColumnTreeComponent, AXLookupMultiSelectComponent, AXLookupMultiSelectTreeComponent };
637
831
  export type { AXLookupColumn, AXLookupItem, AXLookupItemClickEvent, AXLookupMode, AXLookupSelectionChangedEvent, AXLookupTreeSelectionEvent };
@@ -186,6 +186,12 @@ declare class AXPopoverComponent extends MXBaseComponent implements OnDestroy {
186
186
  private setupScrollListener;
187
187
  /** @ignore */
188
188
  private removeScrollListener;
189
+ /**
190
+ * True when scroll is a side-effect of focusing an editable control inside the overlay
191
+ * (soft keyboard / visual viewport adjustment), mainly on iOS Safari.
192
+ * @ignore
193
+ */
194
+ private isKeyboardInducedScroll;
189
195
  /**
190
196
  * Checks whether the given element lives inside a child overlay
191
197
  * (an overlay stacked on top of this popover, e.g. a selectbox dropdown).
@@ -58,6 +58,13 @@ declare class AXSelectBoxComponent extends AXSelectBoxComponent_base implements
58
58
  protected _dropdownWidth: _angular_core.WritableSignal<string>;
59
59
  /** @ignore */
60
60
  protected _dropdownHeight: _angular_core.WritableSignal<string>;
61
+ /**
62
+ * Pixel height for the popover list and CDK viewport. Uses the sized height
63
+ * when known, otherwise the standard `maxVisibleItems × itemHeight` viewport.
64
+ * Always a pixel value so virtual scroll has a definite size on first open.
65
+ * @ignore
66
+ */
67
+ protected _panelMinHeight: _angular_core.Signal<string>;
61
68
  /** @ignore */
62
69
  protected _listDataSource: AXDataSource<any>;
63
70
  /** @ignore */
@@ -161,6 +168,10 @@ declare class AXSelectBoxComponent extends AXSelectBoxComponent_base implements
161
168
  /** @ignore */
162
169
  protected _handleItemSelected(e: AXItemSelectedEvent): void;
163
170
  private resetSearchAfterSelection;
171
+ private _getListItemPx;
172
+ private _getMaxVisibleItems;
173
+ /** Standard popover list height: `maxVisibleItems` rows (default 5). */
174
+ private _getStandardListHeightPx;
164
175
  /** @ignore */
165
176
  private setDropdownSize;
166
177
  /**