openxiangda 2.0.0-alpha.98 → 2.0.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.
Files changed (150) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -20
  3. package/bin/distribution/commands.js +55 -0
  4. package/bin/distribution/launcher.js +49 -0
  5. package/bin/distribution/migrate.js +60 -0
  6. package/bin/distribution/releases.js +52 -0
  7. package/bin/distribution/skills.js +80 -0
  8. package/bin/distribution/update.js +68 -0
  9. package/bin/distribution/workspace.js +85 -0
  10. package/bin/run.js +9 -11
  11. package/dist/browser/AuthoritativeSelector.d.ts +3 -2
  12. package/dist/browser/AuthoritativeSelector.d.ts.map +1 -1
  13. package/dist/browser/AuthoritativeSelector.js +39 -24
  14. package/dist/browser/AuthoritativeSelector.js.map +1 -1
  15. package/dist/browser/Shell.d.ts.map +1 -1
  16. package/dist/browser/Shell.js +24 -18
  17. package/dist/browser/Shell.js.map +1 -1
  18. package/dist/browser/admin-information-architecture.d.ts +4 -2
  19. package/dist/browser/admin-information-architecture.d.ts.map +1 -1
  20. package/dist/browser/admin-information-architecture.js +2 -2
  21. package/dist/browser/admin-information-architecture.js.map +1 -1
  22. package/dist/browser/application.d.ts.map +1 -1
  23. package/dist/browser/application.js +3 -3
  24. package/dist/browser/application.js.map +1 -1
  25. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts.map +1 -1
  26. package/dist/browser/components/platform-fields/AttachmentFileList.js +5 -1
  27. package/dist/browser/components/platform-fields/AttachmentFileList.js.map +1 -1
  28. package/dist/browser/components/platform-fields/MobileFieldControls.d.ts.map +1 -1
  29. package/dist/browser/components/platform-fields/MobileFieldControls.js +2 -2
  30. package/dist/browser/components/platform-fields/MobileFieldControls.js.map +1 -1
  31. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts +4 -2
  32. package/dist/browser/components/platform-fields/ResourceReferenceField.d.ts.map +1 -1
  33. package/dist/browser/components/platform-fields/ResourceReferenceField.js +2 -2
  34. package/dist/browser/components/platform-fields/ResourceReferenceField.js.map +1 -1
  35. package/dist/browser/components/platform-fields/SubtableField.d.ts.map +1 -1
  36. package/dist/browser/components/platform-fields/SubtableField.js +60 -80
  37. package/dist/browser/components/platform-fields/SubtableField.js.map +1 -1
  38. package/dist/browser/components/platform-fields/rich-text-value.d.ts.map +1 -1
  39. package/dist/browser/components/platform-fields/rich-text-value.js +11 -1
  40. package/dist/browser/components/platform-fields/rich-text-value.js.map +1 -1
  41. package/dist/browser/components/resource/GeneratedResourceCrud.d.ts.map +1 -1
  42. package/dist/browser/components/resource/GeneratedResourceCrud.js +33 -114
  43. package/dist/browser/components/resource/GeneratedResourceCrud.js.map +1 -1
  44. package/dist/browser/components/resource/GeneratedResourceForm.d.ts +3 -1
  45. package/dist/browser/components/resource/GeneratedResourceForm.d.ts.map +1 -1
  46. package/dist/browser/components/resource/GeneratedResourceForm.js +11 -4
  47. package/dist/browser/components/resource/GeneratedResourceForm.js.map +1 -1
  48. package/dist/browser/components/resource/RecordChangeHistory.d.ts +12 -0
  49. package/dist/browser/components/resource/RecordChangeHistory.d.ts.map +1 -0
  50. package/dist/browser/components/resource/RecordChangeHistory.js +61 -0
  51. package/dist/browser/components/resource/RecordChangeHistory.js.map +1 -0
  52. package/dist/browser/components/resource/RecordDetailFrame.d.ts +30 -0
  53. package/dist/browser/components/resource/RecordDetailFrame.d.ts.map +1 -0
  54. package/dist/browser/components/resource/RecordDetailFrame.js +25 -0
  55. package/dist/browser/components/resource/RecordDetailFrame.js.map +1 -0
  56. package/dist/browser/components/resource/ResourceFormFrame.d.ts +2 -1
  57. package/dist/browser/components/resource/ResourceFormFrame.d.ts.map +1 -1
  58. package/dist/browser/components/resource/ResourceFormFrame.js +4 -4
  59. package/dist/browser/components/resource/ResourceFormFrame.js.map +1 -1
  60. package/dist/browser/components/resource/StandardResourcePages.d.ts +2 -4
  61. package/dist/browser/components/resource/StandardResourcePages.d.ts.map +1 -1
  62. package/dist/browser/components/resource/StandardResourcePages.js +8 -26
  63. package/dist/browser/components/resource/StandardResourcePages.js.map +1 -1
  64. package/dist/browser/components/resource/SurfaceFields.d.ts +5 -3
  65. package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -1
  66. package/dist/browser/components/resource/SurfaceFields.js +37 -12
  67. package/dist/browser/components/resource/SurfaceFields.js.map +1 -1
  68. package/dist/browser/components/resource/resource-import.d.ts +16 -1
  69. package/dist/browser/components/resource/resource-import.d.ts.map +1 -1
  70. package/dist/browser/components/resource/resource-import.js +58 -34
  71. package/dist/browser/components/resource/resource-import.js.map +1 -1
  72. package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
  73. package/dist/browser/components/todo/ApplicationTodoCenterPage.d.ts +5 -2
  74. package/dist/browser/components/todo/ApplicationTodoCenterPage.d.ts.map +1 -1
  75. package/dist/browser/components/todo/ApplicationTodoCenterPage.js +19 -14
  76. package/dist/browser/components/todo/ApplicationTodoCenterPage.js.map +1 -1
  77. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts +21 -5
  78. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts.map +1 -1
  79. package/dist/browser/components/workflow/StandardWorkflowPages.js +175 -192
  80. package/dist/browser/components/workflow/StandardWorkflowPages.js.map +1 -1
  81. package/dist/browser/components/workflow/WorkflowRecordEditor.d.ts +2 -1
  82. package/dist/browser/components/workflow/WorkflowRecordEditor.d.ts.map +1 -1
  83. package/dist/browser/components/workflow/WorkflowRecordEditor.js +7 -4
  84. package/dist/browser/components/workflow/WorkflowRecordEditor.js.map +1 -1
  85. package/dist/browser/platform-client.d.ts +10 -4
  86. package/dist/browser/platform-client.d.ts.map +1 -1
  87. package/dist/browser/platform-client.js +78 -17
  88. package/dist/browser/platform-client.js.map +1 -1
  89. package/dist/browser/record-detail.css +115 -0
  90. package/dist/browser/runtime.d.ts.map +1 -1
  91. package/dist/browser/runtime.js +26 -2
  92. package/dist/browser/runtime.js.map +1 -1
  93. package/dist/browser/styles.css +1 -0
  94. package/dist/browser/workflow-launch.d.ts +4 -1
  95. package/dist/browser/workflow-launch.d.ts.map +1 -1
  96. package/dist/browser/workflow-launch.js +32 -0
  97. package/dist/browser/workflow-launch.js.map +1 -1
  98. package/dist/core.d.ts +1 -1
  99. package/dist/core.d.ts.map +1 -1
  100. package/dist/core.js.map +1 -1
  101. package/documentation/AGENTS.md +26 -0
  102. package/documentation/administration.md +27 -0
  103. package/documentation/application-foundation.md +162 -0
  104. package/documentation/appspec.md +152 -0
  105. package/documentation/backend.md +132 -0
  106. package/documentation/concepts.md +61 -0
  107. package/documentation/data-authz.md +62 -0
  108. package/documentation/delivery.md +110 -0
  109. package/documentation/development.md +32 -0
  110. package/documentation/field-components.md +236 -0
  111. package/documentation/frontend.md +269 -0
  112. package/documentation/getting-started.md +66 -0
  113. package/documentation/interaction-patterns.md +56 -0
  114. package/documentation/manifest.json +120 -0
  115. package/documentation/product-design.md +142 -0
  116. package/documentation/public-access.md +167 -0
  117. package/documentation/reference/cli.md +27 -0
  118. package/documentation/reference/mcp.md +649 -0
  119. package/documentation/testing.md +63 -0
  120. package/documentation/upgrading.md +39 -0
  121. package/documentation/workflow-events.md +181 -0
  122. package/launcher-skill/openxiangda/SKILL.md +24 -0
  123. package/package.json +72 -9
  124. package/releases/2.0.0.json +50 -0
  125. package/skills/manifest.json +2 -2
  126. package/skills/openxiangda-v2/SKILL.md +64 -51
  127. package/skills/openxiangda-v2/agents/openai.yaml +2 -2
  128. package/skills/openxiangda-v2/references/administration.md +27 -0
  129. package/skills/openxiangda-v2/references/application-foundation.md +162 -0
  130. package/skills/openxiangda-v2/references/appspec.md +132 -47
  131. package/skills/openxiangda-v2/references/backend.md +101 -248
  132. package/skills/openxiangda-v2/references/cli.md +27 -0
  133. package/skills/openxiangda-v2/references/concepts.md +61 -0
  134. package/skills/openxiangda-v2/references/data-authz.md +36 -388
  135. package/skills/openxiangda-v2/references/delivery.md +110 -49
  136. package/skills/openxiangda-v2/references/development.md +32 -0
  137. package/skills/openxiangda-v2/references/field-components.md +236 -0
  138. package/skills/openxiangda-v2/references/frontend.md +254 -280
  139. package/skills/openxiangda-v2/references/getting-started.md +66 -0
  140. package/skills/openxiangda-v2/references/interaction-patterns.md +56 -0
  141. package/skills/openxiangda-v2/references/mcp.md +649 -0
  142. package/skills/openxiangda-v2/references/product-design.md +142 -0
  143. package/skills/openxiangda-v2/references/public-access.md +92 -84
  144. package/skills/openxiangda-v2/references/testing.md +45 -56
  145. package/skills/openxiangda-v2/references/upgrading.md +39 -0
  146. package/skills/openxiangda-v2/references/workflow-events.md +143 -266
  147. package/skills/openxiangda-v2/references/architecture.md +0 -9
  148. package/skills/openxiangda-v2/references/commands.md +0 -21
  149. package/skills/openxiangda-v2/references/discovery.md +0 -15
  150. package/skills/openxiangda-v2/references/workspace.md +0 -62
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordChangeHistory.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/RecordChangeHistory.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAA8E,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAyFhI,wBAAgB,mBAAmB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAC3F,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAC;IACrE,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAC;CACvD,2CAiBA"}
@@ -0,0 +1,61 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ArrowRightOutlined } from '@ant-design/icons';
3
+ import { Alert, Button, Empty, Spin, Typography } from 'antd';
4
+ import { useEffect, useState } from 'react';
5
+ import { auditActorLabel, auditFieldChange, auditFieldCodes, SurfaceAuditFieldValue } from './SurfaceFields';
6
+ import { fieldsBySection } from './resource-page-helpers';
7
+ import { createNativeResourceClient } from '../../platform-client';
8
+ function auditOperationLabel(operation) {
9
+ return operation === 'created' ? '创建' : operation === 'deleted' ? '删除' : '更新';
10
+ }
11
+ function auditValue(field, value, resourceCode) {
12
+ if (value === undefined || value === null || value === '') {
13
+ return _jsx(Typography.Text, { type: "secondary", children: "-" });
14
+ }
15
+ return (_jsx(SurfaceAuditFieldValue, { field: field, resourceCode: resourceCode, value: value }));
16
+ }
17
+ function auditChangeFields(entry, surface) {
18
+ const fields = fieldsBySection(surface).flatMap((group) => group.fields);
19
+ const changed = new Set(auditFieldCodes(entry));
20
+ return fields.filter((field) => changed.has(field.key));
21
+ }
22
+ function AuditEntry({ entry, resourceCode, surface, readable, }) {
23
+ const fields = auditChangeFields(entry, surface).filter(readable);
24
+ const actorName = entry.actorDisplay?.displayName || auditActorLabel(entry);
25
+ const occurredAt = new Date(entry.occurredAt).toLocaleString('zh-CN');
26
+ if (entry.operation === 'created') {
27
+ return (_jsx("div", { className: "oxa-audit-entry oxa-audit-entry-created", children: _jsxs(Typography.Text, { children: [_jsx("strong", { children: actorName }), " \u4E8E ", occurredAt, " \u521B\u5EFA\u8BB0\u5F55"] }) }));
28
+ }
29
+ return (_jsxs("div", { className: "oxa-audit-entry", children: [_jsxs("div", { className: "oxa-audit-heading", children: [_jsx("strong", { children: auditOperationLabel(entry.operation) }), _jsxs(Typography.Text, { type: "secondary", children: ["\u7248\u672C ", entry.revision] })] }), _jsxs("div", { className: "oxa-audit-meta", children: [_jsx("span", { children: "\u64CD\u4F5C\u4EBA" }), _jsx(Typography.Text, { children: actorName }), _jsx("span", { children: "\u65F6\u95F4" }), _jsx(Typography.Text, { children: occurredAt })] }), fields.length ? (_jsx("div", { className: "oxa-audit-changes", children: fields.map((field) => {
30
+ const change = auditFieldChange(entry, field.key);
31
+ const before = change?.before;
32
+ const after = change?.after;
33
+ return (_jsxs("div", { className: "oxa-audit-change", children: [_jsx(Typography.Text, { strong: true, children: field.label }), _jsxs("div", { className: "oxa-audit-change-values", children: [auditValue(field, before, resourceCode), _jsx(ArrowRightOutlined, {}), auditValue(field, after, resourceCode)] })] }, field.key));
34
+ }) })) : (_jsx(Typography.Text, { type: "secondary", children: "\u672A\u53D1\u751F\u5B57\u6BB5\u53D8\u5316" }))] }));
35
+ }
36
+ export function RecordChangeHistory({ resourceCode, recordId, surface, readable, loadPage }) {
37
+ const [entries, setEntries] = useState([]);
38
+ const [error, setError] = useState('');
39
+ const [loading, setLoading] = useState(true);
40
+ const [attempt, setAttempt] = useState(0);
41
+ useEffect(() => {
42
+ let active = true;
43
+ setLoading(true);
44
+ setError('');
45
+ setEntries([]);
46
+ void (loadPage ? loadPage() : createNativeResourceClient(resourceCode, surface).audit(recordId))
47
+ .then(page => { if (active)
48
+ setEntries(page.items); })
49
+ .catch(reason => { if (active)
50
+ setError(reason instanceof Error ? reason.message : String(reason)); })
51
+ .finally(() => { if (active)
52
+ setLoading(false); });
53
+ return () => { active = false; };
54
+ }, [attempt, loadPage, recordId, resourceCode, surface]);
55
+ if (loading)
56
+ return _jsx(Spin, {});
57
+ if (error)
58
+ return _jsx(Alert, { type: "error", title: "\u53D8\u66F4\u8BB0\u5F55\u8BFB\u53D6\u5931\u8D25", description: error, action: _jsx(Button, { onClick: () => setAttempt(value => value + 1), children: "\u91CD\u8BD5" }) });
59
+ return _jsx("div", { className: "oxa-record-detail-card", children: entries.length ? entries.map(entry => _jsx(AuditEntry, { entry: entry, resourceCode: resourceCode, surface: surface, readable: readable }, entry.id)) : _jsx(Empty, { description: "\u6682\u65E0\u53D8\u66F4\u8BB0\u5F55" }) });
60
+ }
61
+ //# sourceMappingURL=RecordChangeHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordChangeHistory.js","sourceRoot":"","sources":["../../../../src/browser/components/resource/RecordChangeHistory.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ResourceFormDrawerState } from './ResourceFormFrame';
3
+ import type { SurfaceField } from './SurfaceFields';
4
+ export declare function detailTime(value: unknown): string;
5
+ /** One presentation owner. Data, authorization and commands remain with their controllers. */
6
+ export declare function RecordDetailFrame({ variant, title, heading, status, metadata, updatedAt, children, footer, onClose, onEdit, drawer, drawerState, newPageHref, editing, busy, }: {
7
+ editing?: ReactNode;
8
+ busy?: boolean;
9
+ variant?: 'desktop' | 'mobile';
10
+ title: string;
11
+ heading?: ReactNode;
12
+ status?: ReactNode;
13
+ metadata?: ReactNode;
14
+ updatedAt?: unknown;
15
+ children: ReactNode;
16
+ footer?: ReactNode;
17
+ onClose: () => void;
18
+ onEdit?: () => void;
19
+ drawer?: boolean;
20
+ drawerState?: ResourceFormDrawerState;
21
+ newPageHref?: string;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ export declare function RecordDetailSections({ groups, renderValue }: {
24
+ groups: Array<{
25
+ section: string;
26
+ fields: SurfaceField[];
27
+ }>;
28
+ renderValue: (field: SurfaceField) => ReactNode;
29
+ }): import("react/jsx-runtime").JSX.Element;
30
+ //# sourceMappingURL=RecordDetailFrame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordDetailFrame.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/RecordDetailFrame.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,UAKxC;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,EAAE,OAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAClG,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAc,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,IAAY,GACnG,EAAE;IACD,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IACvF,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnF,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC3D,WAAW,CAAC,EAAE,uBAAuB,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC7D,2CA8BA;AAED,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;IAC5D,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3D,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,SAAS,CAAC;CACjD,2CASA"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ArrowLeftOutlined, CloseOutlined, CompressOutlined, ExpandOutlined, ExportOutlined } from '@ant-design/icons';
3
+ import { Button, Drawer, Space, Tooltip } from 'antd';
4
+ import { useState } from 'react';
5
+ export function detailTime(value) {
6
+ if (!value)
7
+ return '';
8
+ const date = new Date(String(value));
9
+ if (Number.isNaN(date.valueOf()))
10
+ return '';
11
+ return new Intl.DateTimeFormat('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false }).format(date);
12
+ }
13
+ /** One presentation owner. Data, authorization and commands remain with their controllers. */
14
+ export function RecordDetailFrame({ variant = 'desktop', title, heading, status, metadata, updatedAt, children, footer, onClose, onEdit, drawer = false, drawerState, newPageHref, editing, busy = false, }) {
15
+ const [localFullScreen, setLocalFullScreen] = useState(false);
16
+ const fullScreen = drawerState?.fullScreen ?? localFullScreen;
17
+ const setFullScreen = drawerState?.setFullScreen || setLocalFullScreen;
18
+ const time = detailTime(updatedAt);
19
+ const content = _jsxs("section", { className: `oxa-record-detail oxa-record-detail-${variant} ${drawer ? 'is-drawer' : 'is-page'} ${editing ? 'is-editing' : ''}`, "data-detail-frame": "standard", children: [_jsx("header", { className: "oxa-record-detail-header", children: _jsxs("div", { className: "oxa-record-detail-width", children: [_jsxs("div", { className: "oxa-record-detail-heading", children: [!drawer && _jsx(Button, { type: "text", "aria-label": "\u8FD4\u56DE", icon: _jsx(ArrowLeftOutlined, {}), disabled: busy, onClick: onClose }), _jsx("h2", { children: editing ? '编辑数据' : title })] }), _jsxs(Space, { size: 4, children: [onEdit && !editing && _jsx(Button, { type: "link", onClick: onEdit, children: "\u7F16\u8F91" }), drawer && _jsx(Tooltip, { title: fullScreen ? '退出全屏' : '全屏', children: _jsx(Button, { type: "text", "aria-label": fullScreen ? '退出全屏' : '全屏', icon: fullScreen ? _jsx(CompressOutlined, {}) : _jsx(ExpandOutlined, {}), onClick: () => setFullScreen(!fullScreen) }) }), drawer && newPageHref && !editing && _jsx(Tooltip, { title: "\u65B0\u5F00\u9875\u9762", children: _jsx(Button, { type: "text", "aria-label": "\u65B0\u5F00\u9875\u9762", icon: _jsx(ExportOutlined, {}), href: newPageHref, target: "_blank", rel: "noopener noreferrer" }) }), _jsx(Tooltip, { title: "\u5173\u95ED", children: _jsx(Button, { type: "text", "aria-label": "\u5173\u95ED", icon: _jsx(CloseOutlined, {}), disabled: busy, onClick: onClose }) })] })] }) }), _jsx("main", { className: "oxa-record-detail-body", children: _jsxs("div", { className: "oxa-record-detail-width", children: [heading && !editing && _jsxs("div", { className: "oxa-record-detail-hero", children: [_jsxs("div", { children: [_jsx("h1", { children: heading }), status] }), metadata && _jsx("div", { className: "oxa-record-detail-metadata", children: metadata })] }), editing || children] }) }), !editing && footer !== null && _jsx("footer", { className: "oxa-record-detail-footer", children: _jsxs("div", { className: "oxa-record-detail-width", children: [_jsx("span", { className: "oxa-record-detail-updated", children: time ? `更新于 ${time}` : '' }), _jsx("div", { className: "oxa-record-detail-actions", children: footer || _jsxs(Space, { children: [_jsx(Button, { disabled: busy, onClick: onClose, children: "\u5173\u95ED" }), onEdit && _jsx(Button, { type: "primary", onClick: onEdit, children: "\u7F16\u8F91" })] }) })] }) })] });
20
+ return drawer ? _jsx(Drawer, { open: true, "aria-label": editing ? '编辑数据' : title, rootClassName: "oxa-resource-drawer oxa-record-detail-drawer", size: fullScreen ? '100vw' : 'min(850px, calc(100vw - 48px))', styles: { body: { padding: 0, overflow: 'hidden' } }, closable: false, keyboard: !busy, mask: { closable: !busy }, onClose: onClose, children: content }) : content;
21
+ }
22
+ export function RecordDetailSections({ groups, renderValue }) {
23
+ return _jsx("div", { className: "oxa-record-detail-sections", children: groups.filter(group => group.fields.length).map(group => _jsxs("section", { className: "oxa-record-detail-card", children: [_jsx("h2", { children: group.section === 'default' ? '基本信息' : group.section }), _jsx("div", { className: "oxa-record-detail-fields", children: group.fields.map(field => _jsxs("div", { className: ['textarea', 'attachment', 'image', 'rich-text', 'address', 'location', 'signature', 'json', 'subtable'].includes(field.widget) ? 'is-wide' : undefined, children: [_jsx("div", { className: "oxa-record-detail-label", children: field.label }), _jsx("div", { className: "oxa-record-detail-value", children: renderValue(field) })] }, field.key)) })] }, group.section)) });
24
+ }
25
+ //# sourceMappingURL=RecordDetailFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordDetailFrame.js","sourceRoot":"","sources":["../../../../src/browser/components/resource/RecordDetailFrame.tsx"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type FormInstance } from 'antd';
2
2
  import { type ReactNode } from 'react';
3
3
  import { type SurfaceField, type SurfaceFieldRenderers } from './SurfaceFields';
4
4
  /** Shared presentation only; each platform owner supplies its existing load/save lifecycle. */
5
- export declare function ResourceFormContent({ variant, mode, resourceCode, recordId, groups, form, initialValues, busy, pending, submitDisabled, error, feedback, actions, canWriteField, renderers, onValuesChange, onSubmit, }: {
5
+ export declare function ResourceFormContent({ variant, mode, resourceCode, recordId, groups, form, initialValues, busy, pending, submitDisabled, submitLabel, error, feedback, actions, canWriteField, renderers, onValuesChange, onSubmit, }: {
6
6
  variant: 'desktop' | 'mobile';
7
7
  mode: 'create' | 'edit';
8
8
  resourceCode: string;
@@ -16,6 +16,7 @@ export declare function ResourceFormContent({ variant, mode, resourceCode, recor
16
16
  busy: boolean;
17
17
  pending: boolean;
18
18
  submitDisabled?: boolean;
19
+ submitLabel?: string;
19
20
  error?: string;
20
21
  feedback?: ReactNode;
21
22
  actions?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceFormFrame.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/ResourceFormFrame.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+C,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AACtF,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAkD,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEhI,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EACxE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,GACtG,EAAE;IACD,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAChD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACrD,2CAgCA;AAED,MAAM,WAAW,uBAAuB;IAAG,UAAU,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE;AAErG,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC1G,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,2CAoBA"}
1
+ {"version":3,"file":"ResourceFormFrame.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/ResourceFormFrame.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+C,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AACtF,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAkD,KAAK,YAAY,EAAE,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEhI,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EACxE,OAAO,EAAE,cAAc,EAAE,WAA2C,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,GACnJ,EAAE;IACD,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;IAChD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACrD,2CAgCA;AAED,MAAM,WAAW,uBAAuB;IAAG,UAAU,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE;AAErG,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC1G,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,2CAoBA"}
@@ -5,15 +5,15 @@ import { useEffect, useRef, useState } from 'react';
5
5
  import { Button as MobileButton } from '../../mobile';
6
6
  import { MobileSurfaceFieldControl, SurfaceFieldControl } from './SurfaceFields';
7
7
  /** Shared presentation only; each platform owner supplies its existing load/save lifecycle. */
8
- export function ResourceFormContent({ variant, mode, resourceCode, recordId, groups, form, initialValues, busy, pending, submitDisabled, error, feedback, actions, canWriteField, renderers, onValuesChange, onSubmit, }) {
8
+ export function ResourceFormContent({ variant, mode, resourceCode, recordId, groups, form, initialValues, busy, pending, submitDisabled, submitLabel = mode === 'edit' ? '保存' : '提交', error, feedback, actions, canWriteField, renderers, onValuesChange, onSubmit, }) {
9
9
  const errorRef = useRef(null);
10
10
  useEffect(() => { if (error)
11
11
  errorRef.current?.focus(); }, [error]);
12
12
  const grouped = groups.length > 1 || groups.some(group => group.section !== 'default');
13
13
  const FieldControl = variant === 'mobile' ? MobileSurfaceFieldControl : SurfaceFieldControl;
14
14
  return _jsxs(Form, { className: variant === 'mobile' ? 'oxa-mobile-form' : 'oxa-form-full', disabled: busy, form: form, initialValues: initialValues, layout: "vertical", onValuesChange: onValuesChange, onFinish: onSubmit, scrollToFirstError: { focus: true }, children: [_jsxs("div", { className: "oxa-form-scroll", children: [feedback, error && _jsx("div", { ref: errorRef, tabIndex: -1, className: "oxa-form-error", children: _jsx(Alert, { title: "\u4FDD\u5B58\u5931\u8D25", description: error, type: "error", showIcon: true }) }), _jsx("div", { className: "oxa-form-sections", children: groups.map((group, index) => _jsxs("section", { className: "oxa-form-section", "aria-labelledby": grouped ? `resource-form-section-${index}` : undefined, children: [grouped && _jsx("h2", { id: `resource-form-section-${index}`, children: group.section === 'default' ? '基本信息' : group.section }), _jsx("div", { className: "oxa-grid", children: group.fields.map(field => _jsx(FieldControl, { field: field, disabled: busy || !canWriteField(field), operation: mode === 'create' ? 'create' : 'update', resourceCode: resourceCode, recordId: recordId, renderers: renderers }, field.key)) })] }, group.section)) })] }), _jsxs("div", { className: "oxa-actions", children: [actions, variant === 'mobile'
15
- ? _jsx(MobileButton, { type: "submit", loading: pending, disabled: submitDisabled, color: "primary", children: "\u63D0\u4EA4" })
16
- : _jsx(Button, { "aria-label": "\u63D0\u4EA4", htmlType: "submit", disabled: submitDisabled, loading: pending, type: "primary", children: "\u63D0\u4EA4" })] })] });
15
+ ? _jsx(MobileButton, { type: "submit", loading: pending, disabled: submitDisabled, color: "primary", children: submitLabel })
16
+ : _jsx(Button, { "aria-label": submitLabel, htmlType: "submit", disabled: submitDisabled, loading: pending, type: "primary", children: submitLabel })] })] });
17
17
  }
18
18
  export function ResourceFormDrawer({ mode, open, busy, children, onClose, onClosed, newPage, drawerState }) {
19
19
  const [localFullScreen, setLocalFullScreen] = useState(false);
@@ -27,6 +27,6 @@ export function ResourceFormDrawer({ mode, open, busy, children, onClose, onClos
27
27
  closed.current = true;
28
28
  onClosed();
29
29
  }
30
- }, size: fullScreen ? '100vw' : 'min(960px, calc(100vw - 48px))', styles: { body: { padding: 0 } }, closable: false, keyboard: !busy, mask: { closable: !busy }, onClose: onClose, extra: _jsxs(Space, { size: 4, children: [_jsx(Tooltip, { title: fullScreen ? '退出全屏' : '全屏', children: _jsx(Button, { "aria-label": fullScreen ? '退出全屏' : '全屏', type: "text", icon: fullScreen ? _jsx(CompressOutlined, {}) : _jsx(ExpandOutlined, {}), onClick: () => setFullScreen(!fullScreen) }) }), newPage && _jsx(Tooltip, { title: newPage.title || '新开页面', children: _jsx(Button, { "aria-label": "\u65B0\u5F00\u9875\u9762", type: "text", disabled: busy, icon: _jsx(ExportOutlined, {}), ...(newPage.href ? { href: newPage.href, target: '_blank', rel: 'noopener noreferrer' } : {}), onClick: newPage.onClick }) }), _jsx(Tooltip, { title: "\u5173\u95ED", children: _jsx(Button, { "aria-label": "\u5173\u95ED", type: "text", disabled: busy, icon: _jsx(CloseOutlined, {}), onClick: onClose }) })] }), children: children });
30
+ }, size: fullScreen ? '100vw' : 'min(850px, calc(100vw - 48px))', styles: { body: { padding: 0 } }, closable: false, keyboard: !busy, mask: { closable: !busy }, onClose: onClose, extra: _jsxs(Space, { size: 4, children: [_jsx(Tooltip, { title: fullScreen ? '退出全屏' : '全屏', children: _jsx(Button, { "aria-label": fullScreen ? '退出全屏' : '全屏', type: "text", icon: fullScreen ? _jsx(CompressOutlined, {}) : _jsx(ExpandOutlined, {}), onClick: () => setFullScreen(!fullScreen) }) }), newPage && _jsx(Tooltip, { title: newPage.title || '新开页面', children: _jsx(Button, { "aria-label": "\u65B0\u5F00\u9875\u9762", type: "text", disabled: busy, icon: _jsx(ExportOutlined, {}), ...(newPage.href ? { href: newPage.href, target: '_blank', rel: 'noopener noreferrer' } : {}), onClick: newPage.onClick }) }), _jsx(Tooltip, { title: "\u5173\u95ED", children: _jsx(Button, { "aria-label": "\u5173\u95ED", type: "text", disabled: busy, icon: _jsx(CloseOutlined, {}), onClick: onClose }) })] }), children: children });
31
31
  }
32
32
  //# sourceMappingURL=ResourceFormFrame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceFormFrame.js","sourceRoot":"","sources":["../../../../src/browser/components/resource/ResourceFormFrame.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResourceFormFrame.js","sourceRoot":"","sources":["../../../../src/browser/components/resource/ResourceFormFrame.tsx"],"names":[],"mappings":"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"}
@@ -49,9 +49,7 @@ interface ResourceDetailPageProps extends StandardResourcePageProps {
49
49
  hero: ReactNode;
50
50
  children: ReactNode;
51
51
  }
52
- /** The standard detail lifecycle and audit/edit navigation. */
53
- export declare function ResourceDetailPage({ actions, resource, surface, title, readCapability, loading, error, backPath, backLabel, editCapability, editPath, hero, children, }: ResourceDetailPageProps): import("react/jsx-runtime").JSX.Element;
54
- /** Mobile detail shell: keeps the resource lifecycle and audit/edit actions stable. */
55
- export declare function MobileResourceDetailPage({ actions, resource, surface, title, readCapability, loading, error, backPath, backLabel, editCapability, editPath, hero, children, }: ResourceDetailPageProps): import("react/jsx-runtime").JSX.Element;
52
+ export declare function ResourceDetailPage(props: ResourceDetailPageProps): import("react/jsx-runtime").JSX.Element;
53
+ export declare function MobileResourceDetailPage(props: ResourceDetailPageProps): import("react/jsx-runtime").JSX.Element;
56
54
  export {};
57
55
  //# sourceMappingURL=StandardResourcePages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StandardResourcePages.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/StandardResourcePages.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardResourcePages.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/StandardResourcePages.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,qBAAsB,SAAQ,yBAAyB;IAC/D,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,KAAK,EACL,cAAc,EACd,QAAQ,GACT,EAAE,qBAAqB,2CAcvB;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE,qBAAqB,2CAuBvB;AAED,UAAU,qBAAsB,SAAQ,yBAAyB;IAC/D,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAe,EACf,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,KAAK,EACL,QAAQ,GACT,EAAE,qBAAqB,2CA0BvB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,OAAO,EACP,KAAK,EACL,UAAU,EACV,OAAe,EACf,QAAgB,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,GACT,EAAE,qBAAqB,2CAyBvB;AAED,UAAU,uBAAwB,SAAQ,yBAAyB;IACjE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAYD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAAuE;AACxI,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,2CAAsE"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { ArrowLeftOutlined, EditOutlined, ExportOutlined, PlusOutlined, } from '@ant-design/icons';
2
+ import { ExportOutlined, PlusOutlined, } from '@ant-design/icons';
3
3
  import { Button, Card, Result, Space, Spin, Typography, } from 'antd';
4
4
  import { useNavigate } from 'react-router-dom';
5
+ import { RecordDetailFrame } from './RecordDetailFrame';
5
6
  import { useRuntime } from '../../runtime';
6
7
  /**
7
8
  * The standard admin list shell. Data fetching stays in the app's Refine
@@ -51,32 +52,13 @@ export function MobileResourceFormPage({ resource, surface, title, capability, l
51
52
  }
52
53
  return (_jsxs("div", { className: "oxa-mobile-page oxa-mobile-entry", "data-resource": resource, "data-surface-layout": surface?.form?.layout || 'flat', children: [_jsxs("header", { className: "oxa-mobile-header", children: [_jsx(Typography.Title, { level: 3, children: title }), headerActions, recordSummary && _jsx(Typography.Text, { type: "secondary", children: recordSummary })] }), children] }));
53
54
  }
54
- /** The standard detail lifecycle and audit/edit navigation. */
55
- export function ResourceDetailPage({ actions, resource, surface, title, readCapability, loading = false, error, backPath, backLabel, editCapability, editPath, hero, children, }) {
55
+ /** Custom and generated consumers share the same detail frame. */
56
+ function StandardRecordDetailPage({ title, readCapability, loading, error, backPath, editCapability, editPath, hero, actions, children, variant }) {
56
57
  const navigate = useNavigate();
57
58
  const { hasCapability, hasReadCapability } = useRuntime();
58
- if (!hasReadCapability(readCapability)) {
59
- return _jsx(Result, { status: "403", title: `当前平台用户无${title}页面权限` });
60
- }
61
- if (loading) {
62
- return (_jsx("div", { className: "oxa-page-loading", children: _jsx(Spin, {}) }));
63
- }
64
- if (error) {
65
- return _jsx(Result, { status: "403", subTitle: error, title: "\u65E0\u6CD5\u8BBF\u95EE" });
66
- }
67
- return (_jsxs(_Fragment, { children: [_jsx(Card, { className: "oxa-detail-hero", "data-resource": resource, "data-surface-layout": surface?.detail?.layout || 'flat', children: _jsxs("div", { className: "oxa-detail-hero-main", children: [_jsx(Button, { "aria-label": "\u8FD4\u56DE\u5217\u8868", className: "oxa-detail-back", icon: _jsx(ArrowLeftOutlined, {}), onClick: () => navigate(backPath), type: "text", children: backLabel }), _jsx("div", { className: "oxa-detail-heading", children: hero }), _jsxs(Space, { children: [actions, editCapability && editPath && hasCapability(editCapability) && (_jsx(Button, { icon: _jsx(EditOutlined, {}), onClick: () => navigate(editPath), type: "primary", children: "\u7F16\u8F91" }))] })] }) }), children] }));
68
- }
69
- /** Mobile detail shell: keeps the resource lifecycle and audit/edit actions stable. */
70
- export function MobileResourceDetailPage({ actions, resource, surface, title, readCapability, loading = false, error, backPath, backLabel, editCapability, editPath, hero, children, }) {
71
- const navigate = useNavigate();
72
- const { hasCapability, hasReadCapability } = useRuntime();
73
- if (!hasReadCapability(readCapability)) {
74
- return _jsx("div", { className: "oxa-mobile-page", children: _jsx(Result, { status: "403", title: `当前平台用户无${title}页面权限` }) });
75
- }
76
- if (loading)
77
- return _jsx("div", { className: "oxa-mobile-page", children: _jsx(Spin, {}) });
78
- if (error)
79
- return _jsx("div", { className: "oxa-mobile-page", children: _jsx(Result, { status: "403", subTitle: error, title: "\u65E0\u6CD5\u8BBF\u95EE" }) });
80
- return (_jsxs("div", { className: "oxa-mobile-page", "data-resource": resource, "data-surface-layout": surface?.detail?.layout || 'flat', children: [_jsxs("header", { className: "oxa-mobile-header", children: [_jsx(Button, { "aria-label": "\u8FD4\u56DE\u5217\u8868", icon: _jsx(ArrowLeftOutlined, {}), onClick: () => navigate(backPath), type: "link", children: backLabel }), _jsxs(Space, { children: [actions, editCapability && editPath && hasCapability(editCapability) && _jsx(Button, { icon: _jsx(EditOutlined, {}), onClick: () => navigate(editPath), type: "primary", children: "\u7F16\u8F91" })] })] }), _jsx(Card, { className: "oxa-detail-hero", "data-resource-hero": "mobile", children: hero }), children] }));
59
+ const readable = hasReadCapability(readCapability);
60
+ return _jsx(RecordDetailFrame, { title: `${title}详情`, variant: variant, onClose: () => navigate(backPath), onEdit: readable && editCapability && editPath && hasCapability(editCapability) ? () => navigate(editPath) : undefined, footer: readable ? actions : undefined, children: !readable ? _jsx(Result, { status: "403", title: `当前平台用户无${title}页面权限` }) : loading ? _jsx(Spin, {}) : error ? _jsx(Result, { status: "error", title: "\u65E0\u6CD5\u8BBF\u95EE", subTitle: error }) : _jsxs(_Fragment, { children: [hero, children] }) });
81
61
  }
62
+ export function ResourceDetailPage(props) { return _jsx(StandardRecordDetailPage, { ...props, variant: "desktop" }); }
63
+ export function MobileResourceDetailPage(props) { return _jsx(StandardRecordDetailPage, { ...props, variant: "mobile" }); }
82
64
  //# sourceMappingURL=StandardResourcePages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StandardResourcePages.js","sourceRoot":"","sources":["../../../../src/browser/components/resource/StandardResourcePages.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardResourcePages.js","sourceRoot":"","sources":["../../../../src/browser/components/resource/StandardResourcePages.tsx"],"names":[],"mappings":";AAAA,OAAO,EAGL,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,MAAM,EACN,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,UAAU,GACX,MAAM,MAAM,CAAC;AAGd,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkB3C;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,KAAK,EACL,cAAc,EACd,QAAQ,GACc;IACtB,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC3C,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,OAAO,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAE,UAAU,KAAK,MAAM,GAAI,CAAC;IAC/D,CAAC;IACD,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAC,eAAe,mBACV,QAAQ,yBACF,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,YAE3D,cAAK,SAAS,EAAC,kBAAkB,YAAE,QAAQ,GAAO,GAC7C,CACR,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,sBAAsB,CAAC,EACrC,QAAQ,EACR,OAAO,EACP,KAAK,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,QAAQ,GACc;IACtB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1D,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;QACvC,OAAO,cAAK,SAAS,EAAC,iBAAiB,YAAC,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAE,UAAU,KAAK,MAAM,GAAI,GAAM,CAAC;IACtG,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,iBAAiB,mBAAgB,QAAQ,yBAAuB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,aACnH,kBAAQ,SAAS,EAAC,mBAAmB,aACnC,0BACE,KAAC,UAAU,CAAC,KAAK,IAAC,KAAK,EAAE,CAAC,YAAG,KAAK,GAAoB,EACrD,WAAW,IAAI,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAAE,WAAW,GAAmB,IAC7E,EACN,MAAC,KAAK,eACH,QAAQ,IAAI,KAAC,MAAM,IAAC,IAAI,EAAE,KAAC,cAAc,KAAG,EAAE,OAAO,EAAE,QAAQ,6BAAa,EAC5E,gBAAgB,IAAI,UAAU,IAAI,aAAa,CAAC,gBAAgB,CAAC,IAAI,CACpE,KAAC,MAAM,IAAC,IAAI,EAAE,KAAC,YAAY,KAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAC,SAAS,6BAAY,CAChG,IACK,IACD,EACR,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAgBD,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,SAAS,EACT,MAAM,EACN,aAAa,EACb,KAAK,EACL,QAAQ,GACc;IACtB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAC;IACvC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,0EAAc,GAAG,CAAC;IACtD,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,cAAK,SAAS,EAAC,kBAAkB,YAC/B,KAAC,IAAI,KAAG,GACJ,CACP,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,gFAAe,GAAG,CAAC;IACvD,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,mBAAgB,QAAQ,yBAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM,aACpD,kBAAQ,SAAS,EAAC,6BAA6B,aAC7C,KAAC,UAAU,CAAC,KAAK,IAAC,KAAK,EAAE,CAAC,YAAG,KAAK,GAAoB,EACrD,aAAa,IAAI,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAAE,aAAa,GAAmB,IAC9E,EACR,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,QAAQ,EACR,OAAO,EACP,KAAK,EACL,UAAU,EACV,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,aAAa,EACb,aAAa,EACb,QAAQ,GACc;IACtB,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,EAAE,CAAC;IACvC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,cAAK,SAAS,EAAC,iBAAiB,YAAC,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,0EAAc,GAAG,GAAM,CAAC;IAC7F,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,cAAK,SAAS,EAAC,iBAAiB,YAAC,KAAC,IAAI,KAAG,GAAM,CAAC;IACzD,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,cAAK,SAAS,EAAC,iBAAiB,YAAC,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAC,gFAAe,GAAG,GAAM,CAAC;IAC9F,CAAC;IACD,OAAO,CACL,eACE,SAAS,EAAC,kCAAkC,mBAC7B,QAAQ,yBACF,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM,aAEpD,kBAAQ,SAAS,EAAC,mBAAmB,aACnC,KAAC,UAAU,CAAC,KAAK,IAAC,KAAK,EAAE,CAAC,YAAG,KAAK,GAAoB,EACrD,aAAa,EACb,aAAa,IAAI,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAAE,aAAa,GAAmB,IAC9E,EACR,QAAQ,IACL,CACP,CAAC;AACJ,CAAC;AAeD,kEAAkE;AAClE,SAAS,wBAAwB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAA+D;IAC5M,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,UAAU,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACnD,OAAO,KAAC,iBAAiB,IAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAChG,MAAM,EAAE,QAAQ,IAAI,cAAc,IAAI,QAAQ,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,YAC7J,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,MAAM,EAAC,KAAK,EAAC,KAAK,EAAE,UAAU,KAAK,MAAM,GAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,IAAI,KAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,MAAM,EAAC,OAAO,EAAC,KAAK,EAAC,0BAAM,EAAC,QAAQ,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,8BAAG,IAAI,EAAE,QAAQ,IAAI,GAC/J,CAAC;AACvB,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,KAA8B,IAAI,OAAO,KAAC,wBAAwB,OAAK,KAAK,EAAE,OAAO,EAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AACxI,MAAM,UAAU,wBAAwB,CAAC,KAA8B,IAAI,OAAO,KAAC,wBAAwB,OAAK,KAAK,EAAE,OAAO,EAAC,QAAQ,GAAG,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DataAuditEntry, DataEventFieldChange, DataFieldSurface, DataFileRef, EventValueDigest, UserReferenceValue } from 'openxiangda-contracts/browser';
1
+ import type { DataAuditEntry, DataEventFieldChange, DataFieldSurface, DataFieldSourceLaunchBinding, DataFileRef, EventValueDigest, UserReferenceValue } from 'openxiangda-contracts/browser';
2
2
  import { type ReactNode } from 'react';
3
3
  import type { WorkflowFileBinding } from '../../platform-client';
4
4
  export type SurfaceField = DataFieldSurface & {
@@ -7,7 +7,7 @@ export type SurfaceField = DataFieldSurface & {
7
7
  export declare function auditFieldCodes(entry: DataAuditEntry): string[];
8
8
  export declare function auditFieldChange(entry: DataAuditEntry, fieldCode: string): DataEventFieldChange | undefined;
9
9
  export declare function isEventValueDigest(value: unknown): value is EventValueDigest;
10
- export declare function auditActorLabel(entry: DataAuditEntry): string;
10
+ export declare function auditActorLabel(entry: DataAuditEntry): string | undefined;
11
11
  export declare function listSurfaceFields(fields: Record<string, DataFieldSurface>): {
12
12
  label: string;
13
13
  type: import("openxiangda-contracts").DataFieldType;
@@ -55,6 +55,7 @@ export interface SurfaceFieldEditContext {
55
55
  recordId?: string;
56
56
  }
57
57
  export interface SurfaceFieldValueContext {
58
+ mobile?: boolean;
58
59
  field: SurfaceField;
59
60
  value: unknown;
60
61
  resourceCode?: string;
@@ -62,6 +63,7 @@ export interface SurfaceFieldValueContext {
62
63
  presentation?: 'default' | 'workflow-detail';
63
64
  }
64
65
  export interface SurfaceFieldRenderers {
66
+ referenceLaunch?: DataFieldSourceLaunchBinding;
65
67
  renderExtra?: (context: SurfaceFieldEditContext) => ReactNode;
66
68
  renderScope?: (context: SurfaceFieldEditContext) => ReactNode;
67
69
  renderSubtable?: (context: SurfaceFieldEditContext) => ReactNode;
@@ -88,7 +90,7 @@ export declare function SurfaceFieldControl({ field, disabled, operation, resour
88
90
  export declare function MobileSurfaceFieldControl({ field, disabled, operation, resourceCode, recordId, renderers, }: SurfaceFieldEditContext & {
89
91
  renderers?: SurfaceFieldRenderers;
90
92
  }): import("react/jsx-runtime").JSX.Element;
91
- export declare function SurfaceFieldValue({ field, value, resourceCode, workflowFileBinding, presentation, renderers, }: SurfaceFieldValueContext & {
93
+ export declare function SurfaceFieldValue({ field, value, resourceCode, workflowFileBinding, presentation, mobile, renderers, }: SurfaceFieldValueContext & {
92
94
  renderers?: SurfaceFieldRenderers;
93
95
  }): import("react/jsx-runtime").JSX.Element;
94
96
  export declare function SurfaceAuditFieldValue({ field, value, resourceCode, }: SurfaceFieldValueContext): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceFields.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/SurfaceFields.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SurfaceFields.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/resource/SurfaceFields.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { PictureOutlined, ReloadOutlined, UploadOutlined, } from '@ant-design/icons';
3
- import { Alert, Button, Checkbox, Form, Input, InputNumber, Radio, Rate, Select, Space, Switch, Tag, Typography, Upload, } from 'antd';
3
+ import { Alert, Button, Checkbox, Form, Input, InputNumber, Radio, Rate, Select, Space, Tag, Typography, Upload, } from 'antd';
4
4
  import { useEffect, useMemo, useRef, useState } from 'react';
5
5
  import { AuthoritativeSelector, ResolvedValueText, } from '../../AuthoritativeSelector';
6
6
  import { AddressField, AddressValueDisplay } from '../platform-fields/AddressField';
@@ -49,9 +49,13 @@ export function auditActorLabel(entry) {
49
49
  system: '平台系统',
50
50
  timer: '定时任务',
51
51
  user: '平台用户',
52
+ user_union: '平台用户',
53
+ anonymous_public: '外部访客',
52
54
  workflow: '工作流',
53
55
  };
54
- return labels[entry.actor.principalType];
56
+ return Object.hasOwn(labels, entry.actor.principalType)
57
+ ? labels[entry.actor.principalType]
58
+ : '操作人暂不可解析';
55
59
  }
56
60
  export function listSurfaceFields(fields) {
57
61
  return Object.entries(fields)
@@ -154,7 +158,11 @@ function StaticOptionField({ field, value, onChange, disabled, }) {
154
158
  }
155
159
  return (_jsx(Select, { allowClear: true, disabled: disabled, mode: multiple ? 'multiple' : undefined, onChange: next => emit(next || undefined), options: field.options, placeholder: `请选择${field.label}`, value: multiple ? ids : ids[0] }));
156
160
  }
161
+ function DesktopBooleanField({ field, disabled, checked, id, onChange }) {
162
+ return _jsxs(Space, { children: [_jsx(Radio.Group, { id: id, "aria-label": field.label, disabled: disabled, value: typeof checked === 'boolean' ? checked : undefined, options: [{ label: '是', value: true }, { label: '否', value: false }], onChange: event => onChange?.(event.target.value) }), typeof checked !== 'boolean' && _jsx(Typography.Text, { type: "secondary", children: "\u672A\u9009\u62E9" })] });
163
+ }
157
164
  export function SurfaceFieldControl({ field, disabled, operation, resourceCode, recordId, renderers, }) {
165
+ const subtableValidation = useMobileSubtableValidation();
158
166
  const rules = disabled || field.widget === 'readonly' ? [] : [
159
167
  ...(field.requiredHint
160
168
  ? [{ required: true, message: `请填写或选择${field.label}` }]
@@ -166,6 +174,7 @@ export function SurfaceFieldControl({ field, disabled, operation, resourceCode,
166
174
  ? [{ pattern: /^1\d{10}$/, message: '请输入 11 位手机号' }]
167
175
  : []),
168
176
  ...rangeValidationRules(field),
177
+ ...(field.widget === 'subtable' ? [{ validator: subtableValidation.validator }] : []),
169
178
  ];
170
179
  const common = {
171
180
  disabled,
@@ -193,13 +202,13 @@ export function SurfaceFieldControl({ field, disabled, operation, resourceCode,
193
202
  control = _jsx(DateTimeField, { disabled: disabled, field: field });
194
203
  break;
195
204
  case 'switch':
196
- control = _jsx(Switch, { checkedChildren: "\u662F", disabled: disabled, unCheckedChildren: "\u5426" });
205
+ control = _jsx(DesktopBooleanField, { field: field, disabled: disabled });
197
206
  break;
198
207
  case 'select':
199
208
  case 'multi-select':
200
209
  case 'radio':
201
210
  case 'checkbox':
202
- control = field.source ? (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, operation: operation, resourceCode: resourceCode })) : (_jsx(StaticOptionField, { disabled: disabled, field: field }));
211
+ control = field.source ? (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, operation: operation, launch: renderers?.referenceLaunch, resourceCode: resourceCode })) : (_jsx(StaticOptionField, { disabled: disabled, field: field }));
203
212
  break;
204
213
  case 'email':
205
214
  control = _jsx(Input, { ...common, type: "email" });
@@ -215,7 +224,7 @@ export function SurfaceFieldControl({ field, disabled, operation, resourceCode,
215
224
  control = (_jsx(PlatformDirectoryPicker, { disabled: disabled, kind: field.widget === 'directory-user' ? 'user' : 'department', multiple: field.type.endsWith('.multiple'), placeholder: `搜索并选择${field.label}` }));
216
225
  break;
217
226
  case 'resource':
218
- control = (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, operation: operation, resourceCode: resourceCode }));
227
+ control = (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, operation: operation, launch: renderers?.referenceLaunch, resourceCode: resourceCode }));
219
228
  break;
220
229
  case 'cascade':
221
230
  control = _jsx(CascadeField, { disabled: disabled, field: field });
@@ -268,7 +277,8 @@ export function SurfaceFieldControl({ field, disabled, operation, resourceCode,
268
277
  recordId,
269
278
  });
270
279
  const wide = ['textarea', 'attachment', 'image', 'rich-text', 'address', 'location', 'signature', 'json', 'subtable'].includes(field.widget);
271
- return (_jsx(Form.Item, { className: wide ? 'oxa-field-wide' : undefined, extra: extra, label: field.label, name: field.key, rules: rules, valuePropName: field.widget === 'switch' ? 'checked' : 'value', children: control }));
280
+ const frame = (_jsx(Form.Item, { className: wide ? 'oxa-field-wide' : undefined, extra: extra, label: field.label, name: field.key, rules: rules, valuePropName: field.widget === 'switch' ? 'checked' : 'value', children: control }));
281
+ return field.widget === 'subtable' ? _jsx(MobileSubtableValidationContext.Provider, { value: subtableValidation.register, children: frame }) : frame;
272
282
  }
273
283
  /** Mobile controls share canonical values and the form controller with desktop. */
274
284
  export function MobileSurfaceFieldControl({ field, disabled, operation, resourceCode, recordId, renderers, }) {
@@ -310,7 +320,7 @@ export function MobileSurfaceFieldControl({ field, disabled, operation, resource
310
320
  case 'multi-select':
311
321
  case 'radio':
312
322
  case 'checkbox':
313
- control = field.source ? (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, mobile: true, operation: operation, resourceCode: resourceCode })) : (_jsx(MobileOptionField, { disabled: disabled, field: field }));
323
+ control = field.source ? (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, mobile: true, operation: operation, launch: renderers?.referenceLaunch, resourceCode: resourceCode })) : (_jsx(MobileOptionField, { disabled: disabled, field: field }));
314
324
  break;
315
325
  case 'email':
316
326
  control = _jsx(MobileTextField, { disabled: disabled, field: field });
@@ -326,7 +336,7 @@ export function MobileSurfaceFieldControl({ field, disabled, operation, resource
326
336
  control = (_jsx(PlatformDirectoryPicker, { mobile: true, disabled: disabled, kind: field.widget === 'directory-user' ? 'user' : 'department', multiple: field.type.endsWith('.multiple'), placeholder: `搜索并选择${field.label}` }));
327
337
  break;
328
338
  case 'resource':
329
- control = (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, mobile: true, operation: operation, resourceCode: resourceCode }));
339
+ control = (_jsx(ResourceReferenceField, { disabled: disabled, field: field, fieldCode: field.key, mobile: true, operation: operation, launch: renderers?.referenceLaunch, resourceCode: resourceCode }));
330
340
  break;
331
341
  case 'cascade':
332
342
  control = _jsx(CascadeField, { disabled: disabled, field: field, mobile: true });
@@ -368,7 +378,7 @@ export function MobileSurfaceFieldControl({ field, disabled, operation, resource
368
378
  const frame = (_jsx(Form.Item, { noStyle: true, name: field.key, rules: rules, valuePropName: field.widget === 'switch' ? 'checked' : 'value', children: _jsx(MobileFieldFrame, { field: field, extra: renderers?.renderExtra?.({ field, disabled, operation, recordId }), children: control }) }));
369
379
  return field.widget === 'subtable' ? _jsx(MobileSubtableValidationContext.Provider, { value: subtableValidation.register, children: frame }) : frame;
370
380
  }
371
- export function SurfaceFieldValue({ field, value, resourceCode, workflowFileBinding, presentation = 'default', renderers, }) {
381
+ export function SurfaceFieldValue({ field, value, resourceCode, workflowFileBinding, presentation = 'default', mobile = false, renderers, }) {
372
382
  if (value === undefined ||
373
383
  value === null ||
374
384
  value === '' ||
@@ -392,7 +402,7 @@ export function SurfaceFieldValue({ field, value, resourceCode, workflowFileBind
392
402
  }
393
403
  if (field.type === 'file' || field.type === 'image') {
394
404
  const values = (Array.isArray(value) ? value : [value]).filter(isFileRef);
395
- return values.length ? (_jsx(AttachmentFileList, { files: values, resourceCode: resourceCode, workflowBinding: workflowFileBinding })) : _jsx(_Fragment, { children: "-" });
405
+ return values.length ? (_jsx(AttachmentFileList, { files: values, mobile: mobile, imageTiles: field.type === 'image', resourceCode: resourceCode, workflowBinding: workflowFileBinding })) : _jsx(_Fragment, { children: "-" });
396
406
  }
397
407
  if (field.type === 'location') {
398
408
  return _jsx(LocationValueDisplay, { value: value });
@@ -470,6 +480,21 @@ export function SurfaceAuditFieldValue({ field, value, resourceCode, }) {
470
480
  if (isEventValueDigest(value)) {
471
481
  return (_jsxs(Typography.Text, { type: "secondary", children: ["\u5927\u503C\u6458\u8981 \u00B7 ", value.valueType, " \u00B7 ", formatManagedFileSize(value.bytes), " \u00B7", ' ', "SHA-256 ", value.sha256.slice(0, 12), "\u2026"] }));
472
482
  }
483
+ // Audit values describe a historical change, not a retained file archive.
484
+ // Old file references must never initiate a broader Native file read.
485
+ if (field.type === 'file' || field.type === 'image') {
486
+ const files = (Array.isArray(value) ? value : value ? [value] : []).filter(isFileRef);
487
+ return _jsx("span", { children: files.length ? files.map(file => [file.name || '未命名文件', Number.isFinite(file.size) ? formatManagedFileSize(file.size) : ''].filter(Boolean).join(' · ')).join('、') : '-' });
488
+ }
489
+ if (field.type === 'signature') {
490
+ const signature = value;
491
+ return _jsx("span", { children: signature?.file?.name || (value ? '电子签名' : '-') });
492
+ }
493
+ if (field.type === 'text.rich') {
494
+ // Keep the changed text, without hydrating historical embedded images.
495
+ const plainText = String(value || '').replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim();
496
+ return _jsx("span", { children: plainText || (value ? '富文本内容' : '-') });
497
+ }
473
498
  return (_jsx(SurfaceFieldValue, { field: field, resourceCode: resourceCode, value: value }));
474
499
  }
475
500
  function optionLabel(field, value) {
@@ -529,10 +554,10 @@ function ManagedFileField({ field, value, onChange, recordId, disabled, multiple
529
554
  },
530
555
  showUploadList: false,
531
556
  };
532
- return (_jsxs("div", { className: "oxa-file-field", children: [_jsx(Upload, { ...uploadProps, pastable: true, children: _jsx(Button, { disabled: disabled || uploading || refs.length >= maxCount, icon: field.accept?.toString().startsWith('image/') ? _jsx(PictureOutlined, {}) : _jsx(UploadOutlined, {}), loading: uploading, children: field.accept?.toString().startsWith('image/') ? '上传图片' : '上传文件' }) }), _jsxs(Upload.Dragger, { ...uploadProps, className: "oxa-file-dropzone", openFileDialogOnClick: false, pastable: true, children: [_jsxs("span", { children: ["\u53EF\u5C06\u6587\u4EF6\u62D6\u5230\u8FD9\u91CC\uFF0C\u6216\u5728\u6B64\u533A\u57DF\u6309 ", _jsx("kbd", { children: "\u2318 V" }), " \u7C98\u8D34"] }), _jsx("small", { children: multiple ? `最多 ${maxCount} 个文件,单个不超过 ${maxSizeMb}MB` : `仅保留一个文件,单个不超过 ${maxSizeMb}MB` })] }), uploadError && (_jsxs("div", { className: "oxa-file-error", children: [_jsx("span", { children: uploadError }), _jsx(Button, { icon: _jsx(ReloadOutlined, {}), onClick: () => setUploadError(''), size: "small", type: "text", children: "\u5173\u95ED" })] })), refs.length ? (_jsx(AttachmentFileList, { files: refs, resourceCode: resourceCode, onRemove: file => {
557
+ return (_jsxs("div", { className: "oxa-file-field", children: [_jsxs(Upload.Dragger, { ...uploadProps, className: "oxa-file-dropzone oxa-file-dropzone-compact", openFileDialogOnClick: true, pastable: true, children: [_jsxs("span", { className: "oxa-file-upload-button", children: [field.type === 'image' ? _jsx(PictureOutlined, {}) : _jsx(UploadOutlined, {}), uploading ? '上传中…' : field.type === 'image' ? '图片上传' : '上传文件'] }), _jsxs("span", { className: "oxa-file-upload-hint", children: ["\u62D6\u62FD\u6216\u70B9\u51FB\u540E\u7C98\u8D34", field.type === 'image' ? '图片' : '文件'] })] }), _jsxs("small", { className: "oxa-file-limits", children: [multiple ? `最多 ${maxCount} 个,` : '', "\u5355\u4E2A\u4E0D\u8D85\u8FC7 ", maxSizeMb, "MB"] }), uploadError && (_jsxs("div", { className: "oxa-file-error", children: [_jsx("span", { children: uploadError }), _jsx(Button, { icon: _jsx(ReloadOutlined, {}), onClick: () => setUploadError(''), size: "small", type: "text", children: "\u5173\u95ED" })] })), refs.length ? (_jsx(AttachmentFileList, { files: refs, resourceCode: resourceCode, onRemove: file => {
533
558
  const next = refs.filter(item => item.id !== file.id);
534
559
  refsRef.current = next;
535
560
  onChange?.(next);
536
- }, removable: !disabled })) : (_jsx("div", { className: "oxa-file-empty", children: "\u5C1A\u672A\u4E0A\u4F20\u6587\u4EF6" }))] }));
561
+ }, removable: !disabled, imageTiles: field.type === 'image' })) : (null)] }));
537
562
  }
538
563
  //# sourceMappingURL=SurfaceFields.js.map