amis 1.7.0 → 1.8.0-beta.13

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 (469) hide show
  1. package/lib/Schema.d.ts +10 -2
  2. package/lib/Schema.js +0 -1
  3. package/lib/Schema.js.map +2 -2
  4. package/lib/SchemaRenderer.js +19 -3
  5. package/lib/SchemaRenderer.js.map +2 -2
  6. package/lib/WithRootStore.d.ts +18 -0
  7. package/lib/WithStore.js +2 -1
  8. package/lib/WithStore.js.map +2 -2
  9. package/lib/actions/CmptAction.js +26 -4
  10. package/lib/actions/CmptAction.js.map +2 -2
  11. package/lib/actions/PageAction.d.ts +32 -0
  12. package/lib/actions/PageAction.js +72 -0
  13. package/lib/actions/PageAction.js.map +13 -0
  14. package/lib/actions/index.d.ts +1 -0
  15. package/lib/actions/index.js +1 -0
  16. package/lib/actions/index.js.map +2 -2
  17. package/lib/components/Alert2.js +4 -2
  18. package/lib/components/Alert2.js.map +2 -2
  19. package/lib/components/AssociatedSelection.js +9 -2
  20. package/lib/components/AssociatedSelection.js.map +2 -2
  21. package/lib/components/Avatar.d.ts +20 -20
  22. package/lib/components/BarCode.js +1 -1
  23. package/lib/components/BarCode.js.map +2 -2
  24. package/lib/components/CalendarMobile.d.ts +84 -84
  25. package/lib/components/Card.d.ts +20 -20
  26. package/lib/components/Cascader.d.ts +2 -0
  27. package/lib/components/Cascader.js +28 -12
  28. package/lib/components/Cascader.js.map +2 -2
  29. package/lib/components/Checkbox.d.ts +24 -23
  30. package/lib/components/Checkbox.js +5 -1
  31. package/lib/components/Checkbox.js.map +2 -2
  32. package/lib/components/CityArea.js +3 -0
  33. package/lib/components/CityArea.js.map +2 -2
  34. package/lib/components/Collapse.d.ts +20 -20
  35. package/lib/components/DatePicker.d.ts +87 -84
  36. package/lib/components/DatePicker.js +48 -11
  37. package/lib/components/DatePicker.js.map +2 -2
  38. package/lib/components/DateRangePicker.d.ts +285 -171
  39. package/lib/components/DateRangePicker.js +471 -66
  40. package/lib/components/DateRangePicker.js.map +2 -2
  41. package/lib/components/Drawer.js +1 -1
  42. package/lib/components/Drawer.js.map +2 -2
  43. package/lib/components/ListGroup.d.ts +21 -21
  44. package/lib/components/Modal.js +1 -1
  45. package/lib/components/Modal.js.map +2 -2
  46. package/lib/components/MonthRangePicker.d.ts +84 -84
  47. package/lib/components/Overlay.d.ts +1 -0
  48. package/lib/components/Overlay.js +4 -3
  49. package/lib/components/Overlay.js.map +2 -2
  50. package/lib/components/Progress.d.ts +29 -24
  51. package/lib/components/Progress.js +52 -21
  52. package/lib/components/Progress.js.map +2 -2
  53. package/lib/components/PullRefresh.d.ts +86 -0
  54. package/lib/components/PullRefresh.js +135 -0
  55. package/lib/components/PullRefresh.js.map +13 -0
  56. package/lib/components/Radios.d.ts +22 -22
  57. package/lib/components/Radios.js +3 -5
  58. package/lib/components/Radios.js.map +2 -2
  59. package/lib/components/Range.d.ts +2 -2
  60. package/lib/components/Range.js +24 -11
  61. package/lib/components/Range.js.map +2 -2
  62. package/lib/components/Spinner.d.ts +200 -107
  63. package/lib/components/Spinner.js +30 -26
  64. package/lib/components/Spinner.js.map +2 -2
  65. package/lib/components/Steps.d.ts +6 -0
  66. package/lib/components/Steps.js +13 -9
  67. package/lib/components/Steps.js.map +2 -2
  68. package/lib/components/Tabs.d.ts +27 -23
  69. package/lib/components/Tabs.js +37 -22
  70. package/lib/components/Tabs.js.map +2 -2
  71. package/lib/components/Tooltip.d.ts +4 -0
  72. package/lib/components/Tooltip.js +6 -4
  73. package/lib/components/Tooltip.js.map +2 -2
  74. package/lib/components/TooltipWrapper.d.ts +87 -24
  75. package/lib/components/TooltipWrapper.js +40 -8
  76. package/lib/components/TooltipWrapper.js.map +2 -2
  77. package/lib/components/Transfer.d.ts +84 -84
  78. package/lib/components/TransferDropDown.d.ts +84 -84
  79. package/lib/components/Tree.d.ts +87 -85
  80. package/lib/components/Tree.js +13 -5
  81. package/lib/components/Tree.js.map +2 -2
  82. package/lib/components/TreeSelection.d.ts +84 -84
  83. package/lib/components/calendar/Calendar.js +3 -12
  84. package/lib/components/calendar/Calendar.js.map +2 -2
  85. package/lib/components/calendar/TimeView.d.ts +1 -0
  86. package/lib/components/calendar/TimeView.js +7 -0
  87. package/lib/components/calendar/TimeView.js.map +2 -2
  88. package/lib/components/calendar/YearsView.js +3 -3
  89. package/lib/components/calendar/YearsView.js.map +2 -2
  90. package/lib/components/condition-builder/Expression.d.ts +1 -0
  91. package/lib/components/condition-builder/Expression.js +4 -4
  92. package/lib/components/condition-builder/Expression.js.map +2 -2
  93. package/lib/components/condition-builder/Field.d.ts +1 -0
  94. package/lib/components/condition-builder/Field.js +3 -2
  95. package/lib/components/condition-builder/Field.js.map +2 -2
  96. package/lib/components/condition-builder/Group.d.ts +1 -0
  97. package/lib/components/condition-builder/Group.js +2 -2
  98. package/lib/components/condition-builder/Group.js.map +2 -2
  99. package/lib/components/condition-builder/GroupOrItem.d.ts +1 -0
  100. package/lib/components/condition-builder/GroupOrItem.js +2 -2
  101. package/lib/components/condition-builder/GroupOrItem.js.map +2 -2
  102. package/lib/components/condition-builder/InputSwitch.d.ts +2 -1
  103. package/lib/components/condition-builder/InputSwitch.js +2 -2
  104. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  105. package/lib/components/condition-builder/Item.d.ts +1 -0
  106. package/lib/components/condition-builder/Item.js +9 -8
  107. package/lib/components/condition-builder/Item.js.map +2 -2
  108. package/lib/components/condition-builder/Value.d.ts +1 -0
  109. package/lib/components/condition-builder/Value.js +5 -5
  110. package/lib/components/condition-builder/Value.js.map +2 -2
  111. package/lib/components/condition-builder/index.d.ts +1 -0
  112. package/lib/components/condition-builder/index.js +2 -2
  113. package/lib/components/condition-builder/index.js.map +2 -2
  114. package/lib/components/formula/Editor.d.ts +90 -86
  115. package/lib/components/formula/Editor.js +26 -4
  116. package/lib/components/formula/Editor.js.map +2 -2
  117. package/lib/components/formula/Picker.d.ts +5 -0
  118. package/lib/components/formula/Picker.js +21 -4
  119. package/lib/components/formula/Picker.js.map +2 -2
  120. package/lib/components/icons.js +2 -0
  121. package/lib/components/icons.js.map +2 -2
  122. package/lib/factory.d.ts +5 -0
  123. package/lib/factory.js +24 -3
  124. package/lib/factory.js.map +2 -2
  125. package/lib/icons/trash.js +10 -0
  126. package/lib/index.d.ts +1 -0
  127. package/lib/index.js +2 -1
  128. package/lib/index.js.map +2 -2
  129. package/lib/locale/de-DE.js +18 -1
  130. package/lib/locale/de-DE.js.map +2 -2
  131. package/lib/locale/en-US.js +18 -1
  132. package/lib/locale/en-US.js.map +2 -2
  133. package/lib/locale/zh-CN.js +18 -1
  134. package/lib/locale/zh-CN.js.map +2 -2
  135. package/lib/renderers/Action.d.ts +3 -1
  136. package/lib/renderers/Action.js +23 -5
  137. package/lib/renderers/Action.js.map +2 -2
  138. package/lib/renderers/App.d.ts +1 -0
  139. package/lib/renderers/App.js +3 -0
  140. package/lib/renderers/App.js.map +2 -2
  141. package/lib/renderers/ButtonGroup.d.ts +2 -2
  142. package/lib/renderers/ButtonGroup.js.map +1 -1
  143. package/lib/renderers/CRUD.d.ts +8 -0
  144. package/lib/renderers/CRUD.js +12 -5
  145. package/lib/renderers/CRUD.js.map +2 -2
  146. package/lib/renderers/Carousel.d.ts +1 -0
  147. package/lib/renderers/Carousel.js +13 -1
  148. package/lib/renderers/Carousel.js.map +2 -2
  149. package/lib/renderers/Chart.d.ts +1 -0
  150. package/lib/renderers/Chart.js +3 -0
  151. package/lib/renderers/Chart.js.map +2 -2
  152. package/lib/renderers/Dialog.d.ts +5 -0
  153. package/lib/renderers/Dialog.js +7 -3
  154. package/lib/renderers/Dialog.js.map +2 -2
  155. package/lib/renderers/Drawer.d.ts +1 -0
  156. package/lib/renderers/Drawer.js +6 -1
  157. package/lib/renderers/Drawer.js.map +2 -2
  158. package/lib/renderers/DropDownButton.d.ts +2 -0
  159. package/lib/renderers/DropDownButton.js +13 -4
  160. package/lib/renderers/DropDownButton.js.map +2 -2
  161. package/lib/renderers/Form/Checkbox.d.ts +5 -2
  162. package/lib/renderers/Form/Checkbox.js +2 -2
  163. package/lib/renderers/Form/Checkbox.js.map +2 -2
  164. package/lib/renderers/Form/Checkboxes.d.ts +7 -2
  165. package/lib/renderers/Form/Checkboxes.js +101 -12
  166. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  167. package/lib/renderers/Form/Combo.d.ts +6 -4
  168. package/lib/renderers/Form/Combo.js +132 -45
  169. package/lib/renderers/Form/Combo.js.map +2 -2
  170. package/lib/renderers/Form/DiffEditor.d.ts +3 -2
  171. package/lib/renderers/Form/Editor.d.ts +2 -2
  172. package/lib/renderers/Form/InputCity.d.ts +87 -84
  173. package/lib/renderers/Form/InputCity.js +48 -3
  174. package/lib/renderers/Form/InputCity.js.map +2 -2
  175. package/lib/renderers/Form/InputDate.js +10 -3
  176. package/lib/renderers/Form/InputDate.js.map +2 -2
  177. package/lib/renderers/Form/InputDateRange.d.ts +5 -0
  178. package/lib/renderers/Form/InputDateRange.js +12 -3
  179. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  180. package/lib/renderers/Form/InputFile.js +19 -8
  181. package/lib/renderers/Form/InputFile.js.map +2 -2
  182. package/lib/renderers/Form/InputFormula.d.ts +4 -0
  183. package/lib/renderers/Form/InputFormula.js +2 -2
  184. package/lib/renderers/Form/InputFormula.js.map +2 -2
  185. package/lib/renderers/Form/InputImage.js +18 -7
  186. package/lib/renderers/Form/InputImage.js.map +2 -2
  187. package/lib/renderers/Form/InputMonthRange.js +5 -1
  188. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  189. package/lib/renderers/Form/InputRange.d.ts +2 -2
  190. package/lib/renderers/Form/InputRange.js +13 -14
  191. package/lib/renderers/Form/InputRange.js.map +2 -2
  192. package/lib/renderers/Form/InputTable.js +4 -2
  193. package/lib/renderers/Form/InputTable.js.map +2 -2
  194. package/lib/renderers/Form/InputText.d.ts +1 -1
  195. package/lib/renderers/Form/InputText.js +8 -10
  196. package/lib/renderers/Form/InputText.js.map +2 -2
  197. package/lib/renderers/Form/InputTree.d.ts +5 -0
  198. package/lib/renderers/Form/InputTree.js +51 -2
  199. package/lib/renderers/Form/InputTree.js.map +2 -2
  200. package/lib/renderers/Form/Item.d.ts +79 -76
  201. package/lib/renderers/Form/Item.js +3 -1
  202. package/lib/renderers/Form/Item.js.map +2 -2
  203. package/lib/renderers/Form/NestedSelect.d.ts +4 -0
  204. package/lib/renderers/Form/NestedSelect.js +14 -5
  205. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  206. package/lib/renderers/Form/Options.js +61 -27
  207. package/lib/renderers/Form/Options.js.map +2 -2
  208. package/lib/renderers/Form/Select.js +4 -2
  209. package/lib/renderers/Form/Select.js.map +2 -2
  210. package/lib/renderers/Form/Textarea.js +2 -1
  211. package/lib/renderers/Form/Textarea.js.map +2 -2
  212. package/lib/renderers/Form/TreeSelect.d.ts +11 -2
  213. package/lib/renderers/Form/TreeSelect.js +56 -10
  214. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  215. package/lib/renderers/Form/index.d.ts +3 -0
  216. package/lib/renderers/Form/index.js +53 -16
  217. package/lib/renderers/Form/index.js.map +2 -2
  218. package/lib/renderers/Form/wrapControl.d.ts +10 -0
  219. package/lib/renderers/Form/wrapControl.js +41 -19
  220. package/lib/renderers/Form/wrapControl.js.map +2 -2
  221. package/lib/renderers/Nav.d.ts +82 -67
  222. package/lib/renderers/Nav.js +49 -13
  223. package/lib/renderers/Nav.js.map +2 -2
  224. package/lib/renderers/Page.d.ts +21 -0
  225. package/lib/renderers/Page.js +56 -17
  226. package/lib/renderers/Page.js.map +2 -2
  227. package/lib/renderers/Progress.d.ts +4 -7
  228. package/lib/renderers/Progress.js +3 -3
  229. package/lib/renderers/Progress.js.map +2 -2
  230. package/lib/renderers/Service.d.ts +3 -0
  231. package/lib/renderers/Service.js +55 -20
  232. package/lib/renderers/Service.js.map +2 -2
  233. package/lib/renderers/Spinner.d.ts +58 -2
  234. package/lib/renderers/Spinner.js +8 -1
  235. package/lib/renderers/Spinner.js.map +2 -2
  236. package/lib/renderers/Steps.d.ts +8 -0
  237. package/lib/renderers/Steps.js +2 -2
  238. package/lib/renderers/Steps.js.map +2 -2
  239. package/lib/renderers/Table/ColumnToggler.d.ts +4 -0
  240. package/lib/renderers/Table/ColumnToggler.js +11 -6
  241. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  242. package/lib/renderers/Table/TableCell.js +27 -1
  243. package/lib/renderers/Table/TableCell.js.map +2 -2
  244. package/lib/renderers/Table/TableRow.js +1 -1
  245. package/lib/renderers/Table/TableRow.js.map +2 -2
  246. package/lib/renderers/Table/index.d.ts +2 -0
  247. package/lib/renderers/Table/index.js +23 -10
  248. package/lib/renderers/Table/index.js.map +2 -2
  249. package/lib/renderers/Tabs.d.ts +14 -2
  250. package/lib/renderers/Tabs.js +24 -8
  251. package/lib/renderers/Tabs.js.map +2 -2
  252. package/lib/renderers/TooltipWrapper.d.ts +133 -0
  253. package/lib/renderers/TooltipWrapper.js +70 -0
  254. package/lib/renderers/TooltipWrapper.js.map +13 -0
  255. package/lib/renderers/Wizard.d.ts +7 -3
  256. package/lib/renderers/Wizard.js +269 -152
  257. package/lib/renderers/Wizard.js.map +2 -2
  258. package/lib/store/combo.d.ts +2 -2
  259. package/lib/store/crud.d.ts +1 -0
  260. package/lib/store/crud.js +55 -19
  261. package/lib/store/crud.js.map +2 -2
  262. package/lib/store/form.d.ts +1 -1
  263. package/lib/store/form.js +5 -1
  264. package/lib/store/form.js.map +2 -2
  265. package/lib/store/formItem.js +1 -1
  266. package/lib/store/formItem.js.map +2 -2
  267. package/lib/store/index.d.ts +5 -0
  268. package/lib/store/index.js +14 -0
  269. package/lib/store/index.js.map +2 -2
  270. package/lib/store/table.d.ts +2 -2
  271. package/lib/store/table.js +4 -4
  272. package/lib/store/table.js.map +2 -2
  273. package/lib/themes/ang-ie11.css +965 -210
  274. package/lib/themes/ang.css +955 -175
  275. package/lib/themes/ang.css.map +1 -1
  276. package/lib/themes/antd-ie11.css +1080 -325
  277. package/lib/themes/antd.css +956 -176
  278. package/lib/themes/antd.css.map +1 -1
  279. package/lib/themes/cxd-ie11.css +1048 -293
  280. package/lib/themes/cxd.css +961 -180
  281. package/lib/themes/cxd.css.map +1 -1
  282. package/lib/themes/dark-ie11.css +965 -210
  283. package/lib/themes/dark.css +955 -175
  284. package/lib/themes/dark.css.map +1 -1
  285. package/lib/themes/default-ie11.css +1048 -293
  286. package/lib/themes/default.css +961 -180
  287. package/lib/themes/default.css.map +1 -1
  288. package/lib/types.d.ts +3 -1
  289. package/lib/types.js.map +1 -1
  290. package/lib/utils/ColorScale.d.ts +19 -0
  291. package/lib/utils/ColorScale.js +104 -0
  292. package/lib/utils/ColorScale.js.map +13 -0
  293. package/lib/utils/api.js +20 -4
  294. package/lib/utils/api.js.map +2 -2
  295. package/lib/utils/columnsSplit.d.ts +1 -0
  296. package/lib/utils/columnsSplit.js +40 -0
  297. package/lib/utils/columnsSplit.js.map +13 -0
  298. package/lib/utils/debug.d.ts +1 -1
  299. package/lib/utils/debug.js +16 -22
  300. package/lib/utils/debug.js.map +2 -2
  301. package/lib/utils/dom.d.ts +1 -1
  302. package/lib/utils/dom.js +7 -5
  303. package/lib/utils/dom.js.map +2 -2
  304. package/lib/utils/position.js +0 -1
  305. package/lib/utils/position.js.map +2 -2
  306. package/lib/utils/scrollPosition.d.ts +6 -0
  307. package/lib/utils/scrollPosition.js +31 -0
  308. package/lib/utils/scrollPosition.js.map +13 -0
  309. package/package.json +3 -2
  310. package/schema.json +30213 -29222
  311. package/scss/_properties.scss +67 -25
  312. package/scss/components/_alert.scss +1 -1
  313. package/scss/components/_barcode.scss +1 -1
  314. package/scss/components/_button-group.scss +15 -0
  315. package/scss/components/_carousel.scss +1 -0
  316. package/scss/components/_column-toggler.scss +21 -11
  317. package/scss/components/_debug.scss +3 -3
  318. package/scss/components/_formula.scss +19 -1
  319. package/scss/components/_nav.scss +51 -6
  320. package/scss/components/_progress.scss +7 -14
  321. package/scss/components/_pull-refresh.scss +25 -0
  322. package/scss/components/_spinner.scss +134 -56
  323. package/scss/components/_steps.scss +199 -8
  324. package/scss/components/_tabs.scss +145 -13
  325. package/scss/components/_tooltip.scss +76 -9
  326. package/scss/components/form/_checks.scss +125 -2
  327. package/scss/components/form/_combo.scss +13 -1
  328. package/scss/components/form/_date-range.scss +27 -2
  329. package/scss/components/form/_date.scss +25 -0
  330. package/scss/components/form/_editor.scss +2 -1
  331. package/scss/components/form/_file.scss +4 -0
  332. package/scss/components/form/_form.scss +31 -8
  333. package/scss/components/form/_number.scss +5 -2
  334. package/scss/components/form/_select.scss +0 -1
  335. package/scss/components/form/_textarea.scss +1 -23
  336. package/scss/components/form/_transfer.scss +3 -2
  337. package/scss/themes/_antd-variables.scss +1 -1
  338. package/scss/themes/_common.scss +1 -0
  339. package/scss/themes/_cxd-variables.scss +6 -5
  340. package/sdk/ang-ie11.css +1059 -198
  341. package/sdk/ang.css +1050 -164
  342. package/sdk/antd-ie11.css +1167 -306
  343. package/sdk/antd.css +1051 -165
  344. package/sdk/barcode.js +51 -51
  345. package/sdk/charts.js +14 -14
  346. package/sdk/codemirror.js +7 -7
  347. package/sdk/color-picker.js +65 -65
  348. package/sdk/cropperjs.js +2 -2
  349. package/sdk/cxd-ie11.css +1145 -284
  350. package/sdk/cxd.css +1056 -169
  351. package/sdk/dark-ie11.css +1056 -195
  352. package/sdk/dark.css +1050 -164
  353. package/sdk/exceljs.js +1 -1
  354. package/sdk/locale/de-DE.js +18 -1
  355. package/sdk/markdown.js +69 -69
  356. package/sdk/papaparse.js +1 -1
  357. package/sdk/renderers/Form/CityDB.js +1 -1
  358. package/sdk/rest.js +17 -17
  359. package/sdk/rich-text.js +62 -62
  360. package/sdk/sdk-ie11.css +1145 -284
  361. package/sdk/sdk.css +1056 -169
  362. package/sdk/sdk.js +1321 -1273
  363. package/sdk/thirds/hls.js/hls.js +1 -1
  364. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  365. package/sdk/tinymce.js +57 -57
  366. package/src/Schema.ts +15 -2
  367. package/src/SchemaRenderer.tsx +32 -14
  368. package/src/WithStore.tsx +3 -1
  369. package/src/actions/CmptAction.ts +28 -0
  370. package/src/actions/PageAction.ts +62 -0
  371. package/src/actions/index.ts +1 -0
  372. package/src/components/Alert2.tsx +9 -3
  373. package/src/components/AssociatedSelection.tsx +9 -3
  374. package/src/components/BarCode.tsx +2 -2
  375. package/src/components/Cascader.tsx +37 -11
  376. package/src/components/Checkbox.tsx +11 -5
  377. package/src/components/CityArea.tsx +3 -0
  378. package/src/components/DatePicker.tsx +68 -22
  379. package/src/components/DateRangePicker.tsx +551 -88
  380. package/src/components/Drawer.tsx +1 -0
  381. package/src/components/Modal.tsx +1 -0
  382. package/src/components/Overlay.tsx +6 -3
  383. package/src/components/Progress.tsx +64 -33
  384. package/src/components/PullRefresh.tsx +197 -0
  385. package/src/components/Radios.tsx +6 -17
  386. package/src/components/Range.tsx +26 -12
  387. package/src/components/Spinner.tsx +77 -42
  388. package/src/components/Steps.tsx +28 -27
  389. package/src/components/Tabs.tsx +51 -21
  390. package/src/components/Tooltip.tsx +12 -3
  391. package/src/components/TooltipWrapper.tsx +140 -33
  392. package/src/components/Tree.tsx +19 -5
  393. package/src/components/calendar/Calendar.tsx +4 -13
  394. package/src/components/calendar/TimeView.tsx +12 -0
  395. package/src/components/calendar/YearsView.tsx +3 -4
  396. package/src/components/condition-builder/Expression.tsx +6 -1
  397. package/src/components/condition-builder/Field.tsx +5 -1
  398. package/src/components/condition-builder/Group.tsx +4 -1
  399. package/src/components/condition-builder/GroupOrItem.tsx +4 -1
  400. package/src/components/condition-builder/InputSwitch.tsx +4 -1
  401. package/src/components/condition-builder/Item.tsx +28 -4
  402. package/src/components/condition-builder/Value.tsx +7 -1
  403. package/src/components/condition-builder/index.tsx +4 -2
  404. package/src/components/formula/Editor.tsx +46 -10
  405. package/src/components/formula/Picker.tsx +32 -1
  406. package/src/components/icons.tsx +2 -0
  407. package/src/factory.tsx +31 -3
  408. package/src/icons/trash.svg +8 -0
  409. package/src/index.tsx +1 -0
  410. package/src/locale/de-DE.ts +18 -1
  411. package/src/locale/en-US.ts +18 -1
  412. package/src/locale/zh-CN.ts +18 -1
  413. package/src/renderers/Action.tsx +24 -2
  414. package/src/renderers/App.tsx +4 -0
  415. package/src/renderers/ButtonGroup.tsx +2 -2
  416. package/src/renderers/CRUD.tsx +23 -5
  417. package/src/renderers/Carousel.tsx +8 -0
  418. package/src/renderers/Chart.tsx +4 -0
  419. package/src/renderers/Dialog.tsx +21 -3
  420. package/src/renderers/Drawer.tsx +14 -2
  421. package/src/renderers/DropDownButton.tsx +14 -3
  422. package/src/renderers/Form/Checkbox.tsx +11 -2
  423. package/src/renderers/Form/Checkboxes.tsx +106 -23
  424. package/src/renderers/Form/Combo.tsx +179 -66
  425. package/src/renderers/Form/InputCity.tsx +46 -5
  426. package/src/renderers/Form/InputDate.tsx +18 -4
  427. package/src/renderers/Form/InputDateRange.tsx +27 -3
  428. package/src/renderers/Form/InputFile.tsx +23 -7
  429. package/src/renderers/Form/InputFormula.tsx +7 -0
  430. package/src/renderers/Form/InputImage.tsx +22 -6
  431. package/src/renderers/Form/InputMonthRange.tsx +7 -1
  432. package/src/renderers/Form/InputRange.tsx +20 -22
  433. package/src/renderers/Form/InputTable.tsx +6 -2
  434. package/src/renderers/Form/InputText.tsx +14 -4
  435. package/src/renderers/Form/InputTree.tsx +40 -2
  436. package/src/renderers/Form/Item.tsx +7 -0
  437. package/src/renderers/Form/NestedSelect.tsx +23 -4
  438. package/src/renderers/Form/Options.tsx +26 -7
  439. package/src/renderers/Form/Select.tsx +5 -3
  440. package/src/renderers/Form/Textarea.tsx +3 -1
  441. package/src/renderers/Form/TreeSelect.tsx +47 -9
  442. package/src/renderers/Form/index.tsx +56 -25
  443. package/src/renderers/Form/wrapControl.tsx +23 -12
  444. package/src/renderers/Nav.tsx +231 -33
  445. package/src/renderers/Page.tsx +97 -35
  446. package/src/renderers/Progress.tsx +9 -11
  447. package/src/renderers/Service.tsx +66 -27
  448. package/src/renderers/Spinner.tsx +85 -3
  449. package/src/renderers/Steps.tsx +14 -0
  450. package/src/renderers/Table/ColumnToggler.tsx +36 -11
  451. package/src/renderers/Table/TableCell.tsx +39 -1
  452. package/src/renderers/Table/TableRow.tsx +1 -1
  453. package/src/renderers/Table/index.tsx +43 -19
  454. package/src/renderers/Tabs.tsx +90 -31
  455. package/src/renderers/TooltipWrapper.tsx +262 -0
  456. package/src/renderers/Wizard.tsx +169 -93
  457. package/src/store/crud.ts +50 -5
  458. package/src/store/form.ts +8 -3
  459. package/src/store/formItem.ts +1 -2
  460. package/src/store/index.ts +20 -0
  461. package/src/store/table.ts +4 -4
  462. package/src/types.ts +8 -1
  463. package/src/utils/ColorScale.ts +138 -0
  464. package/src/utils/api.ts +26 -4
  465. package/src/utils/columnsSplit.tsx +57 -0
  466. package/src/utils/debug.tsx +17 -24
  467. package/src/utils/dom.tsx +7 -6
  468. package/src/utils/position.ts +0 -1
  469. package/src/utils/scrollPosition.ts +29 -0
@@ -1,14 +1,11 @@
1
1
  import React from 'react';
2
2
  import {findDOMNode} from 'react-dom';
3
- import {
4
- FormItem,
5
- FormControlProps,
6
- FormBaseControl,
7
- FormControlSchemaAlias
8
- } from './Item';
9
- import {Schema, Action, Api} from '../../types';
3
+ import cloneDeep from 'lodash/cloneDeep';
4
+ import {FormItem, FormControlProps, FormBaseControl} from './Item';
5
+ import {Action, Api} from '../../types';
10
6
  import {ComboStore, IComboStore} from '../../store/combo';
11
7
  import {default as CTabs, Tab} from '../../components/Tabs';
8
+ import Button from '../../components/Button';
12
9
 
13
10
  import {
14
11
  guid,
@@ -24,7 +21,7 @@ import {evalExpression, filter} from '../../utils/tpl';
24
21
  import find from 'lodash/find';
25
22
  import Select from '../../components/Select';
26
23
  import {dataMapping, resolveVariable} from '../../utils/tpl-builtin';
27
- import {isEffectiveApi} from '../../utils/api';
24
+ import {isEffectiveApi, str2AsyncFunction} from '../../utils/api';
28
25
  import {Alert2} from '../../components';
29
26
  import memoize from 'lodash/memoize';
30
27
  import {Icon} from '../../components/icons';
@@ -32,8 +29,6 @@ import {isAlive} from 'mobx-state-tree';
32
29
  import {
33
30
  SchemaApi,
34
31
  SchemaClassName,
35
- SchemaCollection,
36
- SchemaIcon,
37
32
  SchemaObject,
38
33
  SchemaTpl
39
34
  } from '../../Schema';
@@ -255,6 +250,8 @@ export interface ComboControlSchema extends FormBaseControl {
255
250
  };
256
251
  }
257
252
 
253
+ export type ComboRendererEvent = 'add' | 'delete' | 'tabsChange';
254
+
258
255
  function pickVars(vars: any, fields: Array<string>) {
259
256
  return fields.reduce((data: any, key: string) => {
260
257
  data[key] = resolveVariable(key, vars);
@@ -291,6 +288,8 @@ export default class ComboControl extends React.Component<ComboProps> {
291
288
  | 'tabsMode'
292
289
  | 'tabsStyle'
293
290
  | 'placeholder'
291
+ | 'itemClassName'
292
+ | 'itemsWrapperClassName'
294
293
  > = {
295
294
  minLength: 0,
296
295
  maxLength: 0,
@@ -307,7 +306,9 @@ export default class ComboControl extends React.Component<ComboProps> {
307
306
  deleteIcon: '',
308
307
  tabsMode: false,
309
308
  tabsStyle: '',
310
- placeholder: 'placeholder.empty'
309
+ placeholder: 'placeholder.empty',
310
+ itemClassName: '',
311
+ itemsWrapperClassName: ''
311
312
  };
312
313
  static propsList: Array<string> = [
313
314
  'minLength',
@@ -334,7 +335,9 @@ export default class ComboControl extends React.Component<ComboProps> {
334
335
  'items',
335
336
  'conditions',
336
337
  'messages',
337
- 'formStore'
338
+ 'formStore',
339
+ 'itemClassName',
340
+ 'itemsWrapperClassName'
338
341
  ];
339
342
 
340
343
  subForms: Array<any> = [];
@@ -359,7 +362,7 @@ export default class ComboControl extends React.Component<ComboProps> {
359
362
  this.handleFormInit = this.handleFormInit.bind(this);
360
363
  this.handleAction = this.handleAction.bind(this);
361
364
  this.addItem = this.addItem.bind(this);
362
- this.removeItem = this.removeItem.bind(this);
365
+ this.deleteItem = this.deleteItem.bind(this);
363
366
  this.dragTipRef = this.dragTipRef.bind(this);
364
367
  this.flush = this.flush.bind(this);
365
368
  this.handleComboTypeChange = this.handleComboTypeChange.bind(this);
@@ -469,9 +472,17 @@ export default class ComboControl extends React.Component<ComboProps> {
469
472
  this.props.onChange(value, submitOnChange, true);
470
473
  }
471
474
 
472
- addItem() {
473
- const {flat, joinValues, delimiter, scaffold, disabled, submitOnChange} =
474
- this.props;
475
+ async addItem() {
476
+ const {
477
+ flat,
478
+ joinValues,
479
+ delimiter,
480
+ scaffold,
481
+ disabled,
482
+ submitOnChange,
483
+ data,
484
+ dispatchEvent
485
+ } = this.props;
475
486
 
476
487
  if (disabled) {
477
488
  return;
@@ -479,6 +490,18 @@ export default class ComboControl extends React.Component<ComboProps> {
479
490
 
480
491
  let value = this.getValueAsArray();
481
492
 
493
+ const rendererEvent = await dispatchEvent(
494
+ 'add',
495
+ createObject(data, {
496
+ value:
497
+ flat && joinValues ? value.join(delimiter || ',') : cloneDeep(value)
498
+ })
499
+ );
500
+
501
+ if (rendererEvent?.prevented) {
502
+ return;
503
+ }
504
+
482
505
  value.push(
483
506
  flat
484
507
  ? scaffold || ''
@@ -495,7 +518,7 @@ export default class ComboControl extends React.Component<ComboProps> {
495
518
  this.props.onChange(value, submitOnChange, true);
496
519
  }
497
520
 
498
- async removeItem(key: number) {
521
+ async deleteItem(key: number) {
499
522
  const {
500
523
  flat,
501
524
  joinValues,
@@ -505,7 +528,8 @@ export default class ComboControl extends React.Component<ComboProps> {
505
528
  deleteConfirmText,
506
529
  data,
507
530
  env,
508
- translate: __
531
+ translate: __,
532
+ dispatchEvent
509
533
  } = this.props;
510
534
 
511
535
  if (disabled) {
@@ -515,6 +539,19 @@ export default class ComboControl extends React.Component<ComboProps> {
515
539
  let value = this.getValueAsArray();
516
540
  const ctx = createObject(data, value[key]);
517
541
 
542
+ const rendererEvent = await dispatchEvent(
543
+ 'delete',
544
+ createObject(data, {
545
+ key,
546
+ value:
547
+ flat && joinValues ? value.join(delimiter || ',') : cloneDeep(value)
548
+ })
549
+ );
550
+
551
+ if (rendererEvent?.prevented) {
552
+ return;
553
+ }
554
+
518
555
  if (isEffectiveApi(deleteApi, ctx)) {
519
556
  const confirmed = await env.confirm(
520
557
  deleteConfirmText ? filter(deleteConfirmText, ctx) : __('deleteConfirm')
@@ -598,7 +635,8 @@ export default class ComboControl extends React.Component<ComboProps> {
598
635
 
599
636
  if (
600
637
  syncDefaultValue === false ||
601
- this.subFormDefaultValues.length !== this.subForms.length
638
+ this.subFormDefaultValues.length !==
639
+ this.subForms.filter(item => item !== undefined).length
602
640
  ) {
603
641
  return;
604
642
  }
@@ -654,7 +692,7 @@ export default class ComboControl extends React.Component<ComboProps> {
654
692
  const {onAction} = this.props;
655
693
 
656
694
  if (action.actionType === 'delete') {
657
- action.index !== void 0 && this.removeItem(action.index);
695
+ action.index !== void 0 && this.deleteItem(action.index);
658
696
  return;
659
697
  }
660
698
 
@@ -866,8 +904,19 @@ export default class ComboControl extends React.Component<ComboProps> {
866
904
  }
867
905
 
868
906
  @autobind
869
- handleTabSelect(key: number) {
870
- const {store} = this.props;
907
+ async handleTabSelect(key: number) {
908
+ const {store, data, dispatchEvent} = this.props;
909
+
910
+ const rendererEvent = await dispatchEvent(
911
+ 'tabsChange',
912
+ createObject(data, {
913
+ key
914
+ })
915
+ );
916
+
917
+ if (rendererEvent?.prevented) {
918
+ return;
919
+ }
871
920
 
872
921
  store.setActiveKey(key);
873
922
  }
@@ -998,8 +1047,8 @@ export default class ComboControl extends React.Component<ComboProps> {
998
1047
  ) {
999
1048
  toolbar = (
1000
1049
  <div
1001
- onClick={this.removeItem.bind(this, index)}
1002
- key="remove"
1050
+ onClick={this.deleteItem.bind(this, index)}
1051
+ key="delete"
1003
1052
  className={cx(
1004
1053
  `Combo-tab-delBtn ${!store.removable ? 'is-disabled' : ''}`
1005
1054
  )}
@@ -1105,6 +1154,99 @@ export default class ComboControl extends React.Component<ComboProps> {
1105
1154
  );
1106
1155
  }
1107
1156
 
1157
+ renderDelBtn(value: any, index: number) {
1158
+ const {
1159
+ classPrefix: ns,
1160
+ classnames: cx,
1161
+ render,
1162
+ store,
1163
+ deleteIcon,
1164
+ translate: __,
1165
+ itemRemovableOn,
1166
+ disabled,
1167
+ removable,
1168
+ deleteBtn
1169
+ } = this.props;
1170
+
1171
+ const finnalRemovable =
1172
+ store.removable !== false && // minLength ?
1173
+ !disabled && // 控件自身是否禁用
1174
+ removable !== false; // 是否可以删除
1175
+
1176
+ if (
1177
+ !(
1178
+ finnalRemovable && // 表达式判断单条是否可删除
1179
+ (!itemRemovableOn || evalExpression(itemRemovableOn, value) !== false)
1180
+ )
1181
+ ) {
1182
+ // 不符合删除条件,则不渲染删除按钮
1183
+ return null;
1184
+ }
1185
+
1186
+ // deleteBtn是对象,则根据自定义配置渲染按钮
1187
+ if (isObject(deleteBtn)) {
1188
+ return render('delete-btn', {
1189
+ ...deleteBtn,
1190
+ type: 'button',
1191
+ className: cx(
1192
+ 'Combo-delController',
1193
+ deleteBtn ? deleteBtn.classname : ''
1194
+ ),
1195
+ onClick: (e: any) => {
1196
+ if (!deleteBtn.onClick) {
1197
+ this.deleteItem(index);
1198
+ return;
1199
+ }
1200
+
1201
+ let originClickHandler = deleteBtn.onClick;
1202
+ if (typeof originClickHandler === 'string') {
1203
+ originClickHandler = str2AsyncFunction(
1204
+ deleteBtn.onClick,
1205
+ 'e',
1206
+ 'index',
1207
+ 'props'
1208
+ );
1209
+ }
1210
+ const result = originClickHandler(e, index, this.props);
1211
+ if (result && result.then) {
1212
+ result.then(() => {
1213
+ this.deleteItem(index);
1214
+ });
1215
+ } else {
1216
+ this.deleteItem(index);
1217
+ }
1218
+ }
1219
+ });
1220
+ }
1221
+
1222
+ // deleteBtn是string,则渲染按钮文本
1223
+ if (typeof deleteBtn === 'string') {
1224
+ return render('delete-btn', {
1225
+ type: 'button',
1226
+ className: cx('Combo-delController'),
1227
+ label: deleteBtn,
1228
+ onClick: this.deleteItem.bind(this, index)
1229
+ });
1230
+ }
1231
+
1232
+ // 如果上述按钮不满足,则渲染默认按钮
1233
+ return (
1234
+ <a
1235
+ onClick={this.deleteItem.bind(this, index)}
1236
+ key="delete"
1237
+ className={cx(`Combo-delBtn ${!store.removable ? 'is-disabled' : ''}`)}
1238
+ data-tooltip={__('delete')}
1239
+ data-position="bottom"
1240
+ >
1241
+ {deleteIcon ? (
1242
+ <i className={deleteIcon} />
1243
+ ) : (
1244
+ <Icon icon="status-close" className="icon" />
1245
+ )}
1246
+ </a>
1247
+ );
1248
+ }
1249
+
1108
1250
  renderMultipe() {
1109
1251
  if (this.props.tabsMode) {
1110
1252
  return this.renderTabsMode();
@@ -1127,18 +1269,18 @@ export default class ComboControl extends React.Component<ComboProps> {
1127
1269
  addable,
1128
1270
  removable,
1129
1271
  typeSwitchable,
1130
- itemRemovableOn,
1131
1272
  delimiter,
1132
1273
  canAccessSuperData,
1133
1274
  addIcon,
1134
1275
  dragIcon,
1135
- deleteIcon,
1136
1276
  noBorder,
1137
1277
  conditions,
1138
1278
  lazyLoad,
1139
1279
  changeImmediately,
1140
1280
  placeholder,
1141
- translate: __
1281
+ translate: __,
1282
+ itemClassName,
1283
+ itemsWrapperClassName
1142
1284
  } = this.props;
1143
1285
 
1144
1286
  let items = this.props.items;
@@ -1148,11 +1290,6 @@ export default class ComboControl extends React.Component<ComboProps> {
1148
1290
  value = value.split(delimiter || ',');
1149
1291
  }
1150
1292
 
1151
- const finnalRemovable =
1152
- store.removable !== false && // minLength ?
1153
- !disabled && // 控件自身是否禁用
1154
- removable !== false; // 是否可以删除
1155
-
1156
1293
  return (
1157
1294
  <div
1158
1295
  className={cx(
@@ -1165,34 +1302,10 @@ export default class ComboControl extends React.Component<ComboProps> {
1165
1302
  : ''
1166
1303
  )}
1167
1304
  >
1168
- <div className={cx(`Combo-items`)}>
1305
+ <div className={cx(`Combo-items`, itemsWrapperClassName)}>
1169
1306
  {Array.isArray(value) && value.length ? (
1170
1307
  value.map((value, index, thelist) => {
1171
- let delBtn: any = null;
1172
-
1173
- if (
1174
- finnalRemovable && // 表达式判断单条是否可删除
1175
- (!itemRemovableOn ||
1176
- evalExpression(itemRemovableOn, value) !== false)
1177
- ) {
1178
- delBtn = (
1179
- <a
1180
- onClick={this.removeItem.bind(this, index)}
1181
- key="remove"
1182
- className={cx(
1183
- `Combo-delBtn ${!store.removable ? 'is-disabled' : ''}`
1184
- )}
1185
- data-tooltip={__('delete')}
1186
- data-position="bottom"
1187
- >
1188
- {deleteIcon ? (
1189
- <i className={deleteIcon} />
1190
- ) : (
1191
- <Icon icon="status-close" className="icon" />
1192
- )}
1193
- </a>
1194
- );
1195
- }
1308
+ let delBtn: any = this.renderDelBtn(value, index);
1196
1309
 
1197
1310
  const data = this.formatValue(value, index);
1198
1311
  let condition: ComboCondition | null = null;
@@ -1214,7 +1327,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1214
1327
 
1215
1328
  return (
1216
1329
  <div
1217
- className={cx(`Combo-item`)}
1330
+ className={cx(`Combo-item`, itemClassName)}
1218
1331
  key={this.keys[index] || (this.keys[index] = guid())}
1219
1332
  >
1220
1333
  {!disabled && draggable && thelist.length > 1 ? (
@@ -1315,15 +1428,14 @@ export default class ComboControl extends React.Component<ComboProps> {
1315
1428
  }
1316
1429
  )
1317
1430
  ) : (
1318
- <button
1319
- type="button"
1431
+ <Button
1432
+ className={cx(`Combo-addBtn`, addButtonClassName)}
1433
+ tooltip={__('Combo.add')}
1320
1434
  onClick={this.addItem}
1321
- className={cx(`Button Combo-addBtn`, addButtonClassName)}
1322
- data-tooltip={__('Combo.add')}
1323
1435
  >
1324
1436
  {addIcon ? <Icon icon="plus" className="icon" /> : null}
1325
1437
  <span>{__(addButtonText || 'Combo.add')}</span>
1326
- </button>
1438
+ </Button>
1327
1439
  )
1328
1440
  ) : null}
1329
1441
  {draggable ? (
@@ -1352,7 +1464,8 @@ export default class ComboControl extends React.Component<ComboProps> {
1352
1464
  disabled,
1353
1465
  typeSwitchable,
1354
1466
  nullable,
1355
- translate: __
1467
+ translate: __,
1468
+ itemClassName
1356
1469
  } = this.props;
1357
1470
 
1358
1471
  let items = this.props.items;
@@ -1373,7 +1486,7 @@ export default class ComboControl extends React.Component<ComboProps> {
1373
1486
  disabled ? 'is-disabled' : ''
1374
1487
  )}
1375
1488
  >
1376
- <div className={cx(`Combo-item`)}>
1489
+ <div className={cx(`Combo-item`, itemClassName)}>
1377
1490
  {condition && typeSwitchable !== false ? (
1378
1491
  <div className={cx('Combo-itemTag')}>
1379
1492
  <label>{__('Combo.type')}</label>
@@ -4,7 +4,8 @@ import {ClassNamesFn, themeable, ThemeProps} from '../../theme';
4
4
  import Spinner from '../../components/Spinner';
5
5
  import Select from '../../components/Select';
6
6
  import CityArea from '../../components/CityArea';
7
- import {autobind, isMobile} from '../../utils/helper';
7
+ import {autobind, isMobile, createObject} from '../../utils/helper';
8
+ import {Action} from '../../types';
8
9
  import {Option} from './Options';
9
10
  import {localeable, LocaleProps} from '../../locale';
10
11
 
@@ -299,7 +300,16 @@ export class CityPicker extends React.Component<
299
300
  const {onChange, allowStreet, joinValues, extractValue, delimiter} =
300
301
  this.props;
301
302
 
302
- const {code, province, city, district, street} = this.state;
303
+ const {
304
+ code,
305
+ province,
306
+ city,
307
+ district,
308
+ street,
309
+ provinceCode,
310
+ cityCode,
311
+ districtCode
312
+ } = this.state;
303
313
 
304
314
  if (typeof extractValue === 'undefined' ? joinValues : extractValue) {
305
315
  code
@@ -312,8 +322,11 @@ export class CityPicker extends React.Component<
312
322
  } else {
313
323
  onChange({
314
324
  code,
325
+ provinceCode,
315
326
  province,
327
+ cityCode,
316
328
  city,
329
+ districtCode,
317
330
  district,
318
331
  street
319
332
  });
@@ -420,10 +433,38 @@ export interface LocationControlProps extends FormControlProps {
420
433
  allowStreet?: boolean;
421
434
  }
422
435
  export class LocationControl extends React.Component<LocationControlProps> {
436
+
437
+ @autobind
438
+ doAction(action: Action, data: object, throwErrors: boolean) {
439
+ const {resetValue, onChange} = this.props;
440
+ const actionType = action?.actionType as string;
441
+
442
+ if (!!~['clear', 'reset'].indexOf(actionType)) {
443
+ onChange(resetValue ?? '');
444
+ }
445
+ }
446
+
447
+ @autobind
448
+ async handleChange(value: number | string) {
449
+ const {dispatchEvent, data, onChange} = this.props;
450
+
451
+ const rendererEvent = await dispatchEvent(
452
+ 'change',
453
+ createObject(data, {
454
+ value
455
+ })
456
+ );
457
+
458
+ if (rendererEvent?.prevented) {
459
+ return;
460
+ }
461
+
462
+ onChange(value);
463
+ }
464
+
423
465
  render() {
424
466
  const {
425
467
  value,
426
- onChange,
427
468
  allowCity,
428
469
  allowDistrict,
429
470
  extractValue,
@@ -441,7 +482,7 @@ export class LocationControl extends React.Component<LocationControlProps> {
441
482
  popOverContainer={
442
483
  env && env.getModalContainer ? env.getModalContainer : undefined
443
484
  }
444
- onChange={onChange}
485
+ onChange={this.handleChange}
445
486
  allowCity={allowCity}
446
487
  allowDistrict={allowDistrict}
447
488
  extractValue={extractValue}
@@ -454,7 +495,7 @@ export class LocationControl extends React.Component<LocationControlProps> {
454
495
  <ThemedCity
455
496
  searchable={searchable}
456
497
  value={value}
457
- onChange={onChange}
498
+ onChange={this.handleChange}
458
499
  allowCity={allowCity}
459
500
  allowDistrict={allowDistrict}
460
501
  extractValue={extractValue}
@@ -423,8 +423,14 @@ export default class DateControl extends React.PureComponent<
423
423
  // 动作
424
424
  doAction(action: Action, data: object, throwErrors: boolean) {
425
425
  const {resetValue, onChange} = this.props;
426
+
426
427
  if (action.actionType === 'clear') {
427
- onChange(resetValue ?? '');
428
+ onChange('');
429
+ return;
430
+ }
431
+
432
+ if (action.actionType === 'reset' && resetValue) {
433
+ onChange(resetValue);
428
434
  }
429
435
  }
430
436
 
@@ -457,15 +463,23 @@ export default class DateControl extends React.PureComponent<
457
463
  useMobileUI,
458
464
  ...rest
459
465
  } = this.props;
466
+ const mobileUI = useMobileUI && isMobile();
460
467
 
461
468
  if (type === 'time' && timeFormat) {
462
469
  format = timeFormat;
463
470
  }
464
471
 
465
- const mobileUI = useMobileUI && isMobile();
466
-
467
472
  return (
468
- <div className={cx(`DateControl`, className)}>
473
+ <div
474
+ className={cx(
475
+ `DateControl`,
476
+ {
477
+ 'is-date': /date$/.test(type),
478
+ 'is-datetime': /datetime$/.test(type)
479
+ },
480
+ className
481
+ )}
482
+ >
469
483
  <DatePicker
470
484
  {...rest}
471
485
  useMobileUI={useMobileUI}
@@ -7,9 +7,11 @@ import includes from 'lodash/includes';
7
7
  import DateRangePicker, {
8
8
  DateRangePicker as BaseDateRangePicker
9
9
  } from '../../components/DateRangePicker';
10
- import { isMobile, createObject, autobind } from '../../utils/helper';
10
+ import {isMobile, createObject, autobind} from '../../utils/helper';
11
11
  import {Action} from '../../types';
12
12
 
13
+ import type {ShortCuts} from '../../components/DatePicker';
14
+
13
15
  /**
14
16
  * DateRange 日期范围控件
15
17
  * 文档:https://baidu.gitee.io/amis/docs/components/form/date-range
@@ -75,6 +77,11 @@ export interface DateRangeControlSchema extends FormBaseControl {
75
77
  * 开启后变成非弹出模式,即内联模式。
76
78
  */
77
79
  embed?: boolean;
80
+
81
+ /**
82
+ * 日期范围快捷键
83
+ */
84
+ ranges?: string | Array<ShortCuts>;
78
85
  }
79
86
 
80
87
  export interface DateRangeProps
@@ -173,8 +180,14 @@ export default class DateRangeControl extends React.Component<DateRangeProps> {
173
180
  // 动作
174
181
  doAction(action: Action, data: object, throwErrors: boolean) {
175
182
  const {resetValue, onChange} = this.props;
183
+
176
184
  if (action.actionType === 'clear') {
177
- onChange(resetValue ?? '');
185
+ onChange('');
186
+ return;
187
+ }
188
+
189
+ if (action.actionType === 'reset' && resetValue) {
190
+ onChange(resetValue);
178
191
  }
179
192
  }
180
193
 
@@ -206,8 +219,19 @@ export default class DateRangeControl extends React.Component<DateRangeProps> {
206
219
  ...rest
207
220
  } = this.props;
208
221
  const mobileUI = useMobileUI && isMobile();
222
+ const comptType = this.props?.type;
223
+
209
224
  return (
210
- <div className={cx(`${ns}DateRangeControl`, className)}>
225
+ <div
226
+ className={cx(
227
+ `${ns}DateRangeControl`,
228
+ {
229
+ 'is-date': /date-/.test(comptType),
230
+ 'is-datetime': /datetime-/.test(comptType)
231
+ },
232
+ className
233
+ )}
234
+ >
211
235
  <DateRangePicker
212
236
  {...rest}
213
237
  useMobileUI={useMobileUI}
@@ -28,6 +28,7 @@ import {
28
28
  SchemaUrlPath
29
29
  } from '../../Schema';
30
30
  import merge from 'lodash/merge';
31
+ import omit from 'lodash/omit';
31
32
 
32
33
  /**
33
34
  * File 文件上传控件
@@ -817,7 +818,11 @@ export default class FileControl extends React.Component<FileProps, FileState> {
817
818
  let value =
818
819
  (ret.data as any).value || (ret.data as any).url || ret.data;
819
820
 
820
- const dispatcher = await this.dispatchEvent('success', file);
821
+ const dispatcher = await this.dispatchEvent('success', {
822
+ ...file,
823
+ value,
824
+ state: 'uploaded'
825
+ });
821
826
  if (dispatcher?.prevented) {
822
827
  return;
823
828
  }
@@ -913,13 +918,16 @@ export default class FileControl extends React.Component<FileProps, FileState> {
913
918
  }
914
919
 
915
920
  syncAutoFill() {
916
- const {autoFill, multiple, onBulkChange, data} = this.props;
917
- if (!isEmpty(autoFill) && onBulkChange) {
921
+ const {autoFill, multiple, onBulkChange, data, name} = this.props;
922
+ // 排除自身的字段,否则会无限更新state
923
+ const excludeSelfAutoFill = omit(autoFill, name || '');
924
+
925
+ if (!isEmpty(excludeSelfAutoFill) && onBulkChange) {
918
926
  const files = this.state.files.filter(
919
927
  file => ~['uploaded', 'init', 'ready'].indexOf(file.state as string)
920
928
  );
921
929
  const toSync = dataMapping(
922
- autoFill,
930
+ excludeSelfAutoFill,
923
931
  multiple
924
932
  ? {
925
933
  items: files
@@ -1216,11 +1224,19 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1216
1224
 
1217
1225
  async dispatchEvent(e: string, data?: Record<string, any>) {
1218
1226
  const {dispatchEvent} = this.props;
1219
- data = data || this.state.files;
1227
+ const getEventData = (item: Record<string, any>) => ({
1228
+ name: item.path || item.name,
1229
+ value: item.value,
1230
+ state: item.state,
1231
+ error: item.error
1232
+ });
1233
+ const value = data
1234
+ ? getEventData(data)
1235
+ : this.state.files.map(item => getEventData(item));
1220
1236
  return dispatchEvent(
1221
1237
  e,
1222
1238
  createObject(this.props.data, {
1223
- file: data
1239
+ file: value
1224
1240
  })
1225
1241
  );
1226
1242
  }
@@ -1312,7 +1328,7 @@ export default class FileControl extends React.Component<FileProps, FileState> {
1312
1328
  >
1313
1329
  <input disabled={disabled} {...getInputProps()} />
1314
1330
 
1315
- {drag ? (
1331
+ {drag || isDragActive ? (
1316
1332
  <div
1317
1333
  className={cx('FileControl-acceptTip')}
1318
1334
  onClick={this.handleSelect}