amis 1.4.0 → 1.4.2-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/README.md +1 -1
  2. package/lib/Schema.d.ts +26 -2
  3. package/lib/Schema.js.map +1 -1
  4. package/lib/components/Alert.js +3 -1
  5. package/lib/components/Alert.js.map +2 -2
  6. package/lib/components/AnchorNav.d.ts +22 -21
  7. package/lib/components/AnchorNav.js +7 -3
  8. package/lib/components/AnchorNav.js.map +2 -2
  9. package/lib/components/ArrayInput.d.ts +84 -84
  10. package/lib/components/AssociatedSelection.d.ts +930 -0
  11. package/lib/components/AssociatedSelection.js +89 -0
  12. package/lib/components/AssociatedSelection.js.map +13 -0
  13. package/lib/components/Badge.d.ts +4 -3
  14. package/lib/components/Badge.js +42 -7
  15. package/lib/components/Badge.js.map +2 -2
  16. package/lib/components/Button.d.ts +24 -22
  17. package/lib/components/Button.js +13 -7
  18. package/lib/components/Button.js.map +2 -2
  19. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  20. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  21. package/lib/components/ChainedSelection.js.map +13 -0
  22. package/lib/components/Collapse.js +1 -1
  23. package/lib/components/Collapse.js.map +2 -2
  24. package/lib/components/ColorPicker.d.ts +84 -84
  25. package/lib/components/DatePicker.d.ts +84 -84
  26. package/lib/components/DatePicker.js +1 -1
  27. package/lib/components/DatePicker.js.map +2 -2
  28. package/lib/components/DateRangePicker.d.ts +84 -84
  29. package/lib/components/DateRangePicker.js +1 -1
  30. package/lib/components/DateRangePicker.js.map +2 -2
  31. package/lib/components/Editor.d.ts +84 -84
  32. package/lib/components/GroupedSelection.d.ts +907 -0
  33. package/lib/components/GroupedSelection.js +48 -0
  34. package/lib/components/GroupedSelection.js.map +13 -0
  35. package/lib/components/InputBox.js +1 -1
  36. package/lib/components/InputBox.js.map +2 -2
  37. package/lib/components/Link.d.ts +84 -0
  38. package/lib/components/Link.js +43 -0
  39. package/lib/components/Link.js.map +13 -0
  40. package/lib/components/ListGroup.d.ts +21 -21
  41. package/lib/components/ModalManager.js +1 -1
  42. package/lib/components/ModalManager.js.map +2 -2
  43. package/lib/components/MonthRangePicker.d.ts +84 -84
  44. package/lib/components/MonthRangePicker.js +1 -1
  45. package/lib/components/MonthRangePicker.js.map +2 -2
  46. package/lib/components/NumberInput.d.ts +20 -20
  47. package/lib/components/PickerColumn.d.ts +514 -0
  48. package/lib/components/PickerColumn.js +279 -0
  49. package/lib/components/PickerColumn.js.map +13 -0
  50. package/lib/components/PickerContainer.d.ts +513 -0
  51. package/lib/components/PickerContainer.js +96 -0
  52. package/lib/components/PickerContainer.js.map +13 -0
  53. package/lib/components/Radios.d.ts +22 -21
  54. package/lib/components/Radios.js +1 -0
  55. package/lib/components/Radios.js.map +2 -2
  56. package/lib/components/Rating.d.ts +21 -21
  57. package/lib/components/ResultBox.d.ts +84 -84
  58. package/lib/components/RichText.d.ts +6 -1
  59. package/lib/components/RichText.js +207 -8
  60. package/lib/components/RichText.js.map +2 -2
  61. package/lib/components/SearchBox.d.ts +84 -84
  62. package/lib/components/SearchBox.js +4 -4
  63. package/lib/components/SearchBox.js.map +2 -2
  64. package/lib/components/Select.d.ts +245 -237
  65. package/lib/components/Select.js +28 -4
  66. package/lib/components/Select.js.map +2 -2
  67. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  68. package/lib/components/Selection.js +134 -0
  69. package/lib/components/Selection.js.map +13 -0
  70. package/lib/components/SparkLine.d.ts +85 -84
  71. package/lib/components/SparkLine.js +2 -2
  72. package/lib/components/SparkLine.js.map +2 -2
  73. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  74. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  75. package/lib/components/TableSelection.js.map +13 -0
  76. package/lib/components/Tabs.d.ts +20 -20
  77. package/lib/components/TabsTransfer.d.ts +84 -84
  78. package/lib/components/TabsTransfer.js +9 -9
  79. package/lib/components/TabsTransfer.js.map +2 -2
  80. package/lib/components/TabsTransferPicker.d.ts +489 -0
  81. package/lib/components/TabsTransferPicker.js +60 -0
  82. package/lib/components/TabsTransferPicker.js.map +13 -0
  83. package/lib/components/Toast.js +2 -2
  84. package/lib/components/Toast.js.map +2 -2
  85. package/lib/components/Transfer.d.ts +908 -274
  86. package/lib/components/Transfer.js +31 -24
  87. package/lib/components/Transfer.js.map +2 -2
  88. package/lib/components/TransferDropDown.d.ts +487 -0
  89. package/lib/components/TransferDropDown.js +59 -0
  90. package/lib/components/TransferDropDown.js.map +13 -0
  91. package/lib/components/TransferPicker.d.ts +489 -0
  92. package/lib/components/TransferPicker.js +60 -0
  93. package/lib/components/TransferPicker.js.map +13 -0
  94. package/lib/components/Tree.d.ts +84 -84
  95. package/lib/components/Tree.js +5 -3
  96. package/lib/components/Tree.js.map +2 -2
  97. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  98. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  99. package/lib/components/TreeSelection.js.map +13 -0
  100. package/lib/components/WithRemoteConfig.js +1 -1
  101. package/lib/components/WithRemoteConfig.js.map +2 -2
  102. package/lib/components/calendar/DaysView.js +2 -2
  103. package/lib/components/calendar/DaysView.js.map +2 -2
  104. package/lib/components/condition-builder/Field.js +5 -2
  105. package/lib/components/condition-builder/Field.js.map +2 -2
  106. package/lib/components/condition-builder/Func.js +2 -2
  107. package/lib/components/condition-builder/Func.js.map +2 -2
  108. package/lib/components/condition-builder/InputSwitch.js +2 -2
  109. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  110. package/lib/components/condition-builder/Item.js +3 -3
  111. package/lib/components/condition-builder/Item.js.map +2 -2
  112. package/lib/components/icons.js +14 -0
  113. package/lib/components/icons.js.map +2 -2
  114. package/lib/components/index.d.ts +8 -8
  115. package/lib/components/index.js +16 -16
  116. package/lib/components/index.js.map +2 -2
  117. package/lib/envOverwrite.js.map +2 -2
  118. package/lib/factory.d.ts +4 -0
  119. package/lib/factory.js +4 -2
  120. package/lib/factory.js.map +2 -2
  121. package/lib/helper.css.map +1 -1
  122. package/lib/hooks/index.d.ts +5 -0
  123. package/lib/hooks/index.js +14 -0
  124. package/lib/hooks/index.js.map +13 -0
  125. package/lib/hooks/use-set-state.d.ts +2 -0
  126. package/lib/hooks/use-set-state.js +15 -0
  127. package/lib/hooks/use-set-state.js.map +13 -0
  128. package/lib/hooks/use-touch.d.ts +16 -0
  129. package/lib/hooks/use-touch.js +73 -0
  130. package/lib/hooks/use-touch.js.map +13 -0
  131. package/lib/hooks/use-update-effect.d.ts +3 -0
  132. package/lib/hooks/use-update-effect.js +17 -0
  133. package/lib/hooks/use-update-effect.js.map +13 -0
  134. package/lib/icons/clock.js +10 -0
  135. package/lib/icons/loading-outline.js +7 -0
  136. package/lib/icons/status-close.js +11 -0
  137. package/lib/icons/status-fail.js +11 -0
  138. package/lib/icons/status-info.js +10 -0
  139. package/lib/icons/status-success.js +11 -0
  140. package/lib/icons/status-warning.js +10 -0
  141. package/lib/index.d.ts +3 -0
  142. package/lib/index.js +4 -1
  143. package/lib/index.js.map +2 -2
  144. package/lib/locale/de-DE.js +4 -0
  145. package/lib/locale/de-DE.js.map +2 -2
  146. package/lib/locale/en-US.js +4 -0
  147. package/lib/locale/en-US.js.map +2 -2
  148. package/lib/locale/zh-CN.js +7 -3
  149. package/lib/locale/zh-CN.js.map +2 -2
  150. package/lib/renderers/Action.d.ts +17 -1
  151. package/lib/renderers/Action.js +21 -8
  152. package/lib/renderers/Action.js.map +2 -2
  153. package/lib/renderers/AnchorNav.d.ts +1 -0
  154. package/lib/renderers/AnchorNav.js +2 -2
  155. package/lib/renderers/AnchorNav.js.map +2 -2
  156. package/lib/renderers/Avatar.js +3 -3
  157. package/lib/renderers/Avatar.js.map +2 -2
  158. package/lib/renderers/Breadcrumb.js +1 -1
  159. package/lib/renderers/Breadcrumb.js.map +2 -2
  160. package/lib/renderers/CRUD.d.ts +9 -0
  161. package/lib/renderers/CRUD.js +43 -8
  162. package/lib/renderers/CRUD.js.map +2 -2
  163. package/lib/renderers/Card.d.ts +4 -0
  164. package/lib/renderers/Card.js +29 -23
  165. package/lib/renderers/Card.js.map +2 -2
  166. package/lib/renderers/Chart.js +1 -1
  167. package/lib/renderers/Chart.js.map +2 -2
  168. package/lib/renderers/Collapse.js +3 -2
  169. package/lib/renderers/Collapse.js.map +2 -2
  170. package/lib/renderers/Dialog.js +0 -3
  171. package/lib/renderers/Dialog.js.map +2 -2
  172. package/lib/renderers/Drawer.js +0 -3
  173. package/lib/renderers/Drawer.js.map +2 -2
  174. package/lib/renderers/DropDownButton.d.ts +9 -1
  175. package/lib/renderers/DropDownButton.js +8 -4
  176. package/lib/renderers/DropDownButton.js.map +2 -2
  177. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  178. package/lib/renderers/Form/Checkbox.js +4 -0
  179. package/lib/renderers/Form/Checkbox.js.map +2 -2
  180. package/lib/renderers/Form/Combo.js +2 -2
  181. package/lib/renderers/Form/Combo.js.map +2 -2
  182. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  183. package/lib/renderers/Form/Editor.d.ts +3 -2
  184. package/lib/renderers/Form/InputCity.d.ts +84 -84
  185. package/lib/renderers/Form/InputCity.js +7 -6
  186. package/lib/renderers/Form/InputCity.js.map +2 -2
  187. package/lib/renderers/Form/InputColor.d.ts +84 -84
  188. package/lib/renderers/Form/InputFile.js +12 -6
  189. package/lib/renderers/Form/InputFile.js.map +2 -2
  190. package/lib/renderers/Form/InputImage.js +16 -7
  191. package/lib/renderers/Form/InputImage.js.map +2 -2
  192. package/lib/renderers/Form/Item.d.ts +1 -1
  193. package/lib/renderers/Form/Item.js.map +1 -1
  194. package/lib/renderers/Form/Options.js +19 -6
  195. package/lib/renderers/Form/Options.js.map +2 -2
  196. package/lib/renderers/Form/Picker.js +2 -2
  197. package/lib/renderers/Form/Picker.js.map +2 -2
  198. package/lib/renderers/Form/Select.d.ts +41 -4
  199. package/lib/renderers/Form/Select.js +37 -3
  200. package/lib/renderers/Form/Select.js.map +2 -2
  201. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  202. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  203. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  204. package/lib/renderers/Form/Transfer.js +18 -3
  205. package/lib/renderers/Form/Transfer.js.map +2 -2
  206. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  207. package/lib/renderers/Form/TransferPicker.js +43 -0
  208. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  209. package/lib/renderers/Form/TreeSelect.js +2 -2
  210. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  211. package/lib/renderers/Form/index.d.ts +5 -0
  212. package/lib/renderers/Form/index.js +5 -3
  213. package/lib/renderers/Form/index.js.map +2 -2
  214. package/lib/renderers/Form/wrapControl.js +15 -3
  215. package/lib/renderers/Form/wrapControl.js.map +2 -2
  216. package/lib/renderers/IFrame.js +3 -5
  217. package/lib/renderers/IFrame.js.map +2 -2
  218. package/lib/renderers/Image.d.ts +1 -0
  219. package/lib/renderers/Image.js +15 -1
  220. package/lib/renderers/Image.js.map +2 -2
  221. package/lib/renderers/Json.d.ts +4 -0
  222. package/lib/renderers/Json.js +4 -13
  223. package/lib/renderers/Json.js.map +2 -2
  224. package/lib/renderers/Link.d.ts +18 -3
  225. package/lib/renderers/Link.js +27 -15
  226. package/lib/renderers/Link.js.map +2 -2
  227. package/lib/renderers/List.js +1 -1
  228. package/lib/renderers/List.js.map +2 -2
  229. package/lib/renderers/Log.d.ts +2 -2
  230. package/lib/renderers/Log.js +7 -1
  231. package/lib/renderers/Log.js.map +2 -2
  232. package/lib/renderers/Mapping.d.ts +9 -2
  233. package/lib/renderers/Mapping.js +18 -6
  234. package/lib/renderers/Mapping.js.map +2 -2
  235. package/lib/renderers/Nav.d.ts +81 -25
  236. package/lib/renderers/Nav.js +292 -31
  237. package/lib/renderers/Nav.js.map +2 -2
  238. package/lib/renderers/Page.js +1 -1
  239. package/lib/renderers/Page.js.map +2 -2
  240. package/lib/renderers/Portlet.d.ts +125 -0
  241. package/lib/renderers/Portlet.js +156 -0
  242. package/lib/renderers/Portlet.js.map +13 -0
  243. package/lib/renderers/Property.js +2 -1
  244. package/lib/renderers/Property.js.map +2 -2
  245. package/lib/renderers/SearchBox.d.ts +6 -1
  246. package/lib/renderers/SearchBox.js +19 -5
  247. package/lib/renderers/SearchBox.js.map +2 -2
  248. package/lib/renderers/SparkLine.d.ts +4 -0
  249. package/lib/renderers/SparkLine.js.map +2 -2
  250. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  251. package/lib/renderers/Table/ColumnToggler.js +216 -0
  252. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  253. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  254. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  255. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  256. package/lib/renderers/Table/TableBody.d.ts +4 -0
  257. package/lib/renderers/Table/TableCell.js +3 -1
  258. package/lib/renderers/Table/TableCell.js.map +2 -2
  259. package/lib/renderers/Table/TableContent.d.ts +4 -1
  260. package/lib/renderers/Table/TableContent.js +21 -1
  261. package/lib/renderers/Table/TableContent.js.map +2 -2
  262. package/lib/renderers/Table/index.d.ts +19 -2
  263. package/lib/renderers/Table/index.js +172 -57
  264. package/lib/renderers/Table/index.js.map +2 -2
  265. package/lib/renderers/Tabs.js +9 -1
  266. package/lib/renderers/Tabs.js.map +2 -2
  267. package/lib/renderers/WebComponent.js +1 -1
  268. package/lib/renderers/WebComponent.js.map +2 -2
  269. package/lib/store/combo.d.ts +2 -16
  270. package/lib/store/crud.js +3 -7
  271. package/lib/store/crud.js.map +2 -2
  272. package/lib/store/form.d.ts +1 -1
  273. package/lib/store/form.js +5 -6
  274. package/lib/store/form.js.map +2 -2
  275. package/lib/store/service.js +5 -4
  276. package/lib/store/service.js.map +2 -2
  277. package/lib/store/table.d.ts +260 -3
  278. package/lib/store/table.js +64 -6
  279. package/lib/store/table.js.map +2 -2
  280. package/lib/themes/ang-ie11.css +1175 -255
  281. package/lib/themes/ang.css +1175 -255
  282. package/lib/themes/ang.css.map +1 -1
  283. package/lib/themes/antd-ie11.css +1175 -255
  284. package/lib/themes/antd.css +1175 -255
  285. package/lib/themes/antd.css.map +1 -1
  286. package/lib/themes/cxd-ie11.css +1761 -514
  287. package/lib/themes/cxd.css +1761 -514
  288. package/lib/themes/cxd.css.map +1 -1
  289. package/lib/themes/dark-ie11.css +1175 -255
  290. package/lib/themes/dark.css +1175 -255
  291. package/lib/themes/dark.css.map +1 -1
  292. package/lib/themes/default.css +1761 -514
  293. package/lib/themes/default.css.map +1 -1
  294. package/lib/types.d.ts +37 -0
  295. package/lib/types.js +0 -5
  296. package/lib/types.js.map +2 -2
  297. package/lib/utils/api.d.ts +3 -2
  298. package/lib/utils/api.js +31 -15
  299. package/lib/utils/api.js.map +2 -2
  300. package/lib/utils/dom.d.ts +4 -0
  301. package/lib/utils/dom.js +11 -1
  302. package/lib/utils/dom.js.map +2 -2
  303. package/lib/utils/handleAction.d.ts +7 -0
  304. package/lib/utils/handleAction.js +30 -0
  305. package/lib/utils/handleAction.js.map +13 -0
  306. package/lib/utils/helper.d.ts +3 -1
  307. package/lib/utils/helper.js +14 -5
  308. package/lib/utils/helper.js.map +2 -2
  309. package/lib/utils/icon.js +3 -0
  310. package/lib/utils/icon.js.map +2 -2
  311. package/lib/utils/tpl-builtin.d.ts +1 -1
  312. package/lib/utils/tpl-builtin.js +25 -15
  313. package/lib/utils/tpl-builtin.js.map +2 -2
  314. package/package.json +1 -2
  315. package/schema.json +3534 -1028
  316. package/scss/_mixins.scss +27 -0
  317. package/scss/_properties.scss +84 -13
  318. package/scss/_utilities.scss +4 -0
  319. package/scss/base/_normalize.scss +2 -0
  320. package/scss/components/_anchor-nav.scss +88 -29
  321. package/scss/components/_badge.scss +52 -1
  322. package/scss/components/_button.scss +34 -3
  323. package/scss/components/_card.scss +8 -14
  324. package/scss/components/_collapse.scss +41 -8
  325. package/scss/components/_column-toggler.scss +234 -0
  326. package/scss/components/_dropdown.scss +2 -1
  327. package/scss/components/_image-gallery.scss +1 -1
  328. package/scss/components/_images.scss +2 -1
  329. package/scss/components/_link.scss +6 -0
  330. package/scss/components/_mapping.scss +6 -0
  331. package/scss/components/_nav.scss +236 -154
  332. package/scss/components/_page.scss +5 -4
  333. package/scss/components/_picker-columns.scss +123 -0
  334. package/scss/components/_popover.scss +17 -0
  335. package/scss/components/_portlet.scss +51 -0
  336. package/scss/components/_progress.scss +2 -0
  337. package/scss/components/_status.scss +1 -1
  338. package/scss/components/_steps.scss +1 -1
  339. package/scss/components/_table.scss +51 -1
  340. package/scss/components/form/_checks.scss +0 -351
  341. package/scss/components/form/_color.scss +1 -0
  342. package/scss/components/form/_date-range.scss +2 -0
  343. package/scss/components/form/_date.scss +2 -0
  344. package/scss/components/form/_fieldset.scss +6 -3
  345. package/scss/components/form/_file.scss +5 -4
  346. package/scss/components/form/_form.scss +48 -0
  347. package/scss/components/form/_image.scss +7 -2
  348. package/scss/components/form/_list.scss +1 -0
  349. package/scss/components/form/_location.scss +1 -1
  350. package/scss/components/form/_selection.scss +354 -0
  351. package/scss/components/form/_text.scss +13 -0
  352. package/scss/components/form/_textarea.scss +10 -0
  353. package/scss/components/form/_transfer.scss +77 -18
  354. package/scss/themes/_common.scss +6 -0
  355. package/scss/themes/_cxd-colors.scss +56 -0
  356. package/scss/themes/_cxd-variables.scss +219 -91
  357. package/scss/themes/cxd.scss +370 -0
  358. package/sdk/ang-ie11.css +1596 -515
  359. package/sdk/ang.css +1395 -256
  360. package/sdk/antd-ie11.css +1397 -318
  361. package/sdk/antd.css +1395 -256
  362. package/sdk/charts.js +13 -13
  363. package/sdk/color-picker.js +65 -65
  364. package/sdk/cropperjs.js +2 -2
  365. package/sdk/cxd-ie11.css +2739 -1361
  366. package/sdk/cxd.css +2095 -588
  367. package/sdk/dark-ie11.css +1593 -512
  368. package/sdk/dark.css +1395 -256
  369. package/sdk/exceljs.js +1 -1
  370. package/sdk/helper.css.map +1 -1
  371. package/sdk/iconfont.svg +2513 -0
  372. package/sdk/iconfont.ttf +0 -0
  373. package/sdk/iconfont.woff +0 -0
  374. package/sdk/ie11-patch.css +1 -0
  375. package/sdk/locale/de-DE.js +4 -0
  376. package/sdk/markdown.js +69 -69
  377. package/sdk/papaparse.js +1 -1
  378. package/sdk/renderers/Form/CityDB.js +1 -1
  379. package/sdk/rest.js +18 -32
  380. package/sdk/rich-text.js +62 -64
  381. package/sdk/sdk-ie11.css +2739 -1361
  382. package/sdk/sdk.css +2095 -588
  383. package/sdk/sdk.js +1189 -1133
  384. package/sdk/thirds/hls.js/hls.js +1 -1
  385. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  386. package/sdk/tinymce.js +57 -57
  387. package/src/Schema.ts +32 -0
  388. package/src/components/Alert.tsx +3 -1
  389. package/src/components/AnchorNav.tsx +15 -4
  390. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  391. package/src/components/Badge.tsx +96 -28
  392. package/src/components/Button.tsx +23 -7
  393. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  394. package/src/components/Collapse.tsx +14 -9
  395. package/src/components/DatePicker.tsx +1 -1
  396. package/src/components/DateRangePicker.tsx +23 -11
  397. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  398. package/src/components/InputBox.tsx +1 -1
  399. package/src/components/Link.tsx +85 -0
  400. package/src/components/ModalManager.ts +1 -1
  401. package/src/components/MonthRangePicker.tsx +10 -2
  402. package/src/components/PickerColumn.tsx +429 -0
  403. package/src/components/PickerContainer.tsx +128 -0
  404. package/src/components/Radios.tsx +3 -8
  405. package/src/components/RichText.tsx +244 -3
  406. package/src/components/SearchBox.tsx +4 -5
  407. package/src/components/Select.tsx +60 -5
  408. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  409. package/src/components/SparkLine.tsx +4 -1
  410. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  411. package/src/components/TabsTransfer.tsx +13 -7
  412. package/src/components/TabsTransferPicker.tsx +85 -0
  413. package/src/components/Toast.tsx +5 -5
  414. package/src/components/Transfer.tsx +71 -50
  415. package/src/components/TransferDropDown.tsx +117 -0
  416. package/src/components/TransferPicker.tsx +84 -0
  417. package/src/components/Tree.tsx +6 -8
  418. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  419. package/src/components/WithRemoteConfig.tsx +7 -2
  420. package/src/components/calendar/DaysView.tsx +2 -2
  421. package/src/components/condition-builder/Field.tsx +5 -5
  422. package/src/components/condition-builder/Func.tsx +3 -3
  423. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  424. package/src/components/condition-builder/Item.tsx +5 -12
  425. package/src/components/icons.tsx +15 -0
  426. package/src/components/index.tsx +13 -13
  427. package/src/envOverwrite.ts +0 -1
  428. package/src/factory.tsx +18 -3
  429. package/src/hooks/index.ts +5 -0
  430. package/src/hooks/use-set-state.ts +19 -0
  431. package/src/hooks/use-touch.ts +100 -0
  432. package/src/hooks/use-update-effect.ts +16 -0
  433. package/src/icons/clock.svg +1 -0
  434. package/src/icons/loading-outline.svg +4 -0
  435. package/src/icons/status-close.svg +10 -0
  436. package/src/icons/status-fail.svg +10 -0
  437. package/src/icons/status-info.svg +8 -0
  438. package/src/icons/status-success.svg +10 -0
  439. package/src/icons/status-warning.svg +8 -0
  440. package/src/index.tsx +3 -0
  441. package/src/locale/de-DE.ts +4 -0
  442. package/src/locale/en-US.ts +4 -0
  443. package/src/locale/zh-CN.ts +7 -3
  444. package/src/renderers/Action.tsx +99 -15
  445. package/src/renderers/AnchorNav.tsx +4 -0
  446. package/src/renderers/Avatar.tsx +8 -4
  447. package/src/renderers/Breadcrumb.tsx +5 -1
  448. package/src/renderers/CRUD.tsx +63 -28
  449. package/src/renderers/Card.tsx +63 -34
  450. package/src/renderers/Chart.tsx +6 -2
  451. package/src/renderers/Collapse.tsx +4 -2
  452. package/src/renderers/Dialog.tsx +0 -4
  453. package/src/renderers/Drawer.tsx +0 -4
  454. package/src/renderers/DropDownButton.tsx +26 -12
  455. package/src/renderers/Form/Checkbox.tsx +8 -0
  456. package/src/renderers/Form/Combo.tsx +2 -3
  457. package/src/renderers/Form/InputCity.tsx +4 -8
  458. package/src/renderers/Form/InputFile.tsx +30 -20
  459. package/src/renderers/Form/InputImage.tsx +16 -5
  460. package/src/renderers/Form/Item.tsx +1 -1
  461. package/src/renderers/Form/Options.tsx +32 -7
  462. package/src/renderers/Form/Picker.tsx +3 -2
  463. package/src/renderers/Form/Select.tsx +158 -21
  464. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  465. package/src/renderers/Form/Transfer.tsx +19 -4
  466. package/src/renderers/Form/TransferPicker.tsx +139 -0
  467. package/src/renderers/Form/TreeSelect.tsx +25 -0
  468. package/src/renderers/Form/index.tsx +16 -2
  469. package/src/renderers/Form/wrapControl.tsx +28 -3
  470. package/src/renderers/IFrame.tsx +4 -5
  471. package/src/renderers/Image.tsx +10 -0
  472. package/src/renderers/Json.tsx +9 -9
  473. package/src/renderers/Link.tsx +53 -14
  474. package/src/renderers/List.tsx +1 -1
  475. package/src/renderers/Log.tsx +16 -3
  476. package/src/renderers/Mapping.tsx +27 -11
  477. package/src/renderers/Nav.tsx +392 -60
  478. package/src/renderers/Page.tsx +1 -1
  479. package/src/renderers/Portlet.tsx +423 -0
  480. package/src/renderers/Property.tsx +3 -2
  481. package/src/renderers/SearchBox.tsx +23 -4
  482. package/src/renderers/SparkLine.tsx +5 -0
  483. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  484. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  485. package/src/renderers/Table/TableCell.tsx +16 -1
  486. package/src/renderers/Table/TableContent.tsx +40 -2
  487. package/src/renderers/Table/index.tsx +257 -80
  488. package/src/renderers/Tabs.tsx +9 -1
  489. package/src/renderers/WebComponent.tsx +2 -2
  490. package/src/store/crud.ts +3 -8
  491. package/src/store/form.ts +5 -10
  492. package/src/store/service.ts +5 -4
  493. package/src/store/table.ts +94 -6
  494. package/src/types.ts +57 -0
  495. package/src/utils/api.ts +52 -23
  496. package/src/utils/dom.tsx +12 -0
  497. package/src/utils/handleAction.ts +41 -0
  498. package/src/utils/helper.ts +12 -3
  499. package/src/utils/icon.tsx +4 -0
  500. package/src/utils/tpl-builtin.ts +48 -17
  501. package/dump.rdb +0 -0
  502. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  503. package/lib/components/AssociatedCheckboxes.js +0 -90
  504. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  505. package/lib/components/ChainedCheckboxes.js.map +0 -13
  506. package/lib/components/Checkboxes.js +0 -101
  507. package/lib/components/Checkboxes.js.map +0 -13
  508. package/lib/components/ListCheckboxes.d.ts +0 -739
  509. package/lib/components/ListCheckboxes.js +0 -48
  510. package/lib/components/ListCheckboxes.js.map +0 -13
  511. package/lib/components/ListRadios.d.ts +0 -763
  512. package/lib/components/ListRadios.js +0 -86
  513. package/lib/components/ListRadios.js.map +0 -13
  514. package/lib/components/TableCheckboxes.js.map +0 -13
  515. package/lib/components/TreeCheckboxes.js.map +0 -13
  516. package/lib/components/TreeRadios.d.ts +0 -838
  517. package/lib/components/TreeRadios.js +0 -116
  518. package/lib/components/TreeRadios.js.map +0 -13
  519. package/src/components/ListRadios.tsx +0 -159
  520. package/src/components/TreeRadios.tsx +0 -202
@@ -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,8 +424,8 @@ 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() {
@@ -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
  },
@@ -583,8 +619,8 @@ export const TableStore = iRendererStore
583
619
  return getMovedRows();
584
620
  },
585
621
 
586
- get hoverIndex() {
587
- return getHoverIndex();
622
+ get hoverRow() {
623
+ return getHovedRow();
588
624
  },
589
625
 
590
626
  get disabledHeadCheckbox() {
@@ -598,6 +634,10 @@ export const TableStore = iRendererStore
598
634
  return maxLength === selectedLength;
599
635
  },
600
636
 
637
+ get firstToggledColumnIndex() {
638
+ return getFirstToggledColumnIndex();
639
+ },
640
+
601
641
  getData,
602
642
 
603
643
  get columnGroup() {
@@ -716,6 +756,51 @@ export const TableStore = iRendererStore
716
756
  }
717
757
  }
718
758
 
759
+ function updateColumns(columns: Array<SColumn>) {
760
+ if (columns && Array.isArray(columns)) {
761
+ columns = columns.filter(column => column).concat();
762
+
763
+ if (!columns.length) {
764
+ columns.push({
765
+ type: 'text',
766
+ label: '空'
767
+ });
768
+ }
769
+
770
+ columns.unshift({
771
+ type: '__expandme',
772
+ toggable: false,
773
+ className: 'Table-expandCell'
774
+ });
775
+
776
+ columns.unshift({
777
+ type: '__checkme',
778
+ fixed: 'left',
779
+ toggable: false,
780
+ className: 'Table-checkCell'
781
+ });
782
+
783
+ columns.unshift({
784
+ type: '__dragme',
785
+ toggable: false,
786
+ className: 'Table-dragCell'
787
+ });
788
+
789
+ columns = columns.map((item, index) => ({
790
+ ...item,
791
+ index,
792
+ rawIndex: index - 3,
793
+ type: item.type || 'plain',
794
+ pristine: item.pristine || item,
795
+ toggled: item.toggled !== false,
796
+ breakpoint: item.breakpoint,
797
+ isPrimary: index === 3
798
+ }));
799
+
800
+ self.columns.replace(columns as any);
801
+ }
802
+ }
803
+
719
804
  function combineCell(arr: Array<SRow>, keys: Array<string>): Array<SRow> {
720
805
  if (!keys.length || !arr.length) {
721
806
  return arr;
@@ -1031,8 +1116,10 @@ export const TableStore = iRendererStore
1031
1116
  if (idx === -1) {
1032
1117
  // 如果上一个是选中状态,则将之间的所有 check 都变成可选
1033
1118
  if (lastCheckedRow.checked) {
1034
- if (maxLength && self.selectedRows.length < maxLength) {
1035
- self.selectedRows.push(rowItem);
1119
+ if (maxLength) {
1120
+ if (self.selectedRows.length < maxLength) {
1121
+ self.selectedRows.push(rowItem);
1122
+ }
1036
1123
  } else {
1037
1124
  self.selectedRows.push(rowItem);
1038
1125
  }
@@ -1177,6 +1264,7 @@ export const TableStore = iRendererStore
1177
1264
 
1178
1265
  return {
1179
1266
  update,
1267
+ updateColumns,
1180
1268
  initRows,
1181
1269
  updateSelected,
1182
1270
  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) {
@@ -1617,7 +1626,7 @@ export function detectPropValueChanged<
1617
1626
 
1618
1627
  // 去掉字符串中的 html 标签,不完全准确但效率比较高
1619
1628
  export function removeHTMLTag(str: string) {
1620
- return str.replace(/<\/?[^>]+(>|$)/g, '');
1629
+ return typeof str === 'string' ? str.replace(/<\/?[^>]+(>|$)/g, '') : str;
1621
1630
  }
1622
1631
 
1623
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 ? (
@@ -383,10 +383,26 @@ export const filters: {
383
383
  first: input => input && input[0],
384
384
  nth: (input, nth = 0) => input && input[nth],
385
385
  last: input => input && (input.length ? input[input.length - 1] : null),
386
- minus: (input, step = 1) =>
387
- stripNumber((parseInt(input, 10) || 0) - parseInt(step, 10)),
388
- plus: (input, step = 1) =>
389
- stripNumber((parseInt(input, 10) || 0) + parseInt(step, 10)),
386
+ minus(input, step = 1) {
387
+ return stripNumber(
388
+ (Number(input) || 0) - Number(getStrOrVariable(step, this))
389
+ );
390
+ },
391
+ plus(input, step = 1) {
392
+ return stripNumber(
393
+ (Number(input) || 0) + Number(getStrOrVariable(step, this))
394
+ );
395
+ },
396
+ times(input, step = 1) {
397
+ return stripNumber(
398
+ (Number(input) || 0) * Number(getStrOrVariable(step, this))
399
+ );
400
+ },
401
+ division(input, step = 1) {
402
+ return stripNumber(
403
+ (Number(input) || 0) / Number(getStrOrVariable(step, this))
404
+ );
405
+ },
390
406
  count: (input: any) =>
391
407
  Array.isArray(input) || typeof input === 'string' ? input.length : 0,
392
408
  sum: (input, field) => {
@@ -866,10 +882,13 @@ export function resolveMapping(
866
882
  export function dataMapping(
867
883
  to: any,
868
884
  from: PlainObject = {},
869
- ignoreFunction: boolean | ((key: string, value: any) => boolean) = false
885
+ ignoreFunction: boolean | ((key: string, value: any) => boolean) = false,
886
+ convertKeyToPath?: boolean
870
887
  ): any {
871
888
  if (Array.isArray(to)) {
872
- return to.map(item => dataMapping(item, from, ignoreFunction));
889
+ return to.map(item =>
890
+ dataMapping(item, from, ignoreFunction, convertKeyToPath)
891
+ );
873
892
  } else if (typeof to === 'string') {
874
893
  return resolveMapping(to, from);
875
894
  } else if (!isPlainObject(to)) {
@@ -883,7 +902,7 @@ export function dataMapping(
883
902
 
884
903
  if (typeof ignoreFunction === 'function' && ignoreFunction(key, value)) {
885
904
  // 如果被ignore,不做数据映射处理。
886
- setVariable(ret, key, value);
905
+ setVariable(ret, key, value, convertKeyToPath);
887
906
  } else if (key === '&' && value === '$$') {
888
907
  ret = {
889
908
  ...ret,
@@ -900,7 +919,8 @@ export function dataMapping(
900
919
  dataMapping(
901
920
  value[keys[0]],
902
921
  createObject(from, raw),
903
- ignoreFunction
922
+ ignoreFunction,
923
+ convertKeyToPath
904
924
  )
905
925
  )
906
926
  : resolveMapping(value, from);
@@ -919,10 +939,10 @@ export function dataMapping(
919
939
  };
920
940
  }
921
941
  } else if (value === '$$') {
922
- setVariable(ret, key, from);
942
+ setVariable(ret, key, from, convertKeyToPath);
923
943
  } else if (value && value[0] === '$') {
924
944
  const v = resolveMapping(value, from);
925
- setVariable(ret, key, v);
945
+ setVariable(ret, key, v, convertKeyToPath);
926
946
 
927
947
  if (v === '__undefined') {
928
948
  deleteVariable(ret, key);
@@ -952,26 +972,37 @@ export function dataMapping(
952
972
  const mapping = value[keys[0]];
953
973
 
954
974
  (ret as PlainObject)[key] = arr.map((raw: object) =>
955
- dataMapping(mapping, createObject(from, raw), ignoreFunction)
975
+ dataMapping(
976
+ mapping,
977
+ createObject(from, raw),
978
+ ignoreFunction,
979
+ convertKeyToPath
980
+ )
956
981
  );
957
982
  } else if (isPlainObject(value)) {
958
- setVariable(ret, key, dataMapping(value, from, ignoreFunction));
983
+ setVariable(
984
+ ret,
985
+ key,
986
+ dataMapping(value, from, ignoreFunction, convertKeyToPath),
987
+ convertKeyToPath
988
+ );
959
989
  } else if (Array.isArray(value)) {
960
990
  setVariable(
961
991
  ret,
962
992
  key,
963
993
  value.map((value: any) =>
964
994
  isPlainObject(value)
965
- ? dataMapping(value, from, ignoreFunction)
995
+ ? dataMapping(value, from, ignoreFunction, convertKeyToPath)
966
996
  : resolveMapping(value, from)
967
- )
997
+ ),
998
+ convertKeyToPath
968
999
  );
969
1000
  } else if (typeof value == 'string' && ~value.indexOf('$')) {
970
- setVariable(ret, key, resolveMapping(value, from));
1001
+ setVariable(ret, key, resolveMapping(value, from), convertKeyToPath);
971
1002
  } else if (typeof value === 'function' && ignoreFunction !== true) {
972
- setVariable(ret, key, value(from));
1003
+ setVariable(ret, key, value(from), convertKeyToPath);
973
1004
  } else {
974
- setVariable(ret, key, value);
1005
+ setVariable(ret, key, value, convertKeyToPath);
975
1006
 
976
1007
  if (value === '__undefined') {
977
1008
  deleteVariable(ret, key);
package/dump.rdb DELETED
Binary file