@acorex/platform 21.0.0-next.71 → 21.0.0-next.73

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 (60) hide show
  1. package/contracts/README.md +3 -0
  2. package/fesm2022/acorex-platform-auth.mjs +82 -60
  3. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  4. package/fesm2022/{acorex-platform-common-common-settings.provider-Bi1RYif5.mjs → acorex-platform-common-common-settings.provider-Ytey9uhY.mjs} +15 -1
  5. package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs.map +1 -0
  6. package/fesm2022/acorex-platform-common.mjs +3796 -1677
  7. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-contracts.mjs +10 -0
  9. package/fesm2022/acorex-platform-contracts.mjs.map +1 -0
  10. package/fesm2022/acorex-platform-core.mjs +1126 -114
  11. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +56 -170
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-components.mjs +254 -53
  15. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-designer.mjs +199 -126
  17. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  18. package/fesm2022/{acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs → acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs} +6 -1
  19. package/fesm2022/acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs.map +1 -0
  20. package/fesm2022/acorex-platform-layout-entity.mjs +403 -460
  21. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-layout-views.mjs +675 -301
  23. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs +126 -75
  25. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  26. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs} +2 -2
  27. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs.map} +1 -1
  28. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs} +2 -2
  29. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map} +1 -1
  30. package/fesm2022/acorex-platform-layout-widgets.mjs +450 -750
  31. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs +48 -0
  33. package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs +42 -0
  35. package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs.map +1 -0
  36. package/fesm2022/acorex-platform-themes-default.mjs +79 -35
  37. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  38. package/fesm2022/acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs.map +1 -1
  39. package/fesm2022/acorex-platform-themes-shared.mjs +3 -0
  40. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  41. package/fesm2022/acorex-platform-workflow.mjs +57 -54
  42. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  43. package/package.json +5 -1
  44. package/types/acorex-platform-auth.d.ts +31 -22
  45. package/types/acorex-platform-common.d.ts +892 -259
  46. package/types/acorex-platform-contracts.d.ts +39 -0
  47. package/types/acorex-platform-core.d.ts +291 -47
  48. package/types/acorex-platform-layout-builder.d.ts +10 -22
  49. package/types/acorex-platform-layout-components.d.ts +86 -14
  50. package/types/acorex-platform-layout-entity.d.ts +218 -212
  51. package/types/acorex-platform-layout-views.d.ts +125 -67
  52. package/types/acorex-platform-layout-widget-core.d.ts +56 -62
  53. package/types/acorex-platform-layout-widgets.d.ts +78 -65
  54. package/types/acorex-platform-themes-default.d.ts +14 -4
  55. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs +0 -31
  58. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs +0 -25
  60. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +0 -1
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Address mode type - determines the display mode of the address widget
3
+ * - simple: single text input for full address (one line)
4
+ * - popup: readonly summary + button to edit in popup dialog
5
+ * - expandable: expandable panel — collapsed shows full address, expanded shows inline form
6
+ */
7
+ type AXPAddressMode = 'simple' | 'popup' | 'expandable';
8
+ /**
9
+ * Address label option
10
+ */
11
+ interface AXPAddressLabel {
12
+ id: string;
13
+ name: string;
14
+ }
15
+ /**
16
+ * Address data structure
17
+ */
18
+ interface AXPAddressData {
19
+ street1: string;
20
+ street2?: string;
21
+ postalCode?: string;
22
+ coordinates?: string;
23
+ full: string;
24
+ label?: string;
25
+ country?: {
26
+ id?: string;
27
+ title?: string;
28
+ };
29
+ state?: {
30
+ id?: string;
31
+ title?: string;
32
+ };
33
+ city?: {
34
+ id?: string;
35
+ title?: string;
36
+ };
37
+ }
38
+
39
+ export type { AXPAddressData, AXPAddressLabel, AXPAddressMode };
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Type, InjectionToken, OnInit, ViewContainerRef, ModuleWithProviders, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges, OnDestroy, Injector, PipeTransform, Provider } from '@angular/core';
2
+ import { Type, InjectionToken, OnInit, ViewContainerRef, ModuleWithProviders, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges, OnDestroy, DestroyRef, Injector, PipeTransform, Provider } from '@angular/core';
3
3
  import { AXStyleColorType, AXDataSource, AXDataSourceSortOption, AXDataSourceFilterOption, AXStyleLookType, AXDataSourceQuery, AXDataSourceCallbackResult } from '@acorex/cdk/common';
4
4
  import { AXMultiLanguageString } from '@acorex/core/translation';
5
5
  import * as _ngrx_signals from '@ngrx/signals';
@@ -7,6 +7,12 @@ import * as _acorex_platform_core from '@acorex/platform/core';
7
7
  import { Observable } from 'rxjs';
8
8
  import { NavigationExtras } from '@angular/router';
9
9
 
10
+ /** Platform core datasource registry names. */
11
+ declare const AXPPlatformCoreDataSourceKeys: {
12
+ readonly ModuleManifests: "platform-module-manifests";
13
+ readonly CatalogScopes: "platform-catalog-scopes";
14
+ };
15
+
10
16
  /**
11
17
  * Additional suggested generic actions for future consideration:
12
18
  *
@@ -1193,6 +1199,87 @@ interface AXPFilterQuery extends Pick<AXPFilterDefinition, 'field' | 'value' | '
1193
1199
  displayText?: string;
1194
1200
  }
1195
1201
 
1202
+ /**
1203
+ * Normalized keyboard chord (e.g. `ctrl+f`, `arrowleft`, `f1`).
1204
+ * Modifiers and key are joined with `+`.
1205
+ */
1206
+ type AXPKeyboardShortcutChord = string;
1207
+ /** Priority tier — higher values win when multiple bindings match. */
1208
+ declare enum AXPKeyboardShortcutPriority {
1209
+ Global = 0,
1210
+ Page = 10,
1211
+ Panel = 20,
1212
+ Modal = 100
1213
+ }
1214
+ /**
1215
+ * How horizontal directional keys behave in RTL locale profiles (`activeProfile().i18nMeta?.rtl`).
1216
+ * - `physical`: arrow left always means left (grid navigation, etc.).
1217
+ * - `semantic`: arrows and `[` / `]` mirror so next/previous follow reading direction.
1218
+ */
1219
+ type AXPKeyboardShortcutDirectionBehavior = 'physical' | 'semantic';
1220
+ interface AXPKeyboardShortcutBinding {
1221
+ /**
1222
+ * One or more key chords that trigger this action.
1223
+ * Example: `['arrowleft', 'pageup']` or `['ctrl+f']`.
1224
+ */
1225
+ keys: AXPKeyboardShortcutChord[];
1226
+ /** i18n key (e.g. `@general:...`) or plain label for the help dialog. */
1227
+ title: string;
1228
+ /** Optional group label (i18n key or plain) for help dialog grouping. */
1229
+ group?: string;
1230
+ /** When true, fires even if focus is inside an editable field. Default false. */
1231
+ allowInEditableFields?: boolean;
1232
+ /** Optional runtime guard — binding is ignored when this returns false. */
1233
+ when?: () => boolean;
1234
+ /**
1235
+ * RTL handling for horizontal direction keys (`←`/`→`, `[`/`]`).
1236
+ * Omitted = auto (`semantic` for direction keys, `physical` otherwise). Set `physical` to opt out.
1237
+ */
1238
+ directionBehavior?: AXPKeyboardShortcutDirectionBehavior;
1239
+ handler: (event: KeyboardEvent) => void | Promise<void>;
1240
+ }
1241
+ /**
1242
+ * Declarative shortcut for menus, action items, and other config-driven bindings.
1243
+ * Use a chord string for defaults, or an object to override binding options (e.g. `allowInEditableFields`).
1244
+ */
1245
+ type AXPKeyboardShortcutConfig = Pick<AXPKeyboardShortcutBinding, 'allowInEditableFields' | 'when' | 'directionBehavior'> & {
1246
+ keys: AXPKeyboardShortcutChord | readonly AXPKeyboardShortcutChord[];
1247
+ };
1248
+ type AXPKeyboardShortcut = AXPKeyboardShortcutChord | AXPKeyboardShortcutConfig;
1249
+ /** Normalized declarative shortcut used when registering keyboard bindings. */
1250
+ interface AXPResolvedKeyboardShortcut {
1251
+ keys: AXPKeyboardShortcutChord[];
1252
+ allowInEditableFields?: boolean;
1253
+ when?: () => boolean;
1254
+ directionBehavior?: AXPKeyboardShortcutDirectionBehavior;
1255
+ }
1256
+ interface AXPKeyboardShortcutRegistration {
1257
+ /** Stable id for this registration scope (e.g. `task-board-navigator`). */
1258
+ id: string;
1259
+ /** Higher priority bindings win on conflict. */
1260
+ priority?: AXPKeyboardShortcutPriority | number;
1261
+ /** Scope label shown in the help dialog (i18n key or plain). */
1262
+ scope?: string;
1263
+ /** Default group for bindings without their own `group`. */
1264
+ group?: string;
1265
+ /** Optional runtime guard — registration is ignored when this returns false. */
1266
+ when?: () => boolean;
1267
+ shortcuts: AXPKeyboardShortcutBinding[];
1268
+ }
1269
+ /** Resolved entry for help UI. */
1270
+ interface AXPKeyboardShortcutHelpEntry {
1271
+ registrationId: string;
1272
+ bindingTitle: string;
1273
+ /** Raw chords for `ax-kbd-item` rendering (canonical registration). */
1274
+ chords: AXPKeyboardShortcutChord[];
1275
+ /** Chords adjusted for RTL display when `directionBehavior` is `semantic`. */
1276
+ displayChords: AXPKeyboardShortcutChord[];
1277
+ displayKeys: string;
1278
+ scope?: string;
1279
+ group?: string;
1280
+ priority: number;
1281
+ }
1282
+
1196
1283
  type AXPActionMenuItem = {
1197
1284
  name?: string;
1198
1285
  title: AXPMultiLanguageString;
@@ -1206,6 +1293,11 @@ type AXPActionMenuItem = {
1206
1293
  disabled?: boolean | string;
1207
1294
  visible?: boolean | string;
1208
1295
  policy?: string;
1296
+ /**
1297
+ * Keyboard shortcuts for this action.
1298
+ * Use a chord string or `{ keys, allowInEditableFields, ... }`. Pass `[]` to disable.
1299
+ */
1300
+ shortcuts?: AXPKeyboardShortcut[];
1209
1301
  };
1210
1302
  type AXPBackButton = {
1211
1303
  title: AXPMultiLanguageString;
@@ -1653,10 +1745,8 @@ declare class AXPDataSourceDefinitionProviderService implements AXPDataSourceDef
1653
1745
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPDataSourceDefinitionProviderService>;
1654
1746
  }
1655
1747
 
1656
- /** Data source name for select widgets listing registered catalog scopes. */
1657
- declare const PLATFORM_CATALOG_SCOPES_DATASOURCE_NAME = "platform-catalog-scopes";
1658
1748
  /**
1659
- * Registered catalog scopes for select / selection-list widgets via {@link PLATFORM_CATALOG_SCOPES_DATASOURCE_NAME}.
1749
+ * Registered catalog scopes for select / selection-list widgets via {@link AXPPlatformCoreDataSourceKeys.CatalogScopes}.
1660
1750
  */
1661
1751
  declare class AXPCatalogScopeDefinitionsDataSourceDefinition implements AXPDataSourceDefinitionProvider {
1662
1752
  private readonly catalogScopeRegistry;
@@ -1954,8 +2044,8 @@ interface AXPContextUpdateOptions {
1954
2044
  origin?: AXPContextUpdateOrigin;
1955
2045
  }
1956
2046
  interface AXPContextPatchOptions {
1957
- skipDirtyTracking?: boolean;
1958
- origin?: AXPContextUpdateOrigin;
2047
+ /** When true, updates the saved snapshot together with live data. */
2048
+ updateSaved?: boolean;
1959
2049
  }
1960
2050
  type AXPContextData = {
1961
2051
  [key: string]: any;
@@ -1967,41 +2057,42 @@ declare class AXPContextChangeEvent {
1967
2057
  state: AXPContextState;
1968
2058
  data: any;
1969
2059
  origin?: AXPContextUpdateOrigin;
1970
- /** Aggregated form dirty flag (user context paths + composite widget dirty). */
2060
+ /** Aggregated form dirty flag (context snapshot + composite widget dirty). */
1971
2061
  isFormDirty?: boolean;
1972
2062
  }
1973
2063
  declare const AXPContextStore: i0.Type<{
1974
2064
  data: i0.Signal<AXPContextData>;
1975
2065
  state: i0.Signal<AXPContextState>;
1976
- initialSnapshot: i0.Signal<{}>;
1977
- previousSnapshot: i0.Signal<{}>;
1978
- userDirtyPaths: i0.Signal<string[]>;
2066
+ savedSnapshot: i0.Signal<AXPContextData>;
2067
+ previousSnapshot: i0.Signal<AXPContextData>;
1979
2068
  lastChange: _ngrx_signals.DeepSignal<AXPContextChangeEvent>;
1980
2069
  isChanged: i0.Signal<boolean>;
1981
2070
  isReset: i0.Signal<boolean>;
1982
2071
  isInitiated: i0.Signal<boolean>;
1983
2072
  isEmpty: i0.Signal<boolean>;
2073
+ isSavedCommitted: i0.Signal<boolean>;
1984
2074
  isDirty: i0.Signal<boolean>;
1985
- isUserDirty: i0.Signal<boolean>;
1986
2075
  snapshot: i0.Signal<AXPContextData>;
1987
- initial: i0.Signal<{}>;
1988
- previous: i0.Signal<{}>;
2076
+ saved: i0.Signal<AXPContextData>;
2077
+ initial: i0.Signal<AXPContextData>;
2078
+ previous: i0.Signal<AXPContextData>;
1989
2079
  changeEvent: i0.Signal<AXPContextChangeEvent>;
1990
2080
  update: (path: string, value: any, options?: AXPContextUpdateOptions) => void;
1991
2081
  applyObjectPaths: (obj: Record<string, unknown>, options?: AXPContextUpdateOptions, prefix?: string) => void;
1992
- patch: (context: Record<string, any>, second?: boolean | AXPContextPatchOptions) => void;
2082
+ patch: (context: Record<string, any>, options?: AXPContextPatchOptions) => void;
2083
+ revertToSaved: () => void;
1993
2084
  reset: () => void;
1994
2085
  set: (initialData: any) => void;
1995
2086
  getValue: (path: string) => any;
2087
+ getSavedValue: (path: string) => any;
1996
2088
  hasValue: (path: string) => boolean;
1997
- commitBaseline: () => void;
1998
- clearUserDirtyPaths: () => void;
2089
+ commitSaved: () => void;
2090
+ applyParentBind: (merged: AXPContextData) => void;
1999
2091
  } & _ngrx_signals.StateSource<{
2000
2092
  data: AXPContextData;
2001
2093
  state: AXPContextState;
2002
- initialSnapshot: {};
2003
- previousSnapshot: {};
2004
- userDirtyPaths: string[];
2094
+ savedSnapshot: AXPContextData;
2095
+ previousSnapshot: AXPContextData;
2005
2096
  lastChange: AXPContextChangeEvent;
2006
2097
  }>>;
2007
2098
 
@@ -2035,35 +2126,36 @@ declare class AXPComponentSlotDirective implements OnInit {
2035
2126
  contextStore: {
2036
2127
  data: i0.Signal<AXPContextData>;
2037
2128
  state: i0.Signal<_acorex_platform_core.AXPContextState>;
2038
- initialSnapshot: i0.Signal<{}>;
2039
- previousSnapshot: i0.Signal<{}>;
2040
- userDirtyPaths: i0.Signal<string[]>;
2129
+ savedSnapshot: i0.Signal<AXPContextData>;
2130
+ previousSnapshot: i0.Signal<AXPContextData>;
2041
2131
  lastChange: _ngrx_signals.DeepSignal<_acorex_platform_core.AXPContextChangeEvent>;
2042
2132
  isChanged: i0.Signal<boolean>;
2043
2133
  isReset: i0.Signal<boolean>;
2044
2134
  isInitiated: i0.Signal<boolean>;
2045
2135
  isEmpty: i0.Signal<boolean>;
2136
+ isSavedCommitted: i0.Signal<boolean>;
2046
2137
  isDirty: i0.Signal<boolean>;
2047
- isUserDirty: i0.Signal<boolean>;
2048
2138
  snapshot: i0.Signal<AXPContextData>;
2049
- initial: i0.Signal<{}>;
2050
- previous: i0.Signal<{}>;
2139
+ saved: i0.Signal<AXPContextData>;
2140
+ initial: i0.Signal<AXPContextData>;
2141
+ previous: i0.Signal<AXPContextData>;
2051
2142
  changeEvent: i0.Signal<_acorex_platform_core.AXPContextChangeEvent>;
2052
2143
  update: (path: string, value: any, options?: _acorex_platform_core.AXPContextUpdateOptions) => void;
2053
2144
  applyObjectPaths: (obj: Record<string, unknown>, options?: _acorex_platform_core.AXPContextUpdateOptions, prefix?: string) => void;
2054
- patch: (context: Record<string, any>, second?: boolean | _acorex_platform_core.AXPContextPatchOptions) => void;
2145
+ patch: (context: Record<string, any>, options?: _acorex_platform_core.AXPContextPatchOptions) => void;
2146
+ revertToSaved: () => void;
2055
2147
  reset: () => void;
2056
2148
  set: (initialData: any) => void;
2057
2149
  getValue: (path: string) => any;
2150
+ getSavedValue: (path: string) => any;
2058
2151
  hasValue: (path: string) => boolean;
2059
- commitBaseline: () => void;
2060
- clearUserDirtyPaths: () => void;
2152
+ commitSaved: () => void;
2153
+ applyParentBind: (merged: AXPContextData) => void;
2061
2154
  } & _ngrx_signals.StateSource<{
2062
2155
  data: AXPContextData;
2063
2156
  state: _acorex_platform_core.AXPContextState;
2064
- initialSnapshot: {};
2065
- previousSnapshot: {};
2066
- userDirtyPaths: string[];
2157
+ savedSnapshot: AXPContextData;
2158
+ previousSnapshot: AXPContextData;
2067
2159
  lastChange: _acorex_platform_core.AXPContextChangeEvent;
2068
2160
  }>;
2069
2161
  isEmpty: i0.Signal<boolean>;
@@ -2402,6 +2494,142 @@ declare class AXPHookService {
2402
2494
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPHookService>;
2403
2495
  }
2404
2496
 
2497
+ /** Acorex overlay root (modal shell, popup, dialog). */
2498
+ declare const AX_OVERLAY_CONTAINER_SELECTOR = ".ax-overlay-container";
2499
+ /** Anchored widget panel inside an overlay (select, date picker, dropdown). */
2500
+ declare const AX_OVERLAY_PANE_SELECTOR = ".ax-overlay-pane";
2501
+ /**
2502
+ * True when a visible overlay layer is foreground (modal, popup, widget popover/picker).
2503
+ */
2504
+ declare function hasForegroundOverlayLayer(document: Document): boolean;
2505
+ /**
2506
+ * Returns visible anchored overlay panes (widget popovers/pickers).
2507
+ */
2508
+ declare function getVisibleAnchoredOverlayPanes(document: Document): HTMLElement[];
2509
+ /**
2510
+ * Visible anchored panes that are not contained by `excludeContainer` (e.g. dialog shell).
2511
+ */
2512
+ declare function getNestedVisibleOverlayPanes(document: Document, excludeContainer: HTMLElement | null): HTMLElement[];
2513
+ /**
2514
+ * Collects visible overlay containers in stacking order (later / higher z-index wins).
2515
+ */
2516
+ declare function getVisibleOverlayContainers(document: Document): HTMLElement[];
2517
+ /** Topmost visible overlay container, if any. */
2518
+ declare function getTopVisibleOverlayContainer(document: Document): HTMLElement | null;
2519
+ /** Nearest overlay container ancestor of `element`. */
2520
+ declare function findOverlayContainerAncestor(element: HTMLElement): HTMLElement | null;
2521
+ /**
2522
+ * Returns true when the overlay element is rendered and visible in the viewport.
2523
+ */
2524
+ declare function isVisibleOverlayElement(element: Element): boolean;
2525
+
2526
+ interface AXPKeyboardShortcutFormatOptions {
2527
+ directionBehavior?: AXPKeyboardShortcutDirectionBehavior;
2528
+ /** From `AXLocaleService.activeProfile().i18nMeta?.rtl`. */
2529
+ isRtl?: boolean;
2530
+ /** Chord was already passed through `resolveDisplayShortcutChord` (e.g. help `displayChords`). */
2531
+ skipDirectionResolve?: boolean;
2532
+ }
2533
+ /** Maps a horizontal direction key to its RTL semantic counterpart. */
2534
+ declare function mirrorHorizontalDirectionalKey(key: string): string;
2535
+ /** True when the chord's primary key is a horizontal direction key (`←`/`→`, `[`/`]`). */
2536
+ declare function isHorizontalDirectionalShortcutKey(key: string): boolean;
2537
+ /**
2538
+ * Resolves direction behavior for a chord.
2539
+ * Horizontal direction keys default to `semantic`; others default to `physical`.
2540
+ * An explicit binding value always wins.
2541
+ */
2542
+ declare function resolveEffectiveDirectionBehavior(chord: AXPKeyboardShortcutChord, explicit?: AXPKeyboardShortcutDirectionBehavior): AXPKeyboardShortcutDirectionBehavior;
2543
+ /** Resolves the key the user presses for a semantically registered chord in RTL. */
2544
+ declare function resolveSemanticDirectionalKey(storedKey: string, rtl: boolean): string;
2545
+ /** Chord string with directional key mirrored for RTL display/matching when semantic. */
2546
+ declare function resolveDisplayShortcutChord(chord: AXPKeyboardShortcutChord, isRtl: boolean, explicitDirectionBehavior?: AXPKeyboardShortcutDirectionBehavior): string;
2547
+ interface ParsedShortcut {
2548
+ ctrl: boolean;
2549
+ shift: boolean;
2550
+ alt: boolean;
2551
+ meta: boolean;
2552
+ key: string;
2553
+ }
2554
+ /**
2555
+ * Parses a shortcut chord such as `Enter`, `Escape`, or `ctrl+shift+s`.
2556
+ */
2557
+ declare function parseKeyboardShortcutChord(chord: AXPKeyboardShortcutChord): ParsedShortcut;
2558
+ /**
2559
+ * Returns true when the keyboard event matches the given chord.
2560
+ * On macOS, `ctrl+*` chords also match `meta+*` for common platform shortcuts.
2561
+ */
2562
+ declare function matchesKeyboardShortcutChord(event: KeyboardEvent, chord: AXPKeyboardShortcutChord, options?: AXPKeyboardShortcutFormatOptions): boolean;
2563
+ /**
2564
+ * Formats one chord for UI display (OS-aware modifier symbols).
2565
+ */
2566
+ declare function formatKeyboardShortcutChord(chord: AXPKeyboardShortcutChord, options?: AXPKeyboardShortcutFormatOptions): string;
2567
+ /**
2568
+ * Formats multiple chords as a single display string (e.g. `← / PgUp`).
2569
+ */
2570
+ declare function formatKeyboardShortcutChords(chords: readonly AXPKeyboardShortcutChord[], options?: AXPKeyboardShortcutFormatOptions): string;
2571
+ /** Maps a chord to `ax-kbd-item` key parts (modifiers + display symbols). */
2572
+ declare function chordToKbdItemKeys(chord: AXPKeyboardShortcutChord, options?: AXPKeyboardShortcutFormatOptions): string[];
2573
+ /**
2574
+ * When focus is in a native edit control, avoid stealing plain key shortcuts.
2575
+ */
2576
+ declare function isKeyboardTargetInsideEditableField(target: EventTarget | null): boolean;
2577
+ /**
2578
+ * Returns true when Esc should close an open widget overlay first (select, date picker, popover, modal).
2579
+ * Used by the global shortcut registry so page-level Esc bindings do not swallow overlay dismiss.
2580
+ */
2581
+ declare function shouldDeferEscapeToOpenOverlay(document: Document): boolean;
2582
+ declare function isMacPlatform(): boolean;
2583
+
2584
+ /**
2585
+ * Normalizes a declarative shortcut (`'ctrl+s'` or `{ keys: 'home', allowInEditableFields: false }`).
2586
+ */
2587
+ declare function normalizeKeyboardShortcut(shortcut: AXPKeyboardShortcut): AXPResolvedKeyboardShortcut | undefined;
2588
+ /**
2589
+ * Normalizes an array of declarative shortcuts. Empty or invalid entries are skipped.
2590
+ */
2591
+ declare function normalizeKeyboardShortcuts(shortcuts?: readonly AXPKeyboardShortcut[]): AXPResolvedKeyboardShortcut[];
2592
+ /** Returns the first chord from declarative shortcuts (for UI hints such as `ax-kbd`). */
2593
+ declare function getPrimaryKeyboardShortcutChord(shortcuts?: readonly AXPKeyboardShortcut[]): AXPKeyboardShortcutChord | undefined;
2594
+
2595
+ interface AXPKeyboardShortcutRegisterOptions extends AXPKeyboardShortcutRegistration {
2596
+ /** Auto-unregister when the owner is destroyed. */
2597
+ owner: DestroyRef;
2598
+ /** When set, shortcuts are active only while the element is connected to the document. */
2599
+ elementRef?: ElementRef<HTMLElement>;
2600
+ }
2601
+ declare class AXPKeyboardShortcutRegistry {
2602
+ private readonly document;
2603
+ private readonly localeService;
2604
+ private readonly activeProfile;
2605
+ private readonly registrations;
2606
+ private helpDialogHandler;
2607
+ private listenerAttached;
2608
+ /** Active shortcut entries for the help dialog. */
2609
+ readonly helpEntries: i0.Signal<AXPKeyboardShortcutHelpEntry[]>;
2610
+ /**
2611
+ * Registers a scope of shortcuts. Unregisters automatically when `owner` is destroyed.
2612
+ */
2613
+ register(options: AXPKeyboardShortcutRegisterOptions): void;
2614
+ /**
2615
+ * Wires the F1 help dialog opener (provided by platform/common).
2616
+ */
2617
+ setHelpDialogHandler(handler: () => void | Promise<void>): void;
2618
+ /** OS-aware display string for UI hints. */
2619
+ formatDisplayKeys(chords: readonly AXPKeyboardShortcutChord[]): string;
2620
+ private ensureHelpShortcutRegistered;
2621
+ private createRegistrationId;
2622
+ private unregister;
2623
+ private ensureListener;
2624
+ private readonly onDocumentKeyDown;
2625
+ private resolveActiveCandidates;
2626
+ private isRegistrationActive;
2627
+ private isRtlProfile;
2628
+ private buildHelpEntries;
2629
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPKeyboardShortcutRegistry, never>;
2630
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPKeyboardShortcutRegistry>;
2631
+ }
2632
+
2405
2633
  /**
2406
2634
  * Feature definition in module manifest.
2407
2635
  * Defines available features with default values.
@@ -2514,10 +2742,6 @@ interface AXPFeatureDefinition extends AXPModuleFeatureDefinition {
2514
2742
  key: string;
2515
2743
  }
2516
2744
 
2517
- /**
2518
- * Registered module manifests for select widgets via dataSource name {@link MODULE_MANIFESTS_DATASOURCE_NAME}.
2519
- */
2520
- declare const MODULE_MANIFESTS_DATASOURCE_NAME = "platform-module-manifests";
2521
2745
  /**
2522
2746
  * Data source definition for module names/titles from {@link AXPModuleManifestRegistry}.
2523
2747
  */
@@ -2709,6 +2933,16 @@ declare function sortByMultiLanguageString<T>(items: readonly T[], getValue: (it
2709
2933
  */
2710
2934
  declare function searchInMultiLanguageString(value: AXPMultiLanguageString | null | undefined, query: string, locale: string): boolean;
2711
2935
 
2936
+ /** Per-locale string map (`{ 'en-US': '...', 'fa-IR': '...' }`). */
2937
+ declare function isLocaleStringMap(value: unknown): value is Record<string, string>;
2938
+ /**
2939
+ * Use locale-map read/write when the option is on or live/saved data is already a map.
2940
+ * Auto-enables when API data is a map but the editor option was left off.
2941
+ */
2942
+ declare function shouldUseLocaleMapShape(localeMapOptionEnabled: boolean, current: unknown, saved: unknown): boolean;
2943
+ /** Updates one locale entry; preserves sibling locales from current or saved map. */
2944
+ declare function buildLocaleTextMapValue(current: unknown, saved: unknown, lang: string, input: string): Record<string, string> | null;
2945
+
2712
2946
  /**
2713
2947
  * Represents a tag with text, color, and metadata
2714
2948
  */
@@ -2909,16 +3143,6 @@ declare class AXPDeviceService {
2909
3143
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPDeviceService>;
2910
3144
  }
2911
3145
 
2912
- /**
2913
- * Returns whether `current` differs from the saved/clean `baseline` snapshot.
2914
- * Used by entity details pages, layout-builder dialogs, and {@link AXPContextStore}.
2915
- */
2916
- declare function isFormContextDirty(current: Record<string, unknown>, baseline: Record<string, unknown>): boolean;
2917
- /**
2918
- * Clones a context object for use as a dirty-tracking baseline.
2919
- */
2920
- declare function captureFormContextBaseline(context: Record<string, unknown>): Record<string, unknown>;
2921
-
2922
3146
  /**
2923
3147
  * Service for applying and resetting text highlighting within specified HTML elements.
2924
3148
  */
@@ -2982,6 +3206,26 @@ declare function getEnumValues(enumType: any): {
2982
3206
  id: string;
2983
3207
  title: string;
2984
3208
  }[];
3209
+ /**
3210
+ * Semantic equality for lookup/select values when restoring saved baseline shape.
3211
+ * Compares by selection identity (id), including two full items with the same id.
3212
+ */
3213
+ declare function isSelectionValueEqual(a: unknown, b: unknown): boolean;
3214
+ /**
3215
+ * Semantic equality for dirty-state and baseline checks.
3216
+ * Prefer over lodash `isEqual` when comparing user-edited form/context data to a saved baseline.
3217
+ *
3218
+ * Arrays: `[]`, `null`, and all-empty lists are equivalent; non-empty arrays compare as multisets (order ignored).
3219
+ */
3220
+ declare function isFormValueEqual(a: unknown, b: unknown): boolean;
3221
+ /**
3222
+ * Returns whether `current` differs from the saved/clean `baseline` snapshot.
3223
+ */
3224
+ declare function isFormContextDirty(current: Record<string, unknown>, baseline: Record<string, unknown>): boolean;
3225
+ /**
3226
+ * Clones a context object for use as a dirty-tracking baseline.
3227
+ */
3228
+ declare function captureFormContextBaseline(context: Record<string, unknown>): Record<string, unknown>;
2985
3229
 
2986
3230
  /**
2987
3231
  * Creates a provider instance within an injection context.
@@ -3053,5 +3297,5 @@ declare function containsHtmlMarkup(value: string | null | undefined): boolean;
3053
3297
  */
3054
3298
  declare function generateKebabCase(title: string): string;
3055
3299
 
3056
- export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPCatalogScopeDefinitionProviderService, AXPCatalogScopeDefinitionsDataSourceDefinition, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextDefinitionProviderService, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPModuleManifestsDataSourceDefinition, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_CONTEXT_DEFINITION_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, MODULE_MANIFESTS_DATASOURCE_NAME, PLATFORM_CATALOG_SCOPES_DATASOURCE_NAME, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, captureFormContextBaseline, cleanDeep, coerceUnknownToBoolean, coerceUnknownToDate, coerceUnknownToFiniteNumber, coerceUnknownToTrimmedString, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, isFormContextDirty, normalizeDefinitionCategories, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, searchInMultiLanguageString, setSmart, sortByMultiLanguageString, unwrapValueProperty };
3057
- export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCatalogScopeDefinition, AXPCatalogScopeDefinitionProvider, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPCategoryListItem, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPColumnWidthMatcher, AXPColumnWidthProvider, AXPCommandMessage, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextDefinition, AXPContextDefinitionAiHints, AXPContextDefinitionProvider, AXPContextPatchOptions, AXPContextState, AXPContextUpdateOptions, AXPContextUpdateOrigin, AXPDataSource, AXPDataSourceArray, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceSample, AXPDataSourceType, AXPDataSourceValue, AXPDataType, AXPDefinitionCategory, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityOp, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFeatureDefinition, AXPFeatureDefinitionProvider, AXPFeatureName, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPFilterTriggerDefinition, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPISessionService, AXPLazyDataSource, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMaybePromise, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPModuleFeatureDefinition, AXPModuleFeatureDefinitionWithKey, AXPModuleManifest, AXPMultiLanguageString, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPageStatus, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPProperty, AXPPropertyGroup, AXPPropertyInterface, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers, ColumnNameMatcher, ColumnWidthValue, IColumnWithWidth, WidgetTypeMatcher };
3300
+ export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPCatalogScopeDefinitionProviderService, AXPCatalogScopeDefinitionsDataSourceDefinition, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextDefinitionProviderService, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPKeyboardShortcutPriority, AXPKeyboardShortcutRegistry, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPModuleManifestsDataSourceDefinition, AXPPlatformCoreDataSourceKeys, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_CATALOG_SCOPE_DEFINITION_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_CONTEXT_DEFINITION_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, AX_OVERLAY_CONTAINER_SELECTOR, AX_OVERLAY_PANE_SELECTOR, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, buildLocaleTextMapValue, captureFormContextBaseline, chordToKbdItemKeys, cleanDeep, coerceUnknownToBoolean, coerceUnknownToDate, coerceUnknownToFiniteNumber, coerceUnknownToTrimmedString, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, findOverlayContainerAncestor, formatKeyboardShortcutChord, formatKeyboardShortcutChords, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getNestedVisibleOverlayPanes, getPrimaryKeyboardShortcutChord, getSmart, getSystemActions, getTopVisibleOverlayContainer, getVisibleAnchoredOverlayPanes, getVisibleOverlayContainers, hasForegroundOverlayLayer, isFormContextDirty, isFormValueEqual, isHorizontalDirectionalShortcutKey, isKeyboardTargetInsideEditableField, isLocaleStringMap, isMacPlatform, isSelectionValueEqual, isVisibleOverlayElement, matchesKeyboardShortcutChord, mirrorHorizontalDirectionalKey, normalizeDefinitionCategories, normalizeKeyboardShortcut, normalizeKeyboardShortcuts, objectKeyValueTransforms, parseKeyboardShortcutChord, provideLazyProvider, resolveActionLook, resolveDisplayShortcutChord, resolveEffectiveDirectionBehavior, resolvePlatformScopeKey, resolvePlatformScopeName, resolveSemanticDirectionalKey, searchInMultiLanguageString, setSmart, shouldDeferEscapeToOpenOverlay, shouldUseLocaleMapShape, sortByMultiLanguageString, unwrapValueProperty };
3301
+ export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCatalogScopeDefinition, AXPCatalogScopeDefinitionProvider, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPCategoryListItem, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPColumnWidthMatcher, AXPColumnWidthProvider, AXPCommandMessage, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextDefinition, AXPContextDefinitionAiHints, AXPContextDefinitionProvider, AXPContextPatchOptions, AXPContextState, AXPContextUpdateOptions, AXPContextUpdateOrigin, AXPDataSource, AXPDataSourceArray, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceSample, AXPDataSourceType, AXPDataSourceValue, AXPDataType, AXPDefinitionCategory, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityOp, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFeatureDefinition, AXPFeatureDefinitionProvider, AXPFeatureName, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPFilterTriggerDefinition, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPISessionService, AXPKeyboardShortcut, AXPKeyboardShortcutBinding, AXPKeyboardShortcutChord, AXPKeyboardShortcutConfig, AXPKeyboardShortcutDirectionBehavior, AXPKeyboardShortcutFormatOptions, AXPKeyboardShortcutHelpEntry, AXPKeyboardShortcutRegisterOptions, AXPKeyboardShortcutRegistration, AXPLazyDataSource, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMaybePromise, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPModuleFeatureDefinition, AXPModuleFeatureDefinitionWithKey, AXPModuleManifest, AXPMultiLanguageString, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPageStatus, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPProperty, AXPPropertyGroup, AXPPropertyInterface, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPResolvedKeyboardShortcut, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers, ColumnNameMatcher, ColumnWidthValue, IColumnWithWidth, WidgetTypeMatcher };
@@ -7,19 +7,20 @@ import { AXPWidgetNode, AXPWidgetRenderMode, AXPWidgetContainerComponent, AXPWid
7
7
  import { AXDataSource, AXComponentClosing } from '@acorex/cdk/common';
8
8
  import { AXPopupSizeType } from '@acorex/components/popup';
9
9
  import { AXStepWizardLook } from '@acorex/components/step-wizard';
10
- import { AXPActionMenuItem, AXPMultiLanguageString, AXPMetaData, AXPGridLayoutOptions, AXPExpression, AXPValidationRules, AXPOptionsData, AXPContextChangeEvent, AXPExecuteCommandResult } from '@acorex/platform/core';
10
+ import { AXPKeyboardShortcut, AXPKeyboardShortcutChord, AXPActionMenuItem, AXPMultiLanguageString, AXPMetaData, AXPGridLayoutOptions, AXPExpression, AXPValidationRules, AXPOptionsData, AXPContextChangeEvent, AXPExecuteCommandResult } from '@acorex/platform/core';
11
11
  import { AXBasePageComponent } from '@acorex/components/page';
12
12
  import { AXPCommand } from '@acorex/platform/runtime';
13
13
 
14
- type AXPDialogActionShortcut = string;
14
+ /** Resolved chord string used by dialog footer shortcut matching. */
15
+ type AXPDialogActionShortcut = AXPKeyboardShortcutChord;
15
16
  declare const DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS: readonly AXPDialogActionShortcut[];
16
17
  declare const DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS: readonly AXPDialogActionShortcut[];
17
18
  interface AXPDialogActionOptions {
18
19
  /**
19
- * Additional keyboard shortcuts for this action (e.g. `'ctrl+s'`).
20
+ * Additional keyboard shortcuts for this action (e.g. `'ctrl+s'` or `{ keys: 'ctrl+s' }`).
20
21
  * Merged with built-in defaults for `cancel` / `submit`. Pass `[]` to disable all shortcuts.
21
22
  */
22
- shortcuts?: AXPDialogActionShortcut[];
23
+ shortcuts?: AXPKeyboardShortcut[];
23
24
  }
24
25
 
25
26
  /**
@@ -461,10 +462,9 @@ type WidgetBuilderState = AXPWidgetNode & {
461
462
  type FormFieldBuilderState = AXPWidgetNode & {
462
463
  layout?: AXPGridLayoutOptions;
463
464
  };
464
- /** Dialog footer action item; extends menu actions with placement and keyboard shortcuts. */
465
+ /** Dialog footer action item; extends menu actions with placement. */
465
466
  type AXPDialogActionMenuItem = AXPActionMenuItem & {
466
467
  position?: 'prefix' | 'suffix';
467
- shortcuts?: AXPDialogActionShortcut[];
468
468
  };
469
469
  type DialogBuilderState = AXPWidgetNode & {
470
470
  layout?: AXPGridLayoutOptions;
@@ -943,7 +943,7 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
943
943
  private expressionEvaluator;
944
944
  private readonly commandService;
945
945
  private readonly hookService;
946
- private readonly dialogService;
946
+ private readonly unsavedChangesConfirm;
947
947
  private readonly overlayService;
948
948
  private readonly translationService;
949
949
  private readonly document;
@@ -951,18 +951,12 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
951
951
  private dialogResult?;
952
952
  /** Ensures `show()` resolves once when the dialog closes (footer action or header close). */
953
953
  private callbackInvoked;
954
- /** Baseline snapshot for dirty detection (captured once after init settles). */
955
- private dirtyBaseline?;
956
- /** True after the post-init baseline snapshot has been captured. */
957
- private dirtyBaselineCaptured;
958
- private dirtyBaselineIdleTimer?;
959
954
  /** Callback payload applied when a dismiss is allowed in {@link onClosing}. */
960
955
  private pendingDismissResolvePayload?;
961
956
  /** Skips dirty confirmation on the next {@link onClosing} (successful submit / programmatic close). */
962
957
  private skipNextOnClosingDirtyCheck;
963
- /** Prevents concurrent dismiss paths from opening multiple unsaved-changes confirms. */
964
- private dismissConfirmPromise?;
965
- private dirtyBaselineFallbackTimer?;
958
+ /** Blocks re-entrant {@link onClosing} while the first close gate is still resolving. */
959
+ private closeGateInProgress;
966
960
  private readonly destroyRef;
967
961
  context: _angular_core.WritableSignal<any>;
968
962
  callBack: (result: unknown) => void;
@@ -991,12 +985,7 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
991
985
  private requestDismiss;
992
986
  /** Invokes `show()` callback with the pending payload or a default cancel {@link AXPDialogRef}. */
993
987
  private completeDismissResolve;
994
- private getWidgetContextStore;
995
- private scheduleDirtyBaselineCapture;
996
- /**
997
- * Captures a dialog-local baseline once after widget init/normalization goes idle.
998
- */
999
- private captureDirtyBaselineIfNeeded;
988
+ private getWidgetContainer;
1000
989
  private layoutRenderer;
1001
990
  private debounceTimer?;
1002
991
  handleContextChanged(event: any): void;
@@ -1009,7 +998,6 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
1009
998
  executeAction(action: AXPWidgetCoreElementAction): Promise<void>;
1010
999
  private isDialogDirty;
1011
1000
  private confirmDismissIfDirty;
1012
- private promptUnsavedChangesConfirm;
1013
1001
  /** Whether the layout form should be validated before running this footer command. */
1014
1002
  private shouldValidateBeforeAction;
1015
1003
  /** True when a footer handler or command result asks to leave the dialog open (`keepDialogOpen` on the result or `result.data`). */