amis 1.4.1 → 1.4.2-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 (516) 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 +2 -2
  14. package/lib/components/Badge.js +13 -7
  15. package/lib/components/Badge.js.map +2 -2
  16. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  17. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  18. package/lib/components/ChainedSelection.js.map +13 -0
  19. package/lib/components/Collapse.js +1 -1
  20. package/lib/components/Collapse.js.map +2 -2
  21. package/lib/components/ColorPicker.d.ts +84 -84
  22. package/lib/components/DatePicker.d.ts +84 -84
  23. package/lib/components/DatePicker.js +1 -1
  24. package/lib/components/DatePicker.js.map +2 -2
  25. package/lib/components/DateRangePicker.d.ts +84 -84
  26. package/lib/components/DateRangePicker.js +1 -1
  27. package/lib/components/DateRangePicker.js.map +2 -2
  28. package/lib/components/Editor.d.ts +84 -84
  29. package/lib/components/GroupedSelection.d.ts +907 -0
  30. package/lib/components/GroupedSelection.js +48 -0
  31. package/lib/components/GroupedSelection.js.map +13 -0
  32. package/lib/components/InputBox.d.ts +22 -21
  33. package/lib/components/InputBox.js +11 -3
  34. package/lib/components/InputBox.js.map +2 -2
  35. package/lib/components/Link.d.ts +84 -0
  36. package/lib/components/Link.js +43 -0
  37. package/lib/components/Link.js.map +13 -0
  38. package/lib/components/ListGroup.d.ts +21 -21
  39. package/lib/components/ModalManager.js +1 -1
  40. package/lib/components/ModalManager.js.map +2 -2
  41. package/lib/components/MonthRangePicker.d.ts +84 -84
  42. package/lib/components/MonthRangePicker.js +1 -1
  43. package/lib/components/MonthRangePicker.js.map +2 -2
  44. package/lib/components/NumberInput.d.ts +20 -20
  45. package/lib/components/PickerColumn.d.ts +514 -0
  46. package/lib/components/PickerColumn.js +279 -0
  47. package/lib/components/PickerColumn.js.map +13 -0
  48. package/lib/components/PickerContainer.d.ts +513 -0
  49. package/lib/components/PickerContainer.js +96 -0
  50. package/lib/components/PickerContainer.js.map +13 -0
  51. package/lib/components/Radios.d.ts +22 -21
  52. package/lib/components/Radios.js +1 -0
  53. package/lib/components/Radios.js.map +2 -2
  54. package/lib/components/Rating.d.ts +21 -21
  55. package/lib/components/ResultBox.d.ts +84 -84
  56. package/lib/components/ResultBox.js +10 -2
  57. package/lib/components/ResultBox.js.map +2 -2
  58. package/lib/components/RichText.js +17 -53
  59. package/lib/components/RichText.js.map +2 -2
  60. package/lib/components/SearchBox.d.ts +84 -84
  61. package/lib/components/SearchBox.js +4 -4
  62. package/lib/components/SearchBox.js.map +2 -2
  63. package/lib/components/Select.d.ts +245 -237
  64. package/lib/components/Select.js +28 -4
  65. package/lib/components/Select.js.map +2 -2
  66. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  67. package/lib/components/Selection.js +134 -0
  68. package/lib/components/Selection.js.map +13 -0
  69. package/lib/components/SparkLine.d.ts +85 -84
  70. package/lib/components/SparkLine.js +2 -2
  71. package/lib/components/SparkLine.js.map +2 -2
  72. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  73. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  74. package/lib/components/TableSelection.js.map +13 -0
  75. package/lib/components/Tabs.d.ts +20 -20
  76. package/lib/components/TabsTransfer.d.ts +84 -84
  77. package/lib/components/TabsTransfer.js +9 -9
  78. package/lib/components/TabsTransfer.js.map +2 -2
  79. package/lib/components/TabsTransferPicker.d.ts +489 -0
  80. package/lib/components/TabsTransferPicker.js +60 -0
  81. package/lib/components/TabsTransferPicker.js.map +13 -0
  82. package/lib/components/Toast.js +2 -2
  83. package/lib/components/Toast.js.map +2 -2
  84. package/lib/components/Transfer.d.ts +908 -274
  85. package/lib/components/Transfer.js +31 -24
  86. package/lib/components/Transfer.js.map +2 -2
  87. package/lib/components/TransferDropDown.d.ts +488 -0
  88. package/lib/components/TransferDropDown.js +59 -0
  89. package/lib/components/TransferDropDown.js.map +13 -0
  90. package/lib/components/TransferPicker.d.ts +493 -0
  91. package/lib/components/TransferPicker.js +60 -0
  92. package/lib/components/TransferPicker.js.map +13 -0
  93. package/lib/components/Tree.d.ts +84 -84
  94. package/lib/components/Tree.js +5 -3
  95. package/lib/components/Tree.js.map +2 -2
  96. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  97. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  98. package/lib/components/TreeSelection.js.map +13 -0
  99. package/lib/components/WithRemoteConfig.js +1 -1
  100. package/lib/components/WithRemoteConfig.js.map +2 -2
  101. package/lib/components/condition-builder/Field.js +5 -2
  102. package/lib/components/condition-builder/Field.js.map +2 -2
  103. package/lib/components/condition-builder/Func.js +2 -2
  104. package/lib/components/condition-builder/Func.js.map +2 -2
  105. package/lib/components/condition-builder/InputSwitch.js +2 -2
  106. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  107. package/lib/components/condition-builder/Item.js +3 -3
  108. package/lib/components/condition-builder/Item.js.map +2 -2
  109. package/lib/components/icons.js +14 -0
  110. package/lib/components/icons.js.map +2 -2
  111. package/lib/components/index.d.ts +8 -8
  112. package/lib/components/index.js +16 -16
  113. package/lib/components/index.js.map +2 -2
  114. package/lib/envOverwrite.js.map +2 -2
  115. package/lib/factory.d.ts +4 -0
  116. package/lib/factory.js +4 -2
  117. package/lib/factory.js.map +2 -2
  118. package/lib/helper.css.map +1 -1
  119. package/lib/hooks/index.d.ts +5 -0
  120. package/lib/hooks/index.js +14 -0
  121. package/lib/hooks/index.js.map +13 -0
  122. package/lib/hooks/use-set-state.d.ts +2 -0
  123. package/lib/hooks/use-set-state.js +15 -0
  124. package/lib/hooks/use-set-state.js.map +13 -0
  125. package/lib/hooks/use-touch.d.ts +16 -0
  126. package/lib/hooks/use-touch.js +73 -0
  127. package/lib/hooks/use-touch.js.map +13 -0
  128. package/lib/hooks/use-update-effect.d.ts +3 -0
  129. package/lib/hooks/use-update-effect.js +17 -0
  130. package/lib/hooks/use-update-effect.js.map +13 -0
  131. package/lib/icons/clock.js +10 -0
  132. package/lib/icons/download.js +7 -0
  133. package/lib/icons/status-close.js +11 -0
  134. package/lib/icons/status-fail.js +11 -0
  135. package/lib/icons/status-info.js +10 -0
  136. package/lib/icons/status-success.js +11 -0
  137. package/lib/icons/status-warning.js +10 -0
  138. package/lib/index.d.ts +3 -0
  139. package/lib/index.js +4 -1
  140. package/lib/index.js.map +2 -2
  141. package/lib/locale/de-DE.js +4 -0
  142. package/lib/locale/de-DE.js.map +2 -2
  143. package/lib/locale/en-US.js +5 -0
  144. package/lib/locale/en-US.js.map +2 -2
  145. package/lib/locale/zh-CN.js +8 -3
  146. package/lib/locale/zh-CN.js.map +2 -2
  147. package/lib/renderers/Action.d.ts +8 -0
  148. package/lib/renderers/Action.js +17 -4
  149. package/lib/renderers/Action.js.map +2 -2
  150. package/lib/renderers/AnchorNav.d.ts +1 -0
  151. package/lib/renderers/AnchorNav.js +2 -2
  152. package/lib/renderers/AnchorNav.js.map +2 -2
  153. package/lib/renderers/Avatar.js +3 -3
  154. package/lib/renderers/Avatar.js.map +2 -2
  155. package/lib/renderers/Breadcrumb.js +1 -1
  156. package/lib/renderers/Breadcrumb.js.map +2 -2
  157. package/lib/renderers/CRUD.d.ts +9 -0
  158. package/lib/renderers/CRUD.js +43 -8
  159. package/lib/renderers/CRUD.js.map +2 -2
  160. package/lib/renderers/Card.d.ts +4 -0
  161. package/lib/renderers/Card.js +29 -23
  162. package/lib/renderers/Card.js.map +2 -2
  163. package/lib/renderers/Chart.js +1 -1
  164. package/lib/renderers/Chart.js.map +2 -2
  165. package/lib/renderers/Collapse.js +3 -2
  166. package/lib/renderers/Collapse.js.map +2 -2
  167. package/lib/renderers/Dialog.js +0 -3
  168. package/lib/renderers/Dialog.js.map +2 -2
  169. package/lib/renderers/Drawer.js +0 -3
  170. package/lib/renderers/Drawer.js.map +2 -2
  171. package/lib/renderers/DropDownButton.d.ts +5 -1
  172. package/lib/renderers/DropDownButton.js +8 -6
  173. package/lib/renderers/DropDownButton.js.map +2 -2
  174. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  175. package/lib/renderers/Form/Checkbox.js +4 -0
  176. package/lib/renderers/Form/Checkbox.js.map +2 -2
  177. package/lib/renderers/Form/Combo.js +2 -2
  178. package/lib/renderers/Form/Combo.js.map +2 -2
  179. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  180. package/lib/renderers/Form/Editor.d.ts +3 -2
  181. package/lib/renderers/Form/InputCity.d.ts +84 -84
  182. package/lib/renderers/Form/InputCity.js +7 -6
  183. package/lib/renderers/Form/InputCity.js.map +2 -2
  184. package/lib/renderers/Form/InputColor.d.ts +84 -84
  185. package/lib/renderers/Form/InputFile.d.ts +6 -0
  186. package/lib/renderers/Form/InputFile.js +30 -10
  187. package/lib/renderers/Form/InputFile.js.map +2 -2
  188. package/lib/renderers/Form/InputImage.js +16 -7
  189. package/lib/renderers/Form/InputImage.js.map +2 -2
  190. package/lib/renderers/Form/Item.d.ts +1 -1
  191. package/lib/renderers/Form/Item.js.map +1 -1
  192. package/lib/renderers/Form/Options.js +19 -6
  193. package/lib/renderers/Form/Options.js.map +2 -2
  194. package/lib/renderers/Form/Picker.js +2 -2
  195. package/lib/renderers/Form/Picker.js.map +2 -2
  196. package/lib/renderers/Form/Select.d.ts +42 -4
  197. package/lib/renderers/Form/Select.js +37 -3
  198. package/lib/renderers/Form/Select.js.map +2 -2
  199. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  200. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  201. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  202. package/lib/renderers/Form/Transfer.js +18 -3
  203. package/lib/renderers/Form/Transfer.js.map +2 -2
  204. package/lib/renderers/Form/TransferPicker.d.ts +52 -0
  205. package/lib/renderers/Form/TransferPicker.js +43 -0
  206. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  207. package/lib/renderers/Form/TreeSelect.js +2 -2
  208. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  209. package/lib/renderers/Form/index.d.ts +5 -0
  210. package/lib/renderers/Form/index.js +5 -3
  211. package/lib/renderers/Form/index.js.map +2 -2
  212. package/lib/renderers/Form/wrapControl.js +15 -3
  213. package/lib/renderers/Form/wrapControl.js.map +2 -2
  214. package/lib/renderers/IFrame.js +3 -5
  215. package/lib/renderers/IFrame.js.map +2 -2
  216. package/lib/renderers/Image.d.ts +1 -0
  217. package/lib/renderers/Image.js +15 -1
  218. package/lib/renderers/Image.js.map +2 -2
  219. package/lib/renderers/Json.d.ts +4 -0
  220. package/lib/renderers/Json.js +4 -13
  221. package/lib/renderers/Json.js.map +2 -2
  222. package/lib/renderers/Link.d.ts +18 -3
  223. package/lib/renderers/Link.js +27 -15
  224. package/lib/renderers/Link.js.map +2 -2
  225. package/lib/renderers/List.js +1 -1
  226. package/lib/renderers/List.js.map +2 -2
  227. package/lib/renderers/Log.d.ts +2 -2
  228. package/lib/renderers/Log.js +7 -1
  229. package/lib/renderers/Log.js.map +2 -2
  230. package/lib/renderers/Mapping.d.ts +9 -2
  231. package/lib/renderers/Mapping.js +18 -6
  232. package/lib/renderers/Mapping.js.map +2 -2
  233. package/lib/renderers/Nav.d.ts +62 -36
  234. package/lib/renderers/Nav.js +272 -96
  235. package/lib/renderers/Nav.js.map +2 -2
  236. package/lib/renderers/Portlet.d.ts +125 -0
  237. package/lib/renderers/Portlet.js +156 -0
  238. package/lib/renderers/Portlet.js.map +13 -0
  239. package/lib/renderers/Property.js +2 -1
  240. package/lib/renderers/Property.js.map +2 -2
  241. package/lib/renderers/SearchBox.d.ts +6 -1
  242. package/lib/renderers/SearchBox.js +19 -5
  243. package/lib/renderers/SearchBox.js.map +2 -2
  244. package/lib/renderers/SparkLine.d.ts +4 -0
  245. package/lib/renderers/SparkLine.js.map +2 -2
  246. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  247. package/lib/renderers/Table/ColumnToggler.js +216 -0
  248. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  249. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  250. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  251. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  252. package/lib/renderers/Table/TableBody.d.ts +4 -0
  253. package/lib/renderers/Table/TableCell.js +3 -1
  254. package/lib/renderers/Table/TableCell.js.map +2 -2
  255. package/lib/renderers/Table/TableContent.d.ts +4 -1
  256. package/lib/renderers/Table/TableContent.js +21 -1
  257. package/lib/renderers/Table/TableContent.js.map +2 -2
  258. package/lib/renderers/Table/index.d.ts +19 -2
  259. package/lib/renderers/Table/index.js +172 -57
  260. package/lib/renderers/Table/index.js.map +2 -2
  261. package/lib/renderers/Tabs.js +9 -1
  262. package/lib/renderers/Tabs.js.map +2 -2
  263. package/lib/renderers/WebComponent.js +1 -1
  264. package/lib/renderers/WebComponent.js.map +2 -2
  265. package/lib/store/combo.d.ts +2 -16
  266. package/lib/store/crud.js +3 -7
  267. package/lib/store/crud.js.map +2 -2
  268. package/lib/store/form.d.ts +1 -1
  269. package/lib/store/form.js +5 -6
  270. package/lib/store/form.js.map +2 -2
  271. package/lib/store/service.js +5 -4
  272. package/lib/store/service.js.map +2 -2
  273. package/lib/store/table.d.ts +260 -3
  274. package/lib/store/table.js +69 -11
  275. package/lib/store/table.js.map +2 -2
  276. package/lib/themes/ang-ie11.css +888 -238
  277. package/lib/themes/ang.css +888 -238
  278. package/lib/themes/ang.css.map +1 -1
  279. package/lib/themes/antd-ie11.css +888 -238
  280. package/lib/themes/antd.css +888 -238
  281. package/lib/themes/antd.css.map +1 -1
  282. package/lib/themes/cxd-ie11.css +1446 -457
  283. package/lib/themes/cxd.css +1446 -457
  284. package/lib/themes/cxd.css.map +1 -1
  285. package/lib/themes/dark-ie11.css +888 -238
  286. package/lib/themes/dark.css +888 -238
  287. package/lib/themes/dark.css.map +1 -1
  288. package/lib/themes/default.css +1446 -457
  289. package/lib/themes/default.css.map +1 -1
  290. package/lib/types.d.ts +37 -0
  291. package/lib/types.js +0 -5
  292. package/lib/types.js.map +2 -2
  293. package/lib/utils/api.d.ts +3 -2
  294. package/lib/utils/api.js +31 -15
  295. package/lib/utils/api.js.map +2 -2
  296. package/lib/utils/dom.d.ts +4 -0
  297. package/lib/utils/dom.js +11 -1
  298. package/lib/utils/dom.js.map +2 -2
  299. package/lib/utils/handleAction.d.ts +7 -0
  300. package/lib/utils/handleAction.js +30 -0
  301. package/lib/utils/handleAction.js.map +13 -0
  302. package/lib/utils/helper.d.ts +3 -1
  303. package/lib/utils/helper.js +14 -5
  304. package/lib/utils/helper.js.map +2 -2
  305. package/lib/utils/icon.js +3 -0
  306. package/lib/utils/icon.js.map +2 -2
  307. package/lib/utils/tpl-builtin.d.ts +1 -1
  308. package/lib/utils/tpl-builtin.js +25 -15
  309. package/lib/utils/tpl-builtin.js.map +2 -2
  310. package/package.json +1 -1
  311. package/schema.json +3341 -998
  312. package/scss/_mixins.scss +1 -3
  313. package/scss/_properties.scss +63 -4
  314. package/scss/_utilities.scss +4 -0
  315. package/scss/base/_common.scss +3 -0
  316. package/scss/base/_normalize.scss +2 -0
  317. package/scss/components/_anchor-nav.scss +88 -29
  318. package/scss/components/_button.scss +4 -5
  319. package/scss/components/_card.scss +8 -14
  320. package/scss/components/_collapse.scss +41 -8
  321. package/scss/components/_column-toggler.scss +234 -0
  322. package/scss/components/_dropdown.scss +2 -1
  323. package/scss/components/_images.scss +2 -1
  324. package/scss/components/_input-box.scss +1 -0
  325. package/scss/components/_link.scss +6 -0
  326. package/scss/components/_mapping.scss +6 -0
  327. package/scss/components/_nav.scss +231 -223
  328. package/scss/components/_page.scss +5 -4
  329. package/scss/components/_picker-columns.scss +124 -0
  330. package/scss/components/_popover.scss +13 -0
  331. package/scss/components/_portlet.scss +51 -0
  332. package/scss/components/_progress.scss +2 -0
  333. package/scss/components/_result-box.scss +1 -0
  334. package/scss/components/_status.scss +1 -1
  335. package/scss/components/_steps.scss +1 -1
  336. package/scss/components/_table.scss +51 -1
  337. package/scss/components/form/_checks.scss +0 -351
  338. package/scss/components/form/_color.scss +1 -0
  339. package/scss/components/form/_date-range.scss +2 -0
  340. package/scss/components/form/_date.scss +2 -0
  341. package/scss/components/form/_fieldset.scss +6 -3
  342. package/scss/components/form/_file.scss +16 -4
  343. package/scss/components/form/_form.scss +48 -0
  344. package/scss/components/form/_image.scss +7 -2
  345. package/scss/components/form/_list.scss +1 -0
  346. package/scss/components/form/_location.scss +1 -1
  347. package/scss/components/form/_selection.scss +354 -0
  348. package/scss/components/form/_text.scss +13 -0
  349. package/scss/components/form/_textarea.scss +10 -0
  350. package/scss/components/form/_transfer.scss +77 -18
  351. package/scss/themes/_common.scss +7 -0
  352. package/scss/themes/_cxd-colors.scss +56 -0
  353. package/scss/themes/_cxd-variables.scss +217 -89
  354. package/scss/themes/cxd.scss +370 -0
  355. package/sdk/ang-ie11.css +1117 -392
  356. package/sdk/ang.css +1110 -342
  357. package/sdk/antd-ie11.css +1105 -380
  358. package/sdk/antd.css +1110 -342
  359. package/sdk/charts.js +13 -13
  360. package/sdk/color-picker.js +65 -69
  361. package/sdk/cropperjs.js +2 -2
  362. package/sdk/cxd-ie11.css +2086 -1062
  363. package/sdk/cxd.css +1643 -495
  364. package/sdk/dark-ie11.css +1117 -392
  365. package/sdk/dark.css +1110 -342
  366. package/sdk/exceljs.js +1 -1
  367. package/sdk/helper.css.map +1 -1
  368. package/sdk/iconfont.svg +2513 -0
  369. package/sdk/iconfont.ttf +0 -0
  370. package/sdk/iconfont.woff +0 -0
  371. package/sdk/ie11-patch.css +1 -0
  372. package/sdk/locale/de-DE.js +4 -0
  373. package/sdk/markdown.js +69 -69
  374. package/sdk/papaparse.js +1 -1
  375. package/sdk/renderers/Form/CityDB.js +1 -1
  376. package/sdk/rest.js +20 -28
  377. package/sdk/rich-text.js +62 -62
  378. package/sdk/sdk-ie11.css +2086 -1062
  379. package/sdk/sdk.css +1643 -495
  380. package/sdk/sdk.js +1219 -1165
  381. package/sdk/thirds/hls.js/hls.js +1 -1
  382. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  383. package/sdk/tinymce.js +57 -57
  384. package/src/Schema.ts +32 -0
  385. package/src/components/Alert.tsx +3 -1
  386. package/src/components/AnchorNav.tsx +15 -4
  387. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  388. package/src/components/Badge.tsx +38 -26
  389. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  390. package/src/components/Collapse.tsx +14 -9
  391. package/src/components/DatePicker.tsx +1 -1
  392. package/src/components/DateRangePicker.tsx +23 -11
  393. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  394. package/src/components/InputBox.tsx +11 -10
  395. package/src/components/Link.tsx +85 -0
  396. package/src/components/ModalManager.ts +1 -1
  397. package/src/components/MonthRangePicker.tsx +10 -2
  398. package/src/components/PickerColumn.tsx +429 -0
  399. package/src/components/PickerContainer.tsx +128 -0
  400. package/src/components/Radios.tsx +3 -8
  401. package/src/components/ResultBox.tsx +9 -9
  402. package/src/components/RichText.tsx +17 -57
  403. package/src/components/SearchBox.tsx +4 -5
  404. package/src/components/Select.tsx +60 -5
  405. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  406. package/src/components/SparkLine.tsx +4 -1
  407. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  408. package/src/components/TabsTransfer.tsx +13 -7
  409. package/src/components/TabsTransferPicker.tsx +85 -0
  410. package/src/components/Toast.tsx +5 -5
  411. package/src/components/Transfer.tsx +71 -50
  412. package/src/components/TransferDropDown.tsx +120 -0
  413. package/src/components/TransferPicker.tsx +91 -0
  414. package/src/components/Tree.tsx +6 -8
  415. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  416. package/src/components/WithRemoteConfig.tsx +7 -2
  417. package/src/components/condition-builder/Field.tsx +5 -5
  418. package/src/components/condition-builder/Func.tsx +3 -3
  419. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  420. package/src/components/condition-builder/Item.tsx +5 -12
  421. package/src/components/icons.tsx +15 -0
  422. package/src/components/index.tsx +13 -13
  423. package/src/envOverwrite.ts +0 -1
  424. package/src/factory.tsx +18 -3
  425. package/src/hooks/index.ts +5 -0
  426. package/src/hooks/use-set-state.ts +19 -0
  427. package/src/hooks/use-touch.ts +100 -0
  428. package/src/hooks/use-update-effect.ts +16 -0
  429. package/src/icons/clock.svg +1 -0
  430. package/src/icons/download.svg +4 -0
  431. package/src/icons/status-close.svg +10 -0
  432. package/src/icons/status-fail.svg +10 -0
  433. package/src/icons/status-info.svg +8 -0
  434. package/src/icons/status-success.svg +10 -0
  435. package/src/icons/status-warning.svg +8 -0
  436. package/src/index.tsx +3 -0
  437. package/src/locale/de-DE.ts +4 -0
  438. package/src/locale/en-US.ts +5 -0
  439. package/src/locale/zh-CN.ts +8 -3
  440. package/src/renderers/Action.tsx +33 -2
  441. package/src/renderers/AnchorNav.tsx +4 -0
  442. package/src/renderers/Avatar.tsx +8 -4
  443. package/src/renderers/Breadcrumb.tsx +5 -1
  444. package/src/renderers/CRUD.tsx +63 -28
  445. package/src/renderers/Card.tsx +63 -34
  446. package/src/renderers/Chart.tsx +6 -2
  447. package/src/renderers/Collapse.tsx +4 -2
  448. package/src/renderers/Dialog.tsx +0 -4
  449. package/src/renderers/Drawer.tsx +0 -4
  450. package/src/renderers/DropDownButton.tsx +18 -13
  451. package/src/renderers/Form/Checkbox.tsx +8 -0
  452. package/src/renderers/Form/Combo.tsx +2 -3
  453. package/src/renderers/Form/InputCity.tsx +4 -8
  454. package/src/renderers/Form/InputFile.tsx +66 -24
  455. package/src/renderers/Form/InputImage.tsx +16 -5
  456. package/src/renderers/Form/Item.tsx +3 -2
  457. package/src/renderers/Form/Options.tsx +32 -7
  458. package/src/renderers/Form/Picker.tsx +3 -2
  459. package/src/renderers/Form/Select.tsx +162 -21
  460. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  461. package/src/renderers/Form/Transfer.tsx +19 -4
  462. package/src/renderers/Form/TransferPicker.tsx +145 -0
  463. package/src/renderers/Form/TreeSelect.tsx +25 -0
  464. package/src/renderers/Form/index.tsx +15 -2
  465. package/src/renderers/Form/wrapControl.tsx +28 -3
  466. package/src/renderers/IFrame.tsx +4 -5
  467. package/src/renderers/Image.tsx +10 -0
  468. package/src/renderers/Json.tsx +9 -9
  469. package/src/renderers/Link.tsx +53 -14
  470. package/src/renderers/List.tsx +1 -1
  471. package/src/renderers/Log.tsx +16 -3
  472. package/src/renderers/Mapping.tsx +27 -11
  473. package/src/renderers/Nav.tsx +325 -122
  474. package/src/renderers/Portlet.tsx +423 -0
  475. package/src/renderers/Property.tsx +3 -2
  476. package/src/renderers/SearchBox.tsx +23 -4
  477. package/src/renderers/SparkLine.tsx +5 -0
  478. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  479. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  480. package/src/renderers/Table/TableCell.tsx +16 -1
  481. package/src/renderers/Table/TableContent.tsx +40 -2
  482. package/src/renderers/Table/index.tsx +257 -80
  483. package/src/renderers/Tabs.tsx +9 -1
  484. package/src/renderers/WebComponent.tsx +2 -2
  485. package/src/store/crud.ts +3 -8
  486. package/src/store/form.ts +5 -10
  487. package/src/store/service.ts +5 -4
  488. package/src/store/table.ts +103 -11
  489. package/src/types.ts +57 -0
  490. package/src/utils/api.ts +52 -23
  491. package/src/utils/dom.tsx +12 -0
  492. package/src/utils/handleAction.ts +41 -0
  493. package/src/utils/helper.ts +12 -4
  494. package/src/utils/icon.tsx +4 -0
  495. package/src/utils/tpl-builtin.ts +48 -17
  496. package/dump.rdb +0 -0
  497. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  498. package/lib/components/AssociatedCheckboxes.js +0 -90
  499. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  500. package/lib/components/ChainedCheckboxes.js.map +0 -13
  501. package/lib/components/Checkboxes.js +0 -101
  502. package/lib/components/Checkboxes.js.map +0 -13
  503. package/lib/components/ListCheckboxes.d.ts +0 -739
  504. package/lib/components/ListCheckboxes.js +0 -48
  505. package/lib/components/ListCheckboxes.js.map +0 -13
  506. package/lib/components/ListRadios.d.ts +0 -763
  507. package/lib/components/ListRadios.js +0 -86
  508. package/lib/components/ListRadios.js.map +0 -13
  509. package/lib/components/TableCheckboxes.js.map +0 -13
  510. package/lib/components/TreeCheckboxes.js.map +0 -13
  511. package/lib/components/TreeRadios.d.ts +0 -838
  512. package/lib/components/TreeRadios.js +0 -116
  513. package/lib/components/TreeRadios.js.map +0 -13
  514. package/sdk.zip +0 -0
  515. package/src/components/ListRadios.tsx +0 -159
  516. package/src/components/TreeRadios.tsx +0 -202
@@ -3,6 +3,7 @@ import {iRendererStore} from './iRenderer';
3
3
  import {Api, ApiObject, Payload, fetchOptions} from '../types';
4
4
  import {extendObject, isEmpty, isObject} from '../utils/helper';
5
5
  import {ServerError} from '../utils/errors';
6
+ import {normalizeApiResponseData} from '../utils/api';
6
7
 
7
8
  export const ServiceStore = iRendererStore
8
9
  .named('ServiceStore')
@@ -96,7 +97,7 @@ export const ServiceStore = iRendererStore
96
97
  let replace = !!(api as ApiObject).replaceData;
97
98
  let data = {
98
99
  ...(replace ? {} : self.data),
99
- ...json.data
100
+ ...normalizeApiResponseData(json.data)
100
101
  };
101
102
  reInitData(data, replace);
102
103
  self.hasRemoteData = true;
@@ -176,7 +177,7 @@ export const ServiceStore = iRendererStore
176
177
 
177
178
  json.data &&
178
179
  self.updateData(
179
- json.data,
180
+ normalizeApiResponseData(json.data),
180
181
  undefined,
181
182
  !!(api as ApiObject).replaceData
182
183
  );
@@ -264,7 +265,7 @@ export const ServiceStore = iRendererStore
264
265
 
265
266
  json.data &&
266
267
  self.updateData(
267
- json.data,
268
+ normalizeApiResponseData(json.data),
268
269
  undefined,
269
270
  !!(api as ApiObject).replaceData
270
271
  );
@@ -406,7 +407,7 @@ export const ServiceStore = iRendererStore
406
407
  : {
407
408
  type: 'wrapper',
408
409
  wrap: false,
409
- ...json.data
410
+ ...normalizeApiResponseData(json.data)
410
411
  };
411
412
  self.schemaKey = '' + Date.now();
412
413
  isObject(json.data.data) &&
@@ -45,6 +45,7 @@ export const Column = types
45
45
  checkdisable: false,
46
46
  isPrimary: false,
47
47
  searchable: types.maybe(types.frozen()),
48
+ enableSearch: true,
48
49
  sortable: false,
49
50
  filterable: types.optional(types.frozen(), undefined),
50
51
  fixed: '',
@@ -66,8 +67,13 @@ export const Column = types
66
67
 
67
68
  table.persistSaveToggledColumns();
68
69
  },
70
+
69
71
  setToggled(value: boolean) {
70
72
  self.toggled = value;
73
+ },
74
+
75
+ setEnableSearch(value: boolean) {
76
+ self.enableSearch = value;
71
77
  }
72
78
  }));
73
79
 
@@ -292,6 +298,10 @@ export const TableStore = iRendererStore
292
298
  keepItemSelectionOnPageChange: false
293
299
  })
294
300
  .views(self => {
301
+ function getColumnsExceptBuiltinTypes() {
302
+ return self.columns.filter(item => !/^__/.test(item.type));
303
+ }
304
+
295
305
  function getForms() {
296
306
  return self.formsRef.map(item => ({
297
307
  store: getStoreById(item.id) as IFormStore,
@@ -414,12 +424,12 @@ export const TableStore = iRendererStore
414
424
  return getMovedRows().length;
415
425
  }
416
426
 
417
- function getHoverIndex(): number {
418
- return self.rows.findIndex(item => item.isHover);
427
+ function getHovedRow(): IRow | undefined {
428
+ return flattenTree<IRow>(self.rows).find((item: IRow) => item.isHover);
419
429
  }
420
430
 
421
431
  function getUnSelectedRows() {
422
- return self.rows.filter(item => !item.checked);
432
+ return flattenTree<IRow>(self.rows).filter((item: IRow) => !item.checked);
423
433
  }
424
434
 
425
435
  function getData(superData: any): any {
@@ -499,11 +509,37 @@ export const TableStore = iRendererStore
499
509
  });
500
510
  }
501
511
 
512
+ function getFirstToggledColumnIndex() {
513
+ const column = self.columns.find(
514
+ column => !/^__/.test(column.type) && column.toggled
515
+ );
516
+
517
+ return column == null ? null : column.index;
518
+ }
519
+
520
+ function getSearchableColumns() {
521
+ return self.columns.filter(
522
+ column => column.searchable && isObject(column.searchable)
523
+ );
524
+ }
525
+
502
526
  return {
527
+ get columnsData() {
528
+ return getColumnsExceptBuiltinTypes();
529
+ },
530
+
503
531
  get forms() {
504
532
  return getForms();
505
533
  },
506
534
 
535
+ get searchableColumns() {
536
+ return getSearchableColumns();
537
+ },
538
+
539
+ get activedSearchableColumns() {
540
+ return getSearchableColumns().filter(column => column.enableSearch);
541
+ },
542
+
507
543
  get filteredColumns() {
508
544
  return getFilteredColumns();
509
545
  },
@@ -568,7 +604,9 @@ export const TableStore = iRendererStore
568
604
  },
569
605
 
570
606
  get checkableRows() {
571
- return self.rows.filter(item => item.checkable);
607
+ return flattenTree<IRow>(self.rows).filter(
608
+ (item: IRow) => item.checkable
609
+ );
572
610
  },
573
611
 
574
612
  get expandableRows() {
@@ -583,8 +621,8 @@ export const TableStore = iRendererStore
583
621
  return getMovedRows();
584
622
  },
585
623
 
586
- get hoverIndex() {
587
- return getHoverIndex();
624
+ get hoverRow() {
625
+ return getHovedRow();
588
626
  },
589
627
 
590
628
  get disabledHeadCheckbox() {
@@ -598,6 +636,10 @@ export const TableStore = iRendererStore
598
636
  return maxLength === selectedLength;
599
637
  },
600
638
 
639
+ get firstToggledColumnIndex() {
640
+ return getFirstToggledColumnIndex();
641
+ },
642
+
601
643
  getData,
602
644
 
603
645
  get columnGroup() {
@@ -716,6 +758,51 @@ export const TableStore = iRendererStore
716
758
  }
717
759
  }
718
760
 
761
+ function updateColumns(columns: Array<SColumn>) {
762
+ if (columns && Array.isArray(columns)) {
763
+ columns = columns.filter(column => column).concat();
764
+
765
+ if (!columns.length) {
766
+ columns.push({
767
+ type: 'text',
768
+ label: '空'
769
+ });
770
+ }
771
+
772
+ columns.unshift({
773
+ type: '__expandme',
774
+ toggable: false,
775
+ className: 'Table-expandCell'
776
+ });
777
+
778
+ columns.unshift({
779
+ type: '__checkme',
780
+ fixed: 'left',
781
+ toggable: false,
782
+ className: 'Table-checkCell'
783
+ });
784
+
785
+ columns.unshift({
786
+ type: '__dragme',
787
+ toggable: false,
788
+ className: 'Table-dragCell'
789
+ });
790
+
791
+ columns = columns.map((item, index) => ({
792
+ ...item,
793
+ index,
794
+ rawIndex: index - 3,
795
+ type: item.type || 'plain',
796
+ pristine: item.pristine || item,
797
+ toggled: item.toggled !== false,
798
+ breakpoint: item.breakpoint,
799
+ isPrimary: index === 3
800
+ }));
801
+
802
+ self.columns.replace(columns as any);
803
+ }
804
+ }
805
+
719
806
  function combineCell(arr: Array<SRow>, keys: Array<string>): Array<SRow> {
720
807
  if (!keys.length || !arr.length) {
721
808
  return arr;
@@ -938,9 +1025,10 @@ export const TableStore = iRendererStore
938
1025
 
939
1026
  function updateSelected(selected: Array<any>, valueField?: string) {
940
1027
  self.selectedRows.clear();
941
- self.rows.forEach(item => {
1028
+
1029
+ eachTree(self.rows, item => {
942
1030
  if (~selected.indexOf(item.pristine)) {
943
- self.selectedRows.push(item);
1031
+ self.selectedRows.push(item.id);
944
1032
  } else if (
945
1033
  find(
946
1034
  selected,
@@ -949,9 +1037,10 @@ export const TableStore = iRendererStore
949
1037
  a[valueField || 'value'] == item.pristine[valueField || 'value']
950
1038
  )
951
1039
  ) {
952
- self.selectedRows.push(item);
1040
+ self.selectedRows.push(item.id);
953
1041
  }
954
1042
  });
1043
+
955
1044
  updateCheckDisable();
956
1045
  }
957
1046
 
@@ -1031,8 +1120,10 @@ export const TableStore = iRendererStore
1031
1120
  if (idx === -1) {
1032
1121
  // 如果上一个是选中状态,则将之间的所有 check 都变成可选
1033
1122
  if (lastCheckedRow.checked) {
1034
- if (maxLength && self.selectedRows.length < maxLength) {
1035
- self.selectedRows.push(rowItem);
1123
+ if (maxLength) {
1124
+ if (self.selectedRows.length < maxLength) {
1125
+ self.selectedRows.push(rowItem);
1126
+ }
1036
1127
  } else {
1037
1128
  self.selectedRows.push(rowItem);
1038
1129
  }
@@ -1177,6 +1268,7 @@ export const TableStore = iRendererStore
1177
1268
 
1178
1269
  return {
1179
1270
  update,
1271
+ updateColumns,
1180
1272
  initRows,
1181
1273
  updateSelected,
1182
1274
  toggleAll,
package/src/types.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type {ActionSchema} from './renderers/Action';
1
2
  import {SchemaApiObject} from './Schema';
2
3
 
3
4
  export interface ApiObject extends SchemaApiObject {
@@ -157,3 +158,59 @@ export interface JSONSchema {
157
158
  // export type ExtractProps<
158
159
  // TComponentOrTProps
159
160
  // > = TComponentOrTProps extends React.ComponentType<infer P> ? P : never;
161
+
162
+ /**
163
+ * 事件跟踪的定义
164
+ */
165
+ export interface EventTrack {
166
+ /**
167
+ * 事件类型,目前有以下几种
168
+ *
169
+ * api: 所有 fetcher 前调用
170
+ * url: 打开外部链接,组件有可能是 action 也有可能是 link
171
+ * link: 打开内部链接
172
+ * dialog: action 的弹框
173
+ * drawer: action 的抽出式弹框
174
+ * copy: action 里的复制
175
+ * reload: action 里的 reload
176
+ * email: action 里的 email
177
+ * prev: action 里的 prev
178
+ * next: action 里的 next
179
+ * cancel: action 里的 cancel
180
+ * close: action 里的 close
181
+ * submit: 有可能是 action 里的 submit,也有可能是表单提交
182
+ * confirm: action 里的 confirm
183
+ * add: action 里的 add
184
+ * reset: action 里的 reset
185
+ * reset-and-submit: action 里的 reset-and-submit
186
+ * formItemChange: 表单项内容变化
187
+ * formError: 表单验证失败
188
+ * formSubmit: 表单成功提交,在表单验证成功之后才会触发,这个可能会和 api 重合
189
+ * tabChange: tab 切换
190
+ * netError: api 报错
191
+ */
192
+ eventType:
193
+ | 'api'
194
+ | 'url'
195
+ | 'link'
196
+ | 'dialog'
197
+ | 'drawer'
198
+ | 'copy'
199
+ | 'reload'
200
+ | 'email'
201
+ | 'prev'
202
+ | 'next'
203
+ | 'cancel'
204
+ | 'close'
205
+ | 'submit'
206
+ | 'confirm'
207
+ | 'reset'
208
+ | 'reset-and-submit'
209
+ | 'formItemChange'
210
+ | 'tabChange';
211
+
212
+ /**
213
+ * 事件数据
214
+ */
215
+ eventData: ActionSchema | Api;
216
+ }
package/src/utils/api.ts CHANGED
@@ -1,4 +1,5 @@
1
- import {Api, ApiObject, fetcherResult, Payload} from '../types';
1
+ import omit from 'lodash/omit';
2
+ import {Api, ApiObject, EventTrack, fetcherResult, Payload} from '../types';
2
3
  import {fetcherConfig} from '../factory';
3
4
  import {tokenize, dataMapping} from './tpl-builtin';
4
5
  import {evalExpression} from './tpl';
@@ -12,6 +13,7 @@ import {
12
13
  createObject,
13
14
  qsparse
14
15
  } from './helper';
16
+ import isPlainObject from 'lodash/isPlainObject';
15
17
 
16
18
  const rSchema = /(?:^|raw\:)(get|post|put|delete|patch|options|head):/i;
17
19
 
@@ -61,6 +63,23 @@ export function buildApi(
61
63
  };
62
64
  api.method = (api.method || (options as any).method || 'get').toLowerCase();
63
65
 
66
+ if (api.headers) {
67
+ api.headers = dataMapping(api.headers, data, undefined, false);
68
+ }
69
+
70
+ if (api.requestAdaptor && typeof api.requestAdaptor === 'string') {
71
+ api.requestAdaptor = str2function(api.requestAdaptor, 'api') as any;
72
+ }
73
+
74
+ if (api.adaptor && typeof api.adaptor === 'string') {
75
+ api.adaptor = str2function(
76
+ api.adaptor,
77
+ 'payload',
78
+ 'response',
79
+ 'api'
80
+ ) as any;
81
+ }
82
+
64
83
  if (!data) {
65
84
  return api;
66
85
  } else if (
@@ -82,7 +101,9 @@ export function buildApi(
82
101
  );
83
102
  api.url =
84
103
  tokenize(api.url.substring(0, idx + 1), data, '| url_encode') +
85
- qsstringify((api.query = dataMapping(params, data))) +
104
+ qsstringify(
105
+ (api.query = dataMapping(params, data, undefined, api.convertKeyToPath))
106
+ ) +
86
107
  (~hashIdx ? api.url.substring(hashIdx) : '');
87
108
  } else {
88
109
  api.url = tokenize(api.url, data, '| url_encode');
@@ -93,7 +114,12 @@ export function buildApi(
93
114
  }
94
115
 
95
116
  if (api.data) {
96
- api.body = api.data = dataMapping(api.data, data);
117
+ api.body = api.data = dataMapping(
118
+ api.data,
119
+ data,
120
+ undefined,
121
+ api.convertKeyToPath
122
+ );
97
123
  } else if (api.method === 'post' || api.method === 'put') {
98
124
  api.body = api.data = cloneObject(data);
99
125
  }
@@ -137,23 +163,6 @@ export function buildApi(
137
163
  }
138
164
  }
139
165
 
140
- if (api.headers) {
141
- api.headers = dataMapping(api.headers, data);
142
- }
143
-
144
- if (api.requestAdaptor && typeof api.requestAdaptor === 'string') {
145
- api.requestAdaptor = str2function(api.requestAdaptor, 'api') as any;
146
- }
147
-
148
- if (api.adaptor && typeof api.adaptor === 'string') {
149
- api.adaptor = str2function(
150
- api.adaptor,
151
- 'payload',
152
- 'response',
153
- 'api'
154
- ) as any;
155
- }
156
-
157
166
  return api;
158
167
  }
159
168
 
@@ -190,7 +199,7 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
190
199
  let hasStatusField = true;
191
200
 
192
201
  if (!data) {
193
- throw new Error('Response is empty!');
202
+ throw new Error('Response is empty');
194
203
  }
195
204
 
196
205
  // 兼容几种常见写法
@@ -248,7 +257,9 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
248
257
  items: payload.data
249
258
  }
250
259
  : payload.data) || {}
251
- )
260
+ ),
261
+ undefined,
262
+ api.convertKeyToPath
252
263
  );
253
264
  }
254
265
 
@@ -256,7 +267,8 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
256
267
  }
257
268
 
258
269
  export function wrapFetcher(
259
- fn: (config: fetcherConfig) => Promise<fetcherResult>
270
+ fn: (config: fetcherConfig) => Promise<fetcherResult>,
271
+ tracker?: (eventTrack: EventTrack, data: any) => void
260
272
  ): (api: Api, data: object, options?: object) => Promise<Payload | void> {
261
273
  return function (api, data, options) {
262
274
  api = buildApi(api, data, options) as ApiObject;
@@ -286,6 +298,11 @@ export function wrapFetcher(
286
298
  api.headers['Content-Type'] = 'application/json';
287
299
  }
288
300
 
301
+ tracker?.(
302
+ {eventType: 'api', eventData: omit(api, ['config', 'data', 'body'])},
303
+ api.data
304
+ );
305
+
289
306
  if (typeof api.cache === 'number' && api.cache > 0) {
290
307
  const apiCache = getApiCache(api);
291
308
  return wrapAdaptor(
@@ -460,4 +477,16 @@ export function clearApiCache() {
460
477
  apiCaches.splice(0, apiCaches.length);
461
478
  }
462
479
 
480
+ export function normalizeApiResponseData(data: any) {
481
+ if (typeof data === 'undefined') {
482
+ data = {};
483
+ } else if (!isPlainObject(data)) {
484
+ data = {
485
+ [Array.isArray(data) ? 'items' : 'result']: data
486
+ };
487
+ }
488
+
489
+ return data;
490
+ }
491
+
463
492
  // window.apiCaches = apiCaches;
package/src/utils/dom.tsx CHANGED
@@ -267,3 +267,15 @@ export function calculatePosition(
267
267
  activePlacement
268
268
  };
269
269
  }
270
+
271
+ /**
272
+ * 专门用来获取样式的像素值,默认返回 0
273
+ */
274
+ export function getStyleNumber(element: HTMLElement, styleName: string) {
275
+ if (!element) {
276
+ return 0;
277
+ }
278
+ return (
279
+ parseInt(getComputedStyle(element).getPropertyValue(styleName), 10) || 0
280
+ );
281
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 后续好多地方可能都要支持 action,所以提取公共功能
3
+ */
4
+
5
+ import {RendererProps} from '../factory';
6
+ import {ActionSchema, AjaxActionSchema} from '../renderers/Action';
7
+ import {normalizeApi, str2function} from './api';
8
+
9
+ export default function handleAction(
10
+ e: React.MouseEvent<any>,
11
+ action: ActionSchema,
12
+ props: RendererProps,
13
+ data?: any
14
+ ) {
15
+ // https://reactjs.org/docs/legacy-event-pooling.html
16
+ e.persist();
17
+
18
+ const onAction = props.onAction;
19
+ let onClick: any = action.onClick;
20
+
21
+ if (typeof onClick === 'string') {
22
+ onClick = str2function(onClick, 'event', 'props');
23
+ }
24
+ const result: any = onClick && onClick(e, props);
25
+
26
+ if (e.isDefaultPrevented() || result === false || !onAction) {
27
+ return;
28
+ }
29
+
30
+ e.preventDefault();
31
+
32
+ // download 是一种 ajax 的简写
33
+ if (action.actionType === 'download') {
34
+ action.actionType = 'ajax';
35
+ const api = normalizeApi((action as AjaxActionSchema).api);
36
+ api.responseType = 'blob';
37
+ (action as AjaxActionSchema).api = api;
38
+ }
39
+
40
+ onAction(e, action, data || props.data);
41
+ }
@@ -16,6 +16,14 @@ import {
16
16
  } from './tpl-builtin';
17
17
  import {isObservable} from 'mobx';
18
18
 
19
+ export function isMobile() {
20
+ return (window as any).matchMedia?.('(max-width: 768px)').matches;
21
+ }
22
+
23
+ export function range(num: number, min: number, max: number): number {
24
+ return Math.min(Math.max(num, min), max);
25
+ }
26
+
19
27
  // 方便取值的时候能够把上层的取到,但是获取的时候不会全部把所有的数据获取到。
20
28
  export function createObject(
21
29
  superProps?: {[propName: string]: any},
@@ -181,7 +189,8 @@ export function getVariable(
181
189
  export function setVariable(
182
190
  data: {[propName: string]: any},
183
191
  key: string,
184
- value: any
192
+ value: any,
193
+ convertKeyToPath?: boolean
185
194
  ) {
186
195
  data = data || {};
187
196
 
@@ -190,7 +199,7 @@ export function setVariable(
190
199
  return;
191
200
  }
192
201
 
193
- const parts = keyToPath(key);
202
+ const parts = convertKeyToPath !== false ? keyToPath(key) : [key];
194
203
  const last = parts.pop() as string;
195
204
 
196
205
  while (parts.length) {
@@ -507,7 +516,6 @@ export function isDisabled(
507
516
  );
508
517
  }
509
518
 
510
-
511
519
  export function hasAbility(
512
520
  schema: any,
513
521
  ability: string,
@@ -1618,7 +1626,7 @@ export function detectPropValueChanged<
1618
1626
 
1619
1627
  // 去掉字符串中的 html 标签,不完全准确但效率比较高
1620
1628
  export function removeHTMLTag(str: string) {
1621
- return str.replace(/<\/?[^>]+(>|$)/g, '');
1629
+ return typeof str === 'string' ? str.replace(/<\/?[^>]+(>|$)/g, '') : str;
1622
1630
  }
1623
1631
 
1624
1632
  /**
@@ -17,6 +17,10 @@ export const generateIcon = (
17
17
  className?: string,
18
18
  classNameProp?: string
19
19
  ) => {
20
+ if (React.isValidElement(icon)) {
21
+ return icon;
22
+ }
23
+
20
24
  const isURLIcon = icon?.indexOf('.') !== -1;
21
25
 
22
26
  return icon ? (