@ximatai/muyun-web-app 0.26.6 → 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.
- package/dist/{EmployeeDetailWorkspaceView-DHZ4arBj.js → EmployeeDetailWorkspaceView-DswEDSxH.js} +1 -1
- package/dist/EmployeeManagementView-C9STtw08.js +1777 -0
- package/dist/{MetadataOrchestrationView-BLxigKBh.js → MetadataOrchestrationView-DKYVGMzy.js} +195 -195
- package/dist/{ModuleActionManagementView-ByJzNkQs.js → ModuleActionManagementView-DiVzuPdu.js} +122 -122
- package/dist/RoleAuthorizationView-C0s4Bog7.js +592 -0
- package/dist/{RoleDetailWorkspaceView-Dfdigf04.js → RoleDetailWorkspaceView-dqHxKVfd.js} +1 -1
- package/dist/{RoleManagementView-D0e9nLwW.js → RoleManagementView-D43pUCxi.js} +542 -543
- package/dist/{SystemUserDetailWorkspaceView-D-UPhCmD.js → SystemUserDetailWorkspaceView-CQ9WeLrR.js} +1 -1
- package/dist/SystemUserManagementView-D75_ylYk.js +758 -0
- package/dist/{UserDetailWorkspaceView-BCSCLNSz.js → UserDetailWorkspaceView-BCST01d2.js} +1 -1
- package/dist/{UserManagementView-aY2AeeWK.js → UserManagementView-CcdvDo_y.js} +211 -212
- package/dist/index.css +1 -1
- package/dist/index.js +4293 -5694
- package/dist/{pageRealtime-Be2xkeKK.js → pageRealtime-EAiGWKEo.js} +87 -85
- package/dist/{platform-components-DuAohqJO.js → platform-components-CFU_zR7-.js} +3828 -2331
- 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/workbenchStartup.d.ts +18 -1
- package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +43 -0
- package/dist/types/consumer/index.d.ts +17 -2
- package/dist/types/consumer/userPreferencePersistence.d.ts +7 -0
- package/dist/types/consumer/workbenchNavigation.d.ts +8 -0
- package/dist/types/dynamic-page-runtime/DynamicModuleWorkspaceDetailView.vue.d.ts +10 -0
- package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +38 -0
- package/dist/types/dynamic-page-runtime/NavigatorManagementEditor.vue.d.ts +25 -0
- package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +43 -0
- package/dist/types/dynamic-page-runtime/detailSurfacePreference.d.ts +10 -0
- package/dist/types/dynamic-page-runtime/index.d.ts +2 -1
- package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +57 -1
- package/dist/types/dynamic-page-runtime/modulePageNavigation.d.ts +1 -1
- package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +6 -0
- package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +27 -0
- package/dist/types/platform-admin-runtime/index.d.ts +1 -1
- package/dist/types/platform-admin-runtime/platformAdminRoutes.d.ts +5 -0
- package/dist/types/platform-admin-runtime/realtime.d.ts +2 -1
- package/dist/types/platform-components/BusinessNotificationPanel.vue.d.ts +12 -0
- package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +6 -0
- package/dist/types/platform-components/FileTransferUploader.vue.d.ts +20 -1
- package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +32 -0
- package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +8 -2
- package/dist/types/platform-components/RecordActionBar.vue.d.ts +1 -1
- package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +4 -1
- package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +11 -7
- package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +7 -5
- package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +6 -6
- package/dist/types/platform-components/RecordFileReferenceTransfer.vue.d.ts +10 -0
- package/dist/types/platform-components/RecordFormFields.vue.d.ts +5 -1
- package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +4 -1
- package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +1 -1
- package/dist/types/platform-components/RecordPanelButton.vue.d.ts +2 -0
- package/dist/types/platform-components/RecordPicker.vue.d.ts +1 -1
- package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +9 -2
- package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -0
- package/dist/types/platform-components/SingleImageFileReferenceField.vue.d.ts +23 -0
- package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +13 -7
- package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +3 -0
- package/dist/types/platform-components/fileReferenceTransfer.d.ts +8 -0
- package/dist/types/platform-components/index.d.ts +5 -2
- package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
- package/dist/types/platform-components/platformErrorFeedback.d.ts +2 -0
- package/dist/types/platform-components/recordActionBarModel.d.ts +6 -0
- package/dist/types/platform-components/recordFormFieldModel.d.ts +6 -3
- package/dist/types/platform-components/recycleBinState.d.ts +2 -0
- package/dist/types/platform-components/scopedTreeModuleContext.d.ts +12 -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 +22 -2
- package/dist/types/platform-workbench/WorkbenchMenu.vue.d.ts +24 -0
- package/dist/types/platform-workbench/WorkbenchSidebarMenuEntry.vue.d.ts +19 -0
- package/dist/types/platform-workbench/index.d.ts +1 -0
- package/dist/types/platform-workbench/menuHoverClickIntent.d.ts +10 -0
- package/dist/types/platform-workbench/menuNavigation.d.ts +3 -0
- package/dist/types/platform-workbench/menuPointerAim.d.ts +1 -1
- package/dist/types/platform-workbench/modulePageWorkspaceViews.d.ts +7 -0
- package/dist/types/platform-workbench/workbenchLayout.d.ts +39 -0
- package/dist/types/platform-workbench/workbenchNavigation.d.ts +2 -0
- package/dist/types/platform-workbench/workspaceViewHost.d.ts +2 -0
- package/dist/types/views/fieldUiControlManagementState.d.ts +1 -1
- package/dist/types/views/tenantManagementState.d.ts +11 -1
- package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +2 -2
- package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
- package/dist/types/vue-ui-antdv/components/UiModal.vue.d.ts +1 -1
- 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/UiThemeProvider.vue.d.ts +21 -0
- package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +7 -1
- package/dist/types/vue-ui-antdv/index.d.ts +4 -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 +1 -0
- package/dist/types/web-contracts/index.d.ts +168 -17
- package/dist/types/web-core/businessNotifications.d.ts +3 -0
- package/dist/types/web-core/clients.d.ts +9 -1
- package/dist/types/web-core/index.d.ts +3 -0
- package/dist/types/web-core/mock.d.ts +3 -1
- package/dist/types/web-core/module/moduleContext.d.ts +1 -0
- package/dist/types/web-core/module/runtimeContext.d.ts +3 -1
- package/dist/types/web-core/module/staticModuleClient.d.ts +8 -1
- package/dist/types/web-core/realtime.d.ts +5 -1
- package/dist/types/web-core/userPreferences.d.ts +24 -0
- package/dist/{useUserSessionRows-DX9qYU5r.js → useUserSessionRows-DCpUZCzN.js} +2 -2
- package/dist/workspaceViewSessions-Dj1LjdG1.js +4984 -0
- package/package.json +1 -1
- package/dist/EmployeeManagementView-BfGb_ssB.js +0 -1706
- package/dist/RoleAuthorizationView-DJSWY3fu.js +0 -592
- package/dist/SystemUserManagementView-DNKRvmDk.js +0 -761
- package/dist/currentUserContext-B1lj1WgF.js +0 -11
- package/dist/types/views/ApplicationManagementView.vue.d.ts +0 -3
- package/dist/types/views/DepartmentManagementView.vue.d.ts +0 -3
- package/dist/types/views/FieldSpecManagementView.vue.d.ts +0 -3
- package/dist/types/views/OrganizationManagementView.vue.d.ts +0 -3
- package/dist/types/views/applicationManagementState.d.ts +0 -64
- package/dist/types/views/departmentManagementState.d.ts +0 -137
- package/dist/types/views/fieldSpecManagementState.d.ts +0 -80
- package/dist/types/views/organizationManagementState.d.ts +0 -64
- package/dist/workspaceViewSessions-C3GP1UGp.js +0 -2639
|
@@ -69,6 +69,37 @@ export interface WebUserNotification {
|
|
|
69
69
|
logoutRequired?: boolean;
|
|
70
70
|
targetSessionId?: string;
|
|
71
71
|
}
|
|
72
|
+
/** Ephemeral business reminder. It is not a persisted inbox or an acknowledgement record. */
|
|
73
|
+
export interface WebBusinessNotification {
|
|
74
|
+
id: string;
|
|
75
|
+
code: string;
|
|
76
|
+
title: string;
|
|
77
|
+
subtitle?: string;
|
|
78
|
+
content: string;
|
|
79
|
+
dismissible: boolean;
|
|
80
|
+
actions: WebBusinessNotificationAction[];
|
|
81
|
+
}
|
|
82
|
+
export type WebBusinessNotificationAction = WebBusinessNotificationNavigateAction | WebBusinessNotificationCommandAction;
|
|
83
|
+
export interface WebBusinessNotificationNavigateAction {
|
|
84
|
+
kind: 'navigate';
|
|
85
|
+
key: string;
|
|
86
|
+
label: string;
|
|
87
|
+
moduleAlias: string;
|
|
88
|
+
recordId?: string;
|
|
89
|
+
pageMode?: 'LIST' | 'FORM' | 'DETAIL';
|
|
90
|
+
query?: Record<string, string>;
|
|
91
|
+
dismissOnSuccess: boolean;
|
|
92
|
+
}
|
|
93
|
+
export interface WebBusinessNotificationCommandAction {
|
|
94
|
+
kind: 'command';
|
|
95
|
+
key: string;
|
|
96
|
+
label: string;
|
|
97
|
+
command: string;
|
|
98
|
+
arguments?: Record<string, unknown>;
|
|
99
|
+
danger?: boolean;
|
|
100
|
+
confirmation?: string;
|
|
101
|
+
dismissOnSuccess: boolean;
|
|
102
|
+
}
|
|
72
103
|
export interface WebBusinessRealtimeEvent {
|
|
73
104
|
type: string;
|
|
74
105
|
moduleAlias: string;
|
|
@@ -92,6 +123,8 @@ export interface RecordInlineAction {
|
|
|
92
123
|
iconName?: RecordInlineActionIconName;
|
|
93
124
|
showLabel?: boolean;
|
|
94
125
|
disabled?: boolean;
|
|
126
|
+
/** Explains why a visible inline action is unavailable. */
|
|
127
|
+
disabledReason?: string;
|
|
95
128
|
danger?: boolean;
|
|
96
129
|
}
|
|
97
130
|
export type RecordInlineActionIconName = 'app' | 'check' | 'close' | 'delete' | 'down' | 'edit' | 'export' | 'filter' | 'help' | 'lock' | 'notification' | 'plus' | 'power' | 'reload' | 'save' | 'search' | 'settings';
|
|
@@ -104,8 +137,50 @@ export interface CurrentUser {
|
|
|
104
137
|
passwordChangeRequired?: boolean;
|
|
105
138
|
timeZone?: string;
|
|
106
139
|
}
|
|
140
|
+
export interface CurrentUserProfilePosition {
|
|
141
|
+
id?: string;
|
|
142
|
+
title?: string;
|
|
143
|
+
primary?: boolean;
|
|
144
|
+
}
|
|
145
|
+
export interface CurrentUserEmployeeProfile {
|
|
146
|
+
id?: string;
|
|
147
|
+
employeeNo?: string;
|
|
148
|
+
title?: string;
|
|
149
|
+
avatarAssetId?: string;
|
|
150
|
+
mobile?: string;
|
|
151
|
+
email?: string;
|
|
152
|
+
organizationId?: string;
|
|
153
|
+
organizationTitle?: string;
|
|
154
|
+
departmentId?: string;
|
|
155
|
+
departmentTitle?: string;
|
|
156
|
+
contactEditable?: boolean;
|
|
157
|
+
positions?: CurrentUserProfilePosition[];
|
|
158
|
+
}
|
|
159
|
+
export interface CurrentUserProfile {
|
|
160
|
+
username?: string;
|
|
161
|
+
timeZone?: string;
|
|
162
|
+
employee?: CurrentUserEmployeeProfile;
|
|
163
|
+
}
|
|
164
|
+
export interface UpdateCurrentUserProfileRequest {
|
|
165
|
+
mobile?: string;
|
|
166
|
+
email?: string;
|
|
167
|
+
avatarAssetId?: string;
|
|
168
|
+
}
|
|
107
169
|
export interface SessionContext {
|
|
108
170
|
currentUser: CurrentUser;
|
|
171
|
+
tenantBranding?: TenantBranding;
|
|
172
|
+
}
|
|
173
|
+
export interface TenantBranding {
|
|
174
|
+
lightLogo?: string;
|
|
175
|
+
darkLogo?: string;
|
|
176
|
+
mode?: 'logoOnly' | 'logoWithTitle';
|
|
177
|
+
title?: string;
|
|
178
|
+
subtitle?: string;
|
|
179
|
+
}
|
|
180
|
+
/** Public branding facts for a tenant locked by the unauthenticated login URL. */
|
|
181
|
+
export interface TenantLoginContext {
|
|
182
|
+
tenantId: string;
|
|
183
|
+
branding?: TenantBranding;
|
|
109
184
|
}
|
|
110
185
|
export interface LoginRequest {
|
|
111
186
|
tenantId?: string;
|
|
@@ -374,6 +449,13 @@ export interface ViewFieldDefinition {
|
|
|
374
449
|
/** Maximum visible lines for text cells in standard list views. Omitted uses the platform default of one line. */
|
|
375
450
|
maxDisplayLines?: number;
|
|
376
451
|
}
|
|
452
|
+
/** Semantic group that owns a contiguous set of standard-form fields. */
|
|
453
|
+
export interface FormGroupDescriptor {
|
|
454
|
+
groupCode: string;
|
|
455
|
+
title: string;
|
|
456
|
+
subtitle?: string;
|
|
457
|
+
fields: ViewFieldRef[];
|
|
458
|
+
}
|
|
377
459
|
export interface BooleanStatusPresentation {
|
|
378
460
|
trueLabel: string;
|
|
379
461
|
falseLabel: string;
|
|
@@ -438,6 +520,7 @@ export interface ViewDefinition {
|
|
|
438
520
|
clientType?: ModuleUiClientType;
|
|
439
521
|
title?: string;
|
|
440
522
|
fields: ViewFieldDefinition[];
|
|
523
|
+
formGroups?: FormGroupDescriptor[];
|
|
441
524
|
}
|
|
442
525
|
export interface ResolvedViewDescriptor {
|
|
443
526
|
viewCode: string;
|
|
@@ -447,7 +530,72 @@ export interface ResolvedViewDescriptor {
|
|
|
447
530
|
fields: ResolvedViewFieldDescriptor[];
|
|
448
531
|
/** Dynamic-page provenance used to select the view configured by a menu entry. */
|
|
449
532
|
sourceUiConfigId?: string;
|
|
450
|
-
|
|
533
|
+
formGroups?: FormGroupDescriptor[];
|
|
534
|
+
}
|
|
535
|
+
export type ModulePageTemplate = 'FLAT_MANAGEMENT' | 'LIST_DETAIL_CARD' | 'TREE_MANAGEMENT';
|
|
536
|
+
export interface ResolvedPageExplorerDescriptor {
|
|
537
|
+
title: string;
|
|
538
|
+
searchPlaceholder: string;
|
|
539
|
+
emptyDescription: string;
|
|
540
|
+
recordLabel: string;
|
|
541
|
+
fallbackTitle: string;
|
|
542
|
+
titleField: string;
|
|
543
|
+
secondaryField?: string;
|
|
544
|
+
mutedWhenDisabled: boolean;
|
|
545
|
+
}
|
|
546
|
+
export interface ResolvedPageNavigatorDescriptor {
|
|
547
|
+
levels: ResolvedPageNavigatorLevelDescriptor[];
|
|
548
|
+
contextBindings: ResolvedPageContextBindingDescriptor[];
|
|
549
|
+
}
|
|
550
|
+
export interface ResolvedPageNavigatorLevelDescriptor {
|
|
551
|
+
key: string;
|
|
552
|
+
kind: 'TREE' | 'MICRO_LIST';
|
|
553
|
+
sourceModuleAlias: string;
|
|
554
|
+
title: string;
|
|
555
|
+
searchPlaceholder: string;
|
|
556
|
+
/** Presentation policy applied after the source has authoritatively loaded. */
|
|
557
|
+
singleResultPolicy?: 'NONE' | 'AUTO_SELECT' | 'AUTO_SELECT_AND_HIDE';
|
|
558
|
+
/** Session-derived source scope, enforced by the source reference transport. */
|
|
559
|
+
sourceScope?: 'NONE' | 'CURRENT_TENANT';
|
|
560
|
+
/** When present, the navigator source exposes its own standard CRUD affordances in place. */
|
|
561
|
+
management?: ResolvedPageNavigatorManagementDescriptor;
|
|
562
|
+
}
|
|
563
|
+
export interface ResolvedPageContextBindingDescriptor {
|
|
564
|
+
source: 'SESSION' | 'NAVIGATOR';
|
|
565
|
+
sourceKey: string;
|
|
566
|
+
target: 'LIST_QUERY' | 'NAVIGATOR_QUERY' | 'FORM_DEFAULT' | 'PICKER_QUERY' | 'MUTATION_CONSTRAINT';
|
|
567
|
+
targetKey: string;
|
|
568
|
+
targetNavigatorLevelKey?: string;
|
|
569
|
+
/** Field name of the record picker which receives this query context. */
|
|
570
|
+
targetPickerFieldKey?: string;
|
|
571
|
+
}
|
|
572
|
+
export interface ResolvedPageNavigatorManagementDescriptor {
|
|
573
|
+
/** Optional named source-module form; the default editor is used when omitted. */
|
|
574
|
+
editorSurface?: string;
|
|
575
|
+
}
|
|
576
|
+
export interface ResolvedPageListDescriptor {
|
|
577
|
+
searchPlaceholder: string;
|
|
578
|
+
fields: ResolvedViewDescriptor;
|
|
579
|
+
}
|
|
580
|
+
export interface ResolvedPageDetailDescriptor {
|
|
581
|
+
emptyDescription: string;
|
|
582
|
+
createTitle: string;
|
|
583
|
+
display?: ResolvedViewDescriptor;
|
|
584
|
+
/** Omitted by an editorless page; standard mutation actions remain governed by the runtime action contract. */
|
|
585
|
+
editor?: ResolvedViewDescriptor;
|
|
586
|
+
/** Stable client registration key for an independently restorable detail workbench view. */
|
|
587
|
+
workspaceView?: ResolvedPageDetailWorkspaceViewDescriptor;
|
|
588
|
+
}
|
|
589
|
+
export interface ResolvedPageDetailWorkspaceViewDescriptor {
|
|
590
|
+
type: string;
|
|
591
|
+
}
|
|
592
|
+
export interface ResolvedModulePageDescriptor {
|
|
593
|
+
template: ModulePageTemplate;
|
|
594
|
+
explorer?: ResolvedPageExplorerDescriptor;
|
|
595
|
+
navigator?: ResolvedPageNavigatorDescriptor;
|
|
596
|
+
list?: ResolvedPageListDescriptor;
|
|
597
|
+
detail: ResolvedPageDetailDescriptor;
|
|
598
|
+
traits: ('STANDARD_CRUD' | 'ENABLED_STATUS' | 'RECYCLE_BIN' | 'RESPONSIVE_DETAIL_SURFACE')[];
|
|
451
599
|
}
|
|
452
600
|
export interface ResolvedUiActionConfirmationDescriptor {
|
|
453
601
|
mode: 'typedText';
|
|
@@ -457,38 +605,36 @@ export interface ResolvedUiActionDescriptor {
|
|
|
457
605
|
actionCode: string;
|
|
458
606
|
confirmation?: ResolvedUiActionConfirmationDescriptor;
|
|
459
607
|
}
|
|
460
|
-
export interface ResolvedScopedListWorkspaceDescriptor {
|
|
461
|
-
scopeModuleAlias: string;
|
|
462
|
-
scopeField: string;
|
|
463
|
-
queryCriteriaKey: string;
|
|
464
|
-
scopeTitle: string;
|
|
465
|
-
scopeSearchPlaceholder: string;
|
|
466
|
-
/** Scope list items only show a secondary label when the descriptor explicitly enables it. */
|
|
467
|
-
showScopeItemSubtitle: boolean;
|
|
468
|
-
createPolicy: 'REQUIRE_SCOPE' | 'ALLOW_UNSCOPED';
|
|
469
|
-
manageScopeTree?: boolean;
|
|
470
|
-
}
|
|
471
608
|
/** Source-neutral runtime fact for one persisted MuYunFileServer field. */
|
|
472
609
|
export interface ResolvedFileReferenceFieldDescriptor {
|
|
473
610
|
fieldRef: ViewFieldRef;
|
|
474
611
|
allowedMediaTypes: string[];
|
|
475
612
|
maxFileSizeBytes?: number;
|
|
476
613
|
maxFiles: number;
|
|
614
|
+
storagePolicy: 'MUYUN_FILE_SERVER' | 'DATABASE_INLINE';
|
|
477
615
|
uploadAvailable: boolean;
|
|
478
|
-
|
|
479
|
-
export interface ModuleUiDefinition {
|
|
480
|
-
moduleAlias: string;
|
|
481
|
-
views: ViewDefinition[];
|
|
616
|
+
readAvailable: boolean;
|
|
482
617
|
}
|
|
483
618
|
export interface ResolvedModuleUiDescriptor {
|
|
484
619
|
schemaVersion: string;
|
|
485
620
|
moduleAlias: string;
|
|
486
621
|
moduleKind?: 'STATIC' | 'DYNAMIC';
|
|
487
622
|
title?: string;
|
|
488
|
-
views: ResolvedViewDescriptor[];
|
|
489
623
|
actions?: ResolvedUiActionDescriptor[];
|
|
490
624
|
recordLabelField?: string;
|
|
491
625
|
fileReferences?: ResolvedFileReferenceFieldDescriptor[];
|
|
626
|
+
page?: ResolvedModulePageDescriptor;
|
|
627
|
+
defaultEditor?: ResolvedViewDescriptor;
|
|
628
|
+
editorSurfaces?: ResolvedEditorSurfaceDescriptor[];
|
|
629
|
+
editorContributions?: ResolvedPageDetailEditorContribution[];
|
|
630
|
+
}
|
|
631
|
+
export interface ResolvedEditorSurfaceDescriptor {
|
|
632
|
+
key: string;
|
|
633
|
+
editor: ResolvedViewDescriptor;
|
|
634
|
+
}
|
|
635
|
+
export interface ResolvedPageDetailEditorContribution {
|
|
636
|
+
resource: string;
|
|
637
|
+
editor: ResolvedViewDescriptor;
|
|
492
638
|
}
|
|
493
639
|
export interface StandardEntity {
|
|
494
640
|
id?: string;
|
|
@@ -816,6 +962,11 @@ export interface ModuleMetadataRelation extends StandardSortableEntity {
|
|
|
816
962
|
}
|
|
817
963
|
export interface Tenant extends StandardEnabledSortableEntity {
|
|
818
964
|
alias?: string;
|
|
965
|
+
lightLogoAssetId?: string;
|
|
966
|
+
darkLogoAssetId?: string;
|
|
967
|
+
workbenchBrandMode?: 'logoOnly' | 'logoWithTitle';
|
|
968
|
+
workbenchTitle?: string;
|
|
969
|
+
workbenchSubtitle?: string;
|
|
819
970
|
}
|
|
820
971
|
export interface FieldSpec extends StandardEnabledSortableEntity {
|
|
821
972
|
alias?: string;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { WebBusinessNotificationCommandAction } from '../web-contracts/index';
|
|
2
|
+
import type { HttpClient } from './http';
|
|
3
|
+
export declare function invokeBusinessNotificationCommand(http: HttpClient, notificationId: string, action: WebBusinessNotificationCommandAction): Promise<unknown>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { ChangeOwnPasswordRequest, CurrentUser, LoginRequest, LoginResult, MenuMineResponse, PageBootstrap } from '../web-contracts/index';
|
|
1
|
+
import type { ChangeOwnPasswordRequest, CurrentUserProfile, CurrentUser, LoginRequest, LoginResult, UpdateCurrentUserProfileRequest, MenuMineResponse, PageBootstrap, TenantBranding, TenantLoginContext } from '../web-contracts/index';
|
|
2
2
|
import type { HttpClient } from './http';
|
|
3
3
|
export interface SessionClient {
|
|
4
4
|
current(): Promise<CurrentUser>;
|
|
5
|
+
tenantBranding?(): Promise<TenantBranding>;
|
|
5
6
|
}
|
|
6
7
|
export interface MenuClient {
|
|
7
8
|
mine(): Promise<MenuMineResponse>;
|
|
@@ -13,9 +14,16 @@ export interface PageBootstrapClient {
|
|
|
13
14
|
export interface AuthClient {
|
|
14
15
|
login(request: LoginRequest): Promise<LoginResult>;
|
|
15
16
|
changeOwnPassword(request: ChangeOwnPasswordRequest, token: string): Promise<void>;
|
|
17
|
+
currentProfile(token: string): Promise<CurrentUserProfile>;
|
|
18
|
+
updateCurrentProfile(request: UpdateCurrentUserProfileRequest, token: string): Promise<CurrentUserProfile>;
|
|
16
19
|
logout(token?: string): Promise<void>;
|
|
17
20
|
}
|
|
21
|
+
/** Resolves the public context used by a tenant-locked login entry. */
|
|
22
|
+
export interface LoginContextClient {
|
|
23
|
+
loginContext(tenantId: string): Promise<TenantLoginContext>;
|
|
24
|
+
}
|
|
18
25
|
export declare function createSessionClient(http: HttpClient): SessionClient;
|
|
26
|
+
export declare function createLoginContextClient(http: HttpClient): LoginContextClient;
|
|
19
27
|
export declare function createMenuClient(http: HttpClient): MenuClient;
|
|
20
28
|
export declare function createPageBootstrapClient(http: HttpClient): PageBootstrapClient;
|
|
21
29
|
/**
|
|
@@ -2,7 +2,10 @@ export * from './errors';
|
|
|
2
2
|
export * from './http';
|
|
3
3
|
export * from './query';
|
|
4
4
|
export * from './actionResult';
|
|
5
|
+
export * from './businessNotifications';
|
|
5
6
|
export * from './dataChanges';
|
|
6
7
|
export * from './realtime';
|
|
7
8
|
export * from './clients';
|
|
9
|
+
export { userPreferences } from './userPreferences';
|
|
10
|
+
export type { UserPreferenceOptions, UserPreferenceStore } from './userPreferences';
|
|
8
11
|
export * from './module/index';
|
|
@@ -3,4 +3,6 @@ import type { MenuClient, SessionClient } from './index';
|
|
|
3
3
|
export declare function createMockSessionClient(currentUser?: CurrentUser): SessionClient;
|
|
4
4
|
export declare function createMockMenuClient(records?: WebTreeNode<MenuRecord>[]): MenuClient;
|
|
5
5
|
export declare const mockCurrentUser: CurrentUser;
|
|
6
|
-
|
|
6
|
+
type MockMenuNode = WebTreeNode<MenuRecord>;
|
|
7
|
+
export declare const mockMenuTree: MockMenuNode[];
|
|
8
|
+
export {};
|
|
@@ -23,6 +23,7 @@ export interface ModuleContextConfig {
|
|
|
23
23
|
}
|
|
24
24
|
export interface ModuleContextOptions extends ModuleContextConfig {
|
|
25
25
|
moduleAlias: string;
|
|
26
|
+
runtimeAccess?: 'MENU' | 'REFERENCE';
|
|
26
27
|
}
|
|
27
28
|
export declare function configureModuleContext(config: ModuleContextConfig): void;
|
|
28
29
|
export declare function provideModuleContextConfig(config: ModuleContextConfig): void;
|
|
@@ -47,6 +47,8 @@ export interface ModuleRuntimeContext {
|
|
|
47
47
|
capabilities: string[];
|
|
48
48
|
abilities?: string[];
|
|
49
49
|
actions: ModuleRuntimeAction[];
|
|
50
|
+
/** Read-only projections this module deliberately exposes for page navigation. */
|
|
51
|
+
navigatorSourceCapabilities?: Array<'REFERENCE_QUERY' | 'REFERENCE_TREE'>;
|
|
50
52
|
uiDescriptor?: ResolvedModuleUiDescriptor;
|
|
51
53
|
}
|
|
52
54
|
export interface ModuleRuntimeContextState {
|
|
@@ -61,5 +63,5 @@ export interface ModuleRuntimeContextState {
|
|
|
61
63
|
recordActions(recordId: string): Promise<ModuleRecordActionAvailability>;
|
|
62
64
|
recordActionsSnapshot(recordId: string): ModuleRecordActionAvailability | undefined;
|
|
63
65
|
}
|
|
64
|
-
export declare function createModuleRuntimeContextState(http: HttpClient, moduleAlias: string): ModuleRuntimeContextState;
|
|
66
|
+
export declare function createModuleRuntimeContextState(http: HttpClient, moduleAlias: string, access?: 'MENU' | 'REFERENCE'): ModuleRuntimeContextState;
|
|
65
67
|
export declare function isRuntimeAbilityAvailable(context: ModuleRuntimeContext | undefined, ability: ModuleAbilityCode): boolean;
|
|
@@ -22,7 +22,7 @@ export interface StaticModuleCrudClient<TRecord> {
|
|
|
22
22
|
disable(id: string, request: RecordActionRequest): Promise<StaticCountMutationResult>;
|
|
23
23
|
}
|
|
24
24
|
export interface StaticModuleTreeClient<TRecord> extends StaticModuleCrudClient<TRecord> {
|
|
25
|
-
tree(): Promise<WebListResponse<WebTreeNode<TRecord>>>;
|
|
25
|
+
tree(request?: WebQueryRequest): Promise<WebListResponse<WebTreeNode<TRecord>>>;
|
|
26
26
|
treeFlat(options?: {
|
|
27
27
|
rootId?: string;
|
|
28
28
|
includeSelf?: boolean;
|
|
@@ -39,8 +39,15 @@ export interface ModuleEnableClient {
|
|
|
39
39
|
export declare function createStaticModuleCrudClient<TRecord>(http: HttpClient, options: {
|
|
40
40
|
moduleAlias: string;
|
|
41
41
|
}): StaticModuleCrudClient<TRecord>;
|
|
42
|
+
/** The navigation-only read surface deliberately does not reuse the module query endpoint. */
|
|
43
|
+
export declare function createNavigatorReferenceCrudClient<TRecord>(http: HttpClient, options: {
|
|
44
|
+
moduleAlias: string;
|
|
45
|
+
}): StaticModuleCrudClient<TRecord>;
|
|
42
46
|
export declare function createStaticResourceCrudClient<TRecord>(http: HttpClient, resourcePath: string): StaticModuleCrudClient<TRecord>;
|
|
43
47
|
export declare function createStaticModuleTreeClient<TRecord>(http: HttpClient, options: {
|
|
44
48
|
moduleAlias: string;
|
|
45
49
|
}): StaticModuleTreeClient<TRecord>;
|
|
50
|
+
export declare function createNavigatorReferenceTreeClient<TRecord>(http: HttpClient, options: {
|
|
51
|
+
moduleAlias: string;
|
|
52
|
+
}): StaticModuleTreeClient<TRecord>;
|
|
46
53
|
export declare function createStaticResourceTreeClient<TRecord>(http: HttpClient, resourcePath: string): StaticModuleTreeClient<TRecord>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IMessage } from '@stomp/stompjs';
|
|
2
|
-
import type { WebBusinessRealtimeEvent, WebCommittedChangeSet, WebRealtimeEnvelope, WebUserNotification } from '../web-contracts/index';
|
|
2
|
+
import type { WebBusinessRealtimeEvent, WebBusinessNotification, WebCommittedChangeSet, WebRealtimeEnvelope, WebUserNotification } from '../web-contracts/index';
|
|
3
3
|
import type { DataChangeDispatcher } from './dataChanges';
|
|
4
4
|
export type RealtimeConnectionState = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'disconnected' | 'unauthorized' | 'failed';
|
|
5
5
|
export interface RealtimeChannel<TPayload> {
|
|
@@ -66,11 +66,13 @@ export interface StompErrorFrame {
|
|
|
66
66
|
export declare const realtimeMessageTypes: {
|
|
67
67
|
readonly dataChange: "platform.data-change";
|
|
68
68
|
readonly securityNotification: "platform.security-notification";
|
|
69
|
+
readonly businessNotification: "platform.business-notification";
|
|
69
70
|
readonly businessEvent: "platform.business-event";
|
|
70
71
|
};
|
|
71
72
|
export declare const realtimeDestinations: {
|
|
72
73
|
readonly userDataChanges: "/user/queue/platform/data-changes";
|
|
73
74
|
readonly userNotifications: "/user/queue/platform/notifications";
|
|
75
|
+
readonly userBusinessNotifications: "/user/queue/platform/business-notifications";
|
|
74
76
|
readonly userBusinessEvents: "/user/queue/platform/business-events";
|
|
75
77
|
readonly userImMessages: "/user/queue/platform/im/messages";
|
|
76
78
|
readonly platformPing: "/app/platform/ping";
|
|
@@ -79,6 +81,7 @@ export declare const realtimeDestinations: {
|
|
|
79
81
|
};
|
|
80
82
|
export declare const dataChangeChannel: RealtimeChannel<WebCommittedChangeSet>;
|
|
81
83
|
export declare const userNotificationChannel: RealtimeChannel<WebUserNotification>;
|
|
84
|
+
export declare const userBusinessNotificationChannel: RealtimeChannel<WebBusinessNotification>;
|
|
82
85
|
export declare const userBusinessEventChannel: RealtimeChannel<WebBusinessRealtimeEvent>;
|
|
83
86
|
export declare const userImMessageChannel: RealtimeChannel<unknown>;
|
|
84
87
|
export declare const platformPingCommand: RealtimeCommand<{
|
|
@@ -101,4 +104,5 @@ export declare function imConversationMessageChannel(conversationId: string): Re
|
|
|
101
104
|
export declare function createRealtimeClient(options?: RealtimeClientOptions): RealtimeClient;
|
|
102
105
|
export declare function connectRealtimeDataChanges(realtime: RealtimeClient, dispatcher: DataChangeDispatcher): RealtimeSubscription;
|
|
103
106
|
export declare function connectRealtimeUserNotifications(realtime: RealtimeClient, handler: RealtimeHandler<WebUserNotification>): RealtimeSubscription;
|
|
107
|
+
export declare function connectRealtimeBusinessNotifications(realtime: RealtimeClient, handler: RealtimeHandler<WebBusinessNotification>): RealtimeSubscription;
|
|
104
108
|
export declare function connectRealtimeBusinessEvents(realtime: RealtimeClient, handler: RealtimeHandler<WebBusinessRealtimeEvent>): RealtimeSubscription;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface UserPreferenceOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Local persistence is the default. `backend` reserves the preference for the current account
|
|
4
|
+
* and never silently falls back to device-local storage.
|
|
5
|
+
*/
|
|
6
|
+
persistence?: 'local' | 'backend';
|
|
7
|
+
}
|
|
8
|
+
export interface UserPreferenceStore {
|
|
9
|
+
get<T>(key: string, fallback: T): T;
|
|
10
|
+
restore<T>(key: string, fallback: T, options?: UserPreferenceOptions): Promise<T>;
|
|
11
|
+
set<T>(key: string, value: T, options?: UserPreferenceOptions): Promise<void>;
|
|
12
|
+
remove(key: string, options?: UserPreferenceOptions): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
/** Internal application-composition bridge; business code only uses userPreferences. */
|
|
15
|
+
export interface UserPreferenceBackend {
|
|
16
|
+
load(key: string): Promise<string | undefined>;
|
|
17
|
+
save(key: string, valueJson: string): Promise<void>;
|
|
18
|
+
remove(key: string): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare function configureUserPreferenceBackend(value: UserPreferenceBackend | undefined): void;
|
|
21
|
+
/**
|
|
22
|
+
* Source-neutral user preference facade. Platform code owns the active persistence route.
|
|
23
|
+
*/
|
|
24
|
+
export declare const userPreferences: UserPreferenceStore;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t } from "./pageRealtime-
|
|
1
|
+
import { nt as e } from "./platform-components-CFU_zR7-.js";
|
|
2
|
+
import { t } from "./pageRealtime-EAiGWKEo.js";
|
|
3
3
|
import { ref as n } from "vue";
|
|
4
4
|
//#region src/views/useUserSessionRows.ts
|
|
5
5
|
function r(r) {
|