amis-editor 4.2.0-beta.2 → 5.1.9-beta.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 (220) hide show
  1. package/dist/6dbcbb49b6fd405190a9.png +0 -0
  2. package/dist/component/Editor.d.ts +16 -0
  3. package/dist/component/RegionWrapper.d.ts +10 -0
  4. package/dist/component/VRenderer.d.ts +10 -0
  5. package/dist/component/base/BackTop.d.ts +1 -1
  6. package/dist/component/control/APIControl.d.ts +1158 -0
  7. package/dist/component/control/ActionAPIControl.d.ts +1158 -0
  8. package/dist/component/control/BadgeControl.d.ts +133 -0
  9. package/dist/component/control/BaseControl.d.ts +248 -0
  10. package/dist/component/control/DataBindingControl.d.ts +14 -0
  11. package/dist/component/control/DataPickerControl.d.ts +13 -0
  12. package/dist/component/control/DateShortCutControl.d.ts +83 -0
  13. package/dist/component/control/FormulaControl.d.ts +51 -0
  14. package/dist/component/{Control → control}/OptionControl.d.ts +23 -34
  15. package/dist/component/{Control → control}/PopoverEdit.d.ts +0 -0
  16. package/dist/component/control/StatusControl.d.ts +44 -0
  17. package/dist/component/control/SwitchMoreControl.d.ts +224 -0
  18. package/dist/component/control/ValidationControl.d.ts +65 -0
  19. package/dist/component/control/ValidationItem.d.ts +46 -0
  20. package/dist/component/control/style-control/Background.d.ts +17 -0
  21. package/dist/component/control/style-control/Border.d.ts +18 -0
  22. package/dist/component/control/style-control/BoxModel.d.ts +17 -0
  23. package/dist/component/control/style-control/BoxShadow.d.ts +18 -0
  24. package/dist/component/control/style-control/Display.d.ts +14 -0
  25. package/dist/component/control/style-control/Font.d.ts +16 -0
  26. package/dist/component/control/style-control/font-family.d.ts +11 -0
  27. package/dist/component/control/style-control/transformation.d.ts +29 -0
  28. package/dist/component/control/style-control/types.d.ts +8 -0
  29. package/dist/component/schemaTpl.d.ts +8 -0
  30. package/dist/component/validator.d.ts +62 -0
  31. package/dist/dnd/index.d.ts +1 -1
  32. package/dist/event-action/action-config-panel.d.ts +8 -0
  33. package/dist/event-action/actions.d.ts +3 -0
  34. package/dist/event-action/comp-action-select.d.ts +11 -0
  35. package/dist/event-action/config.d.ts +13 -0
  36. package/dist/event-action/index.d.ts +459 -0
  37. package/dist/event-action/schema.d.ts +32 -0
  38. package/dist/exports.min.js +1 -1
  39. package/dist/index.d.ts +23 -5
  40. package/dist/index.min.js +1 -1
  41. package/dist/manager.d.ts +46 -1
  42. package/dist/plugin/Alert.d.ts +4 -2
  43. package/dist/plugin/Button.d.ts +5 -1
  44. package/dist/plugin/ButtonGroup.d.ts +13 -34
  45. package/dist/plugin/ButtonToolbar.d.ts +4 -10
  46. package/dist/plugin/CRUD.d.ts +2 -0
  47. package/dist/plugin/Chart.d.ts +2 -0
  48. package/dist/plugin/Collapse.d.ts +1 -0
  49. package/dist/plugin/CollapseGroup.d.ts +28 -4
  50. package/dist/plugin/Container.d.ts +2 -1
  51. package/dist/plugin/Dialog.d.ts +12 -2
  52. package/dist/plugin/Drawer.d.ts +12 -2
  53. package/dist/plugin/DropDownButton.d.ts +11 -11
  54. package/dist/plugin/Form/ButtonGroupSelect.d.ts +7 -2
  55. package/dist/plugin/Form/ButtonToolbar.d.ts +8 -7
  56. package/dist/plugin/Form/ChainedSelect.d.ts +3 -0
  57. package/dist/plugin/Form/Checkbox.d.ts +7 -2
  58. package/dist/plugin/Form/Checkboxes.d.ts +8 -2
  59. package/dist/plugin/Form/CodeEditor.d.ts +7 -22
  60. package/dist/plugin/Form/Combo.d.ts +3 -0
  61. package/dist/plugin/Form/Control.d.ts +6 -2
  62. package/dist/plugin/Form/DiffEditor.d.ts +7 -1
  63. package/dist/plugin/Form/Form.d.ts +6 -0
  64. package/dist/plugin/Form/Formula.d.ts +1 -25
  65. package/dist/plugin/Form/InputDate.d.ts +8 -2
  66. package/dist/plugin/Form/InputDateRange.d.ts +8 -2
  67. package/dist/plugin/Form/InputDateTime.d.ts +4 -4
  68. package/dist/plugin/Form/InputDateTimeRange.d.ts +4 -4
  69. package/dist/plugin/Form/InputEmail.d.ts +1 -0
  70. package/dist/plugin/Form/InputExcel.d.ts +6 -41
  71. package/dist/plugin/Form/InputFile.d.ts +7 -3
  72. package/dist/plugin/Form/InputKV.d.ts +6 -0
  73. package/dist/plugin/Form/InputMonth.d.ts +1 -0
  74. package/dist/plugin/Form/InputMonthRange.d.ts +4 -4
  75. package/dist/plugin/Form/InputPassword.d.ts +1 -0
  76. package/dist/plugin/Form/InputQuarter.d.ts +1 -0
  77. package/dist/plugin/Form/InputQuarterRange.d.ts +4 -4
  78. package/dist/plugin/Form/InputRange.d.ts +3 -0
  79. package/dist/plugin/Form/InputRating.d.ts +9 -3
  80. package/dist/plugin/Form/InputText.d.ts +24 -2
  81. package/dist/plugin/Form/InputTime.d.ts +3 -3
  82. package/dist/plugin/Form/InputTimeRange.d.ts +20 -0
  83. package/dist/plugin/Form/InputTree.d.ts +6 -2
  84. package/dist/plugin/Form/InputURL.d.ts +1 -0
  85. package/dist/plugin/Form/InputYear.d.ts +1 -0
  86. package/dist/plugin/Form/InputYearRange.d.ts +20 -0
  87. package/dist/plugin/Form/ListSelect.d.ts +6 -2
  88. package/dist/plugin/Form/LocationPicker.d.ts +1 -31
  89. package/dist/plugin/Form/NestedSelect.d.ts +5 -2
  90. package/dist/plugin/Form/Radios.d.ts +7 -2
  91. package/dist/plugin/Form/Select.d.ts +7 -2
  92. package/dist/plugin/Form/Switch.d.ts +7 -2
  93. package/dist/plugin/Form/TabsTransfer.d.ts +5 -2
  94. package/dist/plugin/Form/Textarea.d.ts +7 -1
  95. package/dist/plugin/Form/Transfer.d.ts +5 -2
  96. package/dist/plugin/Form/TreeSelect.d.ts +6 -2
  97. package/dist/plugin/IFrame.d.ts +2 -2
  98. package/dist/plugin/Nav.d.ts +1 -116
  99. package/dist/plugin/Others/Action.d.ts +5 -1
  100. package/dist/plugin/Page.d.ts +5 -2
  101. package/dist/plugin/Progress.d.ts +5 -1
  102. package/dist/plugin/Table.d.ts +2 -0
  103. package/dist/plugin/Tabs.d.ts +33 -2
  104. package/dist/plugin/TooltipWrapper.d.ts +10 -0
  105. package/dist/plugin/Tpl.d.ts +2 -1
  106. package/dist/plugin/Wizard.d.ts +4 -1
  107. package/dist/plugin.d.ts +37 -1
  108. package/dist/store/editor.d.ts +55 -28
  109. package/dist/store/node.d.ts +16 -0
  110. package/dist/style.css +1 -1
  111. package/dist/util.d.ts +36 -3
  112. package/package.json +14 -8
  113. package/src/component/schemaTpl.tsx +1209 -474
  114. package/src/plugin/Alert.tsx +69 -48
  115. package/src/plugin/AnchorNav.tsx +1 -0
  116. package/src/plugin/Audio.tsx +9 -15
  117. package/src/plugin/Avatar.tsx +2 -1
  118. package/src/plugin/Breadcrumb.tsx +2 -1
  119. package/src/plugin/Button.tsx +257 -188
  120. package/src/plugin/ButtonGroup.tsx +99 -38
  121. package/src/plugin/ButtonToolbar.tsx +7 -13
  122. package/src/plugin/CRUD.tsx +78 -136
  123. package/src/plugin/Card.tsx +1 -0
  124. package/src/plugin/Cards.tsx +8 -14
  125. package/src/plugin/Carousel.tsx +1 -1
  126. package/src/plugin/Chart.tsx +26 -14
  127. package/src/plugin/Collapse.tsx +78 -78
  128. package/src/plugin/CollapseGroup.tsx +165 -83
  129. package/src/plugin/Container.tsx +59 -6
  130. package/src/plugin/Custom.tsx +2 -8
  131. package/src/plugin/CustomRegion.tsx +4 -3
  132. package/src/plugin/Dialog.tsx +55 -24
  133. package/src/plugin/Drawer.tsx +65 -35
  134. package/src/plugin/DropDownButton.tsx +95 -79
  135. package/src/plugin/Flex.tsx +123 -65
  136. package/src/plugin/Form/ButtonGroupSelect.tsx +114 -26
  137. package/src/plugin/Form/ButtonToolbar.tsx +62 -55
  138. package/src/plugin/Form/ChainedSelect.tsx +45 -0
  139. package/src/plugin/Form/Checkbox.tsx +122 -33
  140. package/src/plugin/Form/Checkboxes.tsx +154 -87
  141. package/src/plugin/Form/CodeEditor.tsx +163 -34
  142. package/src/plugin/Form/Combo.tsx +104 -65
  143. package/src/plugin/Form/Control.tsx +16 -70
  144. package/src/plugin/Form/DiffEditor.tsx +158 -54
  145. package/src/plugin/Form/FieldSet.tsx +6 -11
  146. package/src/plugin/Form/Form.tsx +277 -70
  147. package/src/plugin/Form/Formula.tsx +8 -14
  148. package/src/plugin/Form/InputArray.tsx +7 -16
  149. package/src/plugin/Form/InputCity.tsx +1 -1
  150. package/src/plugin/Form/InputDate.tsx +344 -121
  151. package/src/plugin/Form/InputDateRange.tsx +303 -161
  152. package/src/plugin/Form/InputDateTime.tsx +6 -150
  153. package/src/plugin/Form/InputDateTimeRange.tsx +7 -187
  154. package/src/plugin/Form/InputEmail.tsx +1 -0
  155. package/src/plugin/Form/InputExcel.tsx +70 -27
  156. package/src/plugin/Form/InputFile.tsx +326 -152
  157. package/src/plugin/Form/InputImage.tsx +1 -1
  158. package/src/plugin/Form/InputKV.tsx +61 -0
  159. package/src/plugin/Form/InputMonth.tsx +3 -1
  160. package/src/plugin/Form/InputMonthRange.tsx +6 -160
  161. package/src/plugin/Form/InputNumber.tsx +1 -1
  162. package/src/plugin/Form/InputPassword.tsx +2 -0
  163. package/src/plugin/Form/InputQuarter.tsx +3 -1
  164. package/src/plugin/Form/InputQuarterRange.tsx +6 -160
  165. package/src/plugin/Form/InputRange.tsx +74 -4
  166. package/src/plugin/Form/InputRating.tsx +347 -35
  167. package/src/plugin/Form/InputRichText.tsx +2 -3
  168. package/src/plugin/Form/InputTable.tsx +33 -49
  169. package/src/plugin/Form/InputTag.tsx +1 -1
  170. package/src/plugin/Form/InputText.tsx +310 -132
  171. package/src/plugin/Form/InputTime.tsx +4 -53
  172. package/src/plugin/Form/InputTimeRange.tsx +41 -0
  173. package/src/plugin/Form/InputTree.tsx +196 -46
  174. package/src/plugin/Form/InputURL.tsx +2 -0
  175. package/src/plugin/Form/InputYear.tsx +2 -0
  176. package/src/plugin/Form/InputYearRange.tsx +41 -0
  177. package/src/plugin/Form/Item.tsx +17 -18
  178. package/src/plugin/Form/ListSelect.tsx +75 -20
  179. package/src/plugin/Form/LocationPicker.tsx +2 -7
  180. package/src/plugin/Form/MatrixCheckboxes.tsx +1 -1
  181. package/src/plugin/Form/NestedSelect.tsx +110 -43
  182. package/src/plugin/Form/Picker.tsx +2 -5
  183. package/src/plugin/Form/Radios.tsx +122 -52
  184. package/src/plugin/Form/Select.tsx +239 -168
  185. package/src/plugin/Form/Static.tsx +1 -1
  186. package/src/plugin/Form/Switch.tsx +170 -58
  187. package/src/plugin/Form/TabsTransfer.tsx +175 -79
  188. package/src/plugin/Form/Textarea.tsx +146 -36
  189. package/src/plugin/Form/Transfer.tsx +295 -233
  190. package/src/plugin/Form/TreeSelect.tsx +287 -146
  191. package/src/plugin/Grid.tsx +340 -312
  192. package/src/plugin/HBox.tsx +1 -0
  193. package/src/plugin/IFrame.tsx +21 -12
  194. package/src/plugin/Image.tsx +7 -12
  195. package/src/plugin/Images.tsx +7 -12
  196. package/src/plugin/Link.tsx +6 -12
  197. package/src/plugin/List.tsx +6 -10
  198. package/src/plugin/ListItem.tsx +1 -0
  199. package/src/plugin/Nav.tsx +7 -9
  200. package/src/plugin/Others/Action.tsx +16 -10
  201. package/src/plugin/Others/BasicToolbar.tsx +4 -1
  202. package/src/plugin/Others/TableCell.tsx +19 -39
  203. package/src/plugin/Page.tsx +315 -229
  204. package/src/plugin/Panel.tsx +6 -7
  205. package/src/plugin/Plain.tsx +3 -6
  206. package/src/plugin/Progress.tsx +234 -94
  207. package/src/plugin/Service.tsx +10 -6
  208. package/src/plugin/Table.tsx +49 -20
  209. package/src/plugin/TableView.tsx +212 -106
  210. package/src/plugin/Tabs.tsx +306 -146
  211. package/src/plugin/TooltipWrapper.tsx +231 -135
  212. package/src/plugin/Tpl.tsx +68 -52
  213. package/src/plugin/Video.tsx +9 -20
  214. package/src/plugin/Wizard.tsx +537 -336
  215. package/src/plugin/Wrapper.tsx +82 -61
  216. package/src/plugin.ts +66 -4
  217. package/static/empty.png +0 -0
  218. package/dist/component/Control/APIControl.d.ts +0 -504
  219. package/dist/component/Control/ValidationControl.d.ts +0 -30
  220. package/dist/component/remarkTpl.d.ts +0 -150
@@ -8,6 +8,9 @@ import {
8
8
  ScaffoldForm
9
9
  } from '../../plugin';
10
10
  import {defaultValue, getSchemaTpl} from '../../component/schemaTpl';
11
+ import {getEventControlConfig, jsonToJsonSchema} from '../../util';
12
+ import {EditorNodeType} from '../../store/node';
13
+ import {RendererAction, RendererEvent} from '../../event-action';
11
14
  import {setVariable} from 'amis-core';
12
15
 
13
16
  // 用于脚手架的常用表单控件
@@ -204,6 +207,174 @@ export class FormPlugin extends BasePlugin {
204
207
  ];
205
208
 
206
209
  panelTitle = '表单';
210
+
211
+ // 事件定义
212
+ events: RendererEvent[] = [
213
+ {
214
+ eventName: 'inited',
215
+ eventLabel: '初始化完成',
216
+ description: '远程初始化接口请求成功时触发',
217
+ // 表单数据为表单变量
218
+ dataSchema: [
219
+ {
220
+ type: 'object',
221
+ properties: {
222
+ 'event.data': {
223
+ type: 'object',
224
+ title: 'initApi 远程请求返回的初始化数据'
225
+ }
226
+ }
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ eventName: 'change',
232
+ eventLabel: '数值变化',
233
+ description: '表单值变化时触发',
234
+ dataSchema: [
235
+ {
236
+ type: 'object',
237
+ properties: {
238
+ 'event.data': {
239
+ type: 'object',
240
+ title: '当前表单数据'
241
+ }
242
+ }
243
+ }
244
+ ]
245
+ },
246
+ {
247
+ eventName: 'formItemValidateSucc',
248
+ eventLabel: '表单项校验成功',
249
+ description: '表单项校验成功后触发',
250
+ dataSchema: [
251
+ {
252
+ type: 'object',
253
+ properties: {
254
+ 'event.data': {
255
+ type: 'object',
256
+ title: '当前表单数据'
257
+ }
258
+ }
259
+ }
260
+ ]
261
+ },
262
+ {
263
+ eventName: 'formItemValidateError',
264
+ eventLabel: '表单项校验失败',
265
+ description: '表单项校验失败后触发',
266
+ dataSchema: [
267
+ {
268
+ type: 'object',
269
+ properties: {
270
+ 'event.data': {
271
+ type: 'object',
272
+ title: '当前表单数据'
273
+ }
274
+ }
275
+ }
276
+ ]
277
+ },
278
+ {
279
+ eventName: 'validateSucc',
280
+ eventLabel: '表单校验成功',
281
+ description: '表单校验成功后触发',
282
+ dataSchema: [
283
+ {
284
+ type: 'object',
285
+ properties: {
286
+ 'event.data': {
287
+ type: 'object',
288
+ title: '当前表单数据'
289
+ }
290
+ }
291
+ }
292
+ ]
293
+ },
294
+ {
295
+ eventName: 'validateError',
296
+ eventLabel: '表单校验失败',
297
+ description: '表单校验失败后触发',
298
+ dataSchema: [
299
+ {
300
+ type: 'object',
301
+ properties: {
302
+ 'event.data': {
303
+ type: 'object',
304
+ title: '当前表单数据'
305
+ }
306
+ }
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ eventName: 'submitSucc',
312
+ eventLabel: '提交成功',
313
+ description: '表单提交请求成功后触发',
314
+ dataSchema: [
315
+ {
316
+ type: 'object',
317
+ properties: {
318
+ 'event.data.result': {
319
+ type: 'object',
320
+ title: '提交成功后返回的数据'
321
+ }
322
+ }
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ eventName: 'submitFail',
328
+ eventLabel: '提交失败',
329
+ description: '表单提交请求失败后触发',
330
+ dataSchema: [
331
+ {
332
+ type: 'object',
333
+ properties: {
334
+ 'event.data.error': {
335
+ type: 'object',
336
+ title: '提交失败后返回的错误信息'
337
+ }
338
+ }
339
+ }
340
+ ]
341
+ }
342
+ ];
343
+
344
+ // 动作定义
345
+ actions: RendererAction[] = [
346
+ {
347
+ actionLabel: '提交表单',
348
+ actionType: 'submit',
349
+ description: '触发表单提交'
350
+ },
351
+ {
352
+ actionLabel: '重置表单',
353
+ actionType: 'reset',
354
+ description: '触发表单重置'
355
+ },
356
+ {
357
+ actionLabel: '清空表单',
358
+ actionType: 'clear',
359
+ description: '触发表单清空'
360
+ },
361
+ {
362
+ actionLabel: '校验表单',
363
+ actionType: 'validate',
364
+ description: '触发表单校验'
365
+ },
366
+ {
367
+ actionLabel: '重新加载',
368
+ actionType: 'reload',
369
+ description: '触发组件数据刷新并重新渲染'
370
+ },
371
+ {
372
+ actionLabel: '更新数据',
373
+ actionType: 'setValue',
374
+ description: '触发组件数据更新'
375
+ }
376
+ ];
377
+
207
378
  panelBodyCreator = (context: BaseEventContext) => {
208
379
  const isCRUDFilter: boolean = /\/crud\/filter\/form$/.test(context.path);
209
380
  const isInDialog: boolean = /(?:\/|^)dialog\/.+$/.test(context.path);
@@ -228,12 +399,9 @@ export class FormPlugin extends BasePlugin {
228
399
  description: '当没有自定义按钮时有效。'
229
400
  },
230
401
 
231
- {
402
+ getSchemaTpl('switch', {
232
403
  name: 'autoFocus',
233
- type: 'switch',
234
404
  label: '自动聚焦',
235
- mode: 'inline',
236
- className: 'block',
237
405
  labelRemark: {
238
406
  className: 'm-l-xs',
239
407
  trigger: 'click',
@@ -241,16 +409,13 @@ export class FormPlugin extends BasePlugin {
241
409
  content: '设置后将让表单的第一个可输入的表单项获得焦点',
242
410
  placement: 'left'
243
411
  }
244
- },
412
+ }),
245
413
 
246
414
  getSchemaTpl('submitOnChange'),
247
415
 
248
- {
416
+ getSchemaTpl('switch', {
249
417
  label: '提交完后重置表单',
250
- type: 'switch',
251
418
  name: 'resetAfterSubmit',
252
- mode: 'inline',
253
- className: 'block',
254
419
  labelRemark: {
255
420
  className: 'm-l-xs',
256
421
  trigger: 'click',
@@ -258,16 +423,13 @@ export class FormPlugin extends BasePlugin {
258
423
  content: '即表单提交完后,让所有表单项的值还原成初始值',
259
424
  placement: 'left'
260
425
  }
261
- },
426
+ }),
262
427
 
263
428
  isCRUDFilter
264
429
  ? null
265
- : {
430
+ : getSchemaTpl('switch', {
266
431
  label: '初始化后提交一次',
267
- type: 'switch',
268
432
  name: 'submitOnInit',
269
- mode: 'inline',
270
- className: 'block',
271
433
  labelRemark: {
272
434
  className: 'm-l-xs',
273
435
  trigger: 'click',
@@ -275,17 +437,14 @@ export class FormPlugin extends BasePlugin {
275
437
  content: '开启后,表单初始完成便会触发一次提交。',
276
438
  placement: 'left'
277
439
  }
278
- },
440
+ }),
279
441
 
280
442
  isInDialog
281
- ? {
443
+ ? getSchemaTpl('switch', {
282
444
  label: '提交后是否关闭对话框',
283
- type: 'switch',
284
445
  name: 'closeDialogOnSubmit',
285
- mode: 'inline',
286
- className: 'block',
287
446
  pipeIn: (value: any) => value !== false
288
- }
447
+ })
289
448
  : null,
290
449
 
291
450
  isCRUDFilter
@@ -311,22 +470,16 @@ export class FormPlugin extends BasePlugin {
311
470
  description: '当设置此值后,表单提交完后跳转到目标地址。'
312
471
  },
313
472
 
314
- {
473
+ getSchemaTpl('switch', {
315
474
  name: 'canAccessSuperData',
316
475
  label: '是否自动填充父级同名变量',
317
- type: 'switch',
318
- pipeIn: defaultValue(true),
319
- mode: 'inline',
320
- className: 'block'
321
- },
476
+ pipeIn: defaultValue(true)
477
+ }),
322
478
 
323
- {
479
+ getSchemaTpl('switch', {
324
480
  name: 'persistData',
325
481
  label: '是否开启本地缓存',
326
- type: 'switch',
327
482
  pipeIn: defaultValue(false),
328
- mode: 'inline',
329
- className: 'block',
330
483
  labelRemark: {
331
484
  className: 'm-l-xs',
332
485
  trigger: 'click',
@@ -335,15 +488,12 @@ export class FormPlugin extends BasePlugin {
335
488
  '开启后,表单的数据会缓存在浏览器中,切换页面或关闭弹框不会清空当前表单内的数据',
336
489
  placement: 'left'
337
490
  }
338
- },
491
+ }),
339
492
 
340
- {
493
+ getSchemaTpl('switch', {
341
494
  name: 'clearPersistDataAfterSubmit',
342
495
  label: '提交成功后清空本地缓存',
343
- type: 'switch',
344
496
  pipeIn: defaultValue(false),
345
- mode: 'inline',
346
- className: 'block',
347
497
  visibleOn: 'data.persistData',
348
498
  labelRemark: {
349
499
  className: 'm-l-xs',
@@ -353,7 +503,7 @@ export class FormPlugin extends BasePlugin {
353
503
  '开启本地缓存并开启本配置项后,表单提交成功后,会自动清除浏览器中当前表单的缓存数据',
354
504
  placement: 'left'
355
505
  }
356
- },
506
+ }),
357
507
 
358
508
  {
359
509
  name: 'rules',
@@ -395,9 +545,11 @@ export class FormPlugin extends BasePlugin {
395
545
  // test: !this.isCRUDFilter
396
546
  }),
397
547
 
398
- {
548
+ getSchemaTpl('switch', {
549
+ name: 'asyncApi',
399
550
  label: '采用异步方式?',
400
- remark: {
551
+ visibleOn: 'data.api',
552
+ labelRemark: {
401
553
  trigger: 'click',
402
554
  rootClose: true,
403
555
  title: '什么是异步方式?',
@@ -405,14 +557,9 @@ export class FormPlugin extends BasePlugin {
405
557
  '异步方式主要用来解决请求超时问题,启用异步方式后,程序会在请求完后,定时轮询请求额外的接口用来咨询操作是否完成。所以接口可以快速的返回,而不需要等待流程真正完成。',
406
558
  placement: 'left'
407
559
  },
408
- type: 'switch',
409
- name: 'asyncApi',
410
- visibleOn: 'data.api',
411
560
  pipeIn: (value: any) => value != null,
412
- pipeOut: (value: any) => (value ? '' : undefined),
413
- mode: 'inline',
414
- className: 'block'
415
- },
561
+ pipeOut: (value: any) => (value ? '' : undefined)
562
+ }),
416
563
 
417
564
  getSchemaTpl('api', {
418
565
  name: 'asyncApi',
@@ -458,15 +605,13 @@ export class FormPlugin extends BasePlugin {
458
605
  }
459
606
  }),
460
607
 
461
- {
608
+ getSchemaTpl('switch', {
462
609
  label: '开启定时刷新',
463
- type: 'switch',
464
610
  name: 'interval',
465
611
  visibleOn: 'data.initApi',
466
612
  pipeIn: (value: any) => !!value,
467
- pipeOut: (value: any) => (value ? 3000 : undefined),
468
- mode: 'inline'
469
- },
613
+ pipeOut: (value: any) => (value ? 3000 : undefined)
614
+ }),
470
615
 
471
616
  {
472
617
  name: 'interval',
@@ -477,14 +622,12 @@ export class FormPlugin extends BasePlugin {
477
622
  description: '设置后将自动定时刷新,单位 ms'
478
623
  },
479
624
 
480
- {
625
+ getSchemaTpl('switch', {
481
626
  name: 'silentPolling',
482
627
  label: '静默刷新',
483
- type: 'switch',
484
- mode: 'inline',
485
628
  visibleOn: '!!data.interval',
486
629
  description: '设置自动定时刷新时是否显示loading'
487
- },
630
+ }),
488
631
 
489
632
  {
490
633
  name: 'stopAutoRefreshWhen',
@@ -495,8 +638,10 @@ export class FormPlugin extends BasePlugin {
495
638
  '定时刷新一旦设置会一直刷新,除非给出表达式,条件满足后则不刷新了。'
496
639
  },
497
640
 
498
- {
641
+ getSchemaTpl('switch', {
499
642
  label: '采用异步方式?',
643
+ name: 'initAsyncApi',
644
+ visibleOn: 'data.initApi',
500
645
  remark: {
501
646
  trigger: 'click',
502
647
  rootClose: true,
@@ -505,13 +650,9 @@ export class FormPlugin extends BasePlugin {
505
650
  '异步方式主要用来解决请求超时问题,启用异步方式后,程序会在请求完后,定时轮询请求额外的接口用来咨询操作是否完成。所以接口可以快速的返回,而不需要等待流程真正完成。',
506
651
  placement: 'left'
507
652
  },
508
- type: 'switch',
509
- name: 'initAsyncApi',
510
- visibleOn: 'data.initApi',
511
653
  pipeIn: (value: any) => value != null,
512
- pipeOut: (value: any) => (value ? '' : undefined),
513
- mode: 'inline'
514
- },
654
+ pipeOut: (value: any) => (value ? '' : undefined)
655
+ }),
515
656
 
516
657
  getSchemaTpl('api', {
517
658
  name: 'initAsyncApi',
@@ -595,11 +736,8 @@ export class FormPlugin extends BasePlugin {
595
736
  {
596
737
  title: '外观',
597
738
  body: [
598
- {
739
+ getSchemaTpl('switch', {
599
740
  name: 'wrapWithPanel',
600
- type: 'switch',
601
- mode: 'inline',
602
- className: 'block',
603
741
  label: '用 Panel 包裹',
604
742
  pipeIn: defaultValue(true),
605
743
  labelRemark: {
@@ -609,7 +747,7 @@ export class FormPlugin extends BasePlugin {
609
747
  content: '关闭后,表单只会展示表单项,标题和操作栏将不会显示。',
610
748
  placement: 'left'
611
749
  }
612
- },
750
+ }),
613
751
 
614
752
  {
615
753
  name: 'mode',
@@ -650,6 +788,17 @@ export class FormPlugin extends BasePlugin {
650
788
  ]
651
789
  },
652
790
 
791
+ {
792
+ title: '事件',
793
+ className: 'p-none',
794
+ body: [
795
+ getSchemaTpl('eventControl', {
796
+ name: 'onEvent',
797
+ ...getEventControlConfig(this.manager, context)
798
+ })
799
+ ]
800
+ },
801
+
653
802
  {
654
803
  title: '其他',
655
804
  body: [
@@ -657,13 +806,12 @@ export class FormPlugin extends BasePlugin {
657
806
  getSchemaTpl('name', {
658
807
  test: !isCRUDFilter
659
808
  }),
660
- {
809
+ getSchemaTpl('switch', {
661
810
  name: 'debug',
662
811
  label: '开启调试',
663
- type: 'switch',
664
- mode: 'inline',
665
812
  labelRemark: '显示当前表单的数据在表单顶部'
666
- },
813
+ }),
814
+
667
815
  getSchemaTpl('disabled'),
668
816
  getSchemaTpl('visible')
669
817
  ]
@@ -682,6 +830,65 @@ export class FormPlugin extends BasePlugin {
682
830
  this.manager.buildPanels();
683
831
  }
684
832
  }
833
+
834
+ async buildDataSchemas(node: EditorNodeType, region: EditorNodeType) {
835
+ const jsonschema: any = {
836
+ $id: 'formItems',
837
+ type: 'object',
838
+ properties: {}
839
+ };
840
+
841
+ const pool = node.children.concat();
842
+ while (pool.length) {
843
+ const current = pool.shift() as EditorNodeType;
844
+
845
+ if (current.rendererConfig?.type === 'combo') {
846
+ const schema = current.schema;
847
+ if (schema.name) {
848
+ jsonschema.properties[schema.name] = {
849
+ type: 'array',
850
+ title: schema.label || schema.name,
851
+ items: current.info?.plugin?.buildDataSchemas
852
+ ? await current.info.plugin.buildDataSchemas(current, region)
853
+ : {
854
+ type: 'object',
855
+ properties: {}
856
+ }
857
+ };
858
+ }
859
+ } else if (current.rendererConfig?.isFormItem) {
860
+ const schema = current.schema;
861
+ if (schema.name) {
862
+ jsonschema.properties[schema.name] = current.info?.plugin
863
+ ?.buildDataSchemas
864
+ ? await current.info.plugin.buildDataSchemas(current, region)
865
+ : {
866
+ type: 'string',
867
+ title: schema.label || schema.name,
868
+ description: schema.description
869
+ };
870
+ }
871
+ } else {
872
+ pool.push(...current.children);
873
+ }
874
+ }
875
+
876
+ return jsonschema;
877
+ }
878
+
879
+ rendererBeforeDispatchEvent(node: EditorNodeType, e: any, data: any) {
880
+ if (e === 'inited') {
881
+ // 监听 form 的 inited 事件,把数据加入到上下文中
882
+ const scope = this.manager.dataSchema.getScope(`${node.id}-${node.type}`);
883
+ const jsonschema: any = {
884
+ $id: 'formInitedData',
885
+ ...jsonToJsonSchema(data)
886
+ };
887
+
888
+ scope.removeSchema(jsonschema.$id);
889
+ scope.addSchema(jsonschema);
890
+ }
891
+ }
685
892
  }
686
893
 
687
894
  registerEditorPlugin(FormPlugin);
@@ -1,4 +1,4 @@
1
- import {defaultValue} from '../../component/schemaTpl';
1
+ import {defaultValue, getSchemaTpl} from '../../component/schemaTpl';
2
2
  import {registerEditorPlugin} from '../../manager';
3
3
  import {BasePlugin} from '../../plugin';
4
4
 
@@ -50,25 +50,19 @@ export class FormulaControlPlugin extends BasePlugin {
50
50
  description:
51
51
  '支持如:<code>\\${xxx}</code>或者<code>data.xxx == "a"</code> 表达式来配置作用条件,当满足该作用条件时,会将计算结果设置到目标变量上。'
52
52
  },
53
- {
53
+ getSchemaTpl('switch', {
54
54
  name: 'initSet',
55
- type: 'switch',
56
55
  label: '是否初始应用',
57
- pipeIn: defaultValue(true),
58
56
  description: '是否初始化的时候运行公式结果,并设置到目标变量上。',
59
- mode: 'inline',
60
- className: 'block'
61
- },
62
- {
57
+ pipeIn: defaultValue(true)
58
+ }),
59
+ getSchemaTpl('switch', {
63
60
  name: 'autoSet',
64
- type: 'switch',
65
61
  label: '是否自动应用',
66
- pipeIn: defaultValue(true),
67
- mode: 'inline',
68
- className: 'block',
69
62
  description:
70
- '是否自动计算公式结果,有变化时自动设置到目标变量上。<br />关闭后,通过按钮也能触发运算。'
71
- }
63
+ '是否自动计算公式结果,有变化时自动设置到目标变量上。<br />关闭后,通过按钮也能触发运算。',
64
+ pipeIn: defaultValue(true)
65
+ })
72
66
  ];
73
67
 
74
68
  renderRenderer(props: any) {
@@ -82,14 +82,11 @@ export class ArrayControlPlugin extends BasePlugin {
82
82
  )
83
83
  },
84
84
 
85
- {
85
+ getSchemaTpl('switch', {
86
86
  label: '是否可新增',
87
- type: 'switch',
88
87
  name: 'addable',
89
- mode: 'inline',
90
- className: 'w-full',
91
88
  pipeIn: defaultValue(true)
92
- },
89
+ }),
93
90
 
94
91
  {
95
92
  label: '新增按钮文字',
@@ -108,14 +105,11 @@ export class ArrayControlPlugin extends BasePlugin {
108
105
  pipeIn: defaultValue('')
109
106
  },
110
107
 
111
- {
108
+ getSchemaTpl('switch', {
112
109
  label: '是否可删除',
113
- type: 'switch',
114
110
  name: 'removable',
115
- mode: 'inline',
116
- className: 'w-full',
117
111
  pipeIn: defaultValue(true)
118
- },
112
+ }),
119
113
 
120
114
  getSchemaTpl('api', {
121
115
  name: 'deleteApi',
@@ -131,13 +125,10 @@ export class ArrayControlPlugin extends BasePlugin {
131
125
  pipeIn: defaultValue('确认要删除')
132
126
  },
133
127
 
134
- {
128
+ getSchemaTpl('switch', {
135
129
  name: 'draggable',
136
- label: '启用拖拽排序',
137
- type: 'switch',
138
- mode: 'inline',
139
- className: 'w-full'
140
- },
130
+ label: '启用拖拽排序'
131
+ }),
141
132
 
142
133
  {
143
134
  name: 'draggableTip',
@@ -90,4 +90,4 @@ export class CityControlPlugin extends BasePlugin {
90
90
  ];
91
91
  }
92
92
 
93
- registerEditorPlugin(CityControlPlugin);
93
+ registerEditorPlugin(CityControlPlugin);