@ximatai/muyun-web-app 0.26.7 → 0.26.8

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 (87) hide show
  1. package/dist/{EmployeeDetailWorkspaceView-DYJLlkSz.js → EmployeeDetailWorkspaceView-DswEDSxH.js} +1 -1
  2. package/dist/{EmployeeManagementView-taxWUa7g.js → EmployeeManagementView-C9STtw08.js} +385 -386
  3. package/dist/{MetadataOrchestrationView-B-CPudJl.js → MetadataOrchestrationView-DKYVGMzy.js} +95 -95
  4. package/dist/{ModuleActionManagementView-CmVj0e0C.js → ModuleActionManagementView-DiVzuPdu.js} +72 -72
  5. package/dist/{RoleAuthorizationView-q_6CsBYq.js → RoleAuthorizationView-C0s4Bog7.js} +47 -47
  6. package/dist/{RoleDetailWorkspaceView-DmJlJgAj.js → RoleDetailWorkspaceView-dqHxKVfd.js} +1 -1
  7. package/dist/{RoleManagementView-HCa9rH0f.js → RoleManagementView-D43pUCxi.js} +468 -469
  8. package/dist/{SystemUserDetailWorkspaceView-U6Ij0US1.js → SystemUserDetailWorkspaceView-CQ9WeLrR.js} +1 -1
  9. package/dist/SystemUserManagementView-D75_ylYk.js +758 -0
  10. package/dist/{UserDetailWorkspaceView-OPYvD6mH.js → UserDetailWorkspaceView-BCST01d2.js} +1 -1
  11. package/dist/UserManagementView-CcdvDo_y.js +964 -0
  12. package/dist/index.css +1 -1
  13. package/dist/index.js +2278 -4726
  14. package/dist/{pageRealtime-CzJlr9hs.js → pageRealtime-EAiGWKEo.js} +87 -85
  15. package/dist/{platform-components-DKKWbNrz.js → platform-components-CFU_zR7-.js} +2145 -1866
  16. package/dist/types/app/workbenchStartup.d.ts +6 -2
  17. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +2 -2
  18. package/dist/types/consumer/index.d.ts +4 -3
  19. package/dist/types/dynamic-page-runtime/DynamicModuleWorkspaceDetailView.vue.d.ts +10 -0
  20. package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +38 -0
  21. package/dist/types/dynamic-page-runtime/NavigatorManagementEditor.vue.d.ts +25 -0
  22. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +43 -0
  23. package/dist/types/dynamic-page-runtime/detailSurfacePreference.d.ts +10 -0
  24. package/dist/types/dynamic-page-runtime/index.d.ts +2 -1
  25. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +38 -0
  26. package/dist/types/dynamic-page-runtime/modulePageNavigation.d.ts +1 -1
  27. package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +6 -0
  28. package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +27 -0
  29. package/dist/types/platform-admin-runtime/index.d.ts +1 -1
  30. package/dist/types/platform-admin-runtime/platformAdminRoutes.d.ts +5 -0
  31. package/dist/types/platform-admin-runtime/realtime.d.ts +2 -1
  32. package/dist/types/platform-components/BusinessNotificationPanel.vue.d.ts +12 -0
  33. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +6 -0
  34. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +5 -3
  35. package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +8 -2
  36. package/dist/types/platform-components/RecordActionBar.vue.d.ts +1 -1
  37. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +4 -1
  38. package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +8 -6
  39. package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +7 -5
  40. package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +4 -1
  41. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +1 -1
  42. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +2 -0
  43. package/dist/types/platform-components/RecordPicker.vue.d.ts +1 -1
  44. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +9 -2
  45. package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -0
  46. package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +13 -7
  47. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +3 -0
  48. package/dist/types/platform-components/index.d.ts +4 -2
  49. package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
  50. package/dist/types/platform-components/recordFormFieldModel.d.ts +2 -2
  51. package/dist/types/platform-components/recycleBinState.d.ts +2 -0
  52. package/dist/types/platform-components/scopedTreeModuleContext.d.ts +11 -0
  53. package/dist/types/platform-workbench/index.d.ts +1 -0
  54. package/dist/types/platform-workbench/menuNavigation.d.ts +3 -0
  55. package/dist/types/platform-workbench/modulePageWorkspaceViews.d.ts +7 -0
  56. package/dist/types/platform-workbench/workbenchLayout.d.ts +36 -0
  57. package/dist/types/platform-workbench/workbenchNavigation.d.ts +2 -0
  58. package/dist/types/platform-workbench/workspaceViewHost.d.ts +2 -0
  59. package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +1 -1
  60. package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +1 -1
  61. package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
  62. package/dist/types/vue-ui-antdv/components/UiModal.vue.d.ts +1 -1
  63. package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +1 -1
  64. package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +7 -1
  65. package/dist/types/vue-ui-antdv/index.d.ts +1 -0
  66. package/dist/types/web-contracts/index.d.ts +110 -17
  67. package/dist/types/web-core/businessNotifications.d.ts +3 -0
  68. package/dist/types/web-core/index.d.ts +1 -0
  69. package/dist/types/web-core/module/moduleContext.d.ts +1 -0
  70. package/dist/types/web-core/module/runtimeContext.d.ts +3 -1
  71. package/dist/types/web-core/module/staticModuleClient.d.ts +8 -1
  72. package/dist/types/web-core/realtime.d.ts +5 -1
  73. package/dist/{useUserSessionRows-CBHEzRFQ.js → useUserSessionRows-DCpUZCzN.js} +2 -2
  74. package/dist/workspaceViewSessions-Dj1LjdG1.js +4984 -0
  75. package/package.json +1 -1
  76. package/dist/SystemUserManagementView-C1CkKivH.js +0 -758
  77. package/dist/UserManagementView-gbCL9SnC.js +0 -965
  78. package/dist/currentUserContext-B1lj1WgF.js +0 -11
  79. package/dist/types/views/ApplicationManagementView.vue.d.ts +0 -3
  80. package/dist/types/views/DepartmentManagementView.vue.d.ts +0 -3
  81. package/dist/types/views/FieldSpecManagementView.vue.d.ts +0 -3
  82. package/dist/types/views/OrganizationManagementView.vue.d.ts +0 -3
  83. package/dist/types/views/applicationManagementState.d.ts +0 -64
  84. package/dist/types/views/departmentManagementState.d.ts +0 -137
  85. package/dist/types/views/fieldSpecManagementState.d.ts +0 -80
  86. package/dist/types/views/organizationManagementState.d.ts +0 -64
  87. package/dist/workspaceViewSessions-DkB9myrq.js +0 -3252
@@ -29,8 +29,12 @@ export declare function closeMenuTabs(tabs: MenuTab[], activeTabKey: string | un
29
29
  };
30
30
  /** Keeps account-pinned tabs at the left while ordinary tab order remains a browser-session concern. */
31
31
  export declare function arrangeLockedMenuTabs(tabs: MenuTab[], lockedTabs: MenuTab[], includeMissingLockedTabs?: boolean): MenuTab[];
32
- /** Restores only currently visible tab menus, rebuilding their descriptors from the active menu scheme. */
33
- export declare function restoreLockedMenuTabs(lockedTabs: MenuTab[], menus: MenuTreeNode[], options?: PageDescriptorResolveOptions): MenuTab[];
32
+ /**
33
+ * Restores account-locked tabs from two authority-checked sources only:
34
+ * currently visible tab menus and registered, URL-restorable workspace views.
35
+ * Arbitrary stored routes are deliberately not revived.
36
+ */
37
+ export declare function restoreLockedWorkbenchTabs(lockedTabs: MenuTab[], menus: MenuTreeNode[], options?: PageDescriptorResolveOptions): MenuTab[];
34
38
  export declare function updateLockedMenuTabs(lockedTabs: MenuTab[], tab: MenuTab): MenuTab[];
35
39
  export declare function removeLockedMenuTabs(lockedTabs: MenuTab[], keys: string[]): MenuTab[];
36
40
  /** Reorders the open tabs for the current browser session without affecting URL restoration. */
@@ -19,12 +19,12 @@ type __VLS_Slots = {} & {
19
19
  default?: (props: typeof __VLS_17) => any;
20
20
  };
21
21
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
- userCommand: (key: string) => any;
23
22
  navigate: (navigation: AppWorkbenchNavigation) => any;
23
+ userCommand: (key: string) => any;
24
24
  "update:startup": (value: WorkbenchStartupState) => any;
25
25
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
26
- onUserCommand?: ((key: string) => any) | undefined;
27
26
  onNavigate?: ((navigation: AppWorkbenchNavigation) => any) | undefined;
27
+ onUserCommand?: ((key: string) => any) | undefined;
28
28
  "onUpdate:startup"?: ((value: WorkbenchStartupState) => any) | undefined;
29
29
  }>, {
30
30
  loading: boolean;
@@ -11,12 +11,12 @@ export * from '../web-contracts/index';
11
11
  export * from '../web-core/index';
12
12
  export * from '../platform-workbench/index';
13
13
  export * from '../platform-admin-runtime/index';
14
- export { activeTabUrlOf, arrangeLockedMenuTabs, removeLockedMenuTabs, restoreWorkbenchStartupStateFromUrl, restoreLockedMenuTabs, updateLockedMenuTabs, } from '../app/workbenchStartup';
14
+ export { activeTabUrlOf, arrangeLockedMenuTabs, removeLockedMenuTabs, restoreWorkbenchStartupStateFromUrl, restoreLockedWorkbenchTabs, updateLockedMenuTabs, } from '../app/workbenchStartup';
15
15
  export { restoreLockedTabPreference, saveLockedTabPreference } from '../app/lockedTabPreference';
16
16
  export { configureModulePageEnhancements, createModulePageEnhancementRegistry, modulePageWorkspaceViews, } from '../dynamic-page-runtime/modulePageEnhancements';
17
17
  export { refreshModulePageList } from '../dynamic-page-runtime/modulePageListRefresh';
18
- export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from '../dynamic-page-runtime/modulePageEnhancements';
19
- export { UiButton, confirmAction, UiDataTable, UiInput, UiSidePanel, UiSwitch, UiTextArea, UiTree, } from '../vue-ui-antdv/index';
18
+ export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailDrawer, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from '../dynamic-page-runtime/modulePageEnhancements';
19
+ export { UiButton, confirmAction, UiDataTable, UiInput, UiSidePanel, UiSwitch, UiTextArea, UiTree, UiTreeSelect, } from '../vue-ui-antdv/index';
20
20
  export { default as PlatformAdminOutlet } from './PlatformAdminOutlet.vue';
21
21
  export { default as AppWorkbenchShell } from './AppWorkbenchShell.vue';
22
22
  export { default as LoginView } from '../app/LoginView.vue';
@@ -29,6 +29,7 @@ export { defaultUiThemeSkinId, UiThemeProvider, uiThemeSkinById, uiThemeSkins }
29
29
  export type { UiThemeSkin, UiThemeSkinId } from '../vue-ui-antdv/index';
30
30
  export { default as DateTimeText } from '../platform-components/DateTimeText.vue';
31
31
  export { default as FileSizeText } from '../platform-components/FileSizeText.vue';
32
+ export { default as DynamicModuleWorkspaceDetailView } from '../dynamic-page-runtime/DynamicModuleWorkspaceDetailView.vue';
32
33
  export { default as FileTransferUploader } from '../platform-components/FileTransferUploader.vue';
33
34
  export { default as SingleImageFileReferenceField } from '../platform-components/SingleImageFileReferenceField.vue';
34
35
  export { uploadedFileId } from '../platform-components/fileReferenceTransfer';
@@ -0,0 +1,10 @@
1
+ type __VLS_Props = {
2
+ recordId: string;
3
+ };
4
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
5
+ "close-workspace": () => any;
6
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
7
+ "onClose-workspace"?: (() => any) | undefined;
8
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
9
+ declare const _default: typeof __VLS_export;
10
+ export default _default;
@@ -0,0 +1,38 @@
1
+ import { type RecordActionItem, type QueryListRecord } from '../platform-components/index';
2
+ import type { ModuleContext } from '../web-core/index';
3
+ import type { ModulePageRecordActionContribution } from './modulePageEnhancements';
4
+ type __VLS_Props = {
5
+ context: ModuleContext<QueryListRecord>;
6
+ record?: QueryListRecord;
7
+ mode: 'create' | 'edit' | 'view';
8
+ saving?: boolean;
9
+ detailLoading?: boolean;
10
+ detailLoadFailed?: boolean;
11
+ recycleBinActive?: boolean;
12
+ actions?: ModulePageRecordActionContribution[];
13
+ /** Custom record views retain their own operation model. */
14
+ showStandardViewActions?: boolean;
15
+ };
16
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ delete: () => any;
18
+ edit: () => any;
19
+ save: () => any;
20
+ cancel: () => any;
21
+ detailAction: (action: RecordActionItem) => any;
22
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
23
+ onDelete?: (() => any) | undefined;
24
+ onEdit?: (() => any) | undefined;
25
+ onSave?: (() => any) | undefined;
26
+ onCancel?: (() => any) | undefined;
27
+ onDetailAction?: ((action: RecordActionItem) => any) | undefined;
28
+ }>, {
29
+ actions: ModulePageRecordActionContribution[];
30
+ record: QueryListRecord;
31
+ saving: boolean;
32
+ detailLoading: boolean;
33
+ detailLoadFailed: boolean;
34
+ recycleBinActive: boolean;
35
+ showStandardViewActions: boolean;
36
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
37
+ declare const _default: typeof __VLS_export;
38
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import { type RecordFormFieldPickerConfig, type RecordFormFieldValue, type RecordFormRecord } from '../platform-components/index';
2
+ import type { ModuleContext } from '../web-core/index';
3
+ type __VLS_Props = {
4
+ open: boolean;
5
+ title: string;
6
+ saving: boolean;
7
+ loading: boolean;
8
+ loadFailed: boolean;
9
+ draft?: RecordFormRecord;
10
+ fields: ReturnType<typeof import('../platform-components/index').resolveRecordFormFields>;
11
+ formSessionKey: number;
12
+ context: ModuleContext<unknown>;
13
+ pickerConfigs: Record<string, RecordFormFieldPickerConfig>;
14
+ };
15
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ close: () => any;
17
+ save: () => any;
18
+ updateField: (fieldName: string, value: RecordFormFieldValue) => any;
19
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
20
+ onClose?: (() => any) | undefined;
21
+ onSave?: (() => any) | undefined;
22
+ onUpdateField?: ((fieldName: string, value: RecordFormFieldValue) => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
@@ -0,0 +1,43 @@
1
+ import { type QueryListRecord } from '../platform-components/index';
2
+ import type { RecordInlineAction, ResolvedPageNavigatorLevelDescriptor } from '../web-contracts/index';
3
+ import type { ModuleContext } from '../web-core/index';
4
+ type NavigatorLevelRuntime = {
5
+ descriptor: ResolvedPageNavigatorLevelDescriptor;
6
+ context: ModuleContext<QueryListRecord>;
7
+ tree: boolean;
8
+ };
9
+ type __VLS_Props = {
10
+ level: NavigatorLevelRuntime;
11
+ selectedId?: string;
12
+ reloadKey: number;
13
+ keyword: string;
14
+ externalQueryValues?: Record<string, unknown>;
15
+ actionsOf?: () => RecordInlineAction[];
16
+ };
17
+ declare var __VLS_38: {};
18
+ type __VLS_Slots = {} & {
19
+ editor?: (props: typeof __VLS_38) => any;
20
+ };
21
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
+ select: (record: QueryListRecord) => any;
23
+ action: (action: RecordInlineAction, record: QueryListRecord) => any;
24
+ create: () => any;
25
+ refresh: () => any;
26
+ loaded: (records: QueryListRecord[]) => any;
27
+ "update:keyword": (value: string) => any;
28
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
29
+ onSelect?: ((record: QueryListRecord) => any) | undefined;
30
+ onAction?: ((action: RecordInlineAction, record: QueryListRecord) => any) | undefined;
31
+ onCreate?: (() => any) | undefined;
32
+ onRefresh?: (() => any) | undefined;
33
+ onLoaded?: ((records: QueryListRecord[]) => any) | undefined;
34
+ "onUpdate:keyword"?: ((value: string) => any) | undefined;
35
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
36
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
+ declare const _default: typeof __VLS_export;
38
+ export default _default;
39
+ type __VLS_WithSlots<T, S> = T & {
40
+ new (): {
41
+ $slots: S;
42
+ };
43
+ };
@@ -0,0 +1,10 @@
1
+ import type { UserPreferenceStore } from '../web-core/index';
2
+ export type DetailSurfacePreference = 'drawer' | 'pinned';
3
+ export declare function detailSurfacePreferenceKey(moduleAlias: string): string;
4
+ export declare function normalizeDetailSurfacePreference(value: unknown): DetailSurfacePreference | undefined;
5
+ /**
6
+ * Restores an account-scoped choice while retaining the device-local value as
7
+ * a resilient fallback when the preference service is temporarily unavailable.
8
+ */
9
+ export declare function restoreDetailSurfacePreference(store: UserPreferenceStore, moduleAlias: string): Promise<DetailSurfacePreference | undefined>;
10
+ export declare function saveDetailSurfacePreference(store: UserPreferenceStore, moduleAlias: string, preference: DetailSurfacePreference): Promise<void>;
@@ -1,8 +1,9 @@
1
1
  export { default as DynamicModuleHost } from './DynamicModuleHost.vue';
2
2
  export { default as DynamicModulePage } from './DynamicModulePage.vue';
3
+ export { default as DynamicModuleWorkspaceDetailView } from './DynamicModuleWorkspaceDetailView.vue';
3
4
  export { customerDescriptor } from './mockDescriptor';
4
5
  export { configureModulePageEnhancements, createModulePageEnhancementRegistry, modulePageWorkspaceViews, resolveModulePageEnhancement, } from './modulePageEnhancements';
5
6
  export { provideModulePageNavigation, useModulePageNavigation } from './modulePageNavigation';
6
7
  export { createModulePageListRefreshRegistry, modulePageListRefreshRegistry, refreshModulePageList, } from './modulePageListRefresh';
7
8
  export type { ModulePageListRefreshRegistry } from './modulePageListRefresh';
8
- export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
9
+ export type { ModuleListEnhancement, ModuleDetailEnhancement, ModulePageActionContext, ModulePageActionContribution, ModulePageActionStateContext, ModulePageBatchActionContext, ModulePageBatchActionContribution, ModulePageColumnContribution, ModulePageDetailDrawer, ModulePageDetailSection, ModulePageDetailSectionContext, ModulePageDrawer, ModulePageDrawerContext, ModulePageEnhancement, ModulePageEnhancementRegistry, ModulePageEnhancementTarget, ModulePageRecordActionContext, ModulePageRecordActionContribution, ModulePageScopeContext, ModulePageWorkspaceView, ModulePageWorkspaceViewInput, } from './modulePageEnhancements';
@@ -14,6 +14,14 @@ export interface ModulePageEnhancement {
14
14
  target: ModulePageEnhancementTarget;
15
15
  list?: ModuleListEnhancement;
16
16
  detail?: ModuleDetailEnhancement;
17
+ /**
18
+ * The presentation selected when a user invokes the standard record-view intent.
19
+ *
20
+ * Both the platform "查看" action and a list double-click enter the same record
21
+ * view flow. Applications may replace only the drawer body, while the runtime
22
+ * retains that flow's action checks, shell and lifecycle.
23
+ */
24
+ recordView?: ModulePageRecordView;
17
25
  workspaceViews?: ModulePageWorkspaceView[];
18
26
  }
19
27
  export interface ModulePageEnhancementTarget {
@@ -36,6 +44,24 @@ export interface ModuleDetailEnhancement {
36
44
  actions?: ModulePageRecordActionContribution[];
37
45
  sections?: ModulePageDetailSection[];
38
46
  }
47
+ /** Application-owned presentation of the platform's standard record-view intent. */
48
+ export interface ModulePageRecordView {
49
+ /**
50
+ * Replaces the descriptor-generated detail body while retaining the platform
51
+ * view drawer, its list entry points, and its lifecycle.
52
+ *
53
+ * A custom drawer body is intentionally read-only from the platform's point
54
+ * of view: generic edit and enable/disable controls are withheld so that the
55
+ * business module owns every operation it exposes in the view.
56
+ */
57
+ drawer: ModulePageDetailDrawer;
58
+ /**
59
+ * Optional record-level business grant required in addition to the standard
60
+ * view entry point. This protects business drawer data without turning its
61
+ * custom endpoints into a second "查看" UI action.
62
+ */
63
+ authorizationActionCode?: string;
64
+ }
39
65
  export interface ModulePageActionContribution extends RecordActionItem {
40
66
  key: string;
41
67
  /** Authorizes this toolbar action against the selected scoped-list record instead of the page module. */
@@ -59,6 +85,18 @@ export interface ModulePageDetailSection {
59
85
  title: string;
60
86
  component: Component;
61
87
  }
88
+ /** Business content rendered inside the platform-owned standard view drawer. */
89
+ export interface ModulePageDetailDrawer {
90
+ /** The component receives only the documented ModulePageDrawerContext prop. */
91
+ component: Component;
92
+ /** Keeps the platform drawer shell while allowing dense business views more room. */
93
+ width?: number | string;
94
+ /**
95
+ * Defaults to true. Set false when the business detail body has its own
96
+ * governed read endpoint and only needs the selected list record as context.
97
+ */
98
+ loadRecord?: boolean;
99
+ }
62
100
  export interface ModulePageColumnContribution extends RecordQueryListColumn {
63
101
  key: string;
64
102
  /** Insert adjacent to a descriptor column. Omit to append after descriptor columns. */
@@ -5,7 +5,7 @@ export interface ModulePageNavigation {
5
5
  openPage(descriptor: PageDescriptor): {
6
6
  created: boolean;
7
7
  };
8
- openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput): void;
8
+ openWorkspaceTab<TInput extends ModulePageWorkspaceViewInput>(view: ModulePageWorkspaceView<TInput>, input: TInput, title?: string): void;
9
9
  }
10
10
  export declare function provideModulePageNavigation(navigation: ModulePageNavigation | undefined): void;
11
11
  export declare function useModulePageNavigation(): ModulePageNavigation | undefined;
@@ -0,0 +1,6 @@
1
+ import type { ResolvedPageContextBindingDescriptor } from '../web-contracts/index';
2
+ export type PageContextSourceValues = Partial<Record<ResolvedPageContextBindingDescriptor['source'], Record<string, unknown>>>;
3
+ /** Returns context fields that must be supplied by the browser for a query target. */
4
+ export declare function externalPageContextCriteriaKeys(bindings: ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target']): string[];
5
+ /** Resolves declared context flows without coupling a target to navigator UI state. */
6
+ export declare function resolvePageContextTargetValues(bindings: ResolvedPageContextBindingDescriptor[], target: ResolvedPageContextBindingDescriptor['target'], sourceValues: PageContextSourceValues, targetNavigatorLevelKey?: string): Record<string, unknown> | undefined;
@@ -0,0 +1,27 @@
1
+ export type RecordDetailMode = 'create' | 'edit' | 'view';
2
+ /**
3
+ * State transitions shared by descriptor-driven record detail surfaces.
4
+ * Containers own their layout; this controller owns only one record's
5
+ * lifecycle and deliberately contains no drawer, tab or list concerns.
6
+ */
7
+ export declare function useRecordDetailController<TRecord extends Record<string, unknown>>(): {
8
+ record: import("vue").Ref<TRecord | undefined, TRecord | undefined>;
9
+ draft: import("vue").Ref<TRecord | undefined, TRecord | undefined>;
10
+ mode: import("vue").Ref<RecordDetailMode, RecordDetailMode>;
11
+ open: import("vue").Ref<boolean, boolean>;
12
+ loading: import("vue").Ref<boolean, boolean>;
13
+ loadFailed: import("vue").Ref<boolean, boolean>;
14
+ saving: import("vue").Ref<boolean, boolean>;
15
+ togglingEnabled: import("vue").Ref<boolean, boolean>;
16
+ formSessionKey: import("vue").Ref<number, number>;
17
+ beginLoad: (next: TRecord, nextMode: Extract<RecordDetailMode, "edit" | "view">) => void;
18
+ resolveLoad: (next: TRecord) => void;
19
+ failLoad: () => void;
20
+ finishLoad: () => void;
21
+ beginCreate: (initial: TRecord) => void;
22
+ beginEdit: () => boolean;
23
+ cancelEdit: () => void;
24
+ applySaved: (next: TRecord) => void;
25
+ clearDeleted: () => void;
26
+ close: () => void;
27
+ };
@@ -6,7 +6,7 @@
6
6
  * directory: an App supplies its startup state, navigation and HTTP factory.
7
7
  */
8
8
  export { default as PlatformAdminRouteOutlet } from './PlatformAdminOutlet.vue';
9
- export { isPlatformAdminRoutePage, platformAdminModuleRoutes, platformAdminRouteLayouts, platformAdminRoutePrefixes, platformAdminRoutes, resolvePlatformAdminRoute, } from './platformAdminRoutes';
9
+ export { isPlatformAdminRoutePage, platformAdminDynamicModuleRoutes, platformAdminModuleRoutes, platformAdminRouteLayouts, platformAdminRoutePrefixes, platformAdminRoutes, resolvePlatformAdminRoute, } from './platformAdminRoutes';
10
10
  export type { PlatformAdminRoute } from './platformAdminRoutes';
11
11
  export { provideCurrentUserContext, useCurrentUserContext } from './currentUserContext';
12
12
  export { createBackendHttpClient } from './backendHttp';
@@ -11,6 +11,11 @@ export interface PlatformAdminRoute {
11
11
  }
12
12
  export declare const platformAdminRoutes: PlatformAdminRoute[];
13
13
  export declare const platformAdminRoutePrefixes: string[];
14
+ /**
15
+ * Retains readable legacy menu URLs while delegating their content to the standard module runner.
16
+ * These are deliberately separate from `platformAdminRoutes`: no business-owned Vue page exists.
17
+ */
18
+ export declare const platformAdminDynamicModuleRoutes: Record<string, string>;
14
19
  export declare const platformAdminModuleRoutes: {
15
20
  [k: string]: string;
16
21
  };
@@ -1,5 +1,5 @@
1
1
  import { type RealtimeConnectionState } from '../web-core/index';
2
- import type { WebBusinessRealtimeEvent, WebCommittedChangeSet, WebUserNotification } from '../web-contracts/index';
2
+ import type { WebBusinessRealtimeEvent, WebBusinessNotification, WebCommittedChangeSet, WebUserNotification } from '../web-contracts/index';
3
3
  export declare const appDataChangeDispatcher: import("../web-core/index").DataChangeDispatcher;
4
4
  export interface AppRealtimeOptions {
5
5
  /** Backend origin supplied by the consuming App at runtime. */
@@ -8,6 +8,7 @@ export interface AppRealtimeOptions {
8
8
  token?: string;
9
9
  onUnauthorized?: () => void;
10
10
  onUserNotification?: (notification: WebUserNotification) => void;
11
+ onBusinessNotification?: (notification: WebBusinessNotification) => void;
11
12
  onStateChange?: (state: RealtimeConnectionState) => void;
12
13
  }
13
14
  export interface AppRealtimeConnection {
@@ -0,0 +1,12 @@
1
+ import type { WebBusinessNotification, WebBusinessNotificationAction } from '../web-contracts/index';
2
+ type __VLS_Props = {
3
+ notifications: WebBusinessNotification[];
4
+ executeAction: (notification: WebBusinessNotification, action: WebBusinessNotificationAction) => void | Promise<void>;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
7
+ dismiss: (notificationId: string) => any;
8
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ onDismiss?: ((notificationId: string) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
@@ -7,6 +7,11 @@ type __VLS_Props = {
7
7
  context: ModuleContext<CrudRecordListBase>;
8
8
  selectedId?: string;
9
9
  reloadKey?: number;
10
+ /**
11
+ * Descriptor-owned criteria from an upstream navigator selection.
12
+ * They are forwarded as standard query values rather than filtered in the browser.
13
+ */
14
+ externalQueryValues?: Record<string, unknown>;
10
15
  keyword?: string;
11
16
  emptyDescription?: string;
12
17
  loadingTip?: string;
@@ -44,6 +49,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
44
49
  tagOf: (record: CrudRecordListBase) => string | undefined;
45
50
  mutedOf: (record: CrudRecordListBase) => boolean;
46
51
  reloadKey: number;
52
+ externalQueryValues: Record<string, unknown>;
47
53
  loadingTip: string;
48
54
  fallbackTitle: string;
49
55
  subtitleOf: (record: CrudRecordListBase) => string | undefined;
@@ -5,11 +5,13 @@ type __VLS_Props = {
5
5
  titleActionIcon?: UiIconName;
6
6
  titleActionTitle?: string;
7
7
  };
8
- declare var __VLS_9: {}, __VLS_11: {};
8
+ declare var __VLS_1: {}, __VLS_11: {}, __VLS_13: {};
9
9
  type __VLS_Slots = {} & {
10
- status?: (props: typeof __VLS_9) => any;
10
+ 'title-prefix'?: (props: typeof __VLS_1) => any;
11
11
  } & {
12
- actions?: (props: typeof __VLS_11) => any;
12
+ status?: (props: typeof __VLS_11) => any;
13
+ } & {
14
+ actions?: (props: typeof __VLS_13) => any;
13
15
  };
14
16
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
17
  titleAction: () => any;
@@ -1,13 +1,19 @@
1
1
  type __VLS_Props = {
2
2
  /** Number of explorer columns shown before the detail workspace. */
3
- explorerCount?: 1 | 2 | 3;
3
+ explorerCount?: number;
4
+ /** Whether the final workspace is a list plus an independently sized detail surface. */
5
+ detailSurface?: boolean;
6
+ /** Whether the final workspace is a list without a persistent detail surface. */
7
+ listSurface?: boolean;
4
8
  };
5
9
  declare var __VLS_1: {};
6
10
  type __VLS_Slots = {} & {
7
11
  default?: (props: typeof __VLS_1) => any;
8
12
  };
9
13
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
10
- explorerCount: 1 | 2 | 3;
14
+ explorerCount: number;
15
+ detailSurface: boolean;
16
+ listSurface: boolean;
11
17
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
18
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
19
  declare const _default: typeof __VLS_export;
@@ -13,8 +13,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
13
13
  onAction?: ((action: RecordActionItem, event: MouseEvent) => any) | undefined;
14
14
  }>, {
15
15
  recordId: string;
16
- loading: boolean;
17
16
  size: "default" | "compact";
17
+ loading: boolean;
18
18
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
19
  declare const _default: typeof __VLS_export;
20
20
  export default _default;
@@ -12,6 +12,9 @@ type __VLS_Props = {
12
12
  };
13
13
  type __VLS_Slots = {
14
14
  status(): unknown;
15
+ 'title-prefix'(): unknown;
16
+ 'title-actions'(): unknown;
17
+ 'header-actions'(): unknown;
15
18
  default(): unknown;
16
19
  operation(): unknown;
17
20
  };
@@ -21,8 +24,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
21
24
  onClose?: (() => any) | undefined;
22
25
  }>, {
23
26
  scope: UiSidePanelScope;
24
- subtitle: string;
25
27
  width: number | string;
28
+ subtitle: string;
26
29
  closeOnOutside: boolean;
27
30
  closeTitle: string;
28
31
  promotion: DrawerPromotion;
@@ -8,21 +8,23 @@ type __VLS_Props = {
8
8
  /** Internal composition surface selected by the hosting platform component. */
9
9
  surface?: 'workspace' | 'drawer';
10
10
  };
11
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_9: {}, __VLS_11: {}, __VLS_19: {};
11
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {}, __VLS_9: {}, __VLS_11: {}, __VLS_13: {}, __VLS_21: {};
12
12
  type __VLS_Slots = {} & {
13
13
  header?: (props: typeof __VLS_1) => any;
14
14
  } & {
15
- status?: (props: typeof __VLS_3) => any;
15
+ 'title-prefix'?: (props: typeof __VLS_3) => any;
16
16
  } & {
17
- 'title-actions'?: (props: typeof __VLS_5) => any;
17
+ status?: (props: typeof __VLS_5) => any;
18
18
  } & {
19
- actions?: (props: typeof __VLS_7) => any;
19
+ 'title-actions'?: (props: typeof __VLS_7) => any;
20
20
  } & {
21
- default?: (props: typeof __VLS_9) => any;
21
+ actions?: (props: typeof __VLS_9) => any;
22
22
  } & {
23
23
  default?: (props: typeof __VLS_11) => any;
24
24
  } & {
25
- operation?: (props: typeof __VLS_19) => any;
25
+ default?: (props: typeof __VLS_13) => any;
26
+ } & {
27
+ operation?: (props: typeof __VLS_21) => any;
26
28
  };
27
29
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
28
30
  subtitle: string;
@@ -2,15 +2,17 @@ type __VLS_Props = {
2
2
  title: string;
3
3
  subtitle?: string;
4
4
  };
5
- declare var __VLS_16: {}, __VLS_19: {}, __VLS_21: {}, __VLS_24: {};
5
+ declare var __VLS_16: {}, __VLS_19: {}, __VLS_22: {}, __VLS_24: {}, __VLS_27: {};
6
6
  type __VLS_Slots = {} & {
7
- status?: (props: typeof __VLS_16) => any;
7
+ 'title-prefix'?: (props: typeof __VLS_16) => any;
8
8
  } & {
9
- actions?: (props: typeof __VLS_19) => any;
9
+ status?: (props: typeof __VLS_19) => any;
10
10
  } & {
11
- default?: (props: typeof __VLS_21) => any;
11
+ actions?: (props: typeof __VLS_22) => any;
12
12
  } & {
13
- operation?: (props: typeof __VLS_24) => any;
13
+ default?: (props: typeof __VLS_24) => any;
14
+ } & {
15
+ operation?: (props: typeof __VLS_27) => any;
14
16
  };
15
17
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
18
  subtitle: string;
@@ -31,6 +31,9 @@ type __VLS_Props = {
31
31
  };
32
32
  type __VLS_Slots = {
33
33
  status(): unknown;
34
+ 'title-prefix'(): unknown;
35
+ 'title-actions'(): unknown;
36
+ 'header-actions'(): unknown;
34
37
  loading(): unknown;
35
38
  error(): unknown;
36
39
  externalChangeNotice(): unknown;
@@ -56,9 +59,9 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
56
59
  onDismissExternalChange?: (() => any) | undefined;
57
60
  }>, {
58
61
  scope: UiSidePanelScope;
62
+ width: number | string;
59
63
  loading: boolean;
60
64
  subtitle: string;
61
- width: number | string;
62
65
  closeOnOutside: boolean;
63
66
  closeTitle: string;
64
67
  promotion: DrawerPromotion;
@@ -18,11 +18,11 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
18
18
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
19
  "onUpdate:value"?: ((value: string[]) => any) | undefined;
20
20
  }>, {
21
+ mode: "list" | "tree";
21
22
  disabled: boolean;
22
23
  value: string[];
23
24
  placeholder: string;
24
25
  allowClear: boolean;
25
- mode: "list" | "tree";
26
26
  filterOption: (record: RecordPickerRecord, keyword: string) => boolean;
27
27
  titleOf: (record: RecordPickerRecord) => string;
28
28
  reloadKey: number;
@@ -5,6 +5,7 @@ type __VLS_Props = {
5
5
  loading?: boolean;
6
6
  danger?: boolean;
7
7
  title?: string;
8
+ ariaLabel?: string;
8
9
  iconName?: UiIconName;
9
10
  };
10
11
  declare var __VLS_10: {};
@@ -21,6 +22,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
21
22
  danger: boolean;
22
23
  disabled: boolean;
23
24
  loading: boolean;
25
+ ariaLabel: string;
24
26
  iconName: UiIconName;
25
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
26
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -20,11 +20,11 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
20
20
  onSelect?: ((record: RecordPickerRecord | undefined) => any) | undefined;
21
21
  "onUpdate:value"?: ((value: string | undefined) => any) | undefined;
22
22
  }>, {
23
+ mode: "list" | "tree";
23
24
  disabled: boolean;
24
25
  value: string;
25
26
  placeholder: string;
26
27
  allowClear: boolean;
27
- mode: "list" | "tree";
28
28
  filterOption: (record: RecordPickerRecord, keyword: string) => boolean;
29
29
  titleOf: (record: RecordPickerRecord) => string;
30
30
  reloadKey: number;
@@ -7,6 +7,7 @@ export type QueryListRecord = Record<string, unknown> & {
7
7
  enabled?: boolean;
8
8
  };
9
9
  export type RecordQueryListMode = 'normal' | 'recycleBin';
10
+ export type StandardCrudRowActionKey = 'view' | 'edit' | 'delete';
10
11
  export interface RecordQueryListColumn {
11
12
  key: string;
12
13
  title: string;
@@ -39,6 +40,10 @@ type __VLS_Props = {
39
40
  batchActions?: RecordActionItem[];
40
41
  standardCrudActions?: boolean;
41
42
  standardCrudRowActions?: boolean;
43
+ /** Limits built-in row operations without replacing the platform list interaction. */
44
+ standardCrudRowActionKeys?: StandardCrudRowActionKey[];
45
+ /** Optional authorization-code overrides for platform built-in row operations. */
46
+ standardCrudRowActionCodes?: Partial<Record<StandardCrudRowActionKey, string>>;
42
47
  rowActionsOf?: (record: QueryListRecord) => RecordActionItem[];
43
48
  extraRowActionsOf?: (record: QueryListRecord) => RecordActionItem[];
44
49
  rowActionStateOf?: (record: QueryListRecord, action: RecordActionItem) => Partial<RecordActionItem> | undefined;
@@ -105,8 +110,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
105
110
  onRowAction?: ((action: ResolvedRecordActionItem, record: QueryListRecord, event?: MouseEvent | undefined) => any) | undefined;
106
111
  onModeChange?: ((mode: RecordQueryListMode) => any) | undefined;
107
112
  }>, {
108
- actions: RecordActionItem[];
109
113
  mode: RecordQueryListMode;
114
+ actions: RecordActionItem[];
110
115
  selectedKey: string;
111
116
  columns: RecordQueryListColumn[];
112
117
  rowKey: string;
@@ -117,6 +122,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
117
122
  uiConfigId: string;
118
123
  queryTemplateId: string;
119
124
  reloadKey: number;
125
+ externalQueryValues: Record<string, unknown>;
120
126
  ready: boolean;
121
127
  refreshTitle: string;
122
128
  additionalColumns: Array<RecordQueryListColumn & {
@@ -128,12 +134,13 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
128
134
  batchActions: RecordActionItem[];
129
135
  standardCrudActions: boolean;
130
136
  standardCrudRowActions: boolean;
137
+ standardCrudRowActionKeys: StandardCrudRowActionKey[];
138
+ standardCrudRowActionCodes: Partial<Record<StandardCrudRowActionKey, string>>;
131
139
  rowActionsOf: (record: QueryListRecord) => RecordActionItem[];
132
140
  extraRowActionsOf: (record: QueryListRecord) => RecordActionItem[];
133
141
  rowActionStateOf: (record: QueryListRecord, action: RecordActionItem) => Partial<RecordActionItem> | undefined;
134
142
  rowActionsTitle: string;
135
143
  cellRenderers: Record<string, (record: QueryListRecord) => string>;
136
- externalQueryValues: Record<string, unknown>;
137
144
  requiredExternalCriteriaKeys: string[];
138
145
  quickSearchPlaceholder: string;
139
146
  waitingDescription: string;