@acorex/components 22.3.15 → 22.3.17

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.
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@acorex/components",
3
- "version": "22.3.15",
3
+ "version": "22.3.17",
4
4
  "peerDependencies": {
5
- "@acorex/core": "22.3.15",
6
- "@acorex/cdk": "22.3.15",
5
+ "@acorex/core": "22.3.17",
6
+ "@acorex/cdk": "22.3.17",
7
7
  "@angular/aria": ">=22.1.0",
8
8
  "polytype": ">=0.17.0",
9
9
  "hammerjs": ">=2.0.8",
@@ -198,6 +198,10 @@ declare class AXCalendarRangeComponent extends AXCalendarRangeComponent_base imp
198
198
  * @ignore
199
199
  */
200
200
  protected handleNextClick(): void;
201
+ /**
202
+ * @ignore
203
+ */
204
+ private _navRangeByArrowButton;
201
205
  /**
202
206
  * @ignore
203
207
  */
@@ -410,6 +414,12 @@ declare class AXCalendarComponent extends AXCalendarComponent_base {
410
414
  * @ignore
411
415
  */
412
416
  protected _handleNextClick(): void;
417
+ /**
418
+ * Maps prev/next arrow clicks to calendar navigation (RTL inverts arrow semantics).
419
+ *
420
+ * @ignore
421
+ */
422
+ private _navByArrowButton;
413
423
  /**
414
424
  * @ignore
415
425
  */
@@ -68,6 +68,10 @@ declare abstract class AXDataPagerChild extends MXInteractiveComponent {
68
68
  * @ignore
69
69
  */
70
70
  ngAfterViewInit(): Promise<void>;
71
+ /**
72
+ * @ignore
73
+ */
74
+ protected isRtl(): boolean;
71
75
  /**
72
76
  * @ignore
73
77
  */
@@ -131,6 +135,8 @@ declare class AXDataPagerInputSelectorComponent extends AXDataPagerChild {
131
135
  * @category Components
132
136
  */
133
137
  declare class AXDataPagerNextButtonsComponent extends AXDataPagerChild {
138
+ protected disabledNextSingle: boolean;
139
+ protected disabledLastDouble: boolean;
134
140
  /**
135
141
  * @ignore
136
142
  */
@@ -165,6 +171,22 @@ declare class AXDataPagerNumericSelectorComponent extends AXDataPagerChild {
165
171
  * @ignore
166
172
  */
167
173
  protected applyParent(): Promise<void>;
174
+ /**
175
+ * @ignore
176
+ */
177
+ protected _isLeadingDoubleDisabled(): boolean;
178
+ /**
179
+ * @ignore
180
+ */
181
+ protected _isTrailingDoubleDisabled(): boolean;
182
+ /**
183
+ * @ignore
184
+ */
185
+ protected _onLeadingDoubleClick(): void;
186
+ /**
187
+ * @ignore
188
+ */
189
+ protected _onTrailingDoubleClick(): void;
168
190
  /**
169
191
  * @ignore
170
192
  */
@@ -219,6 +241,8 @@ declare class AXDataPagerPageSizesComponent extends AXDataPagerChild {
219
241
  * @category Components
220
242
  */
221
243
  declare class AXDataPagerPrevButtonsComponent extends AXDataPagerChild {
244
+ protected disabledFirstDouble: boolean;
245
+ protected disabledPrevSingle: boolean;
222
246
  /**
223
247
  * @ignore
224
248
  */
@@ -51,6 +51,10 @@ declare abstract class AXDataTableColumnComponent {
51
51
  abstract get loadingEnabled(): boolean;
52
52
  abstract get name(): string;
53
53
  get cssClass(): string | undefined;
54
+ /** Minimum width (px) applied when auto-fitting or resizing this column. */
55
+ get minAutoWidth(): number;
56
+ /** Extra space (px) added to the measured content width when auto-fitting. */
57
+ get autoFitPadding(): number;
54
58
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableColumnComponent, never>;
55
59
  static ɵdir: i0.ɵɵDirectiveDeclaration<AXDataTableColumnComponent, never, never, { "caption": { "alias": "caption"; "required": false; }; "width": { "alias": "width"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "allowSorting": { "alias": "allowSorting"; "required": false; }; "allowResizing": { "alias": "allowResizing"; "required": false; }; "hasTitle": { "alias": "hasTitle"; "required": false; }; "sortIndex": { "alias": "sortIndex"; "required": false; }; "sortOrder": { "alias": "sortOrder"; "required": false; }; }, {}, ["childColumns"], never, true, never>;
56
60
  }
@@ -531,6 +535,8 @@ declare class AXRowDropdownCommandColumnComponent extends AXBaseRowCommandColumn
531
535
  * Returns the name identifier for the column component.
532
536
  */
533
537
  get name(): string;
538
+ get autoFitPadding(): number;
539
+ get minAutoWidth(): number;
534
540
  /**
535
541
  * @ignore
536
542
  */
@@ -733,6 +739,8 @@ declare class AXRowIndexColumnComponent extends AXDataTableColumnComponent imple
733
739
  * Gets the CSS class applied to the component.
734
740
  */
735
741
  get cssClass(): string | undefined;
742
+ get autoFitPadding(): number;
743
+ get minAutoWidth(): number;
736
744
  static ɵfac: i0.ɵɵFactoryDeclaration<AXRowIndexColumnComponent, never>;
737
745
  static ɵcmp: i0.ɵɵComponentDeclaration<AXRowIndexColumnComponent, "ax-index-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "footerTemplate": { "alias": "footerTemplate"; "required": false; }; "padZero": { "alias": "padZero"; "required": false; }; }, {}, never, ["*"], true, never>;
738
746
  }
@@ -840,6 +848,8 @@ declare class AXRowSelectColumnComponent extends AXDataTableColumnComponent {
840
848
  * Gets the CSS class applied to the component.
841
849
  */
842
850
  get cssClass(): string | undefined;
851
+ get autoFitPadding(): number;
852
+ get minAutoWidth(): number;
843
853
  static ɵfac: i0.ɵɵFactoryDeclaration<AXRowSelectColumnComponent, never>;
844
854
  static ɵcmp: i0.ɵɵComponentDeclaration<AXRowSelectColumnComponent, "ax-select-column", never, { "width": { "alias": "width"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "advanceSelect": { "alias": "advanceSelect"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
845
855
  }
@@ -1224,6 +1234,16 @@ declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, Af
1224
1234
  * Tree expand columns must keep `width: auto` so nested indent can use leftover table space.
1225
1235
  */
1226
1236
  private isTreeFillColumn;
1237
+ /**
1238
+ * Tree fill columns must never keep a pixel width from auto-fit; they absorb remaining table width.
1239
+ *
1240
+ * @ignore
1241
+ */
1242
+ private enforceTreeFillColumnWidths;
1243
+ /**
1244
+ * @ignore
1245
+ */
1246
+ protected resolveColumnWidth(column: AXDataTableColumnComponent): string | number | 'auto';
1227
1247
  /**
1228
1248
  * Returns the display text for a cell. Used for the cell tooltip when the column has `hasTitle`.
1229
1249
  */
@@ -42,6 +42,17 @@ interface AXLookupColumn {
42
42
  * `valueField` / `textField` / `disabledField` mappings.
43
43
  */
44
44
  type AXLookupItem = Record<string, unknown>;
45
+ /**
46
+ * Multi-select bound value when the user selects all items (optionally with exclusions).
47
+ * Used with `multi-select` and `multi-select-tree` via `[(value)]` / `[(ngModel)]`.
48
+ */
49
+ interface AXLookupSelectAllValue {
50
+ selectAll: true;
51
+ /** Value keys (`valueField`) that are not selected while `selectAll` is true. */
52
+ excluded?: unknown[];
53
+ }
54
+ /** Bound value in multi-select lookup modes. */
55
+ type AXLookupMultiValue = unknown[] | AXLookupSelectAllValue | null;
45
56
  /**
46
57
  * Internal event emitted by the mini view components when the user picks or toggles an item.
47
58
  */
@@ -54,7 +65,7 @@ interface AXLookupItemClickEvent {
54
65
  */
55
66
  interface AXLookupSelectionChangedEvent<TItem = any> extends AXEvent {
56
67
  items: TItem[];
57
- value: unknown | unknown[] | null;
68
+ value: unknown | unknown[] | AXLookupSelectAllValue | null;
58
69
  }
59
70
 
60
71
  /**
@@ -83,6 +94,14 @@ declare abstract class AXLookupListViewBase {
83
94
  * Currently selected values (always an array, even for single selection).
84
95
  */
85
96
  selectedValues: _angular_core.InputSignal<unknown[]>;
97
+ /**
98
+ * When `true`, every non-disabled row is selected except keys listed in `excludedValues`.
99
+ */
100
+ selectAllActive: _angular_core.InputSignal<boolean>;
101
+ /**
102
+ * Value keys excluded from selection while `selectAllActive` is true.
103
+ */
104
+ excludedValues: _angular_core.InputSignal<unknown[]>;
86
105
  /**
87
106
  * The fixed row height in pixels used by the virtual scroll viewport.
88
107
  */
@@ -154,7 +173,7 @@ declare abstract class AXLookupListViewBase {
154
173
  protected activateNavItem(nav: AXListNavigationDirective, item: AXListNavigationItemDirective): void;
155
174
  protected trackByIndex: (index: number) => number;
156
175
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupListViewBase, never>;
157
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXLookupListViewBase, never, 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; }; "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; }; "highlightText": { "alias": "highlightText"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "navigateOut": "navigateOut"; }, never, never, true, never>;
176
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXLookupListViewBase, never, 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; }; "selectAllActive": { "alias": "selectAllActive"; "required": false; "isSignal": true; }; "excludedValues": { "alias": "excludedValues"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "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; }; "highlightText": { "alias": "highlightText"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "navigateOut": "navigateOut"; }, never, never, true, never>;
158
177
  }
159
178
 
160
179
  /**
@@ -266,7 +285,7 @@ declare class AXLookupMultiSelectTreeComponent {
266
285
  *
267
286
  * @category Components
268
287
  */
269
- declare class AXLookupComponent<T = AXLookupItem> extends NXValueComponent implements FormValueControl<unknown | unknown[] | null> {
288
+ declare class AXLookupComponent<T = AXLookupItem> extends NXValueComponent implements FormValueControl<unknown | unknown[] | AXLookupSelectAllValue | null> {
270
289
  #private;
271
290
  /**
272
291
  * The name of the form field, used by validation rules and `ax-form.validate(names)`.
@@ -405,11 +424,13 @@ declare class AXLookupComponent<T = AXLookupItem> extends NXValueComponent imple
405
424
  */
406
425
  loadingTemplate: _angular_core.InputSignal<TemplateRef<unknown>>;
407
426
  /**
408
- * The selected value(s): a scalar in single modes, an array in
409
- * `multi-select` / `multi-select-tree`. Supports `[(value)]`, `[(ngModel)]`, and signal forms
410
- * via {@link FormValueControl}.
427
+ * The selected value(s): a scalar in single modes; in `multi-select` / `multi-select-tree` an array
428
+ * of keys or `{ selectAll: true, excluded?: [...] }` when the default header “Select all” is used.
429
+ * Supports `[(value)]`, `[(ngModel)]`, and signal forms via {@link FormValueControl}.
411
430
  */
412
431
  readonly value: _angular_core.ModelSignal<unknown>;
432
+ /** Projected popover header; when set, replaces the default multi-select “Select all” header. */
433
+ private readonly projectedHeader;
413
434
  /**
414
435
  * Full items that resolve the current `value` key(s) without calling datasource `byKey`.
415
436
  * Use when the parent already has the selected entity (e.g. edit forms). Seeds the internal
@@ -472,8 +493,17 @@ declare class AXLookupComponent<T = AXLookupItem> extends NXValueComponent imple
472
493
  /** The datasource for list-based modes; plain arrays are converted. */
473
494
  protected resolvedDataSource: _angular_core.Signal<AXDataSource<AXLookupItem>>;
474
495
  protected resolvedTreeDataSource: _angular_core.Signal<AXTreeViewDataSource>;
475
- /** The current selection normalized to an array. */
496
+ /** Explicit key list (empty when multi value is select-all object). */
476
497
  protected selectedValues: _angular_core.Signal<unknown[]>;
498
+ protected multiSelectAllActive: _angular_core.Signal<boolean>;
499
+ protected multiExcludedValues: _angular_core.Signal<unknown[]>;
500
+ protected hasProjectedHeader: _angular_core.Signal<boolean>;
501
+ protected showDefaultSelectAllHeader: _angular_core.Signal<boolean>;
502
+ protected selectAllHeaderChecked: _angular_core.Signal<boolean>;
503
+ protected selectAllHeaderIndeterminate: _angular_core.Signal<boolean>;
504
+ /** Keys used for tree controlled selection when leaving select-all mode. */
505
+ protected effectiveSelectedKeys: _angular_core.Signal<unknown[]>;
506
+ protected hasSelection: _angular_core.Signal<boolean>;
477
507
  /** The resolved selected items (via cache, datasource `find`/`byKey`, or tree node lookup). */
478
508
  protected selectedItems: _angular_core.WritableSignal<AXLookupItem[]>;
479
509
  /** Display text shown in the trigger for single modes. */
@@ -528,6 +558,12 @@ declare class AXLookupComponent<T = AXLookupItem> extends NXValueComponent imple
528
558
  protected onTriggerKeydown(e: KeyboardEvent): void;
529
559
  /** Filters the datasource from the actionsheet search field and handles Enter with no matches. */
530
560
  protected onSheetSearchKeydown(e: AXHtmlEvent<KeyboardEvent>): void;
561
+ /**
562
+ * Toggles the default header “Select all” checkbox; updates `value` only (no separate event).
563
+ */
564
+ protected onSelectAllHeaderChanged(checked: boolean): void;
565
+ /** Toggles select-all from the header row so the checkbox stays pointer-events-none like option rows. */
566
+ protected onSelectAllHeaderMouseDown(event: Event): void;
531
567
  /** Blocks typing when the trigger is not editable (keeps Tab / keyboard open working). */
532
568
  protected onBeforeInput(event: Event): void;
533
569
  /**
@@ -594,7 +630,7 @@ declare class AXLookupComponent<T = AXLookupItem> extends NXValueComponent imple
594
630
  */
595
631
  reset(isUserInteraction?: boolean): void;
596
632
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXLookupComponent<any>, never>;
597
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupComponent<any>, "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; }; "highlightSearch": { "alias": "highlightSearch"; "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>;
633
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXLookupComponent<any>, "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; }; "highlightSearch": { "alias": "highlightSearch"; "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"; }, ["projectedHeader"], ["ax-prefix", "ax-clear-button", "ax-suffix", "ax-header", "ax-footer", "ax-validation-rule"], true, never>;
598
634
  }
599
635
 
600
636
  /**
@@ -899,6 +935,20 @@ declare class AXLookupModule {
899
935
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXLookupModule>;
900
936
  }
901
937
 
938
+ /**
939
+ * Multi-select value when the user chooses “select all” instead of an explicit key list.
940
+ */
941
+ declare function isLookupSelectAllValue(value: unknown): value is AXLookupSelectAllValue;
942
+ /** Excluded value keys when `selectAll` is active (empty when not in select-all mode). */
943
+ declare function lookupExcludedValues(value: unknown): unknown[];
944
+ /** Whether the bound multi value is in select-all mode. */
945
+ declare function lookupSelectAllActive(value: unknown): boolean;
946
+ /** Normalized explicit key list for array-mode multi values. */
947
+ declare function lookupArrayValues(value: unknown): unknown[];
948
+ declare function createLookupSelectAllValue(excluded?: unknown[]): AXLookupSelectAllValue;
949
+ /** Deep equality for lookup multi values (arrays and select-all objects). */
950
+ declare function lookupMultiValuesEqual(a: unknown, b: unknown): boolean;
951
+
902
952
  /** Whether a tree node may have descendants (embedded children or lazy metadata). */
903
953
  declare function lookupTreeNodeMayHaveChildren(node: AXTreeViewNode): boolean;
904
954
  interface HydrateLookupTreeOptions {
@@ -958,5 +1008,5 @@ declare function cloneLookupTreeNodes(nodes: AXLookupItem[]): AXLookupItem[];
958
1008
  /** Depth-first flattening of nested `children` arrays. */
959
1009
  declare function flattenTreeNodes(nodes: AXLookupItem[]): AXLookupItem[];
960
1010
 
961
- export { AXLookupComponent, AXLookupDropDownListComponent, AXLookupDropDownTreeComponent, AXLookupModule, AXLookupMultiColumnComponent, AXLookupMultiColumnTreeComponent, AXLookupMultiSelectComponent, AXLookupMultiSelectTreeComponent, cloneLookupTreeNodes, convertLookupArrayToDataSource, createLookupTreeTableDataSource, filterTreeNodes, flattenTreeNodes, hydrateLookupTree, lookupTreeNodeMayHaveChildren, matchesLookupText, prepareFilteredTreeTableRows };
962
- export type { AXLookupArrayDataSourceOptions, AXLookupColumn, AXLookupItem, AXLookupItemClickEvent, AXLookupMode, AXLookupSelectionChangedEvent, AXLookupTreeSelectionEvent, AXLookupTreeTableDataSourceOptions, HydrateLookupTreeOptions };
1011
+ export { AXLookupComponent, AXLookupDropDownListComponent, AXLookupDropDownTreeComponent, AXLookupModule, AXLookupMultiColumnComponent, AXLookupMultiColumnTreeComponent, AXLookupMultiSelectComponent, AXLookupMultiSelectTreeComponent, cloneLookupTreeNodes, convertLookupArrayToDataSource, createLookupSelectAllValue, createLookupTreeTableDataSource, filterTreeNodes, flattenTreeNodes, hydrateLookupTree, isLookupSelectAllValue, lookupArrayValues, lookupExcludedValues, lookupMultiValuesEqual, lookupSelectAllActive, lookupTreeNodeMayHaveChildren, matchesLookupText, prepareFilteredTreeTableRows };
1012
+ export type { AXLookupArrayDataSourceOptions, AXLookupColumn, AXLookupItem, AXLookupItemClickEvent, AXLookupMode, AXLookupMultiValue, AXLookupSelectAllValue, AXLookupSelectionChangedEvent, AXLookupTreeSelectionEvent, AXLookupTreeTableDataSourceOptions, HydrateLookupTreeOptions };
@@ -749,6 +749,11 @@ declare class AXTreeViewComponent {
749
749
  * Toggle node expansion state with lazy loading support
750
750
  * Note: Disabled nodes can still be toggled (expanded/collapsed) for better UX
751
751
  */
752
+ /**
753
+ * Keeps expand/collapse from selecting the node or moving focus out of a parent editor
754
+ * (for example a lookup trigger, which would close the popup).
755
+ */
756
+ onExpandTogglePointerDown(event: Event): void;
752
757
  toggleNode(node: AXTreeViewNode, event: Event): Promise<void>;
753
758
  /**
754
759
  * Toggle node selection state with indeterminate support (for multiple mode)