@acorex-platform/framework-client 2.0.0-next.2 → 2.0.0-next.20

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 (58) hide show
  1. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs → acorex-platform-framework-client-common-common-settings.provider-Cyr1DaiD.mjs} +19 -2
  2. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map → acorex-platform-framework-client-common-common-settings.provider-Cyr1DaiD.mjs.map} +1 -1
  3. package/fesm2022/acorex-platform-framework-client-common.mjs +416 -191
  4. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-framework-client-core.mjs +7 -2
  6. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +329 -114
  8. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  9. package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-uEA2EE9v.mjs} +706 -200
  10. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-uEA2EE9v.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Dxp4kGsa.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-i9bfszKb.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Dxp4kGsa.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-i9bfszKb.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-fnICGK0s.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-Ej4_qrGa.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-fnICGK0s.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-Ej4_qrGa.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-BxTbTlUr.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-BbYsgq32.mjs} +4 -4
  16. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-BxTbTlUr.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-BbYsgq32.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-D0WZheYu.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-CWc-6CZ8.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-D0WZheYu.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-CWc-6CZ8.mjs.map} +1 -1
  19. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +71 -10
  21. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +279 -184
  23. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DZMgisgf.mjs} +183 -102
  25. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DZMgisgf.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BejeCu5q.mjs} +3 -3
  27. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-SHCgo4UC.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BejeCu5q.mjs.map} +1 -1
  28. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C2XsTtkl.mjs} +2 -2
  29. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYsrp8LT.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-C2XsTtkl.mjs.map} +1 -1
  30. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
  31. package/fesm2022/acorex-platform-framework-client-realtime.mjs +49 -7
  32. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  33. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DPU6jTDk.mjs} +8 -2
  34. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DPU6jTDk.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-CLdQJ8e8.mjs} +8 -2
  36. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-CLdQJ8e8.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +42 -17
  38. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +1 -1
  40. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  41. package/i18n/en-AU/general.json +16 -4
  42. package/i18n/en-AU/layout.json +2 -1
  43. package/i18n/en-US/general.json +16 -4
  44. package/i18n/en-US/layout.json +2 -1
  45. package/i18n/fa-IR/general.json +16 -4
  46. package/i18n/fa-IR/layout.json +2 -1
  47. package/package.json +6 -6
  48. package/types/acorex-platform-framework-client-common.d.ts +67 -7
  49. package/types/acorex-platform-framework-client-layout-components.d.ts +35 -4
  50. package/types/acorex-platform-framework-client-layout-entity.d.ts +83 -31
  51. package/types/acorex-platform-framework-client-layout-views.d.ts +15 -0
  52. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +64 -14
  53. package/types/acorex-platform-framework-client-layout-widgets.d.ts +24 -1
  54. package/types/acorex-platform-framework-client-realtime.d.ts +5 -0
  55. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CA19c8sx.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-1UJh0Qj4.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs.map +0 -1
@@ -20,7 +20,7 @@ export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } fr
20
20
  import * as i4 from '@acorex-platform/framework-client/layout/widget-core';
21
21
  import { AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetCoreElementAPI, AXPWidgetCoreService, AXPWidgetRendererDirective } from '@acorex-platform/framework-client/layout/widget-core';
22
22
  import * as _acorex_platform_framework_client_layout_widgets from '@acorex-platform/framework-client/layout/widgets';
23
- import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex-platform/framework-client/layout/widgets';
23
+ import { AXPDataListWidgetComponentOptions } from '@acorex-platform/framework-client/layout/widgets';
24
24
  import { ParamMap, ResolveFn, RedirectCommand } from '@angular/router';
25
25
  import * as rxjs from 'rxjs';
26
26
  import { Subject } from 'rxjs';
@@ -410,6 +410,8 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
410
410
  private readonly chooserService;
411
411
  private readonly settingsService;
412
412
  private readonly commandExecutor;
413
+ private readonly queryExecutor;
414
+ private readonly debug;
413
415
  private readonly toastService;
414
416
  private readonly translateService;
415
417
  private readonly dirtyChangeSubject;
@@ -422,8 +424,15 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
422
424
  /** Status before soft-delete; used for restore when baseline was not synced (section layout). */
423
425
  private readonly statusBeforeDelete;
424
426
  private readonly autoBaselineSynced;
427
+ private entityFilesHydrateGeneration;
428
+ private hydratedScopeKey;
425
429
  /** Sync baseline from context when not wired by a deferred-save page (section layout). */
426
430
  private readonly baselineInitEffect;
431
+ /**
432
+ * Storage refs (including `reference:edms-lazy`) are not file rows.
433
+ * Load them through FileUploader:LoadFiles without marking the form dirty.
434
+ */
435
+ private readonly entityFilesHydrateEffect;
427
436
  protected multiple: _angular_core.Signal<boolean>;
428
437
  private readonly acceptOverride;
429
438
  protected accept: _angular_core.Signal<string>;
@@ -447,6 +456,7 @@ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent
447
456
  protected readonly chooserContext: _angular_core.Signal<AXPFileChooserContext>;
448
457
  ngOnInit(): void;
449
458
  private applyChooserPlatformSettings;
459
+ private hydrateEntityFiles;
450
460
  setValue(value: AXPFileListItem[] | null | undefined): void;
451
461
  /** Align dirty baseline with persisted attachments (call when record loads or after discard remount). */
452
462
  syncBaseline(saved: AXPFileListItem[] | undefined): void;
@@ -763,6 +773,7 @@ declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDet
763
773
  private readonly router;
764
774
  private readonly sessionService;
765
775
  private readonly detailsAccess;
776
+ private readonly excludeSession;
766
777
  /**
767
778
  * Execute the command to navigate to entity details
768
779
  * @param input - Command input containing entity and data information
@@ -1022,6 +1033,10 @@ declare class AXPEntityDetailPopoverComponent {
1022
1033
  entityId: _angular_core.InputSignal<string | number>;
1023
1034
  requestClose: _angular_core.InputSignal<(() => void) | undefined>;
1024
1035
  breadcrumb: _angular_core.InputSignal<string | null>;
1036
+ /** When set, replaces the entity card field list for this popover only. */
1037
+ popoverFields: _angular_core.InputSignal<readonly string[] | null>;
1038
+ /** Names removed from this popover after `popoverFields` is applied. */
1039
+ popoverExclude: _angular_core.InputSignal<readonly string[] | null>;
1025
1040
  protected entityDefinition: _angular_core.WritableSignal<AXPEntity | null>;
1026
1041
  protected entityData: _angular_core.WritableSignal<Record<string, unknown> | null>;
1027
1042
  protected isLoadingDetails: _angular_core.WritableSignal<boolean>;
@@ -1042,7 +1057,7 @@ declare class AXPEntityDetailPopoverComponent {
1042
1057
  loadDetails(): Promise<void>;
1043
1058
  protected navigateToDetails(): Promise<void>;
1044
1059
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDetailPopoverComponent, never>;
1045
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDetailPopoverComponent, "axp-entity-detail-popover", never, { "entity": { "alias": "entity"; "required": true; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "requestClose": { "alias": "requestClose"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1060
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDetailPopoverComponent, "axp-entity-detail-popover", never, { "entity": { "alias": "entity"; "required": true; "isSignal": true; }; "entityId": { "alias": "entityId"; "required": true; "isSignal": true; }; "requestClose": { "alias": "requestClose"; "required": false; "isSignal": true; }; "breadcrumb": { "alias": "breadcrumb"; "required": false; "isSignal": true; }; "popoverFields": { "alias": "popoverFields"; "required": false; "isSignal": true; }; "popoverExclude": { "alias": "popoverExclude"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1046
1061
  }
1047
1062
 
1048
1063
  interface AXPEntityDetailPopoverOptions {
@@ -1056,6 +1071,13 @@ interface AXPEntityDetailPopoverOptions {
1056
1071
  /** @deprecated Unused; the shared entity card resolves the title from the card layout. */
1057
1072
  displayTitle?: string;
1058
1073
  breadcrumb?: string;
1074
+ /**
1075
+ * When set, the popover shows only these card fields, in this order.
1076
+ * Omit to keep the entity card. Does not change list cards.
1077
+ */
1078
+ fields?: readonly string[];
1079
+ /** Card field or property names removed from this popover after `fields` is applied. */
1080
+ exclude?: readonly string[];
1059
1081
  }
1060
1082
  declare class AXPEntityDetailPopoverService {
1061
1083
  private readonly overlayService;
@@ -1408,6 +1430,10 @@ declare class AXPEntityCreateViewElementViewModel {
1408
1430
  description: _angular_core.WritableSignal<string | undefined>;
1409
1431
  editable: _angular_core.Signal<boolean>;
1410
1432
  isVisible: _angular_core.Signal<string | boolean>;
1433
+ private readonly liveRequired;
1434
+ /** `disabled` values of `required` rules, so the page label can follow the same expression as the editor. */
1435
+ requiredDisabledSources(): Array<boolean | string | undefined>;
1436
+ setLiveRequired(value: boolean): void;
1411
1437
  isRequired: _angular_core.Signal<boolean>;
1412
1438
  layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
1413
1439
  node: _angular_core.Signal<AXPWidgetNode>;
@@ -1984,6 +2010,10 @@ declare class AXPEntityMasterUpdateElementViewModel {
1984
2010
  description: _angular_core.WritableSignal<string | undefined>;
1985
2011
  editable: _angular_core.Signal<boolean>;
1986
2012
  isVisible: _angular_core.Signal<string | boolean>;
2013
+ private readonly liveRequired;
2014
+ /** `disabled` values of `required` rules, so the page label can follow the same expression as the editor. */
2015
+ requiredDisabledSources(): Array<boolean | string | undefined>;
2016
+ setLiveRequired(value: boolean): void;
1987
2017
  isRequired: _angular_core.Signal<boolean>;
1988
2018
  layout: _angular_core.Signal<AXPEntityPropertyLayoutConfig>;
1989
2019
  node: _angular_core.Signal<AXPWidgetNode>;
@@ -3789,34 +3819,38 @@ declare module '@acorex-platform/framework-shared/widget-core' {
3789
3819
  }
3790
3820
  }
3791
3821
 
3792
- declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPProviderSelectWidgetEditBase {
3822
+ interface EntityKeyRow {
3823
+ value: string;
3824
+ /** Original title or i18n key. The row template translates it. */
3825
+ title: string;
3826
+ /** Translated label plus key, used for search and sort. */
3827
+ searchText: string;
3828
+ }
3829
+ /**
3830
+ * Picks a registered entity key (`module.name`).
3831
+ * Does not use the data-list widget base: that base writes `options.dataSource`
3832
+ * while the property dialog is opening and remounts the dialog until the browser hangs.
3833
+ */
3834
+ declare class AXPEntityDefinitionProviderWidgetEditComponent extends AXPValueWidgetComponent<string> {
3793
3835
  private readonly entityRegistry;
3836
+ private readonly entityResolver;
3837
+ private readonly translationService;
3794
3838
  /**
3795
- * Last applied module filter (from context) to avoid redundant reloads.
3796
- */
3797
- private readonly lastModuleFilterKey;
3798
- /**
3799
- * Reloads entity options when `filterModuleField` changes in form context (not only via `widget.refresh()`).
3800
- */
3801
- private readonly reloadWhenModuleContextChanges;
3802
- /**
3803
- * Options:
3804
- * - `filterModuleField`: sibling context field name (e.g. `entityListModule`); when set, only entities in that module are listed.
3805
- * - `valueFormat`: `fullKey` (`module.name`, default) or `entityName` (short name only, for menus that store `entityListRef.entity`).
3806
- */
3807
- protected loadDataSourceRows(): Promise<Array<{
3808
- value: string;
3809
- title: string;
3810
- }>>;
3811
- refresh(): void;
3812
- /**
3813
- * Reads sibling field from context store data (same shape as `lodash/get` paths).
3814
- */
3815
- private readModuleFromContext;
3816
- /**
3817
- * Resolves a sibling field path relative to the current widget's parent path.
3818
- */
3819
- private resolveSiblingContextPath;
3839
+ * Replaced after {@link AXPEntityResolver.listAll}. `getAll()` only has entities
3840
+ * already opened in this session, so the dropdown would hide the rest.
3841
+ */
3842
+ private rows;
3843
+ /** Bumped when {@link rows} is replaced so the selected label can resolve. */
3844
+ private readonly rowsVersion;
3845
+ /** Drops the lookup's initial value echo so the property dialog is not rebuilt. */
3846
+ private acceptSelection;
3847
+ protected readonly rowHeight = 40;
3848
+ protected readonly dataSource: AXDataSource<EntityKeyRow>;
3849
+ protected readonly selectedKey: _angular_core.Signal<string | null>;
3850
+ protected readonly selectedItems: _angular_core.Signal<EntityKeyRow[]>;
3851
+ ngOnInit(): Promise<void>;
3852
+ protected onLookupValueChanged(event: AXValueChangedEvent): void;
3853
+ private toRows;
3820
3854
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, never>;
3821
3855
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPEntityDefinitionProviderWidgetEditComponent, "axp-entity-definition-provider-widget-edit", never, {}, {}, never, never, true, never>;
3822
3856
  }
@@ -3864,8 +3898,8 @@ declare class AXPEntityListTableService {
3864
3898
  */
3865
3899
  private handleRowCommand;
3866
3900
  /**
3867
- * When a related entity list declares `excludeProperties`, row commands bypass the details page
3868
- * `execute()` merge — apply the same exclusions for embedded create/update commands.
3901
+ * Related-list `excludeProperties` are not on the row action itself.
3902
+ * Merge them into create, edit, view, and details commands. Values stay in the form context.
3869
3903
  */
3870
3904
  private mergeRelatedListFormOptions;
3871
3905
  /**
@@ -4311,6 +4345,8 @@ interface AXPEntityDataSelectorCreateOptions {
4311
4345
  * When set, replaces the default `Create {entity title}` header.
4312
4346
  */
4313
4347
  title?: string;
4348
+ /** Command to run instead of `Entity:Create`, when set. */
4349
+ command?: string;
4314
4350
  }
4315
4351
  /** Nested options for {@link AXPEntityDataSelectorService.open}. */
4316
4352
  interface AXPEntityDataSelectorOpenOptions {
@@ -4414,7 +4450,7 @@ declare class AXPEntityDataSelectorService {
4414
4450
  * Execute Entity:Create and return created item.
4415
4451
  * Used by lookup widget and data selector for inline create.
4416
4452
  */
4417
- executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick', initialData?: Record<string, unknown>, title?: string): Promise<any | null>;
4453
+ executeEntityCreate(entity: AXPEntity, mode: 'full' | 'quick', initialData?: Record<string, unknown>, title?: string, commandName?: string): Promise<any | null>;
4418
4454
  /**
4419
4455
  * Normalize item's phones/emails for expose/display.
4420
4456
  * Call this when receiving items from any source (create, API, selector).
@@ -4454,6 +4490,11 @@ declare class AXPEntityDataSelectorService {
4454
4490
  * Execute Entity:Create and return created item
4455
4491
  */
4456
4492
  private executeCreate;
4493
+ /**
4494
+ * Runs a named create command (for example Create New Location) and returns the created row.
4495
+ * `initialData` is sent as both `data` and `options.process.data` so party/owner seeds resolve.
4496
+ */
4497
+ private executeNamedCreate;
4457
4498
  /**
4458
4499
  * Normalize phones/emails from repeater form to plain arrays of { value: string }.
4459
4500
  * Repeater/ContactBox can return nested structure: { value: { label: "", value: "101010" } }
@@ -4555,6 +4596,8 @@ declare class AXPLookupWidgetTableHostComponent extends NXValueComponent {
4555
4596
  protected handleTableItemClick(event: LookupWidgetTableItemClickEvent): void;
4556
4597
  /** Closes the inline lookup dropdown. */
4557
4598
  close(): void;
4599
+ /** Reload multi-column / tree grid rows (e.g. after cascade filter context is ready). */
4600
+ refreshTableData(): void;
4558
4601
  /** Clears the selection. Used by projected `ax-clear-button`. */
4559
4602
  reset(_isUserInteraction?: boolean): void;
4560
4603
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPLookupWidgetTableHostComponent, never>;
@@ -4589,6 +4632,8 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
4589
4632
  private readonly shouldFocus;
4590
4633
  /** Skips one {@link findByValue} pass after inline create when selection is already hydrated. */
4591
4634
  private skipFindByValueOnce;
4635
+ /** Ignores host `valueChange` echoes while open-form hydration is writing context. */
4636
+ private hostValueCommitSuppressDepth;
4592
4637
  /** Latest {@link findByValue} run; older in-flight runs must not overwrite its result. */
4593
4638
  private findByValueRequestId;
4594
4639
  private lastEditorLocaleKey;
@@ -4600,6 +4645,8 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
4600
4645
  protected textField: _angular_core.Signal<string>;
4601
4646
  protected hasClearButton: _angular_core.Signal<boolean>;
4602
4647
  protected customFilter: _angular_core.Signal<AXDataSourceFilterOption | null>;
4648
+ /** When false, an empty cascade filter does not lock the editor. Explicit `disabled` is independent. */
4649
+ protected waitForCascade: _angular_core.Signal<boolean>;
4603
4650
  /** Parent cascade with an empty value. Structurally empty filters and top-level not-in stay enabled. */
4604
4651
  protected hasPendingCascadeFilter: _angular_core.Signal<boolean>;
4605
4652
  protected isLookupDisabled: _angular_core.Signal<boolean>;
@@ -4659,6 +4706,9 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
4659
4706
  protected openPopupSelector(): Promise<void>;
4660
4707
  private hasValue;
4661
4708
  private findByValue;
4709
+ /** Ignores the editor echo while context is applied from outside the control. */
4710
+ private holdHostValueCommit;
4711
+ private resolveLookupSelection;
4662
4712
  private getHydrationOptions;
4663
4713
  private resolveEditorLocaleKey;
4664
4714
  private rerenderEditor;
@@ -4666,6 +4716,8 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
4666
4716
  private executeCreate;
4667
4717
  /** @param syncContext When false, only updates UI (hydration/revert); skips context writes. */
4668
4718
  protected setItems: (items: any[], syncContext?: boolean) => void;
4719
+ /** Fills empty expose targets from the resolved row without running triggers. */
4720
+ private exposeHydratedSelection;
4669
4721
  /**
4670
4722
  * Writes expose targets into context using per-path updates.
4671
4723
  * Avoids `contextService.patch()` with nested objects: patch shallow-merges top-level keys only,
@@ -253,6 +253,7 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
253
253
  protected readonly unsavedChangesConfirm: AXPUnsavedChangesConfirmService;
254
254
  protected readonly browserTitleService: AXPBrowserTitleService;
255
255
  protected readonly router: Router;
256
+ private readonly pageLayoutRoute;
256
257
  private readonly navTrailService;
257
258
  private readonly pageLayoutDestroyRef;
258
259
  private _updateTrigger;
@@ -261,6 +262,15 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
261
262
  protected updateTrigger: _angular_core.Signal<number>;
262
263
  protected recompute(): void;
263
264
  ngOnInit(): Promise<void>;
265
+ /**
266
+ * Follows the scoped tab when this instance is the active route (settings scope changes).
267
+ * Cached background pages keep the key captured at init.
268
+ */
269
+ private syncOwnedPageTabKey;
270
+ /** True when this page's route snapshot is in the active router tree. */
271
+ private isOwningActiveRoute;
272
+ /** True when this page may publish chrome onto its route tab. */
273
+ private canPublishActiveTabChrome;
264
274
  /** Maps the home-page route to the pinned home tab key instead of a path-based key. */
265
275
  private resolvePageTabKey;
266
276
  /** Stable tab key for this cached page instance (tabular mode). */
@@ -294,6 +304,11 @@ declare abstract class AXPPageLayoutBaseComponent implements AXPPageLayoutBase {
294
304
  /** True when this cached page should publish crumbs for details-to-details wayfinding. */
295
305
  private isActivePageForNavTrail;
296
306
  protected getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]>;
307
+ /**
308
+ * Route-tab label for this page. Return a scope title when child routes are internal
309
+ * (settings groups). Null keeps the breadcrumb / page-title fallback.
310
+ */
311
+ protected getRouteTabTitle(): string | string[] | null | Promise<string | string[] | null>;
297
312
  /** Collects resolved breadcrumb labels (Home excluded upstream) for tab chrome. */
298
313
  protected resolveBreadcrumbTabTitleSegments(pageBreadcrumbs: AXPBreadcrumbItem[]): Promise<string[]>;
299
314
  /** Joins breadcrumb segments as the stored tab title string. */
@@ -4,7 +4,7 @@ import * as _acorex_platform_framework_shared_widget_core from '@acorex-platform
4
4
  import { AXPWidgetStatus, AXPPageStatus, AXPWidgetNodeToken, AXPWidgetNode, AXPWidgetRenderMode, AXPLayoutProfileContext, AXPLayoutProfileValues, AXPWidgetPropertyGroup, AXPWidgetProperty, AXPLayoutSize, AXPWidgetConfig, AXPExtendedWidget, AXPWidgetColumnNode } from '@acorex-platform/framework-shared/widget-core';
5
5
  import * as _ngrx_signals from '@ngrx/signals';
6
6
  import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
7
- import { AXPOptionsData, AXPValidationRules, AXPGridLayoutOptions, AXPProperty, AXPContextChangeEvent, AXPMetaData, AXPWidgetNode as AXPWidgetNode$1 } from '@acorex-platform/framework-shared/core';
7
+ import { AXPOptionsData, AXPValidationRules, AXPGridLayoutOptions, AXPProperty, AXPContextChangeEvent, AXPMetaData, AXPValidationRule, AXPExpressionEvaluatorScope, AXPWidgetNode as AXPWidgetNode$1 } from '@acorex-platform/framework-shared/core';
8
8
  import { AXPQueryRegistryRecord } from '@acorex-platform/framework-shared/domain';
9
9
  import { AXValueChangedEvent, AXDataSource } from '@acorex/cdk/common';
10
10
  import { AXPQueryService } from '@acorex-platform/framework-client/runtime';
@@ -205,6 +205,7 @@ declare abstract class AXPLayoutBaseWidgetComponent<TOptions extends AXPOptionsD
205
205
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutBaseWidgetComponent<any>>;
206
206
  }
207
207
  declare abstract class AXPValueWidgetComponent<T = any | null, TOptions extends AXPOptionsData = AXPOptionsData> extends AXPLayoutBaseWidgetComponent<TOptions> implements OnInit {
208
+ #private;
208
209
  protected readonly path: string | undefined;
209
210
  protected readonly defaultValue: any;
210
211
  private _isValueWidget;
@@ -214,8 +215,12 @@ declare abstract class AXPValueWidgetComponent<T = any | null, TOptions extends
214
215
  }>;
215
216
  fullPath: _angular_core.WritableSignal<string | null>;
216
217
  parentPath: _angular_core.WritableSignal<string | null>;
218
+ private readonly validationExpressionEvaluator;
219
+ private readonly validationDisabledByIndex;
220
+ private validationDisabledGeneration;
217
221
  ngOnInit(): void;
218
222
  getValue: _angular_core.Signal<T>;
223
+ protected readonly validationRulesWithDisabled: _angular_core.Signal<AXPValidationRules>;
219
224
  protected validationRules: _angular_core.Signal<AXPValidationRules>;
220
225
  protected hasRequiredValidation: _angular_core.Signal<boolean>;
221
226
  /**
@@ -493,6 +498,27 @@ declare class AXPWidgetSerializationHelper {
493
498
  static removeMeta(node: AXPWidgetNode): AXPWidgetNode;
494
499
  }
495
500
 
501
+ type AXPWidgetExposeMapping = string | {
502
+ source: string;
503
+ target: string;
504
+ };
505
+ interface AXPWidgetExposeHydrateWrite {
506
+ path: string;
507
+ value: unknown;
508
+ }
509
+ interface ResolveWidgetExposeHydrateWritesInput {
510
+ expose: readonly AXPWidgetExposeMapping[] | null | undefined;
511
+ items: readonly unknown[];
512
+ multiple: boolean;
513
+ widgetPath: string | null;
514
+ readTarget: (path: string) => unknown;
515
+ }
516
+ /**
517
+ * Leaf writes for opening a form. Skips empty sources, the widget's own path,
518
+ * and targets that already hold a different value.
519
+ */
520
+ declare function resolveWidgetExposeHydrateWrites(input: ResolveWidgetExposeHydrateWritesInput): AXPWidgetExposeHydrateWrite[];
521
+
496
522
  declare abstract class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {
497
523
  protected flex: _angular_core.Signal<AXPFlexBoxString | undefined>;
498
524
  hostFlexStyle: _angular_core.Signal<Record<string, string | number>>;
@@ -659,6 +685,17 @@ declare class AXPWidgetContainerComponent {
659
685
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetContainerComponent, "axp-widgets-container", never, { "context": { "alias": "context"; "required": false; }; "functions": { "alias": "functions"; "required": false; }; }, { "onContextChanged": "onContextChanged"; }, never, ["*"], false, never>;
660
686
  }
661
687
 
688
+ /** Asks the owning data-table column to measure its width again. */
689
+ interface AXPWidgetColumnAutoFitHandle {
690
+ /**
691
+ * Coalesces calls from every cell in the column.
692
+ * `settle` stops further passes after this one, so a later user resize is kept.
693
+ */
694
+ scheduleContentAutoFit(request?: {
695
+ settle?: boolean;
696
+ }): void;
697
+ }
698
+
662
699
  /**
663
700
  * Provider interface for widget definitions.
664
701
  * Implement this interface and register via AXP_WIDGET_DEFINITION_PROVIDER to contribute widgets.
@@ -701,17 +738,6 @@ declare class AXPWidgetRegistryService {
701
738
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetRegistryService>;
702
739
  }
703
740
 
704
- /** Asks the owning data-table column to measure its width again. */
705
- interface AXPWidgetColumnAutoFitHandle {
706
- /**
707
- * Coalesces calls from every cell in the column.
708
- * `settle` stops further passes after this one, so a later user resize is kept.
709
- */
710
- scheduleContentAutoFit(request?: {
711
- settle?: boolean;
712
- }): void;
713
- }
714
-
715
741
  declare class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent implements OnChanges, AfterContentInit, AXPWidgetColumnAutoFitHandle {
716
742
  protected widgetRegistery: AXPWidgetRegistryService;
717
743
  private grid;
@@ -920,6 +946,7 @@ declare class AXPWidgetRendererDirective {
920
946
  private hasInitialRender;
921
947
  private onContextChanged;
922
948
  private onLoadEvent;
949
+ /** Path → whether `onContextChanged` (triggers) should fire. Hydrate writes stay false. */
923
950
  private contextUpdateQueue;
924
951
  private contextUpdateTimeout;
925
952
  private readonly CONTEXT_UPDATE_DEBOUNCE_MS;
@@ -927,6 +954,7 @@ declare class AXPWidgetRendererDirective {
927
954
  private readonly EXPRESSION_CACHE_TTL;
928
955
  private lastAppliedOptions;
929
956
  private lastExpressionResults;
957
+ /** Path → whether buffered pre-render changes should fire triggers. `*` marks a full context init. */
930
958
  private preRenderContextQueue;
931
959
  /**
932
960
  * Last context {@link AXPContextChangeEvent} handled by this renderer.
@@ -945,6 +973,7 @@ declare class AXPWidgetRendererDirective {
945
973
  * the previous `lastChange` object.
946
974
  */
947
975
  private markContextChangeHandled;
976
+ private rememberQueuedPath;
948
977
  private queueContextUpdate;
949
978
  private processBatchedUpdates;
950
979
  private isRelevantContextChange;
@@ -1028,6 +1057,26 @@ declare class AXPWidgetCoreModule {
1028
1057
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPWidgetCoreModule>;
1029
1058
  }
1030
1059
 
1060
+ declare function collectAuthoredValidationRules(validationsRaw: unknown): AXPValidationRule[];
1061
+ declare function assumedValidationDisabled(disabled: AXPValidationRule['disabled'], isExpression: (value: string) => boolean): boolean;
1062
+ declare function resolveValidationContextPath(path: string, parentPath: string | null): string;
1063
+ declare function validationExpressionScope(readPath: (path: string) => unknown): AXPExpressionEvaluatorScope;
1064
+ declare function resolveValidationDisabledFlags(rules: readonly AXPValidationRule[], isExpression: (value: string) => boolean, evaluate: (expression: string) => Promise<unknown>): Promise<boolean[]>;
1065
+ declare function isRequiredRuleActive(disabledSources: readonly (boolean | string | undefined)[], isExpression: (value: string) => boolean, evaluate: (expression: string) => Promise<unknown>): Promise<boolean>;
1066
+ interface RequiredStarNode {
1067
+ options?: Record<string, unknown> | null;
1068
+ }
1069
+ /**
1070
+ * Live required indicator: a `required` rule counts only while its `disabled` flag is not true.
1071
+ * Expression `disabled` stays off until the expression resolves.
1072
+ */
1073
+ declare function syncRequiredIndicator(args: {
1074
+ nodes: () => readonly RequiredStarNode[];
1075
+ trackContext: () => unknown;
1076
+ isExpression: (value: string) => boolean;
1077
+ evaluate: (expression: string) => Promise<unknown>;
1078
+ }): Signal<boolean>;
1079
+
1031
1080
  /**
1032
1081
  * Standalone cell renderer using the same column-mode widget pipeline as {@link AXPWidgetColumnRendererComponent}.
1033
1082
  */
@@ -1145,6 +1194,7 @@ declare const AXP_ICON_PROPERTY: AXPWidgetProperty;
1145
1194
  declare const AXP_IS_LOADING_PROPERTY: AXPWidgetProperty;
1146
1195
  declare const AXP_HAS_CLEAR_BUTTON_PROPERTY: AXPWidgetProperty;
1147
1196
  declare const AXP_ALLOW_SEARCH_PROPERTY: AXPWidgetProperty;
1197
+ declare const AXP_PREFETCH_PROPERTY: AXPWidgetProperty;
1148
1198
  declare const AXP_HAS_COPY_ICON_PROPERTY: AXPWidgetProperty;
1149
1199
  declare const AXP_HAS_EYE_ICON_PROPERTY: AXPWidgetProperty;
1150
1200
  declare const AXP_DOWNLOADABLE_PROPERTY: AXPWidgetProperty;
@@ -1302,5 +1352,5 @@ declare function createReadonlyLocalDataSourceStore(read: () => readonly AXPLoca
1302
1352
  */
1303
1353
  declare function createWritableLocalDataSourceStore(initial?: readonly AXPLocalDataSource[]): AXPLocalDataSourceStore;
1304
1354
 
1305
- export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnTruncatedTextComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnCellComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetSerializationHelper, AXP_ALLOW_CLEAR_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_DEFAULT_ROW_COUNT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EMPTY_SPACING_BOX, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTY, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_PROFILE, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_LOCAL_DATA_SOURCES_OPTION, AXP_LOCAL_DATA_SOURCE_PREFIX, AXP_LOCAL_DATA_SOURCE_STORE, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MULTI_LANGUAGE_PROPERTY, AXP_NAME_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_QUERY_OPTIONS_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMNS_PROPERTY, AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES, AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRIGGERS_PROPERTY, AXP_TRIGGERS_PROPERTY_GROUP, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, AXP_WIDGET_DEFINITION_PROVIDER, AXP_WIDGET_PROPERTY_GROUP, LOCAL_DATA_SOURCE_SHEET_BUFFER_ROWS, LOCAL_DATA_SOURCE_SHEET_MIN_ROWS, WIDGET_CASCADE_TRACE_NS, booleanDefaultProperty, buildLocalDataSourceListRows, buildQuerySelectorNode, buildQueryTabsNode, buildWidgetRegistryMapFromProviders, coerceGridProfile, coerceSpacingProfile, createDefaultLocalDataSourceColumns, createQueryOptionsProperty, createReadonlyLocalDataSourceStore, createWritableLocalDataSourceStore, ensureLocalDataSourceRowValues, findNonEmptyBreakpoints, isFlatSpacingBox, isLocalDataSourceRef, isLocalDataSourceRowEmpty, largeTextDefaultProperty, layoutSizeFromDevice, mapAXPPropertyToWidgetProperty, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, padLocalDataSourceSheetRows, parseLocalDataSourceId, plainTextDefaultProperty, readLocalDataSourcesFromNode, resolveWidgetModeComponent, richTextDefaultProperty, selectEditorDefaultValueProperty, selectionListEditorDefaultValueProperty, spacingBoxOrEmpty, toLocalDataSourceRef, toLocalDataSourceSheet };
1306
- export type { AXPBorderBox, AXPBorderBoxString, AXPBreakpointValues, AXPBreakpoints, AXPClassMap, AXPFlexBoxString, AXPFlexItemBoxString, AXPGridBoxString, AXPGridBreakpointValues, AXPGridItemBoxString, AXPLocalDataSource, AXPLocalDataSourceColumn, AXPLocalDataSourceItem, AXPLocalDataSourcePatch, AXPLocalDataSourceSheet, AXPLocalDataSourceStore, AXPPropertyCorners, AXPPropertyEditorCornerValues, AXPPropertyEditorSideGeneric, AXPPropertyEditorSideValues, AXPPropertySides, AXPSpacingBox, AXPSpacingBoxString, AXPStyleMap, AXPWidgetCoreElementAPI, AXPWidgetCoreElementAction, AXPWidgetCoreModuleConfigs, AXPWidgetDefinitionProvider, AXPWidgetRendererDirectiveOptions, MapAXPPropertyToWidgetPropertyOptions };
1355
+ export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnTruncatedTextComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnCellComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetSerializationHelper, AXP_ALLOW_CLEAR_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, AXP_ANIMATION_PROPERTY_GROUP, AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BETWEEN_VALIDATION_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_BOX_MODEL_PROPERTY_GROUP, AXP_CALLBACK_VALIDATION_PROPERTY, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_DEFAULT_ROW_COUNT_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_DIRECTION_PROPERTY, AXP_DISABLED_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_EMPTY_SPACING_BOX, AXP_EQUAL_VALIDATION_PROPERTY, AXP_FALSY_TEXT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_HAS_LABEL_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_LABEL_PROPERTY, AXP_LAYOUT_ADVANCED_GRID_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY, AXP_LAYOUT_FLEX_PROPERTY_GROUP, AXP_LAYOUT_GAP_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTY, AXP_LAYOUT_GRID_PROPERTIES, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_PROPERTY_GROUP, AXP_LAYOUT_GRID_ROW_PROPERTIES, AXP_LAYOUT_PROFILE, AXP_LAYOUT_ROWS_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_LOCAL_DATA_SOURCES_OPTION, AXP_LOCAL_DATA_SOURCE_PREFIX, AXP_LOCAL_DATA_SOURCE_STORE, AXP_MAX_LENGTH_VALIDATION_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MULTI_LANGUAGE_PROPERTY, AXP_NAME_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, AXP_PLACEHOLDER_PROPERTY, AXP_PREFETCH_PROPERTY, AXP_QUERY_OPTIONS_PROPERTY, AXP_READONLY_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_STYLING_PROPERTY_GROUP, AXP_TABLE_COLUMNS_PROPERTY, AXP_TABLE_COLUMN_ALIGNMENT_PROPERTIES, AXP_TABLE_COLUMN_CELL_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEADER_ALIGN_PROPERTY, AXP_TABLE_COLUMN_HEIGHT_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_TEXT_FIELD_PROPERTY, AXP_TEXT_PROPERTY, AXP_THEME_PROPERTY, AXP_TITLE_PROPERTY, AXP_TRIGGERS_PROPERTY, AXP_TRIGGERS_PROPERTY_GROUP, AXP_TRULY_TEXT_PROPERTY, AXP_VALIDATION_PROPERTY_GROUP, AXP_VALUE_FIELD_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, AXP_WIDGET_DEFINITION_PROVIDER, AXP_WIDGET_PROPERTY_GROUP, LOCAL_DATA_SOURCE_SHEET_BUFFER_ROWS, LOCAL_DATA_SOURCE_SHEET_MIN_ROWS, WIDGET_CASCADE_TRACE_NS, assumedValidationDisabled, booleanDefaultProperty, buildLocalDataSourceListRows, buildQuerySelectorNode, buildQueryTabsNode, buildWidgetRegistryMapFromProviders, coerceGridProfile, coerceSpacingProfile, collectAuthoredValidationRules, createDefaultLocalDataSourceColumns, createQueryOptionsProperty, createReadonlyLocalDataSourceStore, createWritableLocalDataSourceStore, ensureLocalDataSourceRowValues, findNonEmptyBreakpoints, isFlatSpacingBox, isLocalDataSourceRef, isLocalDataSourceRowEmpty, isRequiredRuleActive, largeTextDefaultProperty, layoutSizeFromDevice, mapAXPPropertyToWidgetProperty, numberDefaultProperty, numberMaxValueProperty, numberMinValueProperty, padLocalDataSourceSheetRows, parseLocalDataSourceId, plainTextDefaultProperty, readLocalDataSourcesFromNode, resolveValidationContextPath, resolveValidationDisabledFlags, resolveWidgetExposeHydrateWrites, resolveWidgetModeComponent, richTextDefaultProperty, selectEditorDefaultValueProperty, selectionListEditorDefaultValueProperty, spacingBoxOrEmpty, syncRequiredIndicator, toLocalDataSourceRef, toLocalDataSourceSheet, validationExpressionScope };
1356
+ export type { AXPBorderBox, AXPBorderBoxString, AXPBreakpointValues, AXPBreakpoints, AXPClassMap, AXPFlexBoxString, AXPFlexItemBoxString, AXPGridBoxString, AXPGridBreakpointValues, AXPGridItemBoxString, AXPLocalDataSource, AXPLocalDataSourceColumn, AXPLocalDataSourceItem, AXPLocalDataSourcePatch, AXPLocalDataSourceSheet, AXPLocalDataSourceStore, AXPPropertyCorners, AXPPropertyEditorCornerValues, AXPPropertyEditorSideGeneric, AXPPropertyEditorSideValues, AXPPropertySides, AXPSpacingBox, AXPSpacingBoxString, AXPStyleMap, AXPWidgetCoreElementAPI, AXPWidgetCoreElementAction, AXPWidgetCoreModuleConfigs, AXPWidgetDefinitionProvider, AXPWidgetExposeHydrateWrite, AXPWidgetExposeMapping, AXPWidgetRendererDirectiveOptions, MapAXPPropertyToWidgetPropertyOptions, RequiredStarNode, ResolveWidgetExposeHydrateWritesInput };
@@ -947,7 +947,6 @@ declare class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent<
947
947
  protected filterOperations: Signal<AXPFilterOperator[] | undefined>;
948
948
  protected operationsLook: Signal<AXPFilterOperationsLook>;
949
949
  protected selectedManualPreset: Signal<AXPDateTimeFilterPreset | undefined>;
950
- protected showTime: Signal<boolean>;
951
950
  protected minValue: Signal<string>;
952
951
  protected maxValue: Signal<string>;
953
952
  protected disabled: Signal<boolean>;
@@ -1010,6 +1009,8 @@ declare class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent<
1010
1009
  protected handleFilterValueChange(e: AXValueChangedEvent, type: 'from' | 'to' | 'self'): void;
1011
1010
  private translatePresets;
1012
1011
  private dateCompareUnit;
1012
+ private representsSameInstant;
1013
+ private toInstant;
1013
1014
  private normalizeFieldValue;
1014
1015
  private normalizeBoundValue;
1015
1016
  private toAxDateTime;
@@ -1695,8 +1696,12 @@ declare class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent
1695
1696
  protected placeholder: _angular_core.Signal<string>;
1696
1697
  protected hasClearButton: _angular_core.Signal<boolean>;
1697
1698
  protected allowSearch: _angular_core.Signal<boolean>;
1699
+ /** Loads ax-lookup data source on render (registry / AXDataSource only). */
1700
+ protected prefetch: _angular_core.Signal<boolean>;
1698
1701
  protected filter: _angular_core.Signal<AXDataSourceFilterOption>;
1699
1702
  protected filterMode: _angular_core.Signal<boolean>;
1703
+ /** When false, an empty cascade filter does not lock the editor. Explicit `disabled` is independent. */
1704
+ protected waitForCascade: _angular_core.Signal<boolean>;
1700
1705
  protected lookupMode: _angular_core.Signal<AXLookupMode>;
1701
1706
  /** Parent cascade with an empty value. Structurally empty filters and top-level not-in stay enabled. */
1702
1707
  protected hasPendingCascadeFilter: _angular_core.Signal<boolean>;
@@ -1740,6 +1745,8 @@ declare class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent
1740
1745
  * are resolved by the caller and stored according to strategy / filterMode.
1741
1746
  */
1742
1747
  private commitEditorChange;
1748
+ /** Fills empty expose targets from the resolved row without running triggers. */
1749
+ private exposeHydratedSelection;
1743
1750
  /**
1744
1751
  * When selection matches saved baseline, align expose targets (restore or remove paths absent from baseline).
1745
1752
  */
@@ -1819,6 +1826,12 @@ interface AXPSelectBoxWidgetDesignerOptions {
1819
1826
  placeholder?: string;
1820
1827
  hasClearButton?: boolean;
1821
1828
  allowSearch?: boolean;
1829
+ prefetch?: boolean;
1830
+ /**
1831
+ * When true (default), an empty cascade `filter` keeps the editor disabled until parent values exist.
1832
+ * Set false to load without waiting. Does not override `disabled: true`.
1833
+ */
1834
+ waitForCascade?: boolean;
1822
1835
  filter?: AXDataSourceFilterOption;
1823
1836
  expose?: any;
1824
1837
  }
@@ -1832,6 +1845,12 @@ interface AXPSelectBoxWidgetEditOptions {
1832
1845
  placeholder?: string;
1833
1846
  hasClearButton?: boolean;
1834
1847
  allowSearch?: boolean;
1848
+ prefetch?: boolean;
1849
+ /**
1850
+ * When true (default), an empty cascade `filter` keeps the editor disabled until parent values exist.
1851
+ * Set false to load without waiting. Does not override `disabled: true`.
1852
+ */
1853
+ waitForCascade?: boolean;
1835
1854
  filter?: AXDataSourceFilterOption;
1836
1855
  expose?: any;
1837
1856
  }
@@ -2959,6 +2978,10 @@ declare class AXPIntegrationConnectionsPanelWidgetEditComponent extends AXPValue
2959
2978
  private refreshConnectAvailability;
2960
2979
  protected getConnection(providerId: string): AXPSafeIntegrationConnectionDto | undefined;
2961
2980
  protected isProviderConnected(providerId: string): boolean;
2981
+ protected connectionStatusBadge(providerId: string): {
2982
+ key: string;
2983
+ color: 'success' | 'warning' | 'secondary';
2984
+ } | null;
2962
2985
  protected supportsConfigure(provider: AXPIntegrationProviderListItemDto): boolean;
2963
2986
  protected supportsConnect(provider: AXPIntegrationProviderListItemDto): boolean;
2964
2987
  protected getProviderBadges(providerId: string): ResolvedIntegrationSettingsBadge[];
@@ -290,6 +290,7 @@ declare function presenceDurationBucket(ms: number): AXPPresenceDurationBucket;
290
290
 
291
291
  declare class AXPUserPresenceService {
292
292
  private readonly connection;
293
+ private readonly userStatus;
293
294
  private readonly presenceByUserId;
294
295
  private readonly watchCounts;
295
296
  private readonly subjects;
@@ -313,6 +314,7 @@ declare class AXPUserPresenceService {
313
314
  private applyPresence;
314
315
  private scheduleFlush;
315
316
  private flush;
317
+ private dropAllWatches;
316
318
  private resubscribeAll;
317
319
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPUserPresenceService, never>;
318
320
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPUserPresenceService>;
@@ -322,13 +324,16 @@ declare class AXPUserPresenceIdleService {
322
324
  private readonly document;
323
325
  private readonly session;
324
326
  private readonly presence;
327
+ private readonly userStatus;
325
328
  private readonly destroyRef;
326
329
  private lastActivityAt;
327
330
  private lastActivityEmitAt;
328
331
  private idle;
329
332
  private checkTimer;
330
333
  private started;
334
+ private sessionStatus;
331
335
  constructor();
336
+ private syncLifecycle;
332
337
  start(): void;
333
338
  stop(): void;
334
339
  private readonly onActivity;