@ximatai/muyun-web-app 0.26.5 → 0.26.7
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.
- package/dist/{EmployeeDetailWorkspaceView-rm9ujeiQ.js → EmployeeDetailWorkspaceView-DYJLlkSz.js} +1 -1
- package/dist/EmployeeManagementView-taxWUa7g.js +1778 -0
- package/dist/{MetadataOrchestrationView-DaPNQML7.js → MetadataOrchestrationView-B-CPudJl.js} +151 -151
- package/dist/ModuleActionManagementView-CmVj0e0C.js +597 -0
- package/dist/{RoleAuthorizationView-qQvn7M75.js → RoleAuthorizationView-q_6CsBYq.js} +194 -194
- package/dist/{RoleDetailWorkspaceView-C-vaKeZM.js → RoleDetailWorkspaceView-DmJlJgAj.js} +1 -1
- package/dist/{RoleManagementView-C3nxfub2.js → RoleManagementView-HCa9rH0f.js} +466 -466
- package/dist/{SystemUserDetailWorkspaceView-FIbfff00.js → SystemUserDetailWorkspaceView-U6Ij0US1.js} +1 -1
- package/dist/SystemUserManagementView-C1CkKivH.js +758 -0
- package/dist/{UserDetailWorkspaceView-M--ndn6x.js → UserDetailWorkspaceView-OPYvD6mH.js} +1 -1
- package/dist/{UserManagementView-MSXf4fno.js → UserManagementView-gbCL9SnC.js} +226 -226
- package/dist/index.css +1 -1
- package/dist/index.js +3309 -2288
- package/dist/pageRealtime-CzJlr9hs.js +225 -0
- package/dist/{platform-components-_3KlZZf5.js → platform-components-DKKWbNrz.js} +4196 -1790
- package/dist/types/app/CurrentUserProfileDialog.vue.d.ts +33 -0
- package/dist/types/app/LoginView.vue.d.ts +4 -1
- package/dist/types/app/ThemeSkinPreferencesDialog.vue.d.ts +20 -0
- package/dist/types/app/lockedTabPreference.d.ts +6 -0
- package/dist/types/app/themeSkinPreference.d.ts +11 -0
- package/dist/types/app/workbenchRouteSync.d.ts +13 -0
- package/dist/types/app/workbenchStartup.d.ts +14 -1
- package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +43 -0
- package/dist/types/consumer/index.d.ts +24 -1
- package/dist/types/consumer/userPreferencePersistence.d.ts +7 -0
- package/dist/types/consumer/workbenchNavigation.d.ts +8 -0
- package/dist/types/dynamic-page-runtime/DynamicModuleHost.vue.d.ts +8 -1
- package/dist/types/dynamic-page-runtime/index.d.ts +5 -0
- package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +144 -0
- package/dist/types/dynamic-page-runtime/modulePageListRefresh.d.ts +12 -0
- package/dist/types/dynamic-page-runtime/modulePageNavigation.d.ts +11 -0
- package/dist/types/platform-admin-runtime/PlatformAdminOutlet.vue.d.ts +1 -0
- package/dist/types/platform-admin-runtime/backendHttp.d.ts +1 -1
- package/dist/types/platform-admin-runtime/index.d.ts +3 -0
- package/dist/types/platform-admin-runtime/realtime.d.ts +9 -5
- package/dist/types/platform-admin-runtime/workspaceViewContract.d.ts +1 -36
- package/dist/types/platform-admin-runtime/workspaceViewHost.d.ts +2 -10
- package/dist/types/platform-admin-runtime/workspaceViews.d.ts +1 -17
- package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +2 -2
- package/dist/types/platform-components/DateTimeText.vue.d.ts +1 -1
- package/dist/types/platform-components/FileSizeText.vue.d.ts +10 -0
- package/dist/types/platform-components/FileTransferUploader.vue.d.ts +70 -0
- package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +30 -0
- package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +16 -0
- package/dist/types/platform-components/RecordDetailFields.vue.d.ts +1 -1
- package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +8 -6
- package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +5 -5
- package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +6 -6
- package/dist/types/platform-components/RecordFileReferenceTransfer.vue.d.ts +29 -0
- package/dist/types/platform-components/RecordFormFields.vue.d.ts +8 -0
- package/dist/types/platform-components/RecordListExplorer.vue.d.ts +2 -2
- package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +1 -0
- package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +33 -0
- package/dist/types/platform-components/RecordPanelButton.vue.d.ts +33 -0
- package/dist/types/platform-components/RecordPanelState.vue.d.ts +11 -0
- package/dist/types/platform-components/RecordPicker.vue.d.ts +1 -1
- package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +47 -2
- package/dist/types/platform-components/RecordStatusTag.vue.d.ts +6 -1
- package/dist/types/platform-components/RecordTagList.vue.d.ts +7 -0
- package/dist/types/platform-components/SingleImageFileReferenceField.vue.d.ts +23 -0
- package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +2 -2
- package/dist/types/platform-components/fileReferenceTransfer.d.ts +25 -0
- package/dist/types/platform-components/fileTransferUpload.d.ts +43 -0
- package/dist/types/platform-components/index.d.ts +15 -1
- package/dist/types/platform-components/platformErrorFeedback.d.ts +4 -0
- package/dist/types/platform-components/platformFileSize.d.ts +10 -0
- package/dist/types/platform-components/recordActionBarModel.d.ts +12 -1
- package/dist/types/platform-components/recordFormFieldModel.d.ts +24 -3
- package/dist/types/platform-components/scopedTreeModuleContext.d.ts +1 -1
- package/dist/types/platform-components/staticCrudManagementState.d.ts +1 -1
- package/dist/types/platform-workbench/Workbench.vue.d.ts +12 -2
- package/dist/types/platform-workbench/WorkbenchBrandControl.vue.d.ts +41 -0
- package/dist/types/platform-workbench/WorkbenchMenu.vue.d.ts +39 -1
- package/dist/types/platform-workbench/WorkbenchMenuTree.vue.d.ts +2 -0
- package/dist/types/platform-workbench/WorkbenchSidebarMenuEntry.vue.d.ts +19 -0
- package/dist/types/platform-workbench/WorkspaceViewOutlet.vue.d.ts +7 -0
- package/dist/types/platform-workbench/index.d.ts +7 -0
- package/dist/types/platform-workbench/menuHoverClickIntent.d.ts +10 -0
- package/dist/types/platform-workbench/menuPointerAim.d.ts +11 -0
- package/dist/types/platform-workbench/workbenchLayout.d.ts +4 -0
- package/dist/types/platform-workbench/workspaceViewContract.d.ts +20 -0
- package/dist/types/platform-workbench/workspaceViewHost.d.ts +8 -0
- package/dist/types/platform-workbench/workspaceViews.d.ts +21 -0
- package/dist/types/views/applicationManagementState.d.ts +1 -1
- package/dist/types/views/employeeDetailWorkspaceView.d.ts +1 -1
- package/dist/types/views/fieldSpecManagementState.d.ts +1 -1
- package/dist/types/views/fieldUiControlManagementState.d.ts +1 -1
- package/dist/types/views/metadataOrchestrationWorkspaceView.d.ts +1 -1
- package/dist/types/views/moduleActionManagementWorkspaceView.d.ts +1 -1
- package/dist/types/views/roleAuthorizationWorkspaceView.d.ts +1 -1
- package/dist/types/views/roleDetailWorkspaceView.d.ts +1 -1
- package/dist/types/views/systemUserDetailWorkspaceView.d.ts +1 -1
- package/dist/types/views/tenantManagementState.d.ts +11 -1
- package/dist/types/views/userDetailWorkspaceView.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiColorPicker.vue.d.ts +14 -0
- package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +3 -3
- package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiTabs.vue.d.ts +6 -0
- package/dist/types/vue-ui-antdv/components/UiTagList.vue.d.ts +17 -0
- package/dist/types/vue-ui-antdv/components/UiThemeProvider.vue.d.ts +21 -0
- package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +3 -3
- package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/index.d.ts +6 -0
- package/dist/types/vue-ui-antdv/theme.d.ts +58 -0
- package/dist/types/vue-ui-antdv/themeGlobalScope.d.ts +2 -0
- package/dist/types/vue-ui-antdv/types.d.ts +4 -9
- package/dist/types/web-contracts/index.d.ts +168 -0
- package/dist/types/web-core/clients.d.ts +14 -1
- package/dist/types/web-core/http.d.ts +12 -1
- package/dist/types/web-core/index.d.ts +2 -0
- package/dist/types/web-core/mock.d.ts +3 -1
- package/dist/types/web-core/module/staticModuleClient.d.ts +1 -0
- package/dist/types/web-core/userPreferences.d.ts +24 -0
- package/dist/{useUserSessionRows-iAqK_cUy.js → useUserSessionRows-CBHEzRFQ.js} +2 -2
- package/dist/workspaceViewSessions-DkB9myrq.js +3252 -0
- package/package.json +1 -1
- package/dist/EmployeeManagementView-DyYMWQ64.js +0 -1706
- package/dist/ModuleActionManagementView-BFoPGqzC.js +0 -597
- package/dist/SystemUserManagementView-m6vwJDxI.js +0 -761
- package/dist/pageRealtime-4LXXvVW7.js +0 -140
- package/dist/workspaceViewSessions-DW0wbyQ_.js +0 -1448
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The platform owns the browser-to-storage transfer mechanics, while an
|
|
3
|
+
* application owns the authorization request. A caller may additionally run a
|
|
4
|
+
* business confirmation step, while standard file-reference fields only bind
|
|
5
|
+
* the returned fileId during their later record save.
|
|
6
|
+
* MuYunFileServer owns the multipart transport; this module deliberately has
|
|
7
|
+
* no knowledge of a particular business record type.
|
|
8
|
+
*/
|
|
9
|
+
export interface FileTransferUploadAccess {
|
|
10
|
+
/** A short-lived MuYunFileServer multipart upload URL supplied by the business API. */
|
|
11
|
+
uploadUrl: string;
|
|
12
|
+
formFieldName?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface FileTransferUploadReceipt {
|
|
15
|
+
file: File;
|
|
16
|
+
/** Storage service response after unwrapping the conventional { data } envelope. */
|
|
17
|
+
payload: unknown;
|
|
18
|
+
response: unknown;
|
|
19
|
+
}
|
|
20
|
+
export interface FileTransferUploadTask {
|
|
21
|
+
promise: Promise<FileTransferUploadReceipt>;
|
|
22
|
+
cancel: () => void;
|
|
23
|
+
}
|
|
24
|
+
/** Browser-visible phases shared by upload controls. */
|
|
25
|
+
export type FileTransferUploadState = 'requesting' | 'uploading' | 'confirming' | 'completed';
|
|
26
|
+
export interface FileTransferUploadLifecycleCallbacks {
|
|
27
|
+
stateChanged: (state: FileTransferUploadState) => void;
|
|
28
|
+
progressChanged?: (percent: number) => void;
|
|
29
|
+
taskCreated?: (task: FileTransferUploadTask) => void;
|
|
30
|
+
taskFinished?: () => void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Runs the common browser upload lifecycle without knowing the business record being edited.
|
|
34
|
+
*
|
|
35
|
+
* State is reported through callbacks so the consuming control can update its own reactive item. When supplied,
|
|
36
|
+
* business confirmation completes before the completed transition; otherwise the raw storage payload is returned.
|
|
37
|
+
*/
|
|
38
|
+
export declare function performBrowserFileTransferUpload(file: File, requestUploadAccess: (file: File) => Promise<FileTransferUploadAccess>, confirmUpload: ((receipt: FileTransferUploadReceipt) => Promise<unknown>) | undefined, callbacks: FileTransferUploadLifecycleCallbacks): Promise<{
|
|
39
|
+
receipt: FileTransferUploadReceipt;
|
|
40
|
+
result: unknown;
|
|
41
|
+
}>;
|
|
42
|
+
export declare function createBrowserFileTransferUpload(file: File, access: FileTransferUploadAccess, onProgress?: (percent: number) => void): FileTransferUploadTask;
|
|
43
|
+
export declare function unwrapResponsePayload(response: unknown): unknown;
|
|
@@ -4,6 +4,11 @@ export { confirmAction } from '../vue-ui-antdv/index';
|
|
|
4
4
|
export { default as CrudRecordListExplorer } from './CrudRecordListExplorer.vue';
|
|
5
5
|
export { default as DrawerOperationBar } from './DrawerOperationBar.vue';
|
|
6
6
|
export { default as DateTimeText } from './DateTimeText.vue';
|
|
7
|
+
export { default as FileSizeText } from './FileSizeText.vue';
|
|
8
|
+
export { default as FileTransferUploader } from './FileTransferUploader.vue';
|
|
9
|
+
export { default as SingleImageFileReferenceField } from './SingleImageFileReferenceField.vue';
|
|
10
|
+
export { createBrowserFileTransferUpload, unwrapResponsePayload } from './fileTransferUpload';
|
|
11
|
+
export type { FileTransferUploadAccess, FileTransferUploadReceipt, FileTransferUploadTask, } from './fileTransferUpload';
|
|
7
12
|
export { default as EnabledSelect } from './EnabledSelect.vue';
|
|
8
13
|
export { default as ModuleActionButton } from './ModuleActionButton.vue';
|
|
9
14
|
export { default as ManagementWorkspace } from './ManagementWorkspace.vue';
|
|
@@ -14,23 +19,29 @@ export { default as RecordDetailDrawer } from './RecordDetailDrawer.vue';
|
|
|
14
19
|
export type { DrawerPromotion } from './drawerPromotion';
|
|
15
20
|
export { default as RecordExternalChangeNotice } from './RecordExternalChangeNotice.vue';
|
|
16
21
|
export { default as RecordDetailFields } from './RecordDetailFields.vue';
|
|
22
|
+
export { default as RecordDetailExtensionSection } from './RecordDetailExtensionSection.vue';
|
|
17
23
|
export { default as RecordDetailPanel } from './RecordDetailPanel.vue';
|
|
24
|
+
export { default as RecordPanelButton } from './RecordPanelButton.vue';
|
|
25
|
+
export { default as RecordPanelState } from './RecordPanelState.vue';
|
|
18
26
|
export { default as RecordExpandedSubtable } from './RecordExpandedSubtable.vue';
|
|
19
27
|
export { default as UserSessionExpandedSubtable } from './UserSessionExpandedSubtable.vue';
|
|
20
28
|
export { userSessionBrowserTitle, userSessionPresenceDescription, userSessionPresenceTitle, userSessionTerminalTitle, } from './userSessionPresentation';
|
|
21
29
|
export { default as RecordExplorerPanel } from './RecordExplorerPanel.vue';
|
|
22
30
|
export type { RecordExplorerItemDescriptor } from './recordExplorerItemModel';
|
|
23
31
|
export { default as RecordFormFields } from './RecordFormFields.vue';
|
|
32
|
+
export { default as RecordFileReferenceTransfer } from './RecordFileReferenceTransfer.vue';
|
|
24
33
|
export { default as RecordListExplorer } from './RecordListExplorer.vue';
|
|
25
34
|
export { default as RecordMetaSection } from './RecordMetaSection.vue';
|
|
26
35
|
export { default as RecordModeDrawer } from './RecordModeDrawer.vue';
|
|
27
36
|
export { default as RecordPicker } from './RecordPicker.vue';
|
|
37
|
+
export { default as RecordMultiPicker } from './RecordMultiPicker.vue';
|
|
28
38
|
export { default as RecordQueryListPanel } from './RecordQueryListPanel.vue';
|
|
29
39
|
export { default as RecycleBinModeButton } from './RecycleBinModeButton.vue';
|
|
30
40
|
export { useRecycleBinExplorerMode, type RecycleBinExplorerMode, type RecycleBinExplorerModeOptions, } from './useRecycleBinExplorerMode';
|
|
31
41
|
export { default as RecordStatusSwitch } from './RecordStatusSwitch.vue';
|
|
32
42
|
export { default as RecordTreeSelector } from './RecordTreeSelector.vue';
|
|
33
43
|
export { default as RecordStatusTag } from './RecordStatusTag.vue';
|
|
44
|
+
export { default as RecordTagList } from './RecordTagList.vue';
|
|
34
45
|
export { useRecycleBinState } from './recycleBinState';
|
|
35
46
|
export type { RecycleBinStateOptions } from './recycleBinState';
|
|
36
47
|
export { createSoftDeletedConflictErrorHandler, extractSoftDeletedConflict, useSoftDeletedConflictHandler, } from './softDeletedConflictHandler';
|
|
@@ -45,14 +56,17 @@ export type { RecordPickerMode } from './recordPickerModel';
|
|
|
45
56
|
export type { RecordActionItem, ResolvedRecordActionItem } from './recordActionBarModel';
|
|
46
57
|
export type { RecordDetailDisplayResolver, RecordDetailDisplayValue } from './recordDetailFieldModel';
|
|
47
58
|
export type { RecordListExplorerRecord } from './RecordListExplorer.vue';
|
|
48
|
-
export type { QueryListRecord, RecordQueryListColumn, RecordQueryListMode } from './RecordQueryListPanel.vue';
|
|
59
|
+
export type { QueryListRecord, RecordQueryListCellComponent, RecordQueryListColumn, RecordQueryListMode, } from './RecordQueryListPanel.vue';
|
|
49
60
|
export type { RecordFormFieldDescriptor, RecordFormFieldFallback, RecordFormFieldPickerConfig, RecordFormFieldState, RecordFormFieldValue, RecordFormRecord, } from './recordFormFieldModel';
|
|
50
61
|
export type { CrudRecordListBase } from './crudRecordListModel';
|
|
51
62
|
export { defaultCrudRecordListMatches, defaultCrudRecordListSubtitle, defaultCrudRecordListTitle, } from './crudRecordListModel';
|
|
52
63
|
export { resolveRecordActions } from './recordActionBarModel';
|
|
53
64
|
export { normalizeRecordDraft } from './recordDraftNormalizer';
|
|
65
|
+
export { acceptedMediaTypes, appendUploadedFileReference, fileReferenceIds, issueFileReferenceUploadAccess, uploadedFileId, } from './fileReferenceTransfer';
|
|
54
66
|
export { resolveRecordDetailDisplayValue } from './recordDetailFieldModel';
|
|
55
67
|
export { formatPlatformDateTime, resolveBrowserTimeZone } from './platformDateTime';
|
|
68
|
+
export { formatPlatformFileSize } from './platformFileSize';
|
|
69
|
+
export type { PlatformFileSizeDisplay, PlatformFileSizeOptions } from './platformFileSize';
|
|
56
70
|
export { providePlatformTimeZoneContext, usePlatformTimeZoneContext } from './platformTimeZoneContext';
|
|
57
71
|
export type { PlatformDateTimeDisplay, PlatformDateTimeOptions, PlatformDateTimePrecision, } from './platformDateTime';
|
|
58
72
|
export { childResourceDefaultFormViewCode, resolveRecordFormFieldNames, resolveRecordFormFieldState, resolveRecordFormFields, } from './recordFormFieldModel';
|
|
@@ -7,6 +7,10 @@ export interface PlatformErrorFeedbackContext {
|
|
|
7
7
|
export declare function presentPlatformError(cause: unknown, context?: PlatformErrorFeedbackContext): AppError;
|
|
8
8
|
export declare function presentPlatformMessage(message: string, context?: PlatformErrorFeedbackContext): void;
|
|
9
9
|
export declare function presentPlatformSuccess(message: string, context?: PlatformErrorFeedbackContext): void;
|
|
10
|
+
/** Presents a non-blocking recommendation without changing the requested action. */
|
|
11
|
+
export declare function presentPlatformWarning(message: string): void;
|
|
12
|
+
/** Presents a non-blocking progress update without treating it as an action result. */
|
|
13
|
+
export declare function presentPlatformInfo(message: string): void;
|
|
10
14
|
export type PlatformActionErrorHandler<TContext> = {
|
|
11
15
|
code?: string;
|
|
12
16
|
marker?: string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface PlatformFileSizeDisplay {
|
|
2
|
+
text: string;
|
|
3
|
+
title: string;
|
|
4
|
+
valid: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface PlatformFileSizeOptions {
|
|
7
|
+
emptyText?: string;
|
|
8
|
+
locale?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function formatPlatformFileSize(value: number | string | bigint | null | undefined, options?: PlatformFileSizeOptions): PlatformFileSizeDisplay;
|
|
@@ -10,10 +10,16 @@ export interface RecordActionItem {
|
|
|
10
10
|
/** Keep the row action visible beside the default row action instead of placing it in “more”. */
|
|
11
11
|
pinned?: boolean;
|
|
12
12
|
disabled?: boolean;
|
|
13
|
+
/** Explains why an otherwise visible action cannot be used. */
|
|
14
|
+
disabledReason?: string;
|
|
13
15
|
loading?: boolean;
|
|
14
16
|
primary?: boolean;
|
|
15
17
|
danger?: boolean;
|
|
16
18
|
iconName?: UiIconName;
|
|
19
|
+
/** Runtime-only authorization source for actions rendered outside their owning module surface. */
|
|
20
|
+
authorizationContext?: ModuleContext<unknown>;
|
|
21
|
+
/** Runtime-only record ID used with authorizationContext. */
|
|
22
|
+
authorizationRecordId?: string;
|
|
17
23
|
}
|
|
18
24
|
export interface ResolvedRecordActionItem extends RecordActionItem {
|
|
19
25
|
key: string;
|
|
@@ -23,5 +29,10 @@ export interface ResolvedRecordActionItem extends RecordActionItem {
|
|
|
23
29
|
disabled: boolean;
|
|
24
30
|
loading: boolean;
|
|
25
31
|
}
|
|
26
|
-
|
|
32
|
+
type RecordActionContext = Pick<ModuleContext<unknown>, 'action'> & {
|
|
33
|
+
runtime?: Pick<ModuleContext<unknown>['runtime'], 'snapshot'>;
|
|
34
|
+
recordActionsSnapshot?: ModuleContext<unknown>['recordActionsSnapshot'];
|
|
35
|
+
};
|
|
36
|
+
export declare function resolveRecordActions(context: RecordActionContext, actions: RecordActionItem[], defaultLoading?: boolean, recordId?: string): ResolvedRecordActionItem[];
|
|
27
37
|
export declare function mergeRecordActions(baseActions: RecordActionItem[], extraActions: RecordActionItem[]): RecordActionItem[];
|
|
38
|
+
export {};
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import type { Option, OptionValueList, ResolvedOptionFieldDescriptor, ResolvedModuleUiDescriptor, ResolvedViewFieldDescriptor, ViewFieldDefinition } from '../web-contracts/index';
|
|
1
|
+
import type { Option, OptionValueList, ResolvedReferenceFieldDescriptor, BooleanStatusPresentation, ResolvedOptionFieldDescriptor, ResolvedFileReferenceFieldDescriptor, ResolvedModuleUiDescriptor, ResolvedViewFieldDescriptor, FieldValuePresentation, FormGroupDescriptor, UiFormula, ViewFieldDefinition } from '../web-contracts/index';
|
|
2
2
|
import type { ModuleContext } from '../web-core/index';
|
|
3
3
|
import type { PickerConstraint, RecordPickerRecord } from './recordPickerConstraints';
|
|
4
4
|
export type RecordFormFieldDescriptor = (ViewFieldDefinition | ResolvedViewFieldDescriptor) & {
|
|
5
5
|
option?: ResolvedOptionFieldDescriptor;
|
|
6
|
+
reference?: ResolvedReferenceFieldDescriptor;
|
|
7
|
+
fileReference?: ResolvedFileReferenceFieldDescriptor;
|
|
8
|
+
formGroup?: FormGroupDescriptor;
|
|
6
9
|
};
|
|
7
10
|
export type RecordFormRecord = Record<string, unknown>;
|
|
8
|
-
export type RecordFormFieldValue = string | number | boolean | OptionValueList | undefined;
|
|
9
|
-
|
|
11
|
+
export type RecordFormFieldValue = string | number | boolean | OptionValueList | string[] | undefined;
|
|
12
|
+
/** A business boolean does not inherit the lifecycle field's implicit enabled default. */
|
|
13
|
+
export type RecordBooleanStatusValue = boolean | undefined;
|
|
14
|
+
export type RecordFormFieldControlType = 'input' | 'textarea' | 'colorPicker' | 'select' | 'enabledStatus' | 'booleanStatus' | 'switch' | 'recordPicker' | 'recordMultiPicker' | 'fileTransfer' | 'imageFileTransfer';
|
|
10
15
|
export interface RecordFormFieldFallback {
|
|
11
16
|
label: string;
|
|
12
17
|
required?: boolean;
|
|
@@ -14,6 +19,7 @@ export interface RecordFormFieldFallback {
|
|
|
14
19
|
visible?: boolean;
|
|
15
20
|
controlType?: RecordFormFieldControlType;
|
|
16
21
|
placeholder?: string;
|
|
22
|
+
disabledHint?: string;
|
|
17
23
|
options?: Option[];
|
|
18
24
|
optionSelectionMode?: 'SINGLE' | 'MULTIPLE';
|
|
19
25
|
}
|
|
@@ -35,12 +41,19 @@ export interface RecordFormFieldState {
|
|
|
35
41
|
readOnly: boolean;
|
|
36
42
|
visible: boolean;
|
|
37
43
|
controlType: RecordFormFieldControlType;
|
|
44
|
+
columnSpan: number;
|
|
38
45
|
hasOption: boolean;
|
|
39
46
|
optionSelectionMode?: 'SINGLE' | 'MULTIPLE';
|
|
40
47
|
optionTitleField?: string;
|
|
48
|
+
referenceTitleField?: string;
|
|
49
|
+
fileReference?: ResolvedFileReferenceFieldDescriptor;
|
|
41
50
|
pickerConfig?: RecordFormFieldPickerConfig;
|
|
51
|
+
booleanStatus?: BooleanStatusPresentation;
|
|
52
|
+
valuePresentation?: FieldValuePresentation;
|
|
53
|
+
disabledHint?: string;
|
|
42
54
|
placeholder?: string;
|
|
43
55
|
options?: Option[];
|
|
56
|
+
formGroup?: FormGroupDescriptor;
|
|
44
57
|
}
|
|
45
58
|
export interface ResolveRecordFormFieldNamesOptions {
|
|
46
59
|
explicitOrder?: string[];
|
|
@@ -48,10 +61,18 @@ export interface ResolveRecordFormFieldNamesOptions {
|
|
|
48
61
|
}
|
|
49
62
|
export declare function resolveRecordFormFieldNames(fields?: Map<string, RecordFormFieldDescriptor>, fallback?: Record<string, RecordFormFieldFallback>, options?: ResolveRecordFormFieldNamesOptions): string[];
|
|
50
63
|
export declare function resolveRecordFormFields(uiDescriptor: ResolvedModuleUiDescriptor | undefined, viewCode?: string): Map<string, RecordFormFieldDescriptor>;
|
|
64
|
+
export declare function resolveRecordFormGroups(uiDescriptor: ResolvedModuleUiDescriptor | undefined, viewCode?: string): FormGroupDescriptor[];
|
|
51
65
|
export declare function childResourceDefaultFormViewCode(resource: string): string;
|
|
52
66
|
export declare function resolveRecordFormFieldState(fieldName: string, options?: {
|
|
53
67
|
fields?: Map<string, RecordFormFieldDescriptor>;
|
|
54
68
|
fallback?: Record<string, RecordFormFieldFallback>;
|
|
55
69
|
pickerConfigs?: Record<string, RecordFormFieldPickerConfig>;
|
|
56
70
|
placeholderOf?: (fieldName: string, field: RecordFormFieldState) => string | undefined;
|
|
71
|
+
record?: RecordFormRecord;
|
|
57
72
|
}): RecordFormFieldState;
|
|
73
|
+
export declare function evaluateUiFormula(formula: UiFormula, record: RecordFormRecord): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Preserves an absent business value as unknown instead of treating it as true.
|
|
76
|
+
* `enabledStatus` deliberately retains its separate lifecycle default semantics.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveRecordBooleanStatusValue(value: unknown): RecordBooleanStatusValue;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ModuleContext, StaticModuleTreeClient } from '../web-core/index';
|
|
2
2
|
export interface ScopedTreeModuleContextOptions {
|
|
3
3
|
scopeFieldName: string;
|
|
4
|
-
scopeValue: string | undefined;
|
|
4
|
+
scopeValue: string | undefined | (() => string | undefined);
|
|
5
5
|
treePath: string;
|
|
6
6
|
sortPath?: string;
|
|
7
7
|
treeQueryParam?: string;
|
|
@@ -60,7 +60,7 @@ export declare function useFlatCrudManagementState<TRecord extends StaticCrudRec
|
|
|
60
60
|
startCreate: () => void;
|
|
61
61
|
startEdit: () => void;
|
|
62
62
|
cancelEdit: () => void;
|
|
63
|
-
save: () => Promise<
|
|
63
|
+
save: () => Promise<boolean>;
|
|
64
64
|
toggleEnabled: () => Promise<void>;
|
|
65
65
|
removeSelected: () => Promise<void>;
|
|
66
66
|
};
|
|
@@ -5,28 +5,36 @@ type __VLS_Props = {
|
|
|
5
5
|
loading?: boolean;
|
|
6
6
|
error?: string;
|
|
7
7
|
activeTabKey?: string;
|
|
8
|
+
lockedTabKeys?: string[];
|
|
8
9
|
realtimeStatus?: WorkbenchRealtimeStatus;
|
|
10
|
+
themeAppearance?: 'light' | 'dark';
|
|
9
11
|
};
|
|
10
|
-
declare var
|
|
12
|
+
declare var __VLS_88: {
|
|
11
13
|
activeTab: MenuTab;
|
|
12
14
|
target: MenuNavigationTarget | undefined;
|
|
13
15
|
pageDescriptor: PageDescriptor | undefined;
|
|
14
16
|
};
|
|
15
17
|
type __VLS_Slots = {} & {
|
|
16
|
-
default?: (props: typeof
|
|
18
|
+
default?: (props: typeof __VLS_88) => any;
|
|
17
19
|
};
|
|
18
20
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
21
|
+
closeTabs: (keys: string[]) => any;
|
|
19
22
|
selectMenu: (menu: MenuRecord, target: MenuNavigationTarget) => any;
|
|
20
23
|
invalidMenu: (menu: MenuRecord) => any;
|
|
21
24
|
changeTab: (key: string) => any;
|
|
22
25
|
closeTab: (key: string) => any;
|
|
26
|
+
toggleTabLock: (key: string) => any;
|
|
27
|
+
reorderTabs: (keys: string[]) => any;
|
|
23
28
|
"update:activeTabKey": (key: string) => any;
|
|
24
29
|
userCommand: (key: string) => any;
|
|
25
30
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
31
|
+
onCloseTabs?: ((keys: string[]) => any) | undefined;
|
|
26
32
|
onSelectMenu?: ((menu: MenuRecord, target: MenuNavigationTarget) => any) | undefined;
|
|
27
33
|
onInvalidMenu?: ((menu: MenuRecord) => any) | undefined;
|
|
28
34
|
onChangeTab?: ((key: string) => any) | undefined;
|
|
29
35
|
onCloseTab?: ((key: string) => any) | undefined;
|
|
36
|
+
onToggleTabLock?: ((key: string) => any) | undefined;
|
|
37
|
+
onReorderTabs?: ((keys: string[]) => any) | undefined;
|
|
30
38
|
"onUpdate:activeTabKey"?: ((key: string) => any) | undefined;
|
|
31
39
|
onUserCommand?: ((key: string) => any) | undefined;
|
|
32
40
|
}>, {
|
|
@@ -35,6 +43,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
35
43
|
realtimeStatus: WorkbenchRealtimeStatus;
|
|
36
44
|
startup: WorkbenchStartupState;
|
|
37
45
|
activeTabKey: string;
|
|
46
|
+
lockedTabKeys: string[];
|
|
47
|
+
themeAppearance: "light" | "dark";
|
|
38
48
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
39
49
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
40
50
|
declare const _default: typeof __VLS_export;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
interface CompactMenuAnchor {
|
|
2
|
+
left: number;
|
|
3
|
+
top: number;
|
|
4
|
+
right: number;
|
|
5
|
+
bottom: number;
|
|
6
|
+
}
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
presentation: 'compact' | 'expanded';
|
|
9
|
+
compactOpen?: boolean;
|
|
10
|
+
tenantLabel?: string;
|
|
11
|
+
logoSrc?: string;
|
|
12
|
+
showTitleArea?: boolean;
|
|
13
|
+
brandTitle?: string;
|
|
14
|
+
brandSubtitle?: string;
|
|
15
|
+
expandedMenuDepth?: 1 | 2 | 3;
|
|
16
|
+
presentationToggleVisible?: boolean;
|
|
17
|
+
};
|
|
18
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
19
|
+
openCompactMenu: (source: "click" | "focus" | "pointer", anchor: CompactMenuAnchor) => any;
|
|
20
|
+
scheduleCompactMenuClose: () => any;
|
|
21
|
+
closeCompactMenu: () => any;
|
|
22
|
+
changePresentation: (presentation: "compact" | "expanded") => any;
|
|
23
|
+
changeExpandedMenuDepth: (depth: 1 | 2 | 3) => any;
|
|
24
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
25
|
+
onOpenCompactMenu?: ((source: "click" | "focus" | "pointer", anchor: CompactMenuAnchor) => any) | undefined;
|
|
26
|
+
onScheduleCompactMenuClose?: (() => any) | undefined;
|
|
27
|
+
onCloseCompactMenu?: (() => any) | undefined;
|
|
28
|
+
onChangePresentation?: ((presentation: "compact" | "expanded") => any) | undefined;
|
|
29
|
+
onChangeExpandedMenuDepth?: ((depth: 1 | 2 | 3) => any) | undefined;
|
|
30
|
+
}>, {
|
|
31
|
+
compactOpen: boolean;
|
|
32
|
+
tenantLabel: string;
|
|
33
|
+
logoSrc: string;
|
|
34
|
+
showTitleArea: boolean;
|
|
35
|
+
brandTitle: string;
|
|
36
|
+
brandSubtitle: string;
|
|
37
|
+
expandedMenuDepth: 1 | 2 | 3;
|
|
38
|
+
presentationToggleVisible: boolean;
|
|
39
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
40
|
+
declare const _default: typeof __VLS_export;
|
|
41
|
+
export default _default;
|
|
@@ -4,20 +4,58 @@ type __VLS_Props = {
|
|
|
4
4
|
menus: MenuTreeNode[];
|
|
5
5
|
selectedMenuId?: string;
|
|
6
6
|
tenantLabel?: string;
|
|
7
|
+
logoSrc?: string;
|
|
8
|
+
showTitleArea?: boolean;
|
|
9
|
+
brandTitle?: string;
|
|
10
|
+
brandSubtitle?: string;
|
|
7
11
|
searchPlaceholder?: string;
|
|
8
12
|
realtimeStatus?: WorkbenchRealtimeStatus;
|
|
13
|
+
presentation?: 'compact' | 'expanded';
|
|
14
|
+
expandedMenuDepth?: 1 | 2 | 3;
|
|
15
|
+
compactOpen?: boolean;
|
|
16
|
+
compactTop?: number;
|
|
17
|
+
compactAnchor?: {
|
|
18
|
+
left: number;
|
|
19
|
+
top: number;
|
|
20
|
+
right: number;
|
|
21
|
+
bottom: number;
|
|
22
|
+
};
|
|
9
23
|
};
|
|
10
24
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
25
|
+
changePresentation: (presentation: "compact" | "expanded") => any;
|
|
26
|
+
changeExpandedMenuDepth: (depth: 1 | 2 | 3) => any;
|
|
11
27
|
selectMenu: (menu: MenuRecord, target: MenuNavigationTarget) => any;
|
|
12
28
|
invalidMenu: (menu: MenuRecord) => any;
|
|
29
|
+
compactMenuEnter: () => any;
|
|
30
|
+
compactMenuLeave: () => any;
|
|
31
|
+
compactMenuClose: () => any;
|
|
13
32
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
33
|
+
onChangePresentation?: ((presentation: "compact" | "expanded") => any) | undefined;
|
|
34
|
+
onChangeExpandedMenuDepth?: ((depth: 1 | 2 | 3) => any) | undefined;
|
|
14
35
|
onSelectMenu?: ((menu: MenuRecord, target: MenuNavigationTarget) => any) | undefined;
|
|
15
36
|
onInvalidMenu?: ((menu: MenuRecord) => any) | undefined;
|
|
37
|
+
onCompactMenuEnter?: (() => any) | undefined;
|
|
38
|
+
onCompactMenuLeave?: (() => any) | undefined;
|
|
39
|
+
onCompactMenuClose?: (() => any) | undefined;
|
|
16
40
|
}>, {
|
|
17
|
-
|
|
41
|
+
presentation: "compact" | "expanded";
|
|
42
|
+
compactOpen: boolean;
|
|
18
43
|
tenantLabel: string;
|
|
44
|
+
logoSrc: string;
|
|
45
|
+
showTitleArea: boolean;
|
|
46
|
+
brandTitle: string;
|
|
47
|
+
brandSubtitle: string;
|
|
48
|
+
expandedMenuDepth: 1 | 2 | 3;
|
|
49
|
+
selectedMenuId: string;
|
|
19
50
|
searchPlaceholder: string;
|
|
20
51
|
realtimeStatus: WorkbenchRealtimeStatus;
|
|
52
|
+
compactTop: number;
|
|
53
|
+
compactAnchor: {
|
|
54
|
+
left: number;
|
|
55
|
+
top: number;
|
|
56
|
+
right: number;
|
|
57
|
+
bottom: number;
|
|
58
|
+
};
|
|
21
59
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
60
|
declare const _default: typeof __VLS_export;
|
|
23
61
|
export default _default;
|
|
@@ -3,6 +3,8 @@ import type { WorkbenchMenuNode } from './menuTreeModel';
|
|
|
3
3
|
type __VLS_Props = {
|
|
4
4
|
node: WorkbenchMenuNode;
|
|
5
5
|
level?: number;
|
|
6
|
+
selectedMenuId?: string;
|
|
7
|
+
selectedPathIds?: string[];
|
|
6
8
|
};
|
|
7
9
|
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
10
|
selectMenu: (menu: MenuRecord, target: MenuNavigationTarget) => any;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { WorkbenchMenuNode } from './menuTreeModel';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
node: WorkbenchMenuNode;
|
|
4
|
+
mode: 'inline' | 'flyout';
|
|
5
|
+
selected?: boolean;
|
|
6
|
+
selectedPath?: boolean;
|
|
7
|
+
active?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
10
|
+
select: (node: WorkbenchMenuNode) => any;
|
|
11
|
+
openChildren: (node: WorkbenchMenuNode, event: MouseEvent, anchor: HTMLElement) => any;
|
|
12
|
+
toggleChildren: (node: WorkbenchMenuNode, anchor: HTMLElement) => any;
|
|
13
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
14
|
+
onSelect?: ((node: WorkbenchMenuNode) => any) | undefined;
|
|
15
|
+
onOpenChildren?: ((node: WorkbenchMenuNode, event: MouseEvent, anchor: HTMLElement) => any) | undefined;
|
|
16
|
+
onToggleChildren?: ((node: WorkbenchMenuNode, anchor: HTMLElement) => any) | undefined;
|
|
17
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
18
|
+
declare const _default: typeof __VLS_export;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BusinessRoutePageDescriptor } from '../web-contracts/index';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
descriptor: BusinessRoutePageDescriptor;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
export { default as Workbench } from './Workbench.vue';
|
|
2
2
|
export { default as WorkbenchMenu } from './WorkbenchMenu.vue';
|
|
3
3
|
export { default as WorkbenchOutlet } from './WorkbenchOutlet.vue';
|
|
4
|
+
export { default as WorkspaceViewOutlet } from './WorkspaceViewOutlet.vue';
|
|
4
5
|
export { provideWorkbenchNavigation, useWorkbenchNavigation } from './workbenchNavigation';
|
|
5
6
|
export type { WorkbenchNavigation, WorkbenchPageOpenResult } from './workbenchNavigation';
|
|
7
|
+
export { configureWorkspaceViewContributions, createWorkspaceViewDescriptor, createWorkspaceViewRegistry, dismissWorkspaceViewDescriptor, resolveWorkspaceView, } from './workspaceViews';
|
|
8
|
+
export { provideWorkspaceViewHost, useWorkspaceViewHost } from './workspaceViewHost';
|
|
9
|
+
export { defineWorkspaceView } from './workspaceViewContract';
|
|
10
|
+
export type { ResolvedWorkspaceView, WorkspaceViewRegistry } from './workspaceViews';
|
|
11
|
+
export type { WorkspaceViewDefinition, WorkspaceViewInput, WorkspaceViewPresentation, WorkspaceDrawerProfile, } from './workspaceViewContract';
|
|
12
|
+
export type { WorkspaceViewHost } from './workspaceViewHost';
|
|
6
13
|
export { createMenuTab, findFirstNavigationMenu, getMenuNavigationTarget, isTabMenuTarget, isWindowMenuTarget, pageDescriptorFromUrl, pageDescriptorToUrl, resolvePageDescriptor, tabKeyOf, tryPageDescriptorFromUrl, } from './menuNavigation';
|
|
7
14
|
export type { PageDescriptorResolveOptions, PageDescriptorUrlParseOptions } from './menuNavigation';
|
|
8
15
|
export { buildWorkbenchMegaMenuModel, createWorkbenchMenuNodes, filterWorkbenchMenuNodes, findWorkbenchMenuNodeById, findWorkbenchMenuPath, firstDeepRootIdOf, } from './menuTreeModel';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface MenuHoverClickIntent {
|
|
2
|
+
markHoverActivation(menuId: string): void;
|
|
3
|
+
consumeImmediateClick(menuId: string): boolean;
|
|
4
|
+
clear(): void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Treats the hover activation immediately preceding a click as the same open intent.
|
|
8
|
+
* A later click remains a deliberate toggle and may close the active menu.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createMenuHoverClickIntent(gracePeriod: number, now?: () => number): MenuHoverClickIntent;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface MenuPointerPosition {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}
|
|
5
|
+
export interface MenuPanelEdge {
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
bottom: number;
|
|
9
|
+
}
|
|
10
|
+
/** Keeps the active menu item stable while the pointer crosses towards its flyout panel. */
|
|
11
|
+
export declare function isPointerHeadingToMenuPanel(pointer: MenuPointerPosition, origin: MenuPointerPosition, panel: MenuPanelEdge): boolean;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function compactMenuTopOf(topbarBottom: number, workbenchTop: number): number;
|
|
2
|
+
export declare function floatingPanelTopOf(anchorViewportTop: number, panelHeight: number, viewportHeight: number, shellViewportTop: number, margin?: number): number;
|
|
3
|
+
export type WorkbenchMenuPresentation = 'compact' | 'expanded';
|
|
4
|
+
export declare function effectiveWorkbenchMenuPresentation(preferredPresentation: WorkbenchMenuPresentation, narrowViewport: boolean): WorkbenchMenuPresentation;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Component } from 'vue';
|
|
2
|
+
import type { PageLayoutMode, RouteQueryValue } from '../web-contracts/index';
|
|
3
|
+
export type WorkspaceViewInput = object;
|
|
4
|
+
export type WorkspaceViewPresentation = 'drawer' | 'tab';
|
|
5
|
+
export type WorkspaceDrawerProfile = 'detail' | 'wide-work';
|
|
6
|
+
/** Stable, URL-restorable declaration shared by all workbench view hosts. */
|
|
7
|
+
export interface WorkspaceViewDefinition<TInput extends WorkspaceViewInput> {
|
|
8
|
+
type: string;
|
|
9
|
+
route: string;
|
|
10
|
+
moduleAlias: string;
|
|
11
|
+
component: Component;
|
|
12
|
+
layout?: PageLayoutMode;
|
|
13
|
+
drawerProfile?: WorkspaceDrawerProfile;
|
|
14
|
+
routeTitle?: string;
|
|
15
|
+
titleOf(input: TInput): string;
|
|
16
|
+
parentRouteQueryOf?(input: TInput): Record<string, RouteQueryValue>;
|
|
17
|
+
parse(query: Record<string, RouteQueryValue>): TInput | undefined;
|
|
18
|
+
presentations: readonly WorkspaceViewPresentation[];
|
|
19
|
+
}
|
|
20
|
+
export declare function defineWorkspaceView<TInput extends WorkspaceViewInput>(definition: WorkspaceViewDefinition<TInput>): WorkspaceViewDefinition<TInput>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { WorkspaceViewPresentation } from './workspaceViewContract';
|
|
2
|
+
export interface WorkspaceViewHost {
|
|
3
|
+
presentation: WorkspaceViewPresentation;
|
|
4
|
+
setTitle(title: string): void;
|
|
5
|
+
dismiss(): void;
|
|
6
|
+
}
|
|
7
|
+
export declare function provideWorkspaceViewHost(host: WorkspaceViewHost): void;
|
|
8
|
+
export declare function useWorkspaceViewHost(): WorkspaceViewHost | undefined;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BusinessRoutePageDescriptor } from '../web-contracts/index';
|
|
2
|
+
import type { WorkspaceViewDefinition, WorkspaceViewInput, WorkspaceViewPresentation } from './workspaceViewContract';
|
|
3
|
+
export { defineWorkspaceView, type WorkspaceDrawerProfile, type WorkspaceViewDefinition, type WorkspaceViewInput, type WorkspaceViewPresentation, } from './workspaceViewContract';
|
|
4
|
+
export interface ResolvedWorkspaceView {
|
|
5
|
+
view: WorkspaceViewDefinition<WorkspaceViewInput>;
|
|
6
|
+
input: WorkspaceViewInput;
|
|
7
|
+
presentation: WorkspaceViewPresentation;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkspaceViewRegistry {
|
|
10
|
+
definitions: readonly WorkspaceViewDefinition<WorkspaceViewInput>[];
|
|
11
|
+
resolve(descriptor: BusinessRoutePageDescriptor): ResolvedWorkspaceView | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Replaces one application contribution set. Owners keep their registrations
|
|
15
|
+
* isolated while every workbench host resolves one shared global view catalog.
|
|
16
|
+
*/
|
|
17
|
+
export declare function configureWorkspaceViewContributions(owner: string, definitions: readonly WorkspaceViewDefinition<WorkspaceViewInput>[]): void;
|
|
18
|
+
export declare function createWorkspaceViewRegistry(definitions: readonly WorkspaceViewDefinition<WorkspaceViewInput>[]): WorkspaceViewRegistry;
|
|
19
|
+
export declare function createWorkspaceViewDescriptor<TInput extends WorkspaceViewInput>(view: WorkspaceViewDefinition<TInput>, input: TInput, presentation?: WorkspaceViewPresentation, title?: string): BusinessRoutePageDescriptor;
|
|
20
|
+
export declare function dismissWorkspaceViewDescriptor(descriptor: BusinessRoutePageDescriptor, view: WorkspaceViewDefinition<WorkspaceViewInput>): BusinessRoutePageDescriptor;
|
|
21
|
+
export declare function resolveWorkspaceView(descriptor: BusinessRoutePageDescriptor): ResolvedWorkspaceView | undefined;
|
|
@@ -57,7 +57,7 @@ export declare function createApplicationManagementState(applicationContext: Mod
|
|
|
57
57
|
startCreate: () => void;
|
|
58
58
|
startEdit: () => void;
|
|
59
59
|
cancelEdit: () => void;
|
|
60
|
-
save: () => Promise<
|
|
60
|
+
save: () => Promise<boolean>;
|
|
61
61
|
toggleEnabled: () => Promise<void>;
|
|
62
62
|
removeSelected: () => Promise<void>;
|
|
63
63
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export interface EmployeeDetailWorkspaceViewInput {
|
|
2
2
|
recordId: string;
|
|
3
3
|
}
|
|
4
|
-
export declare const employeeDetailWorkspaceView: import("../platform-
|
|
4
|
+
export declare const employeeDetailWorkspaceView: import("../platform-workbench/workspaceViewContract.ts").WorkspaceViewDefinition<EmployeeDetailWorkspaceViewInput>;
|
|
@@ -73,7 +73,7 @@ export declare function createFieldSpecManagementState(fieldSpecContext: ModuleC
|
|
|
73
73
|
startCreate: () => void;
|
|
74
74
|
startEdit: () => void;
|
|
75
75
|
cancelEdit: () => void;
|
|
76
|
-
save: () => Promise<
|
|
76
|
+
save: () => Promise<boolean>;
|
|
77
77
|
toggleEnabled: () => Promise<void>;
|
|
78
78
|
removeSelected: () => Promise<void>;
|
|
79
79
|
};
|
|
@@ -69,7 +69,7 @@ export declare function createFieldUiControlManagementState(fieldUiControlContex
|
|
|
69
69
|
startCreate: () => void;
|
|
70
70
|
startEdit: () => void;
|
|
71
71
|
cancelEdit: () => void;
|
|
72
|
-
save: () => Promise<
|
|
72
|
+
save: () => Promise<boolean>;
|
|
73
73
|
toggleEnabled: () => Promise<void>;
|
|
74
74
|
removeSelected: () => Promise<void>;
|
|
75
75
|
};
|
|
@@ -3,4 +3,4 @@ export interface MetadataOrchestrationWorkspaceViewInput {
|
|
|
3
3
|
moduleTitle?: string;
|
|
4
4
|
}
|
|
5
5
|
/** A tab-scoped metadata workbench for one dynamic module. */
|
|
6
|
-
export declare const metadataOrchestrationWorkspaceView: import("../platform-
|
|
6
|
+
export declare const metadataOrchestrationWorkspaceView: import("../platform-workbench/workspaceViewContract.ts").WorkspaceViewDefinition<MetadataOrchestrationWorkspaceViewInput>;
|
|
@@ -4,4 +4,4 @@ export interface ModuleActionManagementWorkspaceViewInput {
|
|
|
4
4
|
moduleKind?: 'static' | 'dynamic';
|
|
5
5
|
}
|
|
6
6
|
/** A tab-scoped action directory for exactly one module. */
|
|
7
|
-
export declare const moduleActionManagementWorkspaceView: import("../platform-
|
|
7
|
+
export declare const moduleActionManagementWorkspaceView: import("../platform-workbench/workspaceViewContract.ts").WorkspaceViewDefinition<ModuleActionManagementWorkspaceViewInput>;
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
export interface RoleAuthorizationWorkspaceViewInput {
|
|
3
3
|
roleId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const roleAuthorizationWorkspaceView: import("../platform-
|
|
5
|
+
export declare const roleAuthorizationWorkspaceView: import("../platform-workbench/workspaceViewContract.ts").WorkspaceViewDefinition<RoleAuthorizationWorkspaceViewInput>;
|
|
@@ -5,4 +5,4 @@ export interface RoleDetailWorkspaceViewInput {
|
|
|
5
5
|
/** Platform-owned roles deliberately have no scope id. */
|
|
6
6
|
scopeId?: string;
|
|
7
7
|
}
|
|
8
|
-
export declare const roleDetailWorkspaceView: import("../platform-
|
|
8
|
+
export declare const roleDetailWorkspaceView: import("../platform-workbench/workspaceViewContract.ts").WorkspaceViewDefinition<RoleDetailWorkspaceViewInput>;
|
|
@@ -2,4 +2,4 @@ export interface SystemUserDetailWorkspaceViewInput {
|
|
|
2
2
|
recordId: string;
|
|
3
3
|
}
|
|
4
4
|
/** A system account detail has a stable identity and can be resumed independently. */
|
|
5
|
-
export declare const systemUserDetailWorkspaceView: import("../platform-
|
|
5
|
+
export declare const systemUserDetailWorkspaceView: import("../platform-workbench/workspaceViewContract.ts").WorkspaceViewDefinition<SystemUserDetailWorkspaceViewInput>;
|