@ximatai/muyun-web-app 0.26.11 → 0.26.13

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 (221) hide show
  1. package/dist/BusinessActivityLogView-UC4rH4Fn.js +16 -0
  2. package/dist/BusinessLogListDrawer-BtaXVJKz.js +564 -0
  3. package/dist/LoginAuditLogView-Cjrp8MKX.js +16 -0
  4. package/dist/ModuleActionManagementView-Dkb35QXc.js +673 -0
  5. package/dist/ModuleGovernanceView-Dx43QvGf.js +28651 -0
  6. package/dist/RequestErrorLogView-WnGvMWiF.js +16 -0
  7. package/dist/RoleDetailWorkspaceView-DPDb_QOn.js +1397 -0
  8. package/dist/RuntimeLogView-BRl4ZDkU.js +330 -0
  9. package/dist/http-B0TC0pJB.js +157 -0
  10. package/dist/index.css +1 -1
  11. package/dist/index.js +1938 -325
  12. package/dist/moduleGovernanceWorkspaceView-4V_UW-Bt.js +40 -0
  13. package/dist/platform-components-1cvOeHmo.js +17854 -0
  14. package/dist/platform-workbench-Cu14Xd9d.js +10299 -0
  15. package/dist/rolldown-runtime-DPVXH0ON.js +17 -0
  16. package/dist/types/app/CurrentUserProfileDialog.vue.d.ts +0 -2
  17. package/dist/types/app/LoginView.vue.d.ts +1 -1
  18. package/dist/types/app/workbenchRouteSync.d.ts +10 -1
  19. package/dist/types/app/workbenchSessionTabs.d.ts +22 -0
  20. package/dist/types/app/workbenchStartup.d.ts +7 -0
  21. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -1
  22. package/dist/types/consumer/index.d.ts +8 -0
  23. package/dist/types/dynamic-page-runtime/ModulePageBusinessSession.d.ts +2208 -0
  24. package/dist/types/dynamic-page-runtime/ModulePageBusinessState.vue.d.ts +11 -0
  25. package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +1 -1
  26. package/dist/types/dynamic-page-runtime/ModulePageHost.vue.d.ts +32 -5
  27. package/dist/types/dynamic-page-runtime/ModulePageHostRuntime.vue.d.ts +4431 -0
  28. package/dist/types/dynamic-page-runtime/ModulePageHostSession.vue.d.ts +43 -0
  29. package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +2 -2
  30. package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +20 -0
  31. package/dist/types/dynamic-page-runtime/ModuleReferenceRecordDetailBrowser.vue.d.ts +42 -0
  32. package/dist/types/dynamic-page-runtime/NavigatorPanelActions.vue.d.ts +22 -0
  33. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +11 -11
  34. package/dist/types/dynamic-page-runtime/RecordFormSurface.vue.d.ts +2 -2
  35. package/dist/types/dynamic-page-runtime/TenantScopeExplorer.vue.d.ts +21 -0
  36. package/dist/types/dynamic-page-runtime/childAggregateContext.d.ts +11 -0
  37. package/dist/types/dynamic-page-runtime/composables/useModulePageActions.d.ts +1 -1
  38. package/dist/types/dynamic-page-runtime/composables/useModulePageDetailActionRuntime.d.ts +5 -0
  39. package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +81 -26
  40. package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +1 -1
  41. package/dist/types/dynamic-page-runtime/formActionResult.d.ts +7 -0
  42. package/dist/types/dynamic-page-runtime/formComputeCoordinator.d.ts +7 -4
  43. package/dist/types/dynamic-page-runtime/formValidationCoordinator.d.ts +17 -0
  44. package/dist/types/dynamic-page-runtime/index.d.ts +3 -1
  45. package/dist/types/dynamic-page-runtime/inputValidationActionStatus.d.ts +20 -0
  46. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +13 -3
  47. package/dist/types/dynamic-page-runtime/modulePageUnsavedState.d.ts +10 -0
  48. package/dist/types/dynamic-page-runtime/pageActionInvocation.d.ts +7 -0
  49. package/dist/types/dynamic-page-runtime/pageActionPlacement.d.ts +14 -0
  50. package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +1 -0
  51. package/dist/types/dynamic-page-runtime/recordMutationPayload.d.ts +4 -0
  52. package/dist/types/dynamic-page-runtime/referenceRecordProjection.d.ts +6 -0
  53. package/dist/types/dynamic-page-runtime/sessionViewBindings.d.ts +3 -0
  54. package/dist/types/dynamic-page-runtime/sourceReferencePickerConfig.d.ts +26 -0
  55. package/dist/types/dynamic-page-runtime/useModulePageSession.d.ts +1728 -0
  56. package/dist/types/dynamic-page-runtime/useTenantScopeController.d.ts +18 -0
  57. package/dist/types/formula/FormulaRuntime.d.ts +6 -0
  58. package/dist/types/platform-admin-runtime/WorkspaceViewDrawer.vue.d.ts +5 -0
  59. package/dist/types/platform-admin-runtime/module-menu/ModuleMenuDrawer.vue.d.ts +7 -0
  60. package/dist/types/platform-admin-runtime/module-menu/ModuleMenuEntriesSection.vue.d.ts +7 -0
  61. package/dist/types/platform-admin-runtime/module-menu/moduleMenuClient.d.ts +16 -0
  62. package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +2 -0
  63. package/dist/types/platform-admin-runtime/role/roleScopeSelectionClient.d.ts +52 -0
  64. package/dist/types/platform-components/AdaptiveHeaderActionBar.vue.d.ts +24 -0
  65. package/dist/types/platform-components/BusinessNotificationPanel.vue.d.ts +15 -1
  66. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +11 -3
  67. package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +1 -1
  68. package/dist/types/platform-components/DictionaryOptionDialog.vue.d.ts +37 -0
  69. package/dist/types/platform-components/DictionaryOptionDialogChoiceList.vue.d.ts +21 -0
  70. package/dist/types/platform-components/DictionaryPicker.vue.d.ts +47 -0
  71. package/dist/types/platform-components/DictionaryRadioGroup.vue.d.ts +20 -0
  72. package/dist/types/platform-components/EmployeePicker.vue.d.ts +40 -0
  73. package/dist/types/platform-components/FileTransferUploader.vue.d.ts +1 -1
  74. package/dist/types/platform-components/FormulaExpressionEditor.vue.d.ts +54 -0
  75. package/dist/types/platform-components/ManagementExplorerColumn.vue.d.ts +15 -3
  76. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +5 -3
  77. package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +11 -0
  78. package/dist/types/platform-components/ModuleActionButton.vue.d.ts +3 -3
  79. package/dist/types/platform-components/ObjectPickerInput.vue.d.ts +34 -0
  80. package/dist/types/platform-components/QueryCriteriaComposer.vue.d.ts +29 -0
  81. package/dist/types/platform-components/QueryCriteriaGroupEditor.vue.d.ts +36 -0
  82. package/dist/types/platform-components/QueryGroupedSummary.vue.d.ts +21 -0
  83. package/dist/types/platform-components/QueryValueEditor.vue.d.ts +33 -0
  84. package/dist/types/platform-components/ReadonlyReferenceValue.vue.d.ts +11 -0
  85. package/dist/types/platform-components/RecordContentSectionHeading.vue.d.ts +4 -2
  86. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +8 -3
  87. package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +9 -3
  88. package/dist/types/platform-components/RecordDetailFields.vue.d.ts +41 -4
  89. package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +4 -1
  90. package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +2 -0
  91. package/dist/types/platform-components/RecordExplorerCreateButton.vue.d.ts +16 -0
  92. package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +16 -5
  93. package/dist/types/platform-components/RecordFieldLabel.vue.d.ts +16 -0
  94. package/dist/types/platform-components/RecordFormFields.vue.d.ts +24 -5
  95. package/dist/types/platform-components/RecordFormGrid.vue.d.ts +24 -0
  96. package/dist/types/platform-components/RecordListExplorer.vue.d.ts +23 -1
  97. package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +11 -3
  98. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +3 -3
  99. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +9 -3
  100. package/dist/types/platform-components/RecordPermissionDialog.vue.d.ts +15 -0
  101. package/dist/types/platform-components/RecordPicker.vue.d.ts +3 -3
  102. package/dist/types/platform-components/RecordQueryEnumFilter.vue.d.ts +17 -0
  103. package/dist/types/platform-components/RecordQueryListCell.vue.d.ts +12 -0
  104. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +120 -63
  105. package/dist/types/platform-components/RecordQueryListSurface.vue.d.ts +144 -0
  106. package/dist/types/platform-components/RecordRelationTable.vue.d.ts +62 -0
  107. package/dist/types/platform-components/RecordRelationValue.vue.d.ts +9 -0
  108. package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -3
  109. package/dist/types/platform-components/ReferencePicker.vue.d.ts +47 -0
  110. package/dist/types/platform-components/ReferenceRecordDetailBrowser.vue.d.ts +55 -0
  111. package/dist/types/platform-components/ScopedTreePicker.vue.d.ts +31 -0
  112. package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +2 -0
  113. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +14 -3
  114. package/dist/types/platform-components/UserPicker.vue.d.ts +47 -0
  115. package/dist/types/platform-components/adaptiveHeaderActionLayout.d.ts +22 -0
  116. package/dist/types/platform-components/dictionaryOptionDialogModel.d.ts +23 -0
  117. package/dist/types/platform-components/employeePickerModel.d.ts +19 -0
  118. package/dist/types/platform-components/formulaExpressionTokens.d.ts +18 -0
  119. package/dist/types/platform-components/identityPickerModel.d.ts +18 -0
  120. package/dist/types/platform-components/index.d.ts +48 -2
  121. package/dist/types/platform-components/managementExplorerContext.d.ts +11 -0
  122. package/dist/types/platform-components/managementWorkspaceContext.d.ts +20 -0
  123. package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
  124. package/dist/types/platform-components/optionFieldOptionCache.d.ts +1 -1
  125. package/dist/types/platform-components/queryCriteriaDraft.d.ts +24 -0
  126. package/dist/types/platform-components/queryReferencePickerProvider.d.ts +19 -0
  127. package/dist/types/platform-components/readonlyReferenceDisplay.d.ts +19 -0
  128. package/dist/types/platform-components/recordActionBarModel.d.ts +3 -0
  129. package/dist/types/platform-components/recordEditorSessionState.d.ts +11 -4
  130. package/dist/types/platform-components/recordFormFieldModel.d.ts +28 -2
  131. package/dist/types/platform-components/recordQueryListColumnModel.d.ts +44 -0
  132. package/dist/types/platform-components/referencePickerModel.d.ts +103 -0
  133. package/dist/types/platform-components/referencePickerReadError.d.ts +24 -0
  134. package/dist/types/platform-components/referenceRecordDetailBrowser.d.ts +48 -0
  135. package/dist/types/platform-components/scopedTreePickerModel.d.ts +46 -0
  136. package/dist/types/platform-components/selectionRefresh.d.ts +9 -0
  137. package/dist/types/platform-components/sortPartitionKey.d.ts +5 -0
  138. package/dist/types/platform-components/sourceReferencePickerProvider.d.ts +26 -0
  139. package/dist/types/platform-components/staticCrudManagementState.d.ts +7 -6
  140. package/dist/types/platform-components/userPickerModel.d.ts +45 -0
  141. package/dist/types/platform-components/userReferencePicker.d.ts +17 -0
  142. package/dist/types/platform-workbench/index.d.ts +2 -0
  143. package/dist/types/platform-workbench/useWorkspaceViewUnsavedState.d.ts +5 -0
  144. package/dist/types/platform-workbench/workbenchNavigation.d.ts +5 -1
  145. package/dist/types/platform-workbench/workspaceViewContract.d.ts +5 -0
  146. package/dist/types/platform-workbench/workspaceViewHost.d.ts +5 -0
  147. package/dist/types/platform-workbench/workspaceViewNavigation.d.ts +9 -0
  148. package/dist/types/platform-workbench/workspaceViewUnsavedState.d.ts +5 -0
  149. package/dist/types/views/BusinessActivityLogView.vue.d.ts +3 -0
  150. package/dist/types/views/BusinessLogListDrawer.vue.d.ts +9 -0
  151. package/dist/types/views/BusinessRuleGovernanceSurface.vue.d.ts +10 -0
  152. package/dist/types/views/LoginAuditLogView.vue.d.ts +3 -0
  153. package/dist/types/views/MetadataGovernanceSurface.vue.d.ts +8 -0
  154. package/dist/types/views/MetadataSourceTree.vue.d.ts +44 -0
  155. package/dist/types/views/ModuleBusinessPreview.vue.d.ts +7 -0
  156. package/dist/types/views/ModuleExperienceProfileOverview.vue.d.ts +7 -0
  157. package/dist/types/views/ModuleGovernanceView.vue.d.ts +9 -0
  158. package/dist/types/views/PageCompositionDescriptorPreview.vue.d.ts +54 -0
  159. package/dist/types/views/PageCompositionTree.vue.d.ts +103 -0
  160. package/dist/types/views/PageCompositionWorkspace.vue.d.ts +7 -0
  161. package/dist/types/views/PageQuerySummaryEditor.vue.d.ts +48 -0
  162. package/dist/types/views/RequestErrorLogView.vue.d.ts +3 -0
  163. package/dist/types/views/RuntimeLogView.vue.d.ts +3 -0
  164. package/dist/types/views/businessLogClient.d.ts +85 -0
  165. package/dist/types/views/businessRuleGovernance.d.ts +201 -0
  166. package/dist/types/views/dictionaryRadioEligibility.d.ts +18 -0
  167. package/dist/types/views/dictionaryRadioFactRequestEpoch.d.ts +10 -0
  168. package/dist/types/views/metadataModelEditSession.d.ts +84 -0
  169. package/dist/types/views/metadataModelTree.d.ts +40 -0
  170. package/dist/types/views/metadataNaming.d.ts +7 -0
  171. package/dist/types/views/metadataOrchestrationState.d.ts +161 -6
  172. package/dist/types/views/metadataSourceTree.d.ts +10 -0
  173. package/dist/types/views/moduleGovernanceWorkspaceView.d.ts +9 -0
  174. package/dist/types/views/pageCompositionDraftState.d.ts +404 -0
  175. package/dist/types/views/pageCompositionDragPayload.d.ts +26 -0
  176. package/dist/types/views/pageCompositionMode.d.ts +86 -0
  177. package/dist/types/views/pageCompositionPlacement.d.ts +48 -0
  178. package/dist/types/views/pageCompositionTransport.d.ts +9 -0
  179. package/dist/types/views/roleDetailWorkspaceSession.d.ts +1 -0
  180. package/dist/types/views/roleGrantClient.d.ts +0 -1
  181. package/dist/types/views/runtimeLogClient.d.ts +12 -0
  182. package/dist/types/views/runtimeLogSse.d.ts +13 -0
  183. package/dist/types/views/usePageCompositionActionPreviewDrag.d.ts +41 -0
  184. package/dist/types/views/usePageCompositionPreviewDrag.d.ts +48 -0
  185. package/dist/types/vue-ui-antdv/components/UiActionButton.vue.d.ts +2 -2
  186. package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +6 -3
  187. package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +20 -2
  188. package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
  189. package/dist/types/vue-ui-antdv/components/UiPopover.vue.d.ts +22 -0
  190. package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +1 -1
  191. package/dist/types/vue-ui-antdv/components/UiSearchInput.vue.d.ts +16 -2
  192. package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +28 -2
  193. package/dist/types/vue-ui-antdv/components/UiSidePanel.vue.d.ts +9 -2
  194. package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +1 -1
  195. package/dist/types/vue-ui-antdv/components/UiTextArea.vue.d.ts +38 -1
  196. package/dist/types/vue-ui-antdv/components/UiTokenInput.vue.d.ts +62 -0
  197. package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +63 -9
  198. package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +24 -2
  199. package/dist/types/vue-ui-antdv/drawerDismissal.d.ts +18 -0
  200. package/dist/types/vue-ui-antdv/drawerWidth.d.ts +22 -0
  201. package/dist/types/vue-ui-antdv/index.d.ts +10 -1
  202. package/dist/types/vue-ui-antdv/treeStructure.d.ts +18 -0
  203. package/dist/types/vue-ui-antdv/types.d.ts +64 -0
  204. package/dist/types/vue-ui-antdv/useTreeLoader.d.ts +21 -0
  205. package/dist/types/vue-ui-antdv/useTreeMotion.d.ts +9 -0
  206. package/dist/types/vue-ui-antdv/useUiTreeDrag.d.ts +32 -0
  207. package/dist/types/web-contracts/index.d.ts +132 -12
  208. package/dist/types/web-core/http.d.ts +2 -0
  209. package/dist/types/web-core/module/index.d.ts +1 -0
  210. package/dist/types/web-core/module/moduleContext.d.ts +29 -1
  211. package/dist/types/web-core/module/pageActionEntries.d.ts +21 -0
  212. package/dist/types/web-core/module/runtimeContext.d.ts +10 -5
  213. package/dist/types/web-core/module/staticModuleClient.d.ts +30 -3
  214. package/dist/workspaceViews-CCg6V0pr.js +3623 -0
  215. package/package.json +1 -1
  216. package/dist/MetadataOrchestrationView-F_Bmfn9K.js +0 -661
  217. package/dist/ModuleActionManagementView-Db_3Twom.js +0 -597
  218. package/dist/RoleDetailWorkspaceView-UOm1ejGH.js +0 -1369
  219. package/dist/platform-components-59b4qzUL.js +0 -12489
  220. package/dist/types/views/metadataOrchestrationWorkspaceView.d.ts +0 -6
  221. package/dist/workspaceViews-BvV8mpML.js +0 -11149
@@ -3,11 +3,19 @@ import { type QueryListRecord, type RecordFormFieldDescriptor } from '../../plat
3
3
  import type { ResolvedModuleUiDescriptor, ResolvedModulePageDescriptor, ResolvedPageContextBindingDescriptor, ResolvedPageNavigatorLevelDescriptor, RouteQueryValue } from '../../web-contracts/index';
4
4
  import { type HttpClient, type ModuleContext } from '../../web-core/index';
5
5
  import { type NavigatorEntrySelection } from '../navigatorEntrySelection';
6
+ export interface NavigatorSortViewState {
7
+ visible: boolean;
8
+ enabled: boolean;
9
+ active?: boolean;
10
+ disabledReason?: string;
11
+ }
6
12
  /** Runtime state that belongs to the page/navigator session rather than to a Vue host. */
7
13
  export interface NavigatorLevelRuntime {
8
14
  descriptor: ResolvedPageNavigatorLevelDescriptor;
9
15
  context: ModuleContext<QueryListRecord>;
10
16
  tree: boolean;
17
+ /** Resolved navigator actions consumed by the page surfaces. */
18
+ sort: NavigatorSortViewState;
11
19
  }
12
20
  export interface NavigatorEntrySelectionChange {
13
21
  previous?: NavigatorEntrySelection;
@@ -37,7 +45,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
37
45
  expression: string;
38
46
  program?: {
39
47
  schemaVersion: number;
40
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
48
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
41
49
  root: {
42
50
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
43
51
  operator?: string | undefined;
@@ -56,7 +64,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
56
64
  expression: string;
57
65
  program?: {
58
66
  schemaVersion: number;
59
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
67
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
60
68
  root: {
61
69
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
62
70
  operator?: string | undefined;
@@ -75,7 +83,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
75
83
  expression: string;
76
84
  program?: {
77
85
  schemaVersion: number;
78
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
86
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
79
87
  root: {
80
88
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
81
89
  operator?: string | undefined;
@@ -140,6 +148,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
140
148
  required: boolean;
141
149
  }[] | undefined;
142
150
  titleField?: string | undefined;
151
+ displayProjections?: {
152
+ targetField: string;
153
+ outputField: string;
154
+ }[] | undefined;
143
155
  selectionProjections?: {
144
156
  path: string[];
145
157
  }[] | undefined;
@@ -181,7 +193,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
181
193
  expression: string;
182
194
  program?: {
183
195
  schemaVersion: number;
184
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
196
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
185
197
  root: {
186
198
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
187
199
  operator?: string | undefined;
@@ -200,7 +212,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
200
212
  expression: string;
201
213
  program?: {
202
214
  schemaVersion: number;
203
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
215
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
204
216
  root: {
205
217
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
206
218
  operator?: string | undefined;
@@ -219,7 +231,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
219
231
  expression: string;
220
232
  program?: {
221
233
  schemaVersion: number;
222
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
234
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
223
235
  root: {
224
236
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
225
237
  operator?: string | undefined;
@@ -284,6 +296,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
284
296
  required: boolean;
285
297
  }[] | undefined;
286
298
  titleField?: string | undefined;
299
+ displayProjections?: {
300
+ targetField: string;
301
+ outputField: string;
302
+ }[] | undefined;
287
303
  selectionProjections?: {
288
304
  path: string[];
289
305
  }[] | undefined;
@@ -331,7 +347,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
331
347
  expression: string;
332
348
  program?: {
333
349
  schemaVersion: number;
334
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
350
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
335
351
  root: {
336
352
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
337
353
  operator?: string | undefined;
@@ -350,7 +366,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
350
366
  expression: string;
351
367
  program?: {
352
368
  schemaVersion: number;
353
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
369
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
354
370
  root: {
355
371
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
356
372
  operator?: string | undefined;
@@ -369,7 +385,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
369
385
  expression: string;
370
386
  program?: {
371
387
  schemaVersion: number;
372
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
388
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
373
389
  root: {
374
390
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
375
391
  operator?: string | undefined;
@@ -434,6 +450,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
434
450
  required: boolean;
435
451
  }[] | undefined;
436
452
  titleField?: string | undefined;
453
+ displayProjections?: {
454
+ targetField: string;
455
+ outputField: string;
456
+ }[] | undefined;
437
457
  selectionProjections?: {
438
458
  path: string[];
439
459
  }[] | undefined;
@@ -475,7 +495,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
475
495
  expression: string;
476
496
  program?: {
477
497
  schemaVersion: number;
478
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
498
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
479
499
  root: {
480
500
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
481
501
  operator?: string | undefined;
@@ -494,7 +514,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
494
514
  expression: string;
495
515
  program?: {
496
516
  schemaVersion: number;
497
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
517
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
498
518
  root: {
499
519
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
500
520
  operator?: string | undefined;
@@ -513,7 +533,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
513
533
  expression: string;
514
534
  program?: {
515
535
  schemaVersion: number;
516
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
536
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
517
537
  root: {
518
538
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
519
539
  operator?: string | undefined;
@@ -578,6 +598,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
578
598
  required: boolean;
579
599
  }[] | undefined;
580
600
  titleField?: string | undefined;
601
+ displayProjections?: {
602
+ targetField: string;
603
+ outputField: string;
604
+ }[] | undefined;
581
605
  selectionProjections?: {
582
606
  path: string[];
583
607
  }[] | undefined;
@@ -626,7 +650,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
626
650
  expression: string;
627
651
  program?: {
628
652
  schemaVersion: number;
629
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
653
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
630
654
  root: {
631
655
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
632
656
  operator?: string | undefined;
@@ -645,7 +669,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
645
669
  expression: string;
646
670
  program?: {
647
671
  schemaVersion: number;
648
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
672
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
649
673
  root: {
650
674
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
651
675
  operator?: string | undefined;
@@ -664,7 +688,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
664
688
  expression: string;
665
689
  program?: {
666
690
  schemaVersion: number;
667
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
691
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
668
692
  root: {
669
693
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
670
694
  operator?: string | undefined;
@@ -729,6 +753,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
729
753
  required: boolean;
730
754
  }[] | undefined;
731
755
  titleField?: string | undefined;
756
+ displayProjections?: {
757
+ targetField: string;
758
+ outputField: string;
759
+ }[] | undefined;
732
760
  selectionProjections?: {
733
761
  path: string[];
734
762
  }[] | undefined;
@@ -770,7 +798,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
770
798
  expression: string;
771
799
  program?: {
772
800
  schemaVersion: number;
773
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
801
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
774
802
  root: {
775
803
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
776
804
  operator?: string | undefined;
@@ -789,7 +817,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
789
817
  expression: string;
790
818
  program?: {
791
819
  schemaVersion: number;
792
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
820
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
793
821
  root: {
794
822
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
795
823
  operator?: string | undefined;
@@ -808,7 +836,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
808
836
  expression: string;
809
837
  program?: {
810
838
  schemaVersion: number;
811
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
839
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
812
840
  root: {
813
841
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
814
842
  operator?: string | undefined;
@@ -873,6 +901,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
873
901
  required: boolean;
874
902
  }[] | undefined;
875
903
  titleField?: string | undefined;
904
+ displayProjections?: {
905
+ targetField: string;
906
+ outputField: string;
907
+ }[] | undefined;
876
908
  selectionProjections?: {
877
909
  path: string[];
878
910
  }[] | undefined;
@@ -920,7 +952,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
920
952
  expression: string;
921
953
  program?: {
922
954
  schemaVersion: number;
923
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
955
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
924
956
  root: {
925
957
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
926
958
  operator?: string | undefined;
@@ -939,7 +971,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
939
971
  expression: string;
940
972
  program?: {
941
973
  schemaVersion: number;
942
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
974
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
943
975
  root: {
944
976
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
945
977
  operator?: string | undefined;
@@ -958,7 +990,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
958
990
  expression: string;
959
991
  program?: {
960
992
  schemaVersion: number;
961
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
993
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
962
994
  root: {
963
995
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
964
996
  operator?: string | undefined;
@@ -1023,6 +1055,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1023
1055
  required: boolean;
1024
1056
  }[] | undefined;
1025
1057
  titleField?: string | undefined;
1058
+ displayProjections?: {
1059
+ targetField: string;
1060
+ outputField: string;
1061
+ }[] | undefined;
1026
1062
  selectionProjections?: {
1027
1063
  path: string[];
1028
1064
  }[] | undefined;
@@ -1064,7 +1100,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1064
1100
  expression: string;
1065
1101
  program?: {
1066
1102
  schemaVersion: number;
1067
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
1103
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
1068
1104
  root: {
1069
1105
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
1070
1106
  operator?: string | undefined;
@@ -1083,7 +1119,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1083
1119
  expression: string;
1084
1120
  program?: {
1085
1121
  schemaVersion: number;
1086
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
1122
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
1087
1123
  root: {
1088
1124
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
1089
1125
  operator?: string | undefined;
@@ -1102,7 +1138,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1102
1138
  expression: string;
1103
1139
  program?: {
1104
1140
  schemaVersion: number;
1105
- profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE";
1141
+ profile: "WEB_UI" | "PAGE_TEXT" | "FORM_COMPUTE" | "FORM_VALIDATION";
1106
1142
  root: {
1107
1143
  kind: "VALUE" | "FIELD" | "OTHERS" | "UNARY" | "BINARY" | "FUNCTION" | "ASSIGN";
1108
1144
  operator?: string | undefined;
@@ -1167,6 +1203,10 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1167
1203
  required: boolean;
1168
1204
  }[] | undefined;
1169
1205
  titleField?: string | undefined;
1206
+ displayProjections?: {
1207
+ targetField: string;
1208
+ outputField: string;
1209
+ }[] | undefined;
1170
1210
  selectionProjections?: {
1171
1211
  path: string[];
1172
1212
  }[] | undefined;
@@ -1219,7 +1259,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1219
1259
  sourceScope?: "NONE" | "CURRENT_TENANT" | undefined;
1220
1260
  management?: {
1221
1261
  editorSurface?: string | undefined;
1222
- } | undefined;
1262
+ } | null | undefined;
1223
1263
  };
1224
1264
  context: {
1225
1265
  moduleAlias: string;
@@ -1235,6 +1275,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1235
1275
  delete: (id: string, request: import("../../web-core/index").RecordActionRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>;
1236
1276
  enable: (id: string, request: import("../../web-core/index").RecordActionRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>;
1237
1277
  disable: (id: string, request: import("../../web-core/index").RecordActionRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>;
1278
+ sort?: ((id: string, request: import("../../web-contracts/index").SortRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>) | undefined;
1238
1279
  };
1239
1280
  runtime: {
1240
1281
  ready: {
@@ -1276,6 +1317,12 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1276
1317
  invalidateRecordActions?: ((recordIds?: string[]) => void) | undefined;
1277
1318
  };
1278
1319
  tree: boolean;
1320
+ sort: {
1321
+ visible: boolean;
1322
+ enabled: boolean;
1323
+ active?: boolean | undefined;
1324
+ disabledReason?: string | undefined;
1325
+ };
1279
1326
  }[], NavigatorLevelRuntime[] | {
1280
1327
  descriptor: {
1281
1328
  key: string;
@@ -1289,7 +1336,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1289
1336
  sourceScope?: "NONE" | "CURRENT_TENANT" | undefined;
1290
1337
  management?: {
1291
1338
  editorSurface?: string | undefined;
1292
- } | undefined;
1339
+ } | null | undefined;
1293
1340
  };
1294
1341
  context: {
1295
1342
  moduleAlias: string;
@@ -1305,6 +1352,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1305
1352
  delete: (id: string, request: import("../../web-core/index").RecordActionRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>;
1306
1353
  enable: (id: string, request: import("../../web-core/index").RecordActionRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>;
1307
1354
  disable: (id: string, request: import("../../web-core/index").RecordActionRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>;
1355
+ sort?: ((id: string, request: import("../../web-contracts/index").SortRequest) => Promise<import("../../web-core/index").StaticCountMutationResult>) | undefined;
1308
1356
  };
1309
1357
  runtime: {
1310
1358
  ready: {
@@ -1346,6 +1394,12 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1346
1394
  invalidateRecordActions?: ((recordIds?: string[]) => void) | undefined;
1347
1395
  };
1348
1396
  tree: boolean;
1397
+ sort: {
1398
+ visible: boolean;
1399
+ enabled: boolean;
1400
+ active?: boolean | undefined;
1401
+ disabledReason?: string | undefined;
1402
+ };
1349
1403
  }[]>;
1350
1404
  pageContextBindings: Ref<{
1351
1405
  source: "SESSION" | "NAVIGATOR" | "RESOLVED_SELECTION";
@@ -1373,6 +1427,7 @@ export declare function useNavigatorRuntime(context: ModuleContext<QueryListReco
1373
1427
  id?: string;
1374
1428
  }[], externalQueryValues?: Record<string, unknown>) => Promise<NavigatorEntrySelectionResolution | undefined>;
1375
1429
  isCurrentNavigatorEntrySelection: (level: NavigatorLevelRuntime, resolution: NavigatorEntrySelectionResolution) => boolean;
1430
+ loadRuntimeDescriptor: () => Promise<void>;
1376
1431
  loadRuntimeForm: (isListPage: Ref<boolean>, hasBusinessRecordView: () => boolean, fail: (message: string) => void) => Promise<void>;
1377
1432
  };
1378
1433
  export {};
@@ -17,7 +17,7 @@ export declare function useRecordEditingSession<TRecord extends {
17
17
  id?: unknown;
18
18
  }>(context: ModuleContext<TRecord>, detail: DetailController<TRecord>, onLoaded: () => void): {
19
19
  invalidatePendingRequests: () => void;
20
- openRecord: (record: TRecord, mode: "edit" | "view", options?: RecordDetailTransitionOptions, skipLoad?: boolean) => Promise<void>;
20
+ openRecord: (record: TRecord, mode: "edit" | "view", options?: RecordDetailTransitionOptions, skipLoad?: boolean, onLoadError?: (cause: unknown) => void) => Promise<void>;
21
21
  openRecycleBinRecord: (record: TRecord) => Promise<void>;
22
22
  };
23
23
  export {};
@@ -0,0 +1,7 @@
1
+ /** Distinguishes optional draft diagnostics from actions that declare the patch protocol. */
2
+ export declare function hasFormActionRecordPatch(response: unknown): boolean;
3
+ /** Only an explicit form result may update an unsaved draft. Ordinary action data is not a patch. */
4
+ export declare function formActionResult(response: unknown): {
5
+ recordPatch: Record<string, unknown>;
6
+ message?: string;
7
+ };
@@ -6,13 +6,16 @@ import type { ResolvedFormComputeRuleDescriptor } from '../web-contracts/index';
6
6
  *
7
7
  * The coordinator owns propagation, rather than the field component or the
8
8
  * FormulaRuntime: fields remain plain inputs and FormulaRuntime remains a
9
- * pure evaluator. A rule runs at most once in a pass, which makes malformed
10
- * cyclic descriptor graphs fail closed instead of repeatedly overwriting a
11
- * user's draft.
9
+ * pure evaluator. It validates the descriptor graph before evaluating any
10
+ * rule, then evaluates applicable rules in dependency order.
12
11
  */
13
12
  export declare class FormComputeCoordinator {
14
13
  private readonly runtime;
15
14
  private readonly rules;
15
+ private readonly propagationOrder;
16
16
  constructor(rules: readonly ResolvedFormComputeRuleDescriptor[] | undefined, runtime?: FormulaRuntime);
17
- applyAfterChange<TDraft extends FormulaRecord>(draft: TDraft, changedFields: readonly string[]): TDraft;
17
+ applyAfterChange<TDraft extends FormulaRecord>(draft: TDraft, changedFields: readonly string[], childAggregateRows?: FormulaRecord): TDraft;
18
+ /** Evaluate computed fields once when a new form opens, including constant expressions. */
19
+ applyOnCreate<TDraft extends FormulaRecord>(draft: TDraft, childAggregateRows?: FormulaRecord): TDraft;
20
+ private evaluate;
18
21
  }
@@ -0,0 +1,17 @@
1
+ import { FormulaRuntime, type FormulaRecord } from '../formula/FormulaRuntime';
2
+ import type { ResolvedFormValidationRuleDescriptor } from '../web-contracts/index';
3
+ export type FormValidationFailure = Readonly<{
4
+ code: string;
5
+ message: string;
6
+ targetField?: string;
7
+ }>;
8
+ /**
9
+ * Executes only descriptors that have already passed server projection. Invalid descriptor shapes
10
+ * fail open, preserving the server mutation boundary as the final authority.
11
+ */
12
+ export declare class FormValidationCoordinator {
13
+ private readonly runtime;
14
+ private readonly rules;
15
+ constructor(rules: readonly ResolvedFormValidationRuleDescriptor[] | undefined, runtime?: FormulaRuntime);
16
+ validate(draft: FormulaRecord): FormValidationFailure | undefined;
17
+ }
@@ -1,10 +1,12 @@
1
1
  export { default as ModulePageHost } from './ModulePageHost.vue';
2
2
  export { default as DynamicModulePage } from './DynamicModulePage.vue';
3
3
  export { default as DynamicModuleWorkspaceDetailView } from './DynamicModuleWorkspaceDetailView.vue';
4
+ export { default as ModuleReferenceRecordDetailBrowser } from './ModuleReferenceRecordDetailBrowser.vue';
4
5
  export { customerDescriptor } from './mockDescriptor';
5
6
  export { configureModulePageEnhancementContributions, configureModulePageEnhancements, createModulePageEnhancementRegistry, createReadonlyCardRecordSnapshot, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
6
7
  export { provideModulePageNavigation, useModulePageNavigation } from './modulePageNavigation';
8
+ export { provideModulePageUnsavedStateHost, useModulePageUnsavedState, type ModulePageUnsavedStateHost, } from './modulePageUnsavedState';
7
9
  export { NAVIGATOR_ENTRY_MODULE_ALIAS_QUERY_KEY, NAVIGATOR_ENTRY_RECORD_ID_QUERY_KEY, } from './navigatorEntrySelection';
8
10
  export { createModulePageListRefreshRegistry, modulePageListRefreshRegistry, refreshModulePageList, } from './modulePageListRefresh';
9
11
  export type { ModulePageListRefreshRegistry } from './modulePageListRefresh';
10
- export type { ModuleListEnhancement, ModulePageListRowExpansion, ModulePageListRowExpansionContext, ModuleDetailEnhancement, ModulePageFormEnhancement, ModulePageFormContribution, ModulePageFormContributionContext, ModulePageFormContributionState, ModulePageFormFieldPolicy, ModulePageFormContributionLocation, ModulePageFormContributionValidity, ModulePageFormSurface, ModuleCardEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailDrawer, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageRecordViewContext, ModulePageEnhancement, ModulePageEnhancementActivationContext, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageNavigatorEnhancement, ModulePageNavigatorExtension, ModulePageNavigatorExtensionContext, ModulePageNavigatorSelection, ModulePageLockedNavigatorEntry, ModulePageCardAssistant, ModulePageCardAssistantContext, ModulePageCardAssistantPlacement, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
12
+ export type { ModuleListEnhancement, ModulePageListRowExpansion, ModulePageListRowExpansionContext, ModuleDetailEnhancement, ModulePageFormEnhancement, ModulePageFormContribution, ModulePageFormContributionContext, ModulePageFormContributionState, ModulePageFormFieldPolicy, ModulePageFormContributionLocation, ModulePageFormContributionValidity, ModulePageFormSurface, ModuleCardEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailDrawer, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageRecordViewContext, ModulePageEnhancement, ModulePageEnhancementActivationContext, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageNavigatorEnhancement, ModulePageNavigatorTreeParentPolicy, ModulePageNavigatorExtension, ModulePageNavigatorExtensionContext, ModulePageNavigatorSelection, ModulePageLockedNavigatorEntry, ModulePageCardAssistant, ModulePageCardAssistantContext, ModulePageCardAssistantPlacement, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
@@ -0,0 +1,20 @@
1
+ export type InputValidationTarget = {
2
+ kind: 'draft';
3
+ fingerprint: string;
4
+ } | {
5
+ kind: 'record';
6
+ recordId: string;
7
+ fingerprint: string;
8
+ };
9
+ export interface InputValidationAttempt {
10
+ actionKey: string;
11
+ target: InputValidationTarget;
12
+ }
13
+ /** Tracks successful validation against the exact input snapshot that was tested. */
14
+ export declare function useInputValidationActionStatus(): {
15
+ begin: (actionKey: string, target: InputValidationTarget) => InputValidationAttempt;
16
+ succeed: (attempt: InputValidationAttempt, currentFingerprint?: string) => void;
17
+ isDraftValidated: (actionKey: string, fingerprint: string | undefined) => boolean;
18
+ isRecordValidated: (actionKey: string, recordId: string | undefined, fingerprint: string | undefined) => boolean;
19
+ invalidateRecord: (recordId: string) => void;
20
+ };
@@ -1,7 +1,7 @@
1
1
  import type { Component } from 'vue';
2
2
  import type { CurrentUser, PageDescriptor, PageLayoutMode, RouteQueryValue, WebPageResponse, WebQueryCondition, WebQueryRequest } from '../web-contracts/index';
3
3
  import type { ModuleContext } from '../web-core/index';
4
- import type { RecordActionItem, RecordFormFieldState, RecordFormFieldValue, RecordQueryListColumn, QueryListRecord } from '../platform-components/index';
4
+ import type { DrawerWidth, RecordActionItem, RecordFormFieldState, RecordFormFieldValue, RecordQueryListColumn, QueryListRecord } from '../platform-components/index';
5
5
  import type { DrawerTitleAction } from '../platform-components/index';
6
6
  /**
7
7
  * Frontend-owned, constrained composition for a descriptor-driven module page.
@@ -55,6 +55,8 @@ export interface ModulePageStandardActionsEnhancement {
55
55
  export interface ModulePageNavigatorEnhancement {
56
56
  /** Hides descriptor navigators when this entry is not navigated by their business scope. */
57
57
  hidden?: boolean;
58
+ /** Business-owned parent admission for a navigator tree; sibling sorting remains standard. */
59
+ treeParentPolicy?: ModulePageNavigatorTreeParentPolicy;
58
60
  /**
59
61
  * One application-owned navigator surface mounted beside descriptor navigators.
60
62
  *
@@ -74,6 +76,10 @@ export interface ModulePageNavigatorEnhancement {
74
76
  */
75
77
  emptyListScope?(context: ModulePageEmptyNavigatorScopeContext): readonly WebQueryCondition[] | undefined;
76
78
  }
79
+ export interface ModulePageNavigatorTreeParentPolicy {
80
+ canUseAsParent(record: Readonly<Record<string, unknown>>): boolean;
81
+ rejectionMessage: string;
82
+ }
77
83
  export interface ModulePageNavigatorExtension {
78
84
  key: string;
79
85
  /** Frontend-owned component; backend descriptors never select a component. */
@@ -303,6 +309,10 @@ export interface ModulePageBatchActionContribution extends RecordActionItem {
303
309
  export interface ModulePageDetailSection {
304
310
  key: string;
305
311
  title: string;
312
+ /** Optional heading copy owned by the business section but rendered by the platform shell. */
313
+ subtitle?: string;
314
+ /** Reactive subtitle content; receives the same read-only context as the section body. */
315
+ subtitleComponent?: Component;
306
316
  component: Component;
307
317
  }
308
318
  /** Business content rendered inside the platform-owned standard view drawer. */
@@ -310,7 +320,7 @@ export interface ModulePageDetailDrawer {
310
320
  /** The component receives only the documented read-only ModulePageRecordViewContext prop. */
311
321
  component: Component;
312
322
  /** Keeps the platform drawer shell while allowing dense business views more room. */
313
- width?: number | string;
323
+ width?: DrawerWidth;
314
324
  /**
315
325
  * Defaults to true. Set false when the business detail body has its own
316
326
  * governed read endpoint and only needs the selected list record as context.
@@ -331,7 +341,7 @@ export interface ModulePageCellComponentContribution {
331
341
  }
332
342
  export interface ModulePageDrawer {
333
343
  title: string;
334
- width?: number | string;
344
+ width?: DrawerWidth;
335
345
  /** The component receives only the documented ModulePageDrawerContext prop. */
336
346
  component: Component;
337
347
  }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Optional host bridge for a dynamic page rendered as an independent workspace
3
+ * view. The dynamic runtime only reports its local draft fact; the workbench
4
+ * owns registration, confirmation and tab destruction.
5
+ */
6
+ export interface ModulePageUnsavedStateHost {
7
+ registerUnsavedState(source: string, isDirty: () => boolean, isBusy?: () => boolean): () => void;
8
+ }
9
+ export declare function provideModulePageUnsavedStateHost(host: ModulePageUnsavedStateHost | undefined): void;
10
+ export declare function useModulePageUnsavedState(source: string, isDirty: () => boolean, isBusy?: () => boolean): void;
@@ -0,0 +1,7 @@
1
+ import type { PageActionInvocation } from '../web-contracts/index';
2
+ import type { HttpClient } from '../web-core/index';
3
+ /** Execute only the server-issued transport; action identity is not an HTTP route. */
4
+ export declare function invokePageAction(http: HttpClient, invocation: PageActionInvocation | undefined, context?: {
5
+ recordId?: string;
6
+ record?: Record<string, unknown>;
7
+ }): Promise<unknown>;
@@ -0,0 +1,14 @@
1
+ import type { RecordActionItem } from '../platform-components/index';
2
+ import type { ResolvedPageActionDescriptor } from '../web-contracts/index';
3
+ /** Placements choose presentation; execution must already have a platform workflow or issued action block. */
4
+ export declare function resolvePlacedPageActions(placements: ResolvedPageActionDescriptor[], anchor: ResolvedPageActionDescriptor['anchor'], actionOf: (code: string) => {
5
+ actionCode: string;
6
+ title?: string;
7
+ actionLevel?: string;
8
+ category?: string;
9
+ executorType?: string;
10
+ formSupported?: boolean;
11
+ bindingPending?: boolean;
12
+ } | undefined, detailActions: RecordActionItem[], mode: 'create' | 'edit' | 'view', managed?: boolean, record?: {
13
+ enabled?: unknown;
14
+ }): RecordActionItem[];
@@ -23,6 +23,7 @@ export declare function useRecordDetailController<TRecord extends Record<string,
23
23
  saving: import("vue").Ref<boolean, boolean>;
24
24
  togglingEnabled: import("vue").Ref<boolean, boolean>;
25
25
  formSessionKey: import("vue").Ref<number, number>;
26
+ isDirty: import("vue").ComputedRef<boolean>;
26
27
  beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view">, options?: RecordDetailTransitionOptions) => void;
27
28
  resolveLoad: (next: TRecord) => void;
28
29
  failLoad: () => void;
@@ -0,0 +1,4 @@
1
+ import type { RecordFormRecord } from '../platform-components/index';
2
+ import type { ResolvedViewFieldDescriptor } from '../web-contracts/index';
3
+ /** Read projections never become business writes, including explicitly named flat outputs. */
4
+ export declare function recordMutationPayload(record: RecordFormRecord, fields?: Iterable<Pick<ResolvedViewFieldDescriptor, 'fieldRef' | 'reference' | 'referenceSummary'>>): RecordFormRecord;
@@ -0,0 +1,6 @@
1
+ import type { RecordFormFieldDescriptor, RecordFormRecord, ReferenceRecordDetailMutation } from '../platform-components/index';
2
+ /**
3
+ * Applies published ONE-reference display projections after the referenced
4
+ * record is saved, without changing the source record's reference value.
5
+ */
6
+ export declare function applyReferenceRecordProjection(draft: RecordFormRecord, fields: ReadonlyMap<string, RecordFormFieldDescriptor>, mutation: ReferenceRecordDetailMutation): RecordFormRecord;
@@ -0,0 +1,3 @@
1
+ import { type WritableComputedRef } from 'vue';
2
+ /** Keep the renderer instance while replacing the disposed business session behind its bindings. */
3
+ export declare function sessionViewBindings<T extends object>(current: () => T): { [K in keyof T]: WritableComputedRef<T[K]>; };
@@ -0,0 +1,26 @@
1
+ import { type RecordFormFieldPickerConfig } from '../platform-components/index';
2
+ import type { ResolvedReferenceFieldDescriptor } from '../web-contracts/index';
3
+ import type { ReferenceResolveClient } from '../web-core/index';
4
+ type SourceReferencePickerConfigOptions = {
5
+ providerScopeKey: string;
6
+ sourceModuleAlias: string;
7
+ reference: ResolvedReferenceFieldDescriptor;
8
+ pickerFieldName: string;
9
+ referenceResolver: () => ReferenceResolveClient;
10
+ formValues: () => Record<string, unknown>;
11
+ reloadRecord: () => Record<string, unknown> | undefined;
12
+ source: () => {
13
+ recordId: string;
14
+ } | undefined;
15
+ /** Scoped-tree hosts retain their compact legacy picker alongside lazy expansion. */
16
+ legacyTreeLoaders?: boolean;
17
+ };
18
+ type SourceReferencePickerConfig = Pick<RecordFormFieldPickerConfig, 'provider' | 'reloadKey' | 'loadOptions' | 'loadTree' | 'resolveOptions'>;
19
+ /**
20
+ * Retains source-authorized providers for one page-runtime instance. The source callbacks stay
21
+ * live so page and child-row drafts can change without recreating the picker or widening its
22
+ * candidate authority. SOURCE_FIELD TREE delivery is part of the same provider contract; it is
23
+ * never reconstructed from a paged QUERY result.
24
+ */
25
+ export declare function createSourceReferencePickerConfigAssembler(): (options: SourceReferencePickerConfigOptions) => SourceReferencePickerConfig;
26
+ export {};