amis 1.4.2-beta.1 → 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 (381) hide show
  1. package/lib/Schema.d.ts +9 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/AnchorNav.d.ts +22 -21
  4. package/lib/components/AnchorNav.js +7 -3
  5. package/lib/components/AnchorNav.js.map +2 -2
  6. package/lib/components/ArrayInput.d.ts +84 -84
  7. package/lib/components/AssociatedSelection.d.ts +930 -0
  8. package/lib/components/AssociatedSelection.js +89 -0
  9. package/lib/components/AssociatedSelection.js.map +13 -0
  10. package/lib/components/Badge.js +2 -2
  11. package/lib/components/Badge.js.map +2 -2
  12. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  13. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  14. package/lib/components/ChainedSelection.js.map +13 -0
  15. package/lib/components/ColorPicker.d.ts +84 -84
  16. package/lib/components/DatePicker.d.ts +84 -84
  17. package/lib/components/DateRangePicker.d.ts +84 -84
  18. package/lib/components/Editor.d.ts +84 -84
  19. package/lib/components/GroupedSelection.d.ts +907 -0
  20. package/lib/components/GroupedSelection.js +48 -0
  21. package/lib/components/GroupedSelection.js.map +13 -0
  22. package/lib/components/Link.d.ts +29 -36
  23. package/lib/components/Link.js +14 -15
  24. package/lib/components/Link.js.map +2 -2
  25. package/lib/components/ListGroup.d.ts +21 -21
  26. package/lib/components/ModalManager.js +1 -1
  27. package/lib/components/ModalManager.js.map +2 -2
  28. package/lib/components/MonthRangePicker.d.ts +84 -84
  29. package/lib/components/NumberInput.d.ts +20 -20
  30. package/lib/components/PickerColumn.d.ts +514 -0
  31. package/lib/components/PickerColumn.js +279 -0
  32. package/lib/components/PickerColumn.js.map +13 -0
  33. package/lib/components/PickerContainer.d.ts +513 -0
  34. package/lib/components/PickerContainer.js +96 -0
  35. package/lib/components/PickerContainer.js.map +13 -0
  36. package/lib/components/Radios.d.ts +22 -21
  37. package/lib/components/Radios.js +1 -0
  38. package/lib/components/Radios.js.map +2 -2
  39. package/lib/components/Rating.d.ts +21 -21
  40. package/lib/components/ResultBox.d.ts +84 -84
  41. package/lib/components/SearchBox.d.ts +84 -84
  42. package/lib/components/SearchBox.js +4 -4
  43. package/lib/components/SearchBox.js.map +2 -2
  44. package/lib/components/Select.d.ts +245 -237
  45. package/lib/components/Select.js +25 -4
  46. package/lib/components/Select.js.map +2 -2
  47. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  48. package/lib/components/Selection.js +134 -0
  49. package/lib/components/Selection.js.map +13 -0
  50. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  51. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  52. package/lib/components/TableSelection.js.map +13 -0
  53. package/lib/components/Tabs.d.ts +20 -20
  54. package/lib/components/TabsTransfer.d.ts +84 -84
  55. package/lib/components/TabsTransfer.js +9 -9
  56. package/lib/components/TabsTransfer.js.map +2 -2
  57. package/lib/components/TabsTransferPicker.d.ts +489 -0
  58. package/lib/components/TabsTransferPicker.js +60 -0
  59. package/lib/components/TabsTransferPicker.js.map +13 -0
  60. package/lib/components/Transfer.d.ts +908 -274
  61. package/lib/components/Transfer.js +31 -24
  62. package/lib/components/Transfer.js.map +2 -2
  63. package/lib/components/TransferDropDown.d.ts +487 -0
  64. package/lib/components/TransferDropDown.js +59 -0
  65. package/lib/components/TransferDropDown.js.map +13 -0
  66. package/lib/components/TransferPicker.d.ts +489 -0
  67. package/lib/components/TransferPicker.js +60 -0
  68. package/lib/components/TransferPicker.js.map +13 -0
  69. package/lib/components/Tree.d.ts +84 -84
  70. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  71. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  72. package/lib/components/TreeSelection.js.map +13 -0
  73. package/lib/components/WithRemoteConfig.js +1 -1
  74. package/lib/components/WithRemoteConfig.js.map +2 -2
  75. package/lib/components/condition-builder/Field.js +5 -2
  76. package/lib/components/condition-builder/Field.js.map +2 -2
  77. package/lib/components/condition-builder/Func.js +2 -2
  78. package/lib/components/condition-builder/Func.js.map +2 -2
  79. package/lib/components/condition-builder/InputSwitch.js +2 -2
  80. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  81. package/lib/components/condition-builder/Item.js +3 -3
  82. package/lib/components/condition-builder/Item.js.map +2 -2
  83. package/lib/components/index.d.ts +8 -8
  84. package/lib/components/index.js +16 -16
  85. package/lib/components/index.js.map +2 -2
  86. package/lib/envOverwrite.js.map +2 -2
  87. package/lib/factory.d.ts +4 -0
  88. package/lib/factory.js +4 -2
  89. package/lib/factory.js.map +2 -2
  90. package/lib/helper.css.map +1 -1
  91. package/lib/hooks/index.d.ts +5 -0
  92. package/lib/hooks/index.js +14 -0
  93. package/lib/hooks/index.js.map +13 -0
  94. package/lib/hooks/use-set-state.d.ts +2 -0
  95. package/lib/hooks/use-set-state.js +15 -0
  96. package/lib/hooks/use-set-state.js.map +13 -0
  97. package/lib/hooks/use-touch.d.ts +16 -0
  98. package/lib/hooks/use-touch.js +73 -0
  99. package/lib/hooks/use-touch.js.map +13 -0
  100. package/lib/hooks/use-update-effect.d.ts +3 -0
  101. package/lib/hooks/use-update-effect.js +17 -0
  102. package/lib/hooks/use-update-effect.js.map +13 -0
  103. package/lib/index.d.ts +3 -0
  104. package/lib/index.js +4 -1
  105. package/lib/index.js.map +2 -2
  106. package/lib/locale/de-DE.js +2 -0
  107. package/lib/locale/de-DE.js.map +2 -2
  108. package/lib/locale/en-US.js +2 -0
  109. package/lib/locale/en-US.js.map +2 -2
  110. package/lib/locale/zh-CN.js +4 -2
  111. package/lib/locale/zh-CN.js.map +2 -2
  112. package/lib/renderers/Action.d.ts +4 -3
  113. package/lib/renderers/Action.js +17 -4
  114. package/lib/renderers/Action.js.map +2 -2
  115. package/lib/renderers/AnchorNav.d.ts +1 -0
  116. package/lib/renderers/AnchorNav.js +2 -2
  117. package/lib/renderers/AnchorNav.js.map +2 -2
  118. package/lib/renderers/Avatar.js +3 -3
  119. package/lib/renderers/Avatar.js.map +2 -2
  120. package/lib/renderers/Breadcrumb.js +1 -1
  121. package/lib/renderers/Breadcrumb.js.map +2 -2
  122. package/lib/renderers/CRUD.d.ts +9 -0
  123. package/lib/renderers/CRUD.js +24 -4
  124. package/lib/renderers/CRUD.js.map +2 -2
  125. package/lib/renderers/Card.d.ts +4 -0
  126. package/lib/renderers/Card.js +29 -23
  127. package/lib/renderers/Card.js.map +2 -2
  128. package/lib/renderers/Chart.js +1 -1
  129. package/lib/renderers/Chart.js.map +2 -2
  130. package/lib/renderers/Collapse.js +3 -2
  131. package/lib/renderers/Collapse.js.map +2 -2
  132. package/lib/renderers/DropDownButton.js +1 -1
  133. package/lib/renderers/DropDownButton.js.map +2 -2
  134. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  135. package/lib/renderers/Form/Editor.d.ts +3 -2
  136. package/lib/renderers/Form/InputCity.d.ts +84 -84
  137. package/lib/renderers/Form/InputCity.js +7 -6
  138. package/lib/renderers/Form/InputCity.js.map +2 -2
  139. package/lib/renderers/Form/InputColor.d.ts +84 -84
  140. package/lib/renderers/Form/InputFile.js +10 -4
  141. package/lib/renderers/Form/InputFile.js.map +2 -2
  142. package/lib/renderers/Form/InputImage.js +11 -4
  143. package/lib/renderers/Form/InputImage.js.map +2 -2
  144. package/lib/renderers/Form/Item.d.ts +1 -1
  145. package/lib/renderers/Form/Item.js.map +1 -1
  146. package/lib/renderers/Form/Options.js +13 -3
  147. package/lib/renderers/Form/Options.js.map +2 -2
  148. package/lib/renderers/Form/Select.d.ts +41 -4
  149. package/lib/renderers/Form/Select.js +23 -3
  150. package/lib/renderers/Form/Select.js.map +2 -2
  151. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  152. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  153. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  154. package/lib/renderers/Form/Transfer.js +3 -2
  155. package/lib/renderers/Form/Transfer.js.map +2 -2
  156. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  157. package/lib/renderers/Form/TransferPicker.js +29 -0
  158. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  159. package/lib/renderers/Form/TreeSelect.js +2 -2
  160. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  161. package/lib/renderers/Form/index.js +1 -1
  162. package/lib/renderers/Form/index.js.map +2 -2
  163. package/lib/renderers/Form/wrapControl.js +13 -1
  164. package/lib/renderers/Form/wrapControl.js.map +2 -2
  165. package/lib/renderers/IFrame.js +1 -3
  166. package/lib/renderers/IFrame.js.map +2 -2
  167. package/lib/renderers/Json.d.ts +4 -0
  168. package/lib/renderers/Json.js +4 -13
  169. package/lib/renderers/Json.js.map +2 -2
  170. package/lib/renderers/Link.d.ts +4 -2
  171. package/lib/renderers/Link.js +15 -6
  172. package/lib/renderers/Link.js.map +2 -2
  173. package/lib/renderers/List.js +1 -1
  174. package/lib/renderers/List.js.map +2 -2
  175. package/lib/renderers/Mapping.d.ts +9 -2
  176. package/lib/renderers/Mapping.js +18 -6
  177. package/lib/renderers/Mapping.js.map +2 -2
  178. package/lib/renderers/Nav.d.ts +21 -21
  179. package/lib/renderers/Nav.js +39 -21
  180. package/lib/renderers/Nav.js.map +2 -2
  181. package/lib/renderers/Portlet.d.ts +125 -0
  182. package/lib/renderers/Portlet.js +156 -0
  183. package/lib/renderers/Portlet.js.map +13 -0
  184. package/lib/renderers/Property.js +2 -1
  185. package/lib/renderers/Property.js.map +2 -2
  186. package/lib/renderers/SearchBox.d.ts +6 -1
  187. package/lib/renderers/SearchBox.js +19 -5
  188. package/lib/renderers/SearchBox.js.map +2 -2
  189. package/lib/renderers/Table/TableContent.d.ts +4 -1
  190. package/lib/renderers/Table/TableContent.js +21 -1
  191. package/lib/renderers/Table/TableContent.js.map +2 -2
  192. package/lib/renderers/Table/index.d.ts +5 -1
  193. package/lib/renderers/Table/index.js +64 -29
  194. package/lib/renderers/Table/index.js.map +2 -2
  195. package/lib/renderers/Tabs.js +9 -1
  196. package/lib/renderers/Tabs.js.map +2 -2
  197. package/lib/renderers/WebComponent.js +1 -1
  198. package/lib/renderers/WebComponent.js.map +2 -2
  199. package/lib/store/combo.d.ts +2 -16
  200. package/lib/store/crud.js +3 -7
  201. package/lib/store/crud.js.map +2 -2
  202. package/lib/store/form.d.ts +1 -1
  203. package/lib/store/form.js +5 -6
  204. package/lib/store/form.js.map +2 -2
  205. package/lib/store/service.js +5 -4
  206. package/lib/store/service.js.map +2 -2
  207. package/lib/store/table.d.ts +2 -2
  208. package/lib/themes/ang-ie11.css +422 -149
  209. package/lib/themes/ang.css +422 -149
  210. package/lib/themes/ang.css.map +1 -1
  211. package/lib/themes/antd-ie11.css +422 -149
  212. package/lib/themes/antd.css +422 -149
  213. package/lib/themes/antd.css.map +1 -1
  214. package/lib/themes/cxd-ie11.css +456 -182
  215. package/lib/themes/cxd.css +456 -182
  216. package/lib/themes/cxd.css.map +1 -1
  217. package/lib/themes/dark-ie11.css +422 -149
  218. package/lib/themes/dark.css +422 -149
  219. package/lib/themes/dark.css.map +1 -1
  220. package/lib/themes/default.css +456 -182
  221. package/lib/themes/default.css.map +1 -1
  222. package/lib/types.d.ts +37 -0
  223. package/lib/types.js +0 -5
  224. package/lib/types.js.map +2 -2
  225. package/lib/utils/api.d.ts +3 -2
  226. package/lib/utils/api.js +28 -12
  227. package/lib/utils/api.js.map +2 -2
  228. package/lib/utils/dom.d.ts +4 -0
  229. package/lib/utils/dom.js +11 -1
  230. package/lib/utils/dom.js.map +2 -2
  231. package/lib/utils/helper.d.ts +2 -0
  232. package/lib/utils/helper.js +11 -2
  233. package/lib/utils/helper.js.map +2 -2
  234. package/lib/utils/icon.js +3 -0
  235. package/lib/utils/icon.js.map +2 -2
  236. package/package.json +1 -1
  237. package/schema.json +3038 -790
  238. package/scss/_mixins.scss +1 -3
  239. package/scss/_properties.scss +25 -1
  240. package/scss/base/_normalize.scss +2 -0
  241. package/scss/components/_anchor-nav.scss +88 -29
  242. package/scss/components/_card.scss +8 -14
  243. package/scss/components/_collapse.scss +16 -1
  244. package/scss/components/_mapping.scss +6 -0
  245. package/scss/components/_nav.scss +1 -1
  246. package/scss/components/_picker-columns.scss +123 -0
  247. package/scss/components/_popover.scss +17 -0
  248. package/scss/components/_portlet.scss +51 -0
  249. package/scss/components/_status.scss +1 -1
  250. package/scss/components/_table.scss +26 -0
  251. package/scss/components/form/_checks.scss +0 -351
  252. package/scss/components/form/_fieldset.scss +5 -1
  253. package/scss/components/form/_selection.scss +354 -0
  254. package/scss/components/form/_transfer.scss +75 -18
  255. package/scss/themes/_common.scss +4 -0
  256. package/scss/themes/_cxd-variables.scss +4 -1
  257. package/scss/themes/cxd.scss +16 -12
  258. package/sdk/ang-ie11.css +457 -152
  259. package/sdk/ang.css +480 -154
  260. package/sdk/antd-ie11.css +456 -151
  261. package/sdk/antd.css +480 -154
  262. package/sdk/charts.js +13 -13
  263. package/sdk/color-picker.js +65 -69
  264. package/sdk/cropperjs.js +2 -2
  265. package/sdk/cxd-ie11.css +496 -194
  266. package/sdk/cxd.css +517 -190
  267. package/sdk/dark-ie11.css +457 -152
  268. package/sdk/dark.css +480 -154
  269. package/sdk/exceljs.js +1 -1
  270. package/sdk/helper.css.map +1 -1
  271. package/sdk/locale/de-DE.js +2 -0
  272. package/sdk/markdown.js +69 -69
  273. package/sdk/papaparse.js +1 -1
  274. package/sdk/renderers/Form/CityDB.js +1 -1
  275. package/sdk/rest.js +20 -28
  276. package/sdk/rich-text.js +62 -62
  277. package/sdk/sdk-ie11.css +496 -194
  278. package/sdk/sdk.css +517 -190
  279. package/sdk/sdk.js +1268 -1236
  280. package/sdk/thirds/hls.js/hls.js +1 -1
  281. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  282. package/sdk/tinymce.js +57 -57
  283. package/src/Schema.ts +14 -0
  284. package/src/components/AnchorNav.tsx +15 -4
  285. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  286. package/src/components/Badge.tsx +3 -3
  287. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  288. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  289. package/src/components/Link.tsx +28 -37
  290. package/src/components/ModalManager.ts +1 -1
  291. package/src/components/PickerColumn.tsx +429 -0
  292. package/src/components/PickerContainer.tsx +128 -0
  293. package/src/components/Radios.tsx +3 -8
  294. package/src/components/SearchBox.tsx +4 -5
  295. package/src/components/Select.tsx +57 -5
  296. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  297. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  298. package/src/components/TabsTransfer.tsx +13 -7
  299. package/src/components/TabsTransferPicker.tsx +85 -0
  300. package/src/components/Transfer.tsx +71 -50
  301. package/src/components/TransferDropDown.tsx +117 -0
  302. package/src/components/TransferPicker.tsx +84 -0
  303. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  304. package/src/components/WithRemoteConfig.tsx +7 -2
  305. package/src/components/condition-builder/Field.tsx +5 -5
  306. package/src/components/condition-builder/Func.tsx +3 -3
  307. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  308. package/src/components/condition-builder/Item.tsx +5 -12
  309. package/src/components/index.tsx +13 -13
  310. package/src/envOverwrite.ts +0 -1
  311. package/src/factory.tsx +18 -3
  312. package/src/hooks/index.ts +5 -0
  313. package/src/hooks/use-set-state.ts +19 -0
  314. package/src/hooks/use-touch.ts +100 -0
  315. package/src/hooks/use-update-effect.ts +16 -0
  316. package/src/index.tsx +3 -0
  317. package/src/locale/de-DE.ts +2 -0
  318. package/src/locale/en-US.ts +2 -0
  319. package/src/locale/zh-CN.ts +4 -2
  320. package/src/renderers/Action.tsx +28 -2
  321. package/src/renderers/AnchorNav.tsx +4 -0
  322. package/src/renderers/Avatar.tsx +8 -4
  323. package/src/renderers/Breadcrumb.tsx +5 -1
  324. package/src/renderers/CRUD.tsx +33 -3
  325. package/src/renderers/Card.tsx +63 -34
  326. package/src/renderers/Chart.tsx +6 -2
  327. package/src/renderers/Collapse.tsx +4 -2
  328. package/src/renderers/DropDownButton.tsx +1 -1
  329. package/src/renderers/Form/InputCity.tsx +4 -8
  330. package/src/renderers/Form/InputFile.tsx +29 -20
  331. package/src/renderers/Form/InputImage.tsx +11 -3
  332. package/src/renderers/Form/Item.tsx +1 -1
  333. package/src/renderers/Form/Options.tsx +16 -2
  334. package/src/renderers/Form/Select.tsx +144 -21
  335. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  336. package/src/renderers/Form/Transfer.tsx +3 -2
  337. package/src/renderers/Form/TransferPicker.tsx +123 -0
  338. package/src/renderers/Form/TreeSelect.tsx +25 -0
  339. package/src/renderers/Form/index.tsx +1 -1
  340. package/src/renderers/Form/wrapControl.tsx +26 -1
  341. package/src/renderers/IFrame.tsx +2 -4
  342. package/src/renderers/Json.tsx +9 -9
  343. package/src/renderers/Link.tsx +27 -13
  344. package/src/renderers/List.tsx +1 -1
  345. package/src/renderers/Mapping.tsx +27 -11
  346. package/src/renderers/Nav.tsx +108 -60
  347. package/src/renderers/Portlet.tsx +423 -0
  348. package/src/renderers/Property.tsx +3 -2
  349. package/src/renderers/SearchBox.tsx +23 -4
  350. package/src/renderers/Table/TableContent.tsx +40 -2
  351. package/src/renderers/Table/index.tsx +87 -41
  352. package/src/renderers/Tabs.tsx +9 -1
  353. package/src/renderers/WebComponent.tsx +2 -2
  354. package/src/store/crud.ts +3 -8
  355. package/src/store/form.ts +5 -10
  356. package/src/store/service.ts +5 -4
  357. package/src/types.ts +57 -0
  358. package/src/utils/api.ts +40 -20
  359. package/src/utils/dom.tsx +12 -0
  360. package/src/utils/helper.ts +8 -0
  361. package/src/utils/icon.tsx +4 -0
  362. package/dump.rdb +0 -0
  363. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  364. package/lib/components/AssociatedCheckboxes.js +0 -90
  365. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  366. package/lib/components/ChainedCheckboxes.js.map +0 -13
  367. package/lib/components/Checkboxes.js +0 -101
  368. package/lib/components/Checkboxes.js.map +0 -13
  369. package/lib/components/ListCheckboxes.d.ts +0 -739
  370. package/lib/components/ListCheckboxes.js +0 -48
  371. package/lib/components/ListCheckboxes.js.map +0 -13
  372. package/lib/components/ListRadios.d.ts +0 -763
  373. package/lib/components/ListRadios.js +0 -86
  374. package/lib/components/ListRadios.js.map +0 -13
  375. package/lib/components/TableCheckboxes.js.map +0 -13
  376. package/lib/components/TreeCheckboxes.js.map +0 -13
  377. package/lib/components/TreeRadios.d.ts +0 -838
  378. package/lib/components/TreeRadios.js +0 -116
  379. package/lib/components/TreeRadios.js.map +0 -13
  380. package/src/components/ListRadios.tsx +0 -159
  381. package/src/components/TreeRadios.tsx +0 -202
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import {Renderer, RendererProps} from '../factory';
3
3
  import {BaseSchema, SchemaTpl} from '../Schema';
4
- import {getPropValue} from '../utils/helper';
4
+ import {autobind, getPropValue} from '../utils/helper';
5
5
  import {filter} from '../utils/tpl';
6
6
  import {BadgeSchema, withBadge} from '../components/Badge';
7
7
  import Link from '../components/Link';
@@ -42,9 +42,9 @@ export interface LinkSchema extends BaseSchema {
42
42
  icon?: string;
43
43
 
44
44
  /**
45
- * 图标位置
45
+ * 右侧图标
46
46
  */
47
- position?: string;
47
+ rightIcon?: string;
48
48
  }
49
49
 
50
50
  export interface LinkProps
@@ -55,9 +55,23 @@ export class LinkCmpt extends React.Component<LinkProps, object> {
55
55
  static defaultProps = {
56
56
  blank: true,
57
57
  disabled: false,
58
- htmlTarget: '_self'
58
+ htmlTarget: ''
59
59
  };
60
60
 
61
+ handleClick(href: string) {
62
+ const {env, blank, body} = this.props;
63
+ env?.tracker(
64
+ {
65
+ eventType: 'url',
66
+ // 需要和 action 里命名一致方便后续分析
67
+ eventData: {url: href, blank, label: body}
68
+ },
69
+ this.props
70
+ );
71
+ }
72
+
73
+ getHref() {}
74
+
61
75
  render() {
62
76
  const {
63
77
  className,
@@ -72,25 +86,25 @@ export class LinkCmpt extends React.Component<LinkProps, object> {
72
86
  translate: __,
73
87
  title,
74
88
  icon,
75
- position
89
+ rightIcon
76
90
  } = this.props;
77
91
 
78
- let value = getPropValue(this.props);
79
- const finnalHref = href ? filter(href, data, '| raw') : '';
80
- const text = body ? render('body', body) : finnalHref || value || __('link');
92
+ let value =
93
+ (typeof href === 'string' && href
94
+ ? filter(href, data, '| raw')
95
+ : undefined) || getPropValue(this.props);
81
96
 
82
97
  return (
83
98
  <Link
84
99
  className={className}
85
- href={href}
86
- body={text}
87
- blank={blank}
100
+ href={value}
88
101
  disabled={disabled}
89
102
  title={title}
90
- htmlTarget={htmlTarget}
103
+ htmlTarget={htmlTarget || (blank ? '_blank' : '_self')}
91
104
  icon={icon}
92
- position={position}
105
+ rightIcon={rightIcon}
93
106
  >
107
+ {body ? render('body', body) : value || __('link')}
94
108
  </Link>
95
109
  );
96
110
  }
@@ -1189,7 +1189,7 @@ export class ListItem extends React.Component<ListItemProps> {
1189
1189
  }
1190
1190
 
1191
1191
  renderFeild(region: string, field: any, key: any, props: any) {
1192
- const render = props.render || this.props.render;
1192
+ const render = props?.render || this.props.render;
1193
1193
  const data = this.props.data;
1194
1194
  const cx = this.props.classnames;
1195
1195
  const itemIndex = this.props.itemIndex;
@@ -20,7 +20,8 @@ import {
20
20
  buildApi,
21
21
  isApiOutdated,
22
22
  isEffectiveApi,
23
- normalizeApi
23
+ normalizeApi,
24
+ normalizeApiResponseData
24
25
  } from '../utils/api';
25
26
 
26
27
  /**
@@ -72,7 +73,7 @@ export const Store = StoreNode.named('MappingStore')
72
73
  const ret: Payload = yield env.fetcher(api, data);
73
74
 
74
75
  if (ret.ok) {
75
- const data = ret.data || {};
76
+ const data = normalizeApiResponseData(ret.data);
76
77
  (self as any).setMap(data);
77
78
  } else {
78
79
  throw new Error(ret.msg || 'fetch error');
@@ -175,7 +176,7 @@ export const MappingField = withStore(props =>
175
176
  }
176
177
  }
177
178
 
178
- render() {
179
+ renderSingleValue(key: any, reactKey?: number) {
179
180
  const {
180
181
  className,
181
182
  placeholder,
@@ -185,17 +186,13 @@ export const MappingField = withStore(props =>
185
186
  data,
186
187
  store
187
188
  } = this.props;
188
- const map = store.map;
189
-
190
- let key = getPropValue(this.props);
191
-
192
189
  let viewValue: React.ReactNode = (
193
190
  <span className="text-muted">{placeholder}</span>
194
191
  );
195
-
196
- key = typeof key === 'string' ? key.trim() : key; // trim 一下,干掉一些空白字符。
192
+ const map = store.map;
197
193
  let value: any = undefined;
198
-
194
+ // trim 一下,干掉一些空白字符。
195
+ key = typeof key === 'string' ? key.trim() : key;
199
196
  if (
200
197
  typeof key !== 'undefined' &&
201
198
  map &&
@@ -210,7 +207,26 @@ export const MappingField = withStore(props =>
210
207
  viewValue = render('tpl', value);
211
208
  }
212
209
 
213
- return <span className={cx('MappingField', className)}>{viewValue}</span>;
210
+ return (
211
+ <span key={`map-${reactKey}`} className={cx('MappingField', className)}>
212
+ {viewValue}
213
+ </span>
214
+ );
215
+ }
216
+
217
+ render() {
218
+ const mapKey = getPropValue(this.props);
219
+ if (Array.isArray(mapKey)) {
220
+ return (
221
+ <span>
222
+ {mapKey.map((singleKey: string, index: number) =>
223
+ this.renderSingleValue(singleKey, index)
224
+ )}
225
+ </span>
226
+ );
227
+ } else {
228
+ return this.renderSingleValue(mapKey, 0);
229
+ }
214
230
  }
215
231
  }
216
232
  );
@@ -17,7 +17,13 @@ import {
17
17
  import {ScopedContext, IScopedContext} from '../Scoped';
18
18
  import {themeable, ThemeProps} from '../theme';
19
19
  import {Icon} from '../components/icons';
20
- import {BaseSchema, SchemaApi, SchemaIcon, SchemaUrlPath, SchemaCollection} from '../Schema';
20
+ import {
21
+ BaseSchema,
22
+ SchemaApi,
23
+ SchemaIcon,
24
+ SchemaUrlPath,
25
+ SchemaCollection
26
+ } from '../Schema';
21
27
  import {generateIcon} from '../utils/icon';
22
28
  import {
23
29
  RemoteOptionsProps,
@@ -90,27 +96,27 @@ export interface NavSchema extends BaseSchema {
90
96
  /**
91
97
  * 更多操作菜单列表
92
98
  */
93
- itemActions?: SchemaCollection;
99
+ itemActions?: SchemaCollection;
94
100
 
95
101
  /**
96
102
  * 可拖拽
97
103
  */
98
- draggable?: boolean;
104
+ draggable?: boolean;
99
105
 
100
- /**
101
- * 保存排序的 api
102
- */
106
+ /**
107
+ * 保存排序的 api
108
+ */
103
109
  saveOrderApi?: SchemaApi;
104
110
 
105
111
  /**
106
112
  * 角标
107
113
  */
108
- itemBadge?: BadgeSchema;
114
+ itemBadge?: BadgeSchema;
109
115
 
110
116
  /**
111
117
  * 仅允许同层级拖拽
112
118
  */
113
- dragOnSameLevel?: boolean;
119
+ dragOnSameLevel?: boolean;
114
120
  }
115
121
 
116
122
  export interface Link {
@@ -191,7 +197,19 @@ export class Navigation extends React.Component<
191
197
 
192
198
  @autobind
193
199
  handleClick(link: Link) {
194
- this.props.onSelect?.(link);
200
+ const {env, onSelect} = this.props;
201
+ // 和 action 里命名一致方便分析
202
+ if (link && link.to) {
203
+ env?.tracker({
204
+ eventType: 'link',
205
+ eventData: {
206
+ label: link.label,
207
+ link: link.to
208
+ }
209
+ });
210
+ }
211
+
212
+ onSelect?.(link);
195
213
  }
196
214
 
197
215
  @autobind
@@ -207,14 +225,18 @@ export class Navigation extends React.Component<
207
225
  const {top, height, width} = rect;
208
226
  let {clientY, clientX} = e;
209
227
  const left = depth * (parseInt(indentSize as any, 10) ?? 24);
210
- const deltaX = left + width * .2;
228
+ const deltaX = left + width * 0.2;
211
229
  let position;
212
- if (clientY >= top + height / 2 ) {
230
+ if (clientY >= top + height / 2) {
213
231
  position = 'bottom';
214
232
  } else {
215
233
  position = 'top';
216
234
  }
217
- if (!dragOnSameLevel && position === 'bottom' && clientX >= this.startPoint.x + deltaX) {
235
+ if (
236
+ !dragOnSameLevel &&
237
+ position === 'bottom' &&
238
+ clientX >= this.startPoint.x + deltaX
239
+ ) {
218
240
  position = 'self';
219
241
  }
220
242
  return {
@@ -232,8 +254,9 @@ export class Navigation extends React.Component<
232
254
  const target = e.target as HTMLElement; // a标签
233
255
  const targetId = target.getAttribute('data-id') as string;
234
256
  const targetDepth = Number(target.getAttribute('data-depth'));
235
- if (dragOnSameLevel
236
- && this.dragNode?.node.parentElement !== target.parentElement?.parentElement
257
+ if (
258
+ dragOnSameLevel &&
259
+ this.dragNode?.node.parentElement !== target.parentElement?.parentElement
237
260
  ) {
238
261
  this.setState({dropIndicator: undefined});
239
262
  this.dropInfo = null;
@@ -254,13 +277,15 @@ export class Navigation extends React.Component<
254
277
  left,
255
278
  width: ul.getBoundingClientRect().width - left,
256
279
  height,
257
- opacity: .2
280
+ opacity: 0.2
258
281
  }
259
282
  });
260
283
  } else {
261
284
  this.setState({
262
285
  dropIndicator: {
263
- top: (position === 'bottom' ? rect.top + rect.height : rect.top) - ul.getBoundingClientRect().top,
286
+ top:
287
+ (position === 'bottom' ? rect.top + rect.height : rect.top) -
288
+ ul.getBoundingClientRect().top,
264
289
  left,
265
290
  width: ul.getBoundingClientRect().width - left
266
291
  }
@@ -356,21 +381,31 @@ export class Navigation extends React.Component<
356
381
  })}
357
382
  onDragStart={this.handleDragStart(link)}
358
383
  >
359
- <Badge classnames={cx} badge={itemBadge} data={createObject(defaultData, link)}>
384
+ <Badge
385
+ classnames={cx}
386
+ badge={itemBadge}
387
+ data={createObject(defaultData, link)}
388
+ >
360
389
  <a
361
390
  data-id={link.__id}
362
391
  data-depth={depth}
363
392
  onClick={this.handleClick.bind(this, link)}
364
- style={{paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)}}
393
+ style={{
394
+ paddingLeft: depth * (parseInt(indentSize as any, 10) ?? 24)
395
+ }}
365
396
  >
366
- {!disabled && draggable && links && links.length > 1 ? (
367
- <div className={cx('Nav-itemDrager')}
368
- draggable
369
- onMouseDown={e => {this.toggleLink(link, true); e.stopPropagation()}}
370
- >
371
- <Icon icon="drag-bar" className="icon" />
372
- </div>
373
- ) : null}
397
+ {!disabled && draggable ? (
398
+ <div
399
+ className={cx('Nav-itemDrager')}
400
+ draggable
401
+ onMouseDown={e => {
402
+ this.toggleLink(link, true);
403
+ e.stopPropagation();
404
+ }}
405
+ >
406
+ <Icon icon="drag-bar" className="icon" />
407
+ </div>
408
+ ) : null}
374
409
  {link.loading ? (
375
410
  <Spinner
376
411
  size="sm"
@@ -387,20 +422,20 @@ export class Navigation extends React.Component<
387
422
  </span>
388
423
  ) : null}
389
424
  {generateIcon(cx, link.icon, 'Nav-itemIcon')}
390
- {
391
- link.label && (typeof link.label === 'string'
392
- ? link.label
393
- : render('inline', link.label as SchemaCollection))
394
- }
425
+ {link.label &&
426
+ (typeof link.label === 'string'
427
+ ? link.label
428
+ : render('inline', link.label as SchemaCollection))}
395
429
  </a>
396
430
  {
397
431
  // 更多操作
398
- itemActions
399
- ? <div className={cx('Nav-item-atcions')}>
400
- {
401
- render('inline', itemActions, {data: createObject(defaultData, link)})
402
- }
403
- </div> : null
432
+ itemActions ? (
433
+ <div className={cx('Nav-item-atcions')}>
434
+ {render('inline', itemActions, {
435
+ data: createObject(defaultData, link)
436
+ })}
437
+ </div>
438
+ ) : null
404
439
  }
405
440
  {Array.isArray(link.children) && link.children.length ? (
406
441
  <ul className={cx('Nav-subItems')}>
@@ -419,17 +454,22 @@ export class Navigation extends React.Component<
419
454
  const {dropIndicator} = this.state;
420
455
  return (
421
456
  <div className={cx('Nav')}>
422
- <ul className={cx('Nav-list', className, stacked ? 'Nav-list--stacked' : 'Nav-list--tabs')}>
457
+ <ul
458
+ className={cx(
459
+ 'Nav-list',
460
+ className,
461
+ stacked ? 'Nav-list--stacked' : 'Nav-list--tabs'
462
+ )}
463
+ >
423
464
  {Array.isArray(links)
424
465
  ? links.map((item, index) => this.renderItem(item, index))
425
466
  : null}
426
467
 
427
468
  <Spinner show={!!loading} overlay icon="reload" />
428
469
  </ul>
429
- {(dropIndicator
430
- ? <div className={cx('Nav-dropIndicator')} style={dropIndicator} />
431
- : null
432
- )}
470
+ {dropIndicator ? (
471
+ <div className={cx('Nav-dropIndicator')} style={dropIndicator} />
472
+ ) : null}
433
473
  </div>
434
474
  );
435
475
  }
@@ -444,7 +484,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
444
484
  : config.links || config.options || config.items || config.rows;
445
485
 
446
486
  if (!Array.isArray(links)) {
447
- throw new Error('payload.data.options is not array.');
487
+ throw new Error('payload.data.options is not array.');
448
488
  }
449
489
 
450
490
  return links;
@@ -480,7 +520,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
480
520
  env &&
481
521
  env.isCurrentUrl(filter(link.to as string, data))
482
522
  )),
483
- __id: guid()
523
+ __id: link.__id || guid()
484
524
  };
485
525
 
486
526
  item.unfolded =
@@ -586,12 +626,15 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
586
626
  const {nodeId, dragLink, position} = dropInfo;
587
627
  if (dragLink) {
588
628
  // 删除原节点
589
- const sourceIdx = findTreeIndex(links, link => link.__id === dragLink.__id) as number[];
629
+ const sourceIdx = findTreeIndex(
630
+ links,
631
+ link => link.__id === dragLink.__id
632
+ ) as number[];
590
633
  links = spliceTree(links, sourceIdx, 1);
591
634
 
592
635
  if (position === 'self') {
593
636
  // 插入到对应节点的children中
594
- mapTree(links, (link) => {
637
+ mapTree(links, link => {
595
638
  if (link.__id === nodeId) {
596
639
  if (!link.children) {
597
640
  link.children = [];
@@ -599,33 +642,39 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
599
642
  link.children.push(dragLink);
600
643
  }
601
644
  return link;
602
- })
645
+ });
603
646
  } else {
604
647
  // 找到需要插入的节点
605
- const idx = findTreeIndex(links, link => link.__id === nodeId) as number[];
648
+ const idx = findTreeIndex(
649
+ links,
650
+ link => link.__id === nodeId
651
+ ) as number[];
606
652
  // 插入节点之后
607
653
  if (position === 'bottom') {
608
- idx.push(idx.pop() as number + 1);
654
+ idx.push((idx.pop() as number) + 1);
609
655
  }
610
656
  links = spliceTree(links, idx, 0, dragLink);
611
657
  }
612
658
  }
613
659
  this.props.updateConfig(links, 'update');
614
- await this.saveOrder(mapTree(links, (link: Link) => {
615
- // 清除内部加的字段
616
- for (let key in link) {
617
- if (/^__.*$/.test(key)) {
618
- delete link[key];
660
+ await this.saveOrder(
661
+ mapTree(links, (link: Link) => {
662
+ // 清除内部加的字段
663
+ for (let key in link) {
664
+ if (/^__.*$/.test(key)) {
665
+ delete link[key];
666
+ }
619
667
  }
620
- }
621
- return link;
622
- }));
668
+ return link;
669
+ })
670
+ );
623
671
  }
624
672
 
625
673
  async saveOrder(links: Links) {
626
674
  const {saveOrderApi, env, data, reload} = this.props;
627
675
  if (saveOrderApi && isEffectiveApi(saveOrderApi)) {
628
- await env.fetcher(saveOrderApi as SchemaApi,
676
+ await env.fetcher(
677
+ saveOrderApi as SchemaApi,
629
678
  createObject(data, {data: links}),
630
679
  {method: 'post'}
631
680
  );
@@ -659,7 +708,7 @@ const ConditionBuilderWithRemoteOptions = withRemoteConfig({
659
708
  <ThemedNavigation
660
709
  {...rest}
661
710
  loading={loading}
662
- links={config || rest.links || []}
711
+ links={config || []}
663
712
  disabled={loading}
664
713
  onSelect={this.handleSelect}
665
714
  onToggle={this.toggleLink}
@@ -721,7 +770,6 @@ export class NavigationRenderer extends React.Component<RendererProps> {
721
770
 
722
771
  render() {
723
772
  const {...rest} = this.props;
724
-
725
773
  return (
726
774
  <ConditionBuilderWithRemoteOptions
727
775
  {...rest}