amis-editor 4.1.0-beta.4 → 4.2.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. package/dist/component/Breadcrumb.d.ts +23 -2
  2. package/dist/component/ClassNameControl.d.ts +1 -1
  3. package/dist/component/Control/APIControl.d.ts +2 -2
  4. package/dist/component/Control/OptionControl.d.ts +3 -3
  5. package/dist/component/Control/PopoverEdit.d.ts +4 -4
  6. package/dist/component/Control/ValidationControl.d.ts +1 -1
  7. package/dist/component/Editor.d.ts +20 -1
  8. package/dist/component/IFramePreview.d.ts +2 -1
  9. package/dist/component/NodeWrapper.d.ts +1 -1
  10. package/dist/component/Panel/RenderersPanel.d.ts +1 -2
  11. package/dist/component/Preview.d.ts +3 -1
  12. package/dist/component/RegionWrapper.d.ts +4 -0
  13. package/dist/component/VRenderer.d.ts +4 -0
  14. package/dist/component/base/InputComponentName.d.ts +1 -1
  15. package/dist/component/base/SearchCustomRendererPanel.d.ts +15 -0
  16. package/dist/component/base/SearchPanel.d.ts +83 -0
  17. package/dist/component/base/SearchRendererPanel.d.ts +2 -42
  18. package/dist/env.d.ts +1 -1
  19. package/dist/exports.min.js +1 -1
  20. package/dist/index.d.ts +4 -1
  21. package/dist/index.min.js +1 -1
  22. package/dist/manager.d.ts +16 -4
  23. package/dist/plugin/Alert.d.ts +1 -1
  24. package/dist/plugin/Button.d.ts +1 -1
  25. package/dist/plugin/Card.d.ts +1 -0
  26. package/dist/plugin/Cards.d.ts +2 -1
  27. package/dist/plugin/Carousel.d.ts +1 -0
  28. package/dist/plugin/Chart.d.ts +1 -0
  29. package/dist/plugin/Collapse.d.ts +1 -0
  30. package/dist/plugin/Custom.d.ts +3 -0
  31. package/dist/plugin/CustomRegion.d.ts +40 -0
  32. package/dist/plugin/Dialog.d.ts +1 -1
  33. package/dist/plugin/Drawer.d.ts +1 -1
  34. package/dist/plugin/DropDownButton.d.ts +1 -1
  35. package/dist/plugin/Each.d.ts +1 -1
  36. package/dist/plugin/Flex.d.ts +1 -0
  37. package/dist/plugin/Form/Control.d.ts +1 -0
  38. package/dist/plugin/Form/Form.d.ts +19 -3
  39. package/dist/plugin/Form/Formula.d.ts +3 -3
  40. package/dist/plugin/Form/InputURL.d.ts +1 -0
  41. package/dist/plugin/Form/Switch.d.ts +2 -0
  42. package/dist/plugin/Grid.d.ts +1 -0
  43. package/dist/plugin/HBox.d.ts +1 -0
  44. package/dist/plugin/IFrame.d.ts +3 -3
  45. package/dist/plugin/Json.d.ts +1 -0
  46. package/dist/plugin/List.d.ts +2 -1
  47. package/dist/plugin/Mapping.d.ts +1 -0
  48. package/dist/plugin/Markdown.d.ts +1 -0
  49. package/dist/plugin/Nav.d.ts +1 -0
  50. package/dist/plugin/Page.d.ts +1 -1
  51. package/dist/plugin/Panel/Outline.d.ts +8 -0
  52. package/dist/plugin/Progress.d.ts +1 -0
  53. package/dist/plugin/QRCode.d.ts +1 -0
  54. package/dist/plugin/Reset.d.ts +0 -1
  55. package/dist/plugin/Service.d.ts +1 -0
  56. package/dist/plugin/Sparkline.d.ts +1 -0
  57. package/dist/plugin/Status.d.ts +1 -0
  58. package/dist/plugin/Steps.d.ts +1 -0
  59. package/dist/plugin/Submit.d.ts +0 -1
  60. package/dist/plugin/Table.d.ts +1 -1
  61. package/dist/plugin/TableView.d.ts +1 -0
  62. package/dist/plugin/Tasks.d.ts +1 -0
  63. package/dist/plugin/TooltipWrapper.d.ts +1 -0
  64. package/dist/plugin/Video.d.ts +1 -0
  65. package/dist/plugin/WebComponent.d.ts +1 -0
  66. package/dist/plugin/Wizard.d.ts +11 -2
  67. package/dist/plugin/Wrapper.d.ts +1 -0
  68. package/dist/plugin.d.ts +8 -7
  69. package/dist/store/editor.d.ts +47 -11
  70. package/dist/store/node.d.ts +6 -0
  71. package/dist/style.css +1 -1
  72. package/dist/util.d.ts +1 -1
  73. package/package.json +10 -3
  74. package/src/component/schemaTpl.tsx +2157 -0
  75. package/src/plugin/Alert.tsx +87 -0
  76. package/src/plugin/AnchorNav.tsx +233 -0
  77. package/src/plugin/Audio.tsx +154 -0
  78. package/src/plugin/Avatar.tsx +77 -0
  79. package/src/plugin/Breadcrumb.tsx +107 -0
  80. package/src/plugin/Button.tsx +281 -0
  81. package/src/plugin/ButtonGroup.tsx +85 -0
  82. package/src/plugin/ButtonToolbar.tsx +87 -0
  83. package/src/plugin/CRUD.tsx +1835 -0
  84. package/src/plugin/Card.tsx +290 -0
  85. package/src/plugin/Cards.tsx +318 -0
  86. package/src/plugin/Carousel.tsx +377 -0
  87. package/src/plugin/Chart.tsx +218 -0
  88. package/src/plugin/CodeView.tsx +60 -0
  89. package/src/plugin/Collapse.tsx +136 -0
  90. package/src/plugin/CollapseGroup.tsx +167 -0
  91. package/src/plugin/Container.tsx +40 -0
  92. package/src/plugin/Custom.tsx +128 -0
  93. package/src/plugin/CustomRegion.tsx +156 -0
  94. package/src/plugin/Date.tsx +74 -0
  95. package/src/plugin/Datetime.tsx +68 -0
  96. package/src/plugin/Dialog.tsx +176 -0
  97. package/src/plugin/Divider.tsx +36 -0
  98. package/src/plugin/Drawer.tsx +214 -0
  99. package/src/plugin/DropDownButton.tsx +235 -0
  100. package/src/plugin/Each.tsx +150 -0
  101. package/src/plugin/ErrorRenderer.tsx +15 -0
  102. package/src/plugin/Flex.tsx +151 -0
  103. package/src/plugin/Form/ButtonGroupSelect.tsx +75 -0
  104. package/src/plugin/Form/ButtonToolbar.tsx +110 -0
  105. package/src/plugin/Form/ChainedSelect.tsx +70 -0
  106. package/src/plugin/Form/Checkbox.tsx +87 -0
  107. package/src/plugin/Form/Checkboxes.tsx +167 -0
  108. package/src/plugin/Form/CodeEditor.tsx +81 -0
  109. package/src/plugin/Form/Combo.tsx +582 -0
  110. package/src/plugin/Form/ConditionBuilder.tsx +315 -0
  111. package/src/plugin/Form/Control.tsx +139 -0
  112. package/src/plugin/Form/DiffEditor.tsx +111 -0
  113. package/src/plugin/Form/FieldSet.tsx +163 -0
  114. package/src/plugin/Form/Form.tsx +687 -0
  115. package/src/plugin/Form/Formula.tsx +79 -0
  116. package/src/plugin/Form/Group.tsx +295 -0
  117. package/src/plugin/Form/Hidden.tsx +44 -0
  118. package/src/plugin/Form/InputArray.tsx +228 -0
  119. package/src/plugin/Form/InputCity.tsx +93 -0
  120. package/src/plugin/Form/InputColor.tsx +123 -0
  121. package/src/plugin/Form/InputDate.tsx +175 -0
  122. package/src/plugin/Form/InputDateRange.tsx +225 -0
  123. package/src/plugin/Form/InputDateTime.tsx +183 -0
  124. package/src/plugin/Form/InputDateTimeRange.tsx +221 -0
  125. package/src/plugin/Form/InputEmail.tsx +33 -0
  126. package/src/plugin/Form/InputExcel.tsx +85 -0
  127. package/src/plugin/Form/InputFile.tsx +221 -0
  128. package/src/plugin/Form/InputGroup.tsx +96 -0
  129. package/src/plugin/Form/InputImage.tsx +266 -0
  130. package/src/plugin/Form/InputKV.tsx +72 -0
  131. package/src/plugin/Form/InputMonth.tsx +35 -0
  132. package/src/plugin/Form/InputMonthRange.tsx +195 -0
  133. package/src/plugin/Form/InputNumber.tsx +89 -0
  134. package/src/plugin/Form/InputPassword.tsx +33 -0
  135. package/src/plugin/Form/InputQuarter.tsx +35 -0
  136. package/src/plugin/Form/InputQuarterRange.tsx +195 -0
  137. package/src/plugin/Form/InputRange.tsx +121 -0
  138. package/src/plugin/Form/InputRating.tsx +78 -0
  139. package/src/plugin/Form/InputRepeat.tsx +57 -0
  140. package/src/plugin/Form/InputRichText.tsx +186 -0
  141. package/src/plugin/Form/InputSubForm.tsx +189 -0
  142. package/src/plugin/Form/InputTable.tsx +434 -0
  143. package/src/plugin/Form/InputTag.tsx +70 -0
  144. package/src/plugin/Form/InputText.tsx +186 -0
  145. package/src/plugin/Form/InputTime.tsx +85 -0
  146. package/src/plugin/Form/InputTree.tsx +229 -0
  147. package/src/plugin/Form/InputURL.tsx +34 -0
  148. package/src/plugin/Form/InputYear.tsx +35 -0
  149. package/src/plugin/Form/Item.tsx +327 -0
  150. package/src/plugin/Form/ListSelect.tsx +73 -0
  151. package/src/plugin/Form/LocationPicker.tsx +62 -0
  152. package/src/plugin/Form/MatrixCheckboxes.tsx +136 -0
  153. package/src/plugin/Form/NestedSelect.tsx +211 -0
  154. package/src/plugin/Form/Picker.tsx +209 -0
  155. package/src/plugin/Form/Radios.tsx +119 -0
  156. package/src/plugin/Form/Select.tsx +233 -0
  157. package/src/plugin/Form/Static.tsx +322 -0
  158. package/src/plugin/Form/Switch.tsx +107 -0
  159. package/src/plugin/Form/TabsTransfer.tsx +259 -0
  160. package/src/plugin/Form/Textarea.tsx +83 -0
  161. package/src/plugin/Form/Transfer.tsx +368 -0
  162. package/src/plugin/Form/TreeSelect.tsx +263 -0
  163. package/src/plugin/Form/UUID.tsx +48 -0
  164. package/src/plugin/Grid.tsx +798 -0
  165. package/src/plugin/HBox.tsx +727 -0
  166. package/src/plugin/IFrame.tsx +70 -0
  167. package/src/plugin/Image.tsx +314 -0
  168. package/src/plugin/Images.tsx +231 -0
  169. package/src/plugin/Json.tsx +69 -0
  170. package/src/plugin/Link.tsx +93 -0
  171. package/src/plugin/List.tsx +278 -0
  172. package/src/plugin/ListItem.tsx +229 -0
  173. package/src/plugin/Log.tsx +52 -0
  174. package/src/plugin/Mapping.tsx +149 -0
  175. package/src/plugin/Markdown.tsx +47 -0
  176. package/src/plugin/Nav.tsx +184 -0
  177. package/src/plugin/Operation.tsx +95 -0
  178. package/src/plugin/Others/Action.tsx +426 -0
  179. package/src/plugin/Others/BasicToolbar.tsx +585 -0
  180. package/src/plugin/Others/DataDebug.tsx +134 -0
  181. package/src/plugin/Others/TableCell.tsx +480 -0
  182. package/src/plugin/Others/Unknown.tsx +37 -0
  183. package/src/plugin/Page.tsx +306 -0
  184. package/src/plugin/Panel/AvailableRenderers.tsx +41 -0
  185. package/src/plugin/Panel/Code.tsx +44 -0
  186. package/src/plugin/Panel/Name.tsx +26 -0
  187. package/src/plugin/Panel/Outline.tsx +40 -0
  188. package/src/plugin/Panel.tsx +243 -0
  189. package/src/plugin/Plain.tsx +84 -0
  190. package/src/plugin/Progress.tsx +125 -0
  191. package/src/plugin/Property.tsx +139 -0
  192. package/src/plugin/QRCode.tsx +96 -0
  193. package/src/plugin/Reset.tsx +23 -0
  194. package/src/plugin/Service.tsx +162 -0
  195. package/src/plugin/Sparkline.tsx +40 -0
  196. package/src/plugin/Status.tsx +76 -0
  197. package/src/plugin/Steps.tsx +128 -0
  198. package/src/plugin/Submit.tsx +23 -0
  199. package/src/plugin/Table.tsx +428 -0
  200. package/src/plugin/TableView.tsx +709 -0
  201. package/src/plugin/Tabs.tsx +362 -0
  202. package/src/plugin/Tasks.tsx +274 -0
  203. package/src/plugin/Time.tsx +68 -0
  204. package/src/plugin/TooltipWrapper.tsx +193 -0
  205. package/src/plugin/Tpl.tsx +158 -0
  206. package/src/plugin/Video.tsx +158 -0
  207. package/src/plugin/WebComponent.tsx +53 -0
  208. package/src/plugin/Wizard.tsx +740 -0
  209. package/src/plugin/Wrapper.tsx +107 -0
  210. package/src/plugin.ts +1050 -0
  211. package/dist/150a58f3318ca7541ed9.png +0 -0
  212. package/dist/471adb97c322b226e589.png +0 -0
  213. package/dist/4de5f42360bc5946c3c2.png +0 -0
  214. package/dist/4e9968bba3855f088fed.png +0 -0
  215. package/dist/7f09c38ebc687fea847a.png +0 -0
  216. package/dist/c94073576487510314ea.png +0 -0
@@ -0,0 +1,426 @@
1
+ import {Button} from 'amis-ui';
2
+ import React from 'react';
3
+ import {registerEditorPlugin} from '../../manager';
4
+ import {
5
+ BaseEventContext,
6
+ BasePlugin,
7
+ BasicPanelItem,
8
+ BasicToolbarItem,
9
+ BuildPanelEventContext
10
+ } from '../../plugin';
11
+ import {defaultValue, getSchemaTpl} from '../../component/schemaTpl';
12
+ import {diff} from '../../util';
13
+
14
+ export class ActionPlugin extends BasePlugin {
15
+ panelTitle = '按钮';
16
+ panelBodyCreator = (context: BaseEventContext) => {
17
+ const isInDialog = /(?:\/|^)dialog\/.+$/.test(context.path);
18
+ const isInDropdown = /(?:\/|^)dropdown-button\/.+$/.test(context.path);
19
+
20
+ return [
21
+ {
22
+ label: '按钮行为',
23
+ type: 'select',
24
+ name: 'actionType',
25
+ pipeIn: defaultValue(''),
26
+ options: [
27
+ {
28
+ label: '默认',
29
+ value: ''
30
+ },
31
+ {
32
+ label: '弹框',
33
+ value: 'dialog'
34
+ },
35
+
36
+ {
37
+ label: '抽出式弹框(Drawer)',
38
+ value: 'drawer'
39
+ },
40
+
41
+ {
42
+ label: '发送请求',
43
+ value: 'ajax'
44
+ },
45
+
46
+ {
47
+ label: '下载文件',
48
+ value: 'download'
49
+ },
50
+
51
+ {
52
+ label: '页面跳转(单页模式)',
53
+ value: 'link'
54
+ },
55
+
56
+ {
57
+ label: '页面跳转',
58
+ value: 'url'
59
+ },
60
+
61
+ {
62
+ label: '刷新目标',
63
+ value: 'reload'
64
+ },
65
+
66
+ {
67
+ label: '复制内容',
68
+ value: 'copy'
69
+ },
70
+
71
+ {
72
+ label: '提交',
73
+ value: 'submit'
74
+ },
75
+
76
+ {
77
+ label: '重置',
78
+ value: 'reset'
79
+ },
80
+
81
+ {
82
+ label: '重置表单并提交',
83
+ value: 'reset-and-submit'
84
+ },
85
+
86
+ {
87
+ label: '清空表单并提交',
88
+ value: 'clear-and-submit'
89
+ },
90
+
91
+ {
92
+ label: '确认',
93
+ value: 'confirm'
94
+ },
95
+
96
+ {
97
+ label: '取消',
98
+ value: 'cancel'
99
+ },
100
+
101
+ {
102
+ label: '跳转下一条',
103
+ value: 'next'
104
+ },
105
+
106
+ {
107
+ label: '跳转上一条',
108
+ value: 'prev'
109
+ }
110
+ ]
111
+ },
112
+
113
+ {
114
+ type: 'input-text',
115
+ name: 'content',
116
+ visibleOn: 'data.actionType == "copy"',
117
+ label: '复制内容模板'
118
+ },
119
+
120
+ {
121
+ type: 'select',
122
+ name: 'copyFormat',
123
+ options: [
124
+ {
125
+ label: '纯文本',
126
+ value: 'text/plain'
127
+ },
128
+ {
129
+ label: '富文本',
130
+ value: 'text/html'
131
+ }
132
+ ],
133
+ visibleOn: 'data.actionType == "copy"',
134
+ label: '复制格式'
135
+ },
136
+
137
+ {
138
+ type: 'input-text',
139
+ name: 'target',
140
+ visibleOn: 'data.actionType == "reload"',
141
+ label: '指定刷新目标',
142
+ required: true
143
+ },
144
+
145
+ {
146
+ name: 'dialog',
147
+ pipeIn: defaultValue({
148
+ title: '弹框标题',
149
+ body: '<p>对,你刚刚点击了</p>'
150
+ }),
151
+ asFormItem: true,
152
+ children: ({value, onChange, data}: any) =>
153
+ data.actionType === 'dialog' ? (
154
+ <Button
155
+ size="sm"
156
+ level="danger"
157
+ className="m-b"
158
+ onClick={() =>
159
+ this.manager.openSubEditor({
160
+ title: '配置弹框内容',
161
+ value: {type: 'dialog', ...value},
162
+ onChange: value => onChange(value)
163
+ })
164
+ }
165
+ block
166
+ >
167
+ 配置弹框内容
168
+ </Button>
169
+ ) : null
170
+ },
171
+
172
+ {
173
+ visibleOn: 'data.actionType == "drawer"',
174
+ name: 'drawer',
175
+ pipeIn: defaultValue({
176
+ title: '弹框标题',
177
+ body: '<p>对,你刚刚点击了</p>'
178
+ }),
179
+ asFormItem: true,
180
+ children: ({value, onChange, data}: any) =>
181
+ data.actionType == 'drawer' ? (
182
+ <Button
183
+ size="sm"
184
+ level="danger"
185
+ className="m-b"
186
+ onClick={() =>
187
+ this.manager.openSubEditor({
188
+ title: '配置抽出式弹框内容',
189
+ value: {type: 'drawer', ...value},
190
+ onChange: value => onChange(value)
191
+ })
192
+ }
193
+ block
194
+ >
195
+ 配置抽出式弹框内容
196
+ </Button>
197
+ ) : null
198
+ },
199
+
200
+ getSchemaTpl('api', {
201
+ label: '目标API',
202
+ visibleOn: 'data.actionType == "ajax" || data.actionType == "download"'
203
+ }),
204
+
205
+ {
206
+ name: 'feedback',
207
+ pipeIn: defaultValue({
208
+ title: '弹框标题',
209
+ body: '<p>内容</p>'
210
+ }),
211
+ asFormItem: true,
212
+ children: ({onChange, value, data}: any) =>
213
+ data.actionType == 'ajax' ? (
214
+ <div className="m-b">
215
+ <Button
216
+ size="sm"
217
+ level={value ? 'danger' : 'info'}
218
+ onClick={() =>
219
+ this.manager.openSubEditor({
220
+ title: '配置反馈弹框详情',
221
+ value: {type: 'dialog', ...value},
222
+ onChange: value => onChange(value)
223
+ })
224
+ }
225
+ >
226
+ 配置反馈弹框内容
227
+ </Button>
228
+
229
+ {value ? (
230
+ <Button
231
+ size="sm"
232
+ level="link"
233
+ className="m-l"
234
+ onClick={() => onChange('')}
235
+ >
236
+ 清空设置
237
+ </Button>
238
+ ) : null}
239
+ </div>
240
+ ) : null
241
+ },
242
+
243
+ {
244
+ name: 'feedback.visibleOn',
245
+ label: '是否弹出表达式',
246
+ type: 'input-text',
247
+ visibleOn: 'this.feedback',
248
+ autoComplete: false,
249
+ description: '请使用 JS 表达式如:`this.xxx == 1`'
250
+ },
251
+
252
+ {
253
+ name: 'feedback.skipRestOnCancel',
254
+ label: '弹框取消是否中断后续操作',
255
+ type: 'switch',
256
+ mode: 'inline',
257
+ className: 'block',
258
+ visibleOn: 'this.feedback'
259
+ },
260
+
261
+ {
262
+ name: 'feedback.skipRestOnConfirm',
263
+ label: '弹框确认是否中断后续操作',
264
+ type: 'switch',
265
+ mode: 'inline',
266
+ className: 'block',
267
+ visibleOn: 'this.feedback'
268
+ },
269
+
270
+ {
271
+ type: 'input-text',
272
+ label: '目标地址',
273
+ name: 'link',
274
+ visibleOn: 'data.actionType == "link"'
275
+ },
276
+
277
+ {
278
+ type: 'input-text',
279
+ label: '目标地址',
280
+ name: 'url',
281
+ visibleOn: 'data.actionType == "url"',
282
+ placeholder: 'http://'
283
+ },
284
+
285
+ {
286
+ type: 'switch',
287
+ name: 'blank',
288
+ visibleOn: 'data.actionType == "url"',
289
+ mode: 'inline',
290
+ className: 'w-full',
291
+ label: '是否用新窗口打开',
292
+ value: true
293
+ },
294
+
295
+ isInDialog
296
+ ? {
297
+ visibleOn: 'data.actionType == "submit" || data.type == "submit"',
298
+ name: 'close',
299
+ type: 'switch',
300
+ mode: 'inline',
301
+ className: 'w-full',
302
+ pipeIn: defaultValue(true),
303
+ label: '是否关闭当前弹框'
304
+ }
305
+ : null,
306
+
307
+ {
308
+ name: 'confirmText',
309
+ type: 'textarea',
310
+ label: '确认文案',
311
+ description: '点击后会弹出此内容,等用户确认后才进行相应的操作。'
312
+ },
313
+
314
+ {
315
+ type: 'input-text',
316
+ name: 'reload',
317
+ label: '刷新目标组件',
318
+ visibleOn: 'data.actionType != "link" && data.actionType != "url"',
319
+ description:
320
+ '当前动作完成后,指定目标组件刷新。支持传递数据如:<code>xxx?a=\\${a}&b=\\${b}</code>,多个目标请用英文逗号隔开。'
321
+ },
322
+
323
+ {
324
+ type: 'input-text',
325
+ name: 'target',
326
+ visibleOn: 'data.actionType != "reload"',
327
+ label: '指定响应组件',
328
+ description:
329
+ '指定动作执行者,默认为当前组件所在的功能性性组件,如果指定则转交给目标组件来处理。'
330
+ },
331
+
332
+ {
333
+ type: 'js-editor',
334
+ allowFullscreen: true,
335
+ name: 'onClick',
336
+ label: '自定义点击事件',
337
+ description: '将会传递 event 和 props 两个参数'
338
+ },
339
+
340
+ {
341
+ type: 'input-text',
342
+ name: 'hotKey',
343
+ label: '键盘快捷键'
344
+ }
345
+ ];
346
+ };
347
+
348
+ buildEditorPanel(
349
+ context: BuildPanelEventContext,
350
+ panels: Array<BasicPanelItem>
351
+ ) {
352
+ // 多选时不处理
353
+ if (context.selections.length) {
354
+ return;
355
+ }
356
+
357
+ if (
358
+ ~['action', 'button', 'submit', 'reset', 'sparkline'].indexOf(
359
+ context.info!.renderer.name!
360
+ )
361
+ ) {
362
+ let body: any = this.panelBodyCreator(context);
363
+
364
+ // sparkline 的 action 配置是放 clickAction 参数下的,所以需要加一层
365
+ if (context.info.renderer.name === 'sparkline') {
366
+ body = {
367
+ name: 'clickAction',
368
+ type: 'combo',
369
+ label: '',
370
+ noBorder: true,
371
+ multiLine: true,
372
+ items: body
373
+ };
374
+ }
375
+
376
+ panels.push({
377
+ key: 'action',
378
+ icon: 'fa fa-gavel',
379
+ title: '动作',
380
+ render: this.manager.makeSchemaFormRender({
381
+ body: body
382
+ }),
383
+ order: 100
384
+ });
385
+ } else {
386
+ super.buildEditorPanel(context, panels);
387
+ }
388
+ }
389
+
390
+ buildEditorToolbar(
391
+ {id, schema, info}: BaseEventContext,
392
+ toolbars: Array<BasicToolbarItem>
393
+ ) {
394
+ if (
395
+ ~['action', 'button', 'submit', 'reset'].indexOf(info!.renderer.name!) &&
396
+ schema.actionType === 'dialog'
397
+ ) {
398
+ toolbars.push({
399
+ iconSvg: 'dialog',
400
+ tooltip: `配置弹框内容`,
401
+ placement: 'bottom',
402
+ onClick: () => this.editDetail(id)
403
+ });
404
+ }
405
+ }
406
+
407
+ editDetail(id: string) {
408
+ const manager = this.manager;
409
+ const store = manager.store;
410
+ const node = store.getNodeById(id);
411
+ const value = store.getValueOf(id);
412
+
413
+ node &&
414
+ value &&
415
+ this.manager.openSubEditor({
416
+ title: '配置弹框内容',
417
+ value: {type: 'dialog', ...value.dialog},
418
+ onChange: newValue => {
419
+ newValue = {...value, dialog: newValue};
420
+ manager.panelChangeValue(newValue, diff(value, newValue));
421
+ }
422
+ });
423
+ }
424
+ }
425
+
426
+ registerEditorPlugin(ActionPlugin);