amis 1.4.2-beta.6 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/lib/Schema.d.ts +11 -3
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/Alert2.d.ts +26 -21
  4. package/lib/components/Alert2.js +11 -4
  5. package/lib/components/Alert2.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.js +2 -2
  14. package/lib/components/Badge.js.map +2 -2
  15. package/lib/components/Button.js +1 -1
  16. package/lib/components/Button.js.map +2 -2
  17. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  18. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  19. package/lib/components/ChainedSelection.js.map +13 -0
  20. package/lib/components/Checkbox.d.ts +20 -20
  21. package/lib/components/Collapse.d.ts +51 -23
  22. package/lib/components/Collapse.js +70 -11
  23. package/lib/components/Collapse.js.map +2 -2
  24. package/lib/components/CollapseGroup.d.ts +88 -0
  25. package/lib/components/CollapseGroup.js +81 -0
  26. package/lib/components/CollapseGroup.js.map +13 -0
  27. package/lib/components/ColorPicker.d.ts +89 -85
  28. package/lib/components/ColorPicker.js +17 -4
  29. package/lib/components/ColorPicker.js.map +2 -2
  30. package/lib/components/DatePicker.d.ts +84 -84
  31. package/lib/components/DateRangePicker.d.ts +84 -84
  32. package/lib/components/Drawer.js +2 -2
  33. package/lib/components/Drawer.js.map +2 -2
  34. package/lib/components/Editor.d.ts +84 -84
  35. package/lib/components/GridNav.d.ts +52 -0
  36. package/lib/components/GridNav.js +123 -0
  37. package/lib/components/GridNav.js.map +13 -0
  38. package/lib/components/GroupedSelection.d.ts +907 -0
  39. package/lib/components/GroupedSelection.js +48 -0
  40. package/lib/components/GroupedSelection.js.map +13 -0
  41. package/lib/components/InputBox.d.ts +22 -21
  42. package/lib/components/InputBox.js +10 -2
  43. package/lib/components/InputBox.js.map +2 -2
  44. package/lib/components/Link.d.ts +29 -36
  45. package/lib/components/Link.js +14 -15
  46. package/lib/components/Link.js.map +2 -2
  47. package/lib/components/ListGroup.d.ts +21 -21
  48. package/lib/components/ModalManager.js +1 -1
  49. package/lib/components/ModalManager.js.map +2 -2
  50. package/lib/components/MonthRangePicker.d.ts +84 -84
  51. package/lib/components/NumberInput.d.ts +20 -20
  52. package/lib/components/Overlay.js +5 -0
  53. package/lib/components/Overlay.js.map +2 -2
  54. package/lib/components/PickerColumn.d.ts +514 -0
  55. package/lib/components/PickerColumn.js +279 -0
  56. package/lib/components/PickerColumn.js.map +13 -0
  57. package/lib/components/PickerContainer.d.ts +513 -0
  58. package/lib/components/PickerContainer.js +96 -0
  59. package/lib/components/PickerContainer.js.map +13 -0
  60. package/lib/components/PopOver.d.ts +1 -0
  61. package/lib/components/PopOver.js +12 -1
  62. package/lib/components/PopOver.js.map +2 -2
  63. package/lib/components/Progress.d.ts +85 -0
  64. package/lib/components/Progress.js +81 -0
  65. package/lib/components/Progress.js.map +13 -0
  66. package/lib/components/Radios.d.ts +22 -21
  67. package/lib/components/Radios.js +1 -0
  68. package/lib/components/Radios.js.map +2 -2
  69. package/lib/components/Rating.d.ts +21 -21
  70. package/lib/components/ResultBox.d.ts +84 -84
  71. package/lib/components/ResultBox.js +10 -2
  72. package/lib/components/ResultBox.js.map +2 -2
  73. package/lib/components/SearchBox.d.ts +84 -84
  74. package/lib/components/Select.d.ts +245 -237
  75. package/lib/components/Select.js +25 -4
  76. package/lib/components/Select.js.map +2 -2
  77. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  78. package/lib/components/Selection.js +134 -0
  79. package/lib/components/Selection.js.map +13 -0
  80. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  81. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  82. package/lib/components/TableSelection.js.map +13 -0
  83. package/lib/components/Tabs.d.ts +20 -20
  84. package/lib/components/TabsTransfer.d.ts +84 -84
  85. package/lib/components/TabsTransfer.js +9 -9
  86. package/lib/components/TabsTransfer.js.map +2 -2
  87. package/lib/components/TabsTransferPicker.d.ts +489 -0
  88. package/lib/components/TabsTransferPicker.js +60 -0
  89. package/lib/components/TabsTransferPicker.js.map +13 -0
  90. package/lib/components/Toast.d.ts +90 -87
  91. package/lib/components/Toast.js +15 -5
  92. package/lib/components/Toast.js.map +2 -2
  93. package/lib/components/Transfer.d.ts +908 -274
  94. package/lib/components/Transfer.js +31 -24
  95. package/lib/components/Transfer.js.map +2 -2
  96. package/lib/components/TransferDropDown.d.ts +488 -0
  97. package/lib/components/TransferDropDown.js +59 -0
  98. package/lib/components/TransferDropDown.js.map +13 -0
  99. package/lib/components/TransferPicker.d.ts +493 -0
  100. package/lib/components/TransferPicker.js +60 -0
  101. package/lib/components/TransferPicker.js.map +13 -0
  102. package/lib/components/Tree.d.ts +115 -84
  103. package/lib/components/Tree.js +183 -30
  104. package/lib/components/Tree.js.map +2 -2
  105. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  106. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  107. package/lib/components/TreeSelection.js.map +13 -0
  108. package/lib/components/condition-builder/Field.js +4 -2
  109. package/lib/components/condition-builder/Field.js.map +2 -2
  110. package/lib/components/condition-builder/Func.js +2 -2
  111. package/lib/components/condition-builder/Func.js.map +2 -2
  112. package/lib/components/condition-builder/InputSwitch.js +2 -2
  113. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  114. package/lib/components/condition-builder/Item.js +3 -3
  115. package/lib/components/condition-builder/Item.js.map +2 -2
  116. package/lib/components/icons.js +10 -0
  117. package/lib/components/icons.js.map +2 -2
  118. package/lib/components/index.d.ts +8 -8
  119. package/lib/components/index.js +16 -16
  120. package/lib/components/index.js.map +2 -2
  121. package/lib/envOverwrite.d.ts +1 -1
  122. package/lib/envOverwrite.js +24 -9
  123. package/lib/envOverwrite.js.map +2 -2
  124. package/lib/factory.d.ts +15 -1
  125. package/lib/factory.js +35 -6
  126. package/lib/factory.js.map +2 -2
  127. package/lib/helper.css.map +1 -1
  128. package/lib/hooks/index.d.ts +5 -0
  129. package/lib/hooks/index.js +14 -0
  130. package/lib/hooks/index.js.map +13 -0
  131. package/lib/hooks/use-set-state.d.ts +2 -0
  132. package/lib/hooks/use-set-state.js +15 -0
  133. package/lib/hooks/use-set-state.js.map +13 -0
  134. package/lib/hooks/use-touch.d.ts +16 -0
  135. package/lib/hooks/use-touch.js +73 -0
  136. package/lib/hooks/use-touch.js.map +13 -0
  137. package/lib/hooks/use-update-effect.d.ts +3 -0
  138. package/lib/hooks/use-update-effect.js +17 -0
  139. package/lib/hooks/use-update-effect.js.map +13 -0
  140. package/lib/icons/alert-danger.js +7 -0
  141. package/lib/icons/alert-info.js +7 -0
  142. package/lib/icons/alert-success.js +7 -0
  143. package/lib/icons/alert-warning.js +7 -0
  144. package/lib/icons/download.js +7 -0
  145. package/lib/icons/drag-bar.js +10 -3
  146. package/lib/index.d.ts +5 -0
  147. package/lib/index.js +6 -1
  148. package/lib/index.js.map +2 -2
  149. package/lib/locale/de-DE.js +2 -0
  150. package/lib/locale/de-DE.js.map +2 -2
  151. package/lib/locale/en-US.js +3 -0
  152. package/lib/locale/en-US.js.map +2 -2
  153. package/lib/locale/zh-CN.js +5 -2
  154. package/lib/locale/zh-CN.js.map +2 -2
  155. package/lib/renderers/Action.d.ts +10 -5
  156. package/lib/renderers/Action.js +23 -5
  157. package/lib/renderers/Action.js.map +2 -2
  158. package/lib/renderers/Alert.d.ts +21 -1
  159. package/lib/renderers/Alert.js.map +2 -2
  160. package/lib/renderers/AnchorNav.d.ts +1 -0
  161. package/lib/renderers/AnchorNav.js +2 -2
  162. package/lib/renderers/AnchorNav.js.map +2 -2
  163. package/lib/renderers/Avatar.js +3 -3
  164. package/lib/renderers/Avatar.js.map +2 -2
  165. package/lib/renderers/Breadcrumb.js +1 -1
  166. package/lib/renderers/Breadcrumb.js.map +2 -2
  167. package/lib/renderers/CRUD.d.ts +5 -0
  168. package/lib/renderers/CRUD.js +25 -4
  169. package/lib/renderers/CRUD.js.map +2 -2
  170. package/lib/renderers/Card.d.ts +5 -0
  171. package/lib/renderers/Card.js +34 -23
  172. package/lib/renderers/Card.js.map +2 -2
  173. package/lib/renderers/Collapse.d.ts +25 -20
  174. package/lib/renderers/Collapse.js +10 -72
  175. package/lib/renderers/Collapse.js.map +2 -2
  176. package/lib/renderers/CollapseGroup.d.ts +42 -0
  177. package/lib/renderers/CollapseGroup.js +33 -0
  178. package/lib/renderers/CollapseGroup.js.map +13 -0
  179. package/lib/renderers/Form/ConditionBuilder.js +2 -2
  180. package/lib/renderers/Form/ConditionBuilder.js.map +2 -2
  181. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  182. package/lib/renderers/Form/Editor.d.ts +3 -2
  183. package/lib/renderers/Form/InputCity.d.ts +84 -84
  184. package/lib/renderers/Form/InputCity.js +7 -6
  185. package/lib/renderers/Form/InputCity.js.map +2 -2
  186. package/lib/renderers/Form/InputColor.d.ts +86 -85
  187. package/lib/renderers/Form/InputColor.js +1 -1
  188. package/lib/renderers/Form/InputColor.js.map +2 -2
  189. package/lib/renderers/Form/InputFile.d.ts +6 -0
  190. package/lib/renderers/Form/InputFile.js +28 -8
  191. package/lib/renderers/Form/InputFile.js.map +2 -2
  192. package/lib/renderers/Form/InputImage.js +11 -4
  193. package/lib/renderers/Form/InputImage.js.map +2 -2
  194. package/lib/renderers/Form/Item.d.ts +1 -1
  195. package/lib/renderers/Form/Item.js +2 -1
  196. package/lib/renderers/Form/Item.js.map +2 -2
  197. package/lib/renderers/Form/Options.js +25 -4
  198. package/lib/renderers/Form/Options.js.map +2 -2
  199. package/lib/renderers/Form/Select.d.ts +42 -4
  200. package/lib/renderers/Form/Select.js +37 -3
  201. package/lib/renderers/Form/Select.js.map +2 -2
  202. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  203. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  204. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  205. package/lib/renderers/Form/Transfer.js +18 -3
  206. package/lib/renderers/Form/Transfer.js.map +2 -2
  207. package/lib/renderers/Form/TransferPicker.d.ts +52 -0
  208. package/lib/renderers/Form/TransferPicker.js +43 -0
  209. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  210. package/lib/renderers/Form/TreeSelect.js +2 -2
  211. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  212. package/lib/renderers/Form/index.d.ts +5 -0
  213. package/lib/renderers/Form/index.js +5 -3
  214. package/lib/renderers/Form/index.js.map +2 -2
  215. package/lib/renderers/Form/wrapControl.js +13 -1
  216. package/lib/renderers/Form/wrapControl.js.map +2 -2
  217. package/lib/renderers/GridNav.d.ts +99 -0
  218. package/lib/renderers/GridNav.js +82 -0
  219. package/lib/renderers/GridNav.js.map +13 -0
  220. package/lib/renderers/IFrame.js +1 -3
  221. package/lib/renderers/IFrame.js.map +2 -2
  222. package/lib/renderers/Image.js +7 -5
  223. package/lib/renderers/Image.js.map +2 -2
  224. package/lib/renderers/Json.d.ts +4 -0
  225. package/lib/renderers/Json.js +4 -13
  226. package/lib/renderers/Json.js.map +2 -2
  227. package/lib/renderers/Link.d.ts +4 -2
  228. package/lib/renderers/Link.js +15 -8
  229. package/lib/renderers/Link.js.map +2 -2
  230. package/lib/renderers/List.js +1 -1
  231. package/lib/renderers/List.js.map +2 -2
  232. package/lib/renderers/Nav.d.ts +21 -21
  233. package/lib/renderers/Nav.js +37 -19
  234. package/lib/renderers/Nav.js.map +2 -2
  235. package/lib/renderers/Page.d.ts +18 -0
  236. package/lib/renderers/Page.js +53 -9
  237. package/lib/renderers/Page.js.map +2 -2
  238. package/lib/renderers/Portlet.d.ts +125 -0
  239. package/lib/renderers/Portlet.js +156 -0
  240. package/lib/renderers/Portlet.js.map +13 -0
  241. package/lib/renderers/Progress.d.ts +23 -3
  242. package/lib/renderers/Progress.js +15 -19
  243. package/lib/renderers/Progress.js.map +2 -2
  244. package/lib/renderers/Property.js +1 -1
  245. package/lib/renderers/Property.js.map +2 -2
  246. package/lib/renderers/Table/ColumnToggler.js +1 -1
  247. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  248. package/lib/renderers/Table/TableContent.d.ts +4 -1
  249. package/lib/renderers/Table/TableContent.js +21 -1
  250. package/lib/renderers/Table/TableContent.js.map +2 -2
  251. package/lib/renderers/Table/index.d.ts +5 -1
  252. package/lib/renderers/Table/index.js +65 -30
  253. package/lib/renderers/Table/index.js.map +2 -2
  254. package/lib/renderers/Tabs.js +9 -1
  255. package/lib/renderers/Tabs.js.map +2 -2
  256. package/lib/renderers/WebComponent.js +1 -1
  257. package/lib/renderers/WebComponent.js.map +2 -2
  258. package/lib/store/combo.d.ts +2 -2
  259. package/lib/store/form.d.ts +1 -1
  260. package/lib/store/form.js +3 -5
  261. package/lib/store/form.js.map +2 -2
  262. package/lib/store/formItem.js +44 -4
  263. package/lib/store/formItem.js.map +2 -2
  264. package/lib/store/table.d.ts +3 -2
  265. package/lib/store/table.js +35 -12
  266. package/lib/store/table.js.map +2 -2
  267. package/lib/themes/ang-ie11.css +934 -222
  268. package/lib/themes/ang.css +934 -222
  269. package/lib/themes/ang.css.map +1 -1
  270. package/lib/themes/antd-ie11.css +934 -222
  271. package/lib/themes/antd.css +934 -222
  272. package/lib/themes/antd.css.map +1 -1
  273. package/lib/themes/cxd-ie11.css +970 -260
  274. package/lib/themes/cxd.css +970 -260
  275. package/lib/themes/cxd.css.map +1 -1
  276. package/lib/themes/dark-ie11.css +934 -222
  277. package/lib/themes/dark.css +934 -222
  278. package/lib/themes/dark.css.map +1 -1
  279. package/lib/themes/default.css +970 -260
  280. package/lib/themes/default.css.map +1 -1
  281. package/lib/types.d.ts +38 -1
  282. package/lib/types.js +0 -5
  283. package/lib/types.js.map +2 -2
  284. package/lib/utils/api.d.ts +3 -2
  285. package/lib/utils/api.js +90 -17
  286. package/lib/utils/api.js.map +2 -2
  287. package/lib/utils/dom.d.ts +4 -0
  288. package/lib/utils/dom.js +11 -1
  289. package/lib/utils/dom.js.map +2 -2
  290. package/lib/utils/helper.d.ts +12 -23
  291. package/lib/utils/helper.js +62 -166
  292. package/lib/utils/helper.js.map +2 -2
  293. package/lib/utils/tpl-builtin.d.ts +2 -20
  294. package/lib/utils/tpl-builtin.js +25 -743
  295. package/lib/utils/tpl-builtin.js.map +2 -2
  296. package/lib/utils/tpl.js +24 -0
  297. package/lib/utils/tpl.js.map +2 -2
  298. package/package.json +5 -2
  299. package/schema.json +3966 -1263
  300. package/scss/_mixins.scss +1 -3
  301. package/scss/_properties.scss +42 -13
  302. package/scss/base/_common.scss +3 -0
  303. package/scss/base/_normalize.scss +2 -0
  304. package/scss/components/_alert.scss +28 -5
  305. package/scss/components/_anchor-nav.scss +89 -29
  306. package/scss/components/_button.scss +12 -0
  307. package/scss/components/_card.scss +9 -15
  308. package/scss/components/_collapse-group.scss +15 -0
  309. package/scss/components/_collapse.scss +48 -23
  310. package/scss/components/_grid-nav.scss +128 -0
  311. package/scss/components/_images.scss +1 -0
  312. package/scss/components/_input-box.scss +1 -0
  313. package/scss/components/_nav.scss +2 -7
  314. package/scss/components/_page.scss +35 -2
  315. package/scss/components/_picker-columns.scss +124 -0
  316. package/scss/components/_popover.scss +13 -0
  317. package/scss/components/_portlet.scss +51 -0
  318. package/scss/components/_progress.scss +141 -33
  319. package/scss/components/_result-box.scss +1 -0
  320. package/scss/components/_spinner.scss +5 -4
  321. package/scss/components/_status.scss +1 -1
  322. package/scss/components/_table.scss +32 -0
  323. package/scss/components/_toast.scss +41 -11
  324. package/scss/components/form/_checks.scss +0 -351
  325. package/scss/components/form/_color.scss +32 -3
  326. package/scss/components/form/_combo.scss +4 -0
  327. package/scss/components/form/_fieldset.scss +6 -1
  328. package/scss/components/form/_file.scss +11 -0
  329. package/scss/components/form/_form.scss +48 -0
  330. package/scss/components/form/_selection.scss +354 -0
  331. package/scss/components/form/_transfer.scss +76 -18
  332. package/scss/components/form/_tree.scss +42 -0
  333. package/scss/themes/_common.scss +6 -0
  334. package/scss/themes/_cxd-variables.scss +13 -6
  335. package/scss/themes/cxd.scss +19 -20
  336. package/sdk/ang-ie11.css +1065 -246
  337. package/sdk/ang.css +1069 -230
  338. package/sdk/antd-ie11.css +1068 -249
  339. package/sdk/antd.css +1069 -230
  340. package/sdk/charts.js +17 -17
  341. package/sdk/color-picker.js +65 -69
  342. package/sdk/cropperjs.js +3 -3
  343. package/sdk/cxd-ie11.css +1081 -268
  344. package/sdk/cxd.css +1116 -279
  345. package/sdk/dark-ie11.css +1069 -250
  346. package/sdk/dark.css +1069 -230
  347. package/sdk/exceljs.js +1 -1
  348. package/sdk/helper.css.map +1 -1
  349. package/sdk/iconfont.svg +2513 -0
  350. package/sdk/iconfont.ttf +0 -0
  351. package/sdk/iconfont.woff +0 -0
  352. package/sdk/locale/de-DE.js +2 -0
  353. package/sdk/markdown.js +69 -69
  354. package/sdk/papaparse.js +1 -1
  355. package/sdk/renderers/Form/CityDB.js +1 -1
  356. package/sdk/rest.js +20 -28
  357. package/sdk/rich-text.js +62 -62
  358. package/sdk/sdk-ie11.css +1081 -268
  359. package/sdk/sdk.css +1116 -279
  360. package/sdk/sdk.js +1371 -1189
  361. package/sdk/thirds/hls.js/hls.js +18 -18
  362. package/sdk/thirds/mpegts.js/mpegts.js +2 -2
  363. package/sdk/tinymce.js +57 -57
  364. package/src/Schema.ts +19 -1
  365. package/src/components/Alert2.tsx +32 -4
  366. package/src/components/AnchorNav.tsx +15 -4
  367. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +43 -37
  368. package/src/components/Badge.tsx +3 -3
  369. package/src/components/Button.tsx +1 -0
  370. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  371. package/src/components/Collapse.tsx +139 -20
  372. package/src/components/CollapseGroup.tsx +130 -0
  373. package/src/components/ColorPicker.tsx +32 -10
  374. package/src/components/Drawer.tsx +8 -6
  375. package/src/components/GridNav.tsx +233 -0
  376. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  377. package/src/components/InputBox.tsx +10 -9
  378. package/src/components/Link.tsx +28 -37
  379. package/src/components/ModalManager.ts +1 -1
  380. package/src/components/Overlay.tsx +6 -0
  381. package/src/components/PickerColumn.tsx +429 -0
  382. package/src/components/PickerContainer.tsx +128 -0
  383. package/src/components/PopOver.tsx +15 -1
  384. package/src/components/Progress.tsx +140 -0
  385. package/src/components/Radios.tsx +3 -8
  386. package/src/components/ResultBox.tsx +9 -9
  387. package/src/components/Select.tsx +57 -5
  388. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  389. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  390. package/src/components/TabsTransfer.tsx +13 -7
  391. package/src/components/TabsTransferPicker.tsx +85 -0
  392. package/src/components/Toast.tsx +48 -21
  393. package/src/components/Transfer.tsx +71 -50
  394. package/src/components/TransferDropDown.tsx +120 -0
  395. package/src/components/TransferPicker.tsx +91 -0
  396. package/src/components/Tree.tsx +194 -8
  397. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  398. package/src/components/condition-builder/Field.tsx +7 -5
  399. package/src/components/condition-builder/Func.tsx +3 -3
  400. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  401. package/src/components/condition-builder/Item.tsx +5 -12
  402. package/src/components/icons.tsx +10 -0
  403. package/src/components/index.tsx +13 -13
  404. package/src/envOverwrite.ts +20 -8
  405. package/src/factory.tsx +70 -9
  406. package/src/hooks/index.ts +5 -0
  407. package/src/hooks/use-set-state.ts +19 -0
  408. package/src/hooks/use-touch.ts +100 -0
  409. package/src/hooks/use-update-effect.ts +16 -0
  410. package/src/icons/alert-danger.svg +1 -0
  411. package/src/icons/alert-info.svg +1 -0
  412. package/src/icons/alert-success.svg +1 -0
  413. package/src/icons/alert-warning.svg +1 -0
  414. package/src/icons/download.svg +4 -0
  415. package/src/icons/drag-bar.svg +12 -6
  416. package/src/index.tsx +5 -0
  417. package/src/locale/de-DE.ts +2 -0
  418. package/src/locale/en-US.ts +3 -0
  419. package/src/locale/zh-CN.ts +5 -2
  420. package/src/renderers/Action.tsx +58 -3
  421. package/src/renderers/Alert.tsx +31 -1
  422. package/src/renderers/AnchorNav.tsx +4 -0
  423. package/src/renderers/Avatar.tsx +8 -4
  424. package/src/renderers/Breadcrumb.tsx +5 -1
  425. package/src/renderers/CRUD.tsx +29 -3
  426. package/src/renderers/Card.tsx +76 -36
  427. package/src/renderers/Collapse.tsx +70 -115
  428. package/src/renderers/CollapseGroup.tsx +80 -0
  429. package/src/renderers/Form/ConditionBuilder.tsx +2 -2
  430. package/src/renderers/Form/InputCity.tsx +4 -8
  431. package/src/renderers/Form/InputColor.tsx +4 -2
  432. package/src/renderers/Form/InputFile.tsx +65 -24
  433. package/src/renderers/Form/InputImage.tsx +11 -3
  434. package/src/renderers/Form/Item.tsx +3 -2
  435. package/src/renderers/Form/Options.tsx +29 -3
  436. package/src/renderers/Form/Select.tsx +162 -21
  437. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  438. package/src/renderers/Form/Transfer.tsx +19 -4
  439. package/src/renderers/Form/TransferPicker.tsx +145 -0
  440. package/src/renderers/Form/TreeSelect.tsx +25 -0
  441. package/src/renderers/Form/index.tsx +15 -2
  442. package/src/renderers/Form/wrapControl.tsx +26 -1
  443. package/src/renderers/GridNav.tsx +204 -0
  444. package/src/renderers/IFrame.tsx +2 -4
  445. package/src/renderers/Image.tsx +19 -15
  446. package/src/renderers/Json.tsx +9 -9
  447. package/src/renderers/Link.tsx +29 -16
  448. package/src/renderers/List.tsx +1 -1
  449. package/src/renderers/Nav.tsx +105 -56
  450. package/src/renderers/Page.tsx +62 -1
  451. package/src/renderers/Portlet.tsx +423 -0
  452. package/src/renderers/Progress.tsx +56 -38
  453. package/src/renderers/Property.tsx +6 -4
  454. package/src/renderers/Table/ColumnToggler.tsx +1 -1
  455. package/src/renderers/Table/TableContent.tsx +40 -2
  456. package/src/renderers/Table/index.tsx +88 -43
  457. package/src/renderers/Tabs.tsx +9 -1
  458. package/src/renderers/WebComponent.tsx +2 -2
  459. package/src/store/form.ts +3 -9
  460. package/src/store/formItem.ts +94 -2
  461. package/src/store/table.ts +55 -14
  462. package/src/types.ts +58 -1
  463. package/src/utils/api.ts +120 -26
  464. package/src/utils/dom.tsx +12 -0
  465. package/src/utils/helper.ts +55 -185
  466. package/src/utils/tpl-builtin.ts +40 -866
  467. package/src/utils/tpl.ts +33 -0
  468. package/tsconfig-for-declaration.json +1 -1
  469. package/dump.rdb +0 -0
  470. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  471. package/lib/components/AssociatedCheckboxes.js +0 -90
  472. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  473. package/lib/components/ChainedCheckboxes.js.map +0 -13
  474. package/lib/components/Checkboxes.js +0 -101
  475. package/lib/components/Checkboxes.js.map +0 -13
  476. package/lib/components/ListCheckboxes.d.ts +0 -739
  477. package/lib/components/ListCheckboxes.js +0 -48
  478. package/lib/components/ListCheckboxes.js.map +0 -13
  479. package/lib/components/ListRadios.d.ts +0 -763
  480. package/lib/components/ListRadios.js +0 -86
  481. package/lib/components/ListRadios.js.map +0 -13
  482. package/lib/components/TableCheckboxes.js.map +0 -13
  483. package/lib/components/TreeCheckboxes.js.map +0 -13
  484. package/lib/components/TreeRadios.d.ts +0 -838
  485. package/lib/components/TreeRadios.js +0 -116
  486. package/lib/components/TreeRadios.js.map +0 -13
  487. package/src/components/ListRadios.tsx +0 -159
  488. package/src/components/TreeRadios.tsx +0 -202
@@ -3,11 +3,10 @@ import {Renderer, RendererProps} from '../factory';
3
3
  import {Collapse as BasicCollapse} from '../components/Collapse';
4
4
  import {
5
5
  BaseSchema,
6
- SchemaClassName,
7
6
  SchemaCollection,
8
- SchemaTpl
7
+ SchemaTpl,
8
+ SchemaObject
9
9
  } from '../Schema';
10
- import {isClickOnInput} from '../utils/helper';
11
10
 
12
11
  /**
13
12
  * Collapse 折叠渲染器,格式说明。
@@ -19,10 +18,20 @@ export interface CollapseSchema extends BaseSchema {
19
18
  */
20
19
  type: 'collapse';
21
20
 
21
+ /**
22
+ * 标识
23
+ */
24
+ key?: string;
25
+
22
26
  /**
23
27
  * 标题展示位置
24
28
  */
25
- titlePosition: 'top' | 'bottom';
29
+ headerPosition?: 'top' | 'bottom';
30
+
31
+ /**
32
+ * 标题
33
+ */
34
+ header?: string | SchemaCollection;
26
35
 
27
36
  /**
28
37
  * 内容区域
@@ -32,7 +41,12 @@ export interface CollapseSchema extends BaseSchema {
32
41
  /**
33
42
  * 配置 Body 容器 className
34
43
  */
35
- bodyClassName?: SchemaClassName;
44
+ bodyClassName?: string;
45
+
46
+ /**
47
+ * 是否禁用
48
+ */
49
+ disabled?: boolean;
36
50
 
37
51
  /**
38
52
  * 是否可折叠
@@ -45,19 +59,24 @@ export interface CollapseSchema extends BaseSchema {
45
59
  collapsed?: boolean;
46
60
 
47
61
  /**
48
- * 标题 CSS 类名
62
+ * 图标是否展示
49
63
  */
50
- headingClassName?: string;
64
+ showArrow?: boolean;
65
+
66
+ /**
67
+ * 自定义切换图标
68
+ */
69
+ expandIcon?: SchemaObject;
51
70
 
52
71
  /**
53
- * 标题
72
+ * 标题 CSS 类名
54
73
  */
55
- title?: SchemaTpl;
74
+ headingClassName?: string;
56
75
 
57
76
  /**
58
77
  * 收起的标题
59
78
  */
60
- collapseTitle?: SchemaTpl;
79
+ collapseHeader?: SchemaTpl;
61
80
 
62
81
  /**
63
82
  * 控件大小
@@ -85,141 +104,77 @@ export interface CollapseProps
85
104
  children?: JSX.Element | ((props?: any) => JSX.Element);
86
105
  }
87
106
 
88
- export interface CollapseState {
89
- collapsed: boolean;
90
- }
91
-
92
107
  export default class Collapse extends React.Component<
93
108
  CollapseProps,
94
- CollapseState
109
+ {}
95
110
  > {
96
- static propsList: Array<string> = [
97
- 'wrapperComponent',
98
- 'headingComponent',
99
- 'bodyClassName',
100
- 'collapsed',
101
- 'headingClassName',
102
- 'title',
103
- 'mountOnEnter',
104
- 'unmountOnExit'
105
- ];
106
-
107
- static defaultProps: Partial<CollapseProps> = {
108
- titlePosition: 'top',
109
- wrapperComponent: 'div',
110
- headingComponent: 'h4',
111
- className: '',
112
- headingClassName: '',
113
- bodyClassName: '',
114
- collapsable: true
115
- };
116
-
117
- state = {
118
- collapsed: false
119
- };
120
-
121
- constructor(props: CollapseProps) {
122
- super(props);
123
-
124
- this.toggleCollapsed = this.toggleCollapsed.bind(this);
125
- this.state.collapsed = !!props.collapsed;
126
- }
127
-
128
- componentDidUpdate(prevProps: CollapseProps) {
129
- const props = this.props;
130
-
131
- if (prevProps.collapsed !== props.collapsed) {
132
- this.setState({
133
- collapsed: !!props.collapsed
134
- });
135
- }
136
- }
137
-
138
- toggleCollapsed(e: React.MouseEvent<HTMLElement>) {
139
- if (isClickOnInput(e)) {
140
- return;
141
- }
142
- this.props.collapsable !== false &&
143
- this.setState({
144
- collapsed: !this.state.collapsed
145
- });
146
- }
147
111
 
148
112
  render() {
149
113
  const {
114
+ key,
115
+ id,
150
116
  classPrefix: ns,
151
117
  classnames: cx,
152
118
  size,
153
- wrapperComponent: WrapperComponent,
154
- headingComponent: HeadingComponent,
119
+ wrapperComponent,
120
+ headingComponent,
155
121
  className,
156
122
  headingClassName,
157
123
  children,
158
124
  titlePosition,
125
+ headerPosition,
159
126
  title,
160
127
  collapseTitle,
128
+ collapseHeader,
129
+ header,
161
130
  body,
162
131
  bodyClassName,
163
132
  render,
164
133
  collapsable,
165
134
  translate: __,
166
135
  mountOnEnter,
167
- unmountOnExit
136
+ unmountOnExit,
137
+ showArrow,
138
+ expandIcon,
139
+ disabled,
140
+ collapsed,
141
+ propsUpdate,
142
+ onCollapse
168
143
  } = this.props;
169
- // 默认给个 title,不然没法点
170
- const finalTitle = this.state.collapsed ? title : collapseTitle || title;
171
-
172
- let dom = [
173
- finalTitle ? (
174
- <HeadingComponent
175
- key="title"
176
- onClick={this.toggleCollapsed}
177
- className={cx(`Collapse-header`, headingClassName)}
178
- >
179
- {collapsable && <span className={cx('Collapse-arrow')} />}
180
- {render('heading', finalTitle)}
181
- </HeadingComponent>
182
- ) : null,
183
144
 
145
+ return (
184
146
  <BasicCollapse
185
- show={collapsable ? !this.state.collapsed : true}
147
+ key={key}
148
+ id={id}
186
149
  classnames={cx}
187
150
  classPrefix={ns}
188
- key="body"
189
151
  mountOnEnter={mountOnEnter}
190
152
  unmountOnExit={unmountOnExit}
153
+ size={size}
154
+ wrapperComponent={wrapperComponent}
155
+ headingComponent={headingComponent}
156
+ className={className}
157
+ headingClassName={headingClassName}
158
+ bodyClassName={bodyClassName}
159
+ headerPosition={titlePosition || headerPosition}
160
+ collapsable={collapsable}
161
+ collapsed={collapsed}
162
+ showArrow={showArrow}
163
+ disabled={disabled}
164
+ propsUpdate={propsUpdate}
165
+ expandIcon={expandIcon ? render('arrow-icon', expandIcon || '', {className: cx('Collapse-icon-tranform')}) : null}
166
+ collapseHeader={collapseTitle || collapseHeader ? render('heading', collapseTitle || collapseHeader) : null}
167
+ header={render('heading', title || header || '')}
168
+ body={children
169
+ ? typeof children === 'function'
170
+ ? children(this.props)
171
+ : children
172
+ : body
173
+ ? render('body', body)
174
+ : null}
175
+ onCollapse={onCollapse}
191
176
  >
192
- <div className={cx(`Collapse-body`, bodyClassName)}>
193
- {children
194
- ? typeof children === 'function'
195
- ? children(this.props)
196
- : children
197
- : body
198
- ? render('body', body)
199
- : null}
200
- </div>
201
177
  </BasicCollapse>
202
- ];
203
-
204
- if (titlePosition === 'bottom') {
205
- dom.reverse();
206
- }
207
-
208
- return (
209
- <WrapperComponent
210
- className={cx(
211
- `Collapse`,
212
- {
213
- 'is-collapsed': this.state.collapsed,
214
- [`Collapse--${size}`]: size,
215
- 'Collapse--collapsable': collapsable,
216
- 'Collapse--title-bottom': titlePosition === 'bottom'
217
- },
218
- className
219
- )}
220
- >
221
- {dom}
222
- </WrapperComponent>
223
178
  );
224
179
  }
225
180
  }
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import {Renderer, RendererProps} from '../factory';
3
+ import {BaseSchema, SchemaCollection, SchemaObject} from '../Schema';
4
+ import CollapseGroup from '../components/CollapseGroup';
5
+
6
+ /**
7
+ * CollapseGroup 折叠渲染器,格式说明。
8
+ * 文档:https://baidu.gitee.io/amis/docs/components/collapse
9
+ */
10
+ export interface CollapseGroupSchema extends BaseSchema {
11
+ /**
12
+ * 指定为折叠器类型
13
+ */
14
+ type: 'collapse-group';
15
+
16
+ /**
17
+ * 激活面板
18
+ */
19
+ activeKey?: Array<string | number | never> | string | number;
20
+
21
+ /**
22
+ * 手风琴模式
23
+ */
24
+ accordion?: boolean;
25
+
26
+ /**
27
+ * 自定义切换图标
28
+ */
29
+ expandIcon?: SchemaObject;
30
+
31
+ /**
32
+ * 设置图标位置
33
+ */
34
+ expandIconPosition?: 'left' | 'right';
35
+
36
+ /**
37
+ * 内容区域
38
+ */
39
+ body?: SchemaCollection;
40
+ }
41
+ export interface CollapseGroupProps
42
+ extends RendererProps,
43
+ Omit<CollapseGroupSchema, 'type' | 'className'> {
44
+
45
+ children?: JSX.Element | ((props?: any) => JSX.Element);
46
+ }
47
+
48
+ export class CollapseGroupRender extends React.Component<CollapseGroupProps, {}> {
49
+ constructor(props: CollapseGroupProps) {
50
+ super(props);
51
+ }
52
+ render() {
53
+ const {
54
+ defaultActiveKey,
55
+ accordion,
56
+ expandIcon,
57
+ expandIconPosition,
58
+ body,
59
+ className,
60
+ render
61
+ } = this.props;
62
+ return (
63
+ <CollapseGroup
64
+ defaultActiveKey={defaultActiveKey}
65
+ accordion={accordion}
66
+ expandIcon={expandIcon}
67
+ expandIconPosition={expandIconPosition}
68
+ className={className}
69
+ >
70
+ {render('body', body || '')}
71
+ </CollapseGroup>
72
+ )
73
+ }
74
+ }
75
+
76
+
77
+ @Renderer({
78
+ type: 'collapse-group'
79
+ })
80
+ export class CollapseGroupRenderer extends CollapseGroupRender {}
@@ -66,12 +66,12 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
66
66
  RemoteOptionsProps & React.ComponentProps<typeof ConditionBuilder>
67
67
  > {
68
68
  render() {
69
- const {loading, config, deferLoad, ...rest} = this.props;
69
+ const {loading, config, deferLoad, disabled, ...rest} = this.props;
70
70
  return (
71
71
  <ConditionBuilder
72
72
  {...rest}
73
73
  fields={config || rest.fields || []}
74
- disabled={loading}
74
+ disabled={disabled || loading}
75
75
  />
76
76
  );
77
77
  }
@@ -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
 
@@ -1,7 +1,9 @@
1
1
  import React, {Suspense} from 'react';
2
- import {FormItem, FormControlProps, FormBaseControl} from './Item';
3
2
  import cx from 'classnames';
4
3
 
4
+ import {FormItem, FormControlProps, FormBaseControl} from './Item';
5
+ import type {PresetColor} from '../../components/ColorPicker';
6
+
5
7
  export const ColorPicker = React.lazy(
6
8
  () => import('../../components/ColorPicker')
7
9
  );
@@ -34,7 +36,7 @@ export interface InputColorControlSchema extends FormBaseControl {
34
36
  /**
35
37
  * 预设颜色,用户可以直接从预设中选。
36
38
  */
37
- presetColors?: Array<any>;
39
+ presetColors?: Array<PresetColor>;
38
40
 
39
41
  /**
40
42
  * 是否允许用户输入颜色。
@@ -18,8 +18,10 @@ import {dataMapping} from '../../utils/tpl-builtin';
18
18
  import {
19
19
  SchemaApi,
20
20
  SchemaClassName,
21
- SchemaTokenizeableString
21
+ SchemaTokenizeableString,
22
+ SchemaUrlPath
22
23
  } from '../../Schema';
24
+ import merge from 'lodash/merge';
23
25
 
24
26
  /**
25
27
  * File 文件上传控件
@@ -88,6 +90,11 @@ export interface FileControlSchema extends FormBaseControl {
88
90
  */
89
91
  downloadUrl?: SchemaApi;
90
92
 
93
+ /**
94
+ * 模板下载地址
95
+ */
96
+ templateUrl?: SchemaApi;
97
+
91
98
  /**
92
99
  * 默认 `file`, 如果你不想自己存储,则可以忽略此属性。
93
100
  * @default file
@@ -275,6 +282,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
275
282
  extractValue: false,
276
283
  delimiter: ',',
277
284
  downloadUrl: '', // '/api/file/'
285
+ templateUrl: '',
278
286
  useChunk: 'auto',
279
287
  chunkSize: 5 * 1024 * 1024, // 文件大于5M, 自动分块上传
280
288
  startChunkApi: '/api/upload/startChunk',
@@ -356,11 +364,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
356
364
  if (value && value instanceof Blob) {
357
365
  files = [value as any];
358
366
  } else if (value) {
359
- files = (Array.isArray(value)
360
- ? value
361
- : joinValues
362
- ? `${(value as any)[valueField] || value}`.split(delimiter)
363
- : [value as any]
367
+ files = (
368
+ Array.isArray(value)
369
+ ? value
370
+ : joinValues
371
+ ? `${(value as any)[valueField] || value}`.split(delimiter)
372
+ : [value as any]
364
373
  )
365
374
  .map(item => FileControl.valueToFile(item, props) as FileValue)
366
375
  .filter(item => item);
@@ -386,6 +395,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
386
395
  this.uploadBigFile = this.uploadBigFile.bind(this);
387
396
  this.handleSelect = this.handleSelect.bind(this);
388
397
  this.syncAutoFill = this.syncAutoFill.bind(this);
398
+ this.downloadTpl = this.downloadTpl.bind(this);
389
399
  }
390
400
 
391
401
  componentDidMount() {
@@ -402,11 +412,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
402
412
  let files: Array<FileValue> = [];
403
413
 
404
414
  if (value) {
405
- files = (Array.isArray(value)
406
- ? value
407
- : joinValues && typeof value === 'string'
408
- ? value.split(delimiter)
409
- : [value as any]
415
+ files = (
416
+ Array.isArray(value)
417
+ ? value
418
+ : joinValues && typeof value === 'string'
419
+ ? value.split(delimiter)
420
+ : [value as any]
410
421
  )
411
422
  .map(item => {
412
423
  let obj = FileControl.valueToFile(
@@ -532,7 +543,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
532
543
  e.preventDefault();
533
544
  e.stopPropagation();
534
545
 
535
- const {data, env, downloadUrl} = this.props;
546
+ const {downloadUrl} = this.props;
536
547
  const urlField = this.props.urlField || 'url';
537
548
  const valueField = this.props.valueField || 'value';
538
549
 
@@ -547,10 +558,23 @@ export default class FileControl extends React.Component<FileProps, FileState> {
547
558
  ? downloadUrl
548
559
  : `${fileUrl}`;
549
560
 
561
+ this.handleApi(api, file);
562
+ }
563
+
564
+ downloadTpl(e: React.MouseEvent) {
565
+ e.preventDefault();
566
+ e.stopPropagation();
567
+
568
+ this.handleApi(this.props.templateUrl || '');
569
+ }
570
+
571
+ handleApi(api: SchemaApi, payload?: object) {
572
+ const {data, env} = this.props;
550
573
  if (api) {
551
574
  const ctx = createObject(data, {
552
- ...file
575
+ ...payload
553
576
  });
577
+
554
578
  const apiObject = normalizeApi(api);
555
579
 
556
580
  if (apiObject.method?.toLowerCase() === 'get' && !apiObject.data) {
@@ -851,8 +875,8 @@ export default class FileControl extends React.Component<FileProps, FileState> {
851
875
  }
852
876
 
853
877
  syncAutoFill() {
854
- const {autoFill, multiple, onBulkChange} = this.props;
855
- if (!isEmpty(autoFill)) {
878
+ const {autoFill, multiple, onBulkChange, data} = this.props;
879
+ if (!isEmpty(autoFill) && onBulkChange) {
856
880
  const files = this.state.files.filter(
857
881
  file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)
858
882
  );
@@ -864,7 +888,12 @@ export default class FileControl extends React.Component<FileProps, FileState> {
864
888
  }
865
889
  : files[0]
866
890
  );
867
- onBulkChange && onBulkChange(toSync);
891
+ Object.keys(toSync).forEach(key => {
892
+ if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {
893
+ toSync[key] = merge({}, data[key], toSync[key]);
894
+ }
895
+ });
896
+ onBulkChange(toSync);
868
897
  }
869
898
  }
870
899
 
@@ -1163,7 +1192,8 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1163
1192
  classnames: cx,
1164
1193
  translate: __,
1165
1194
  render,
1166
- downloadUrl
1195
+ downloadUrl,
1196
+ templateUrl
1167
1197
  } = this.props;
1168
1198
  let {files, uploading, error} = this.state;
1169
1199
  const nameField = this.props.nameField || 'name';
@@ -1186,6 +1216,16 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1186
1216
 
1187
1217
  return (
1188
1218
  <div className={cx('FileControl', className)}>
1219
+ {templateUrl ? (
1220
+ <a
1221
+ className={cx('FileControl-templateInfo')}
1222
+ onClick={this.downloadTpl.bind(this)}
1223
+ >
1224
+ <Icon icon="download" className="icon" />
1225
+ <span>{__('File.downloadTpl')}</span>
1226
+ </a>
1227
+ ) : null}
1228
+
1189
1229
  <DropZone
1190
1230
  disabled={disabled}
1191
1231
  key="drop-zone"
@@ -1223,13 +1263,14 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1223
1263
  onClick={this.handleSelect}
1224
1264
  >
1225
1265
  <Icon icon="upload" className="icon" />
1226
- <span>{!multiple && files.length
1227
- ? __('File.repick')
1228
- : multiple && files.length
1229
- ? __('File.continueAdd')
1230
- : btnLabel
1231
- ? btnLabel
1232
- : __('File.upload')}
1266
+ <span>
1267
+ {!multiple && files.length
1268
+ ? __('File.repick')
1269
+ : multiple && files.length
1270
+ ? __('File.continueAdd')
1271
+ : btnLabel
1272
+ ? btnLabel
1273
+ : __('File.upload')}
1233
1274
  </span>
1234
1275
  </Button>
1235
1276
  ) : null}
@@ -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
 
@@ -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;
@@ -1089,7 +1089,8 @@ export const detectProps = [
1089
1089
  'items',
1090
1090
  'showCounter',
1091
1091
  'minLength',
1092
- 'maxLength'
1092
+ 'maxLength',
1093
+ 'embed'
1093
1094
  ];
1094
1095
 
1095
1096
  export function asFormItem(config: Omit<FormItemConfig, 'component'>) {
@@ -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
 
@@ -450,7 +452,12 @@ export function registerOptionsControl(config: OptionsConfig) {
450
452
  const {autoFill, multiple, onBulkChange, data} = this.props;
451
453
  const formItem = this.props.formItem as IFormItemStore;
452
454
 
453
- if (autoFill && !isEmpty(autoFill) && formItem.filteredOptions.length) {
455
+ if (
456
+ onBulkChange &&
457
+ autoFill &&
458
+ !isEmpty(autoFill) &&
459
+ formItem.filteredOptions.length
460
+ ) {
454
461
  const selectedOptions = formItem.getSelectedOptions(value);
455
462
  const toSync = dataMapping(
456
463
  autoFill,
@@ -482,7 +489,14 @@ export function registerOptionsControl(config: OptionsConfig) {
482
489
  selectedOptions[0]
483
490
  )
484
491
  );
485
- 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);
486
500
  }
487
501
  }
488
502
 
@@ -873,7 +887,19 @@ export function registerOptionsControl(config: OptionsConfig) {
873
887
  body: {
874
888
  type: 'form',
875
889
  api: addApi,
876
- controls: addControls
890
+ controls: [
891
+ {
892
+ type: 'hidden',
893
+ name: 'idx',
894
+ value: idx
895
+ },
896
+ {
897
+ type: 'hidden',
898
+ name: 'parent',
899
+ value: parent
900
+ },
901
+ ...(addControls || [])
902
+ ]
877
903
  }
878
904
  },
879
905
  ctx