@cloudbase/weda-ui 3.16.0 → 3.17.1

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 (64) hide show
  1. package/dist/configs/components/container.js +0 -3
  2. package/dist/configs/components/wd-ad.d.ts +10 -1
  3. package/dist/configs/components/wd-ad.js +31 -1
  4. package/dist/configs/components/wd-cascader.d.ts +4 -0
  5. package/dist/configs/components/wd-checkbox.d.ts +4 -0
  6. package/dist/configs/components/wd-code-editor.d.ts +4 -0
  7. package/dist/configs/components/wd-date-range.d.ts +4 -0
  8. package/dist/configs/components/wd-date.d.ts +4 -0
  9. package/dist/configs/components/wd-department.d.ts +6 -0
  10. package/dist/configs/components/wd-department.js +1 -1
  11. package/dist/configs/components/wd-form-arr.d.ts +4 -0
  12. package/dist/configs/components/wd-form-detail.d.ts +4 -0
  13. package/dist/configs/components/wd-form-obj.d.ts +4 -0
  14. package/dist/configs/components/wd-input-email.d.ts +4 -0
  15. package/dist/configs/components/wd-input-number.d.ts +4 -0
  16. package/dist/configs/components/wd-input-phone.d.ts +4 -0
  17. package/dist/configs/components/wd-input-url.d.ts +4 -0
  18. package/dist/configs/components/wd-input.d.ts +4 -0
  19. package/dist/configs/components/wd-location.d.ts +4 -0
  20. package/dist/configs/components/wd-member.d.ts +4 -0
  21. package/dist/configs/components/wd-radio.d.ts +4 -0
  22. package/dist/configs/components/wd-rating.d.ts +4 -0
  23. package/dist/configs/components/wd-region.d.ts +4 -0
  24. package/dist/configs/components/wd-rich-text.d.ts +4 -0
  25. package/dist/configs/components/wd-select-multiple.d.ts +4 -0
  26. package/dist/configs/components/wd-select.d.ts +4 -0
  27. package/dist/configs/components/wd-switch.d.ts +4 -0
  28. package/dist/configs/components/wd-table.d.ts +1 -1
  29. package/dist/configs/components/wd-table.js +1 -1
  30. package/dist/configs/components/wd-tag-select.d.ts +4 -0
  31. package/dist/configs/components/wd-tag.d.ts +4 -0
  32. package/dist/configs/components/wd-textarea.d.ts +4 -0
  33. package/dist/configs/components/wd-time.d.ts +4 -0
  34. package/dist/configs/components/wd-upload-file.d.ts +4 -0
  35. package/dist/configs/components/wd-upload-image.d.ts +207 -15
  36. package/dist/configs/components/wd-upload-image.js +143 -6
  37. package/dist/configs/components/web-view.js +1 -1
  38. package/dist/configs/index.d.ts +522 -8
  39. package/dist/configs/type-utils/type-form.d.ts +4 -0
  40. package/dist/configs/type-utils/type-form.js +4 -0
  41. package/dist/configs/type-utils/x-runtime-default.d.ts +2 -0
  42. package/dist/configs/type-utils/x-runtime-default.js +2 -0
  43. package/dist/configs/utils/field.d.ts +1 -0
  44. package/dist/configs/utils/field.js +95 -0
  45. package/dist/style/weda-ui.min.css +1 -1
  46. package/dist/web/components/form/uploader/index.d.ts +1 -0
  47. package/dist/web/components/form/uploader/index.js +7 -4
  48. package/dist/web/components/form/uploader/upload/index.d.ts +26 -0
  49. package/dist/web/components/form/uploader/upload/index.js +200 -0
  50. package/dist/web/components/form/uploader/uploader.h5.d.ts +6 -1
  51. package/dist/web/components/form/uploader/uploader.h5.js +26 -94
  52. package/dist/web/components/form/uploader/uploader.pc.d.ts +1 -1
  53. package/dist/web/components/form/uploader/uploader.pc.js +30 -100
  54. package/dist/web/components/form/uploader/util.d.ts +16 -0
  55. package/dist/web/components/form/uploader/util.js +106 -5
  56. package/dist/web/components/richText/index.js +3 -1
  57. package/dist/web/components/uploaderView/index.js +1 -1
  58. package/dist/web/components/wd-ad/wd-ad.js +2 -4
  59. package/dist/web/components/wd-form/hooks/use-remote-value.js +18 -18
  60. package/dist/web/components/wd-modal/wd-modal.js +10 -13
  61. package/dist/web/components/wd-upload-image/wd-upload-image.js +14 -4
  62. package/package.json +5 -5
  63. package/dist/web/components/form/uploader/useUploadFile.d.ts +0 -16
  64. package/dist/web/components/form/uploader/useUploadFile.js +0 -99
@@ -40,20 +40,59 @@ declare const data: import("@sinclair/typebox").TObject<{
40
40
  'x-helper-text': string;
41
41
  }>;
42
42
  value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
43
+ template: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
44
+ }>;
45
+ declare const previewFileItem: import("@sinclair/typebox").TObject<{
46
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
47
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
48
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
50
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
52
+ }>;
53
+ declare const uploadInstance: import("@sinclair/typebox").TObject<{
54
+ config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
55
+ action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
56
+ maxUploadCount: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
57
+ maxSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
58
+ isCompressBeforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
59
+ compressQuality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
60
+ compressedWidth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
61
+ compressedHeight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
62
+ accepts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
63
+ customUploadPath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
64
+ }>>;
65
+ beforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
66
+ files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnknown>>;
67
+ base64Uri: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
68
+ tmpFilePaths: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
69
+ }>], import("@sinclair/typebox").TAny>>;
70
+ onUploadProgress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
71
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
72
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
73
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
74
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
75
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
76
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
77
+ }>], import("@sinclair/typebox").TAny>>;
78
+ onComplete: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
79
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
80
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
81
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
82
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
83
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
84
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
85
+ }>>], import("@sinclair/typebox").TAny>>;
86
+ onSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
87
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
88
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
89
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
90
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
91
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
92
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
93
+ }>], import("@sinclair/typebox").TAny>>;
94
+ onFail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TAny], import("@sinclair/typebox").TAny>>;
43
95
  }>;
44
- export type EventsType = {
45
- events: Partial<{
46
- success: (arg: {
47
- value: unknown;
48
- file?: File;
49
- }) => void;
50
- change: (arg: {
51
- value: unknown;
52
- isDelete?: boolean;
53
- }) => void;
54
- error: (err: unknown) => void;
55
- }>;
56
- };
57
96
  declare const config: {
58
97
  $schema: "https://comp-public-replace-1303824488-cos.weda.tencent.com/schema/lcds_component.json";
59
98
  data: import("@sinclair/typebox").TObject<{
@@ -92,6 +131,7 @@ declare const config: {
92
131
  'x-helper-text': string;
93
132
  }>;
94
133
  value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
134
+ template: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
95
135
  }>;
96
136
  properties: import("@sinclair/typebox").TObject<{
97
137
  name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString & {
@@ -103,7 +143,59 @@ declare const config: {
103
143
  disabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
104
144
  visible: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
105
145
  readOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
146
+ uploadInstance: import("@sinclair/typebox").TObject<{
147
+ config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
148
+ action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
149
+ maxUploadCount: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
150
+ maxSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
151
+ isCompressBeforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
152
+ compressQuality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
153
+ compressedWidth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
154
+ compressedHeight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
155
+ accepts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
156
+ customUploadPath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
157
+ }>>;
158
+ beforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
159
+ files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnknown>>;
160
+ base64Uri: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
161
+ tmpFilePaths: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
162
+ }>], import("@sinclair/typebox").TAny>>;
163
+ onUploadProgress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
164
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
165
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
166
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
167
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
168
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
169
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
170
+ }>], import("@sinclair/typebox").TAny>>;
171
+ onComplete: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
172
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
173
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
174
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
175
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
176
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
177
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
178
+ }>>], import("@sinclair/typebox").TAny>>;
179
+ onSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
180
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
181
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
182
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
183
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
184
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
185
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
186
+ }>], import("@sinclair/typebox").TAny>>;
187
+ onFail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TAny], import("@sinclair/typebox").TAny>>;
188
+ }>;
189
+ previewFile: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
190
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
191
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
192
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
193
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
194
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
195
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
196
+ }>>;
106
197
  }>;
198
+ isContainer: true;
107
199
  classes: ({
108
200
  name: string;
109
201
  selector: string;
@@ -114,11 +206,40 @@ declare const config: {
114
206
  description: string;
115
207
  code: string;
116
208
  })[];
117
- methods: {
209
+ methods: ({
210
+ name: string;
211
+ label: string;
212
+ description: string;
213
+ } | {
118
214
  name: string;
119
215
  label: string;
216
+ params: {
217
+ properties: {
218
+ cloudId: {
219
+ title: string;
220
+ type: string;
221
+ };
222
+ };
223
+ };
120
224
  description: string;
121
- }[];
225
+ } | {
226
+ name: string;
227
+ label: string;
228
+ params: import("@sinclair/typebox").TObject<{
229
+ config: import("@sinclair/typebox").TObject<{
230
+ action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
231
+ maxUploadCount: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
232
+ maxSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
233
+ isCompressBeforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
234
+ compressQuality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
235
+ compressedWidth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
236
+ compressedHeight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
237
+ accepts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
238
+ customUploadPath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
239
+ }>;
240
+ }>;
241
+ description?: undefined;
242
+ })[];
122
243
  events: ({
123
244
  name: string;
124
245
  title: string;
@@ -130,6 +251,52 @@ declare const config: {
130
251
  name: string;
131
252
  title: string;
132
253
  description: string;
254
+ } | {
255
+ name: string;
256
+ title: string;
257
+ detail: import("@sinclair/typebox").TObject<{
258
+ config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
259
+ action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
260
+ maxUploadCount: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
261
+ maxSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
262
+ isCompressBeforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
263
+ compressQuality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
264
+ compressedWidth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
265
+ compressedHeight: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
266
+ accepts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
267
+ customUploadPath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
268
+ }>>;
269
+ beforeUpload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
270
+ files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnknown>>;
271
+ base64Uri: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
272
+ tmpFilePaths: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
273
+ }>], import("@sinclair/typebox").TAny>>;
274
+ onUploadProgress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
275
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
276
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
277
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
278
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
279
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
280
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
281
+ }>], import("@sinclair/typebox").TAny>>;
282
+ onComplete: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
283
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
284
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
285
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
286
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
287
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
288
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
289
+ }>>], import("@sinclair/typebox").TAny>>;
290
+ onSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TObject<{
291
+ progress: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
292
+ loading: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
293
+ cloudId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
294
+ tempUrl: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
295
+ key: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
296
+ file: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>;
297
+ }>], import("@sinclair/typebox").TAny>>;
298
+ onFail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TFunction<[import("@sinclair/typebox").TAny], import("@sinclair/typebox").TAny>>;
299
+ }>;
133
300
  })[];
134
301
  meta: {
135
302
  description: string;
@@ -146,6 +313,10 @@ declare const config: {
146
313
  props: string[];
147
314
  };
148
315
  group: {
316
+ 模板: {
317
+ 'x-index': number;
318
+ expand: boolean;
319
+ };
149
320
  标签项: {
150
321
  'x-index': number;
151
322
  expand: boolean;
@@ -221,6 +392,11 @@ declare const config: {
221
392
  } | {
222
393
  body: string;
223
394
  when: string;
395
+ to?: undefined;
396
+ } | {
397
+ when: string;
398
+ to: string;
399
+ body: string;
224
400
  })[];
225
401
  };
226
402
  compConfig: {
@@ -229,3 +405,19 @@ declare const config: {
229
405
  };
230
406
  export default config;
231
407
  export type DataType = Simplify<Static<typeof data>>;
408
+ export type UploadInstanceType = Simplify<Static<typeof uploadInstance>>;
409
+ export type PreviewFileItemType = Simplify<Static<typeof previewFileItem>>;
410
+ export type EventsType = {
411
+ events: Partial<{
412
+ success: (arg: {
413
+ value: unknown;
414
+ file?: File;
415
+ }) => void;
416
+ change: (arg: {
417
+ value: unknown;
418
+ isDelete?: boolean;
419
+ }) => void;
420
+ error: (err: unknown) => void;
421
+ onReady: (arg: UploadInstanceType) => void;
422
+ }>;
423
+ };
@@ -1,6 +1,14 @@
1
1
  import { defineConfig, Type, Tuple } from '../type-utils';
2
2
  import { FORM_ITEM_DATA, FORM_ITEM_EVENTS, FORM_ITEM_METHODS, FORM_ITEM_META, ItemData, pickWithXCategory, X_CATEGORY, getFormItemDataTitle, getFormItemClasses, } from '../type-utils/type-form';
3
3
  import { templateInitNameWithId } from './common/init-name-with-id';
4
+ import { $upload_image_template } from '../utils/field';
5
+ const TPL = `
6
+ {{#with $self as |$self|}}
7
+ {{#if (helper_utils '===' $self.attributes.template 'custom')}}
8
+ ${$upload_image_template}
9
+ {{/if}}
10
+ {{/with}}
11
+ `;
4
12
  // 图片来源
5
13
  export const WD_TAG_CAPTURE_TYPE = [
6
14
  { label: '拍照与相册', value: 'both' },
@@ -16,6 +24,26 @@ const data = Type.Partial(Type.Object({
16
24
  'x-helper-text': '图片上传后,图片 https 链接默认仅可在微搭应用中访问,有效期 2 小时,可在[云存储权限设置](https://console.cloud.tencent.com/tcb/storage/index?envId=lowcode-3gp1xflvc8844909&rid=4&tabId=auth)中调整访问权限。',
17
25
  }),
18
26
  value: FORM_ITEM_DATA._valueInUpload,
27
+ template: Type.String({
28
+ enum: Tuple([
29
+ {
30
+ label: '默认图片上传',
31
+ value: 'normal',
32
+ },
33
+ {
34
+ label: '自定义图片上传',
35
+ value: 'custom',
36
+ },
37
+ ]),
38
+ title: '图片上传模板',
39
+ 'x-runtime-default': 'normal',
40
+ description: '指定图片上传模板',
41
+ 'x-index': 1,
42
+ 'x-category': '模板',
43
+ 'x-props': {
44
+ 'data-hidebind': true,
45
+ },
46
+ }),
19
47
  // 标题
20
48
  ...TITLE,
21
49
  // 内容
@@ -88,7 +116,7 @@ const data = Type.Partial(Type.Object({
88
116
  'x-platforms': ['WEB', 'MOBILEWEB', 'PCWEB'],
89
117
  })),
90
118
  tmpFilePaths: Type.Optional(Type.Array(Type.String({
91
- title: '文件临时地址',
119
+ title: '图片临时地址',
92
120
  }), { 'x-platforms': ['MP'] })),
93
121
  }),
94
122
  ], Type.Any(), {
@@ -109,14 +137,81 @@ const paramValueType = Type.Object({
109
137
  value: Type.Unknown({ title: '值' }),
110
138
  isDelete: Type.Optional(Type.Boolean({ title: '是否删除动作' })),
111
139
  });
112
- const events = [
113
- { ...{}, ...FORM_ITEM_EVENTS.change, detail: paramValueType },
114
- FORM_ITEM_EVENTS.success,
115
- FORM_ITEM_EVENTS.error,
116
- ];
140
+ const previewFileItem = Type.Partial(Type.Object({
141
+ progress: Type.Number({ title: '加载进度条' }),
142
+ loading: Type.Boolean({ title: '是否loading' }),
143
+ cloudId: Type.String({ title: '云存储id' }),
144
+ tempUrl: Type.String({ title: '临时图片地址' }),
145
+ key: Type.String({ title: 'key' }),
146
+ file: Type.Any({ title: 'web端图片对象' }),
147
+ }, { title: '上传图片预览信息' }));
148
+ const uploadInstanceConfig = Type.Partial(Type.Composite([
149
+ Type.Object({
150
+ accepts: Type.String({ title: '允许上传的图片类型,仅支持web端' }),
151
+ customUploadPath: Type.String({
152
+ title: '自定义上传路径,格式:pathA/pathB,存储在weda-uploader/appName/customUploadPath,customUploadPath默认为空',
153
+ }),
154
+ action: Type.String({
155
+ title: '小程序上传api',
156
+ description: '可选值为chooseMedia,chooseMessageFile,仅小程序端生效',
157
+ default: 'chooseMedia',
158
+ }),
159
+ }),
160
+ Type.Pick(data, [
161
+ 'isCompressBeforeUpload',
162
+ 'compressQuality',
163
+ 'compressedHeight',
164
+ 'compressedWidth',
165
+ 'maxSize',
166
+ 'maxUploadCount',
167
+ ]),
168
+ ], {
169
+ title: '图片上传配置项',
170
+ }));
171
+ const uploadInstance = Type.Partial(Type.Object({
172
+ config: uploadInstanceConfig,
173
+ beforeUpload: Type.Function([
174
+ Type.Object({
175
+ files: Type.Optional(Type.Array(Type.Unknown({
176
+ title: 'file 对象',
177
+ 'x-platforms': ['WEB', 'MOBILEWEB', 'PCWEB'],
178
+ }))),
179
+ base64Uri: Type.Optional(Type.Array(Type.String({
180
+ title: 'base64',
181
+ }), {
182
+ 'x-platforms': ['WEB', 'MOBILEWEB', 'PCWEB'],
183
+ })),
184
+ tmpFilePaths: Type.Optional(Type.Array(Type.String({
185
+ title: '图片临时地址',
186
+ }), { 'x-platforms': ['MP'] })),
187
+ }),
188
+ ], Type.Any(), {
189
+ title: '上传前处理函数',
190
+ required: false,
191
+ }),
192
+ onUploadProgress: Type.Function([previewFileItem], Type.Any(), {
193
+ title: '上传过程中',
194
+ }),
195
+ onComplete: Type.Function([Type.Array(previewFileItem, { title: '上传图片预览列表' })], Type.Any(), {
196
+ title: '上传事件完成',
197
+ required: false,
198
+ }),
199
+ onSuccess: Type.Function([previewFileItem], Type.Any(), {
200
+ title: '上传成功',
201
+ }),
202
+ onFail: Type.Function([Type.Any()], Type.Any(), {
203
+ title: '上传失败',
204
+ }),
205
+ }, {
206
+ title: '图片上传实例',
207
+ }));
117
208
  const properties = Type.Composite([
118
209
  Type.Pick(data, ['name', 'label', 'value', 'required']),
119
210
  Type.Pick(ItemData, ['visible', 'disabled', 'readOnly']),
211
+ Type.Object({
212
+ uploadInstance,
213
+ }, { title: '图片上传实例' }),
214
+ Type.Object({ previewFile: Type.Array(previewFileItem, { title: '图片预览列表' }) }),
120
215
  ]);
121
216
  const classes = [
122
217
  ...getFormItemClasses('upload-image', { isInput: false }),
@@ -177,11 +272,22 @@ const classes = [
177
272
  },
178
273
  ],
179
274
  ];
275
+ const events = [
276
+ { ...{}, ...FORM_ITEM_EVENTS.change, detail: paramValueType },
277
+ FORM_ITEM_EVENTS.success,
278
+ FORM_ITEM_EVENTS.error,
279
+ {
280
+ name: 'onReady',
281
+ title: '上传图片初始化完成',
282
+ detail: uploadInstance,
283
+ },
284
+ ];
180
285
  // export default
181
286
  const config = defineConfig({
182
287
  $schema: 'https://comp-public-replace-1303824488-cos.weda.tencent.com/schema/lcds_component.json',
183
288
  data,
184
289
  properties,
290
+ isContainer: true,
185
291
  classes,
186
292
  methods: [
187
293
  Object.assign({}, FORM_ITEM_METHODS.setValue, { params: paramValueType }),
@@ -191,6 +297,32 @@ const config = defineConfig({
191
297
  FORM_ITEM_METHODS.setReadOnly,
192
298
  FORM_ITEM_METHODS.handleValidate,
193
299
  FORM_ITEM_METHODS.clearValidate,
300
+ {
301
+ name: 'upload',
302
+ label: '上传图片',
303
+ description: '通过 $w.id1.upload() 上传图片,仅在支持选择自定义图片上传模板时使用',
304
+ },
305
+ {
306
+ name: 'delete',
307
+ label: '删除单张图片',
308
+ params: {
309
+ properties: {
310
+ cloudId: {
311
+ title: '图片cloudId',
312
+ type: 'string',
313
+ },
314
+ },
315
+ },
316
+ description: '通过 $w.id1.delete() 删除单个图片,仅在支持选择自定义图片上传模板时使用',
317
+ },
318
+ {
319
+ name: 'setConfig',
320
+ label: '更新图片上传配置',
321
+ params: Type.Object({ config: uploadInstanceConfig }, {
322
+ title: '图片上传配置',
323
+ description: '通过 $w.id1.setConfig()更新图片上传配置项,仅在支持选择自定义图片上传模板时使用',
324
+ }),
325
+ },
194
326
  ],
195
327
  events,
196
328
  meta: {
@@ -224,6 +356,11 @@ const config = defineConfig({
224
356
  `,
225
357
  when: '$attached',
226
358
  },
359
+ {
360
+ when: 'template',
361
+ to: '$children',
362
+ body: TPL,
363
+ },
227
364
  ],
228
365
  },
229
366
  compConfig: {
@@ -8,7 +8,7 @@ const data = Type.Object({
8
8
  required: true,
9
9
  'x-index': 10,
10
10
  'x-category': '基础属性',
11
- 'x-helper-text': `小程序端以真机调试效果为准。除关联公众号文章链接外,其他链接需配置业务域名才可生效,[去配置](https://console.cloud.tencent.com/lowcode/auth/personal-wechat?from=editor)`,
11
+ 'x-helper-text': `小程序端以真机调试效果为准。除关联公众号文章链接外,其他链接需配置业务域名才可生效,[详情参考](https://docs.cloudbase.net/lowcode/components/wedaUI/src/docs/compsdocs/super/WebView#%E4%B8%9A%E5%8A%A1%E5%9F%9F%E5%90%8D%E9%85%8D%E7%BD%AE)`,
12
12
  }),
13
13
  allow: Type.String({
14
14
  title: 'allow',