@skopon-cool/form-sdk 0.6.2 → 0.6.3
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/adapter/a2uiAdapter.d.ts.map +1 -1
- package/dist/adapter/formSchema.d.ts.map +1 -1
- package/dist/catalog/a2uiCustomCatalog.d.ts.map +1 -1
- package/dist/index.js +1242 -1226
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapter/a2uiAdapter.test.ts +12 -0
- package/src/adapter/a2uiAdapter.ts +8 -0
- package/src/adapter/formSchema.ts +6 -0
- package/src/catalog/a2uiCustomCatalog.tsx +19 -0
- package/src/catalog/fileUploadPreview.test.tsx +17 -0
- package/src/types/index.ts +4 -0
package/dist/types/index.d.ts
CHANGED
|
@@ -99,6 +99,10 @@ export interface FormBlock {
|
|
|
99
99
|
filePlaceholderIcon?: FormFilePlaceholderIcon;
|
|
100
100
|
fileMinCount?: number;
|
|
101
101
|
fileMaxCount?: number;
|
|
102
|
+
/** 上传素材的示例图,仅展示,不参与提交。 */
|
|
103
|
+
fileExampleUrls?: string[];
|
|
104
|
+
/** 制作模板的逐字段审核标准;由工作流读取,不能使用提交值覆盖。 */
|
|
105
|
+
fileReviewCriteria?: string;
|
|
102
106
|
defaultValue?: string | string[] | boolean;
|
|
103
107
|
/** 派生 JSON Schema 时写入 property.$comment */
|
|
104
108
|
jsonSchemaDescription?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -44,6 +44,18 @@ function makeDefinition(): Pick<FormSchema, 'title' | 'description' | 'blocks'>
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
describe('a2uiAdapter blocks <-> surface', () => {
|
|
47
|
+
it('preserves material upload examples and review criteria through normalization and A2UI', () => {
|
|
48
|
+
const definition = normalizeFormDefinition({ blocks: [{
|
|
49
|
+
id: 'material', type: 'file', name: 'image01', help: '上传人物',
|
|
50
|
+
fileExampleUrls: [' https://cdn.test/example.jpg ', 'javascript:alert(1)', 'https://cdn.test/example.jpg'],
|
|
51
|
+
fileReviewCriteria: ' 五官清晰 ',
|
|
52
|
+
}] })
|
|
53
|
+
const back = a2uiToBlocks(blocksToA2ui(definition))
|
|
54
|
+
expect(back.blocks[0]).toMatchObject({
|
|
55
|
+
name: 'image01', help: '上传人物', fileReviewCriteria: '五官清晰',
|
|
56
|
+
fileExampleUrls: ['https://cdn.test/example.jpg'],
|
|
57
|
+
})
|
|
58
|
+
})
|
|
47
59
|
it('blocksToA2ui builds a Column root referencing all components', () => {
|
|
48
60
|
const doc = blocksToA2ui(makeDefinition(), { styleId: 'theme-a' })
|
|
49
61
|
const root = doc.components.find((c) => c.id === 'root')
|
|
@@ -276,6 +276,9 @@ function blockToComponent(block: FormBlock): {
|
|
|
276
276
|
id,
|
|
277
277
|
component: 'FileUpload',
|
|
278
278
|
label,
|
|
279
|
+
help: block.help ?? '',
|
|
280
|
+
fileExampleUrls: block.fileExampleUrls ?? [],
|
|
281
|
+
fileReviewCriteria: block.fileReviewCriteria ?? '',
|
|
279
282
|
accept: (block.fileAcceptExtensions ?? []).join(','),
|
|
280
283
|
fileAcceptTypes: block.fileAcceptTypes ?? [],
|
|
281
284
|
filePlaceholderIcon: block.filePlaceholderIcon ?? 'document',
|
|
@@ -448,6 +451,11 @@ function componentToBlock(node: A2uiComponentNode): FormBlock | null {
|
|
|
448
451
|
case 'FileUpload': {
|
|
449
452
|
const accept = asLiteral(node.accept) ?? ''
|
|
450
453
|
const block: FormBlock = { ...base('file'), name }
|
|
454
|
+
block.help = asLiteral(node.help)
|
|
455
|
+
block.fileReviewCriteria = asLiteral(node.fileReviewCriteria)
|
|
456
|
+
if (Array.isArray(node.fileExampleUrls)) {
|
|
457
|
+
block.fileExampleUrls = node.fileExampleUrls.filter((url): url is string => typeof url === 'string')
|
|
458
|
+
}
|
|
451
459
|
if (accept) block.fileAcceptExtensions = accept.split(',').map((s) => s.trim()).filter(Boolean)
|
|
452
460
|
if (Array.isArray(node.fileAcceptTypes)) {
|
|
453
461
|
block.fileAcceptTypes = node.fileAcceptTypes.map(String)
|
|
@@ -213,6 +213,12 @@ function normalizeBlock(raw: FormBlock): FormBlock {
|
|
|
213
213
|
filePlaceholderIcon: normalizeFilePlaceholderIcon(migrated.filePlaceholderIcon),
|
|
214
214
|
fileMinCount: type === 'file' ? normalizeFileUploadCount(migrated.fileMinCount, 1) : undefined,
|
|
215
215
|
fileMaxCount: type === 'file' ? normalizeFileUploadCount(migrated.fileMaxCount, 1) : undefined,
|
|
216
|
+
fileExampleUrls: type === 'file' && Array.isArray(migrated.fileExampleUrls)
|
|
217
|
+
? [...new Set(migrated.fileExampleUrls.filter((url): url is string =>
|
|
218
|
+
typeof url === 'string' && /^https?:\/\//i.test(url.trim()),
|
|
219
|
+
).map((url) => url.trim()))]
|
|
220
|
+
: undefined,
|
|
221
|
+
fileReviewCriteria: type === 'file' ? migrated.fileReviewCriteria?.trim() ?? '' : undefined,
|
|
216
222
|
defaultValue: normalizeDefaultValue(type, migrated.defaultValue),
|
|
217
223
|
jsonSchemaDescription: migrated.jsonSchemaDescription?.trim() ?? '',
|
|
218
224
|
hidden: type === 'text' ? migrated.hidden === true : undefined,
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
DatePicker,
|
|
12
12
|
Input,
|
|
13
13
|
InputNumber,
|
|
14
|
+
Image,
|
|
14
15
|
Radio,
|
|
15
16
|
Select,
|
|
16
17
|
Switch,
|
|
@@ -547,6 +548,10 @@ function FileUploadPreview({ context }: { context: ComponentContext }) {
|
|
|
547
548
|
const props = context.componentModel.properties as Record<string, unknown>
|
|
548
549
|
const label = readString(props.label)
|
|
549
550
|
const accept = readString(props.accept)
|
|
551
|
+
const help = readString(props.help)
|
|
552
|
+
const reviewCriteria = readString(props.fileReviewCriteria)
|
|
553
|
+
const exampleUrls = asStringArray(props.fileExampleUrls)
|
|
554
|
+
.filter((url) => /^https?:\/\//i.test(url))
|
|
550
555
|
const fileAcceptTypes = Array.isArray(props.fileAcceptTypes)
|
|
551
556
|
? props.fileAcceptTypes.map(String)
|
|
552
557
|
: undefined
|
|
@@ -704,6 +709,20 @@ function FileUploadPreview({ context }: { context: ComponentContext }) {
|
|
|
704
709
|
return (
|
|
705
710
|
<div className="form-block-preview" data-skopon-field={fieldName || undefined}>
|
|
706
711
|
{label ? <div className="form-block-preview-label">{label}</div> : null}
|
|
712
|
+
{help ? <Typography.Paragraph type="secondary">{help}</Typography.Paragraph> : null}
|
|
713
|
+
{reviewCriteria ? <Typography.Paragraph type="secondary">素材要求:{reviewCriteria}</Typography.Paragraph> : null}
|
|
714
|
+
{exampleUrls.length ? (
|
|
715
|
+
<div className="form-file-examples">
|
|
716
|
+
<Typography.Text type="secondary">参考示例(不作为上传素材提交)</Typography.Text>
|
|
717
|
+
<div style={{ display: 'flex', gap: 8, flexWrap: 'wrap', margin: '8px 0' }}>
|
|
718
|
+
<Image.PreviewGroup>
|
|
719
|
+
{exampleUrls.map((url, index) => (
|
|
720
|
+
<Image key={url} src={url} alt={`${label || '素材'}示例 ${index + 1}`} width={120} height={120} style={{ objectFit: 'contain' }} />
|
|
721
|
+
))}
|
|
722
|
+
</Image.PreviewGroup>
|
|
723
|
+
</div>
|
|
724
|
+
</div>
|
|
725
|
+
) : null}
|
|
707
726
|
<Upload.Dragger
|
|
708
727
|
disabled={!interactive}
|
|
709
728
|
openFileDialogOnClick={!atMaxLimit}
|
|
@@ -56,6 +56,9 @@ function renderFileSurface(options: {
|
|
|
56
56
|
defaultValue?: string | string[]
|
|
57
57
|
legacyRawValue?: string
|
|
58
58
|
onUploadingChange?: (uploading: boolean) => void
|
|
59
|
+
fileExampleUrls?: string[]
|
|
60
|
+
fileReviewCriteria?: string
|
|
61
|
+
help?: string
|
|
59
62
|
} = {}) {
|
|
60
63
|
const doc = blocksToA2ui(
|
|
61
64
|
{
|
|
@@ -70,6 +73,9 @@ function renderFileSurface(options: {
|
|
|
70
73
|
fileMinCount: options.minCount ?? 0,
|
|
71
74
|
fileMaxCount: options.maxCount ?? 1,
|
|
72
75
|
defaultValue: options.defaultValue,
|
|
76
|
+
fileExampleUrls: options.fileExampleUrls,
|
|
77
|
+
fileReviewCriteria: options.fileReviewCriteria,
|
|
78
|
+
help: options.help,
|
|
73
79
|
},
|
|
74
80
|
],
|
|
75
81
|
},
|
|
@@ -94,6 +100,17 @@ function renderFileSurface(options: {
|
|
|
94
100
|
}
|
|
95
101
|
|
|
96
102
|
describe('FileUploadPreview', () => {
|
|
103
|
+
it('shows descriptions, criteria and examples without submitting example URLs', () => {
|
|
104
|
+
const { getByText, getByAltText, ref } = renderFileSurface({
|
|
105
|
+
help: '请上传一张人物图',
|
|
106
|
+
fileReviewCriteria: '五官清晰',
|
|
107
|
+
fileExampleUrls: ['https://cdn.example.com/example.jpg'],
|
|
108
|
+
})
|
|
109
|
+
expect(getByText('请上传一张人物图')).toBeTruthy()
|
|
110
|
+
expect(getByText('素材要求:五官清晰')).toBeTruthy()
|
|
111
|
+
expect(getByAltText('附件示例 1').getAttribute('src')).toBe('https://cdn.example.com/example.jpg')
|
|
112
|
+
expect(ref.current?.getValues()).toEqual({ attachments: [] })
|
|
113
|
+
})
|
|
97
114
|
it('stores successful CDN URLs in user selection order', async () => {
|
|
98
115
|
const first = deferred<{ url: string }>()
|
|
99
116
|
const second = deferred<{ url: string }>()
|
package/src/types/index.ts
CHANGED
|
@@ -161,6 +161,10 @@ export interface FormBlock {
|
|
|
161
161
|
filePlaceholderIcon?: FormFilePlaceholderIcon
|
|
162
162
|
fileMinCount?: number
|
|
163
163
|
fileMaxCount?: number
|
|
164
|
+
/** 上传素材的示例图,仅展示,不参与提交。 */
|
|
165
|
+
fileExampleUrls?: string[]
|
|
166
|
+
/** 制作模板的逐字段审核标准;由工作流读取,不能使用提交值覆盖。 */
|
|
167
|
+
fileReviewCriteria?: string
|
|
164
168
|
defaultValue?: string | string[] | boolean
|
|
165
169
|
/** 派生 JSON Schema 时写入 property.$comment */
|
|
166
170
|
jsonSchemaDescription?: string
|