@svadmin/ui 0.88.1 → 0.91.0
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/app.css +4 -0
- package/dist/app.theme.css +4 -0
- package/dist/component-registry.svelte.d.ts +2 -2
- package/dist/components/AboutSettings.svelte +23 -4
- package/dist/components/AdminApp.svelte +6 -4
- package/dist/components/AdminApp.svelte.d.ts +3 -3
- package/dist/components/ApiSettings.svelte +43 -27
- package/dist/components/ApprovalActionCard.svelte +8 -9
- package/dist/components/ApprovalCenter.svelte +24 -5
- package/dist/components/AuditLogViewer.svelte +2 -2
- package/dist/components/AutoComplete.svelte +610 -0
- package/dist/components/AutoComplete.svelte.d.ts +25 -0
- package/dist/components/AutoForm.svelte +263 -18
- package/dist/components/AutoForm.svelte.d.ts +19 -2
- package/dist/components/AutoTable.svelte +135 -35
- package/dist/components/AutoTable.svelte.d.ts +8 -0
- package/dist/components/BatchActionBar.svelte +42 -14
- package/dist/components/BatchActionBar.svelte.d.ts +5 -0
- package/dist/components/BoundRecordDetailDrawer.svelte +5 -3
- package/dist/components/CancelTaskButton.svelte +14 -1
- package/dist/components/Cascader.svelte +412 -53
- package/dist/components/Cascader.svelte.d.ts +7 -1
- package/dist/components/ColorPicker.svelte +1 -1
- package/dist/components/ColorPicker.svelte.d.ts +1 -1
- package/dist/components/ComboboxField.svelte +270 -34
- package/dist/components/ComboboxField.svelte.d.ts +4 -0
- package/dist/components/CommandPalette.svelte +4 -4
- package/dist/components/DashboardView.svelte +73 -7
- package/dist/components/DashboardView.svelte.d.ts +3 -1
- package/dist/components/DateRangeInput.svelte +8 -1
- package/dist/components/DetailWorkspaceAsyncSection.svelte +107 -0
- package/dist/components/DetailWorkspaceAsyncSection.svelte.d.ts +36 -0
- package/dist/components/DetailWorkspaceSections.svelte +233 -0
- package/dist/components/DetailWorkspaceSections.svelte.d.ts +9 -0
- package/dist/components/DrawerForm.svelte +78 -9
- package/dist/components/DrawerForm.svelte.d.ts +3 -3
- package/dist/components/ErrorBoundary.svelte +1 -1
- package/dist/components/ErrorComponent.svelte +19 -6
- package/dist/components/ErrorComponent.svelte.d.ts +1 -0
- package/dist/components/ErrorSummary.svelte +9 -4
- package/dist/components/FieldRenderer.svelte +203 -90
- package/dist/components/FieldRenderer.svelte.d.ts +16 -1
- package/dist/components/FileUpload.svelte +116 -51
- package/dist/components/FileUpload.svelte.d.ts +7 -27
- package/dist/components/FileUploadField.svelte +170 -0
- package/dist/components/FileUploadField.svelte.d.ts +21 -0
- package/dist/components/FilterBuilder.svelte +13 -7
- package/dist/components/FilterCollectionInput.svelte +9 -7
- package/dist/components/FilterCollectionInput.svelte.d.ts +3 -0
- package/dist/components/ForgotPasswordPage.svelte +1 -1
- package/dist/components/Header.svelte +1 -1
- package/dist/components/ImportWizard.svelte +197 -28
- package/dist/components/ImportWizard.svelte.d.ts +5 -1
- package/dist/components/InferencerPanel.svelte +4 -2
- package/dist/components/InfiniteList.svelte +52 -9
- package/dist/components/JsonSchemaForm.svelte +237 -42
- package/dist/components/JsonSchemaForm.svelte.d.ts +10 -3
- package/dist/components/KanbanBoard.svelte +43 -7
- package/dist/components/KanbanBoard.svelte.d.ts +2 -2
- package/dist/components/Layout.svelte +1 -1
- package/dist/components/LoginPage.svelte +1 -1
- package/dist/components/MetricStrip.svelte +8 -3
- package/dist/components/MetricStrip.svelte.d.ts +1 -0
- package/dist/components/ModalForm.svelte +85 -9
- package/dist/components/ModalForm.svelte.d.ts +3 -3
- package/dist/components/MoneyInput.svelte +5 -3
- package/dist/components/MoneyInput.svelte.d.ts +4 -2
- package/dist/components/MultiTabKeepAlive.svelte +502 -43
- package/dist/components/MultiTabKeepAlive.svelte.d.ts +40 -6
- package/dist/components/NotificationsSettings.svelte +10 -10
- package/dist/components/NumberInput.svelte +5 -3
- package/dist/components/NumberInput.svelte.d.ts +4 -2
- package/dist/components/NumericInput.svelte +277 -25
- package/dist/components/NumericInput.svelte.d.ts +3 -1
- package/dist/components/PercentInput.svelte +5 -3
- package/dist/components/PercentInput.svelte.d.ts +4 -2
- package/dist/components/PermissionMatrix.svelte +44 -8
- package/dist/components/PermissionMatrix.svelte.d.ts +1 -0
- package/dist/components/ProfilePage.svelte +38 -13
- package/dist/components/RadioGroup.svelte +203 -4
- package/dist/components/RadioGroup.svelte.d.ts +1 -1
- package/dist/components/Rate.svelte +3 -3
- package/dist/components/Rate.svelte.d.ts +2 -2
- package/dist/components/RecordDetailDrawer.svelte +1 -1
- package/dist/components/RecordDetailDrawer.svelte.d.ts +1 -1
- package/dist/components/RegisterPage.svelte +1 -1
- package/dist/components/RelationPicker.svelte +39 -11
- package/dist/components/ResourceAccessGuard.svelte +7 -2
- package/dist/components/RetryTaskButton.svelte +14 -1
- package/dist/components/RolesSettings.svelte +74 -28
- package/dist/components/SecuritySettings.svelte +66 -51
- package/dist/components/SegmentedControl.svelte +4 -2
- package/dist/components/SegmentedControl.svelte.d.ts +1 -1
- package/dist/components/Sidebar.svelte +1 -1
- package/dist/components/StepsForm.svelte +60 -10
- package/dist/components/StepsForm.svelte.d.ts +4 -2
- package/dist/components/SvadminLogo.svelte +1 -0
- package/dist/components/SvarDataGrid.svelte +42 -24
- package/dist/components/SvarDataGrid.svelte.d.ts +10 -10
- package/dist/components/SvarResourceRead.svelte +2 -0
- package/dist/components/SvarResourceTableView.svelte +4 -2
- package/dist/components/TagsInput.svelte +3 -3
- package/dist/components/TagsInput.svelte.d.ts +2 -2
- package/dist/components/TaskDetails.svelte +22 -16
- package/dist/components/TaskDetails.svelte.d.ts +1 -1
- package/dist/components/TaskList.svelte +57 -15
- package/dist/components/TaskQueueDrawer.svelte +54 -34
- package/dist/components/Transfer.svelte +67 -5
- package/dist/components/Transfer.svelte.d.ts +4 -0
- package/dist/components/TreeSelect.svelte +337 -77
- package/dist/components/TreeSelect.svelte.d.ts +4 -0
- package/dist/components/TreeTable.svelte +6 -1
- package/dist/components/TwoFactorAuthPage.svelte +8 -4
- package/dist/components/UpdatePasswordPage.svelte +1 -1
- package/dist/components/VersionDiffViewer.svelte +9 -7
- package/dist/components/account/CompanyProfilePage.svelte +13 -12
- package/dist/components/account/MemberDirectory.svelte +14 -10
- package/dist/components/account/SettingsEnterprisePage.svelte +18 -18
- package/dist/components/content/AuditTimeline.svelte +8 -6
- package/dist/components/content/DataState.svelte +1 -1
- package/dist/components/content/FileList.svelte +44 -13
- package/dist/components/content/FileList.svelte.d.ts +4 -2
- package/dist/components/content/FileListRow.svelte +87 -0
- package/dist/components/content/FileListRow.svelte.d.ts +11 -0
- package/dist/components/content/ImportDropzone.svelte +109 -12
- package/dist/components/content/ImportDropzone.svelte.d.ts +1 -0
- package/dist/components/content/IntegrationCard.svelte +3 -3
- package/dist/components/content/IntegrationCard.svelte.d.ts +2 -0
- package/dist/components/content/MediaThumbnail.svelte +6 -2
- package/dist/components/detail-workspace.d.ts +60 -0
- package/dist/components/detail-workspace.js +3 -0
- package/dist/components/enterprise/json-schema-form.d.ts +1 -1
- package/dist/components/enterprise/recursive-schema-form.d.ts +15 -1
- package/dist/components/enterprise/recursive-schema-form.js +288 -14
- package/dist/components/enterprise/schema-form-references.d.ts +14 -0
- package/dist/components/enterprise/schema-form-references.js +316 -0
- package/dist/components/fields/ArrayField.svelte +178 -14
- package/dist/components/fields/ArrayField.svelte.d.ts +17 -3
- package/dist/components/fields/array-field-metadata.d.ts +4 -0
- package/dist/components/fields/array-field-metadata.js +36 -0
- package/dist/components/file-upload-reference.d.ts +11 -0
- package/dist/components/file-upload-reference.js +50 -0
- package/dist/components/file-upload-types.d.ts +32 -0
- package/dist/components/file-upload-types.js +1 -0
- package/dist/components/form-contract.upload-type-fixture.svelte +108 -0
- package/dist/components/form-contract.upload-type-fixture.svelte.d.ts +18 -0
- package/dist/components/json-schema-form-state.d.ts +19 -0
- package/dist/components/list-deletion.svelte.js +6 -1
- package/dist/components/list-state.svelte.d.ts +12 -1
- package/dist/components/list-state.svelte.js +56 -16
- package/dist/components/numeric-format.d.ts +44 -0
- package/dist/components/numeric-format.js +198 -0
- package/dist/components/record-detail.svelte.js +2 -0
- package/dist/components/saved-list-views.d.ts +9 -2
- package/dist/components/saved-list-views.js +42 -11
- package/dist/components/saved-list-views.svelte.d.ts +3 -0
- package/dist/components/saved-list-views.svelte.js +56 -7
- package/dist/components/task-action.svelte.d.ts +1 -0
- package/dist/components/task-action.svelte.js +55 -3
- package/dist/components/task-utils.d.ts +1 -0
- package/dist/components/task-utils.js +18 -0
- package/dist/components/ui/input/input.svelte +1 -1
- package/dist/components/ui/input/input.svelte.d.ts +1 -1
- package/dist/components/ui/sheet/sheet.svelte +4 -1
- package/dist/components/version-history.d.ts +14 -0
- package/dist/components/version-history.js +32 -0
- package/dist/components/workspace-tab-state.d.ts +78 -0
- package/dist/components/workspace-tab-state.js +587 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.js +4 -0
- package/package.json +5 -5
|
@@ -35,8 +35,11 @@
|
|
|
35
35
|
import { tick } from "svelte";
|
|
36
36
|
import { Portal } from "bits-ui";
|
|
37
37
|
import { cn, type WithElementRef } from "../../../utils.js";
|
|
38
|
+
import { useTranslation } from "@svadmin/core/i18n";
|
|
38
39
|
import type { HTMLAttributes } from "svelte/elements";
|
|
39
40
|
|
|
41
|
+
const i18n = useTranslation();
|
|
42
|
+
|
|
40
43
|
const focusableSelector = [
|
|
41
44
|
'a[href]',
|
|
42
45
|
'button',
|
|
@@ -61,7 +64,7 @@
|
|
|
61
64
|
side = "right",
|
|
62
65
|
onClose,
|
|
63
66
|
onCloseRequest,
|
|
64
|
-
closeLabel = "
|
|
67
|
+
closeLabel = i18n.t("common.close"),
|
|
65
68
|
class: className,
|
|
66
69
|
tabindex = -1,
|
|
67
70
|
children,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DetailWorkspaceVersionData } from './detail-workspace';
|
|
2
|
+
/** 显式存储的记录版本。快照必须是普通 JSON 对象,不包含恢复或合并动作。 */
|
|
3
|
+
export interface StoredRecordVersion {
|
|
4
|
+
id: string;
|
|
5
|
+
version: number;
|
|
6
|
+
title?: string;
|
|
7
|
+
snapshot: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 把已选版本映射成详情区现有的 old/new 载荷。
|
|
11
|
+
* 选中项是 newValue,按版本号紧邻的上一条是 oldValue;没有上一条时旧值为空对象。
|
|
12
|
+
* 未知选择、重复版本号或非普通对象快照都返回 null,不猜测差异。
|
|
13
|
+
*/
|
|
14
|
+
export declare function selectRecordVersion(versions: readonly StoredRecordVersion[], selectedId: string): DetailWorkspaceVersionData | null;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function plainRecord(value) {
|
|
2
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* 把已选版本映射成详情区现有的 old/new 载荷。
|
|
6
|
+
* 选中项是 newValue,按版本号紧邻的上一条是 oldValue;没有上一条时旧值为空对象。
|
|
7
|
+
* 未知选择、重复版本号或非普通对象快照都返回 null,不猜测差异。
|
|
8
|
+
*/
|
|
9
|
+
export function selectRecordVersion(versions, selectedId) {
|
|
10
|
+
if (selectedId.length === 0)
|
|
11
|
+
return null;
|
|
12
|
+
const versionNumbers = new Set();
|
|
13
|
+
for (const item of versions) {
|
|
14
|
+
if (!Number.isInteger(item.version) || versionNumbers.has(item.version) || !plainRecord(item.snapshot))
|
|
15
|
+
return null;
|
|
16
|
+
versionNumbers.add(item.version);
|
|
17
|
+
}
|
|
18
|
+
const ordered = [...versions].sort((left, right) => left.version - right.version);
|
|
19
|
+
const index = ordered.findIndex(item => item.id === selectedId);
|
|
20
|
+
if (index < 0)
|
|
21
|
+
return null;
|
|
22
|
+
const selected = ordered[index];
|
|
23
|
+
const previous = index > 0 ? ordered[index - 1] : undefined;
|
|
24
|
+
if (!selected || !plainRecord(selected.snapshot))
|
|
25
|
+
return null;
|
|
26
|
+
return {
|
|
27
|
+
oldValue: previous?.snapshot ?? {},
|
|
28
|
+
newValue: selected.snapshot,
|
|
29
|
+
...(previous?.title === undefined ? {} : { oldTitle: previous.title }),
|
|
30
|
+
...(selected.title === undefined ? {} : { newTitle: selected.title }),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 多标签工作区的状态适配器。
|
|
3
|
+
*
|
|
4
|
+
* 组件 `MultiTabKeepAlive` 只负责标签栏交互与关闭保护;路由、查询、滚动和草稿
|
|
5
|
+
* 属于真实消费者。本适配器提供显式、可测试的快照契约:
|
|
6
|
+
* - 以“租户 + 标签 id”为内存键,恢复时再校验 path,避免同 id 不同路由串状态;
|
|
7
|
+
* - 持久化是可选注入的 storage,默认仅在内存中保存,不擅自写 localStorage;
|
|
8
|
+
* - 快照带版本、租户、标签和路径,非法或过期数据按未保存处理。
|
|
9
|
+
*/
|
|
10
|
+
export interface WorkspaceTabRef {
|
|
11
|
+
id: string;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkspaceTabIdentity extends WorkspaceTabRef {
|
|
14
|
+
path: string;
|
|
15
|
+
}
|
|
16
|
+
/** 可安全序列化为 JSON 的草稿值。 */
|
|
17
|
+
export type WorkspaceDraftJsonValue = null | boolean | string | number | WorkspaceDraftJsonValue[] | WorkspaceDraftJsonObject;
|
|
18
|
+
/** 草稿载荷的顶层只接受普通对象。 */
|
|
19
|
+
export interface WorkspaceDraftJsonObject {
|
|
20
|
+
[key: string]: WorkspaceDraftJsonValue;
|
|
21
|
+
}
|
|
22
|
+
export interface WorkspaceTabViewState {
|
|
23
|
+
/** 规范化后的查询串,不包含开头的 `?`。 */
|
|
24
|
+
query: string;
|
|
25
|
+
scrollTop: number;
|
|
26
|
+
scrollLeft: number;
|
|
27
|
+
draft: boolean;
|
|
28
|
+
/** 仅当显式配置 userId、draftFields 和 storage 后才会持久化的草稿字段。 */
|
|
29
|
+
draftData?: WorkspaceDraftJsonObject | undefined;
|
|
30
|
+
}
|
|
31
|
+
export interface WorkspaceTabStateStorage {
|
|
32
|
+
getItem(key: string): string | null;
|
|
33
|
+
setItem(key: string, value: string): void;
|
|
34
|
+
removeItem(key: string): void;
|
|
35
|
+
}
|
|
36
|
+
export interface WorkspaceTabClearResult {
|
|
37
|
+
/** 当前实例的内存快照是否已移除。 */
|
|
38
|
+
memoryCleared: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 持久化清理结果。`failed` 表示 removeItem 失败或未能真正删除;适配器会尝试
|
|
41
|
+
* 写入跨实例关闭标记,并保证同一运行时的其它 adapter 使用同一 storage 对象时
|
|
42
|
+
* 不再回读旧快照。若 storage 连关闭标记也无法写入,刷新或跨运行时的新实例仍
|
|
43
|
+
* 可能读到旧快照,调用方不能据此声称持久化已删除。
|
|
44
|
+
*/
|
|
45
|
+
storage: 'cleared' | 'failed' | 'not-configured';
|
|
46
|
+
}
|
|
47
|
+
export interface WorkspaceTabStateAdapter {
|
|
48
|
+
/** 保存标签快照;未提供的字段沿用已有快照或默认值。 */
|
|
49
|
+
capture(tab: WorkspaceTabIdentity, state?: Partial<WorkspaceTabViewState>): WorkspaceTabViewState;
|
|
50
|
+
/** 仅当租户、标签 id 和 path 都匹配时返回快照。 */
|
|
51
|
+
restore(tab: WorkspaceTabIdentity): WorkspaceTabViewState | undefined;
|
|
52
|
+
markDraft(tab: WorkspaceTabIdentity, draft: boolean): void;
|
|
53
|
+
hasDraft(tab: WorkspaceTabIdentity): boolean;
|
|
54
|
+
/** 标签关闭后清理,并显式报告持久化删除是否成功。 */
|
|
55
|
+
clear(tab: WorkspaceTabRef): WorkspaceTabClearResult;
|
|
56
|
+
/** 卸载清理只释放内存快照;持久化数据由 storage 的所有者决定。 */
|
|
57
|
+
dispose(): void;
|
|
58
|
+
/**
|
|
59
|
+
* 最近一次草稿载荷处理结果。`capture` 的返回状态不携带诊断,避免改变既有
|
|
60
|
+
* 返回契约;调用方需要区分“未尝试草稿”和“草稿被拒绝”时读取此方法。
|
|
61
|
+
*/
|
|
62
|
+
getLastDraftDataIssue(): WorkspaceDraftDataIssue | undefined;
|
|
63
|
+
}
|
|
64
|
+
export type WorkspaceDraftDataIssue = 'disabled' | 'empty-allowlist' | 'invalid' | 'too-large' | 'storage-failed';
|
|
65
|
+
export interface WorkspaceTabStateAdapterOptions {
|
|
66
|
+
/** 租户隔离键;不同租户即使标签 id/path 相同也不共享快照。 */
|
|
67
|
+
tenantId: string;
|
|
68
|
+
/** 可选持久化;传入 sessionStorage 等实现即可跨刷新恢复。 */
|
|
69
|
+
storage?: WorkspaceTabStateStorage | null;
|
|
70
|
+
keyPrefix?: string;
|
|
71
|
+
/** 草稿数据所属用户;未提供时使用固定 anonymous 仅维持旧视图快照。 */
|
|
72
|
+
userId?: string;
|
|
73
|
+
/** 草稿顶层字段白名单;空数组或缺省都不会保存 draftData。 */
|
|
74
|
+
draftFields?: readonly string[];
|
|
75
|
+
/** draftData 序列化后的 UTF-8 字节上限,默认 65536。 */
|
|
76
|
+
maxDraftBytes?: number;
|
|
77
|
+
}
|
|
78
|
+
export declare function createWorkspaceTabStateAdapter(options: WorkspaceTabStateAdapterOptions): WorkspaceTabStateAdapter;
|