amis 1.3.5-beta.7 → 1.4.2-beta.11

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 (577) 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 +16 -3
  14. package/lib/components/Badge.js +54 -5
  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/Checkbox.d.ts +1 -1
  23. package/lib/components/Checkbox.js +1 -1
  24. package/lib/components/Checkbox.js.map +2 -2
  25. package/lib/components/Collapse.js +1 -1
  26. package/lib/components/Collapse.js.map +2 -2
  27. package/lib/components/ColorPicker.d.ts +84 -84
  28. package/lib/components/DatePicker.d.ts +84 -84
  29. package/lib/components/DatePicker.js +1 -1
  30. package/lib/components/DatePicker.js.map +2 -2
  31. package/lib/components/DateRangePicker.d.ts +84 -84
  32. package/lib/components/DateRangePicker.js +1 -1
  33. package/lib/components/DateRangePicker.js.map +2 -2
  34. package/lib/components/Drawer.js +1 -1
  35. package/lib/components/Drawer.js.map +2 -2
  36. package/lib/components/Editor.d.ts +84 -84
  37. package/lib/components/GroupedSelection.d.ts +907 -0
  38. package/lib/components/GroupedSelection.js +48 -0
  39. package/lib/components/GroupedSelection.js.map +13 -0
  40. package/lib/components/InputBox.js +1 -1
  41. package/lib/components/InputBox.js.map +2 -2
  42. package/lib/components/Link.d.ts +84 -0
  43. package/lib/components/Link.js +43 -0
  44. package/lib/components/Link.js.map +13 -0
  45. package/lib/components/ListGroup.d.ts +21 -21
  46. package/lib/components/Modal.js +1 -1
  47. package/lib/components/Modal.js.map +2 -2
  48. package/lib/components/ModalManager.js +1 -1
  49. package/lib/components/ModalManager.js.map +2 -2
  50. package/lib/components/MonthRangePicker.d.ts +84 -84
  51. package/lib/components/MonthRangePicker.js +1 -1
  52. package/lib/components/MonthRangePicker.js.map +2 -2
  53. package/lib/components/NumberInput.d.ts +20 -20
  54. package/lib/components/PickerColumn.d.ts +514 -0
  55. package/lib/components/PickerColumn.js +279 -0
  56. package/lib/components/PickerColumn.js.map +13 -0
  57. package/lib/components/PickerContainer.d.ts +513 -0
  58. package/lib/components/PickerContainer.js +96 -0
  59. package/lib/components/PickerContainer.js.map +13 -0
  60. package/lib/components/Radios.d.ts +22 -21
  61. package/lib/components/Radios.js +1 -0
  62. package/lib/components/Radios.js.map +2 -2
  63. package/lib/components/Rating.d.ts +21 -21
  64. package/lib/components/ResultBox.d.ts +84 -84
  65. package/lib/components/RichText.d.ts +6 -1
  66. package/lib/components/RichText.js +207 -8
  67. package/lib/components/RichText.js.map +2 -2
  68. package/lib/components/SearchBox.d.ts +84 -84
  69. package/lib/components/SearchBox.js +4 -4
  70. package/lib/components/SearchBox.js.map +2 -2
  71. package/lib/components/Select.d.ts +252 -237
  72. package/lib/components/Select.js +28 -4
  73. package/lib/components/Select.js.map +2 -2
  74. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  75. package/lib/components/Selection.js +134 -0
  76. package/lib/components/Selection.js.map +13 -0
  77. package/lib/components/SparkLine.d.ts +85 -84
  78. package/lib/components/SparkLine.js +2 -2
  79. package/lib/components/SparkLine.js.map +2 -2
  80. package/lib/components/Steps.d.ts +3 -3
  81. package/lib/components/Steps.js.map +1 -1
  82. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  83. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  84. package/lib/components/TableSelection.js.map +13 -0
  85. package/lib/components/Tabs.d.ts +20 -20
  86. package/lib/components/TabsTransfer.d.ts +84 -84
  87. package/lib/components/TabsTransfer.js +9 -9
  88. package/lib/components/TabsTransfer.js.map +2 -2
  89. package/lib/components/TabsTransferPicker.d.ts +489 -0
  90. package/lib/components/TabsTransferPicker.js +60 -0
  91. package/lib/components/TabsTransferPicker.js.map +13 -0
  92. package/lib/components/Toast.js +2 -2
  93. package/lib/components/Toast.js.map +2 -2
  94. package/lib/components/Transfer.d.ts +908 -274
  95. package/lib/components/Transfer.js +31 -24
  96. package/lib/components/Transfer.js.map +2 -2
  97. package/lib/components/TransferDropDown.d.ts +487 -0
  98. package/lib/components/TransferDropDown.js +59 -0
  99. package/lib/components/TransferDropDown.js.map +13 -0
  100. package/lib/components/TransferPicker.d.ts +489 -0
  101. package/lib/components/TransferPicker.js +60 -0
  102. package/lib/components/TransferPicker.js.map +13 -0
  103. package/lib/components/Tree.d.ts +84 -84
  104. package/lib/components/Tree.js +5 -3
  105. package/lib/components/Tree.js.map +2 -2
  106. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  107. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  108. package/lib/components/TreeSelection.js.map +13 -0
  109. package/lib/components/WithRemoteConfig.d.ts +8 -0
  110. package/lib/components/WithRemoteConfig.js +29 -3
  111. package/lib/components/WithRemoteConfig.js.map +2 -2
  112. package/lib/components/calendar/DaysView.js +2 -2
  113. package/lib/components/calendar/DaysView.js.map +2 -2
  114. package/lib/components/condition-builder/Field.js +5 -3
  115. package/lib/components/condition-builder/Field.js.map +2 -2
  116. package/lib/components/condition-builder/Func.js +2 -2
  117. package/lib/components/condition-builder/Func.js.map +2 -2
  118. package/lib/components/condition-builder/InputSwitch.js +2 -2
  119. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  120. package/lib/components/condition-builder/Item.js +3 -3
  121. package/lib/components/condition-builder/Item.js.map +2 -2
  122. package/lib/components/condition-builder/Value.js +2 -1
  123. package/lib/components/condition-builder/Value.js.map +2 -2
  124. package/lib/components/condition-builder/types.d.ts +5 -0
  125. package/lib/components/condition-builder/types.js.map +1 -1
  126. package/lib/components/icons.js +14 -0
  127. package/lib/components/icons.js.map +2 -2
  128. package/lib/components/index.d.ts +8 -8
  129. package/lib/components/index.js +16 -16
  130. package/lib/components/index.js.map +2 -2
  131. package/lib/envOverwrite.js.map +2 -2
  132. package/lib/factory.d.ts +9 -1
  133. package/lib/factory.js +13 -6
  134. package/lib/factory.js.map +2 -2
  135. package/lib/helper.css.map +1 -1
  136. package/lib/hooks/index.d.ts +5 -0
  137. package/lib/hooks/index.js +14 -0
  138. package/lib/hooks/index.js.map +13 -0
  139. package/lib/hooks/use-set-state.d.ts +2 -0
  140. package/lib/hooks/use-set-state.js +15 -0
  141. package/lib/hooks/use-set-state.js.map +13 -0
  142. package/lib/hooks/use-touch.d.ts +16 -0
  143. package/lib/hooks/use-touch.js +73 -0
  144. package/lib/hooks/use-touch.js.map +13 -0
  145. package/lib/hooks/use-update-effect.d.ts +3 -0
  146. package/lib/hooks/use-update-effect.js +17 -0
  147. package/lib/hooks/use-update-effect.js.map +13 -0
  148. package/lib/icons/clock.js +10 -0
  149. package/lib/icons/loading-outline.js +7 -0
  150. package/lib/icons/status-close.js +11 -0
  151. package/lib/icons/status-fail.js +11 -0
  152. package/lib/icons/status-info.js +10 -0
  153. package/lib/icons/status-success.js +11 -0
  154. package/lib/icons/status-warning.js +10 -0
  155. package/lib/index.d.ts +3 -0
  156. package/lib/index.js +4 -1
  157. package/lib/index.js.map +2 -2
  158. package/lib/locale/de-DE.js +5 -0
  159. package/lib/locale/de-DE.js.map +2 -2
  160. package/lib/locale/en-US.js +6 -1
  161. package/lib/locale/en-US.js.map +2 -2
  162. package/lib/locale/zh-CN.js +9 -4
  163. package/lib/locale/zh-CN.js.map +2 -2
  164. package/lib/renderers/Action.d.ts +17 -1
  165. package/lib/renderers/Action.js +21 -8
  166. package/lib/renderers/Action.js.map +2 -2
  167. package/lib/renderers/AnchorNav.d.ts +1 -0
  168. package/lib/renderers/AnchorNav.js +2 -2
  169. package/lib/renderers/AnchorNav.js.map +2 -2
  170. package/lib/renderers/Avatar.js +3 -3
  171. package/lib/renderers/Avatar.js.map +2 -2
  172. package/lib/renderers/Breadcrumb.js +1 -1
  173. package/lib/renderers/Breadcrumb.js.map +2 -2
  174. package/lib/renderers/CRUD.d.ts +9 -0
  175. package/lib/renderers/CRUD.js +48 -23
  176. package/lib/renderers/CRUD.js.map +2 -2
  177. package/lib/renderers/Card.d.ts +4 -0
  178. package/lib/renderers/Card.js +29 -23
  179. package/lib/renderers/Card.js.map +2 -2
  180. package/lib/renderers/Chart.js +1 -1
  181. package/lib/renderers/Chart.js.map +2 -2
  182. package/lib/renderers/Collapse.d.ts +1 -1
  183. package/lib/renderers/Collapse.js +8 -3
  184. package/lib/renderers/Collapse.js.map +2 -2
  185. package/lib/renderers/Dialog.d.ts +0 -252
  186. package/lib/renderers/Dialog.js +1 -4
  187. package/lib/renderers/Dialog.js.map +2 -2
  188. package/lib/renderers/Drawer.js +0 -3
  189. package/lib/renderers/Drawer.js.map +2 -2
  190. package/lib/renderers/DropDownButton.d.ts +13 -1
  191. package/lib/renderers/DropDownButton.js +9 -5
  192. package/lib/renderers/DropDownButton.js.map +2 -2
  193. package/lib/renderers/Form/Checkbox.d.ts +5 -0
  194. package/lib/renderers/Form/Checkbox.js +4 -0
  195. package/lib/renderers/Form/Checkbox.js.map +2 -2
  196. package/lib/renderers/Form/Combo.js +2 -2
  197. package/lib/renderers/Form/Combo.js.map +2 -2
  198. package/lib/renderers/Form/DiffEditor.d.ts +4 -5
  199. package/lib/renderers/Form/Editor.d.ts +3 -4
  200. package/lib/renderers/Form/Editor.js +1 -1
  201. package/lib/renderers/Form/Editor.js.map +2 -2
  202. package/lib/renderers/Form/InputCity.d.ts +84 -84
  203. package/lib/renderers/Form/InputCity.js +7 -6
  204. package/lib/renderers/Form/InputCity.js.map +2 -2
  205. package/lib/renderers/Form/InputColor.d.ts +84 -84
  206. package/lib/renderers/Form/InputExcel.d.ts +5 -0
  207. package/lib/renderers/Form/InputExcel.js +24 -3
  208. package/lib/renderers/Form/InputExcel.js.map +2 -2
  209. package/lib/renderers/Form/InputFile.js +12 -6
  210. package/lib/renderers/Form/InputFile.js.map +2 -2
  211. package/lib/renderers/Form/InputImage.d.ts +8 -0
  212. package/lib/renderers/Form/InputImage.js +18 -8
  213. package/lib/renderers/Form/InputImage.js.map +2 -2
  214. package/lib/renderers/Form/InputTable.d.ts +23 -5
  215. package/lib/renderers/Form/InputTable.js +32 -3
  216. package/lib/renderers/Form/InputTable.js.map +2 -2
  217. package/lib/renderers/Form/Item.d.ts +1 -1
  218. package/lib/renderers/Form/Item.js.map +1 -1
  219. package/lib/renderers/Form/Options.js +19 -6
  220. package/lib/renderers/Form/Options.js.map +2 -2
  221. package/lib/renderers/Form/Picker.js +2 -2
  222. package/lib/renderers/Form/Picker.js.map +2 -2
  223. package/lib/renderers/Form/Select.d.ts +41 -4
  224. package/lib/renderers/Form/Select.js +23 -3
  225. package/lib/renderers/Form/Select.js.map +2 -2
  226. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  227. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  228. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  229. package/lib/renderers/Form/Transfer.js +3 -2
  230. package/lib/renderers/Form/Transfer.js.map +2 -2
  231. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  232. package/lib/renderers/Form/TransferPicker.js +29 -0
  233. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  234. package/lib/renderers/Form/TreeSelect.js +2 -2
  235. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  236. package/lib/renderers/Form/index.js +1 -1
  237. package/lib/renderers/Form/index.js.map +2 -2
  238. package/lib/renderers/Form/wrapControl.js +15 -3
  239. package/lib/renderers/Form/wrapControl.js.map +2 -2
  240. package/lib/renderers/IFrame.js +3 -5
  241. package/lib/renderers/IFrame.js.map +2 -2
  242. package/lib/renderers/Image.d.ts +1 -0
  243. package/lib/renderers/Image.js +15 -1
  244. package/lib/renderers/Image.js.map +2 -2
  245. package/lib/renderers/Json.d.ts +4 -0
  246. package/lib/renderers/Json.js +7 -12
  247. package/lib/renderers/Json.js.map +2 -2
  248. package/lib/renderers/Link.d.ts +18 -3
  249. package/lib/renderers/Link.js +27 -15
  250. package/lib/renderers/Link.js.map +2 -2
  251. package/lib/renderers/List.js +1 -1
  252. package/lib/renderers/List.js.map +2 -2
  253. package/lib/renderers/Log.d.ts +2 -2
  254. package/lib/renderers/Log.js +7 -1
  255. package/lib/renderers/Log.js.map +2 -2
  256. package/lib/renderers/Mapping.d.ts +9 -2
  257. package/lib/renderers/Mapping.js +18 -6
  258. package/lib/renderers/Mapping.js.map +2 -2
  259. package/lib/renderers/Nav.d.ts +81 -25
  260. package/lib/renderers/Nav.js +292 -31
  261. package/lib/renderers/Nav.js.map +2 -2
  262. package/lib/renderers/Page.js +4 -1
  263. package/lib/renderers/Page.js.map +2 -2
  264. package/lib/renderers/Portlet.d.ts +125 -0
  265. package/lib/renderers/Portlet.js +156 -0
  266. package/lib/renderers/Portlet.js.map +13 -0
  267. package/lib/renderers/Property.js +2 -1
  268. package/lib/renderers/Property.js.map +2 -2
  269. package/lib/renderers/SearchBox.d.ts +6 -1
  270. package/lib/renderers/SearchBox.js +19 -5
  271. package/lib/renderers/SearchBox.js.map +2 -2
  272. package/lib/renderers/Service.d.ts +10 -1
  273. package/lib/renderers/Service.js +85 -3
  274. package/lib/renderers/Service.js.map +2 -2
  275. package/lib/renderers/SparkLine.d.ts +4 -0
  276. package/lib/renderers/SparkLine.js.map +2 -2
  277. package/lib/renderers/Steps.d.ts +4 -4
  278. package/lib/renderers/Steps.js +5 -2
  279. package/lib/renderers/Steps.js.map +2 -2
  280. package/lib/renderers/Table/ColumnToggler.d.ts +113 -0
  281. package/lib/renderers/Table/ColumnToggler.js +216 -0
  282. package/lib/renderers/Table/ColumnToggler.js.map +13 -0
  283. package/lib/renderers/Table/ItemActionsWrapper.d.ts +11 -0
  284. package/lib/renderers/Table/ItemActionsWrapper.js +31 -0
  285. package/lib/renderers/Table/ItemActionsWrapper.js.map +13 -0
  286. package/lib/renderers/Table/TableBody.d.ts +5 -1
  287. package/lib/renderers/Table/TableBody.js.map +1 -1
  288. package/lib/renderers/Table/TableCell.js +3 -1
  289. package/lib/renderers/Table/TableCell.js.map +2 -2
  290. package/lib/renderers/Table/TableContent.d.ts +5 -2
  291. package/lib/renderers/Table/TableContent.js +21 -1
  292. package/lib/renderers/Table/TableContent.js.map +2 -2
  293. package/lib/renderers/Table/index.d.ts +27 -5
  294. package/lib/renderers/Table/index.js +251 -101
  295. package/lib/renderers/Table/index.js.map +2 -2
  296. package/lib/renderers/Tabs.js +9 -1
  297. package/lib/renderers/Tabs.js.map +2 -2
  298. package/lib/renderers/WebComponent.js +1 -1
  299. package/lib/renderers/WebComponent.js.map +2 -2
  300. package/lib/store/app.d.ts +0 -1
  301. package/lib/store/combo.d.ts +2 -18
  302. package/lib/store/crud.d.ts +0 -1
  303. package/lib/store/crud.js +3 -7
  304. package/lib/store/crud.js.map +2 -2
  305. package/lib/store/form.d.ts +1 -2
  306. package/lib/store/form.js +5 -6
  307. package/lib/store/form.js.map +2 -2
  308. package/lib/store/modal.d.ts +1 -1
  309. package/lib/store/modal.js +4 -0
  310. package/lib/store/modal.js.map +2 -2
  311. package/lib/store/root.d.ts +0 -1
  312. package/lib/store/service.d.ts +0 -1
  313. package/lib/store/service.js +5 -17
  314. package/lib/store/service.js.map +2 -2
  315. package/lib/store/table.d.ts +260 -5
  316. package/lib/store/table.js +83 -7
  317. package/lib/store/table.js.map +2 -2
  318. package/lib/themes/ang-ie11.css +1360 -244
  319. package/lib/themes/ang.css +1360 -244
  320. package/lib/themes/ang.css.map +1 -1
  321. package/lib/themes/antd-ie11.css +1360 -244
  322. package/lib/themes/antd.css +1360 -244
  323. package/lib/themes/antd.css.map +1 -1
  324. package/lib/themes/cxd-ie11.css +1960 -517
  325. package/lib/themes/cxd.css +1960 -517
  326. package/lib/themes/cxd.css.map +1 -1
  327. package/lib/themes/dark-ie11.css +1360 -244
  328. package/lib/themes/dark.css +1360 -244
  329. package/lib/themes/dark.css.map +1 -1
  330. package/lib/themes/default.css +1960 -517
  331. package/lib/themes/default.css.map +1 -1
  332. package/lib/types.d.ts +37 -0
  333. package/lib/types.js +0 -5
  334. package/lib/types.js.map +2 -2
  335. package/lib/utils/api.d.ts +3 -2
  336. package/lib/utils/api.js +43 -15
  337. package/lib/utils/api.js.map +2 -2
  338. package/lib/utils/attachmentAdpator.d.ts +7 -0
  339. package/lib/utils/attachmentAdpator.js +82 -0
  340. package/lib/utils/attachmentAdpator.js.map +13 -0
  341. package/lib/utils/dom.d.ts +4 -0
  342. package/lib/utils/dom.js +11 -1
  343. package/lib/utils/dom.js.map +2 -2
  344. package/lib/utils/handleAction.d.ts +7 -0
  345. package/lib/utils/handleAction.js +30 -0
  346. package/lib/utils/handleAction.js.map +13 -0
  347. package/lib/utils/helper.d.ts +3 -1
  348. package/lib/utils/helper.js +14 -5
  349. package/lib/utils/helper.js.map +2 -2
  350. package/lib/utils/icon.js +3 -0
  351. package/lib/utils/icon.js.map +2 -2
  352. package/lib/utils/tpl-builtin.d.ts +1 -1
  353. package/lib/utils/tpl-builtin.js +25 -15
  354. package/lib/utils/tpl-builtin.js.map +2 -2
  355. package/lib/utils/validations.js +62 -5
  356. package/lib/utils/validations.js.map +2 -2
  357. package/package.json +1 -2
  358. package/schema.json +3638 -1030
  359. package/scss/_mixins.scss +27 -0
  360. package/scss/_properties.scss +88 -13
  361. package/scss/_utilities.scss +4 -0
  362. package/scss/base/_normalize.scss +2 -0
  363. package/scss/components/_anchor-nav.scss +88 -29
  364. package/scss/components/_badge.scss +67 -2
  365. package/scss/components/_button.scss +34 -3
  366. package/scss/components/_card.scss +8 -14
  367. package/scss/components/_collapse.scss +41 -8
  368. package/scss/components/_column-toggler.scss +234 -0
  369. package/scss/components/_dropdown.scss +2 -1
  370. package/scss/components/_image-gallery.scss +1 -1
  371. package/scss/components/_images.scss +2 -1
  372. package/scss/components/_link.scss +6 -0
  373. package/scss/components/_mapping.scss +6 -0
  374. package/scss/components/_markdown.scss +266 -0
  375. package/scss/components/_nav.scss +236 -154
  376. package/scss/components/_page.scss +5 -4
  377. package/scss/components/_picker-columns.scss +123 -0
  378. package/scss/components/_popover.scss +17 -0
  379. package/scss/components/_portlet.scss +51 -0
  380. package/scss/components/_progress.scss +2 -0
  381. package/scss/components/_spinner.scss +6 -2
  382. package/scss/components/_status.scss +1 -1
  383. package/scss/components/_steps.scss +1 -1
  384. package/scss/components/_table.scss +51 -1
  385. package/scss/components/form/_checks.scss +0 -351
  386. package/scss/components/form/_color.scss +1 -0
  387. package/scss/components/form/_date-range.scss +2 -0
  388. package/scss/components/form/_date.scss +2 -0
  389. package/scss/components/form/_fieldset.scss +6 -3
  390. package/scss/components/form/_file.scss +5 -4
  391. package/scss/components/form/_group.scss +4 -0
  392. package/scss/components/form/_image.scss +7 -2
  393. package/scss/components/form/_list.scss +1 -0
  394. package/scss/components/form/_location.scss +1 -1
  395. package/scss/components/form/_selection.scss +354 -0
  396. package/scss/components/form/_text.scss +13 -0
  397. package/scss/components/form/_textarea.scss +10 -0
  398. package/scss/components/form/_transfer.scss +77 -18
  399. package/scss/themes/_common.scss +7 -0
  400. package/scss/themes/_cxd-colors.scss +56 -0
  401. package/scss/themes/_cxd-variables.scss +219 -91
  402. package/scss/themes/cxd.scss +370 -0
  403. package/sdk/ang-ie11.css +1752 -431
  404. package/sdk/ang.css +1706 -323
  405. package/sdk/antd-ie11.css +1739 -420
  406. package/sdk/antd.css +1706 -323
  407. package/sdk/charts.js +13 -13
  408. package/sdk/color-picker.js +65 -69
  409. package/sdk/cropperjs.js +2 -2
  410. package/sdk/cxd-ie11.css +3015 -1397
  411. package/sdk/cxd.css +2402 -651
  412. package/sdk/dark-ie11.css +1750 -429
  413. package/sdk/dark.css +1706 -323
  414. package/sdk/exceljs.js +1 -1
  415. package/sdk/helper.css.map +1 -1
  416. package/sdk/ie11-patch.css +1 -0
  417. package/sdk/locale/de-DE.js +5 -0
  418. package/sdk/markdown.js +69 -69
  419. package/sdk/papaparse.js +1 -1
  420. package/sdk/renderers/Form/CityDB.js +1 -1
  421. package/sdk/rest.js +20 -30
  422. package/sdk/rich-text.js +62 -64
  423. package/sdk/sdk-ie11.css +3015 -1397
  424. package/sdk/sdk.css +2402 -651
  425. package/sdk/sdk.js +1278 -1220
  426. package/sdk/thirds/hls.js/hls.js +1 -1
  427. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  428. package/sdk/tinymce.js +57 -57
  429. package/src/Schema.ts +32 -0
  430. package/src/components/Alert.tsx +3 -1
  431. package/src/components/AnchorNav.tsx +15 -4
  432. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  433. package/src/components/Badge.tsx +126 -23
  434. package/src/components/Button.tsx +23 -7
  435. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  436. package/src/components/Checkbox.tsx +5 -2
  437. package/src/components/Collapse.tsx +14 -9
  438. package/src/components/DatePicker.tsx +1 -1
  439. package/src/components/DateRangePicker.tsx +23 -11
  440. package/src/components/Drawer.tsx +3 -2
  441. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  442. package/src/components/InputBox.tsx +1 -1
  443. package/src/components/Link.tsx +85 -0
  444. package/src/components/Modal.tsx +3 -2
  445. package/src/components/ModalManager.ts +1 -1
  446. package/src/components/MonthRangePicker.tsx +10 -2
  447. package/src/components/PickerColumn.tsx +429 -0
  448. package/src/components/PickerContainer.tsx +128 -0
  449. package/src/components/Radios.tsx +3 -8
  450. package/src/components/RichText.tsx +244 -3
  451. package/src/components/SearchBox.tsx +4 -5
  452. package/src/components/Select.tsx +61 -5
  453. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  454. package/src/components/SparkLine.tsx +4 -1
  455. package/src/components/Steps.tsx +3 -3
  456. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  457. package/src/components/TabsTransfer.tsx +13 -7
  458. package/src/components/TabsTransferPicker.tsx +85 -0
  459. package/src/components/Toast.tsx +5 -5
  460. package/src/components/Transfer.tsx +71 -50
  461. package/src/components/TransferDropDown.tsx +117 -0
  462. package/src/components/TransferPicker.tsx +84 -0
  463. package/src/components/Tree.tsx +6 -8
  464. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  465. package/src/components/WithRemoteConfig.tsx +44 -4
  466. package/src/components/calendar/DaysView.tsx +2 -2
  467. package/src/components/condition-builder/Field.tsx +6 -7
  468. package/src/components/condition-builder/Func.tsx +3 -3
  469. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  470. package/src/components/condition-builder/Item.tsx +5 -12
  471. package/src/components/condition-builder/Value.tsx +3 -0
  472. package/src/components/condition-builder/types.ts +6 -0
  473. package/src/components/icons.tsx +15 -0
  474. package/src/components/index.tsx +13 -13
  475. package/src/envOverwrite.ts +0 -1
  476. package/src/factory.tsx +31 -6
  477. package/src/hooks/index.ts +5 -0
  478. package/src/hooks/use-set-state.ts +19 -0
  479. package/src/hooks/use-touch.ts +100 -0
  480. package/src/hooks/use-update-effect.ts +16 -0
  481. package/src/icons/clock.svg +1 -0
  482. package/src/icons/loading-outline.svg +4 -0
  483. package/src/icons/status-close.svg +10 -0
  484. package/src/icons/status-fail.svg +10 -0
  485. package/src/icons/status-info.svg +8 -0
  486. package/src/icons/status-success.svg +10 -0
  487. package/src/icons/status-warning.svg +8 -0
  488. package/src/index.tsx +3 -0
  489. package/src/locale/de-DE.ts +5 -0
  490. package/src/locale/en-US.ts +6 -1
  491. package/src/locale/zh-CN.ts +9 -4
  492. package/src/renderers/Action.tsx +99 -15
  493. package/src/renderers/AnchorNav.tsx +4 -0
  494. package/src/renderers/Avatar.tsx +8 -4
  495. package/src/renderers/Breadcrumb.tsx +5 -1
  496. package/src/renderers/CRUD.tsx +70 -56
  497. package/src/renderers/Card.tsx +63 -34
  498. package/src/renderers/Chart.tsx +6 -2
  499. package/src/renderers/Collapse.tsx +9 -3
  500. package/src/renderers/Dialog.tsx +1 -5
  501. package/src/renderers/Drawer.tsx +0 -4
  502. package/src/renderers/DropDownButton.tsx +34 -12
  503. package/src/renderers/Form/Checkbox.tsx +8 -0
  504. package/src/renderers/Form/Combo.tsx +2 -3
  505. package/src/renderers/Form/Editor.tsx +19 -20
  506. package/src/renderers/Form/InputCity.tsx +4 -8
  507. package/src/renderers/Form/InputExcel.tsx +28 -3
  508. package/src/renderers/Form/InputFile.tsx +30 -20
  509. package/src/renderers/Form/InputImage.tsx +39 -13
  510. package/src/renderers/Form/InputTable.tsx +88 -9
  511. package/src/renderers/Form/Item.tsx +1 -1
  512. package/src/renderers/Form/Options.tsx +32 -7
  513. package/src/renderers/Form/Picker.tsx +3 -2
  514. package/src/renderers/Form/Select.tsx +144 -21
  515. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  516. package/src/renderers/Form/Transfer.tsx +3 -2
  517. package/src/renderers/Form/TransferPicker.tsx +123 -0
  518. package/src/renderers/Form/TreeSelect.tsx +25 -0
  519. package/src/renderers/Form/index.tsx +1 -1
  520. package/src/renderers/Form/wrapControl.tsx +28 -3
  521. package/src/renderers/IFrame.tsx +4 -5
  522. package/src/renderers/Image.tsx +10 -0
  523. package/src/renderers/Json.tsx +19 -10
  524. package/src/renderers/Link.tsx +53 -14
  525. package/src/renderers/List.tsx +1 -1
  526. package/src/renderers/Log.tsx +16 -3
  527. package/src/renderers/Mapping.tsx +27 -11
  528. package/src/renderers/Nav.tsx +392 -60
  529. package/src/renderers/Page.tsx +3 -1
  530. package/src/renderers/Portlet.tsx +423 -0
  531. package/src/renderers/Property.tsx +3 -2
  532. package/src/renderers/SearchBox.tsx +23 -4
  533. package/src/renderers/Service.tsx +101 -3
  534. package/src/renderers/SparkLine.tsx +5 -0
  535. package/src/renderers/Steps.tsx +12 -9
  536. package/src/renderers/Table/ColumnToggler.tsx +544 -0
  537. package/src/renderers/Table/ItemActionsWrapper.tsx +44 -0
  538. package/src/renderers/Table/TableBody.tsx +1 -1
  539. package/src/renderers/Table/TableCell.tsx +16 -1
  540. package/src/renderers/Table/TableContent.tsx +41 -3
  541. package/src/renderers/Table/index.tsx +318 -92
  542. package/src/renderers/Tabs.tsx +9 -1
  543. package/src/renderers/WebComponent.tsx +2 -2
  544. package/src/store/crud.ts +3 -8
  545. package/src/store/form.ts +5 -10
  546. package/src/store/modal.ts +4 -0
  547. package/src/store/service.ts +5 -23
  548. package/src/store/table.ts +103 -4
  549. package/src/types.ts +57 -0
  550. package/src/utils/api.ts +63 -23
  551. package/src/utils/attachmentAdpator.ts +90 -0
  552. package/src/utils/dom.tsx +12 -0
  553. package/src/utils/handleAction.ts +41 -0
  554. package/src/utils/helper.ts +12 -3
  555. package/src/utils/icon.tsx +4 -0
  556. package/src/utils/tpl-builtin.ts +48 -17
  557. package/src/utils/validations.ts +80 -12
  558. package/dump.rdb +0 -0
  559. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  560. package/lib/components/AssociatedCheckboxes.js +0 -90
  561. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  562. package/lib/components/ChainedCheckboxes.js.map +0 -13
  563. package/lib/components/Checkboxes.js +0 -101
  564. package/lib/components/Checkboxes.js.map +0 -13
  565. package/lib/components/ListCheckboxes.d.ts +0 -739
  566. package/lib/components/ListCheckboxes.js +0 -48
  567. package/lib/components/ListCheckboxes.js.map +0 -13
  568. package/lib/components/ListRadios.d.ts +0 -763
  569. package/lib/components/ListRadios.js +0 -86
  570. package/lib/components/ListRadios.js.map +0 -13
  571. package/lib/components/TableCheckboxes.js.map +0 -13
  572. package/lib/components/TreeCheckboxes.js.map +0 -13
  573. package/lib/components/TreeRadios.d.ts +0 -838
  574. package/lib/components/TreeRadios.js +0 -116
  575. package/lib/components/TreeRadios.js.map +0 -13
  576. package/src/components/ListRadios.tsx +0 -159
  577. package/src/components/TreeRadios.tsx +0 -202
@@ -374,7 +374,15 @@ export default class Tabs extends React.Component<TabsProps, TabsState> {
374
374
 
375
375
  @autobind
376
376
  handleSelect(key: any) {
377
- const {env, onSelect} = this.props;
377
+ const {env, onSelect, id} = this.props;
378
+
379
+ env.tracker?.({
380
+ eventType: 'tabChange',
381
+ eventData: {
382
+ id,
383
+ key
384
+ }
385
+ });
378
386
 
379
387
  // 是 hash,需要更新到地址栏
380
388
  if (typeof key === 'string' && env) {
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import {Renderer, RendererProps} from '../factory';
3
3
  import {BaseSchema, SchemaCollection} from '../Schema';
4
- import {resolveVariable} from '../utils/tpl-builtin';
4
+ import {resolveVariable, resolveVariableAndFilter} from '../utils/tpl-builtin';
5
5
  import mapValues from 'lodash/mapValues';
6
6
 
7
7
  /**
@@ -43,7 +43,7 @@ export default class WebComponent extends React.Component<RendererProps> {
43
43
 
44
44
  const propsValues = mapValues(props, s => {
45
45
  if (typeof s === 'string') {
46
- return resolveVariable(s, data) || s;
46
+ return resolveVariableAndFilter(s, data, '| raw') || s;
47
47
  } else {
48
48
  return s;
49
49
  }
package/src/store/crud.ts CHANGED
@@ -21,6 +21,7 @@ import {
21
21
  import {Api, Payload, fetchOptions, Action, ApiObject} from '../types';
22
22
  import pick from 'lodash/pick';
23
23
  import {resolveVariableAndFilter} from '../utils/tpl-builtin';
24
+ import {normalizeApiResponseData} from '../utils/api';
24
25
 
25
26
  class ServerError extends Error {
26
27
  type = 'ServerError';
@@ -228,13 +229,7 @@ export const CRUDStore = ServiceStore.named('CRUDStore')
228
229
  }
229
230
 
230
231
  self.updatedAt = Date.now();
231
- let result = json.data;
232
-
233
- if (Array.isArray(result)) {
234
- result = {
235
- items: result
236
- };
237
- }
232
+ let result = normalizeApiResponseData(json.data);
238
233
 
239
234
  const {
240
235
  total,
@@ -384,7 +379,7 @@ export const CRUDStore = ServiceStore.named('CRUDStore')
384
379
 
385
380
  if (!isEmpty(json.data) || json.ok) {
386
381
  self.updateData(
387
- json.data,
382
+ normalizeApiResponseData(json.data),
388
383
  {
389
384
  __saved: Date.now()
390
385
  },
package/src/store/form.ts CHANGED
@@ -29,6 +29,7 @@ import isEqual from 'lodash/isEqual';
29
29
  import flatten from 'lodash/flatten';
30
30
  import {getStoreById, removeStore} from './manager';
31
31
  import {filter} from '../utils/tpl';
32
+ import {normalizeApiResponseData} from '../utils/api';
32
33
 
33
34
  export const FormStore = ServiceStore.named('FormStore')
34
35
  .props({
@@ -305,7 +306,7 @@ export const FormStore = ServiceStore.named('FormStore')
305
306
  self.updatedAt = Date.now();
306
307
 
307
308
  setValues(
308
- json.data,
309
+ normalizeApiResponseData(json.data),
309
310
  json.ok
310
311
  ? {
311
312
  __saved: Date.now()
@@ -587,14 +588,9 @@ export const FormStore = ServiceStore.named('FormStore')
587
588
  self.persistData = value;
588
589
  }
589
590
 
590
- const setLocalPersistData = debounce(
591
- () => localStorage.setItem(self.persistKey, JSON.stringify(self.data)),
592
- 250,
593
- {
594
- trailing: true,
595
- leading: false
596
- }
597
- );
591
+ const setLocalPersistData = () => {
592
+ localStorage.setItem(self.persistKey, JSON.stringify(self.data));
593
+ };
598
594
 
599
595
  function getLocalPersistData() {
600
596
  let data = localStorage.getItem(self.persistKey);
@@ -638,7 +634,6 @@ export const FormStore = ServiceStore.named('FormStore')
638
634
  clearRestError,
639
635
  beforeDestroy() {
640
636
  syncOptions.cancel();
641
- setLocalPersistData.cancel();
642
637
  }
643
638
  };
644
639
  });
@@ -24,6 +24,10 @@ export const ModalStore = ServiceStore.named('ModalStore')
24
24
  setFormData(obj: any) {
25
25
  self.form = obj;
26
26
  },
27
+ reset() {
28
+ self.form = {};
29
+ self.reInitData({}, true);
30
+ },
27
31
 
28
32
  setResizeCoord(value: number) {
29
33
  self.resizeCoord = value;
@@ -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;
@@ -140,24 +141,6 @@ export const ServiceStore = iRendererStore
140
141
  }
141
142
  });
142
143
 
143
- const fetchWSData = (ws: string, afterDataFetch: (data: any) => any) => {
144
- const env = getEnv(self);
145
-
146
- env.wsFetcher(
147
- ws,
148
- (data: any) => {
149
- self.updateData(data, undefined, false);
150
- setHasRemoteData();
151
- // 因为 WebSocket 只会获取纯数据,所以没有 msg 之类的
152
- afterDataFetch({ok: true, data: data});
153
- },
154
- (error: any) => {
155
- updateMessage(error, true);
156
- env.notify('error', error);
157
- }
158
- );
159
- };
160
-
161
144
  const setHasRemoteData = () => {
162
145
  self.hasRemoteData = true;
163
146
  };
@@ -194,7 +177,7 @@ export const ServiceStore = iRendererStore
194
177
 
195
178
  json.data &&
196
179
  self.updateData(
197
- json.data,
180
+ normalizeApiResponseData(json.data),
198
181
  undefined,
199
182
  !!(api as ApiObject).replaceData
200
183
  );
@@ -282,7 +265,7 @@ export const ServiceStore = iRendererStore
282
265
 
283
266
  json.data &&
284
267
  self.updateData(
285
- json.data,
268
+ normalizeApiResponseData(json.data),
286
269
  undefined,
287
270
  !!(api as ApiObject).replaceData
288
271
  );
@@ -424,7 +407,7 @@ export const ServiceStore = iRendererStore
424
407
  : {
425
408
  type: 'wrapper',
426
409
  wrap: false,
427
- ...json.data
410
+ ...normalizeApiResponseData(json.data)
428
411
  };
429
412
  self.schemaKey = '' + Date.now();
430
413
  isObject(json.data.data) &&
@@ -505,7 +488,6 @@ export const ServiceStore = iRendererStore
505
488
  markBusying,
506
489
  fetchInitData,
507
490
  fetchData,
508
- fetchWSData,
509
491
  reInitData,
510
492
  updateMessage,
511
493
  clearMessage,
@@ -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,46 @@ 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
+
526
+ function getActivedSearchableColumns() {
527
+ return self.columns.filter(
528
+ column =>
529
+ column.searchable &&
530
+ isObject(column.searchable) &&
531
+ column.enableSearch
532
+ );
533
+ }
534
+
502
535
  return {
536
+ get columnsData() {
537
+ return getColumnsExceptBuiltinTypes();
538
+ },
539
+
503
540
  get forms() {
504
541
  return getForms();
505
542
  },
506
543
 
544
+ get searchableColumns() {
545
+ return getSearchableColumns();
546
+ },
547
+
548
+ get activedSearchableColumns() {
549
+ return getSearchableColumns().filter(column => column.enableSearch);
550
+ },
551
+
507
552
  get filteredColumns() {
508
553
  return getFilteredColumns();
509
554
  },
@@ -583,8 +628,8 @@ export const TableStore = iRendererStore
583
628
  return getMovedRows();
584
629
  },
585
630
 
586
- get hoverIndex() {
587
- return getHoverIndex();
631
+ get hoverRow() {
632
+ return getHovedRow();
588
633
  },
589
634
 
590
635
  get disabledHeadCheckbox() {
@@ -598,6 +643,10 @@ export const TableStore = iRendererStore
598
643
  return maxLength === selectedLength;
599
644
  },
600
645
 
646
+ get firstToggledColumnIndex() {
647
+ return getFirstToggledColumnIndex();
648
+ },
649
+
601
650
  getData,
602
651
 
603
652
  get columnGroup() {
@@ -984,11 +1033,16 @@ export const TableStore = iRendererStore
984
1033
  }
985
1034
  }
986
1035
 
1036
+ // 记录最近一次点击的多选框,主要用于 shift 多选时判断上一个选的是什么
1037
+ let lastCheckedRow: any = null;
1038
+
987
1039
  function toggle(row: IRow) {
988
1040
  if (!row.checkable) {
989
1041
  return;
990
1042
  }
991
1043
 
1044
+ lastCheckedRow = row;
1045
+
992
1046
  const idx = self.selectedRows.indexOf(row);
993
1047
 
994
1048
  if (self.multiple) {
@@ -1000,6 +1054,50 @@ export const TableStore = iRendererStore
1000
1054
  }
1001
1055
  }
1002
1056
 
1057
+ // 按住 shift 的时候点击选项
1058
+ function toggleShift(row: IRow) {
1059
+ // 如果是同一个或非 multiple 模式下就和不用 shift 一样
1060
+ if (!lastCheckedRow || row === lastCheckedRow || !self.multiple) {
1061
+ toggle(row);
1062
+ return;
1063
+ }
1064
+
1065
+ const maxLength = self.maxKeepItemSelectionLength;
1066
+ const checkableRows = self.checkableRows;
1067
+ const lastCheckedRowIndex = checkableRows.findIndex(
1068
+ row => row === lastCheckedRow
1069
+ );
1070
+ const rowIndex = checkableRows.findIndex(rowItem => row === rowItem);
1071
+ const minIndex =
1072
+ lastCheckedRowIndex > rowIndex ? rowIndex : lastCheckedRowIndex;
1073
+ const maxIndex =
1074
+ lastCheckedRowIndex > rowIndex ? lastCheckedRowIndex : rowIndex;
1075
+
1076
+ const rows = checkableRows.slice(minIndex, maxIndex);
1077
+ rows.push(row); // 将当前行也加入进行判断
1078
+ for (const rowItem of rows) {
1079
+ const idx = self.selectedRows.indexOf(rowItem);
1080
+ if (idx === -1) {
1081
+ // 如果上一个是选中状态,则将之间的所有 check 都变成可选
1082
+ if (lastCheckedRow.checked) {
1083
+ if (maxLength) {
1084
+ if (self.selectedRows.length < maxLength) {
1085
+ self.selectedRows.push(rowItem);
1086
+ }
1087
+ } else {
1088
+ self.selectedRows.push(rowItem);
1089
+ }
1090
+ }
1091
+ } else {
1092
+ if (!lastCheckedRow.checked) {
1093
+ self.selectedRows.splice(idx, 1);
1094
+ }
1095
+ }
1096
+ }
1097
+
1098
+ lastCheckedRow = row;
1099
+ }
1100
+
1003
1101
  function updateCheckDisable() {
1004
1102
  if (!self.data) {
1005
1103
  return;
@@ -1134,6 +1232,7 @@ export const TableStore = iRendererStore
1134
1232
  updateSelected,
1135
1233
  toggleAll,
1136
1234
  toggle,
1235
+ toggleShift,
1137
1236
  toggleExpandAll,
1138
1237
  toggleExpanded,
1139
1238
  collapseAllAtDepth,
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
 
@@ -22,6 +24,8 @@ interface ApiCacheConfig extends ApiObject {
22
24
 
23
25
  const apiCaches: Array<ApiCacheConfig> = [];
24
26
 
27
+ const isIE = !!(document as any).documentMode;
28
+
25
29
  export function normalizeApi(
26
30
  api: Api,
27
31
  defaultMethod: string = 'get'
@@ -59,6 +63,23 @@ export function buildApi(
59
63
  };
60
64
  api.method = (api.method || (options as any).method || 'get').toLowerCase();
61
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
+
62
83
  if (!data) {
63
84
  return api;
64
85
  } else if (
@@ -80,7 +101,9 @@ export function buildApi(
80
101
  );
81
102
  api.url =
82
103
  tokenize(api.url.substring(0, idx + 1), data, '| url_encode') +
83
- qsstringify((api.query = dataMapping(params, data))) +
104
+ qsstringify(
105
+ (api.query = dataMapping(params, data, undefined, api.convertKeyToPath))
106
+ ) +
84
107
  (~hashIdx ? api.url.substring(hashIdx) : '');
85
108
  } else {
86
109
  api.url = tokenize(api.url, data, '| url_encode');
@@ -91,7 +114,12 @@ export function buildApi(
91
114
  }
92
115
 
93
116
  if (api.data) {
94
- 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
+ );
95
123
  } else if (api.method === 'post' || api.method === 'put') {
96
124
  api.body = api.data = cloneObject(data);
97
125
  }
@@ -135,23 +163,6 @@ export function buildApi(
135
163
  }
136
164
  }
137
165
 
138
- if (api.headers) {
139
- api.headers = dataMapping(api.headers, data);
140
- }
141
-
142
- if (api.requestAdaptor && typeof api.requestAdaptor === 'string') {
143
- api.requestAdaptor = str2function(api.requestAdaptor, 'api') as any;
144
- }
145
-
146
- if (api.adaptor && typeof api.adaptor === 'string') {
147
- api.adaptor = str2function(
148
- api.adaptor,
149
- 'payload',
150
- 'response',
151
- 'api'
152
- ) as any;
153
- }
154
-
155
166
  return api;
156
167
  }
157
168
 
@@ -188,7 +199,7 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
188
199
  let hasStatusField = true;
189
200
 
190
201
  if (!data) {
191
- throw new Error('Response is empty!');
202
+ throw new Error('Response is empty');
192
203
  }
193
204
 
194
205
  // 兼容几种常见写法
@@ -246,7 +257,9 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
246
257
  items: payload.data
247
258
  }
248
259
  : payload.data) || {}
249
- )
260
+ ),
261
+ undefined,
262
+ api.convertKeyToPath
250
263
  );
251
264
  }
252
265
 
@@ -254,7 +267,8 @@ export function responseAdaptor(ret: fetcherResult, api: ApiObject) {
254
267
  }
255
268
 
256
269
  export function wrapFetcher(
257
- fn: (config: fetcherConfig) => Promise<fetcherResult>
270
+ fn: (config: fetcherConfig) => Promise<fetcherResult>,
271
+ tracker?: (eventTrack: EventTrack, data: any) => void
258
272
  ): (api: Api, data: object, options?: object) => Promise<Payload | void> {
259
273
  return function (api, data, options) {
260
274
  api = buildApi(api, data, options) as ApiObject;
@@ -284,6 +298,11 @@ export function wrapFetcher(
284
298
  api.headers['Content-Type'] = 'application/json';
285
299
  }
286
300
 
301
+ tracker?.(
302
+ {eventType: 'api', eventData: omit(api, ['config', 'data', 'body'])},
303
+ api.data
304
+ );
305
+
287
306
  if (typeof api.cache === 'number' && api.cache > 0) {
288
307
  const apiCache = getApiCache(api);
289
308
  return wrapAdaptor(
@@ -293,6 +312,15 @@ export function wrapFetcher(
293
312
  api
294
313
  );
295
314
  }
315
+ // IE 下 get 请求会被缓存,所以自动加个时间戳
316
+ if (isIE && api && api.method?.toLocaleLowerCase() === 'get') {
317
+ const timeStamp = `_t=${Date.now()}`;
318
+ if (api.url.indexOf('?') === -1) {
319
+ api.url = api.url + `?${timeStamp}`;
320
+ } else {
321
+ api.url = api.url + `&${timeStamp}`;
322
+ }
323
+ }
296
324
  return wrapAdaptor(fn(api), api);
297
325
  };
298
326
  }
@@ -449,4 +477,16 @@ export function clearApiCache() {
449
477
  apiCaches.splice(0, apiCaches.length);
450
478
  }
451
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
+
452
492
  // window.apiCaches = apiCaches;