amis 1.9.0-beta.12 → 1.9.0-beta.15

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 (365) hide show
  1. package/lib/Schema.d.ts +4 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/SchemaRenderer.d.ts +2 -2
  4. package/lib/SchemaRenderer.js +3 -3
  5. package/lib/SchemaRenderer.js.map +2 -2
  6. package/lib/actions/Action.d.ts +8 -6
  7. package/lib/actions/Action.js.map +2 -2
  8. package/lib/actions/AjaxAction.d.ts +10 -7
  9. package/lib/actions/AjaxAction.js +27 -21
  10. package/lib/actions/AjaxAction.js.map +2 -2
  11. package/lib/actions/BreakAction.d.ts +2 -2
  12. package/lib/actions/BreakAction.js.map +1 -1
  13. package/lib/actions/BroadcastAction.d.ts +3 -3
  14. package/lib/actions/BroadcastAction.js +3 -2
  15. package/lib/actions/BroadcastAction.js.map +2 -2
  16. package/lib/actions/CmptAction.d.ts +2 -2
  17. package/lib/actions/CmptAction.js +7 -9
  18. package/lib/actions/CmptAction.js.map +2 -2
  19. package/lib/actions/ContinueAction.d.ts +2 -2
  20. package/lib/actions/ContinueAction.js.map +1 -1
  21. package/lib/actions/CopyAction.d.ts +7 -4
  22. package/lib/actions/CopyAction.js +8 -6
  23. package/lib/actions/CopyAction.js.map +2 -2
  24. package/lib/actions/CustomAction.d.ts +2 -2
  25. package/lib/actions/CustomAction.js.map +1 -1
  26. package/lib/actions/DialogAction.d.ts +14 -8
  27. package/lib/actions/DialogAction.js +6 -6
  28. package/lib/actions/DialogAction.js.map +2 -2
  29. package/lib/actions/DrawerAction.d.ts +3 -3
  30. package/lib/actions/DrawerAction.js.map +1 -1
  31. package/lib/actions/EmailAction.d.ts +10 -7
  32. package/lib/actions/EmailAction.js +4 -5
  33. package/lib/actions/EmailAction.js.map +2 -2
  34. package/lib/actions/LinkAction.d.ts +19 -11
  35. package/lib/actions/LinkAction.js +6 -5
  36. package/lib/actions/LinkAction.js.map +2 -2
  37. package/lib/actions/LoopAction.d.ts +6 -3
  38. package/lib/actions/LoopAction.js +22 -20
  39. package/lib/actions/LoopAction.js.map +2 -2
  40. package/lib/actions/PageAction.d.ts +8 -5
  41. package/lib/actions/PageAction.js +3 -2
  42. package/lib/actions/PageAction.js.map +2 -2
  43. package/lib/actions/ParallelAction.d.ts +2 -2
  44. package/lib/actions/ParallelAction.js.map +1 -1
  45. package/lib/actions/SwitchAction.d.ts +2 -2
  46. package/lib/actions/SwitchAction.js.map +1 -1
  47. package/lib/actions/ToastAction.d.ts +2 -2
  48. package/lib/actions/ToastAction.js +6 -4
  49. package/lib/actions/ToastAction.js.map +2 -2
  50. package/lib/components/Editor.d.ts +84 -84
  51. package/lib/components/InputBox.js +1 -1
  52. package/lib/components/InputBox.js.map +2 -2
  53. package/lib/components/Pagination.d.ts +1175 -0
  54. package/lib/components/Pagination.js +274 -0
  55. package/lib/components/Pagination.js.map +13 -0
  56. package/lib/components/PickerContainer.d.ts +1 -0
  57. package/lib/components/PickerContainer.js +3 -2
  58. package/lib/components/PickerContainer.js.map +2 -2
  59. package/lib/components/Rating.js +11 -9
  60. package/lib/components/Rating.js.map +2 -2
  61. package/lib/components/Select.js +3 -3
  62. package/lib/components/Select.js.map +2 -2
  63. package/lib/components/Tag.d.ts +148 -0
  64. package/lib/components/Tag.js +96 -0
  65. package/lib/components/Tag.js.map +13 -0
  66. package/lib/components/TooltipWrapper.d.ts +25 -21
  67. package/lib/components/TooltipWrapper.js +11 -1
  68. package/lib/components/TooltipWrapper.js.map +2 -2
  69. package/lib/components/TransferDropDown.d.ts +85 -84
  70. package/lib/components/TransferDropDown.js +2 -2
  71. package/lib/components/TransferDropDown.js.map +2 -2
  72. package/lib/components/Tree.d.ts +84 -84
  73. package/lib/components/formula/VariableList.d.ts +1 -0
  74. package/lib/components/formula/VariableList.js.map +2 -2
  75. package/lib/components/icons.js +2 -0
  76. package/lib/components/icons.js.map +2 -2
  77. package/lib/components/index.d.ts +4 -1
  78. package/lib/components/index.js +7 -1
  79. package/lib/components/index.js.map +2 -2
  80. package/lib/components/schema-editor/Array.d.ts +11 -0
  81. package/lib/components/schema-editor/Array.js +66 -0
  82. package/lib/components/schema-editor/Array.js.map +13 -0
  83. package/lib/components/schema-editor/Common.d.ts +29 -0
  84. package/lib/components/schema-editor/Common.js +69 -0
  85. package/lib/components/schema-editor/Common.js.map +13 -0
  86. package/lib/components/schema-editor/Item.d.ts +9 -0
  87. package/lib/components/schema-editor/Item.js +31 -0
  88. package/lib/components/schema-editor/Item.js.map +13 -0
  89. package/lib/components/schema-editor/Object.d.ts +44 -0
  90. package/lib/components/schema-editor/Object.js +191 -0
  91. package/lib/components/schema-editor/Object.js.map +13 -0
  92. package/lib/components/schema-editor/SchemaVariableList.d.ts +316 -0
  93. package/lib/components/schema-editor/SchemaVariableList.js +74 -0
  94. package/lib/components/schema-editor/SchemaVariableList.js.map +13 -0
  95. package/lib/components/schema-editor/SchemaVariableListPicker.d.ts +305 -0
  96. package/lib/components/schema-editor/SchemaVariableListPicker.js +32 -0
  97. package/lib/components/schema-editor/SchemaVariableListPicker.js.map +13 -0
  98. package/lib/components/schema-editor/index.d.ts +520 -0
  99. package/lib/components/schema-editor/index.js +118 -0
  100. package/lib/components/schema-editor/index.js.map +13 -0
  101. package/lib/components/table/Cell.d.ts +930 -0
  102. package/lib/components/table/Cell.js +36 -0
  103. package/lib/components/table/Cell.js.map +13 -0
  104. package/lib/components/table/HeadCellDropDown.d.ts +514 -0
  105. package/lib/components/table/HeadCellDropDown.js +52 -0
  106. package/lib/components/table/HeadCellDropDown.js.map +13 -0
  107. package/lib/components/table/HeadCellFilter.d.ts +771 -0
  108. package/lib/components/table/HeadCellFilter.js +106 -0
  109. package/lib/components/table/HeadCellFilter.js.map +13 -0
  110. package/lib/components/table/HeadCellSelect.d.ts +672 -0
  111. package/lib/components/table/HeadCellSelect.js +46 -0
  112. package/lib/components/table/HeadCellSelect.js.map +13 -0
  113. package/lib/components/table/HeadCellSort.d.ts +498 -0
  114. package/lib/components/table/HeadCellSort.js +67 -0
  115. package/lib/components/table/HeadCellSort.js.map +13 -0
  116. package/lib/components/table/index.d.ts +1355 -0
  117. package/lib/components/table/index.js +1095 -0
  118. package/lib/components/table/index.js.map +13 -0
  119. package/lib/env.d.ts +2 -4
  120. package/lib/env.js.map +2 -2
  121. package/lib/factory.js +0 -95
  122. package/lib/factory.js.map +2 -2
  123. package/lib/icons/dot.js +11 -0
  124. package/lib/index.d.ts +6 -1
  125. package/lib/index.js +9 -2
  126. package/lib/index.js.map +2 -2
  127. package/lib/locale/de-DE.js +18 -1
  128. package/lib/locale/de-DE.js.map +2 -2
  129. package/lib/locale/en-US.js +18 -1
  130. package/lib/locale/en-US.js.map +2 -2
  131. package/lib/locale/zh-CN.js +20 -1
  132. package/lib/locale/zh-CN.js.map +2 -2
  133. package/lib/renderers/Action.js +0 -2
  134. package/lib/renderers/Action.js.map +2 -2
  135. package/lib/renderers/Carousel.d.ts +5 -1
  136. package/lib/renderers/Carousel.js +18 -5
  137. package/lib/renderers/Carousel.js.map +2 -2
  138. package/lib/renderers/Form/ButtonGroupSelect.d.ts +2 -0
  139. package/lib/renderers/Form/ButtonGroupSelect.js +7 -0
  140. package/lib/renderers/Form/ButtonGroupSelect.js.map +2 -2
  141. package/lib/renderers/Form/Checkbox.js +3 -4
  142. package/lib/renderers/Form/Checkbox.js.map +2 -2
  143. package/lib/renderers/Form/Checkboxes.d.ts +2 -1
  144. package/lib/renderers/Form/Checkboxes.js +19 -14
  145. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  146. package/lib/renderers/Form/Combo.js +23 -4
  147. package/lib/renderers/Form/Combo.js.map +2 -2
  148. package/lib/renderers/Form/DiffEditor.d.ts +126 -18
  149. package/lib/renderers/Form/Editor.d.ts +412 -112
  150. package/lib/renderers/Form/Editor.js +10 -1
  151. package/lib/renderers/Form/Editor.js.map +2 -2
  152. package/lib/renderers/Form/InputExcel.js +6 -1
  153. package/lib/renderers/Form/InputExcel.js.map +2 -2
  154. package/lib/renderers/Form/InputFile.js +1 -2
  155. package/lib/renderers/Form/InputFile.js.map +2 -2
  156. package/lib/renderers/Form/InputTree.js +1 -1
  157. package/lib/renderers/Form/InputTree.js.map +2 -2
  158. package/lib/renderers/Form/Item.d.ts +0 -6
  159. package/lib/renderers/Form/JSONSchemaEditor.d.ts +41 -0
  160. package/lib/renderers/Form/JSONSchemaEditor.js +33 -0
  161. package/lib/renderers/Form/JSONSchemaEditor.js.map +13 -0
  162. package/lib/renderers/Form/ListSelect.d.ts +2 -0
  163. package/lib/renderers/Form/ListSelect.js +7 -0
  164. package/lib/renderers/Form/ListSelect.js.map +2 -2
  165. package/lib/renderers/Form/Options.js +1 -0
  166. package/lib/renderers/Form/Options.js.map +2 -2
  167. package/lib/renderers/Form/Select.js +12 -1
  168. package/lib/renderers/Form/Select.js.map +2 -2
  169. package/lib/renderers/Form/TabsTransfer.d.ts +1 -1
  170. package/lib/renderers/Form/TabsTransfer.js +2 -2
  171. package/lib/renderers/Form/TabsTransfer.js.map +2 -2
  172. package/lib/renderers/Form/TreeSelect.d.ts +4 -0
  173. package/lib/renderers/Form/TreeSelect.js +2 -2
  174. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  175. package/lib/renderers/Form/wrapControl.js +10 -5
  176. package/lib/renderers/Form/wrapControl.js.map +2 -2
  177. package/lib/renderers/Pagination.d.ts +49 -30
  178. package/lib/renderers/Pagination.js +3 -132
  179. package/lib/renderers/Pagination.js.map +2 -2
  180. package/lib/renderers/Table/HeadCellSearchDropdown.js +0 -1
  181. package/lib/renderers/Table/HeadCellSearchDropdown.js.map +2 -2
  182. package/lib/renderers/Table-v2/HeadCellSearchDropdown.d.ts +29 -0
  183. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js +158 -0
  184. package/lib/renderers/Table-v2/HeadCellSearchDropdown.js.map +13 -0
  185. package/lib/renderers/Table-v2/TableCell.d.ts +6 -0
  186. package/lib/renderers/Table-v2/TableCell.js +28 -0
  187. package/lib/renderers/Table-v2/TableCell.js.map +13 -0
  188. package/lib/renderers/Table-v2/index.d.ts +256 -0
  189. package/lib/renderers/Table-v2/index.js +548 -0
  190. package/lib/renderers/Table-v2/index.js.map +13 -0
  191. package/lib/renderers/Tabs.js +1 -1
  192. package/lib/renderers/Tabs.js.map +2 -2
  193. package/lib/renderers/Tag.d.ts +66 -0
  194. package/lib/renderers/Tag.js +53 -0
  195. package/lib/renderers/Tag.js.map +13 -0
  196. package/lib/renderers/Wizard.js +3 -3
  197. package/lib/renderers/Wizard.js.map +2 -2
  198. package/lib/schemaExtend.js +24 -30
  199. package/lib/schemaExtend.js.map +2 -2
  200. package/lib/store/combo.d.ts +140 -20
  201. package/lib/store/form.d.ts +56 -8
  202. package/lib/store/formItem.d.ts +3 -1
  203. package/lib/store/formItem.js +3 -1
  204. package/lib/store/formItem.js.map +2 -2
  205. package/lib/store/index.js +2 -0
  206. package/lib/store/index.js.map +2 -2
  207. package/lib/store/table-v2.d.ts +308 -0
  208. package/lib/store/table-v2.js +452 -0
  209. package/lib/store/table-v2.js.map +13 -0
  210. package/lib/store/table.d.ts +112 -16
  211. package/lib/store/table.js +1 -1
  212. package/lib/store/table.js.map +2 -2
  213. package/lib/themes/ang-ie11.css +1686 -120
  214. package/lib/themes/ang.css +1807 -208
  215. package/lib/themes/ang.css.map +1 -1
  216. package/lib/themes/antd-ie11.css +1667 -101
  217. package/lib/themes/antd.css +1789 -201
  218. package/lib/themes/antd.css.map +1 -1
  219. package/lib/themes/cxd-ie11.css +1662 -97
  220. package/lib/themes/cxd.css +1983 -394
  221. package/lib/themes/cxd.css.map +1 -1
  222. package/lib/themes/dark-ie11.css +1667 -101
  223. package/lib/themes/dark.css +1789 -201
  224. package/lib/themes/dark.css.map +1 -1
  225. package/lib/themes/default-ie11.css +1662 -97
  226. package/lib/themes/default.css +1983 -394
  227. package/lib/themes/default.css.map +1 -1
  228. package/lib/utils/DataSchema.d.ts +25 -0
  229. package/lib/utils/DataSchema.js +104 -0
  230. package/lib/utils/DataSchema.js.map +13 -0
  231. package/lib/utils/DataScope.d.ts +23 -0
  232. package/lib/utils/DataScope.js +140 -0
  233. package/lib/utils/DataScope.js.map +13 -0
  234. package/lib/utils/handleAction.js +1 -1
  235. package/lib/utils/handleAction.js.map +2 -2
  236. package/lib/utils/renderer-event.d.ts +8 -2
  237. package/lib/utils/renderer-event.js +102 -1
  238. package/lib/utils/renderer-event.js.map +2 -2
  239. package/package.json +3 -2
  240. package/schema.json +1476 -469
  241. package/scss/_properties.scss +69 -0
  242. package/scss/components/_button.scss +37 -39
  243. package/scss/components/_context-menu.scss +3 -18
  244. package/scss/components/_json-schema-editor.scss +126 -0
  245. package/scss/components/_pagination.scss +104 -23
  246. package/scss/components/_result-box.scss +2 -2
  247. package/scss/components/_table-v2.scss +912 -0
  248. package/scss/components/_tag.scss +177 -0
  249. package/scss/components/form/_selection.scss +1 -14
  250. package/scss/components/form/_text.scss +1 -1
  251. package/scss/themes/_antd-variables.scss +0 -13
  252. package/scss/themes/_common.scss +3 -0
  253. package/scss/themes/_cxd-variables.scss +7 -17
  254. package/scss/themes/_dark-variables.scss +0 -13
  255. package/scss/themes/cxd.scss +1 -1
  256. package/sdk/ang-ie11.css +2240 -227
  257. package/sdk/ang.css +2905 -859
  258. package/sdk/antd-ie11.css +2233 -220
  259. package/sdk/antd.css +2905 -870
  260. package/sdk/barcode.js +51 -51
  261. package/sdk/charts.js +14 -14
  262. package/sdk/codemirror.js +7 -7
  263. package/sdk/color-picker.js +65 -65
  264. package/sdk/cropperjs.js +2 -2
  265. package/sdk/cxd-ie11.css +2223 -211
  266. package/sdk/cxd.css +2911 -875
  267. package/sdk/dark-ie11.css +2233 -220
  268. package/sdk/dark.css +2905 -870
  269. package/sdk/exceljs.js +1 -1
  270. package/sdk/locale/de-DE.js +18 -1
  271. package/sdk/markdown.js +69 -69
  272. package/sdk/papaparse.js +1 -1
  273. package/sdk/renderers/Form/CityDB.js +1 -1
  274. package/sdk/rest.js +16 -16
  275. package/sdk/rich-text.js +62 -62
  276. package/sdk/sdk-ie11.css +2223 -211
  277. package/sdk/sdk.css +2911 -875
  278. package/sdk/sdk.js +1326 -1270
  279. package/sdk/thirds/hls.js/hls.js +1 -1
  280. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  281. package/sdk/tinymce.js +57 -57
  282. package/src/Schema.ts +7 -0
  283. package/src/SchemaRenderer.tsx +4 -5
  284. package/src/actions/Action.ts +7 -6
  285. package/src/actions/AjaxAction.ts +33 -24
  286. package/src/actions/BreakAction.ts +2 -2
  287. package/src/actions/BroadcastAction.ts +6 -5
  288. package/src/actions/CmptAction.ts +5 -6
  289. package/src/actions/ContinueAction.ts +2 -2
  290. package/src/actions/CopyAction.ts +14 -8
  291. package/src/actions/CustomAction.ts +2 -2
  292. package/src/actions/DialogAction.ts +16 -10
  293. package/src/actions/DrawerAction.ts +3 -3
  294. package/src/actions/EmailAction.ts +12 -12
  295. package/src/actions/LinkAction.ts +34 -14
  296. package/src/actions/LoopAction.ts +13 -8
  297. package/src/actions/PageAction.ts +9 -6
  298. package/src/actions/ParallelAction.ts +2 -2
  299. package/src/actions/SwitchAction.ts +2 -2
  300. package/src/actions/ToastAction.ts +9 -5
  301. package/src/components/InputBox.tsx +1 -0
  302. package/src/components/Pagination.tsx +446 -0
  303. package/src/components/PickerContainer.tsx +8 -5
  304. package/src/components/Rating.tsx +16 -9
  305. package/src/components/Select.tsx +3 -3
  306. package/src/components/Tag.tsx +179 -0
  307. package/src/components/TooltipWrapper.tsx +14 -1
  308. package/src/components/TransferDropDown.tsx +3 -0
  309. package/src/components/formula/VariableList.tsx +1 -0
  310. package/src/components/icons.tsx +2 -0
  311. package/src/components/index.tsx +7 -1
  312. package/src/components/schema-editor/Array.tsx +95 -0
  313. package/src/components/schema-editor/Common.tsx +138 -0
  314. package/src/components/schema-editor/Item.tsx +36 -0
  315. package/src/components/schema-editor/Object.tsx +299 -0
  316. package/src/components/schema-editor/SchemaVariableList.tsx +97 -0
  317. package/src/components/schema-editor/SchemaVariableListPicker.tsx +66 -0
  318. package/src/components/schema-editor/index.tsx +211 -0
  319. package/src/components/table/Cell.tsx +70 -0
  320. package/src/components/table/HeadCellDropDown.tsx +115 -0
  321. package/src/components/table/HeadCellFilter.tsx +193 -0
  322. package/src/components/table/HeadCellSelect.tsx +86 -0
  323. package/src/components/table/HeadCellSort.tsx +102 -0
  324. package/src/components/table/index.tsx +1681 -0
  325. package/src/env.tsx +7 -14
  326. package/src/factory.tsx +3 -106
  327. package/src/icons/dot.svg +11 -0
  328. package/src/index.tsx +8 -1
  329. package/src/locale/de-DE.ts +18 -1
  330. package/src/locale/en-US.ts +18 -1
  331. package/src/locale/zh-CN.ts +20 -1
  332. package/src/renderers/Action.tsx +1 -1
  333. package/src/renderers/Carousel.tsx +21 -6
  334. package/src/renderers/Form/ButtonGroupSelect.tsx +10 -1
  335. package/src/renderers/Form/Checkbox.tsx +4 -4
  336. package/src/renderers/Form/Checkboxes.tsx +31 -25
  337. package/src/renderers/Form/Combo.tsx +20 -4
  338. package/src/renderers/Form/Editor.tsx +15 -1
  339. package/src/renderers/Form/InputExcel.tsx +6 -1
  340. package/src/renderers/Form/InputFile.tsx +1 -2
  341. package/src/renderers/Form/InputTree.tsx +1 -1
  342. package/src/renderers/Form/JSONSchemaEditor.tsx +67 -0
  343. package/src/renderers/Form/ListSelect.tsx +9 -1
  344. package/src/renderers/Form/Options.tsx +1 -1
  345. package/src/renderers/Form/Select.tsx +7 -0
  346. package/src/renderers/Form/TabsTransfer.tsx +2 -2
  347. package/src/renderers/Form/TreeSelect.tsx +8 -1
  348. package/src/renderers/Form/wrapControl.tsx +11 -5
  349. package/src/renderers/Pagination.tsx +65 -253
  350. package/src/renderers/Table/HeadCellSearchDropdown.tsx +0 -1
  351. package/src/renderers/Table-v2/HeadCellSearchDropdown.tsx +244 -0
  352. package/src/renderers/Table-v2/TableCell.tsx +19 -0
  353. package/src/renderers/Table-v2/index.tsx +1140 -0
  354. package/src/renderers/Tabs.tsx +1 -1
  355. package/src/renderers/Tag.tsx +128 -0
  356. package/src/renderers/Wizard.tsx +3 -3
  357. package/src/schemaExtend.ts +24 -28
  358. package/src/store/formItem.ts +5 -1
  359. package/src/store/index.ts +2 -0
  360. package/src/store/table-v2.ts +646 -0
  361. package/src/store/table.ts +1 -1
  362. package/src/utils/DataSchema.ts +131 -0
  363. package/src/utils/DataScope.ts +190 -0
  364. package/src/utils/handleAction.ts +1 -1
  365. package/src/utils/renderer-event.ts +113 -2
package/src/env.tsx CHANGED
@@ -6,12 +6,8 @@ import {RendererConfig} from './factory';
6
6
  import {ThemeInstance} from './theme';
7
7
  import {Action, Api, Payload, Schema} from './types';
8
8
  import hoistNonReactStatic from 'hoist-non-react-statics';
9
- import {
10
- RendererEvent,
11
- RendererEventListener,
12
- EventListeners
13
- } from './utils/renderer-event';
14
9
  import {IScopedContext} from './Scoped';
10
+ import {RendererEvent} from './utils/renderer-event';
15
11
 
16
12
  export interface RendererEnv {
17
13
  fetcher: (api: Api, data?: any, options?: object) => Promise<Payload>;
@@ -69,8 +65,11 @@ export interface RendererEnv {
69
65
  ) => Promise<React.ReactType> | React.ReactType | JSX.Element | void;
70
66
  loadChartExtends?: () => void | Promise<void>;
71
67
  useMobileUI?: boolean;
72
- bindEvent: (context: any) => (() => void) | undefined;
73
- dispatchEvent: (
68
+ /**
69
+ * 过滤 html 标签,可用来添加 xss 保护逻辑
70
+ */
71
+ filterHtml: (input: string) => string;
72
+ beforeDispatchEvent: (
74
73
  e:
75
74
  | string
76
75
  | React.ClipboardEvent<any>
@@ -86,13 +85,7 @@ export interface RendererEnv {
86
85
  scoped: IScopedContext,
87
86
  data: any,
88
87
  broadcast?: RendererEvent<any>
89
- ) => Promise<RendererEvent<any> | undefined>;
90
- rendererEventListeners: RendererEventListener[];
91
-
92
- /**
93
- * 过滤 html 标签,可用来添加 xss 保护逻辑
94
- */
95
- filterHtml: (input: string) => string;
88
+ ) => void;
96
89
  [propName: string]: any;
97
90
  }
98
91
 
package/src/factory.tsx CHANGED
@@ -4,7 +4,6 @@ import {getEnv, destroy} from 'mobx-state-tree';
4
4
  import {wrapFetcher} from './utils/api';
5
5
  import {normalizeLink} from './utils/normalizeLink';
6
6
  import {
7
- createObject,
8
7
  findIndex,
9
8
  isObject,
10
9
  JSONTraverse,
@@ -13,9 +12,7 @@ import {
13
12
  string2regExp
14
13
  } from './utils/helper';
15
14
  import {
16
- Api,
17
15
  fetcherResult,
18
- Payload,
19
16
  SchemaNode,
20
17
  Schema,
21
18
  Action,
@@ -23,8 +20,8 @@ import {
23
20
  PlainObject
24
21
  } from './types';
25
22
  import {observer} from 'mobx-react';
26
- import Scoped, {IScopedContext} from './Scoped';
27
- import {getTheme, ThemeInstance, ThemeProps} from './theme';
23
+ import Scoped from './Scoped';
24
+ import {getTheme, ThemeProps} from './theme';
28
25
  import find from 'lodash/find';
29
26
  import Alert from './components/Alert2';
30
27
  import {toast} from './components/Toast';
@@ -34,14 +31,7 @@ import ScopedRootRenderer, {RootRenderProps} from './Root';
34
31
  import {HocStoreFactory} from './WithStore';
35
32
  import {EnvContext, RendererEnv} from './env';
36
33
  import {envOverwrite} from './envOverwrite';
37
- import {
38
- EventListeners,
39
- createRendererEvent,
40
- RendererEventListener,
41
- OnEventProps,
42
- RendererEvent
43
- } from './utils/renderer-event';
44
- import {runActions} from './actions/Action';
34
+ import {OnEventProps} from './utils/renderer-event';
45
35
  import {enableDebug} from './utils/debug';
46
36
 
47
37
  export interface TestFunc {
@@ -283,7 +273,6 @@ const defaultOptions: RenderOptions = {
283
273
  location.search.indexOf('amisDebug=1') !== -1 ??
284
274
  false,
285
275
  loadRenderer,
286
- rendererEventListeners: [],
287
276
  fetcher() {
288
277
  return Promise.reject('fetcher is required');
289
278
  },
@@ -384,98 +373,6 @@ const defaultOptions: RenderOptions = {
384
373
  },
385
374
  // 用于跟踪用户在界面中的各种操作
386
375
  tracker(eventTrack: EventTrack, props: PlainObject) {},
387
- // 返回解绑函数
388
- bindEvent(renderer: any) {
389
- if (!renderer) {
390
- return undefined;
391
- }
392
- const listeners: EventListeners = renderer.props.$schema.onEvent;
393
- if (listeners) {
394
- // 暂存
395
- for (let key of Object.keys(listeners)) {
396
- const listener = this.rendererEventListeners.some(
397
- (item: RendererEventListener) =>
398
- item.renderer === renderer && item.type === key
399
- );
400
- if (!listener) {
401
- this.rendererEventListeners.push({
402
- renderer,
403
- type: key,
404
- weight: listeners[key].weight || 0,
405
- actions: listeners[key].actions
406
- });
407
- }
408
- }
409
-
410
- return () => {
411
- this.rendererEventListeners = this.rendererEventListeners.filter(
412
- (item: RendererEventListener) => item.renderer !== renderer
413
- );
414
- };
415
- }
416
-
417
- return undefined;
418
- },
419
- async dispatchEvent(
420
- e: string | React.MouseEvent<any>,
421
- renderer: React.Component<RendererProps>,
422
- scoped: IScopedContext,
423
- data: any,
424
- broadcast?: RendererEvent<any>
425
- ) {
426
- let unbindEvent = null;
427
- const eventName = typeof e === 'string' ? e : e.type;
428
-
429
- if (!broadcast) {
430
- const eventConfig = renderer?.props?.onEvent?.[eventName];
431
-
432
- if (!eventConfig) {
433
- // 没命中也没关系
434
- return Promise.resolve(undefined);
435
- }
436
-
437
- unbindEvent = this.bindEvent(renderer);
438
- }
439
-
440
- // 没有可处理的监听
441
- if (!this.rendererEventListeners.length) {
442
- return Promise.resolve();
443
- }
444
- // 如果是广播动作,就直接复用
445
- const rendererEvent =
446
- broadcast ||
447
- createRendererEvent(eventName, {
448
- env: this,
449
- nativeEvent: e,
450
- data,
451
- scoped
452
- });
453
-
454
- // 过滤&排序
455
- const listeners = this.rendererEventListeners
456
- .filter(
457
- (item: RendererEventListener) =>
458
- item.type === eventName &&
459
- (broadcast ? true : item.renderer === renderer)
460
- )
461
- .sort(
462
- (prev: RendererEventListener, next: RendererEventListener) =>
463
- next.weight - prev.weight
464
- );
465
-
466
- for (let listener of listeners) {
467
- await runActions(listener.actions, listener.renderer, rendererEvent);
468
-
469
- // 停止后续监听器执行
470
- if (rendererEvent.stoped) {
471
- break;
472
- }
473
- }
474
-
475
- unbindEvent?.();
476
-
477
- return rendererEvent;
478
- },
479
376
  rendererResolver: resolveRenderer,
480
377
  replaceTextIgnoreKeys: [
481
378
  'type',
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>状态圆</title>
4
+ <g id="状态圆" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <circle id="dot" fill="currentColor" cx="8" cy="8" r="6"></circle>
6
+ <circle id="dotWave" cx="8" cy="8" r="6" fill="currentColor" opacity="0.5">
7
+ <animate attributeName="r" begin="0" values="6;8;6" dur="1.5" repeatCount="indefinite"></animate>
8
+ </circle>
9
+ </g>
10
+ </svg>
11
+
package/src/index.tsx CHANGED
@@ -87,6 +87,7 @@ import './renderers/Form/ChartRadios';
87
87
  import './renderers/Form/InputRating';
88
88
  import './renderers/Form/Switch';
89
89
  import './renderers/Form/Radios';
90
+ import './renderers/Form/JSONSchemaEditor';
90
91
  import './renderers/Form/ListSelect';
91
92
  import './renderers/Form/LocationPicker';
92
93
  import './renderers/Form/Select';
@@ -177,6 +178,8 @@ import './renderers/Code';
177
178
  import './renderers/WebComponent';
178
179
  import './renderers/GridNav';
179
180
  import './renderers/TooltipWrapper';
181
+ import './renderers/Tag';
182
+ import './renderers/Table-v2';
180
183
 
181
184
  import Scoped, {ScopedContext} from './Scoped';
182
185
 
@@ -219,6 +222,8 @@ import {
219
222
  const classPrefix = getClassPrefix();
220
223
 
221
224
  import './actions';
225
+ import {DataScope} from './utils/DataScope';
226
+ import {DataSchema} from './utils/DataSchema';
222
227
 
223
228
  export * from './components/index';
224
229
 
@@ -276,5 +281,7 @@ export {
276
281
  setDefaultLocale,
277
282
  registerLocale,
278
283
  makeTranslator,
279
- animation
284
+ animation,
285
+ DataSchema,
286
+ DataScope
280
287
  };
@@ -46,6 +46,11 @@ register('de-DE', {
46
46
  'CRUD.paginationGoText': 'Wechseln zu',
47
47
  'CRUD.paginationPageText': 'Seite',
48
48
  'PaginationWrapper.placeholder': 'Textkörper konfigurieren',
49
+ 'Pagination.select': '{{count}} items/page',
50
+ 'Pagination.goto': 'goto',
51
+ 'Pagination.go': 'GO',
52
+ 'Pagination.totalPage': 'total {{lastPage}} pages',
53
+ 'Pagination.totalCount': 'total {{total}} items',
49
54
  'Date.titleYear': '',
50
55
  'Date.titleMonth': '',
51
56
  'Date.titleDate': '',
@@ -300,5 +305,17 @@ register('de-DE', {
300
305
  'pullRefresh.loosingText': 'Zum Aktualisieren freigeben...',
301
306
  'pullRefresh.loadingText': 'Laden...',
302
307
  'pullRefresh.successText': 'Laden erfolgreich',
303
- 'Picker.placeholder': 'Klicken Sie rechts auf das Symbol'
308
+ 'Picker.placeholder': 'Klicken Sie rechts auf das Symbol',
309
+ 'SchemaType.string': 'String',
310
+ 'SchemaType.number': 'Number',
311
+ 'SchemaType.interger': 'Interger',
312
+ 'SchemaType.object': 'Object',
313
+ 'SchemaType.array': 'Array',
314
+ 'SchemaType.boolean': 'Boolean',
315
+ 'SchemaType.null': 'Null',
316
+ 'SchemaType.any': 'Any',
317
+ 'JSONSchema.title': 'Title',
318
+ 'JSONSchema.description': 'Description',
319
+ 'JSONSchema.key': 'Key',
320
+ 'JSONSchema.array_items': 'Items'
304
321
  });
@@ -43,6 +43,11 @@ register('en-US', {
43
43
  'CRUD.paginationGoText': 'Go to',
44
44
  'CRUD.paginationPageText': 'page',
45
45
  'PaginationWrapper.placeholder': 'please config body',
46
+ 'Pagination.select': '{{count}} items/page',
47
+ 'Pagination.goto': 'goto',
48
+ 'Pagination.go': 'GO',
49
+ 'Pagination.totalPage': 'total {{lastPage}} pages',
50
+ 'Pagination.totalCount': 'total {{total}} items',
46
51
  'Date.titleYear': 'select year',
47
52
  'Date.titleMonth': 'select month and year',
48
53
  'Date.titleDate': 'select month, year and day',
@@ -302,5 +307,17 @@ register('en-US', {
302
307
  'pullRefresh.loosingText': 'Release to refresh...',
303
308
  'pullRefresh.loadingText': 'Loading...',
304
309
  'pullRefresh.successText': 'Loading success',
305
- 'Picker.placeholder': 'Click icon on the right'
310
+ 'Picker.placeholder': 'Click icon on the right',
311
+ 'SchemaType.string': 'String',
312
+ 'SchemaType.number': 'Number',
313
+ 'SchemaType.interger': 'Interger',
314
+ 'SchemaType.object': 'Object',
315
+ 'SchemaType.array': 'Array',
316
+ 'SchemaType.boolean': 'Boolean',
317
+ 'SchemaType.any': 'Any',
318
+ 'SchemaType.null': 'Null',
319
+ 'JSONSchema.title': 'Title',
320
+ 'JSONSchema.description': 'Description',
321
+ 'JSONSchema.key': 'Key',
322
+ 'JSONSchema.array_items': 'Items'
306
323
  });
@@ -46,6 +46,11 @@ register('zh-CN', {
46
46
  'CRUD.paginationGoText': '前往',
47
47
  'CRUD.paginationPageText': '页',
48
48
  'PaginationWrapper.placeholder': '请配置内容',
49
+ 'Pagination.select': '{{count}} 条/页',
50
+ 'Pagination.goto': '跳转至',
51
+ 'Pagination.go': 'GO',
52
+ 'Pagination.totalPage': '共 {{lastPage}} 页',
53
+ 'Pagination.totalCount': '共 {{total}} 条',
49
54
  'Date.titleYear': '选择年',
50
55
  'Date.titleMonth': '选择年月',
51
56
  'Date.titleDate': '选择年月日',
@@ -309,5 +314,19 @@ register('zh-CN', {
309
314
  'pullRefresh.loosingText': '释放即可刷新...',
310
315
  'pullRefresh.loadingText': '加载中...',
311
316
  'pullRefresh.successText': '加载成功',
312
- 'Picker.placeholder': '请点击右侧的图标'
317
+ 'Picker.placeholder': '请点击右侧的图标',
318
+ 'SchemaType.string': '字符串',
319
+ 'SchemaType.number': '数字',
320
+ 'SchemaType.interger': '整数',
321
+ 'SchemaType.object': '对象',
322
+ 'SchemaType.array': '数组',
323
+ 'SchemaType.boolean': '布尔',
324
+ 'SchemaType.null': 'Null',
325
+ 'SchemaType.any': '任意',
326
+ 'JSONSchema.title': '名称',
327
+ 'JSONSchema.key': '字段名',
328
+ 'JSONSchema.description': '描述',
329
+ 'JSONSchema.add_prop': '添加属性',
330
+ 'JSONSchema.array_items': '成员类型',
331
+ 'Required': '必填'
313
332
  });
@@ -614,7 +614,7 @@ export class Action extends React.Component<ActionProps, ActionState> {
614
614
  const {onAction, disabled, countDown, env} = this.props;
615
615
 
616
616
  // https://reactjs.org/docs/legacy-event-pooling.html
617
- e.persist();
617
+ // e.persist(); // react 17之后去掉 event pooling 了,这个应该没用了
618
618
  let onClick = this.props.onClick;
619
619
 
620
620
  if (typeof onClick === 'string') {
@@ -18,6 +18,7 @@ import {Icon} from '../components/icons';
18
18
  import {BaseSchema, SchemaCollection, SchemaName, SchemaTpl} from '../Schema';
19
19
  import Html from '../components/Html';
20
20
  import Image from '../renderers/Image';
21
+ import {ScopedContext, IScopedContext} from '../Scoped';
21
22
 
22
23
  /**
23
24
  * Carousel 轮播图渲染器。
@@ -192,14 +193,13 @@ export class Carousel extends React.Component<CarouselProps, CarouselState> {
192
193
  this.clearAutoTimeout();
193
194
  }
194
195
 
195
- doAction(action: Action, data: object, throwErrors: boolean): any {
196
+ doAction(action: Action, args: object, throwErrors: boolean): any {
196
197
  const actionType = action?.actionType as string;
197
-
198
+
198
199
  if (!!~['next', 'prev'].indexOf(actionType)) {
199
200
  this.autoSlide(actionType);
200
- }
201
- else if (actionType === 'goto-image') {
202
- this.changeSlide((data as any).activeIndex);
201
+ } else if (actionType === 'goto-image') {
202
+ this.changeSlide((args as any).activeIndex);
203
203
  }
204
204
  }
205
205
 
@@ -480,4 +480,19 @@ export class Carousel extends React.Component<CarouselProps, CarouselState> {
480
480
  @Renderer({
481
481
  type: 'carousel'
482
482
  })
483
- export class CarouselRenderer extends Carousel {}
483
+ export class CarouselRenderer extends Carousel {
484
+ static contextType = ScopedContext;
485
+
486
+ constructor(props: CarouselProps, context: IScopedContext) {
487
+ super(props);
488
+
489
+ const scoped = context;
490
+ scoped.registerComponent(this);
491
+ }
492
+
493
+ componentWillUnmount() {
494
+ super.componentWillUnmount?.();
495
+ const scoped = this.context as IScopedContext;
496
+ scoped.unRegisterComponent(this);
497
+ }
498
+ }
@@ -6,7 +6,7 @@ import {
6
6
  Option,
7
7
  FormOptionsControl
8
8
  } from './Options';
9
- import {Button} from '../../types';
9
+ import {Action, Button} from '../../types';
10
10
  import {getLevelFromClassName, autobind, isEmpty} from '../../utils/helper';
11
11
  import {dataMapping} from '../../utils/tpl-builtin';
12
12
  import {ButtonGroupSchema} from '../ButtonGroup';
@@ -48,6 +48,15 @@ export default class ButtonGroupControl extends React.Component<
48
48
  vertical: false
49
49
  };
50
50
 
51
+ doAction(action: Action, data: object, throwErrors: boolean) {
52
+ const {resetValue, onChange} = this.props;
53
+ const actionType = action?.actionType as string;
54
+
55
+ if (!!~['clear', 'reset'].indexOf(actionType)) {
56
+ onChange(resetValue ?? '');
57
+ }
58
+ }
59
+
51
60
  @autobind
52
61
  handleToggle(option: Option) {
53
62
  const {onToggle, multiple, autoFill, onBulkChange} = this.props;
@@ -71,10 +71,10 @@ export default class CheckboxControl extends React.Component<
71
71
  const rendererEvent = await dispatchEvent(
72
72
  'change',
73
73
  createObject(data, {
74
- value: eventData,
74
+ value: eventData
75
75
  })
76
76
  );
77
-
77
+
78
78
  if (rendererEvent?.prevented) {
79
79
  return;
80
80
  }
@@ -118,10 +118,10 @@ export default class CheckboxControl extends React.Component<
118
118
  }
119
119
  }
120
120
 
121
+ // @ts-ignore
122
+ @withBadge
121
123
  @FormItem({
122
124
  type: 'checkbox',
123
125
  sizeMutable: false
124
126
  })
125
- // @ts-ignore
126
- @withBadge
127
127
  export class CheckboxControlRenderer extends CheckboxControl {}
@@ -9,7 +9,7 @@ import cx from 'classnames';
9
9
  import Checkbox from '../../components/Checkbox';
10
10
 
11
11
  import {Icon} from '../../components/icons';
12
- import {Api} from '../../types';
12
+ import {Action, Api} from '../../types';
13
13
  import {autobind, hasAbility} from '../../utils/helper';
14
14
  import {columnsSplit} from '../../utils/columnsSplit';
15
15
 
@@ -56,7 +56,7 @@ export interface CheckboxesProps
56
56
  createBtnLabel: string;
57
57
  editable?: boolean;
58
58
  removable?: boolean;
59
- optionType?: 'default' | 'button'
59
+ optionType?: 'default' | 'button';
60
60
  }
61
61
 
62
62
  export default class CheckboxesControl extends React.Component<
@@ -73,6 +73,14 @@ export default class CheckboxesControl extends React.Component<
73
73
  optionType: 'default'
74
74
  };
75
75
 
76
+ doAction(action: Action, data: object, throwErrors: boolean) {
77
+ const {resetValue, onChange} = this.props;
78
+ const actionType = action?.actionType as string;
79
+ if (!!~['clear', 'reset'].indexOf(actionType)) {
80
+ onChange(resetValue ?? '');
81
+ }
82
+ }
83
+
76
84
  reload() {
77
85
  const reload = this.props.reloadOptions;
78
86
  reload && reload();
@@ -117,27 +125,27 @@ export default class CheckboxesControl extends React.Component<
117
125
  const wrapDom = this.refs.checkboxRef as HTMLElement;
118
126
  const wrapWidth = wrapDom.clientWidth;
119
127
  const childs = Array.from(wrapDom.children) as HTMLElement[];
120
-
128
+
121
129
  childs.forEach(child => {
122
130
  child.style.borderRadius = '0';
123
131
  child.style.borderLeftWidth = '1px';
124
132
  child.style.borderTopWidth = '1px';
125
133
  });
126
- const childTotalWidth = childs.reduce((pre, next) =>
127
- pre + next.clientWidth, 0);
134
+ const childTotalWidth = childs.reduce(
135
+ (pre, next) => pre + next.clientWidth,
136
+ 0
137
+ );
128
138
  if (childTotalWidth <= wrapWidth) {
129
139
  if (childs.length === 1) {
130
- childs[0].style.borderRadius = "4px";
131
- }
132
- else {
133
- childs[0].style.borderRadius = "4px 0 0 4px";
134
- childs[childs.length - 1].style.borderRadius = "0 4px 4px 0";
140
+ childs[0].style.borderRadius = '4px';
141
+ } else {
142
+ childs[0].style.borderRadius = '4px 0 0 4px';
143
+ childs[childs.length - 1].style.borderRadius = '0 4px 4px 0';
135
144
  childs.forEach((child, idx) => {
136
145
  idx !== 0 && (child.style.borderLeftWidth = '0');
137
146
  });
138
147
  }
139
- }
140
- else {
148
+ } else {
141
149
  let curRowWidth = 0;
142
150
  let curRow = 0;
143
151
  const rowNum = Math.floor(childTotalWidth / wrapWidth);
@@ -157,34 +165,32 @@ export default class CheckboxesControl extends React.Component<
157
165
  }
158
166
  rowColArr[curRow].push(child);
159
167
  });
160
-
168
+
161
169
  rowColArr.forEach((row: HTMLElement[], rowIdx: number) => {
162
170
  if (rowIdx === 0) {
163
171
  row.forEach((r: HTMLElement, colIdx: number) => {
164
172
  r.style.borderRadius = '0';
165
173
  colIdx !== 0 && (r.style.borderLeftWidth = '0');
166
- row.length > rowColArr[rowIdx + 1].length
167
- && (row[row.length - 1].style.borderBottomRightRadius = "4px");
174
+ row.length > rowColArr[rowIdx + 1].length &&
175
+ (row[row.length - 1].style.borderBottomRightRadius = '4px');
168
176
  });
169
- row[0].style.borderTopLeftRadius = "4px";
170
- row[row.length - 1].style.borderTopRightRadius = "4px";
171
- }
172
- else if (rowIdx === rowNum) {
177
+ row[0].style.borderTopLeftRadius = '4px';
178
+ row[row.length - 1].style.borderTopRightRadius = '4px';
179
+ } else if (rowIdx === rowNum) {
173
180
  row.forEach((r: HTMLElement, colIdx: number) => {
174
181
  r.style.borderRadius = '0';
175
182
  colIdx !== 0 && (r.style.borderLeftWidth = '0');
176
183
  r.style.borderTopWidth = '0';
177
- row[0].style.borderBottomLeftRadius = "4px";
178
- row[row.length - 1].style.borderBottomRightRadius = "4px";
184
+ row[0].style.borderBottomLeftRadius = '4px';
185
+ row[row.length - 1].style.borderBottomRightRadius = '4px';
179
186
  });
180
- }
181
- else {
187
+ } else {
182
188
  row.forEach((r: HTMLElement, colIdx: number) => {
183
189
  r.style.borderRadius = '0';
184
190
  colIdx !== 0 && (r.style.borderLeftWidth = '0');
185
191
  r.style.borderTopWidth = '0';
186
- row.length > rowColArr[rowIdx + 1].length
187
- && (row[row.length - 1].style.borderBottomRightRadius = "4px");
192
+ row.length > rowColArr[rowIdx + 1].length &&
193
+ (row[row.length - 1].style.borderBottomRightRadius = '4px');
188
194
  });
189
195
  }
190
196
  });
@@ -434,7 +434,7 @@ export default class ComboControl extends React.Component<ComboProps> {
434
434
  }
435
435
 
436
436
  getValueAsArray(props = this.props) {
437
- const {flat, joinValues, delimiter} = props;
437
+ const {flat, joinValues, delimiter, type} = props;
438
438
  let value = props.value;
439
439
 
440
440
  if (joinValues && flat && typeof value === 'string') {
@@ -581,7 +581,7 @@ export default class ComboControl extends React.Component<ComboProps> {
581
581
  }
582
582
 
583
583
  handleChange(values: any, diff: any, {index}: any) {
584
- const {flat, store, joinValues, delimiter, disabled, submitOnChange} =
584
+ const {flat, store, joinValues, delimiter, disabled, submitOnChange, type} =
585
585
  this.props;
586
586
 
587
587
  if (disabled) {
@@ -595,7 +595,23 @@ export default class ComboControl extends React.Component<ComboProps> {
595
595
  value = value.join(delimiter || ',');
596
596
  }
597
597
 
598
- this.props.onChange(value, submitOnChange, true);
598
+ if (type === 'input-kv') {
599
+ let hasDuplicateKey = false;
600
+ const keys: {[key: string]: boolean} = {};
601
+ for (const item of value) {
602
+ if (keys[item.key]) {
603
+ hasDuplicateKey = true;
604
+ } else {
605
+ keys[item.key] = true;
606
+ }
607
+ }
608
+ // 有重复值就不触发修改,因为 KV 模式下无法支持重复值
609
+ if (!hasDuplicateKey) {
610
+ this.props.onChange(value, submitOnChange, true);
611
+ }
612
+ } else {
613
+ this.props.onChange(value, submitOnChange, true);
614
+ }
599
615
 
600
616
  store.forms.forEach(
601
617
  form =>
@@ -1246,7 +1262,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1246
1262
  closeOnClick: true
1247
1263
  },
1248
1264
  {
1249
- buttons: conditions.map(item => ({
1265
+ buttons: conditions?.map(item => ({
1250
1266
  label: item.label,
1251
1267
  onClick: (e: any) => {
1252
1268
  this.addItemWith(item);
@@ -112,6 +112,11 @@ export interface EditorControlSchema extends Omit<FormBaseControl, 'size'> {
112
112
  * 是否展示全屏模式开关
113
113
  */
114
114
  allowFullscreen?: boolean;
115
+
116
+ /**
117
+ * 获取编辑器底层实例
118
+ */
119
+ editorDidMount?: string;
115
120
  }
116
121
 
117
122
  export type EditorRendererEvent = 'blur' | 'focus';
@@ -195,7 +200,16 @@ export default class EditorControl extends React.Component<EditorProps, any> {
195
200
  ); // folding
196
201
  }).dispose
197
202
  );
198
- this.props.editorDidMount && this.props.editorDidMount(editor, monaco);
203
+ if (this.props.editorDidMount) {
204
+ let editorDidMount = this.props.editorDidMount;
205
+ if (typeof editorDidMount === 'string') {
206
+ editorDidMount = new Function('editor', 'monaco');
207
+ }
208
+ const dispose = editorDidMount(editor, monaco);
209
+ if (typeof dispose === 'function') {
210
+ this.toDispose.push(dispose);
211
+ }
212
+ }
199
213
  }
200
214
 
201
215
  prevHeight = 0;
@@ -115,7 +115,7 @@ export default class ExcelControl extends React.PureComponent<
115
115
  */
116
116
  readWorksheet(worksheet: any) {
117
117
  const result: any[] = [];
118
- const {parseMode, plainText} = this.props;
118
+ const {parseMode, plainText, includeEmpty} = this.props;
119
119
 
120
120
  if (parseMode === 'array') {
121
121
  worksheet.eachRow((row: any, rowNumber: number) => {
@@ -132,6 +132,11 @@ export default class ExcelControl extends React.PureComponent<
132
132
  firstRowValues = row.values;
133
133
  } else {
134
134
  const data: any = {};
135
+ if (includeEmpty) {
136
+ firstRowValues.forEach((item: any) => {
137
+ data[item] = '';
138
+ });
139
+ }
135
140
  row.eachCell((cell: any, colNumber: any) => {
136
141
  if (firstRowValues[colNumber]) {
137
142
  let value = cell.value;
@@ -1356,8 +1356,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1356
1356
  <Button
1357
1357
  level="default"
1358
1358
  disabled={disabled}
1359
- className={cx('FileControl-selectBtn', {
1360
- btnClassName,
1359
+ className={cx('FileControl-selectBtn', btnClassName, {
1361
1360
  'is-disabled':
1362
1361
  multiple && !!maxLength && files.length >= maxLength
1363
1362
  })}