@ximatai/muyun-web-app 0.26.12 → 0.26.14

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 (152) hide show
  1. package/dist/BusinessActivityLogView-BUg5WTm-.js +16 -0
  2. package/dist/BusinessLogListDrawer-BOTE_7aT.js +825 -0
  3. package/dist/LoginAuditLogView-DBNtvmIy.js +16 -0
  4. package/dist/{ModuleActionManagementView-BHEooZ5L.js → ModuleActionManagementView-Bq1VO51Y.js} +207 -206
  5. package/dist/{ModuleGovernanceView-DB3TWlMy.js → ModuleGovernanceView-B8u4_erd.js} +4036 -3213
  6. package/dist/RequestErrorLogView-BrtH3ptj.js +16 -0
  7. package/dist/RoleDetailWorkspaceView-6LW3tLA1.js +1397 -0
  8. package/dist/RuntimeLogView-s3X5CdHB.js +297 -0
  9. package/dist/index.css +1 -1
  10. package/dist/index.js +499 -469
  11. package/dist/{moduleGovernanceWorkspaceView-C5pqJOEJ.js → moduleGovernanceWorkspaceView-BRgJbUjJ.js} +2 -2
  12. package/dist/platform-components-Dt859Hbr.js +18627 -0
  13. package/dist/platform-workbench-DfqFnlm-.js +14701 -0
  14. package/dist/sse-mGbuCAax.js +187 -0
  15. package/dist/types/consumer/index.d.ts +7 -0
  16. package/dist/types/dynamic-page-runtime/ModulePageBusinessSession.d.ts +2418 -0
  17. package/dist/types/dynamic-page-runtime/ModulePageBusinessState.vue.d.ts +11 -0
  18. package/dist/types/dynamic-page-runtime/ModulePageHost.vue.d.ts +20 -4
  19. package/dist/types/dynamic-page-runtime/ModulePageHostRuntime.vue.d.ts +4643 -0
  20. package/dist/types/dynamic-page-runtime/ModulePageHostSession.vue.d.ts +43 -0
  21. package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +2 -2
  22. package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +3 -0
  23. package/dist/types/dynamic-page-runtime/ModuleReferenceRecordDetailBrowser.vue.d.ts +42 -0
  24. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +2 -2
  25. package/dist/types/dynamic-page-runtime/RecordFormSurface.vue.d.ts +2 -2
  26. package/dist/types/dynamic-page-runtime/TenantScopeExplorer.vue.d.ts +21 -0
  27. package/dist/types/dynamic-page-runtime/assistantRecordEditorPolicy.d.ts +6 -0
  28. package/dist/types/dynamic-page-runtime/composables/useModulePageActions.d.ts +1 -1
  29. package/dist/types/dynamic-page-runtime/composables/useModulePageDetailActionRuntime.d.ts +5 -0
  30. package/dist/types/dynamic-page-runtime/composables/useModulePageListSession.d.ts +1 -0
  31. package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +1 -0
  32. package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +2 -0
  33. package/dist/types/dynamic-page-runtime/formActionResult.d.ts +2 -0
  34. package/dist/types/dynamic-page-runtime/index.d.ts +3 -0
  35. package/dist/types/dynamic-page-runtime/inputValidationActionStatus.d.ts +20 -0
  36. package/dist/types/dynamic-page-runtime/modulePageAssistantScope.d.ts +8 -0
  37. package/dist/types/dynamic-page-runtime/modulePageAssistantSurface.d.ts +6 -0
  38. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +7 -3
  39. package/dist/types/dynamic-page-runtime/modulePageUnsavedState.d.ts +10 -0
  40. package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +1 -0
  41. package/dist/types/dynamic-page-runtime/recordMutationPayload.d.ts +3 -2
  42. package/dist/types/dynamic-page-runtime/referenceRecordProjection.d.ts +6 -0
  43. package/dist/types/dynamic-page-runtime/sessionViewBindings.d.ts +3 -0
  44. package/dist/types/dynamic-page-runtime/sourceReferencePickerConfig.d.ts +26 -0
  45. package/dist/types/dynamic-page-runtime/useModulePageSession.d.ts +1833 -0
  46. package/dist/types/dynamic-page-runtime/useTenantScopeController.d.ts +19 -0
  47. package/dist/types/platform-admin-runtime/WorkspaceViewDrawer.vue.d.ts +5 -0
  48. package/dist/types/platform-admin-runtime/role/roleScopeSelectionClient.d.ts +52 -0
  49. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +13 -2
  50. package/dist/types/platform-components/DictionaryOptionDialog.vue.d.ts +37 -0
  51. package/dist/types/platform-components/DictionaryOptionDialogChoiceList.vue.d.ts +21 -0
  52. package/dist/types/platform-components/DictionaryPicker.vue.d.ts +47 -0
  53. package/dist/types/platform-components/DictionaryRadioGroup.vue.d.ts +20 -0
  54. package/dist/types/platform-components/EmployeePicker.vue.d.ts +40 -0
  55. package/dist/types/platform-components/FileTransferUploader.vue.d.ts +1 -1
  56. package/dist/types/platform-components/ObjectPickerInput.vue.d.ts +34 -0
  57. package/dist/types/platform-components/QueryCriteriaComposer.vue.d.ts +29 -0
  58. package/dist/types/platform-components/QueryCriteriaGroupEditor.vue.d.ts +36 -0
  59. package/dist/types/platform-components/QueryValueEditor.vue.d.ts +33 -0
  60. package/dist/types/platform-components/ReadonlyReferenceValue.vue.d.ts +11 -0
  61. package/dist/types/platform-components/RecordContentSectionHeading.vue.d.ts +4 -2
  62. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +8 -3
  63. package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +7 -3
  64. package/dist/types/platform-components/RecordDetailFields.vue.d.ts +4 -6
  65. package/dist/types/platform-components/RecordFormFields.vue.d.ts +6 -6
  66. package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +11 -3
  67. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +2 -2
  68. package/dist/types/platform-components/RecordPicker.vue.d.ts +2 -2
  69. package/dist/types/platform-components/RecordQueryListCell.vue.d.ts +1 -1
  70. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +26 -4
  71. package/dist/types/platform-components/RecordQueryListSurface.vue.d.ts +20 -0
  72. package/dist/types/platform-components/ReferencePicker.vue.d.ts +47 -0
  73. package/dist/types/platform-components/ReferenceRecordDetailBrowser.vue.d.ts +55 -0
  74. package/dist/types/platform-components/ScopedTreePicker.vue.d.ts +31 -0
  75. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +5 -2
  76. package/dist/types/platform-components/UserPicker.vue.d.ts +47 -0
  77. package/dist/types/platform-components/dictionaryOptionDialogModel.d.ts +23 -0
  78. package/dist/types/platform-components/employeePickerModel.d.ts +19 -0
  79. package/dist/types/platform-components/identityPickerModel.d.ts +18 -0
  80. package/dist/types/platform-components/index.d.ts +32 -2
  81. package/dist/types/platform-components/optionFieldOptionCache.d.ts +1 -1
  82. package/dist/types/platform-components/queryCriteriaDraft.d.ts +24 -0
  83. package/dist/types/platform-components/queryReferencePickerProvider.d.ts +19 -0
  84. package/dist/types/platform-components/querySettlementController.d.ts +5 -0
  85. package/dist/types/platform-components/readonlyReferenceDisplay.d.ts +19 -0
  86. package/dist/types/platform-components/recordEditorSessionState.d.ts +11 -4
  87. package/dist/types/platform-components/recordFormFieldModel.d.ts +28 -2
  88. package/dist/types/platform-components/recordQueryListColumnModel.d.ts +10 -1
  89. package/dist/types/platform-components/recordQueryListQueryController.d.ts +36 -0
  90. package/dist/types/platform-components/recordTreeQueryController.d.ts +18 -0
  91. package/dist/types/platform-components/referencePickerModel.d.ts +105 -0
  92. package/dist/types/platform-components/referencePickerReadError.d.ts +24 -0
  93. package/dist/types/platform-components/referenceRecordDetailBrowser.d.ts +48 -0
  94. package/dist/types/platform-components/scopedTreePickerModel.d.ts +46 -0
  95. package/dist/types/platform-components/sourceReferencePickerProvider.d.ts +26 -0
  96. package/dist/types/platform-components/staticCrudManagementState.d.ts +7 -6
  97. package/dist/types/platform-components/userPickerModel.d.ts +45 -0
  98. package/dist/types/platform-components/userReferencePicker.d.ts +17 -0
  99. package/dist/types/platform-workbench/AssistantMarkdownContent.vue.d.ts +6 -0
  100. package/dist/types/platform-workbench/AssistantSelectionCard.vue.d.ts +15 -0
  101. package/dist/types/platform-workbench/Workbench.vue.d.ts +7 -2
  102. package/dist/types/platform-workbench/WorkbenchAssistantPanel.vue.d.ts +12 -0
  103. package/dist/types/platform-workbench/assistantMarkdown.d.ts +1 -0
  104. package/dist/types/platform-workbench/index.d.ts +1 -0
  105. package/dist/types/platform-workbench/useWorkspaceViewUnsavedState.d.ts +1 -1
  106. package/dist/types/platform-workbench/workbenchAssistantCapabilities.d.ts +3 -0
  107. package/dist/types/platform-workbench/workspaceViewHost.d.ts +1 -1
  108. package/dist/types/platform-workbench/workspaceViewUnsavedState.d.ts +3 -1
  109. package/dist/types/views/BusinessActivityLogView.vue.d.ts +3 -0
  110. package/dist/types/views/BusinessLogListDrawer.vue.d.ts +9 -0
  111. package/dist/types/views/BusinessLogRetentionControl.vue.d.ts +7 -0
  112. package/dist/types/views/LoginAuditLogView.vue.d.ts +3 -0
  113. package/dist/types/views/RequestErrorLogView.vue.d.ts +3 -0
  114. package/dist/types/views/RuntimeLogView.vue.d.ts +3 -0
  115. package/dist/types/views/businessLogClient.d.ts +88 -0
  116. package/dist/types/views/businessLogRetentionClient.d.ts +25 -0
  117. package/dist/types/views/dictionaryRadioEligibility.d.ts +18 -0
  118. package/dist/types/views/dictionaryRadioFactRequestEpoch.d.ts +10 -0
  119. package/dist/types/views/metadataGovernanceAssistantSurface.d.ts +122 -0
  120. package/dist/types/views/metadataModelChangeSetClient.d.ts +36 -0
  121. package/dist/types/views/metadataModelEditSession.d.ts +10 -1
  122. package/dist/types/views/metadataNaming.d.ts +4 -0
  123. package/dist/types/views/pageCompositionDraftState.d.ts +29 -0
  124. package/dist/types/views/roleDetailWorkspaceSession.d.ts +1 -0
  125. package/dist/types/views/roleGrantClient.d.ts +0 -1
  126. package/dist/types/views/runtimeLogClient.d.ts +12 -0
  127. package/dist/types/views/runtimeLogSse.d.ts +3 -0
  128. package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +15 -0
  129. package/dist/types/vue-ui-antdv/components/UiSearchInput.vue.d.ts +16 -2
  130. package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +23 -1
  131. package/dist/types/vue-ui-antdv/components/UiSidePanel.vue.d.ts +9 -2
  132. package/dist/types/vue-ui-antdv/components/UiTextArea.vue.d.ts +2 -0
  133. package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +1 -1
  134. package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +23 -1
  135. package/dist/types/vue-ui-antdv/drawerDismissal.d.ts +18 -0
  136. package/dist/types/vue-ui-antdv/drawerWidth.d.ts +22 -0
  137. package/dist/types/vue-ui-antdv/index.d.ts +4 -0
  138. package/dist/types/web-contracts/assistant.d.ts +59 -0
  139. package/dist/types/web-contracts/index.d.ts +67 -6
  140. package/dist/types/web-core/assistantRuntime.d.ts +77 -0
  141. package/dist/types/web-core/assistantSurface.d.ts +92 -0
  142. package/dist/types/web-core/assistantTurnClient.d.ts +8 -0
  143. package/dist/types/web-core/http.d.ts +2 -0
  144. package/dist/types/web-core/index.d.ts +4 -0
  145. package/dist/types/web-core/module/moduleContext.d.ts +15 -2
  146. package/dist/types/web-core/module/runtimeContext.d.ts +3 -2
  147. package/dist/types/web-core/module/staticModuleClient.d.ts +5 -1
  148. package/dist/types/web-core/sse.d.ts +9 -0
  149. package/dist/{workspaceViews-DI_1vYX9.js → workspaceViews-DijY4n32.js} +1190 -1085
  150. package/package.json +1 -1
  151. package/dist/RoleDetailWorkspaceView-D6X7pAj5.js +0 -1379
  152. package/dist/platform-workbench-DJj42YQP.js +0 -22911
@@ -1,10 +1,13 @@
1
1
  export {};
2
+ export type { QuerySettlementController } from './querySettlementController';
2
3
  export { default as FormulaExpressionEditor } from './FormulaExpressionEditor.vue';
3
4
  export type { FormulaExpressionField, FormulaExpressionFunction } from './formulaExpressionTokens';
4
5
  export { default as ApplicationScopeSwitcher } from './ApplicationScopeSwitcher.vue';
5
6
  export { default as BusinessNotificationPanel } from './BusinessNotificationPanel.vue';
6
7
  export { confirmAction } from '../vue-ui-antdv/index';
7
8
  export { UiModal } from '../vue-ui-antdv/index';
9
+ export { uiDrawerWidths as drawerWidths } from '../vue-ui-antdv/index';
10
+ export type { UiDrawerWidth as DrawerWidth } from '../vue-ui-antdv/index';
8
11
  export { default as CrudRecordListExplorer } from './CrudRecordListExplorer.vue';
9
12
  export { default as DrawerOperationBar } from './DrawerOperationBar.vue';
10
13
  export { default as DrawerTitleActions } from './DrawerTitleActions.vue';
@@ -32,6 +35,10 @@ export type { HeaderActionItem } from './AdaptiveHeaderActionBar.vue';
32
35
  export type { HeaderActionLevel } from './adaptiveHeaderActionLayout';
33
36
  export { default as RecordContentSectionHeading } from './RecordContentSectionHeading.vue';
34
37
  export { default as RecordDetailDrawer } from './RecordDetailDrawer.vue';
38
+ export { default as ReferenceRecordDetailBrowser } from './ReferenceRecordDetailBrowser.vue';
39
+ export { default as ReadonlyReferenceValue } from './ReadonlyReferenceValue.vue';
40
+ export { createReferenceRecordDetailBrowser, provideReferenceRecordDetailBrowser, } from './referenceRecordDetailBrowser';
41
+ export type { ReferenceRecordDetailBrowser as ReferenceRecordDetailBrowserState, ReferenceRecordDetailMutation, } from './referenceRecordDetailBrowser';
35
42
  export type { DrawerPromotion } from './drawerPromotion';
36
43
  export { default as RecordExternalChangeNotice } from './RecordExternalChangeNotice.vue';
37
44
  export { default as RecordDetailFields } from './RecordDetailFields.vue';
@@ -50,6 +57,11 @@ export { default as RecordExplorerPanel } from './RecordExplorerPanel.vue';
50
57
  export { default as RecordExplorerCreateButton } from './RecordExplorerCreateButton.vue';
51
58
  export type { RecordExplorerItemDescriptor } from './recordExplorerItemModel';
52
59
  export { default as RecordFormFields } from './RecordFormFields.vue';
60
+ export { default as DictionaryOptionDialog } from './DictionaryOptionDialog.vue';
61
+ export { default as DictionaryPicker } from './DictionaryPicker.vue';
62
+ export { default as DictionaryRadioGroup } from './DictionaryRadioGroup.vue';
63
+ export type { DictionaryOptionValue, DictionarySelectionMode } from './dictionaryOptionDialogModel';
64
+ export type { DictionaryPickerMode, DictionaryPickerValidity } from './DictionaryPicker.vue';
53
65
  export { default as RecordFieldLabel } from './RecordFieldLabel.vue';
54
66
  export { default as RecordFormGrid } from './RecordFormGrid.vue';
55
67
  export { default as RecordFileReferenceTransfer } from './RecordFileReferenceTransfer.vue';
@@ -58,6 +70,20 @@ export { default as RecordMetaSection } from './RecordMetaSection.vue';
58
70
  export { default as RecordModeDrawer } from './RecordModeDrawer.vue';
59
71
  export { default as RecordPicker } from './RecordPicker.vue';
60
72
  export { default as RecordMultiPicker } from './RecordMultiPicker.vue';
73
+ export { default as ReferencePicker } from './ReferencePicker.vue';
74
+ export { readonlyReferenceDisplay } from './readonlyReferenceDisplay';
75
+ export { createQueryReferencePickerProvider } from './queryReferencePickerProvider';
76
+ export { createSourceReferencePickerProvider, sourceReferencePickerReloadKey, } from './sourceReferencePickerProvider';
77
+ export { createUserReferencePickerProvider, userReferencePickerColumns } from './userReferencePicker';
78
+ export type { UserReferencePickerConfig } from './userReferencePicker';
79
+ export type { ReferencePickerAxisSelection, ReferencePickerBrowseScope, ReferencePickerCandidate, ReferencePickerColumn, ReferencePickerConfig, ReferencePickerId, ReferencePickerNavigationAxis, ReferencePickerNavigationItem, ReferencePickerPage, ReferencePickerPageRequest, ReferencePickerProvider, ReferencePickerSelectionSummary, ReferencePickerSourceIdentity, ReferencePickerTreeNode, ReferencePickerValidity, } from './referencePickerModel';
80
+ export { default as ObjectPickerInput } from './ObjectPickerInput.vue';
81
+ export { default as UserPicker } from './UserPicker.vue';
82
+ export { default as EmployeePicker } from './EmployeePicker.vue';
83
+ export { default as ScopedTreePicker } from './ScopedTreePicker.vue';
84
+ export type { UserAccountId, UserPickerCandidate, UserPickerPage, UserPickerPageRequest, UserPickerPageSearch, UserPickerResolver, UserPickerNavigation, UserPickerNavigationItem, UserPickerNavigationScope, } from './userPickerModel';
85
+ export type { EmployeeId, EmployeePickerCandidate, EmployeePickerConfig, EmployeePickerPage, EmployeePickerPageRequest, EmployeePickerPageSearch, EmployeePickerResolver, } from './employeePickerModel';
86
+ export type { ScopedTreePickerCandidate, ScopedTreePickerChildrenRequest, ScopedTreePickerConfig, ScopedTreePickerPage, ScopedTreePickerProvider, ScopedTreePickerRootRequest, } from './scopedTreePickerModel';
61
87
  export { default as RecordQueryListPanel } from './RecordQueryListPanel.vue';
62
88
  export { default as RecordQueryListCell } from './RecordQueryListCell.vue';
63
89
  export { default as RecycleBinModeButton } from './RecycleBinModeButton.vue';
@@ -82,6 +108,8 @@ export type { RecordDetailDisplayResolver, RecordDetailDisplayValue } from './re
82
108
  export type { RecordListExplorerRecord } from './RecordListExplorer.vue';
83
109
  export type { QueryListRecord, RecordQueryListCellComponent, RecordQueryListColumn, RecordQueryListMode, StandardCrudRowActionKey, } from './RecordQueryListPanel.vue';
84
110
  export { resolveRecordQueryListColumns } from './recordQueryListColumnModel';
111
+ export type { RecordQueryListQueryController, RecordQueryListQueryField, RecordQueryListQuerySnapshot, RecordQueryListResultRow, } from './recordQueryListQueryController';
112
+ export type { RecordTreeQueryController, RecordTreeQueryNode, RecordTreeQuerySnapshot, } from './recordTreeQueryController';
85
113
  export type { RecordFormFieldDescriptor, RecordFormFieldFallback, RecordFormFieldPickerConfig, RecordFormFieldState, RecordFieldRenderer, RecordFormFieldValue, RecordFormRecord, } from './recordFormFieldModel';
86
114
  export type { CrudRecordListBase } from './crudRecordListModel';
87
115
  export { defaultCrudRecordListMatches, defaultCrudRecordListSubtitle, defaultCrudRecordListTitle, } from './crudRecordListModel';
@@ -95,7 +123,7 @@ export { formatPlatformFileSize } from './platformFileSize';
95
123
  export type { PlatformFileSizeDisplay, PlatformFileSizeOptions } from './platformFileSize';
96
124
  export { providePlatformTimeZoneContext, usePlatformTimeZoneContext } from './platformTimeZoneContext';
97
125
  export type { PlatformDateTimeDisplay, PlatformDateTimeOptions, PlatformDateTimePrecision, } from './platformDateTime';
98
- export { applyReferenceDependencyClears, childResourceDefaultFormViewCode, resolveRecordDetailFields, resolveRecordFormFieldNames, resolveRecordBooleanStatusValue, resolveRecordFormFieldState, resolveRecordFormFields, evaluateUiFormula, recordFieldRendererRegistry, } from './recordFormFieldModel';
126
+ export { applyReferenceDependencyClears, childResourceDefaultFormViewCode, decodeDateTimeLocalEditorValue, decodeNumberEditorValue, resolveRecordDetailFields, resolveRecordFormFieldNames, resolveRecordBooleanStatusValue, resolveRecordFormFieldState, resolveRecordFormFields, evaluateUiFormula, recordFieldRendererRegistry, } from './recordFormFieldModel';
99
127
  export { createQueryScopedTreeModuleContext, createScopedTreeClient, createScopedTreeModuleContext, } from './scopedTreeModuleContext';
100
128
  export { createEmptyStaticTreeClient, createStaticTreeResourceModuleContext, } from './staticTreeResourceModuleContext';
101
129
  export { presentPlatformError, presentPlatformMessage, presentPlatformSuccess, } from './platformErrorFeedback';
@@ -104,7 +132,7 @@ export { createPlatformActionResultReactionHandlers, mergePlatformActionResultRe
104
132
  export type { PlatformActionResult, PlatformActionResultReaction, PlatformActionResultReactionHandler, PlatformActionResultReactionPayload, PlatformActionResultReactionType, PlatformActionResultStandardReactionHandlers, } from './platformActionResultReactions';
105
133
  export type { PlatformActionResultFeedbackContext, PlatformActionResultHandlingContext, } from './platformActionResultFeedback';
106
134
  export { executeStaticFormSave, executeStaticRecordAction } from './staticFormActionFlow';
107
- export { applyRecordExternalChange, createRecordEditorSessionState } from './recordEditorSessionState';
135
+ export { applyRecordExternalChange, createRecordEditorSessionState, recordDraftFingerprint, } from './recordEditorSessionState';
108
136
  export { useFlatCrudManagementState } from './staticCrudManagementState';
109
137
  export type { PlatformActionErrorHandler, PlatformErrorFeedbackContext } from './platformErrorFeedback';
110
138
  export type { StaticFormActionErrorContext, StaticFormActionErrorHandler, StaticFormSaveMode, StaticFormSaveOptions, StaticRecordActionOptions, } from './staticFormActionFlow';
@@ -116,3 +144,5 @@ export type { StaticTreeResourceModuleContextOptions } from './staticTreeResourc
116
144
  export { default as RecordRelationTable } from './RecordRelationTable.vue';
117
145
  export { default as RecordRelationValue } from './RecordRelationValue.vue';
118
146
  export { default as RecordPermissionDialog } from './RecordPermissionDialog.vue';
147
+ export { ReferencePickerReadError } from './referencePickerReadError';
148
+ export type { ReferencePickerReadErrorKind } from './referencePickerReadError';
@@ -1,3 +1,3 @@
1
1
  import type { OptionItemDescriptor } from '../web-contracts/index';
2
2
  import type { ModuleContext } from '../web-core/index';
3
- export declare function loadOptionFieldItems(context: ModuleContext<unknown>, fieldName: string, entityAlias?: string): Promise<OptionItemDescriptor[]>;
3
+ export declare function loadOptionFieldItems(context: ModuleContext<unknown>, fieldName: string, entityAlias?: string, moduleAlias?: string, forceRefresh?: boolean): Promise<OptionItemDescriptor[]>;
@@ -0,0 +1,24 @@
1
+ import type { QueryOperator } from '../web-contracts/index';
2
+ export interface QueryCriteriaConditionDraft {
3
+ kind: 'CONDITION';
4
+ id: number;
5
+ fieldName?: string;
6
+ operator?: QueryOperator;
7
+ values: unknown[];
8
+ }
9
+ export interface QueryCriteriaGroupDraft {
10
+ kind: 'GROUP';
11
+ id: number;
12
+ operator: 'AND' | 'OR';
13
+ children: QueryCriteriaDraftNode[];
14
+ }
15
+ export type QueryCriteriaDraftNode = QueryCriteriaConditionDraft | QueryCriteriaGroupDraft;
16
+ /**
17
+ * Mirrors the source-neutral execution limits in QueryCriteria. The server
18
+ * remains authoritative; keeping the limits here lets the composer identify
19
+ * the affected draft row before it sends a request that must be rejected.
20
+ */
21
+ export declare const QUERY_CRITERIA_MAXIMUM_DEPTH = 4;
22
+ export declare const QUERY_CRITERIA_MAXIMUM_NODES = 50;
23
+ export declare const QUERY_CRITERIA_MAXIMUM_COLLECTION_VALUES = 100;
24
+ export declare function isValueLessQueryOperator(operator: QueryOperator | undefined): operator is "NULL" | "NOT_NULL" | "EMPTY" | "NOT_EMPTY";
@@ -0,0 +1,19 @@
1
+ import type { QuerySchemaReference } from '../web-contracts/index';
2
+ import { type HttpClient } from '../web-core/index';
3
+ import type { ReferencePickerProvider } from './referencePickerModel';
4
+ export interface QueryReferencePickerProviderOptions {
5
+ /**
6
+ * The HTTP client from the target's REFERENCE module context. The provider constructs its own
7
+ * navigation-only client instead of accepting an arbitrary context CRUD client.
8
+ */
9
+ http: HttpClient;
10
+ reference: QuerySchemaReference;
11
+ }
12
+ /**
13
+ * Adapts a query schema's ordinary target reference to the shared picker contract.
14
+ *
15
+ * Query schemas deliberately have no source-field resolve contract or dependency semantics. The
16
+ * only permitted candidate transport here is the target module's REFERENCE navigator endpoint;
17
+ * this is intentionally different from both ordinary target CRUD and source-field resolution.
18
+ */
19
+ export declare function createQueryReferencePickerProvider({ http, reference, }: QueryReferencePickerProviderOptions): ReferencePickerProvider;
@@ -0,0 +1,5 @@
1
+ /** Shared settlement boundary for query-backed UI surfaces used by orchestration adapters. */
2
+ export interface QuerySettlementController<T = void> {
3
+ revision(): number;
4
+ settle(signal?: AbortSignal): Promise<T>;
5
+ }
@@ -0,0 +1,19 @@
1
+ import type { ResolvedReferenceFieldDescriptor } from '../web-contracts/index';
2
+ export interface ReadonlyReferenceDisplayItem {
3
+ id: string;
4
+ label: string;
5
+ /** Only a delivered, usable projection may enter the target-detail browser. */
6
+ browseable: boolean;
7
+ }
8
+ /**
9
+ * Formats only record-projected reference facts. It never resolves candidates: an absent title
10
+ * remains the persisted ID, which distinguishes an unavailable projection from a deleted or
11
+ * unauthorized target.
12
+ */
13
+ export declare function readonlyReferenceDisplay(reference: Pick<ResolvedReferenceFieldDescriptor, 'cardinality'>, value: unknown, summary: unknown): string | undefined;
14
+ /**
15
+ * Keeps the persisted reference order while retaining enough projection identity for the shared
16
+ * read-only browser. A raw ID intentionally remains non-interactive: it may be absent, deleted,
17
+ * or hidden by a target data scope.
18
+ */
19
+ export declare function readonlyReferenceDisplayItems(reference: Pick<ResolvedReferenceFieldDescriptor, 'cardinality'>, value: unknown, summary: unknown): ReadonlyReferenceDisplayItem[];
@@ -1,4 +1,11 @@
1
+ import { type Ref } from 'vue';
1
2
  import { type WebDataChange } from '../web-contracts/index';
3
+ /**
4
+ * Produces a stable value snapshot for a record draft. Editor sessions use it
5
+ * as a local baseline: returning every edited field to its starting value is
6
+ * not an unsaved change.
7
+ */
8
+ export declare function recordDraftFingerprint(value: unknown): string;
2
9
  export interface RecordEditorSessionOptions<TRecord, TMode extends string> {
3
10
  viewMode: TMode;
4
11
  createMode: TMode;
@@ -18,12 +25,12 @@ export interface RecordExternalChangeOptions {
18
25
  changeTypes?: string[];
19
26
  }
20
27
  export declare function createRecordEditorSessionState<TRecord, TMode extends string>(options: RecordEditorSessionOptions<TRecord, TMode>): {
21
- selected: import("vue").Ref<TRecord | undefined, TRecord | undefined>;
22
- draft: [TRecord] extends [import("vue").Ref<any, any>] ? import("@vue/shared").IfAny<TRecord, import("vue").Ref<TRecord, TRecord>, TRecord> : import("vue").Ref<import("vue").UnwrapRef<TRecord>, TRecord | import("vue").UnwrapRef<TRecord>>;
23
- mode: [TMode] extends [import("vue").Ref<any, any>] ? import("@vue/shared").IfAny<TMode, import("vue").Ref<TMode, TMode>, TMode> : import("vue").Ref<import("vue").UnwrapRef<TMode>, TMode | import("vue").UnwrapRef<TMode>>;
28
+ selected: Ref<TRecord | undefined, TRecord | undefined>;
29
+ draft: Ref<TRecord, TRecord>;
30
+ mode: Ref<TMode, TMode>;
24
31
  readonly: import("vue").ComputedRef<boolean>;
25
32
  externallyChanged: import("vue").ComputedRef<boolean>;
26
- externalChangedRecordId: import("vue").Ref<string | undefined, string | undefined>;
33
+ externalChangedRecordId: Ref<string | undefined, string | undefined>;
27
34
  select: (record: TRecord) => void;
28
35
  replaceSelected: (record: TRecord | undefined) => void;
29
36
  clearSelection: () => void;
@@ -3,6 +3,8 @@ import type { ModuleContext } from '../web-core/index';
3
3
  import type { PickerConstraint, RecordPickerRecord } from './recordPickerConstraints';
4
4
  import type { WebTreeNode } from '../web-contracts/index';
5
5
  import type { RecordPickerMode } from './recordPickerModel';
6
+ import type { ScopedTreePickerProvider } from './scopedTreePickerModel';
7
+ import type { ReferencePickerColumn, ReferencePickerProvider } from './referencePickerModel';
6
8
  export type RecordFormFieldDescriptor = (ViewFieldDefinition | ResolvedViewFieldDescriptor) & {
7
9
  /** Optional during the protocol migration; resolved descriptors take precedence over legacy uiType. */
8
10
  fieldControl?: ResolvedFieldControlDescriptor;
@@ -36,7 +38,9 @@ export type JsonValue = null | boolean | number | string | JsonValue[] | {
36
38
  };
37
39
  /** A business boolean does not inherit the lifecycle field's implicit enabled default. */
38
40
  export type RecordBooleanStatusValue = boolean | undefined;
39
- export type RecordFormFieldControlType = 'input' | 'numberInput' | 'dateInput' | 'dateTimeInput' | 'textarea' | 'colorPicker' | 'select' | 'enabledStatus' | 'booleanStatus' | 'switch' | 'recordPicker' | 'recordMultiPicker' | 'fileTransfer' | 'imageFileTransfer' | 'unsupported';
41
+ export type RecordFormFieldControlType = 'input' | 'numberInput' | 'dateInput' | 'dateTimeInput' | 'textarea' | 'colorPicker' | 'select' | 'enabledStatus' | 'booleanStatus' | 'switch' | 'recordPicker' | 'recordMultiPicker' | 'dictionaryPicker' | 'dictionaryRadioGroup' | 'fileTransfer' | 'imageFileTransfer' | 'unsupported';
42
+ /** The only source-field reference presentations implemented by the common picker. */
43
+ export type RecordFormReferencePickerPresentation = 'dropdown' | 'dialog';
40
44
  export interface RecordFieldRenderer {
41
45
  rendererType: string;
42
46
  controlType: Exclude<RecordFormFieldControlType, 'unsupported'>;
@@ -60,10 +64,14 @@ export interface RecordFormFieldFallback {
60
64
  }
61
65
  export interface RecordFormFieldPickerConfig {
62
66
  context: ModuleContext<RecordPickerRecord>;
67
+ /** Source-authorized, paged reference delivery for the common picker. */
68
+ provider?: ReferencePickerProvider;
69
+ /** Candidate columns are presentation only; identity and authorization stay with the provider. */
70
+ columns?: readonly ReferencePickerColumn[];
63
71
  loadOptions?: (keyword: string) => Promise<RecordPickerRecord[]>;
64
72
  loadTree?: () => Promise<WebTreeNode<RecordPickerRecord>[]>;
65
73
  resolveOptions?: (values: string[]) => Promise<RecordPickerRecord[]>;
66
- reloadKey?: number;
74
+ reloadKey?: string | number;
67
75
  mode?: RecordPickerMode;
68
76
  placeholder?: string;
69
77
  allowClear?: boolean;
@@ -71,6 +79,17 @@ export interface RecordFormFieldPickerConfig {
71
79
  titleOf?: (record: RecordPickerRecord) => string;
72
80
  descriptionOf?: (record: RecordPickerRecord) => string | undefined;
73
81
  filterOption?: (record: RecordPickerRecord, keyword: string) => boolean;
82
+ /**
83
+ * Optional expanded tree navigation for a reference that keeps its ordinary compact picker.
84
+ * The host owns whether its declared effective scope is ready; this generic form model does
85
+ * not infer tenant or organization rules from field names.
86
+ */
87
+ scopedTree?: {
88
+ title?: string;
89
+ disabled?: boolean;
90
+ unavailableMessage?: string;
91
+ provider: ScopedTreePickerProvider;
92
+ };
74
93
  }
75
94
  export interface RecordFormFieldState {
76
95
  fieldName: string;
@@ -93,6 +112,13 @@ export interface RecordFormFieldState {
93
112
  optionTitleField?: string;
94
113
  optionItems?: import('../web-contracts/index').OptionItemDescriptor[];
95
114
  referenceTitleField?: string;
115
+ /** The compiled reference contract remains available to read-only detail and list renderers. */
116
+ reference?: ResolvedReferenceFieldDescriptor;
117
+ /**
118
+ * Source-neutral presentation resolved from the field control. It is intentionally separate
119
+ * from the provider: the descriptor chooses presentation while the host owns transport.
120
+ */
121
+ referencePickerPresentation?: RecordFormReferencePickerPresentation;
96
122
  /** Title for the standard TreeAbility root sentinel when this field is a tree parent reference. */
97
123
  treeRootTitle?: string;
98
124
  fileReference?: ResolvedFileReferenceFieldDescriptor;
@@ -1,4 +1,4 @@
1
- import type { OptionItemDescriptor, QuerySchemaField, ResolvedViewDescriptor, ResolvedViewFieldDescriptor } from '../web-contracts/index';
1
+ import type { OptionItemDescriptor, QuerySchemaField, ResolvedViewDescriptor, ResolvedViewFieldDescriptor, ResolvedReferenceFieldDescriptor } from '../web-contracts/index';
2
2
  import type { Component } from 'vue';
3
3
  export type QueryListRecord = Record<string, unknown> & {
4
4
  id?: string;
@@ -18,6 +18,8 @@ export interface RecordQueryListColumn {
18
18
  width?: string;
19
19
  align?: 'left' | 'center' | 'right';
20
20
  titleField?: string;
21
+ /** Compiled reference facts for pure read-side title/summary rendering. */
22
+ reference?: ResolvedReferenceFieldDescriptor;
21
23
  /** Only descriptor-declared option fields load a runtime option catalog. */
22
24
  optionBinding?: boolean;
23
25
  /** Dynamic child entity whose declared option binding owns this field. */
@@ -27,11 +29,16 @@ export interface RecordQueryListColumn {
27
29
  /** Maximum visible lines for text cells. Defaults to one line. */
28
30
  maxDisplayLines?: number;
29
31
  render?: (record: QueryListRecord) => string;
32
+ /** Explicit list-presentation policy for excluding a visible column from assistant projection. */
33
+ assistantReadable?: boolean;
30
34
  }
31
35
  export interface RecordQueryListCellComponent {
32
36
  key: string;
33
37
  component: Component;
34
38
  }
39
+ export interface RecordQueryListDisplayContext {
40
+ timeZone?: string;
41
+ }
35
42
  /**
36
43
  * Compiles the source-neutral resolved list descriptor into the standard table's presentation model.
37
44
  *
@@ -40,3 +47,5 @@ export interface RecordQueryListCellComponent {
40
47
  * query schema for timestamp and option-title information.
41
48
  */
42
49
  export declare function resolveRecordQueryListColumns(view: ResolvedViewDescriptor | undefined, queryFields?: readonly QuerySchemaField[]): RecordQueryListColumn[];
50
+ /** Pure standard-cell projection shared by the rendered list and assistant-visible result summary. */
51
+ export declare function resolveRecordQueryListDisplayValue(record: QueryListRecord, column: RecordQueryListColumn, cellRenderers?: Record<string, (record: QueryListRecord) => string>, context?: RecordQueryListDisplayContext): string;
@@ -0,0 +1,36 @@
1
+ import type { QueryValueType } from '../web-contracts/index';
2
+ import type { QuerySettlementController } from './querySettlementController';
3
+ export interface RecordQueryListQueryField {
4
+ name: string;
5
+ title: string;
6
+ valueType: QueryValueType;
7
+ }
8
+ export interface RecordQueryListResultRow {
9
+ id?: string;
10
+ cells: Array<{
11
+ fieldName: string;
12
+ title: string;
13
+ value: unknown;
14
+ }>;
15
+ }
16
+ export interface RecordQueryListQuerySnapshot {
17
+ mode: 'normal' | 'recycleBin';
18
+ status: 'waiting' | 'loading' | 'ready' | 'error';
19
+ quickSearchEnabled: boolean;
20
+ quickSearchFields: RecordQueryListQueryField[];
21
+ appliedQuickSearch?: string;
22
+ pageNum: number;
23
+ pageSize: number;
24
+ total: number;
25
+ totalKnown: boolean;
26
+ rows: RecordQueryListResultRow[];
27
+ truncated: boolean;
28
+ }
29
+ /** Public list-query port used by orchestration adapters without owning list state. */
30
+ export interface RecordQueryListQueryController extends QuerySettlementController<RecordQueryListQuerySnapshot> {
31
+ /** Stable signature of user-controlled scope, filters, sorting and pagination. */
32
+ interactionRevision?(): string;
33
+ snapshot(): RecordQueryListQuerySnapshot;
34
+ /** Waits until the current reactive query transition and any active load have settled. */
35
+ applyQuickSearch(keyword: string): Promise<RecordQueryListQuerySnapshot>;
36
+ }
@@ -0,0 +1,18 @@
1
+ import type { QuerySettlementController } from './querySettlementController';
2
+ export interface RecordTreeQueryNode {
3
+ selectionKey: string;
4
+ title: string;
5
+ secondary?: string;
6
+ }
7
+ export interface RecordTreeQuerySnapshot {
8
+ status: 'loading' | 'ready' | 'error';
9
+ selectedTitle?: string;
10
+ nodes: RecordTreeQueryNode[];
11
+ truncated: boolean;
12
+ }
13
+ /** Public tree-query port used by orchestration adapters without owning tree state. */
14
+ export interface RecordTreeQueryController extends QuerySettlementController<void> {
15
+ snapshot(): RecordTreeQuerySnapshot;
16
+ /** Selects one node through an opaque key from the current snapshot. */
17
+ select(selectionKey: string): RecordTreeQueryNode;
18
+ }
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Source-neutral candidate contract for records selected through an authorized
3
+ * reference source. IDs are the only persisted value; projections are display
4
+ * data and affectPatch remains an explicit, host-owned extension.
5
+ */
6
+ export type ReferencePickerId = string;
7
+ /** Whether the compact entry still represents the persisted reference selection. */
8
+ export interface ReferencePickerValidity {
9
+ valid: boolean;
10
+ status: 'ready' | 'editing' | 'resolving' | 'unmatched' | 'error';
11
+ message?: string;
12
+ }
13
+ export interface ReferencePickerSourceIdentity {
14
+ targetModuleAlias: string;
15
+ source: {
16
+ kind: 'sourceField' | 'businessPurpose' | 'targetReference';
17
+ id: string;
18
+ };
19
+ /** A source-controlled authorization/range revision when it is available. */
20
+ authorizationScope?: string;
21
+ }
22
+ export interface ReferencePickerCandidate {
23
+ id: ReferencePickerId;
24
+ title: string;
25
+ /** The UI is displaying the persisted identifier because no business title was available. */
26
+ identifierFallback?: boolean;
27
+ subtitle?: string;
28
+ disabled?: boolean;
29
+ unavailable?: boolean;
30
+ projections?: Readonly<Record<string, unknown>>;
31
+ affectPatch?: Readonly<Record<string, unknown>>;
32
+ }
33
+ export interface ReferencePickerAxisSelection {
34
+ axisId: string;
35
+ itemId: string;
36
+ }
37
+ export interface ReferencePickerBrowseScope {
38
+ selections: readonly ReferencePickerAxisSelection[];
39
+ }
40
+ export interface ReferencePickerNavigationItem {
41
+ id: string;
42
+ title: string;
43
+ disabled?: boolean;
44
+ }
45
+ /** A declared browse axis. The picker clears dependent selections on an upstream change. */
46
+ export interface ReferencePickerNavigationAxis {
47
+ id: string;
48
+ title: string;
49
+ dependsOn?: readonly string[];
50
+ items: readonly ReferencePickerNavigationItem[];
51
+ }
52
+ export interface ReferencePickerPageRequest {
53
+ keyword: string;
54
+ pageNum: number;
55
+ pageSize: number;
56
+ scope: ReferencePickerBrowseScope;
57
+ }
58
+ export interface ReferencePickerPage<TCandidate extends ReferencePickerCandidate = ReferencePickerCandidate> {
59
+ records: TCandidate[];
60
+ total: number;
61
+ navigation?: readonly ReferencePickerNavigationAxis[];
62
+ }
63
+ /** A complete, source-authorized browse tree. It is never synthesized from paged query results. */
64
+ export interface ReferencePickerTreeNode<TCandidate extends ReferencePickerCandidate = ReferencePickerCandidate> {
65
+ record: TCandidate;
66
+ children?: ReferencePickerTreeNode<TCandidate>[];
67
+ }
68
+ export interface ReferencePickerProvider<TCandidate extends ReferencePickerCandidate = ReferencePickerCandidate> {
69
+ identity: ReferencePickerSourceIdentity;
70
+ searchPage(request: ReferencePickerPageRequest): Promise<ReferencePickerPage<TCandidate>>;
71
+ /**
72
+ * Reads the complete tree under the source's authorization scope. Dialog browse uses this only
73
+ * without a keyword; keyword search remains server-paged through searchPage.
74
+ */
75
+ loadTree?: (request: {
76
+ scope: ReferencePickerBrowseScope;
77
+ }) => Promise<ReferencePickerTreeNode<TCandidate>[]>;
78
+ /** Resolves persisted IDs under the source's authorized historical-display scope. */
79
+ resolve(ids: ReferencePickerId[]): Promise<TCandidate[]>;
80
+ }
81
+ export interface ReferencePickerColumn {
82
+ key: string;
83
+ title: string;
84
+ width?: number;
85
+ }
86
+ /** Compiled page/query configuration for a standard reference interaction. */
87
+ export interface ReferencePickerConfig {
88
+ provider: ReferencePickerProvider;
89
+ mode?: 'dialog' | 'dropdown';
90
+ columns?: readonly ReferencePickerColumn[];
91
+ title?: string;
92
+ placeholder?: string;
93
+ searchPlaceholder?: string;
94
+ maxSelection?: number;
95
+ reloadKey?: string | number;
96
+ }
97
+ export interface ReferencePickerSelectionSummary {
98
+ id: ReferencePickerId;
99
+ title: string;
100
+ subtitle?: string;
101
+ unavailable?: boolean;
102
+ }
103
+ export declare function normalizeReferencePickerIds(value: ReferencePickerId | readonly ReferencePickerId[] | undefined, multiple: boolean): ReferencePickerId[];
104
+ export declare function referencePickerValue(ids: readonly ReferencePickerId[], multiple: boolean): ReferencePickerId | ReferencePickerId[] | undefined;
105
+ export declare function referencePickerSummary(candidate: ReferencePickerCandidate): ReferencePickerSelectionSummary;
@@ -0,0 +1,24 @@
1
+ import { AppError } from '../web-core/index';
2
+ export type ReferencePickerReadErrorKind = 'accessDenied' | 'missingDependencies' | 'unsupportedConfiguration' | 'temporaryFailure';
3
+ /**
4
+ * The picker only classifies facts carried by AppError or facts its source can
5
+ * prove locally. It deliberately never derives a category from an error message.
6
+ */
7
+ export declare class ReferencePickerReadError extends AppError {
8
+ readonly kind: ReferencePickerReadErrorKind;
9
+ readonly retryable: boolean;
10
+ readonly missingDependencyFields: readonly string[];
11
+ readonly original: AppError;
12
+ constructor(kind: ReferencePickerReadErrorKind, message: string, options: {
13
+ retryable: boolean;
14
+ missingDependencyFields?: readonly string[];
15
+ original?: AppError;
16
+ });
17
+ }
18
+ /**
19
+ * Returns undefined for 401 so the request client's authentication lifecycle
20
+ * remains the sole owner of login recovery and redirect behavior.
21
+ */
22
+ export declare function referencePickerReadErrorOf(cause: unknown, fallbackMessage: string): ReferencePickerReadError | undefined;
23
+ export declare function missingReferencePickerDependencies(sourceFields: readonly string[]): ReferencePickerReadError;
24
+ export declare function unsupportedReferencePickerConfiguration(message: string): ReferencePickerReadError;
@@ -0,0 +1,48 @@
1
+ import { type InjectionKey } from 'vue';
2
+ import { type HttpClient, type ModuleContext } from '../web-core/index';
3
+ import type { QueryListRecord } from './recordQueryListColumnModel';
4
+ import { type RecordFormFieldDescriptor } from './recordFormFieldModel';
5
+ export type ActiveReferenceRecord = {
6
+ targetModuleAlias: string;
7
+ recordId: string;
8
+ record?: QueryListRecord;
9
+ loading: boolean;
10
+ /** A record-only editor owns an in-flight target mutation. */
11
+ busy?: boolean;
12
+ failed: boolean;
13
+ failureKind?: 'notFound' | 'temporary';
14
+ };
15
+ export type ReferenceRecordDetailMutation = {
16
+ targetModuleAlias: string;
17
+ recordId: string;
18
+ type: 'saved' | 'deleted' | 'unavailable';
19
+ record?: QueryListRecord;
20
+ };
21
+ export interface ReferenceRecordDetailBrowser {
22
+ revision: {
23
+ value: number;
24
+ };
25
+ active: {
26
+ value: ActiveReferenceRecord | undefined;
27
+ };
28
+ activeContext: {
29
+ value: ModuleContext<QueryListRecord> | undefined;
30
+ };
31
+ fields: {
32
+ value: Map<string, RecordFormFieldDescriptor>;
33
+ };
34
+ title: {
35
+ value: string;
36
+ };
37
+ canBrowse(targetModuleAlias: string, recordId: string): boolean;
38
+ open(targetModuleAlias: string, recordId: string): void;
39
+ setBusy(targetModuleAlias: string, recordId: string, busy: boolean): void;
40
+ reportMutation(mutation: ReferenceRecordDetailMutation): void;
41
+ close(): void;
42
+ /** Component teardown bypasses the user-facing busy close gate. */
43
+ dispose(): void;
44
+ }
45
+ export declare const referenceRecordDetailBrowserKey: InjectionKey<ReferenceRecordDetailBrowser | undefined>;
46
+ export declare function createReferenceRecordDetailBrowser(http: HttpClient): ReferenceRecordDetailBrowser;
47
+ export declare function provideReferenceRecordDetailBrowser(browser: ReferenceRecordDetailBrowser): void;
48
+ export declare function useReferenceRecordDetailBrowser(): ReferenceRecordDetailBrowser | undefined;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * An authorized, source-owned record projection for a lazily loaded tree selector.
3
+ * The component deliberately does not infer a parent, tenant, or module from this shape.
4
+ */
5
+ export interface ScopedTreePickerCandidate {
6
+ id: string;
7
+ title: string;
8
+ /** A provider may return a path, code, or scope summary to disambiguate equal titles. */
9
+ subtitle?: string;
10
+ /** False keeps the item expandable and asks the provider for children when it is expanded. */
11
+ isLeaf?: boolean;
12
+ disabled?: boolean;
13
+ unavailable?: boolean;
14
+ }
15
+ export interface ScopedTreePickerRootRequest {
16
+ /** Provider-defined search text. An empty string requests the current scope roots. */
17
+ keyword: string;
18
+ signal: AbortSignal;
19
+ }
20
+ export interface ScopedTreePickerChildrenRequest extends ScopedTreePickerRootRequest {
21
+ parent: ScopedTreePickerCandidate;
22
+ /** Opaque continuation supplied by an earlier child response when the provider supports paging. */
23
+ cursor?: string;
24
+ }
25
+ export interface ScopedTreePickerPage {
26
+ records: ScopedTreePickerCandidate[];
27
+ hasMore?: boolean;
28
+ nextCursor?: string;
29
+ }
30
+ /**
31
+ * A source-owned delivery boundary. The caller may use a static reference resolver, a dedicated
32
+ * candidate endpoint, or another authorized source; this component has no module-path knowledge.
33
+ */
34
+ export interface ScopedTreePickerProvider {
35
+ loadRoot: (request: ScopedTreePickerRootRequest) => Promise<ScopedTreePickerPage>;
36
+ loadChildren: (request: ScopedTreePickerChildrenRequest) => Promise<ScopedTreePickerPage>;
37
+ /** Resolves persisted IDs through the same authorization and effective-scope rule. */
38
+ resolve: (ids: string[]) => Promise<ScopedTreePickerCandidate[]>;
39
+ }
40
+ export interface ScopedTreePickerConfig {
41
+ title?: string;
42
+ placeholder?: string;
43
+ searchPlaceholder?: string;
44
+ provider: ScopedTreePickerProvider;
45
+ }
46
+ export declare function scopedTreePickerValue(value: string | undefined): string | undefined;
@@ -0,0 +1,26 @@
1
+ import type { ResolvedReferenceFieldDescriptor } from '../web-contracts/index';
2
+ import type { ReferenceResolveClient } from '../web-core/index';
3
+ import type { ReferencePickerProvider } from './referencePickerModel';
4
+ export interface SourceReferencePickerProviderOptions {
5
+ sourceModuleAlias: string;
6
+ fieldName: string;
7
+ reference: ResolvedReferenceFieldDescriptor;
8
+ /** Obtained at request time so a retained provider does not capture a replaced module context. */
9
+ resolver: () => ReferenceResolveClient;
10
+ /** Read at request time so a stable provider always uses the current draft. */
11
+ formValues: () => Record<string, unknown>;
12
+ source: () => {
13
+ recordId: string;
14
+ } | undefined;
15
+ }
16
+ /**
17
+ * Adapts the source-field resolver to the neutral picker contract. It deliberately carries no
18
+ * target-module query fallback: the declaring source field remains the authority for candidate
19
+ * eligibility, projections and patches.
20
+ */
21
+ export declare function createSourceReferencePickerProvider({ sourceModuleAlias, fieldName, reference, resolver, formValues, source, }: SourceReferencePickerProviderOptions): ReferencePickerProvider;
22
+ /**
23
+ * Only source identity, persisted record scope and declared candidate dependencies invalidate a
24
+ * picker. This avoids resetting pagination or re-querying for unrelated form edits.
25
+ */
26
+ export declare function sourceReferencePickerReloadKey(sourceModuleAlias: string, fieldName: string, reference: ResolvedReferenceFieldDescriptor, record: Record<string, unknown> | undefined): string;
@@ -1,3 +1,4 @@
1
+ import { type Ref } from 'vue';
1
2
  import { type ModuleContext } from '../web-core/index';
2
3
  import type { UiConfirmOptions } from '../vue-ui-antdv/index';
3
4
  import { type PlatformActionResultReactionHandler } from './platformActionResultFeedback';
@@ -41,12 +42,12 @@ export interface StaticCrudManagementOptions<TRecord extends StaticCrudRecord> {
41
42
  actionResultReactionHandlers?: Record<string, PlatformActionResultReactionHandler | undefined>;
42
43
  }
43
44
  export declare function useFlatCrudManagementState<TRecord extends StaticCrudRecord>(options: StaticCrudManagementOptions<TRecord>): {
44
- selected: import("vue").Ref<TRecord | undefined, TRecord | undefined>;
45
- draft: [TRecord] extends [import("vue").Ref<any, any>] ? import("@vue/shared").IfAny<TRecord, import("vue").Ref<TRecord, TRecord>, TRecord> : import("vue").Ref<import("vue").UnwrapRef<TRecord>, TRecord | import("vue").UnwrapRef<TRecord>>;
46
- mode: import("vue").Ref<StaticCrudCardMode, StaticCrudCardMode>;
47
- reloadKey: import("vue").Ref<number, number>;
48
- saving: import("vue").Ref<boolean, boolean>;
49
- actionError: import("vue").Ref<string | undefined, string | undefined>;
45
+ selected: Ref<TRecord | undefined, TRecord | undefined>;
46
+ draft: Ref<TRecord, TRecord>;
47
+ mode: Ref<StaticCrudCardMode, StaticCrudCardMode>;
48
+ reloadKey: Ref<number, number>;
49
+ saving: Ref<boolean, boolean>;
50
+ actionError: Ref<string | undefined, string | undefined>;
50
51
  cardTitle: import("vue").ComputedRef<string>;
51
52
  readonly: import("vue").ComputedRef<boolean>;
52
53
  canCreate: import("vue").ComputedRef<boolean>;