amis 1.4.0 → 1.4.2-beta.12

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 (520) hide show
  1. package/README.md +1 -1
  2. package/lib/Schema.d.ts +26 -2
  3. package/lib/Schema.js.map +1 -1
  4. package/lib/components/Alert.js +3 -1
  5. package/lib/components/Alert.js.map +2 -2
  6. package/lib/components/AnchorNav.d.ts +22 -21
  7. package/lib/components/AnchorNav.js +7 -3
  8. package/lib/components/AnchorNav.js.map +2 -2
  9. package/lib/components/ArrayInput.d.ts +84 -84
  10. package/lib/components/AssociatedSelection.d.ts +930 -0
  11. package/lib/components/AssociatedSelection.js +89 -0
  12. package/lib/components/AssociatedSelection.js.map +13 -0
  13. package/lib/components/Badge.d.ts +4 -3
  14. package/lib/components/Badge.js +42 -7
  15. package/lib/components/Badge.js.map +2 -2
  16. package/lib/components/Button.d.ts +24 -22
  17. package/lib/components/Button.js +13 -7
  18. package/lib/components/Button.js.map +2 -2
  19. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  20. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  21. package/lib/components/ChainedSelection.js.map +13 -0
  22. package/lib/components/Collapse.js +1 -1
  23. package/lib/components/Collapse.js.map +2 -2
  24. package/lib/components/ColorPicker.d.ts +84 -84
  25. package/lib/components/DatePicker.d.ts +84 -84
  26. package/lib/components/DatePicker.js +1 -1
  27. package/lib/components/DatePicker.js.map +2 -2
  28. package/lib/components/DateRangePicker.d.ts +84 -84
  29. package/lib/components/DateRangePicker.js +1 -1
  30. package/lib/components/DateRangePicker.js.map +2 -2
  31. package/lib/components/Editor.d.ts +84 -84
  32. package/lib/components/GroupedSelection.d.ts +907 -0
  33. package/lib/components/GroupedSelection.js +48 -0
  34. package/lib/components/GroupedSelection.js.map +13 -0
  35. package/lib/components/InputBox.js +1 -1
  36. package/lib/components/InputBox.js.map +2 -2
  37. package/lib/components/Link.d.ts +84 -0
  38. package/lib/components/Link.js +43 -0
  39. package/lib/components/Link.js.map +13 -0
  40. package/lib/components/ListGroup.d.ts +21 -21
  41. package/lib/components/ModalManager.js +1 -1
  42. package/lib/components/ModalManager.js.map +2 -2
  43. package/lib/components/MonthRangePicker.d.ts +84 -84
  44. package/lib/components/MonthRangePicker.js +1 -1
  45. package/lib/components/MonthRangePicker.js.map +2 -2
  46. package/lib/components/NumberInput.d.ts +20 -20
  47. package/lib/components/PickerColumn.d.ts +514 -0
  48. package/lib/components/PickerColumn.js +279 -0
  49. package/lib/components/PickerColumn.js.map +13 -0
  50. package/lib/components/PickerContainer.d.ts +513 -0
  51. package/lib/components/PickerContainer.js +96 -0
  52. package/lib/components/PickerContainer.js.map +13 -0
  53. package/lib/components/Radios.d.ts +22 -21
  54. package/lib/components/Radios.js +1 -0
  55. package/lib/components/Radios.js.map +2 -2
  56. package/lib/components/Rating.d.ts +21 -21
  57. package/lib/components/ResultBox.d.ts +84 -84
  58. package/lib/components/RichText.d.ts +6 -1
  59. package/lib/components/RichText.js +207 -8
  60. package/lib/components/RichText.js.map +2 -2
  61. package/lib/components/SearchBox.d.ts +84 -84
  62. package/lib/components/SearchBox.js +4 -4
  63. package/lib/components/SearchBox.js.map +2 -2
  64. package/lib/components/Select.d.ts +245 -237
  65. package/lib/components/Select.js +28 -4
  66. package/lib/components/Select.js.map +2 -2
  67. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  68. package/lib/components/Selection.js +134 -0
  69. package/lib/components/Selection.js.map +13 -0
  70. package/lib/components/SparkLine.d.ts +85 -84
  71. package/lib/components/SparkLine.js +2 -2
  72. package/lib/components/SparkLine.js.map +2 -2
  73. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  74. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  75. package/lib/components/TableSelection.js.map +13 -0
  76. package/lib/components/Tabs.d.ts +20 -20
  77. package/lib/components/TabsTransfer.d.ts +84 -84
  78. package/lib/components/TabsTransfer.js +9 -9
  79. package/lib/components/TabsTransfer.js.map +2 -2
  80. package/lib/components/TabsTransferPicker.d.ts +489 -0
  81. package/lib/components/TabsTransferPicker.js +60 -0
  82. package/lib/components/TabsTransferPicker.js.map +13 -0
  83. package/lib/components/Toast.js +2 -2
  84. package/lib/components/Toast.js.map +2 -2
  85. package/lib/components/Transfer.d.ts +908 -274
  86. package/lib/components/Transfer.js +31 -24
  87. package/lib/components/Transfer.js.map +2 -2
  88. package/lib/components/TransferDropDown.d.ts +487 -0
  89. package/lib/components/TransferDropDown.js +59 -0
  90. package/lib/components/TransferDropDown.js.map +13 -0
  91. package/lib/components/TransferPicker.d.ts +489 -0
  92. package/lib/components/TransferPicker.js +60 -0
  93. package/lib/components/TransferPicker.js.map +13 -0
  94. package/lib/components/Tree.d.ts +84 -84
  95. package/lib/components/Tree.js +5 -3
  96. package/lib/components/Tree.js.map +2 -2
  97. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  98. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  99. package/lib/components/TreeSelection.js.map +13 -0
  100. package/lib/components/WithRemoteConfig.js +1 -1
  101. package/lib/components/WithRemoteConfig.js.map +2 -2
  102. package/lib/components/calendar/DaysView.js +2 -2
  103. package/lib/components/calendar/DaysView.js.map +2 -2
  104. package/lib/components/condition-builder/Field.js +5 -2
  105. package/lib/components/condition-builder/Field.js.map +2 -2
  106. package/lib/components/condition-builder/Func.js +2 -2
  107. package/lib/components/condition-builder/Func.js.map +2 -2
  108. package/lib/components/condition-builder/InputSwitch.js +2 -2
  109. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  110. package/lib/components/condition-builder/Item.js +3 -3
  111. package/lib/components/condition-builder/Item.js.map +2 -2
  112. package/lib/components/icons.js +14 -0
  113. package/lib/components/icons.js.map +2 -2
  114. package/lib/components/index.d.ts +8 -8
  115. package/lib/components/index.js +16 -16
  116. package/lib/components/index.js.map +2 -2
  117. package/lib/envOverwrite.js.map +2 -2
  118. package/lib/factory.d.ts +4 -0
  119. package/lib/factory.js +4 -2
  120. package/lib/factory.js.map +2 -2
  121. package/lib/helper.css.map +1 -1
  122. package/lib/hooks/index.d.ts +5 -0
  123. package/lib/hooks/index.js +14 -0
  124. package/lib/hooks/index.js.map +13 -0
  125. package/lib/hooks/use-set-state.d.ts +2 -0
  126. package/lib/hooks/use-set-state.js +15 -0
  127. package/lib/hooks/use-set-state.js.map +13 -0
  128. package/lib/hooks/use-touch.d.ts +16 -0
  129. package/lib/hooks/use-touch.js +73 -0
  130. package/lib/hooks/use-touch.js.map +13 -0
  131. package/lib/hooks/use-update-effect.d.ts +3 -0
  132. package/lib/hooks/use-update-effect.js +17 -0
  133. package/lib/hooks/use-update-effect.js.map +13 -0
  134. package/lib/icons/clock.js +10 -0
  135. package/lib/icons/loading-outline.js +7 -0
  136. package/lib/icons/status-close.js +11 -0
  137. package/lib/icons/status-fail.js +11 -0
  138. package/lib/icons/status-info.js +10 -0
  139. package/lib/icons/status-success.js +11 -0
  140. package/lib/icons/status-warning.js +10 -0
  141. package/lib/index.d.ts +3 -0
  142. package/lib/index.js +4 -1
  143. package/lib/index.js.map +2 -2
  144. package/lib/locale/de-DE.js +4 -0
  145. package/lib/locale/de-DE.js.map +2 -2
  146. package/lib/locale/en-US.js +4 -0
  147. package/lib/locale/en-US.js.map +2 -2
  148. package/lib/locale/zh-CN.js +7 -3
  149. package/lib/locale/zh-CN.js.map +2 -2
  150. package/lib/renderers/Action.d.ts +17 -1
  151. package/lib/renderers/Action.js +21 -8
  152. package/lib/renderers/Action.js.map +2 -2
  153. package/lib/renderers/AnchorNav.d.ts +1 -0
  154. package/lib/renderers/AnchorNav.js +2 -2
  155. package/lib/renderers/AnchorNav.js.map +2 -2
  156. package/lib/renderers/Avatar.js +3 -3
  157. package/lib/renderers/Avatar.js.map +2 -2
  158. package/lib/renderers/Breadcrumb.js +1 -1
  159. package/lib/renderers/Breadcrumb.js.map +2 -2
  160. package/lib/renderers/CRUD.d.ts +9 -0
  161. package/lib/renderers/CRUD.js +43 -8
  162. package/lib/renderers/CRUD.js.map +2 -2
  163. package/lib/renderers/Card.d.ts +4 -0
  164. package/lib/renderers/Card.js +29 -23
  165. package/lib/renderers/Card.js.map +2 -2
  166. package/lib/renderers/Chart.js +1 -1
  167. package/lib/renderers/Chart.js.map +2 -2
  168. package/lib/renderers/Collapse.js +3 -2
  169. package/lib/renderers/Collapse.js.map +2 -2
  170. package/lib/renderers/Dialog.js +0 -3
  171. package/lib/renderers/Dialog.js.map +2 -2
  172. package/lib/renderers/Drawer.js +0 -3
  173. package/lib/renderers/Drawer.js.map +2 -2
  174. package/lib/renderers/DropDownButton.d.ts +9 -1
  175. package/lib/renderers/DropDownButton.js +8 -4
  176. package/lib/renderers/DropDownButton.js.map +2 -2
  177. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  178. package/lib/renderers/Form/Checkbox.js +4 -0
  179. package/lib/renderers/Form/Checkbox.js.map +2 -2
  180. package/lib/renderers/Form/Combo.js +2 -2
  181. package/lib/renderers/Form/Combo.js.map +2 -2
  182. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  183. package/lib/renderers/Form/Editor.d.ts +3 -2
  184. package/lib/renderers/Form/InputCity.d.ts +84 -84
  185. package/lib/renderers/Form/InputCity.js +7 -6
  186. package/lib/renderers/Form/InputCity.js.map +2 -2
  187. package/lib/renderers/Form/InputColor.d.ts +84 -84
  188. package/lib/renderers/Form/InputFile.js +12 -6
  189. package/lib/renderers/Form/InputFile.js.map +2 -2
  190. package/lib/renderers/Form/InputImage.js +16 -7
  191. package/lib/renderers/Form/InputImage.js.map +2 -2
  192. package/lib/renderers/Form/Item.d.ts +1 -1
  193. package/lib/renderers/Form/Item.js.map +1 -1
  194. package/lib/renderers/Form/Options.js +19 -6
  195. package/lib/renderers/Form/Options.js.map +2 -2
  196. package/lib/renderers/Form/Picker.js +2 -2
  197. package/lib/renderers/Form/Picker.js.map +2 -2
  198. package/lib/renderers/Form/Select.d.ts +41 -4
  199. package/lib/renderers/Form/Select.js +37 -3
  200. package/lib/renderers/Form/Select.js.map +2 -2
  201. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  202. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  203. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  204. package/lib/renderers/Form/Transfer.js +18 -3
  205. package/lib/renderers/Form/Transfer.js.map +2 -2
  206. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  207. package/lib/renderers/Form/TransferPicker.js +43 -0
  208. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  209. package/lib/renderers/Form/TreeSelect.js +2 -2
  210. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  211. package/lib/renderers/Form/index.d.ts +5 -0
  212. package/lib/renderers/Form/index.js +5 -3
  213. package/lib/renderers/Form/index.js.map +2 -2
  214. package/lib/renderers/Form/wrapControl.js +15 -3
  215. package/lib/renderers/Form/wrapControl.js.map +2 -2
  216. package/lib/renderers/IFrame.js +3 -5
  217. package/lib/renderers/IFrame.js.map +2 -2
  218. package/lib/renderers/Image.d.ts +1 -0
  219. package/lib/renderers/Image.js +15 -1
  220. package/lib/renderers/Image.js.map +2 -2
  221. package/lib/renderers/Json.d.ts +4 -0
  222. package/lib/renderers/Json.js +4 -13
  223. package/lib/renderers/Json.js.map +2 -2
  224. package/lib/renderers/Link.d.ts +18 -3
  225. package/lib/renderers/Link.js +27 -15
  226. package/lib/renderers/Link.js.map +2 -2
  227. package/lib/renderers/List.js +1 -1
  228. package/lib/renderers/List.js.map +2 -2
  229. package/lib/renderers/Log.d.ts +2 -2
  230. package/lib/renderers/Log.js +7 -1
  231. package/lib/renderers/Log.js.map +2 -2
  232. package/lib/renderers/Mapping.d.ts +9 -2
  233. package/lib/renderers/Mapping.js +18 -6
  234. package/lib/renderers/Mapping.js.map +2 -2
  235. package/lib/renderers/Nav.d.ts +81 -25
  236. package/lib/renderers/Nav.js +292 -31
  237. package/lib/renderers/Nav.js.map +2 -2
  238. package/lib/renderers/Page.js +1 -1
  239. package/lib/renderers/Page.js.map +2 -2
  240. package/lib/renderers/Portlet.d.ts +125 -0
  241. package/lib/renderers/Portlet.js +156 -0
  242. package/lib/renderers/Portlet.js.map +13 -0
  243. package/lib/renderers/Property.js +2 -1
  244. package/lib/renderers/Property.js.map +2 -2
  245. package/lib/renderers/SearchBox.d.ts +6 -1
  246. package/lib/renderers/SearchBox.js +19 -5
  247. package/lib/renderers/SearchBox.js.map +2 -2
  248. package/lib/renderers/SparkLine.d.ts +4 -0
  249. package/lib/renderers/SparkLine.js.map +2 -2
  250. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  251. package/lib/renderers/Table/ColumnToggler.js +216 -0
  252. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  253. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  254. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  255. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  256. package/lib/renderers/Table/TableBody.d.ts +4 -0
  257. package/lib/renderers/Table/TableCell.js +3 -1
  258. package/lib/renderers/Table/TableCell.js.map +2 -2
  259. package/lib/renderers/Table/TableContent.d.ts +4 -1
  260. package/lib/renderers/Table/TableContent.js +21 -1
  261. package/lib/renderers/Table/TableContent.js.map +2 -2
  262. package/lib/renderers/Table/index.d.ts +19 -2
  263. package/lib/renderers/Table/index.js +172 -57
  264. package/lib/renderers/Table/index.js.map +2 -2
  265. package/lib/renderers/Tabs.js +9 -1
  266. package/lib/renderers/Tabs.js.map +2 -2
  267. package/lib/renderers/WebComponent.js +1 -1
  268. package/lib/renderers/WebComponent.js.map +2 -2
  269. package/lib/store/combo.d.ts +2 -16
  270. package/lib/store/crud.js +3 -7
  271. package/lib/store/crud.js.map +2 -2
  272. package/lib/store/form.d.ts +1 -1
  273. package/lib/store/form.js +5 -6
  274. package/lib/store/form.js.map +2 -2
  275. package/lib/store/service.js +5 -4
  276. package/lib/store/service.js.map +2 -2
  277. package/lib/store/table.d.ts +260 -3
  278. package/lib/store/table.js +64 -6
  279. package/lib/store/table.js.map +2 -2
  280. package/lib/themes/ang-ie11.css +1175 -255
  281. package/lib/themes/ang.css +1175 -255
  282. package/lib/themes/ang.css.map +1 -1
  283. package/lib/themes/antd-ie11.css +1175 -255
  284. package/lib/themes/antd.css +1175 -255
  285. package/lib/themes/antd.css.map +1 -1
  286. package/lib/themes/cxd-ie11.css +1761 -514
  287. package/lib/themes/cxd.css +1761 -514
  288. package/lib/themes/cxd.css.map +1 -1
  289. package/lib/themes/dark-ie11.css +1175 -255
  290. package/lib/themes/dark.css +1175 -255
  291. package/lib/themes/dark.css.map +1 -1
  292. package/lib/themes/default.css +1761 -514
  293. package/lib/themes/default.css.map +1 -1
  294. package/lib/types.d.ts +37 -0
  295. package/lib/types.js +0 -5
  296. package/lib/types.js.map +2 -2
  297. package/lib/utils/api.d.ts +3 -2
  298. package/lib/utils/api.js +31 -15
  299. package/lib/utils/api.js.map +2 -2
  300. package/lib/utils/dom.d.ts +4 -0
  301. package/lib/utils/dom.js +11 -1
  302. package/lib/utils/dom.js.map +2 -2
  303. package/lib/utils/handleAction.d.ts +7 -0
  304. package/lib/utils/handleAction.js +30 -0
  305. package/lib/utils/handleAction.js.map +13 -0
  306. package/lib/utils/helper.d.ts +3 -1
  307. package/lib/utils/helper.js +14 -5
  308. package/lib/utils/helper.js.map +2 -2
  309. package/lib/utils/icon.js +3 -0
  310. package/lib/utils/icon.js.map +2 -2
  311. package/lib/utils/tpl-builtin.d.ts +1 -1
  312. package/lib/utils/tpl-builtin.js +25 -15
  313. package/lib/utils/tpl-builtin.js.map +2 -2
  314. package/package.json +1 -2
  315. package/schema.json +3534 -1028
  316. package/scss/_mixins.scss +27 -0
  317. package/scss/_properties.scss +84 -13
  318. package/scss/_utilities.scss +4 -0
  319. package/scss/base/_normalize.scss +2 -0
  320. package/scss/components/_anchor-nav.scss +88 -29
  321. package/scss/components/_badge.scss +52 -1
  322. package/scss/components/_button.scss +34 -3
  323. package/scss/components/_card.scss +8 -14
  324. package/scss/components/_collapse.scss +41 -8
  325. package/scss/components/_column-toggler.scss +234 -0
  326. package/scss/components/_dropdown.scss +2 -1
  327. package/scss/components/_image-gallery.scss +1 -1
  328. package/scss/components/_images.scss +2 -1
  329. package/scss/components/_link.scss +6 -0
  330. package/scss/components/_mapping.scss +6 -0
  331. package/scss/components/_nav.scss +236 -154
  332. package/scss/components/_page.scss +5 -4
  333. package/scss/components/_picker-columns.scss +123 -0
  334. package/scss/components/_popover.scss +17 -0
  335. package/scss/components/_portlet.scss +51 -0
  336. package/scss/components/_progress.scss +2 -0
  337. package/scss/components/_status.scss +1 -1
  338. package/scss/components/_steps.scss +1 -1
  339. package/scss/components/_table.scss +51 -1
  340. package/scss/components/form/_checks.scss +0 -351
  341. package/scss/components/form/_color.scss +1 -0
  342. package/scss/components/form/_date-range.scss +2 -0
  343. package/scss/components/form/_date.scss +2 -0
  344. package/scss/components/form/_fieldset.scss +6 -3
  345. package/scss/components/form/_file.scss +5 -4
  346. package/scss/components/form/_form.scss +48 -0
  347. package/scss/components/form/_image.scss +7 -2
  348. package/scss/components/form/_list.scss +1 -0
  349. package/scss/components/form/_location.scss +1 -1
  350. package/scss/components/form/_selection.scss +354 -0
  351. package/scss/components/form/_text.scss +13 -0
  352. package/scss/components/form/_textarea.scss +10 -0
  353. package/scss/components/form/_transfer.scss +77 -18
  354. package/scss/themes/_common.scss +6 -0
  355. package/scss/themes/_cxd-colors.scss +56 -0
  356. package/scss/themes/_cxd-variables.scss +219 -91
  357. package/scss/themes/cxd.scss +370 -0
  358. package/sdk/ang-ie11.css +1596 -515
  359. package/sdk/ang.css +1395 -256
  360. package/sdk/antd-ie11.css +1397 -318
  361. package/sdk/antd.css +1395 -256
  362. package/sdk/charts.js +13 -13
  363. package/sdk/color-picker.js +65 -65
  364. package/sdk/cropperjs.js +2 -2
  365. package/sdk/cxd-ie11.css +2739 -1361
  366. package/sdk/cxd.css +2095 -588
  367. package/sdk/dark-ie11.css +1593 -512
  368. package/sdk/dark.css +1395 -256
  369. package/sdk/exceljs.js +1 -1
  370. package/sdk/helper.css.map +1 -1
  371. package/sdk/iconfont.svg +2513 -0
  372. package/sdk/iconfont.ttf +0 -0
  373. package/sdk/iconfont.woff +0 -0
  374. package/sdk/ie11-patch.css +1 -0
  375. package/sdk/locale/de-DE.js +4 -0
  376. package/sdk/markdown.js +69 -69
  377. package/sdk/papaparse.js +1 -1
  378. package/sdk/renderers/Form/CityDB.js +1 -1
  379. package/sdk/rest.js +18 -32
  380. package/sdk/rich-text.js +62 -64
  381. package/sdk/sdk-ie11.css +2739 -1361
  382. package/sdk/sdk.css +2095 -588
  383. package/sdk/sdk.js +1189 -1133
  384. package/sdk/thirds/hls.js/hls.js +1 -1
  385. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  386. package/sdk/tinymce.js +57 -57
  387. package/src/Schema.ts +32 -0
  388. package/src/components/Alert.tsx +3 -1
  389. package/src/components/AnchorNav.tsx +15 -4
  390. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  391. package/src/components/Badge.tsx +96 -28
  392. package/src/components/Button.tsx +23 -7
  393. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  394. package/src/components/Collapse.tsx +14 -9
  395. package/src/components/DatePicker.tsx +1 -1
  396. package/src/components/DateRangePicker.tsx +23 -11
  397. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  398. package/src/components/InputBox.tsx +1 -1
  399. package/src/components/Link.tsx +85 -0
  400. package/src/components/ModalManager.ts +1 -1
  401. package/src/components/MonthRangePicker.tsx +10 -2
  402. package/src/components/PickerColumn.tsx +429 -0
  403. package/src/components/PickerContainer.tsx +128 -0
  404. package/src/components/Radios.tsx +3 -8
  405. package/src/components/RichText.tsx +244 -3
  406. package/src/components/SearchBox.tsx +4 -5
  407. package/src/components/Select.tsx +60 -5
  408. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  409. package/src/components/SparkLine.tsx +4 -1
  410. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  411. package/src/components/TabsTransfer.tsx +13 -7
  412. package/src/components/TabsTransferPicker.tsx +85 -0
  413. package/src/components/Toast.tsx +5 -5
  414. package/src/components/Transfer.tsx +71 -50
  415. package/src/components/TransferDropDown.tsx +117 -0
  416. package/src/components/TransferPicker.tsx +84 -0
  417. package/src/components/Tree.tsx +6 -8
  418. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  419. package/src/components/WithRemoteConfig.tsx +7 -2
  420. package/src/components/calendar/DaysView.tsx +2 -2
  421. package/src/components/condition-builder/Field.tsx +5 -5
  422. package/src/components/condition-builder/Func.tsx +3 -3
  423. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  424. package/src/components/condition-builder/Item.tsx +5 -12
  425. package/src/components/icons.tsx +15 -0
  426. package/src/components/index.tsx +13 -13
  427. package/src/envOverwrite.ts +0 -1
  428. package/src/factory.tsx +18 -3
  429. package/src/hooks/index.ts +5 -0
  430. package/src/hooks/use-set-state.ts +19 -0
  431. package/src/hooks/use-touch.ts +100 -0
  432. package/src/hooks/use-update-effect.ts +16 -0
  433. package/src/icons/clock.svg +1 -0
  434. package/src/icons/loading-outline.svg +4 -0
  435. package/src/icons/status-close.svg +10 -0
  436. package/src/icons/status-fail.svg +10 -0
  437. package/src/icons/status-info.svg +8 -0
  438. package/src/icons/status-success.svg +10 -0
  439. package/src/icons/status-warning.svg +8 -0
  440. package/src/index.tsx +3 -0
  441. package/src/locale/de-DE.ts +4 -0
  442. package/src/locale/en-US.ts +4 -0
  443. package/src/locale/zh-CN.ts +7 -3
  444. package/src/renderers/Action.tsx +99 -15
  445. package/src/renderers/AnchorNav.tsx +4 -0
  446. package/src/renderers/Avatar.tsx +8 -4
  447. package/src/renderers/Breadcrumb.tsx +5 -1
  448. package/src/renderers/CRUD.tsx +63 -28
  449. package/src/renderers/Card.tsx +63 -34
  450. package/src/renderers/Chart.tsx +6 -2
  451. package/src/renderers/Collapse.tsx +4 -2
  452. package/src/renderers/Dialog.tsx +0 -4
  453. package/src/renderers/Drawer.tsx +0 -4
  454. package/src/renderers/DropDownButton.tsx +26 -12
  455. package/src/renderers/Form/Checkbox.tsx +8 -0
  456. package/src/renderers/Form/Combo.tsx +2 -3
  457. package/src/renderers/Form/InputCity.tsx +4 -8
  458. package/src/renderers/Form/InputFile.tsx +30 -20
  459. package/src/renderers/Form/InputImage.tsx +16 -5
  460. package/src/renderers/Form/Item.tsx +1 -1
  461. package/src/renderers/Form/Options.tsx +32 -7
  462. package/src/renderers/Form/Picker.tsx +3 -2
  463. package/src/renderers/Form/Select.tsx +158 -21
  464. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  465. package/src/renderers/Form/Transfer.tsx +19 -4
  466. package/src/renderers/Form/TransferPicker.tsx +139 -0
  467. package/src/renderers/Form/TreeSelect.tsx +25 -0
  468. package/src/renderers/Form/index.tsx +16 -2
  469. package/src/renderers/Form/wrapControl.tsx +28 -3
  470. package/src/renderers/IFrame.tsx +4 -5
  471. package/src/renderers/Image.tsx +10 -0
  472. package/src/renderers/Json.tsx +9 -9
  473. package/src/renderers/Link.tsx +53 -14
  474. package/src/renderers/List.tsx +1 -1
  475. package/src/renderers/Log.tsx +16 -3
  476. package/src/renderers/Mapping.tsx +27 -11
  477. package/src/renderers/Nav.tsx +392 -60
  478. package/src/renderers/Page.tsx +1 -1
  479. package/src/renderers/Portlet.tsx +423 -0
  480. package/src/renderers/Property.tsx +3 -2
  481. package/src/renderers/SearchBox.tsx +23 -4
  482. package/src/renderers/SparkLine.tsx +5 -0
  483. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  484. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  485. package/src/renderers/Table/TableCell.tsx +16 -1
  486. package/src/renderers/Table/TableContent.tsx +40 -2
  487. package/src/renderers/Table/index.tsx +257 -80
  488. package/src/renderers/Tabs.tsx +9 -1
  489. package/src/renderers/WebComponent.tsx +2 -2
  490. package/src/store/crud.ts +3 -8
  491. package/src/store/form.ts +5 -10
  492. package/src/store/service.ts +5 -4
  493. package/src/store/table.ts +94 -6
  494. package/src/types.ts +57 -0
  495. package/src/utils/api.ts +52 -23
  496. package/src/utils/dom.tsx +12 -0
  497. package/src/utils/handleAction.ts +41 -0
  498. package/src/utils/helper.ts +12 -3
  499. package/src/utils/icon.tsx +4 -0
  500. package/src/utils/tpl-builtin.ts +48 -17
  501. package/dump.rdb +0 -0
  502. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  503. package/lib/components/AssociatedCheckboxes.js +0 -90
  504. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  505. package/lib/components/ChainedCheckboxes.js.map +0 -13
  506. package/lib/components/Checkboxes.js +0 -101
  507. package/lib/components/Checkboxes.js.map +0 -13
  508. package/lib/components/ListCheckboxes.d.ts +0 -739
  509. package/lib/components/ListCheckboxes.js +0 -48
  510. package/lib/components/ListCheckboxes.js.map +0 -13
  511. package/lib/components/ListRadios.d.ts +0 -763
  512. package/lib/components/ListRadios.js +0 -86
  513. package/lib/components/ListRadios.js.map +0 -13
  514. package/lib/components/TableCheckboxes.js.map +0 -13
  515. package/lib/components/TreeCheckboxes.js.map +0 -13
  516. package/lib/components/TreeRadios.d.ts +0 -838
  517. package/lib/components/TreeRadios.js +0 -116
  518. package/lib/components/TreeRadios.js.map +0 -13
  519. package/src/components/ListRadios.tsx +0 -159
  520. package/src/components/TreeRadios.tsx +0 -202
@@ -166,6 +166,11 @@ export interface CardSchema extends BaseSchema {
166
166
  * 底部按钮集合。
167
167
  */
168
168
  actions?: Array<ActionSchema>;
169
+
170
+ /**
171
+ * 工具栏按钮
172
+ */
173
+ toolbar?: Array<ActionSchema>;
169
174
  }
170
175
 
171
176
  export interface CardProps
@@ -273,30 +278,47 @@ export class Card extends React.Component<CardProps> {
273
278
  multiple,
274
279
  hideCheckToggler,
275
280
  classnames: cx,
276
- classPrefix: ns
281
+ classPrefix: ns,
282
+ toolbar,
283
+ render
277
284
  } = this.props;
278
-
279
- if (dragging) {
280
- return (
281
- <div className={cx('Card-dragBtn')}>
282
- <Icon icon="drag-bar" className="icon" />
283
- </div>
285
+ const toolbars: Array<JSX.Element> = [];
286
+
287
+ if (selectable && !hideCheckToggler) {
288
+ toolbars.push(
289
+ <Checkbox
290
+ key="check"
291
+ className={cx('Card-checkbox')}
292
+ type={multiple ? 'checkbox' : 'radio'}
293
+ disabled={!checkable}
294
+ checked={selected}
295
+ onChange={checkOnItemClick ? noop : this.handleCheck}
296
+ />
284
297
  );
285
- } else if (selectable && !hideCheckToggler) {
286
- return (
287
- <div className={cx('Card-checkBtn')}>
288
- <Checkbox
289
- classPrefix={ns}
290
- type={multiple ? 'checkbox' : 'radio'}
291
- disabled={!checkable}
292
- checked={selected}
293
- onChange={checkOnItemClick ? noop : this.handleCheck}
294
- />
295
- </div>
298
+ }
299
+
300
+ if (Array.isArray(toolbar)) {
301
+ toolbar.forEach((action, index) =>
302
+ toolbars.push(
303
+ render(
304
+ `toolbar/${index}`,
305
+ {
306
+ type: 'button',
307
+ level: 'link',
308
+ size: 'sm',
309
+ ...(action as any)
310
+ },
311
+ {
312
+ key: index
313
+ }
314
+ )
315
+ )
296
316
  );
297
317
  }
298
318
 
299
- return null;
319
+ return toolbars.length ? (
320
+ <div className={cx('Card-toolbar')}>{toolbars}</div>
321
+ ) : null;
300
322
  }
301
323
 
302
324
  renderActions() {
@@ -451,12 +473,14 @@ export class Card extends React.Component<CardProps> {
451
473
  imageClassName,
452
474
  avatarTextClassName,
453
475
  href,
454
- itemAction
476
+ itemAction,
477
+ dragging
455
478
  } = this.props;
456
479
 
480
+ const toolbar = this.renderToolbar();
457
481
  let heading = null;
458
482
 
459
- if (header) {
483
+ if (header || toolbar) {
460
484
  const {
461
485
  highlight: highlightTpl,
462
486
  avatar: avatarTpl,
@@ -465,31 +489,31 @@ export class Card extends React.Component<CardProps> {
465
489
  subTitle: subTitleTpl,
466
490
  subTitlePlaceholder,
467
491
  desc: descTpl
468
- } = header;
492
+ } = header || {};
469
493
 
470
494
  const descPlaceholder =
471
- header.descriptionPlaceholder || header.descPlaceholder;
495
+ header?.descriptionPlaceholder || header?.descPlaceholder;
472
496
 
473
497
  const highlight = !!evalExpression(highlightTpl!, data as object);
474
498
  const avatar = filter(avatarTpl, data, '| raw');
475
499
  const avatarText = filter(avatarTextTpl, data);
476
500
  const title = filter(titleTpl, data);
477
501
  const subTitle = filter(subTitleTpl, data);
478
- const desc = filter(header.description || descTpl, data);
502
+ const desc = filter(header?.description || descTpl, data);
479
503
 
480
504
  heading = (
481
- <div className={cx('Card-heading', header.className)}>
505
+ <div className={cx('Card-heading', header?.className)}>
482
506
  {avatar ? (
483
507
  <span
484
508
  className={cx(
485
509
  'Card-avtar',
486
- header.avatarClassName || avatarClassName
510
+ header?.avatarClassName || avatarClassName
487
511
  )}
488
512
  >
489
513
  <img
490
514
  className={cx(
491
515
  'Card-img',
492
- header.imageClassName || imageClassName
516
+ header?.imageClassName || imageClassName
493
517
  )}
494
518
  src={avatar}
495
519
  />
@@ -498,7 +522,7 @@ export class Card extends React.Component<CardProps> {
498
522
  <span
499
523
  className={cx(
500
524
  'Card-avtarText',
501
- header.avatarTextClassName || avatarTextClassName
525
+ header?.avatarTextClassName || avatarTextClassName
502
526
  )}
503
527
  >
504
528
  {avatarText}
@@ -509,7 +533,7 @@ export class Card extends React.Component<CardProps> {
509
533
  <i
510
534
  className={cx(
511
535
  'Card-highlight',
512
- header.highlightClassName || highlightClassName
536
+ header?.highlightClassName || highlightClassName
513
537
  )}
514
538
  />
515
539
  ) : null}
@@ -518,7 +542,7 @@ export class Card extends React.Component<CardProps> {
518
542
  <div
519
543
  className={cx(
520
544
  'Card-title',
521
- header.titleClassName || titleClassName
545
+ header?.titleClassName || titleClassName
522
546
  )}
523
547
  >
524
548
  {render('title', title)}
@@ -529,7 +553,7 @@ export class Card extends React.Component<CardProps> {
529
553
  <div
530
554
  className={cx(
531
555
  'Card-subTitle',
532
- header.subTitleClassName || subTitleClassName
556
+ header?.subTitleClassName || subTitleClassName
533
557
  )}
534
558
  >
535
559
  {render('sub-title', subTitle || subTitlePlaceholder!, {
@@ -542,8 +566,8 @@ export class Card extends React.Component<CardProps> {
542
566
  <div
543
567
  className={cx(
544
568
  'Card-desc',
545
- header.descriptionClassName ||
546
- header.descClassName ||
569
+ header?.descriptionClassName ||
570
+ header?.descClassName ||
547
571
  descClassName
548
572
  )}
549
573
  >
@@ -553,6 +577,7 @@ export class Card extends React.Component<CardProps> {
553
577
  </div>
554
578
  ) : null}
555
579
  </div>
580
+ {toolbar}
556
581
  </div>
557
582
  );
558
583
  }
@@ -570,7 +595,11 @@ export class Card extends React.Component<CardProps> {
570
595
  'Card--link': href || itemAction
571
596
  })}
572
597
  >
573
- {this.renderToolbar()}
598
+ {dragging ? (
599
+ <div className={cx('Card-dragBtn')}>
600
+ <Icon icon="drag-bar" className="icon" />
601
+ </div>
602
+ ) : null}
574
603
  {heading}
575
604
  {body ? (
576
605
  <div className={cx('Card-body', bodyClassName)}>{body}</div>
@@ -12,7 +12,11 @@ import {
12
12
  isPureVariable,
13
13
  dataMapping
14
14
  } from '../utils/tpl-builtin';
15
- import {isApiOutdated, isEffectiveApi} from '../utils/api';
15
+ import {
16
+ isApiOutdated,
17
+ isEffectiveApi,
18
+ normalizeApiResponseData
19
+ } from '../utils/api';
16
20
  import {ScopedContext, IScopedContext} from '../Scoped';
17
21
  import {createObject, findObjectsWithKey} from '../utils/helper';
18
22
  import Spinner from '../components/Spinner';
@@ -342,7 +346,7 @@ export class Chart extends React.Component<ChartProps> {
342
346
  }
343
347
  delete this.reloadCancel;
344
348
 
345
- const data = result.data || {};
349
+ const data = normalizeApiResponseData(result.data);
346
350
  // 说明返回的是数据接口。
347
351
  if (!data.series && this.props.config) {
348
352
  const ctx = createObject(this.props.data, data);
@@ -176,8 +176,10 @@ export default class Collapse extends React.Component<
176
176
  onClick={this.toggleCollapsed}
177
177
  className={cx(`Collapse-header`, headingClassName)}
178
178
  >
179
- {render('heading', finalTitle)}
180
- {collapsable && <span className={cx('Collapse-arrow')} />}
179
+ <div className={cx('Collapse-header-wrapper')}>
180
+ {render('heading', finalTitle, {className: 'Collapse-header-tpl'})}
181
+ {collapsable && <span className={cx('Collapse-arrow')} />}
182
+ </div>
181
183
  </HeadingComponent>
182
184
  ) : null,
183
185
 
@@ -629,10 +629,6 @@ export class DialogRenderer extends Dialog {
629
629
  tryChildrenToHandle(action: Action, ctx: object, rawAction?: Action) {
630
630
  const scoped = this.context as IScopedContext;
631
631
 
632
- if (action.fromDialog) {
633
- return false;
634
- }
635
-
636
632
  const targets: Array<any> = [];
637
633
  const {onConfirm, store} = this.props;
638
634
 
@@ -687,10 +687,6 @@ export class DrawerRenderer extends Drawer {
687
687
  tryChildrenToHandle(action: Action, ctx: object, rawAction?: Action) {
688
688
  const scoped = this.context as IScopedContext;
689
689
 
690
- if (action.fromDialog) {
691
- return false;
692
- }
693
-
694
690
  const targets: Array<any> = [];
695
691
  const {onConfirm, store} = this.props;
696
692
 
@@ -7,10 +7,11 @@ import type {TooltipObject, Trigger} from '../components/TooltipWrapper';
7
7
  import {isDisabled, isVisible, noop} from '../utils/helper';
8
8
  import {filter} from '../utils/tpl';
9
9
  import {Icon} from '../components/icons';
10
- import {BaseSchema, SchemaClassName} from '../Schema';
10
+ import {BaseSchema, SchemaClassName, SchemaIcon} from '../Schema';
11
11
  import {ActionSchema} from './Action';
12
12
  import {DividerSchema} from './Divider';
13
13
  import {RootClose} from '../utils/RootClose';
14
+ import {generateIcon} from '../utils/icon';
14
15
 
15
16
  /**
16
17
  * 下拉按钮渲染器。
@@ -77,10 +78,20 @@ export interface DropdownButtonSchema extends BaseSchema {
77
78
  */
78
79
  iconOnly?: boolean;
79
80
 
81
+ /**
82
+ * 右侧图标
83
+ */
84
+ rightIcon?: SchemaIcon;
85
+
80
86
  /**
81
87
  * 触发条件,默认是 click
82
88
  */
83
89
  trigger?: 'click' | 'hover';
90
+
91
+ /**
92
+ * 是否显示下拉按钮
93
+ */
94
+ hideCaret?: boolean;
84
95
  }
85
96
 
86
97
  export interface DropDownButtonProps
@@ -270,11 +281,17 @@ export default class DropDownButton extends React.Component<
270
281
  align,
271
282
  iconOnly,
272
283
  icon,
284
+ rightIcon,
273
285
  isActived,
274
286
  trigger,
275
- data
287
+ data,
288
+ hideCaret
276
289
  } = this.props;
277
290
 
291
+ const iconElement = generateIcon(cx, icon, 'm-r-xs');
292
+
293
+ const rightIconElement = generateIcon(cx, rightIcon, 'm-l-xs');
294
+
278
295
  return (
279
296
  <div
280
297
  className={cx(
@@ -317,17 +334,14 @@ export default class DropDownButton extends React.Component<
317
334
  size ? `Button--${size}` : ''
318
335
  )}
319
336
  >
320
- {icon ? (
321
- typeof icon === 'string' ? (
322
- <i className={cx(icon, 'm-r-xs')} />
323
- ) : (
324
- icon
325
- )
326
- ) : null}
337
+ {iconElement}
327
338
  {typeof label === 'string' ? filter(label, data) : label}
328
- <span className={cx('DropDown-caret')}>
329
- <Icon icon="caret" className="icon" />
330
- </span>
339
+ {rightIconElement}
340
+ {!hideCaret ? (
341
+ <span className={cx('DropDown-caret')}>
342
+ <Icon icon="caret" className="icon" />
343
+ </span>
344
+ ) : null}
331
345
  </button>
332
346
  </TooltipWrapper>
333
347
  {this.state.isOpened ? this.renderOuter() : null}
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import {FormItem, FormControlProps, FormBaseControl} from './Item';
3
3
  import cx from 'classnames';
4
4
  import Checkbox from '../../components/Checkbox';
5
+ import {withBadge, BadgeSchema} from '../../components/Badge';
5
6
 
6
7
  /**
7
8
  * Checkbox 勾选框。
@@ -27,6 +28,11 @@ export interface CheckboxControlSchema extends FormBaseControl {
27
28
  * 选项说明
28
29
  */
29
30
  option?: string;
31
+
32
+ /**
33
+ * 角标
34
+ */
35
+ badge?: BadgeSchema;
30
36
  }
31
37
 
32
38
  export interface CheckboxProps
@@ -78,4 +84,6 @@ export default class CheckboxControl extends React.Component<
78
84
  type: 'checkbox',
79
85
  sizeMutable: false
80
86
  })
87
+ // @ts-ignore
88
+ @withBadge
81
89
  export class CheckboxControlRenderer extends CheckboxControl {}
@@ -251,7 +251,6 @@ export interface ComboControlSchema extends FormBaseControl {
251
251
  /**
252
252
  * 最大值验证错误提示
253
253
  */
254
-
255
254
  maxLengthValidateFailed?: string;
256
255
  };
257
256
  }
@@ -1010,7 +1009,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1010
1009
  {deleteIcon ? (
1011
1010
  <i className={deleteIcon} />
1012
1011
  ) : (
1013
- <Icon icon="close" className="icon" />
1012
+ <Icon icon="status-close" className="icon" />
1014
1013
  )}
1015
1014
  </div>
1016
1015
  );
@@ -1189,7 +1188,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1189
1188
  {deleteIcon ? (
1190
1189
  <i className={deleteIcon} />
1191
1190
  ) : (
1192
- <Icon icon="close" className="icon" />
1191
+ <Icon icon="status-close" className="icon" />
1193
1192
  )}
1194
1193
  </a>
1195
1194
  );
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import {FormItem, FormControlProps, FormBaseControl} from './Item';
3
3
  import {ClassNamesFn, themeable, ThemeProps} from '../../theme';
4
- import {Select, Spinner} from '../../components';
4
+ import Spinner from '../../components/Spinner';
5
+ import Select from '../../components/Select';
5
6
  import {autobind} from '../../utils/helper';
6
7
  import {Option} from './Options';
7
8
  import {localeable, LocaleProps} from '../../locale';
@@ -293,13 +294,8 @@ export class CityPicker extends React.Component<
293
294
 
294
295
  @autobind
295
296
  syncOut() {
296
- const {
297
- onChange,
298
- allowStreet,
299
- joinValues,
300
- extractValue,
301
- delimiter
302
- } = this.props;
297
+ const {onChange, allowStreet, joinValues, extractValue, delimiter} =
298
+ this.props;
303
299
 
304
300
  const {code, province, city, district, street} = this.state;
305
301
 
@@ -20,6 +20,7 @@ import {
20
20
  SchemaClassName,
21
21
  SchemaTokenizeableString
22
22
  } from '../../Schema';
23
+ import merge from 'lodash/merge';
23
24
 
24
25
  /**
25
26
  * File 文件上传控件
@@ -356,11 +357,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
356
357
  if (value && value instanceof Blob) {
357
358
  files = [value as any];
358
359
  } else if (value) {
359
- files = (Array.isArray(value)
360
- ? value
361
- : joinValues
362
- ? `${(value as any)[valueField] || value}`.split(delimiter)
363
- : [value as any]
360
+ files = (
361
+ Array.isArray(value)
362
+ ? value
363
+ : joinValues
364
+ ? `${(value as any)[valueField] || value}`.split(delimiter)
365
+ : [value as any]
364
366
  )
365
367
  .map(item => FileControl.valueToFile(item, props) as FileValue)
366
368
  .filter(item => item);
@@ -402,11 +404,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
402
404
  let files: Array<FileValue> = [];
403
405
 
404
406
  if (value) {
405
- files = (Array.isArray(value)
406
- ? value
407
- : joinValues && typeof value === 'string'
408
- ? value.split(delimiter)
409
- : [value as any]
407
+ files = (
408
+ Array.isArray(value)
409
+ ? value
410
+ : joinValues && typeof value === 'string'
411
+ ? value.split(delimiter)
412
+ : [value as any]
410
413
  )
411
414
  .map(item => {
412
415
  let obj = FileControl.valueToFile(
@@ -851,8 +854,8 @@ export default class FileControl extends React.Component<FileProps, FileState> {
851
854
  }
852
855
 
853
856
  syncAutoFill() {
854
- const {autoFill, multiple, onBulkChange} = this.props;
855
- if (!isEmpty(autoFill)) {
857
+ const {autoFill, multiple, onBulkChange, data} = this.props;
858
+ if (!isEmpty(autoFill) && onBulkChange) {
856
859
  const files = this.state.files.filter(
857
860
  file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)
858
861
  );
@@ -864,7 +867,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
864
867
  }
865
868
  : files[0]
866
869
  );
867
- onBulkChange && onBulkChange(toSync);
870
+ Object.keys(toSync).forEach(key => {
871
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
872
+ toSync[key] = merge({}, data[key], toSync[key]);
873
+ }
874
+ });
875
+ onBulkChange(toSync);
868
876
  }
869
877
  }
870
878
 
@@ -1223,13 +1231,15 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1223
1231
  onClick={this.handleSelect}
1224
1232
  >
1225
1233
  <Icon icon="upload" className="icon" />
1226
- {!multiple && files.length
1227
- ? __('File.repick')
1228
- : multiple && files.length
1229
- ? __('File.continueAdd')
1230
- : btnLabel
1231
- ? btnLabel
1232
- : __('File.upload')}
1234
+ <span>
1235
+ {!multiple && files.length
1236
+ ? __('File.repick')
1237
+ : multiple && files.length
1238
+ ? __('File.continueAdd')
1239
+ : btnLabel
1240
+ ? btnLabel
1241
+ : __('File.upload')}
1242
+ </span>
1233
1243
  </Button>
1234
1244
  ) : null}
1235
1245
 
@@ -29,6 +29,8 @@ import {
29
29
  SchemaUrlPath
30
30
  } from '../../Schema';
31
31
  import {filter} from '../../utils/tpl';
32
+ import isPlainObject from 'lodash/isPlainObject';
33
+ import merge from 'lodash/merge';
32
34
 
33
35
  /**
34
36
  * Image 图片上传控件
@@ -790,8 +792,8 @@ export default class ImageControl extends React.Component<
790
792
  }
791
793
 
792
794
  syncAutoFill() {
793
- const {autoFill, multiple, onBulkChange} = this.props;
794
- if (!isEmpty(autoFill)) {
795
+ const {autoFill, multiple, onBulkChange, data} = this.props;
796
+ if (!isEmpty(autoFill) && onBulkChange) {
795
797
  const files = this.state.files.filter(
796
798
  file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)
797
799
  );
@@ -803,7 +805,13 @@ export default class ImageControl extends React.Component<
803
805
  }
804
806
  : files[0]
805
807
  );
806
- onBulkChange && onBulkChange(toSync);
808
+
809
+ Object.keys(toSync).forEach(key => {
810
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
811
+ toSync[key] = merge({}, data[key], toSync[key]);
812
+ }
813
+ });
814
+ onBulkChange(toSync);
807
815
  }
808
816
  }
809
817
 
@@ -1377,7 +1385,6 @@ export default class ImageControl extends React.Component<
1377
1385
  fixedSize ? fixedSizeClassName : ''
1378
1386
  )}
1379
1387
  >
1380
- <p>{__('File.uploading')}</p>
1381
1388
  <div className={cx('ImageControl-progress')}>
1382
1389
  <span
1383
1390
  style={{
@@ -1390,6 +1397,7 @@ export default class ImageControl extends React.Component<
1390
1397
  )}
1391
1398
  />
1392
1399
  </div>
1400
+ <p>{__('File.uploading')}</p>
1393
1401
  </div>
1394
1402
  </>
1395
1403
  ) : (
@@ -1524,7 +1532,10 @@ export default class ImageControl extends React.Component<
1524
1532
  thumbRatio={thumbRatio}
1525
1533
  />
1526
1534
  ) : (
1527
- <Icon icon="plus" className="icon" />
1535
+ <>
1536
+ <Icon icon="plus" className="icon" />
1537
+ <span>{__('File.upload')}</span>
1538
+ </>
1528
1539
  )}
1529
1540
 
1530
1541
  {isFocused ? (
@@ -314,7 +314,7 @@ export interface FormItemProps extends RendererProps {
314
314
  submitOnChange?: boolean,
315
315
  changeImmediately?: boolean
316
316
  ) => void;
317
- onBulkChange: (
317
+ onBulkChange?: (
318
318
  values: {[propName: string]: any},
319
319
  submitOnChange?: boolean
320
320
  ) => void;
@@ -48,6 +48,8 @@ import {
48
48
  SchemaObject,
49
49
  SchemaTokenizeableString
50
50
  } from '../../Schema';
51
+ import isPlainObject from 'lodash/isPlainObject';
52
+ import merge from 'lodash/merge';
51
53
 
52
54
  export {Option};
53
55
 
@@ -270,7 +272,8 @@ export function registerOptionsControl(config: OptionsConfig) {
270
272
  : [];
271
273
  static ComposedComponent = Control;
272
274
 
273
- reaction?: () => void;
275
+ toDispose: Array<() => void> = [];
276
+
274
277
  input: any;
275
278
  mounted = false;
276
279
 
@@ -302,9 +305,18 @@ export function registerOptionsControl(config: OptionsConfig) {
302
305
  data
303
306
  );
304
307
 
305
- this.reaction = reaction(
306
- () => JSON.stringify([formItem.loading, formItem.filteredOptions]),
307
- () => this.mounted && this.forceUpdate()
308
+ this.toDispose.push(
309
+ reaction(
310
+ () => JSON.stringify([formItem.loading, formItem.filteredOptions]),
311
+ () => this.mounted && this.forceUpdate()
312
+ )
313
+ );
314
+
315
+ this.toDispose.push(
316
+ reaction(
317
+ () => JSON.stringify(formItem.options),
318
+ () => this.mounted && this.syncAutoFill(formItem.tmpValue)
319
+ )
308
320
  );
309
321
  // 默认全选。这里会和默认值\回填值逻辑冲突,所以如果有配置source则不执行默认全选
310
322
  if (
@@ -432,14 +444,20 @@ export function registerOptionsControl(config: OptionsConfig) {
432
444
 
433
445
  componentWillUnmount() {
434
446
  this.props.removeHook?.(this.reload, 'init');
435
- this.reaction?.();
447
+ this.toDispose.forEach(fn => fn());
448
+ this.toDispose = [];
436
449
  }
437
450
 
438
451
  syncAutoFill(value: any) {
439
452
  const {autoFill, multiple, onBulkChange, data} = this.props;
440
453
  const formItem = this.props.formItem as IFormItemStore;
441
454
 
442
- if (autoFill && !isEmpty(autoFill) && formItem.filteredOptions.length) {
455
+ if (
456
+ onBulkChange &&
457
+ autoFill &&
458
+ !isEmpty(autoFill) &&
459
+ formItem.filteredOptions.length
460
+ ) {
443
461
  const selectedOptions = formItem.getSelectedOptions(value);
444
462
  const toSync = dataMapping(
445
463
  autoFill,
@@ -471,7 +489,14 @@ export function registerOptionsControl(config: OptionsConfig) {
471
489
  selectedOptions[0]
472
490
  )
473
491
  );
474
- onBulkChange?.(toSync);
492
+
493
+ Object.keys(toSync).forEach(key => {
494
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
495
+ toSync[key] = merge({}, data[key], toSync[key]);
496
+ }
497
+ });
498
+
499
+ onBulkChange(toSync);
475
500
  }
476
501
  }
477
502
 
@@ -397,14 +397,15 @@ export default class PickerControl extends React.PureComponent<
397
397
  options,
398
398
  multiple,
399
399
  valueField,
400
- embed
400
+ embed,
401
+ source
401
402
  } = this.props;
402
403
 
403
404
  return render('modal-body', this.state.schema, {
404
405
  value: selectedOptions,
405
406
  valueField,
406
407
  primaryField: valueField,
407
- options: options,
408
+ options: source ? [] : options,
408
409
  multiple,
409
410
  onSelect: embed ? this.handleChange : undefined,
410
411
  ref: this.crudRef,