@ximatai/muyun-web-app 0.26.9 → 0.26.10

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 (70) hide show
  1. package/dist/{MetadataOrchestrationView-CzhAgEdX.js → MetadataOrchestrationView-BhtVwJII.js} +182 -182
  2. package/dist/{ModuleActionManagementView-CM2d8jPO.js → ModuleActionManagementView-DpZS-xAD.js} +70 -70
  3. package/dist/RoleAuthorizationView-8lilhtMB.js +646 -0
  4. package/dist/{RoleDetailWorkspaceView-CzaQ3Dz1.js → RoleDetailWorkspaceView-CFha6JHn.js} +1 -1
  5. package/dist/{RoleManagementView-nY7qu4GF.js → RoleManagementView-0_KDrzgh.js} +511 -514
  6. package/dist/index.css +1 -1
  7. package/dist/index.js +282 -302
  8. package/dist/{platform-components-CIi6GdC9.js → platform-components-oRIsIoxu.js} +2060 -1893
  9. package/dist/types/app/StaticRoutePageHost.vue.d.ts +2 -0
  10. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -2
  11. package/dist/types/consumer/index.d.ts +1 -1
  12. package/dist/types/dynamic-page-runtime/ManagedDetailRelationInlineSurface.vue.d.ts +3 -1
  13. package/dist/types/dynamic-page-runtime/ManagedDetailRelationSurface.vue.d.ts +2 -1
  14. package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +3 -1
  15. package/dist/types/dynamic-page-runtime/ModulePageListExpansionSurface.vue.d.ts +2 -1
  16. package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansion.vue.d.ts +2 -1
  17. package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansions.vue.d.ts +2 -1
  18. package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +3 -1
  19. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +7 -2
  20. package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +2 -0
  21. package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +69 -15
  22. package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +3 -2
  23. package/dist/types/dynamic-page-runtime/index.d.ts +2 -1
  24. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +35 -3
  25. package/dist/types/dynamic-page-runtime/navigatorEntrySelection.d.ts +18 -0
  26. package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +8 -0
  27. package/dist/types/dynamic-page-runtime/pageNavigatorItemModel.d.ts +13 -0
  28. package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +9 -8
  29. package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +6 -0
  30. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +4 -0
  31. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +2 -0
  32. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +5 -3
  33. package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +2 -0
  34. package/dist/types/platform-components/RecordFormFields.vue.d.ts +2 -2
  35. package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +2 -0
  36. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +2 -0
  37. package/dist/types/platform-components/RecordPicker.vue.d.ts +2 -0
  38. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +7 -1
  39. package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +2 -0
  40. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +4 -0
  41. package/dist/types/platform-components/index.d.ts +0 -2
  42. package/dist/types/platform-components/recordFormFieldModel.d.ts +16 -2
  43. package/dist/types/platform-components/recordPickerConstraints.d.ts +2 -0
  44. package/dist/types/platform-workbench/Workbench.vue.d.ts +4 -2
  45. package/dist/types/vue-ui-antdv/components/UiSidePanel.vue.d.ts +4 -2
  46. package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +2 -0
  47. package/dist/types/web-contracts/index.d.ts +72 -2
  48. package/dist/types/web-core/http.d.ts +6 -0
  49. package/dist/types/web-core/module/index.d.ts +1 -1
  50. package/dist/types/web-core/module/moduleContext.d.ts +2 -1
  51. package/dist/types/web-core/module/staticModuleClient.d.ts +6 -0
  52. package/dist/types/web-core/realtime.d.ts +8 -0
  53. package/dist/{workspaceViews-CkERhK0K.js → workspaceViews-D-RiJ64o.js} +3341 -3011
  54. package/package.json +1 -1
  55. package/dist/DictionaryManagementView-CtIQpqVA.js +0 -1035
  56. package/dist/MenuManagementView-DJhkN2sG.js +0 -837
  57. package/dist/RoleAuthorizationView-jn_WUCeg.js +0 -599
  58. package/dist/SystemUserDetailWorkspaceView-CBvqmWvP.js +0 -17
  59. package/dist/SystemUserManagementView-AEomKvK7.js +0 -887
  60. package/dist/currentUserContext-B1lj1WgF.js +0 -11
  61. package/dist/types/platform-components/scopedResourceTreeModuleContext.d.ts +0 -6
  62. package/dist/types/views/DictionaryManagementView.vue.d.ts +0 -3
  63. package/dist/types/views/MenuManagementView.vue.d.ts +0 -3
  64. package/dist/types/views/SystemUserDetailWorkspaceView.vue.d.ts +0 -7
  65. package/dist/types/views/SystemUserManagementView.vue.d.ts +0 -7
  66. package/dist/types/views/dictionaryManagementState.d.ts +0 -215
  67. package/dist/types/views/menuManagementState.d.ts +0 -180
  68. package/dist/types/views/systemUserDetailWorkspaceSession.d.ts +0 -12
  69. package/dist/types/views/systemUserDetailWorkspaceView.d.ts +0 -5
  70. package/dist/workspaceViewSessions-B5g4M0rT.js +0 -51
@@ -1,11 +1,12 @@
1
1
  export type RecordDetailMode = 'create' | 'edit' | 'view';
2
- export interface RecordDetailCreateOptions<TRecord> {
2
+ export type RecordDetailCancelDestination = 'close' | 'restore-view';
3
+ export interface RecordDetailTransitionOptions {
3
4
  /**
4
- * The already selected detail to reinstate if the user abandons this new
5
- * draft. It is deliberately held outside `record`: while creating, the
6
- * detail surface must not accidentally expose actions for the prior record.
5
+ * The detail surface to return to when the user cancels the operation.
6
+ * A row action starts an independent task and closes; an edit launched from
7
+ * an open detail returns to that detail view.
7
8
  */
8
- restoreRecord?: TRecord;
9
+ cancelDestination?: RecordDetailCancelDestination;
9
10
  }
10
11
  /**
11
12
  * State transitions shared by descriptor-driven record detail surfaces.
@@ -22,12 +23,12 @@ export declare function useRecordDetailController<TRecord extends Record<string,
22
23
  saving: import("vue").Ref<boolean, boolean>;
23
24
  togglingEnabled: import("vue").Ref<boolean, boolean>;
24
25
  formSessionKey: import("vue").Ref<number, number>;
25
- beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view">) => void;
26
+ beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view">, options?: RecordDetailTransitionOptions) => void;
26
27
  resolveLoad: (next: TRecord) => void;
27
28
  failLoad: () => void;
28
29
  finishLoad: () => void;
29
- beginCreate: (initial: TRecord, options?: RecordDetailCreateOptions<TRecord>) => void;
30
- beginEdit: () => boolean;
30
+ beginCreate: (initial: TRecord, options?: RecordDetailTransitionOptions) => void;
31
+ beginEdit: (options?: RecordDetailTransitionOptions) => boolean;
31
32
  cancelEdit: () => void;
32
33
  applySaved: (next: TRecord) => void;
33
34
  clearDeleted: () => void;
@@ -7,3 +7,9 @@ import type { ModulePageEnhancement } from '../dynamic-page-runtime/index';
7
7
  * Vue component or arbitrary client-side behavior.
8
8
  */
9
9
  export declare const platformModulePageEnhancement: ModulePageEnhancement;
10
+ /**
11
+ * Action management has no menu identity of its own. Its standard CRUD page is
12
+ * entered from exactly one governed platform module, which is the hidden and
13
+ * immutable navigator scope.
14
+ */
15
+ export declare const platformModuleActionPageEnhancement: ModulePageEnhancement;
@@ -12,6 +12,8 @@ type __VLS_Props = {
12
12
  * They are forwarded as standard query values rather than filtered in the browser.
13
13
  */
14
14
  externalQueryValues?: Record<string, unknown>;
15
+ navigatorHostModuleAlias?: string;
16
+ navigatorTargetLevelKey?: string;
15
17
  keyword?: string;
16
18
  emptyDescription?: string;
17
19
  loadingTip?: string;
@@ -43,6 +45,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
43
45
  mode: CrudRecordListMode;
44
46
  filterOption: (record: CrudRecordListBase, normalizedKeyword: string) => boolean;
45
47
  emptyDescription: string;
48
+ navigatorHostModuleAlias: string;
49
+ navigatorTargetLevelKey: string;
46
50
  selectedId: string;
47
51
  keyword: string;
48
52
  titleOf: (record: CrudRecordListBase) => string;
@@ -4,6 +4,7 @@ type __VLS_Props = {
4
4
  subtitle?: string;
5
5
  titleActionIcon?: UiIconName;
6
6
  titleActionTitle?: string;
7
+ titleActionDisabled?: boolean;
7
8
  };
8
9
  declare var __VLS_1: {}, __VLS_11: {}, __VLS_13: {};
9
10
  type __VLS_Slots = {} & {
@@ -21,6 +22,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
21
22
  subtitle: string;
22
23
  titleActionIcon: UiIconName;
23
24
  titleActionTitle: string;
25
+ titleActionDisabled: boolean;
24
26
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
27
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
28
  declare const _default: typeof __VLS_export;
@@ -3,8 +3,8 @@ import type { DrawerPromotion } from './drawerPromotion';
3
3
  type __VLS_Props = {
4
4
  open: boolean;
5
5
  title: string;
6
- /** Explicit page container for a locally scoped drawer. Omitted uses the active tab host. */
7
- container?: HTMLElement | null;
6
+ /** `inline` keeps slot anchors in the owning workspace; `portal` uses the standard side-panel host. */
7
+ renderMode?: 'inline' | 'portal';
8
8
  subtitle?: string;
9
9
  width?: number | string;
10
10
  scope?: UiSidePanelScope;
@@ -22,14 +22,16 @@ type __VLS_Slots = {
22
22
  };
23
23
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
24
24
  close: () => any;
25
+ afterClose: () => any;
25
26
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
26
27
  onClose?: (() => any) | undefined;
28
+ onAfterClose?: (() => any) | undefined;
27
29
  }>, {
28
30
  scope: UiSidePanelScope;
29
31
  width: number | string;
30
32
  subtitle: string;
31
33
  closeOnOutside: boolean;
32
- container: HTMLElement | null;
34
+ renderMode: "inline" | "portal";
33
35
  closeTitle: string;
34
36
  promotion: DrawerPromotion;
35
37
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  title: string;
3
+ subtitle?: string;
3
4
  refreshTitle?: string;
4
5
  searchKeyword?: string;
5
6
  searchPlaceholder?: string;
@@ -24,6 +25,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
24
25
  onRefresh?: (() => any) | undefined;
25
26
  "onUpdate:searchKeyword"?: ((keyword: string) => any) | undefined;
26
27
  }>, {
28
+ subtitle: string;
27
29
  searchPlaceholder: string;
28
30
  refreshTitle: string;
29
31
  searchKeyword: string;
@@ -25,13 +25,13 @@ type __VLS_Props = {
25
25
  };
26
26
  declare var __VLS_1: {
27
27
  field: RecordFormFieldState;
28
- }, __VLS_126: {
28
+ }, __VLS_134: {
29
29
  field: RecordFormFieldState;
30
30
  };
31
31
  type __VLS_Slots = {} & {
32
32
  'before-field'?: (props: typeof __VLS_1) => any;
33
33
  } & {
34
- 'after-field'?: (props: typeof __VLS_126) => any;
34
+ 'after-field'?: (props: typeof __VLS_134) => any;
35
35
  };
36
36
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
37
37
  "update:field": (fieldName: string, value: RecordFormFieldValue) => any;
@@ -47,6 +47,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
47
47
  close: () => any;
48
48
  edit: () => any;
49
49
  save: () => any;
50
+ afterClose: () => any;
50
51
  retry: () => any;
51
52
  reloadExternalChange: () => any;
52
53
  dismissExternalChange: () => any;
@@ -54,6 +55,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
54
55
  onClose?: (() => any) | undefined;
55
56
  onEdit?: (() => any) | undefined;
56
57
  onSave?: (() => any) | undefined;
58
+ onAfterClose?: (() => any) | undefined;
57
59
  onRetry?: (() => any) | undefined;
58
60
  onReloadExternalChange?: (() => any) | undefined;
59
61
  onDismissExternalChange?: (() => any) | undefined;
@@ -4,6 +4,7 @@ type __VLS_Props = {
4
4
  disabled?: boolean;
5
5
  loading?: boolean;
6
6
  danger?: boolean;
7
+ size?: 'small' | 'middle' | 'large';
7
8
  title?: string;
8
9
  ariaLabel?: string;
9
10
  iconName?: UiIconName;
@@ -20,6 +21,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
20
21
  type: "default" | "primary" | "dashed" | "link" | "text";
21
22
  title: string;
22
23
  danger: boolean;
24
+ size: "small" | "middle" | "large";
23
25
  disabled: boolean;
24
26
  loading: boolean;
25
27
  ariaLabel: string;
@@ -21,9 +21,11 @@ type __VLS_Props = {
21
21
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
22
  select: (record: RecordPickerRecord | undefined) => any;
23
23
  "update:value": (value: string | undefined) => any;
24
+ "selection-resolved": (record: RecordPickerRecord | undefined) => any;
24
25
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
25
26
  onSelect?: ((record: RecordPickerRecord | undefined) => any) | undefined;
26
27
  "onUpdate:value"?: ((value: string | undefined) => any) | undefined;
28
+ "onSelection-resolved"?: ((record: RecordPickerRecord | undefined) => any) | undefined;
27
29
  }>, {
28
30
  mode: RecordPickerMode;
29
31
  disabled: boolean;
@@ -1,5 +1,5 @@
1
1
  import { type Component } from 'vue';
2
- import type { QuerySchema, ResolvedViewFieldDescriptor } from '../web-contracts/index';
2
+ import type { QuerySchema, ResolvedPageListPersistentQueryControlDescriptor, ResolvedViewFieldDescriptor, ResolvedPageListQuerySummaryDescriptor } from '../web-contracts/index';
3
3
  import { type ModuleContext } from '../web-core/index';
4
4
  import { type RecordActionItem, type ResolvedRecordActionItem } from './recordActionBarModel';
5
5
  export type QueryListRecord = Record<string, unknown> & {
@@ -78,6 +78,10 @@ type __VLS_Props = {
78
78
  pageable?: boolean;
79
79
  ready?: boolean;
80
80
  externalQueryValues?: Record<string, unknown>;
81
+ /** Descriptor-owned controls rendered after quick search and before advanced filtering. */
82
+ persistentQueryControls?: ResolvedPageListPersistentQueryControlDescriptor[];
83
+ /** Descriptor-owned result-set facts rendered at the left of the list footer. */
84
+ querySummaries?: ResolvedPageListQuerySummaryDescriptor[];
81
85
  /** Descriptor-owned external criteria that must be exposed by the query schema. */
82
86
  requiredExternalCriteriaKeys?: string[];
83
87
  quickSearchPlaceholder?: string;
@@ -169,6 +173,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
169
173
  querySchema: QuerySchema;
170
174
  queryable: boolean;
171
175
  pageable: boolean;
176
+ persistentQueryControls: ResolvedPageListPersistentQueryControlDescriptor[];
177
+ querySummaries: ResolvedPageListQuerySummaryDescriptor[];
172
178
  requiredExternalCriteriaKeys: string[];
173
179
  quickSearchPlaceholder: string;
174
180
  waitingDescription: string;
@@ -4,6 +4,7 @@ type __VLS_Props = {
4
4
  /** Explains why this otherwise visible status control is unavailable. */
5
5
  disabledReason?: string;
6
6
  loading?: boolean;
7
+ size?: 'default' | 'small';
7
8
  showLabel?: boolean;
8
9
  };
9
10
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -12,6 +13,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
12
13
  onChange?: ((enabled: boolean) => any) | undefined;
13
14
  }>, {
14
15
  enabled: boolean;
16
+ size: "default" | "small";
15
17
  disabled: boolean;
16
18
  loading: boolean;
17
19
  disabledReason: string;
@@ -9,6 +9,8 @@ type __VLS_Props = {
9
9
  reloadKey?: number;
10
10
  /** Descriptor-owned criteria from upstream navigator levels. */
11
11
  externalQueryValues?: Record<string, unknown>;
12
+ navigatorHostModuleAlias?: string;
13
+ navigatorTargetLevelKey?: string;
12
14
  keyword?: string;
13
15
  searchMode?: TreeRecordSearchMode;
14
16
  searchTrigger?: 'inline' | 'external';
@@ -42,6 +44,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
42
44
  }>, {
43
45
  filterOption: (record: TreeRecordBase, normalizedKeyword: string) => boolean;
44
46
  emptyDescription: string;
47
+ navigatorHostModuleAlias: string;
48
+ navigatorTargetLevelKey: string;
45
49
  searchPlaceholder: string;
46
50
  selectedId: string;
47
51
  keyword: string;
@@ -82,7 +82,6 @@ export type { PlatformDateTimeDisplay, PlatformDateTimeOptions, PlatformDateTime
82
82
  export { applyReferenceDependencyClears, childResourceDefaultFormViewCode, resolveRecordDetailFields, resolveRecordFormFieldNames, resolveRecordBooleanStatusValue, resolveRecordFormFieldState, resolveRecordFormFields, evaluateUiFormula, recordFieldRendererRegistry, } from './recordFormFieldModel';
83
83
  export { createQueryScopedTreeModuleContext, createScopedTreeClient, createScopedTreeModuleContext, } from './scopedTreeModuleContext';
84
84
  export { createEmptyStaticTreeClient, createStaticTreeResourceModuleContext, } from './staticTreeResourceModuleContext';
85
- export { createScopedResourceTreeModuleContext } from './scopedResourceTreeModuleContext';
86
85
  export { presentPlatformError, presentPlatformMessage, presentPlatformSuccess, } from './platformErrorFeedback';
87
86
  export { handlePlatformActionSuccess, presentPlatformActionSuccess } from './platformActionResultFeedback';
88
87
  export { createPlatformActionResultReactionHandlers, mergePlatformActionResultReactionHandlers, platformActionResultReactions, platformActionResultReactionTypes, resolvePlatformActionResult, resolvePlatformActionResultMessage, withPlatformActionResultReactions, } from './platformActionResultReactions';
@@ -98,4 +97,3 @@ export type { StaticCrudCardMode, StaticCrudConfirmAction, StaticCrudManagementO
98
97
  export type { TreeRecordBase } from './treeRecordModel';
99
98
  export type { ScopedTreeModuleContextOptions } from './scopedTreeModuleContext';
100
99
  export type { StaticTreeResourceModuleContextOptions } from './staticTreeResourceModuleContext';
101
- export type { ScopedResourceTreeModuleContextOptions } from './scopedResourceTreeModuleContext';
@@ -14,6 +14,11 @@ export type RecordFormFieldDescriptor = (ViewFieldDefinition | ResolvedViewField
14
14
  valueType?: ViewFieldValueType;
15
15
  };
16
16
  export type RecordFormRecord = Record<string, unknown>;
17
+ /**
18
+ * Ephemeral, descriptor-authorized values from selected ONE references. These are deliberately
19
+ * separate from the draft because they describe the selected target, not fields owned by it.
20
+ */
21
+ export type RecordFormSelectionContext = Record<string, unknown>;
17
22
  /**
18
23
  * Applies the platform-owned consequence of changing a reference dependency.
19
24
  * The owner of a draft record calls this after accepting a field edit, so the
@@ -94,6 +99,8 @@ export interface RecordFormFieldState {
94
99
  pickerConfig?: RecordFormFieldPickerConfig;
95
100
  booleanStatus?: BooleanStatusPresentation;
96
101
  valuePresentation?: FieldValuePresentation;
102
+ /** Source field used while this nullable field is inheriting instead of overriding. */
103
+ overrideOf?: string;
97
104
  disabledHint?: string;
98
105
  placeholder?: string;
99
106
  options?: Option[];
@@ -111,7 +118,7 @@ export declare function resolveRecordFormFields(uiDescriptor: ResolvedModuleUiDe
111
118
  * navigator-provided scope), while avoiding editor-only controls in the standard detail grid.
112
119
  * Pages without an explicit display retain the existing editor-as-display fallback.
113
120
  */
114
- export declare function resolveRecordDetailFields(uiDescriptor: ResolvedModuleUiDescriptor | undefined): Map<string, RecordFormFieldDescriptor>;
121
+ export declare function resolveRecordDetailFields(uiDescriptor: ResolvedModuleUiDescriptor | undefined, resource?: string): Map<string, RecordFormFieldDescriptor>;
115
122
  export declare function resolveRecordFormGroups(uiDescriptor: ResolvedModuleUiDescriptor | undefined, resource?: string, editorSurface?: string): FormGroupDescriptor[];
116
123
  export declare function childResourceDefaultFormViewCode(resource: string): string;
117
124
  export declare function resolveRecordFormFieldState(fieldName: string, options?: {
@@ -120,8 +127,15 @@ export declare function resolveRecordFormFieldState(fieldName: string, options?:
120
127
  pickerConfigs?: Record<string, RecordFormFieldPickerConfig>;
121
128
  placeholderOf?: (fieldName: string, field: RecordFormFieldState) => string | undefined;
122
129
  record?: RecordFormRecord;
130
+ selectionContext?: RecordFormSelectionContext;
123
131
  }): RecordFormFieldState;
124
- export declare function evaluateUiFormula(formula: UiFormula, record: RecordFormRecord): boolean;
132
+ export declare function evaluateUiFormula(formula: UiFormula, record: RecordFormRecord, selectionContext?: RecordFormSelectionContext): boolean;
133
+ /**
134
+ * Produces the only reference-derived values that WEB_UI formulas may observe. The descriptor
135
+ * owns both the source field and relative target paths; browser code never infers a path from a
136
+ * candidate object. The first delivery supports ONE references only.
137
+ */
138
+ export declare function resolveReferenceSelectionContext(sourceField: string, reference: ResolvedReferenceFieldDescriptor | undefined, record: RecordPickerRecord | undefined): RecordFormSelectionContext;
125
139
  /**
126
140
  * Preserves an absent business value as unknown instead of treating it as true.
127
141
  * `enabledStatus` deliberately retains its separate lifecycle default semantics.
@@ -6,6 +6,8 @@ export interface RecordPickerRecord {
6
6
  enabled?: boolean;
7
7
  /** Server-authorized values applied after choosing this candidate. */
8
8
  affectPatch?: Record<string, unknown>;
9
+ /** Server-authorized target projections used only by the owning form's transient UI context. */
10
+ projections?: Record<string, unknown>;
9
11
  }
10
12
  export interface PickerConstraintContext<TRecord extends RecordPickerRecord> {
11
13
  records: TRecord[];
@@ -9,13 +9,13 @@ type __VLS_Props = {
9
9
  realtimeStatus?: WorkbenchRealtimeStatus;
10
10
  themeAppearance?: 'light' | 'dark';
11
11
  };
12
- declare var __VLS_80: {
12
+ declare var __VLS_82: {
13
13
  activeTab: MenuTab;
14
14
  target: MenuNavigationTarget | undefined;
15
15
  pageDescriptor: PageDescriptor | undefined;
16
16
  };
17
17
  type __VLS_Slots = {} & {
18
- default?: (props: typeof __VLS_80) => any;
18
+ default?: (props: typeof __VLS_82) => any;
19
19
  };
20
20
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
21
21
  closeTabs: (keys: string[]) => any;
@@ -25,6 +25,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
25
25
  closeTab: (key: string) => any;
26
26
  toggleTabLock: (key: string) => any;
27
27
  reorderTabs: (keys: string[]) => any;
28
+ refreshPage: (key: string) => any;
28
29
  "update:activeTabKey": (key: string) => any;
29
30
  userCommand: (key: string) => any;
30
31
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
@@ -35,6 +36,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
35
36
  onCloseTab?: ((key: string) => any) | undefined;
36
37
  onToggleTabLock?: ((key: string) => any) | undefined;
37
38
  onReorderTabs?: ((keys: string[]) => any) | undefined;
39
+ onRefreshPage?: ((key: string) => any) | undefined;
38
40
  "onUpdate:activeTabKey"?: ((key: string) => any) | undefined;
39
41
  onUserCommand?: ((key: string) => any) | undefined;
40
42
  }>, {
@@ -5,14 +5,16 @@ type __VLS_Props = {
5
5
  closeOnOutside?: boolean;
6
6
  scope?: UiSidePanelScope;
7
7
  };
8
- declare var __VLS_10: {};
8
+ declare var __VLS_11: {};
9
9
  type __VLS_Slots = {} & {
10
- default?: (props: typeof __VLS_10) => any;
10
+ default?: (props: typeof __VLS_11) => any;
11
11
  };
12
12
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
13
  close: () => any;
14
+ afterClose: () => any;
14
15
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
16
  onClose?: (() => any) | undefined;
17
+ onAfterClose?: (() => any) | undefined;
16
18
  }>, {
17
19
  scope: UiSidePanelScope;
18
20
  width: number | string;
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  checked?: boolean;
3
3
  disabled?: boolean;
4
4
  loading?: boolean;
5
+ size?: 'default' | 'small';
5
6
  checkedText?: string;
6
7
  uncheckedText?: string;
7
8
  };
@@ -12,6 +13,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
12
13
  "onUpdate:checked"?: ((checked: boolean) => any) | undefined;
13
14
  onChange?: ((checked: boolean) => any) | undefined;
14
15
  }>, {
16
+ size: "default" | "small";
15
17
  disabled: boolean;
16
18
  loading: boolean;
17
19
  checked: boolean;
@@ -19,6 +19,12 @@ export interface WebPageResponse<T> {
19
19
  pages: number;
20
20
  totalKnown: boolean;
21
21
  navigation?: unknown;
22
+ summaries?: WebListQuerySummaryItem[];
23
+ }
24
+ /** Value of one footer summary for the complete result set of the current list query. */
25
+ export interface WebListQuerySummaryItem {
26
+ key: string;
27
+ value: unknown;
22
28
  }
23
29
  export declare const webDataChangeTypes: {
24
30
  readonly recordCreated: "record-created";
@@ -409,7 +415,7 @@ export type MenuScopeType = 'system' | 'tenant' | 'organization';
409
415
  export interface MenuScheme extends StandardEnabledSortableEntity {
410
416
  alias?: string;
411
417
  scopeType?: MenuScopeType;
412
- scopeId?: string;
418
+ organizationId?: string;
413
419
  }
414
420
  export interface ModuleMenuTarget {
415
421
  menuId: string;
@@ -550,6 +556,9 @@ export interface WebQueryRequest {
550
556
  quickSearch?: string;
551
557
  quickSearchFields?: string[];
552
558
  externalQueryValues?: Record<string, unknown>;
559
+ /** Host page and target level for a navigator REFERENCE query. */
560
+ navigatorHostModuleAlias?: string;
561
+ navigatorTargetLevelKey?: string;
553
562
  }
554
563
  /** Shared field-reference delivery contract for static and metadata-backed modules. */
555
564
  export type WebReferenceResolveMode = 'QUERY' | 'TREE' | 'TRANSLATE';
@@ -574,6 +583,14 @@ export interface WebReferenceResolveRequest {
574
583
  uiConfigId?: string;
575
584
  queryTemplateId?: string;
576
585
  externalQueryValues?: Record<string, unknown>;
586
+ /**
587
+ * Host page that owns this navigator reference request. Reference transports
588
+ * use it only to resolve the declared NAVIGATOR_QUERY bindings; ordinary
589
+ * module queries deliberately ignore it.
590
+ */
591
+ navigatorHostModuleAlias?: string;
592
+ /** Navigator level in the host page whose source is being queried. */
593
+ navigatorTargetLevelKey?: string;
577
594
  }
578
595
  export interface WebReferenceResolveItem {
579
596
  id: string;
@@ -682,6 +699,8 @@ export interface ViewFieldDefinition {
682
699
  maxDisplayLines?: number;
683
700
  /** User-facing title for the standard tree root sentinel in a detail field. */
684
701
  treeRootTitle?: string;
702
+ /** Nullable field inherits this source field until an explicit override is selected. */
703
+ overrideOf?: string;
685
704
  }
686
705
  /** Semantic group that owns a contiguous set of standard-form fields. */
687
706
  export interface FormGroupDescriptor {
@@ -731,6 +750,8 @@ export interface ResolvedViewFieldDescriptor {
731
750
  fixed?: boolean;
732
751
  booleanStatus?: BooleanStatusPresentation;
733
752
  treeRootTitle?: string;
753
+ /** Nullable field inherits this source field until an explicit override is selected. */
754
+ overrideOf?: string;
734
755
  option?: ResolvedOptionFieldDescriptor;
735
756
  reference?: ResolvedReferenceFieldDescriptor;
736
757
  referenceSummary?: ResolvedReferenceSummaryFieldDescriptor;
@@ -756,6 +777,19 @@ export interface ResolvedReferenceFieldDescriptor {
756
777
  candidateDependencies?: ReferenceCandidateDependency[];
757
778
  /** Read-side title projection for this scalar reference, when supplied by the server. */
758
779
  titleField?: string;
780
+ /**
781
+ * Explicitly authorized target-field paths available after choosing this ONE reference.
782
+ * Paths are relative to this reference field; the form runtime prefixes them with the
783
+ * descriptor-owned source field name before exposing them to WEB_UI formulas.
784
+ */
785
+ selectionProjections?: ResolvedReferenceSelectionProjectionDescriptor[];
786
+ }
787
+ /**
788
+ * A declared projection below a record-picker target. Every non-terminal segment is a declared
789
+ * ONE reference; the terminal segment is the selected value delivered by the server.
790
+ */
791
+ export interface ResolvedReferenceSelectionProjectionDescriptor {
792
+ path: string[];
759
793
  }
760
794
  export interface ReferenceCandidateDependency {
761
795
  sourceField: string;
@@ -813,11 +847,12 @@ export type ModulePageTemplate = 'FLAT_MANAGEMENT' | 'LIST_DETAIL_CARD' | 'TREE_
813
847
  export interface ResolvedPageExplorerDescriptor {
814
848
  title: string;
815
849
  searchPlaceholder: string;
850
+ /** Optional record field rendered as the compact navigator secondary identity. */
851
+ secondaryField?: string;
816
852
  emptyDescription: string;
817
853
  recordLabel: string;
818
854
  fallbackTitle: string;
819
855
  titleField: string;
820
- secondaryField?: string;
821
856
  mutedWhenDisabled: boolean;
822
857
  }
823
858
  export interface ResolvedPageNavigatorDescriptor {
@@ -830,6 +865,8 @@ export interface ResolvedPageNavigatorLevelDescriptor {
830
865
  sourceModuleAlias: string;
831
866
  title: string;
832
867
  searchPlaceholder: string;
868
+ /** Optional record field rendered as the compact navigator secondary identity. */
869
+ secondaryField?: string;
833
870
  /** Presentation policy applied after the source has authoritatively loaded. */
834
871
  singleResultPolicy?: 'NONE' | 'AUTO_SELECT' | 'AUTO_SELECT_AND_HIDE';
835
872
  /** Explicit initial selection policy; omitted means the navigator starts unselected. */
@@ -850,6 +887,11 @@ export interface ResolvedPageContextBindingDescriptor {
850
887
  targetNavigatorLevelKey?: string;
851
888
  /** Field name of the record picker which receives this query context. */
852
889
  targetPickerFieldKey?: string;
890
+ /**
891
+ * Only applies to NAVIGATOR -> LIST_QUERY. Omitted descriptors remain required for backwards
892
+ * compatibility with previously published page definitions.
893
+ */
894
+ navigatorListQueryMode?: 'REQUIRED_SCOPE' | 'OPTIONAL_FILTER';
853
895
  }
854
896
  export interface ResolvedPageNavigatorManagementDescriptor {
855
897
  /** Optional named source-module form; the default editor is used when omitted. */
@@ -860,6 +902,21 @@ export interface ResolvedPageListDescriptor {
860
902
  fields: ResolvedViewDescriptor;
861
903
  /** Read-only placements of declared aggregate relations beneath an expanded list row. */
862
904
  relationExpansions?: ResolvedPageListRelationExpansionDescriptor[];
905
+ persistentQueryControls?: ResolvedPageListPersistentQueryControlDescriptor[];
906
+ querySummaries?: ResolvedPageListQuerySummaryDescriptor[];
907
+ }
908
+ export interface ResolvedPageListQuerySummaryDescriptor {
909
+ key: string;
910
+ title: string;
911
+ source: 'MATCHED_COUNT' | 'CONTRIBUTOR';
912
+ contributorKey?: string;
913
+ }
914
+ /** A persistent boolean query control rendered after search and before advanced filtering. */
915
+ export interface ResolvedPageListPersistentQueryControlDescriptor {
916
+ externalCriteriaKey: string;
917
+ title: string;
918
+ uiType: 'SWITCH';
919
+ defaultValue: boolean;
863
920
  }
864
921
  export interface ResolvedPageListRelationExpansionDescriptor {
865
922
  relationCode: string;
@@ -884,9 +941,22 @@ export interface ResolvedModulePageDescriptor {
884
941
  explorer?: ResolvedPageExplorerDescriptor;
885
942
  navigator?: ResolvedPageNavigatorDescriptor;
886
943
  list?: ResolvedPageListDescriptor;
944
+ /** Declared action-contribution tree rendered as the main TREE_MANAGEMENT resource. */
945
+ treeResource?: ResolvedPageTreeResourceDescriptor;
887
946
  detail: ResolvedPageDetailDescriptor;
888
947
  traits: ('STANDARD_CRUD' | 'ENABLED_STATUS' | 'RECYCLE_BIN' | 'RESPONSIVE_DETAIL_SURFACE')[];
889
948
  }
949
+ export interface ResolvedPageTreeResourceDescriptor {
950
+ resource: string;
951
+ scopeNavigatorKey: string;
952
+ scopeField: string;
953
+ /** Optional exact-value condition on the selected navigator record. */
954
+ scopeRecordField?: string;
955
+ scopeRecordEquals?: string;
956
+ title: string;
957
+ emptyDescription: string;
958
+ createTitle: string;
959
+ }
890
960
  export interface ResolvedUiActionConfirmationDescriptor {
891
961
  mode: 'typedText';
892
962
  requiredField: string;
@@ -18,6 +18,12 @@ export interface HttpRequestOptions {
18
18
  export interface HttpClient {
19
19
  request<T>(options: HttpRequestOptions): Promise<T>;
20
20
  }
21
+ /**
22
+ * Narrows an existing client to one trusted request context without teaching
23
+ * module clients about a particular page, menu, or business domain.
24
+ */
25
+ export declare function withHttpHeaders(client: StreamingHttpClient, headers: Record<string, string | undefined> | (() => Record<string, string | undefined>), appliesTo?: (request: HttpRequestOptions) => boolean): StreamingHttpClient;
26
+ export declare function withHttpHeaders(client: HttpClient, headers: Record<string, string | undefined> | (() => Record<string, string | undefined>), appliesTo?: (request: HttpRequestOptions) => boolean): HttpClient;
21
27
  /**
22
28
  * Optional capability implemented by HTTP clients that can open a response body
23
29
  * as a stream. Keeping it separate preserves compatibility with application
@@ -1,6 +1,6 @@
1
1
  export * from './abilityCodes';
2
2
  export * from './recycleBin';
3
3
  export * from './staticModuleClient';
4
- export type { ModuleActionState, ModuleRuntimeAction, ModuleRuntimeContext, ModuleRuntimeContextState, } from './runtimeContext';
4
+ export type { ModuleActionState, ModuleRecordActionAvailability, ModuleRuntimeAction, ModuleRuntimeContext, ModuleRuntimeContextState, } from './runtimeContext';
5
5
  export type { ModuleAbilityClients, ModuleAbilities } from './abilities';
6
6
  export * from './moduleContext';
@@ -1,7 +1,7 @@
1
1
  import type { HttpClient } from '../http';
2
2
  import { type ModuleAbilities } from './abilities';
3
3
  import { type ModuleActionState, type ModuleRecordActionAvailability, type ModuleRuntimeAction, type ModuleRuntimeContextState } from './runtimeContext';
4
- import { type ModuleCrudClient, type ModuleTreeClient } from './staticModuleClient';
4
+ import { type NavigatorReferenceRequestContext, type ModuleCrudClient, type ModuleTreeClient } from './staticModuleClient';
5
5
  export interface ModuleContext<TRecord> {
6
6
  moduleAlias: string;
7
7
  http: HttpClient;
@@ -26,6 +26,7 @@ export interface ModuleContextConfig {
26
26
  export interface ModuleContextOptions extends ModuleContextConfig {
27
27
  moduleAlias: string;
28
28
  runtimeAccess?: 'MENU' | 'REFERENCE';
29
+ navigatorReference?: NavigatorReferenceRequestContext;
29
30
  }
30
31
  export declare function configureModuleContext(config: ModuleContextConfig): void;
31
32
  export declare function provideModuleContextConfig(config: ModuleContextConfig): void;
@@ -60,6 +60,7 @@ export declare function createModuleCrudClient<TRecord>(http: HttpClient, option
60
60
  /** The navigation-only read surface deliberately does not reuse the module query endpoint. */
61
61
  export declare function createNavigatorReferenceCrudClient<TRecord>(http: HttpClient, options: {
62
62
  moduleAlias: string;
63
+ navigatorReference?: NavigatorReferenceRequestContext;
63
64
  }): ModuleCrudClient<TRecord>;
64
65
  export declare function createStaticResourceCrudClient<TRecord>(http: HttpClient, resourcePath: string): ModuleCrudClient<TRecord>;
65
66
  export declare function createModuleTreeClient<TRecord>(http: HttpClient, options: {
@@ -67,7 +68,12 @@ export declare function createModuleTreeClient<TRecord>(http: HttpClient, option
67
68
  }): ModuleTreeClient<TRecord>;
68
69
  export declare function createNavigatorReferenceTreeClient<TRecord>(http: HttpClient, options: {
69
70
  moduleAlias: string;
71
+ navigatorReference?: NavigatorReferenceRequestContext;
70
72
  }): ModuleTreeClient<TRecord>;
73
+ export interface NavigatorReferenceRequestContext {
74
+ hostModuleAlias: string;
75
+ targetLevelKey: string;
76
+ }
71
77
  export declare function createStaticResourceTreeClient<TRecord>(http: HttpClient, resourcePath: string): ModuleTreeClient<TRecord>;
72
78
  /** @deprecated Use ModuleCrudClient. Remove after static-prefixed consumer imports migrate. */
73
79
  export type StaticModuleCrudClient<TRecord> = ModuleCrudClient<TRecord>;
@@ -23,8 +23,16 @@ export interface RealtimeClient {
23
23
  state(): RealtimeConnectionState;
24
24
  }
25
25
  export interface RealtimeClientOptions {
26
+ /**
27
+ * Backend API base URL. The default WebSocket endpoint is resolved relative
28
+ * to this path, so an API mounted at `/api` connects to `/api/ws/platform`.
29
+ */
26
30
  baseUrl?: string;
27
31
  token?: string;
32
+ /**
33
+ * WebSocket endpoint relative to {@link baseUrl}. A root-relative or
34
+ * absolute URL remains an explicit override for deployments that need it.
35
+ */
28
36
  brokerPath?: string;
29
37
  reconnectDelay?: number;
30
38
  heartbeatIncoming?: number;