amis 1.4.2-beta.6 → 1.5.0

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 (488) hide show
  1. package/lib/Schema.d.ts +11 -3
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/Alert2.d.ts +26 -21
  4. package/lib/components/Alert2.js +11 -4
  5. package/lib/components/Alert2.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.js +2 -2
  14. package/lib/components/Badge.js.map +2 -2
  15. package/lib/components/Button.js +1 -1
  16. package/lib/components/Button.js.map +2 -2
  17. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  18. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  19. package/lib/components/ChainedSelection.js.map +13 -0
  20. package/lib/components/Checkbox.d.ts +20 -20
  21. package/lib/components/Collapse.d.ts +51 -23
  22. package/lib/components/Collapse.js +70 -11
  23. package/lib/components/Collapse.js.map +2 -2
  24. package/lib/components/CollapseGroup.d.ts +88 -0
  25. package/lib/components/CollapseGroup.js +81 -0
  26. package/lib/components/CollapseGroup.js.map +13 -0
  27. package/lib/components/ColorPicker.d.ts +89 -85
  28. package/lib/components/ColorPicker.js +17 -4
  29. package/lib/components/ColorPicker.js.map +2 -2
  30. package/lib/components/DatePicker.d.ts +84 -84
  31. package/lib/components/DateRangePicker.d.ts +84 -84
  32. package/lib/components/Drawer.js +2 -2
  33. package/lib/components/Drawer.js.map +2 -2
  34. package/lib/components/Editor.d.ts +84 -84
  35. package/lib/components/GridNav.d.ts +52 -0
  36. package/lib/components/GridNav.js +123 -0
  37. package/lib/components/GridNav.js.map +13 -0
  38. package/lib/components/GroupedSelection.d.ts +907 -0
  39. package/lib/components/GroupedSelection.js +48 -0
  40. package/lib/components/GroupedSelection.js.map +13 -0
  41. package/lib/components/InputBox.d.ts +22 -21
  42. package/lib/components/InputBox.js +10 -2
  43. package/lib/components/InputBox.js.map +2 -2
  44. package/lib/components/Link.d.ts +29 -36
  45. package/lib/components/Link.js +14 -15
  46. package/lib/components/Link.js.map +2 -2
  47. package/lib/components/ListGroup.d.ts +21 -21
  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/NumberInput.d.ts +20 -20
  52. package/lib/components/Overlay.js +5 -0
  53. package/lib/components/Overlay.js.map +2 -2
  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/PopOver.d.ts +1 -0
  61. package/lib/components/PopOver.js +12 -1
  62. package/lib/components/PopOver.js.map +2 -2
  63. package/lib/components/Progress.d.ts +85 -0
  64. package/lib/components/Progress.js +81 -0
  65. package/lib/components/Progress.js.map +13 -0
  66. package/lib/components/Radios.d.ts +22 -21
  67. package/lib/components/Radios.js +1 -0
  68. package/lib/components/Radios.js.map +2 -2
  69. package/lib/components/Rating.d.ts +21 -21
  70. package/lib/components/ResultBox.d.ts +84 -84
  71. package/lib/components/ResultBox.js +10 -2
  72. package/lib/components/ResultBox.js.map +2 -2
  73. package/lib/components/SearchBox.d.ts +84 -84
  74. package/lib/components/Select.d.ts +245 -237
  75. package/lib/components/Select.js +25 -4
  76. package/lib/components/Select.js.map +2 -2
  77. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  78. package/lib/components/Selection.js +134 -0
  79. package/lib/components/Selection.js.map +13 -0
  80. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  81. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  82. package/lib/components/TableSelection.js.map +13 -0
  83. package/lib/components/Tabs.d.ts +20 -20
  84. package/lib/components/TabsTransfer.d.ts +84 -84
  85. package/lib/components/TabsTransfer.js +9 -9
  86. package/lib/components/TabsTransfer.js.map +2 -2
  87. package/lib/components/TabsTransferPicker.d.ts +489 -0
  88. package/lib/components/TabsTransferPicker.js +60 -0
  89. package/lib/components/TabsTransferPicker.js.map +13 -0
  90. package/lib/components/Toast.d.ts +90 -87
  91. package/lib/components/Toast.js +15 -5
  92. package/lib/components/Toast.js.map +2 -2
  93. package/lib/components/Transfer.d.ts +908 -274
  94. package/lib/components/Transfer.js +31 -24
  95. package/lib/components/Transfer.js.map +2 -2
  96. package/lib/components/TransferDropDown.d.ts +488 -0
  97. package/lib/components/TransferDropDown.js +59 -0
  98. package/lib/components/TransferDropDown.js.map +13 -0
  99. package/lib/components/TransferPicker.d.ts +493 -0
  100. package/lib/components/TransferPicker.js +60 -0
  101. package/lib/components/TransferPicker.js.map +13 -0
  102. package/lib/components/Tree.d.ts +115 -84
  103. package/lib/components/Tree.js +183 -30
  104. package/lib/components/Tree.js.map +2 -2
  105. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  106. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  107. package/lib/components/TreeSelection.js.map +13 -0
  108. package/lib/components/condition-builder/Field.js +4 -2
  109. package/lib/components/condition-builder/Field.js.map +2 -2
  110. package/lib/components/condition-builder/Func.js +2 -2
  111. package/lib/components/condition-builder/Func.js.map +2 -2
  112. package/lib/components/condition-builder/InputSwitch.js +2 -2
  113. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  114. package/lib/components/condition-builder/Item.js +3 -3
  115. package/lib/components/condition-builder/Item.js.map +2 -2
  116. package/lib/components/icons.js +10 -0
  117. package/lib/components/icons.js.map +2 -2
  118. package/lib/components/index.d.ts +8 -8
  119. package/lib/components/index.js +16 -16
  120. package/lib/components/index.js.map +2 -2
  121. package/lib/envOverwrite.d.ts +1 -1
  122. package/lib/envOverwrite.js +24 -9
  123. package/lib/envOverwrite.js.map +2 -2
  124. package/lib/factory.d.ts +15 -1
  125. package/lib/factory.js +35 -6
  126. package/lib/factory.js.map +2 -2
  127. package/lib/helper.css.map +1 -1
  128. package/lib/hooks/index.d.ts +5 -0
  129. package/lib/hooks/index.js +14 -0
  130. package/lib/hooks/index.js.map +13 -0
  131. package/lib/hooks/use-set-state.d.ts +2 -0
  132. package/lib/hooks/use-set-state.js +15 -0
  133. package/lib/hooks/use-set-state.js.map +13 -0
  134. package/lib/hooks/use-touch.d.ts +16 -0
  135. package/lib/hooks/use-touch.js +73 -0
  136. package/lib/hooks/use-touch.js.map +13 -0
  137. package/lib/hooks/use-update-effect.d.ts +3 -0
  138. package/lib/hooks/use-update-effect.js +17 -0
  139. package/lib/hooks/use-update-effect.js.map +13 -0
  140. package/lib/icons/alert-danger.js +7 -0
  141. package/lib/icons/alert-info.js +7 -0
  142. package/lib/icons/alert-success.js +7 -0
  143. package/lib/icons/alert-warning.js +7 -0
  144. package/lib/icons/download.js +7 -0
  145. package/lib/icons/drag-bar.js +10 -3
  146. package/lib/index.d.ts +5 -0
  147. package/lib/index.js +6 -1
  148. package/lib/index.js.map +2 -2
  149. package/lib/locale/de-DE.js +2 -0
  150. package/lib/locale/de-DE.js.map +2 -2
  151. package/lib/locale/en-US.js +3 -0
  152. package/lib/locale/en-US.js.map +2 -2
  153. package/lib/locale/zh-CN.js +5 -2
  154. package/lib/locale/zh-CN.js.map +2 -2
  155. package/lib/renderers/Action.d.ts +10 -5
  156. package/lib/renderers/Action.js +23 -5
  157. package/lib/renderers/Action.js.map +2 -2
  158. package/lib/renderers/Alert.d.ts +21 -1
  159. package/lib/renderers/Alert.js.map +2 -2
  160. package/lib/renderers/AnchorNav.d.ts +1 -0
  161. package/lib/renderers/AnchorNav.js +2 -2
  162. package/lib/renderers/AnchorNav.js.map +2 -2
  163. package/lib/renderers/Avatar.js +3 -3
  164. package/lib/renderers/Avatar.js.map +2 -2
  165. package/lib/renderers/Breadcrumb.js +1 -1
  166. package/lib/renderers/Breadcrumb.js.map +2 -2
  167. package/lib/renderers/CRUD.d.ts +5 -0
  168. package/lib/renderers/CRUD.js +25 -4
  169. package/lib/renderers/CRUD.js.map +2 -2
  170. package/lib/renderers/Card.d.ts +5 -0
  171. package/lib/renderers/Card.js +34 -23
  172. package/lib/renderers/Card.js.map +2 -2
  173. package/lib/renderers/Collapse.d.ts +25 -20
  174. package/lib/renderers/Collapse.js +10 -72
  175. package/lib/renderers/Collapse.js.map +2 -2
  176. package/lib/renderers/CollapseGroup.d.ts +42 -0
  177. package/lib/renderers/CollapseGroup.js +33 -0
  178. package/lib/renderers/CollapseGroup.js.map +13 -0
  179. package/lib/renderers/Form/ConditionBuilder.js +2 -2
  180. package/lib/renderers/Form/ConditionBuilder.js.map +2 -2
  181. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  182. package/lib/renderers/Form/Editor.d.ts +3 -2
  183. package/lib/renderers/Form/InputCity.d.ts +84 -84
  184. package/lib/renderers/Form/InputCity.js +7 -6
  185. package/lib/renderers/Form/InputCity.js.map +2 -2
  186. package/lib/renderers/Form/InputColor.d.ts +86 -85
  187. package/lib/renderers/Form/InputColor.js +1 -1
  188. package/lib/renderers/Form/InputColor.js.map +2 -2
  189. package/lib/renderers/Form/InputFile.d.ts +6 -0
  190. package/lib/renderers/Form/InputFile.js +28 -8
  191. package/lib/renderers/Form/InputFile.js.map +2 -2
  192. package/lib/renderers/Form/InputImage.js +11 -4
  193. package/lib/renderers/Form/InputImage.js.map +2 -2
  194. package/lib/renderers/Form/Item.d.ts +1 -1
  195. package/lib/renderers/Form/Item.js +2 -1
  196. package/lib/renderers/Form/Item.js.map +2 -2
  197. package/lib/renderers/Form/Options.js +25 -4
  198. package/lib/renderers/Form/Options.js.map +2 -2
  199. package/lib/renderers/Form/Select.d.ts +42 -4
  200. package/lib/renderers/Form/Select.js +37 -3
  201. package/lib/renderers/Form/Select.js.map +2 -2
  202. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  203. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  204. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  205. package/lib/renderers/Form/Transfer.js +18 -3
  206. package/lib/renderers/Form/Transfer.js.map +2 -2
  207. package/lib/renderers/Form/TransferPicker.d.ts +52 -0
  208. package/lib/renderers/Form/TransferPicker.js +43 -0
  209. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  210. package/lib/renderers/Form/TreeSelect.js +2 -2
  211. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  212. package/lib/renderers/Form/index.d.ts +5 -0
  213. package/lib/renderers/Form/index.js +5 -3
  214. package/lib/renderers/Form/index.js.map +2 -2
  215. package/lib/renderers/Form/wrapControl.js +13 -1
  216. package/lib/renderers/Form/wrapControl.js.map +2 -2
  217. package/lib/renderers/GridNav.d.ts +99 -0
  218. package/lib/renderers/GridNav.js +82 -0
  219. package/lib/renderers/GridNav.js.map +13 -0
  220. package/lib/renderers/IFrame.js +1 -3
  221. package/lib/renderers/IFrame.js.map +2 -2
  222. package/lib/renderers/Image.js +7 -5
  223. package/lib/renderers/Image.js.map +2 -2
  224. package/lib/renderers/Json.d.ts +4 -0
  225. package/lib/renderers/Json.js +4 -13
  226. package/lib/renderers/Json.js.map +2 -2
  227. package/lib/renderers/Link.d.ts +4 -2
  228. package/lib/renderers/Link.js +15 -8
  229. package/lib/renderers/Link.js.map +2 -2
  230. package/lib/renderers/List.js +1 -1
  231. package/lib/renderers/List.js.map +2 -2
  232. package/lib/renderers/Nav.d.ts +21 -21
  233. package/lib/renderers/Nav.js +37 -19
  234. package/lib/renderers/Nav.js.map +2 -2
  235. package/lib/renderers/Page.d.ts +18 -0
  236. package/lib/renderers/Page.js +53 -9
  237. package/lib/renderers/Page.js.map +2 -2
  238. package/lib/renderers/Portlet.d.ts +125 -0
  239. package/lib/renderers/Portlet.js +156 -0
  240. package/lib/renderers/Portlet.js.map +13 -0
  241. package/lib/renderers/Progress.d.ts +23 -3
  242. package/lib/renderers/Progress.js +15 -19
  243. package/lib/renderers/Progress.js.map +2 -2
  244. package/lib/renderers/Property.js +1 -1
  245. package/lib/renderers/Property.js.map +2 -2
  246. package/lib/renderers/Table/ColumnToggler.js +1 -1
  247. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  248. package/lib/renderers/Table/TableContent.d.ts +4 -1
  249. package/lib/renderers/Table/TableContent.js +21 -1
  250. package/lib/renderers/Table/TableContent.js.map +2 -2
  251. package/lib/renderers/Table/index.d.ts +5 -1
  252. package/lib/renderers/Table/index.js +65 -30
  253. package/lib/renderers/Table/index.js.map +2 -2
  254. package/lib/renderers/Tabs.js +9 -1
  255. package/lib/renderers/Tabs.js.map +2 -2
  256. package/lib/renderers/WebComponent.js +1 -1
  257. package/lib/renderers/WebComponent.js.map +2 -2
  258. package/lib/store/combo.d.ts +2 -2
  259. package/lib/store/form.d.ts +1 -1
  260. package/lib/store/form.js +3 -5
  261. package/lib/store/form.js.map +2 -2
  262. package/lib/store/formItem.js +44 -4
  263. package/lib/store/formItem.js.map +2 -2
  264. package/lib/store/table.d.ts +3 -2
  265. package/lib/store/table.js +35 -12
  266. package/lib/store/table.js.map +2 -2
  267. package/lib/themes/ang-ie11.css +934 -222
  268. package/lib/themes/ang.css +934 -222
  269. package/lib/themes/ang.css.map +1 -1
  270. package/lib/themes/antd-ie11.css +934 -222
  271. package/lib/themes/antd.css +934 -222
  272. package/lib/themes/antd.css.map +1 -1
  273. package/lib/themes/cxd-ie11.css +970 -260
  274. package/lib/themes/cxd.css +970 -260
  275. package/lib/themes/cxd.css.map +1 -1
  276. package/lib/themes/dark-ie11.css +934 -222
  277. package/lib/themes/dark.css +934 -222
  278. package/lib/themes/dark.css.map +1 -1
  279. package/lib/themes/default.css +970 -260
  280. package/lib/themes/default.css.map +1 -1
  281. package/lib/types.d.ts +38 -1
  282. package/lib/types.js +0 -5
  283. package/lib/types.js.map +2 -2
  284. package/lib/utils/api.d.ts +3 -2
  285. package/lib/utils/api.js +90 -17
  286. package/lib/utils/api.js.map +2 -2
  287. package/lib/utils/dom.d.ts +4 -0
  288. package/lib/utils/dom.js +11 -1
  289. package/lib/utils/dom.js.map +2 -2
  290. package/lib/utils/helper.d.ts +12 -23
  291. package/lib/utils/helper.js +62 -166
  292. package/lib/utils/helper.js.map +2 -2
  293. package/lib/utils/tpl-builtin.d.ts +2 -20
  294. package/lib/utils/tpl-builtin.js +25 -743
  295. package/lib/utils/tpl-builtin.js.map +2 -2
  296. package/lib/utils/tpl.js +24 -0
  297. package/lib/utils/tpl.js.map +2 -2
  298. package/package.json +5 -2
  299. package/schema.json +3966 -1263
  300. package/scss/_mixins.scss +1 -3
  301. package/scss/_properties.scss +42 -13
  302. package/scss/base/_common.scss +3 -0
  303. package/scss/base/_normalize.scss +2 -0
  304. package/scss/components/_alert.scss +28 -5
  305. package/scss/components/_anchor-nav.scss +89 -29
  306. package/scss/components/_button.scss +12 -0
  307. package/scss/components/_card.scss +9 -15
  308. package/scss/components/_collapse-group.scss +15 -0
  309. package/scss/components/_collapse.scss +48 -23
  310. package/scss/components/_grid-nav.scss +128 -0
  311. package/scss/components/_images.scss +1 -0
  312. package/scss/components/_input-box.scss +1 -0
  313. package/scss/components/_nav.scss +2 -7
  314. package/scss/components/_page.scss +35 -2
  315. package/scss/components/_picker-columns.scss +124 -0
  316. package/scss/components/_popover.scss +13 -0
  317. package/scss/components/_portlet.scss +51 -0
  318. package/scss/components/_progress.scss +141 -33
  319. package/scss/components/_result-box.scss +1 -0
  320. package/scss/components/_spinner.scss +5 -4
  321. package/scss/components/_status.scss +1 -1
  322. package/scss/components/_table.scss +32 -0
  323. package/scss/components/_toast.scss +41 -11
  324. package/scss/components/form/_checks.scss +0 -351
  325. package/scss/components/form/_color.scss +32 -3
  326. package/scss/components/form/_combo.scss +4 -0
  327. package/scss/components/form/_fieldset.scss +6 -1
  328. package/scss/components/form/_file.scss +11 -0
  329. package/scss/components/form/_form.scss +48 -0
  330. package/scss/components/form/_selection.scss +354 -0
  331. package/scss/components/form/_transfer.scss +76 -18
  332. package/scss/components/form/_tree.scss +42 -0
  333. package/scss/themes/_common.scss +6 -0
  334. package/scss/themes/_cxd-variables.scss +13 -6
  335. package/scss/themes/cxd.scss +19 -20
  336. package/sdk/ang-ie11.css +1065 -246
  337. package/sdk/ang.css +1069 -230
  338. package/sdk/antd-ie11.css +1068 -249
  339. package/sdk/antd.css +1069 -230
  340. package/sdk/charts.js +17 -17
  341. package/sdk/color-picker.js +65 -69
  342. package/sdk/cropperjs.js +3 -3
  343. package/sdk/cxd-ie11.css +1081 -268
  344. package/sdk/cxd.css +1116 -279
  345. package/sdk/dark-ie11.css +1069 -250
  346. package/sdk/dark.css +1069 -230
  347. package/sdk/exceljs.js +1 -1
  348. package/sdk/helper.css.map +1 -1
  349. package/sdk/iconfont.svg +2513 -0
  350. package/sdk/iconfont.ttf +0 -0
  351. package/sdk/iconfont.woff +0 -0
  352. package/sdk/locale/de-DE.js +2 -0
  353. package/sdk/markdown.js +69 -69
  354. package/sdk/papaparse.js +1 -1
  355. package/sdk/renderers/Form/CityDB.js +1 -1
  356. package/sdk/rest.js +20 -28
  357. package/sdk/rich-text.js +62 -62
  358. package/sdk/sdk-ie11.css +1081 -268
  359. package/sdk/sdk.css +1116 -279
  360. package/sdk/sdk.js +1371 -1189
  361. package/sdk/thirds/hls.js/hls.js +18 -18
  362. package/sdk/thirds/mpegts.js/mpegts.js +2 -2
  363. package/sdk/tinymce.js +57 -57
  364. package/src/Schema.ts +19 -1
  365. package/src/components/Alert2.tsx +32 -4
  366. package/src/components/AnchorNav.tsx +15 -4
  367. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +43 -37
  368. package/src/components/Badge.tsx +3 -3
  369. package/src/components/Button.tsx +1 -0
  370. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  371. package/src/components/Collapse.tsx +139 -20
  372. package/src/components/CollapseGroup.tsx +130 -0
  373. package/src/components/ColorPicker.tsx +32 -10
  374. package/src/components/Drawer.tsx +8 -6
  375. package/src/components/GridNav.tsx +233 -0
  376. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  377. package/src/components/InputBox.tsx +10 -9
  378. package/src/components/Link.tsx +28 -37
  379. package/src/components/ModalManager.ts +1 -1
  380. package/src/components/Overlay.tsx +6 -0
  381. package/src/components/PickerColumn.tsx +429 -0
  382. package/src/components/PickerContainer.tsx +128 -0
  383. package/src/components/PopOver.tsx +15 -1
  384. package/src/components/Progress.tsx +140 -0
  385. package/src/components/Radios.tsx +3 -8
  386. package/src/components/ResultBox.tsx +9 -9
  387. package/src/components/Select.tsx +57 -5
  388. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  389. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  390. package/src/components/TabsTransfer.tsx +13 -7
  391. package/src/components/TabsTransferPicker.tsx +85 -0
  392. package/src/components/Toast.tsx +48 -21
  393. package/src/components/Transfer.tsx +71 -50
  394. package/src/components/TransferDropDown.tsx +120 -0
  395. package/src/components/TransferPicker.tsx +91 -0
  396. package/src/components/Tree.tsx +194 -8
  397. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  398. package/src/components/condition-builder/Field.tsx +7 -5
  399. package/src/components/condition-builder/Func.tsx +3 -3
  400. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  401. package/src/components/condition-builder/Item.tsx +5 -12
  402. package/src/components/icons.tsx +10 -0
  403. package/src/components/index.tsx +13 -13
  404. package/src/envOverwrite.ts +20 -8
  405. package/src/factory.tsx +70 -9
  406. package/src/hooks/index.ts +5 -0
  407. package/src/hooks/use-set-state.ts +19 -0
  408. package/src/hooks/use-touch.ts +100 -0
  409. package/src/hooks/use-update-effect.ts +16 -0
  410. package/src/icons/alert-danger.svg +1 -0
  411. package/src/icons/alert-info.svg +1 -0
  412. package/src/icons/alert-success.svg +1 -0
  413. package/src/icons/alert-warning.svg +1 -0
  414. package/src/icons/download.svg +4 -0
  415. package/src/icons/drag-bar.svg +12 -6
  416. package/src/index.tsx +5 -0
  417. package/src/locale/de-DE.ts +2 -0
  418. package/src/locale/en-US.ts +3 -0
  419. package/src/locale/zh-CN.ts +5 -2
  420. package/src/renderers/Action.tsx +58 -3
  421. package/src/renderers/Alert.tsx +31 -1
  422. package/src/renderers/AnchorNav.tsx +4 -0
  423. package/src/renderers/Avatar.tsx +8 -4
  424. package/src/renderers/Breadcrumb.tsx +5 -1
  425. package/src/renderers/CRUD.tsx +29 -3
  426. package/src/renderers/Card.tsx +76 -36
  427. package/src/renderers/Collapse.tsx +70 -115
  428. package/src/renderers/CollapseGroup.tsx +80 -0
  429. package/src/renderers/Form/ConditionBuilder.tsx +2 -2
  430. package/src/renderers/Form/InputCity.tsx +4 -8
  431. package/src/renderers/Form/InputColor.tsx +4 -2
  432. package/src/renderers/Form/InputFile.tsx +65 -24
  433. package/src/renderers/Form/InputImage.tsx +11 -3
  434. package/src/renderers/Form/Item.tsx +3 -2
  435. package/src/renderers/Form/Options.tsx +29 -3
  436. package/src/renderers/Form/Select.tsx +162 -21
  437. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  438. package/src/renderers/Form/Transfer.tsx +19 -4
  439. package/src/renderers/Form/TransferPicker.tsx +145 -0
  440. package/src/renderers/Form/TreeSelect.tsx +25 -0
  441. package/src/renderers/Form/index.tsx +15 -2
  442. package/src/renderers/Form/wrapControl.tsx +26 -1
  443. package/src/renderers/GridNav.tsx +204 -0
  444. package/src/renderers/IFrame.tsx +2 -4
  445. package/src/renderers/Image.tsx +19 -15
  446. package/src/renderers/Json.tsx +9 -9
  447. package/src/renderers/Link.tsx +29 -16
  448. package/src/renderers/List.tsx +1 -1
  449. package/src/renderers/Nav.tsx +105 -56
  450. package/src/renderers/Page.tsx +62 -1
  451. package/src/renderers/Portlet.tsx +423 -0
  452. package/src/renderers/Progress.tsx +56 -38
  453. package/src/renderers/Property.tsx +6 -4
  454. package/src/renderers/Table/ColumnToggler.tsx +1 -1
  455. package/src/renderers/Table/TableContent.tsx +40 -2
  456. package/src/renderers/Table/index.tsx +88 -43
  457. package/src/renderers/Tabs.tsx +9 -1
  458. package/src/renderers/WebComponent.tsx +2 -2
  459. package/src/store/form.ts +3 -9
  460. package/src/store/formItem.ts +94 -2
  461. package/src/store/table.ts +55 -14
  462. package/src/types.ts +58 -1
  463. package/src/utils/api.ts +120 -26
  464. package/src/utils/dom.tsx +12 -0
  465. package/src/utils/helper.ts +55 -185
  466. package/src/utils/tpl-builtin.ts +40 -866
  467. package/src/utils/tpl.ts +33 -0
  468. package/tsconfig-for-declaration.json +1 -1
  469. package/dump.rdb +0 -0
  470. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  471. package/lib/components/AssociatedCheckboxes.js +0 -90
  472. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  473. package/lib/components/ChainedCheckboxes.js.map +0 -13
  474. package/lib/components/Checkboxes.js +0 -101
  475. package/lib/components/Checkboxes.js.map +0 -13
  476. package/lib/components/ListCheckboxes.d.ts +0 -739
  477. package/lib/components/ListCheckboxes.js +0 -48
  478. package/lib/components/ListCheckboxes.js.map +0 -13
  479. package/lib/components/ListRadios.d.ts +0 -763
  480. package/lib/components/ListRadios.js +0 -86
  481. package/lib/components/ListRadios.js.map +0 -13
  482. package/lib/components/TableCheckboxes.js.map +0 -13
  483. package/lib/components/TreeCheckboxes.js.map +0 -13
  484. package/lib/components/TreeRadios.d.ts +0 -838
  485. package/lib/components/TreeRadios.js +0 -116
  486. package/lib/components/TreeRadios.js.map +0 -13
  487. package/src/components/ListRadios.tsx +0 -159
  488. package/src/components/TreeRadios.tsx +0 -202
@@ -6,8 +6,8 @@
6
6
  "/src/renderers/Form/Options.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;;AAKA,uCAA0E;AAC1E,mDAAwC;AACxC,6CAW4B;AAC5B,6BAA8B;AAC9B,+BAMgB;AAIhB,6DAA0B;AAC1B,uDAIiC;AACjC,kDAKiC;AAUzB,uFAdN,eAAM,OAcM;AATd,uCAAuC;AACvC,4EAAyC;AA6L5B,QAAA,WAAW,GAAG,kBAAe,CAAC,MAAM,CAAC;IAChD,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,cAAc;IACd,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,WAAW;IACX,aAAa;IACb,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,cAAc;CACf,CAAC,CAAC;AAEH,SAAgB,sBAAsB,CAAC,MAAqB;IAC1D,IAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IAEjC;QAA8B,gDAAkC;QAwB9D,yBAAY,KAAmB;;YAA/B,YACE,kBAAM,KAAK,CAAC,SAwEb;YA9ED,eAAS,GAAsB,EAAE,CAAC;YAGlC,aAAO,GAAG,KAAK,CAAC;YAMZ,IAAA,SAAS,GAeP,KAAK,UAfE,EACT,QAAQ,GAcN,KAAK,SAdC,EACR,MAAM,GAaJ,KAAK,OAbD,EACN,IAAI,GAYF,KAAK,KAZH,EACJ,iBAAiB,GAWf,KAAK,kBAXU,EACjB,YAAY,GAUV,KAAK,aAVK,EACZ,QAAQ,GASN,KAAK,SATC,EACR,UAAU,GAQR,KAAK,WARG,EACV,YAAY,GAOV,KAAK,aAPK,EACZ,OAAO,GAML,KAAK,QANA,EACP,UAAU,GAKR,KAAK,WALG,EACV,UAAU,GAIR,KAAK,WAJG,EACV,OAAO,GAGL,KAAK,QAHA,EACP,KAAK,GAEH,KAAK,MAFF,EACL,eAAe,GACb,KAAK,gBADQ,CACP;YAEV,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,UAAU,CACjB,IAAA,yBAAgB,EAAC,OAAO,CAAC,EACzB,KAAI,CAAC,iBAAiB,EACtB,IAAI,CACL,CAAC;gBAEF,KAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAA,eAAQ,EACN,cAAM,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,EAA5D,CAA4D,EAClE,cAAM,OAAA,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,WAAW,EAAE,EAAlC,CAAkC,CACzC,CACF,CAAC;gBAEF,KAAI,CAAC,SAAS,CAAC,IAAI,CACjB,IAAA,eAAQ,EACN,cAAM,OAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAhC,CAAgC,EACtC,cAAM,OAAA,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAApD,CAAoD,CAC3D,CACF,CAAC;gBACF,6CAA6C;gBAC7C,IACE,QAAQ;oBACR,eAAe;qBACf,MAAA,QAAQ,CAAC,eAAe,0CAAE,MAAM,CAAA;oBAChC,CAAC,MAAM,EACP;oBACA,KAAI,CAAC,eAAe,EAAE,CAAC;iBACxB;aACF;YAED,IAAI,WAAW,GAAY,SAAS,KAAK,KAAK,CAAC;YAE/C,IAAI,QAAQ,IAAI,UAAU,KAAK,KAAK,IAAI,YAAY,EAAE;gBACpD,IAAM,eAAe,GAAG,YAAY;oBAClC,CAAC,CAAC,QAAQ;yBACL,kBAAkB,CAAC,KAAK,CAAC;yBACzB,GAAG,CACF,UAAC,cAAsB;wBACrB,OAAA,cAAc,CAAC,UAAU,IAAI,OAAO,CAAC;oBAArC,CAAqC,CACxC;oBACL,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACvC,iBAAiB,CACf,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CACzD,CAAC;aACH;YAED,WAAW;gBACT,MAAM,CAAC,yBAAyB,KAAK,KAAK;gBAC1C,CAAC,UAAU,IAAI,CAAC,OAAO;oBACrB,CAAC,CAAC,KAAI,CAAC,MAAM,EAAE;oBACf,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,KAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;;QACtD,CAAC;QAED,2CAAiB,GAAjB;YACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACrC;QACH,CAAC;QAED,+CAAqB,GAArB,UAAsB,SAAuB;;YAC3C,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,IAAI,SAAS,CAAC,UAAU,KAAK,KAAK,EAAE;gBACjE,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,YAAY,EAAE;gBACrD,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,MAAA,SAAS,CAAC,QAAQ,0CAAE,oBAAoB,EAAE;gBACnD,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAA,mBAAU,EAAC,mBAAW,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;gBAClD,OAAO,IAAI,CAAC;aACb;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4CAAkB,GAAlB,UAAmB,SAAuB;YAA1C,iBA+DC;YA9DC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,IAAM,QAAQ,GAAG,KAAK,CAAC,QAA0B,CAAC;YAElD,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,QAAQ,EAAE;gBACnD,QAAQ,CAAC,UAAU,CACjB,IAAA,yBAAgB,EAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EACrC,IAAI,CAAC,iBAAiB,EACtB,KAAK,CAAC,IAAI,CACX,CAAC;gBACF,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;iBAAM,IACL,MAAM,CAAC,yBAAyB,KAAK,KAAK;gBAC1C,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,MAAM;gBACZ,QAAQ;gBACR,CAAC,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EACpE;gBACA,IAAI,IAAA,4BAAc,EAAC,KAAK,CAAC,MAAgB,CAAC,EAAE;oBAC1C,IAAM,WAAW,GAAG,IAAA,sCAAwB,EAC1C,SAAS,CAAC,MAAgB,EAC1B,SAAS,CAAC,IAAI,EACd,OAAO,CACR,CAAC;oBACF,IAAM,OAAO,GAAG,IAAA,sCAAwB,EACtC,KAAK,CAAC,MAAgB,EACtB,KAAK,CAAC,IAAI,EACV,OAAO,CACR,CAAC;oBAEF,IAAI,WAAW,KAAK,OAAO,EAAE;wBAC3B,QAAQ,CAAC,UAAU,CACjB,IAAA,yBAAgB,EAAC,OAAO,IAAI,EAAE,CAAC,EAC/B,IAAI,CAAC,iBAAiB,EACtB,KAAK,CAAC,IAAI,CACX,CAAC;wBACF,IAAI,CAAC,cAAc,EAAE,CAAC;qBACvB;iBACF;qBAAM,IACL,IAAA,oBAAc,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;oBACxC,IAAA,mBAAa,EACX,SAAS,CAAC,MAAM,EAChB,KAAK,CAAC,MAAM,EACZ,SAAS,CAAC,IAAI,EACd,KAAK,CAAC,IAAI,CACX,EACD;oBACA,QAAQ;yBACL,WAAW,CACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,SAAS,EACT,IAAI,EACJ,IAAI,CAAC,iBAAiB,CACvB;yBACA,IAAI,CAAC,cAAM,OAAA,KAAI,CAAC,cAAc,EAAE,EAArB,CAAqB,CAAC,CAAC;iBACtC;aACF;YAED,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,oBAAoB,CAAA,EAAE;gBACrE,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAChC;QACH,CAAC;QAED,8CAAoB,GAApB;;YACE,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,UAAU,mDAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,EAAE,EAAJ,CAAI,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC;QAED,sCAAY,GAAZ,UAAa,KAAU;YACf,IAAA,KAA2C,IAAI,CAAC,KAAK,EAApD,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,YAAY,kBAAA,EAAE,IAAI,UAAc,CAAC;YAC5D,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAA0B,CAAC;YAEvD,IAAI,QAAQ,IAAI,CAAC,IAAA,gBAAO,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;gBACrE,IAAM,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAM,MAAM,GAAG,IAAA,yBAAW,EACxB,QAAQ,EACR,QAAQ;oBACN,CAAC,CAAC;wBACE,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,UAAA,IAAI;4BAC7B,OAAA,IAAA,qBAAY,kDAEL,IAAI,KACP,SAAS,EAAE,IAAA,yBAAgB,EACzB,QAAQ,CAAC,eAAe,EACxB,IAAI,EACJ,IAAI,CACL,KAEH,IAAI,CACL;wBAVD,CAUC,CACF;qBACF;oBACH,CAAC,CAAC,IAAA,qBAAY,kDAEL,IAAI,KACP,SAAS,EAAE,IAAA,yBAAgB,EACzB,QAAQ,CAAC,eAAe,EACxB,eAAe,CAAC,CAAC,CAAC,EAClB,IAAI,CACL,KAEH,eAAe,CAAC,CAAC,CAAC,CACnB,CACN,CAAC;gBACF,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAG,MAAM,CAAC,CAAC;aACxB;QACH,CAAC;QAED,yBAAyB;QACzB,wCAAc,GAAd;YACQ,IAAA,KAUF,IAAI,CAAC,KAAK,EATZ,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,KAAK,WAAA,EACL,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,UAAU,gBAAA,EACV,cAAc,oBAAA,EACd,aAAa,mBAAA,EACb,QAAQ,cACI,CAAC;YAEf,IAAI,CAAC,QAAQ,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjE,OAAO;aACR;YAED,IACE,YAAY,KAAK,KAAK;gBACtB,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,EACxD;gBACA,IAAM,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC3D,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE;iBAAM,IACL,YAAY,KAAK,IAAI;gBACrB,KAAK;gBACL,CAAC,CACC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACnB,KAAK,CAAC,KAAK,CACT,UAAA,GAAG,IAAI,OAAA,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAlD,CAAkD,CAC1D,CAAC;oBACJ,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,KAAK,KAAK,QAAQ,CAC1B,EACD;gBACA,IAAM,eAAe,GAAG,QAAQ;qBAC7B,kBAAkB,CAAC,KAAK,CAAC;qBACzB,GAAG,CACF,UAAC,cAAsB,IAAK,OAAA,cAAc,CAAC,UAAU,IAAI,OAAO,CAAC,EAArC,CAAqC,CAClE,CAAC;gBACJ,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;aACtE;QACH,CAAC;QAED,4CAAkB,GAAlB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAGD,kCAAQ,GAAR,UAAS,GAAQ;YACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACnB,CAAC;QAGD,sCAAY,GAAZ,UACE,MAAc,EACd,cAAwB,EACxB,iBAA2B;YAErB,IAAA,KAA8B,IAAI,CAAC,KAAK,EAAvC,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,KAAK,WAAc,CAAC;YAE/C,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,IAAI,QAAQ,GAAoC,IAAI,CAAC,WAAW,CAC9D,MAAM,EACN,KAAK,CACN,CAAC;YAEF,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACpE,CAAC;QAED;;WAEG;QACH,yCAAe,GAAf;YACQ,IAAA,KAAuC,IAAI,CAAC,KAAK,EAAhD,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,iBAAiB,uBAAc,CAAC;YACxD,iBAAiB;YACjB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;gBAC1D,OAAO;aACR;YACD,IAAI,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACnD,IAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACnD,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED;;;;WAIG;QACH,0CAAgB,GAAhB,UAAiB,UAAyB;YAClC,IAAA,KAOF,IAAI,CAAC,KAAK,EANZ,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,QAAQ,cACI,CAAC;YACf,IAAI,QAAQ,GAAoC,EAAE,CAAC;YACnD,IAAI,QAAQ,EAAE;gBACZ,QAAQ,GAAG,UAAU,CAAC;gBAEtB,IAAI,UAAU,EAAE;oBACd,QAAQ,GAAI,QAAuB;yBAChC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,EAA3B,CAA2B,CAAC;yBACxC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACpB;qBAAM,IAAI,YAAY,EAAE;oBACvB,QAAQ,GAAI,QAAuB,CAAC,GAAG,CACrC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,EAA3B,CAA2B,CACpC,CAAC;iBACH;aACF;iBAAM;gBACL,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;gBAEvC,IAAI,UAAU,IAAI,QAAQ,EAAE;oBAC1B,QAAQ,GAAI,QAAgB,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC;iBACrD;aACF;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,yCAAe,GAAf;YACQ,IAAA,KAA8B,IAAI,CAAC,KAAK,EAAvC,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAc,CAAC;YAE/C,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YACD,IAAM,eAAe,GAAG,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,UAAU,GACZ,eAAe,CAAC,MAAM,KAAK,QAAQ,CAAC,eAAe,CAAC,MAAM;gBACxD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;YACxC,IAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACnD,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,qCAAW,GAAX,UAAY,MAAc,EAAE,WAAiB;YACrC,IAAA,KASF,IAAI,CAAC,KAAK,EARZ,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,SAAS,eAAA,EACT,UAAU,gBAAA,EACV,QAAQ,cAAA,EACR,QAAQ,cACI,CAAC;YAEf,IAAI,UAAU,GACZ,WAAW,KAAK,SAAS;gBACvB,CAAC,CAAC,QAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;gBACpD,CAAC,CAAC,EAAE,CAAC;YAET,IAAM,GAAG,GAAG,IAAA,mBAAS,EACnB,UAAU,EACV,IAAA,2BAAkB,EAAC,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,EAAE,UAAU,IAAI,OAAO,CAAC,CACzE,CAAC;YACF,IAAI,QAAQ,GAAoC,EAAE,CAAC;YAEnD,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,GAAG,EAAE;oBACR,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBAC3B;qBAAM;oBACL,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzB;gBAED,QAAQ,GAAG,UAAU,CAAC;gBAEtB,IAAI,UAAU,EAAE;oBACd,QAAQ,GAAI,QAAuB;yBAChC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,EAA3B,CAA2B,CAAC;yBACxC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACpB;qBAAM,IAAI,YAAY,EAAE;oBACvB,QAAQ,GAAI,QAAuB,CAAC,GAAG,CACrC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,EAA3B,CAA2B,CACpC,CAAC;iBACH;aACF;iBAAM;gBACL,IAAI,CAAC,GAAG,IAAI,SAAS,EAAE;oBACrB,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBAC3B;qBAAM;oBACL,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC;iBACvB;gBAED,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;gBAEvC,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,QAAQ,EAAE;oBAC5C,QAAQ,GAAI,QAAgB,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC;iBACrD;aACF;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,4CAA4C;QAE5C,gCAAM,GAAN;YACE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,CAAC;QAGD,uCAAa,GAAb,UAAc,QAAkB,EAAE,MAAc;YAAd,uBAAA,EAAA,cAAc;YACxC,IAAA,KACJ,IAAI,CAAC,KAAK,EADL,MAAM,YAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,iBAAiB,uBAAA,EAAE,WAAW,iBAC3D,CAAC;YAEb,IAAI,QAAQ,IAAI,IAAA,4BAAc,EAAC,MAAgB,CAAC,EAAE;gBAChD,IAAA,yBAAO,EAAC,QAAQ,CAAC;oBACf,QAAQ,CAAC,UAAU,CACjB,IAAA,yBAAgB,EACd,IAAA,sCAAwB,EAAC,MAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAChE,EACD,IAAI,CAAC,iBAAiB,EACtB,IAAI,CACL,CAAC;gBACJ,OAAO;aACR;iBAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAA,oBAAc,EAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBACrD,OAAO;aACR;YAED,OAAO,QAAQ,CAAC,WAAW,CACzB,MAAM,EACN,IAAI,EACJ,SAAS,EACT,KAAK,EACL,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EACrC,QAAQ,CACT,CAAC;QACJ,CAAC;QAGD,mCAAS,GAAT,UAAU,MAAc;YAChB,IAAA,KAA0C,IAAI,CAAC,KAAK,EAAnD,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAE,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAc,CAAC;YAC3D,IAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,IAAI,QAAQ,IAAI,MAAM,CAAC;YAElD,IAAI,CAAC,GAAG,EAAE;gBACR,GAAG,CAAC,MAAM,CACR,OAAO,EACP,iDAAiD,CAClD,CAAC;gBACF,OAAO;aACR;YAED,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACtE,CAAC;QAGD,2CAAiB,GAAjB,UAAkB,WAAkB;YAC5B,IAAA,KAA0C,IAAI,CAAC,KAAK,EAAnD,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAE,GAAG,SAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAc,CAAC;YAC3D,IAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC;YAE/B,IAAI,CAAC,GAAG,EAAE;gBACR,GAAG,CAAC,MAAM,CACR,OAAO,EACP,iDAAiD,CAClD,CAAC;gBACF,OAAO;aACR;YAED,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAGK,qCAAW,GAAjB,UAAkB,IAAS;;;;;;gCACzB,qBAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,EAAA;;4BAArC,SAAqC,CAAC;4BAChC,KAA8C,IAAI,CAAC,KAAK,EAAvD,QAAQ,cAAA,EAAE,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,eAAe,qBAAA,CAAe;4BAC/D,IAAI,CAAC,QAAQ,EAAE;gCACb,sBAAO;6BACR;4BACD,IAAI,IAAA,yBAAO,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE;gCACvC,IAAA,oBAAW,EAAC,IAAI,EAAE,IAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;6BAC1C;4BAED,OAAO;4BACP,IAAI,QAAQ,IAAI,eAAe,KAAI,MAAA,QAAQ,CAAC,eAAe,0CAAE,MAAM,CAAA,EAAE;gCACnE,IAAI,CAAC,eAAe,EAAE,CAAC;6BACxB;;;;;SACF;QAED,+BAAK,GAAL;YACE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvD,CAAC;QAGD,2CAAiB,GAAjB,UAAkB,KAAU;YACpB,IAAA,KAKF,IAAI,CAAC,KAAK,EAJZ,QAAQ,cAAA,EACR,UAAU,gBAAA,EACV,iBAAiB,uBAAA,EACV,WAAW,WACN,CAAC;YAEf,IAAI,UAAU,KAAK,KAAK,EAAE;gBACxB,WAAW,KAAK,SAAS,KAAI,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,KAAK,CAAC,CAAA,CAAC;aACzD;iBAAM;gBACL,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,CAAC,CAAC;aACnB;QACH,CAAC;QAGD,oCAAU,GAAV,UAAW,OAAmB,EAAE,aAAqB;YAArB,8BAAA,EAAA,qBAAqB;YACnD,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAA0B,CAAC;YACvD,QAAQ;gBACN,QAAQ,CAAC,UAAU,CACjB,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,yBAAgB,EAAC,OAAO,IAAI,EAAE,CAAC,EACzD,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;QACN,CAAC;QAGD,qCAAW,GAAX;YACE,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAA0B,CAAC;YACvD,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAGD,oCAAU,GAAV,UAAW,KAAc;YACvB,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAA0B,CAAC;YACvD,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAGK,yCAAe,GAArB,UACE,GAAgC,EAChC,KAAW,EACX,QAAyB;YAFzB,oBAAA,EAAA,OAA+B,CAAC;YAEhC,yBAAA,EAAA,gBAAyB;;;;;;;4BAErB,KAcA,IAAI,CAAC,KAAK,EAbZ,WAAW,iBAAA,EACX,QAAQ,cAAA,EACR,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,WAAW,iBAAA,EACX,MAAM,YAAA,EACN,MAAM,YAAA,EACN,IAAI,UAAA,EACJ,UAAU,gBAAA,EACA,KAAK,cAAA,EACf,cAAc,oBAAA,EACd,GAAG,SAAA,EACQ,EAAE,eAAA,CACA;4BAEf,gBAAgB;4BAChB,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE;gCACtB,sBAAO;6BACR;4BAED,6BAA6B;4BAC7B,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gCACrE,WAAW,GAAG;oCACZ;wCACE,IAAI,EAAE,MAAM;wCACZ,IAAI,EAAE,UAAU,IAAI,OAAO;wCAC3B,KAAK,EAAE,KAAK;wCACZ,WAAW,EAAE,EAAE,CAAC,wBAAwB,CAAC;qCAC1C;iCACF,CAAC;6BACH;4BACK,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gCAC/B,CAAC,CAAC,IAAA,gBAAO,EAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gCAC1C,CAAC,CAAC,SAAS,CAAC;4BAER,GAAG,GAAQ,IAAA,qBAAY,EAC3B,IAAI,EACJ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gCAChB,CAAC,yBACG,MAAM,EAAE,MAAM,IACX,KAAK,EAEZ,CAAC,CAAC,KAAK,CACV,CAAC;iCAEgB,QAAQ,EAAR,wBAAQ;4BACtB,KAAA,GAAG,CAAA;;gCACH,qBAAM,YAAY,CAChB;gCACE,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,cAAc,IAAI,kBAAK,WAAW,IAAI,IAAI,CAAE;gCACnD,IAAI,EAAE;oCACJ,IAAI,EAAE,MAAM;oCACZ,GAAG,EAAE,MAAM;oCACX,QAAQ,EAAE,WAAW;iCACtB;6BACF,EACD,GAAG,CACJ,EAAA;;4BAXD,KAAA,SAWC,CAAA;;;4BAbD,MAAM,KAaL;iCAGD,CAAA,QAAQ,IAAI,MAAM,CAAA,EAAlB,wBAAkB;;;;4BAEF,qBAAM,GAAG,CAAC,OAAO,CAAC,MAAO,EAAE,MAAM,EAAE;oCACjD,MAAM,EAAE,MAAM;iCACf,CAAC,EAAA;;4BAFI,OAAO,GAAG,SAEd;4BAEF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;gCACf,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;gCAC/D,MAAM,GAAG,IAAI,CAAC;6BACf;iCAAM;gCACL,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;6BACjC;;;;4BAED,MAAM,GAAG,IAAI,CAAC;4BACd,OAAO,CAAC,KAAK,CAAC,GAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAC,CAAC,OAAO,CAAC,CAAC;;;4BAInC,6BAA6B;4BAC7B,IAAI,CAAC,MAAM,EAAE;gCACX,sBAAO;6BACR;4BAED,UAAU;4BACV,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,IAAI,OAAO,CAAC,EAAE;gCACjD,MAAM,mDACD,MAAM,gBACR,UAAU,IAAI,OAAO,IAAG,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,MACvD,CAAC;6BACH;4BAED,oBAAoB;4BACpB,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAE;gCACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;6BACxB;iCAAM,IAAI,MAAM,IAAI,MAAM,EAAE;gCAC3B,uCAAuC;gCACvC,kCAAkC;gCAClC,IAAI,CAAC,MAAM,EAAE,CAAC;6BACf;iCAAM;gCAED,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gCACrC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oCACtB,OAAO,GAAG,IAAA,mBAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,4BAAM,MAAM,EAAE,CAAC;iCACpD;qCAAM;oCACL,CAAC,GAAG;wCACF,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,4BAAM,MAAM,EAAE;wCACrC,CAAC,CAAC,OAAO,CAAC,IAAI,2BAAK,MAAM,EAAE,CAAC;iCAC/B;gCACD,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;6BACzD;;;;;SACF;QAGK,0CAAgB,GAAtB,UACE,KAAU,EACV,MAAmB,EACnB,QAAyB;YADzB,uBAAA,EAAA,cAAmB;YACnB,yBAAA,EAAA,gBAAyB;;;;;;4BAErB,KAYA,IAAI,CAAC,KAAK,EAXZ,YAAY,kBAAA,EACZ,QAAQ,cAAA,EACR,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,OAAO,aAAA,EACP,GAAG,SAAA,EACH,MAAM,YAAA,EACN,IAAI,UAAA,EACM,KAAK,cAAA,EACf,WAAW,iBAAA,EACA,EAAE,eAAA,CACA;4BAEf,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE;gCACtB,sBAAO;6BACR;4BAED,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;gCACvE,YAAY,GAAG;oCACb;wCACE,IAAI,EAAE,MAAM;wCACZ,IAAI,EAAE,UAAU,IAAI,OAAO;wCAC3B,KAAK,EAAE,KAAK;wCACZ,WAAW,EAAE,EAAE,CAAC,wBAAwB,CAAC;qCAC1C;iCACF,CAAC;6BACH;iCAEY,QAAQ,EAAR,wBAAQ;4BACjB,KAAA,KAAK,CAAA;;gCACL,qBAAM,YAAY,CAChB;gCACE,IAAI,EAAE,QAAQ;gCACd,KAAK,EAAE,EAAE,CAAC,mBAAmB,EAAE;oCAC7B,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC,eAAe,CAAC;iCAC1C,CAAC;gCACF,IAAI,EAAE;oCACJ,IAAI,EAAE,MAAM;oCACZ,GAAG,EAAE,OAAO;oCACZ,QAAQ,EAAE,YAAY;iCACvB;6BACF,EACD,IAAA,qBAAY,EAAC,IAAI,EAAE,KAAK,CAAC,CAC1B,EAAA;;4BAbD,KAAA,SAaC,CAAA;;;4BAfD,MAAM,KAeL;iCAGD,CAAA,QAAQ,IAAI,OAAO,CAAA,EAAnB,wBAAmB;;;;4BAEH,qBAAM,GAAG,CAAC,OAAO,CAC/B,OAAQ,EACR,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,EAC1B;oCACE,MAAM,EAAE,MAAM;iCACf,CACF,EAAA;;4BANK,OAAO,GAAG,SAMf;4BAED,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE;gCACf,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;gCACrD,MAAM,GAAG,IAAI,CAAC;6BACf;iCAAM;gCACL,MAAM,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;6BACjC;;;;4BAED,MAAM,GAAG,IAAI,CAAC;4BACd,OAAO,CAAC,KAAK,CAAC,GAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAC,CAAC,OAAO,CAAC,CAAC;;;4BAInC,cAAc;4BACd,IAAI,CAAC,MAAM,EAAE;gCACX,sBAAO;6BACR;4BAED,IAAI,MAAM,IAAI,OAAO,EAAE;gCACrB,IAAI,CAAC,MAAM,EAAE,CAAC;6BACf;iCAAM;gCACC,OAAO,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,OAAO,EAAE,UAAA,IAAI,IAAI,OAAA,IAAI,KAAK,MAAM,EAAf,CAAe,CAAC,CAAC;gCAEtE,IAAI,OAAO,EAAE;oCACX,KAAK,CAAC,UAAU,CACd,IAAA,mBAAU,EAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,kDAC/B,MAAM,GACN,MAAM,EACT,EACF,IAAI,CAAC,iBAAiB,EACtB,IAAI,CACL,CAAC;iCACH;6BACF;;;;;SACF;QAGK,4CAAkB,GAAxB,UAAyB,KAAU;;;;;;4BAC7B,KAUA,IAAI,CAAC,KAAK,EATZ,iBAAiB,uBAAA,EACjB,QAAQ,cAAA,EACR,IAAI,UAAA,EACJ,SAAS,eAAA,EACT,GAAG,SAAA,EACO,KAAK,cAAA,EACf,MAAM,YAAA,EACN,UAAU,gBAAA,EACC,EAAE,eAAA,CACA;4BAEf,IAAI,QAAQ,IAAI,CAAC,KAAK,EAAE;gCACtB,sBAAO;6BACR;4BAEK,GAAG,GAAG,IAAA,qBAAY,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iCAGpB,iBAAiB,EAAjB,wBAAiB;4BAC/B,qBAAM,GAAG,CAAC,OAAO,CAAC,IAAA,YAAM,EAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,EAAA;;4BAAjD,KAAA,SAAiD,CAAA;;;4BACjD,KAAA,IAAI,CAAA;;;4BAFF,SAAS,KAEP;4BACR,IAAI,CAAC,SAAS,EAAE;gCACd,sBAAO;6BACR;;;;4BAIC,IAAI,CAAC,SAAS,EAAE;gCACd,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;6BAC1C;4BAEc,qBAAM,GAAG,CAAC,OAAO,CAAC,SAAU,EAAE,GAAG,EAAE;oCAChD,MAAM,EAAE,QAAQ;iCACjB,CAAC,EAAA;;4BAFI,MAAM,GAAG,SAEb;4BAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;gCACd,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;6BACvD;iCAAM,IAAI,MAAM,EAAE;gCACjB,IAAI,CAAC,MAAM,EAAE,CAAC;6BACf;iCAAM;gCACC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gCACjC,OAAO,GAAG,IAAA,sBAAa,EAC3B,OAAO,EACP,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,EAA3D,CAA2D,CACpE,CAAC;gCAEF,IAAI,OAAO,EAAE;oCACX,KAAK,CAAC,UAAU,CACd,IAAA,mBAAU,EAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAC/B,IAAI,CAAC,iBAAiB,EACtB,IAAI,CACL,CAAC;iCACH;6BACF;;;;4BAED,OAAO,CAAC,KAAK,CAAC,GAAC,CAAC,CAAC;4BACjB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAC,CAAC,OAAO,CAAC,CAAC;;;;;;SAElC;QAED,gCAAM,GAAN;YACQ,IAAA,KAcF,IAAI,CAAC,KAAK,EAbZ,KAAK,WAAA,EACL,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,OAAO,aAAA,EACP,SAAS,eAAA,EACT,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,SAAS,eAAA,EACT,cAAc,oBAAA,EACd,aAAa,mBAAA,EACb,iBAAe,EAAf,SAAS,mBAAG,GAAG,KAAA,EACf,kBAAoB,EAApB,UAAU,mBAAG,OAAO,KAAA,EACpB,kBAAoB,EAApB,UAAU,mBAAG,OAAO,KACR,CAAC;YAET,IAAA,KAAkC,IAAA,0BAAiB,EACvD,KAAK,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,CACV,EAPM,aAAa,mBAAA,EAAE,cAAc,oBAOnC,CAAC;YAEF,OAAO,CACL,8BAAC,OAAO,4BACF,IAAI,CAAC,KAAK,IACd,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EACjD,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,WAAW,EAAE,IAAI,CAAC,eAAe,EACjC,eAAe,EACb,QAAQ;oBACN,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CACzB,KAAK,EACL,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAC5C;oBACH,CAAC,CAAC,EAAE,EAER,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAC5C,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,aAAa,EAAE,IAAI,CAAC,MAAM,EAC1B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,SAAS,EACP,SAAS,KAAK,KAAK,IAAI,IAAA,oBAAc,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAElE,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAA,oBAAc,EAAC,OAAO,CAAC,CAAC,EACrE,SAAS,EACP,SAAS,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,IAAA,oBAAc,EAAC,SAAS,CAAC,CAAC,EAEjE,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAC7B,QAAQ,EAAE,IAAI,CAAC,kBAAkB,IACjC,CACH,CAAC;QACJ,CAAC;;QAx4BM,2BAAW,GAAG,oBAAkB,MAAM,CAAC,IAAI,MAAG,CAAC;QAC/C,4BAAY,2BACjB,SAAS,EAAE,GAAG,EACd,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,IAAI,EAChB,YAAY,EAAE,KAAK,EACnB,QAAQ,EAAE,KAAK,EACf,WAAW,EAAE,oBAAoB,EACjC,UAAU,EAAE,EAAE,EACd,iBAAiB,EAAE,QAAQ,IACxB,OAAO,CAAC,YAAY,EACvB;QACK,yBAAS,GAAS,OAAe,CAAC,SAAS;YAChD,CAAC,gCAAM,OAAe,CAAC,SAAS,QAChC,CAAC,CAAC,EAAE,CAAC;QACA,iCAAiB,GAAG,OAAO,CAAC;QA4QnC;YADC,iBAAQ;;;;uDAGR;QAGD;YADC,iBAAQ;;8EAEC,eAAM,oBAAN,eAAM;;2DAgBf;QAsDD;YADC,iBAAQ;;;;8DAcR;QA8DD;YADC,iBAAQ;;;;qDAGR;QAGD;YADC,iBAAQ;;;;4DA2BR;QAGD;YADC,iBAAQ;;8EACS,eAAM,oBAAN,eAAM;;wDAavB;QAGD;YADC,iBAAQ;;;;gEAcR;QAGD;YADC,iBAAQ;;;;0DAeR;QAOD;YADC,iBAAQ;;;;gEAcR;QAGD;YADC,iBAAQ;;8EACW,KAAK,oBAAL,KAAK;;yDAQxB;QAGD;YADC,iBAAQ;;;;0DAIR;QAGD;YADC,iBAAQ;;;;yDAIR;QAGD;YADC,iBAAQ;;;;8DAuHR;QAGD;YADC,iBAAQ;;;;+DAiGR;QAGD;YADC,iBAAQ;;;;iEA6DR;QAgEH,sBAAC;KAAA,AA14BD,CAA8B,eAAK,CAAC,SAAS,GA04B5C;IAED,OAAO,IAAA,uBAAgB,kDACjB,MAA8B,KAClC,UAAU,EAAE,KAAK,EACjB,SAAS,EAAE,eAAe,IAC1B,CAAC;AACL,CAAC;AAp5BD,wDAo5BC;AAED,SAAgB,cAAc,CAAC,MAA0B;IACvD,OAAO,UACL,SAAY;QAEZ,IAAM,QAAQ,GAAG,sBAAsB,iDAClC,MAAM,KACT,SAAS,EAAE,SAAS,IACpB,CAAC;QACH,OAAO,QAAQ,CAAC,SAAgB,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC;AAVD,wCAUC;AAED,SAAgB,SAAS,CACvB,IAAY,EACZ,KAAc,EACd,WAAkC;IAAlC,4BAAA,EAAA,0BAAkC;IAElC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IAED,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,IAAM,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,IAAM,GAAG,GAAe,EAAE,CAAC;IAE3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;QAC/B,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,wCAAM,GAAG,EAAE,GAAG,CAAC,MAAM,IAAG,IAAI,CAAQ,CAAC,CAAC;QAEvD,KAAK,CAAC,CAAC,CAAC;YACN,GAAG,CAAC,IAAI,CACN,wCAAM,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,IAC1C,KAAK,CAAC,CAAC,CAAC,CACJ,CACR,CAAC;QACJ,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;KACvC;IACD,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,wCAAM,GAAG,EAAE,GAAG,CAAC,MAAM,IAAG,IAAI,CAAQ,CAAC,CAAC;IAEvD,iCAAiC;IAEjC,2CAA2C;IAC3C,uDAAuD;IACvD,cAAc;IACd,yDAAyD;IACzD,gBAAgB;IAChB,cAAc;IACd,OAAO;IACP,MAAM;IAEN,aAAa;IAEb,OAAO,GAAG,CAAC;AACb,CAAC;AAlDD,8BAkDC",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "/**\n * @file 所有列表选择类控件的父级,比如 Select、Radios、Checkboxes、\n * List、ButtonGroup 等等\n */\nimport {Api, PlainObject, Schema} from '../../types';\nimport {isEffectiveApi, isApiOutdated, isValidApi} from '../../utils/api';\nimport {isAlive} from 'mobx-state-tree';\nimport {\n anyChanged,\n autobind,\n createObject,\n setVariable,\n spliceTree,\n findTreeIndex,\n getTree,\n isEmpty,\n getTreeAncestors,\n normalizeNodePath\n} from '../../utils/helper';\nimport {reaction} from 'mobx';\nimport {\n FormControlProps,\n registerFormItem,\n FormItemBasicConfig,\n detectProps as itemDetectProps,\n FormBaseControl\n} from './Item';\nimport {IFormItemStore} from '../../store/formItem';\nexport type OptionsControlComponent = React.ComponentType<FormControlProps>;\n\nimport React from 'react';\nimport {\n resolveVariableAndFilter,\n isPureVariable,\n dataMapping\n} from '../../utils/tpl-builtin';\nimport {\n Option,\n OptionProps,\n normalizeOptions,\n optionValueCompare\n} from '../../components/Select';\nimport {filter} from '../../utils/tpl';\nimport findIndex from 'lodash/findIndex';\nimport {\n SchemaApi,\n SchemaExpression,\n SchemaObject,\n SchemaTokenizeableString\n} from '../../Schema';\n\nexport {Option};\n\nexport interface FormOptionsControl extends FormBaseControl {\n /**\n * 选项集合\n */\n options?: Array<Option> | string[] | PlainObject;\n\n /**\n * 可用来通过 API 拉取 options。\n */\n source?: SchemaApi | SchemaTokenizeableString;\n\n /**\n * 默认选择选项第一个值。\n */\n selectFirst?: boolean;\n\n /**\n * 用表达式来配置 source 接口初始要不要拉取\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetchOn?: SchemaExpression;\n\n /**\n * 配置 source 接口初始拉不拉取。\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetch?: boolean;\n\n /**\n * 是否为多选模式\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 是否可清除。\n */\n clearable?: boolean;\n\n /**\n * 点清除按钮时,将表单项设置成当前配置的值。\n *\n * @default ''\n */\n resetValue?: string;\n\n /**\n * 延时加载的 API,当选项中有 defer: true 的选项时,点开会通过此接口扩充。\n */\n deferApi?: SchemaApi;\n\n /**\n * 添加时调用的接口\n */\n addApi?: SchemaApi;\n\n /**\n * 新增时的表单项。\n */\n addControls?: Array<SchemaObject>;\n\n /**\n * 是否可以新增\n */\n creatable?: boolean;\n\n /**\n * 新增文字\n */\n createBtnLabel?: string;\n\n /**\n * 是否可以编辑\n */\n editable?: boolean;\n\n /**\n * 编辑时调用的 API\n */\n editApi?: SchemaApi;\n\n /**\n * 选项修改的表单项\n */\n editControls?: Array<SchemaObject>;\n\n /**\n * 是否可删除\n */\n removable?: boolean;\n\n /**\n * 选项删除 API\n */\n deleteApi?: SchemaApi;\n\n /**\n * 选项删除提示文字。\n */\n deleteConfirmText?: string;\n\n /**\n * 自动填充,当选项被选择的时候,将选项中的其他值同步设置到表单内。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n}\n\nexport interface OptionsBasicConfig extends FormItemBasicConfig {\n autoLoadOptionsFromSource?: boolean;\n}\n\nexport interface OptionsConfig extends OptionsBasicConfig {\n component: React.ComponentType<OptionsControlProps>;\n}\n\n// 下发给注册进来的组件的属性。\nexport interface OptionsControlProps\n extends FormControlProps,\n Omit<\n FormOptionsControl,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n options: Array<Option>;\n onToggle: (\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onToggleAll: () => void;\n selectedOptions: Array<Option>;\n setOptions: (value: Array<any>, skipNormalize?: boolean) => void;\n setLoading: (value: boolean) => void;\n reloadOptions: (setError?: boolean) => void;\n deferLoad: (option: Option) => void;\n expandTreeOptions: (nodePathArr: any[]) => void;\n onAdd?: (\n idx?: number | Array<number>,\n value?: any,\n skipForm?: boolean\n ) => void;\n onEdit?: (value: Option, origin?: Option, skipForm?: boolean) => void;\n onDelete?: (value: Option) => void;\n}\n\n// 自己接收的属性。\nexport interface OptionsProps\n extends FormControlProps,\n Omit<OptionProps, 'className'> {\n source?: Api;\n deferApi?: Api;\n creatable?: boolean;\n addApi?: Api;\n addControls?: Array<any>;\n editApi?: Api;\n editControls?: Array<any>;\n deleteApi?: Api;\n deleteConfirmText?: string;\n optionLabel?: string;\n}\n\nexport const detectProps = itemDetectProps.concat([\n 'value',\n 'options',\n 'size',\n 'buttons',\n 'columnsCount',\n 'multiple',\n 'hideRoot',\n 'checkAll',\n 'showIcon',\n 'showRadio',\n 'btnDisabled',\n 'joinValues',\n 'extractValue',\n 'borderMode',\n 'hideSelected'\n]);\n\nexport function registerOptionsControl(config: OptionsConfig) {\n const Control = config.component;\n\n class FormOptionsItem extends React.Component<OptionsProps, any> {\n static displayName = `OptionsControl(${config.type})`;\n static defaultProps = {\n delimiter: ',',\n labelField: 'label',\n valueField: 'value',\n joinValues: true,\n extractValue: false,\n multiple: false,\n placeholder: 'Select.placeholder',\n resetValue: '',\n deleteConfirmText: '确定要删除?',\n ...Control.defaultProps\n };\n static propsList: any = (Control as any).propsList\n ? [...(Control as any).propsList]\n : [];\n static ComposedComponent = Control;\n\n toDispose: Array<() => void> = [];\n\n input: any;\n mounted = false;\n\n constructor(props: OptionsProps) {\n super(props);\n\n const {\n initFetch,\n formItem,\n source,\n data,\n setPrinstineValue,\n defaultValue,\n multiple,\n joinValues,\n extractValue,\n addHook,\n formInited,\n valueField,\n options,\n value,\n defaultCheckAll\n } = props;\n\n if (formItem) {\n formItem.setOptions(\n normalizeOptions(options),\n this.changeOptionValue,\n data\n );\n\n this.toDispose.push(\n reaction(\n () => JSON.stringify([formItem.loading, formItem.filteredOptions]),\n () => this.mounted && this.forceUpdate()\n )\n );\n\n this.toDispose.push(\n reaction(\n () => JSON.stringify(formItem.options),\n () => this.mounted && this.syncAutoFill(formItem.tmpValue)\n )\n );\n // 默认全选。这里会和默认值\\回填值逻辑冲突,所以如果有配置source则不执行默认全选\n if (\n multiple &&\n defaultCheckAll &&\n formItem.filteredOptions?.length &&\n !source\n ) {\n this.defaultCheckAll();\n }\n }\n\n let loadOptions: boolean = initFetch !== false;\n\n if (formItem && joinValues === false && defaultValue) {\n const selectedOptions = extractValue\n ? formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) =>\n selectedOption[valueField || 'value']\n )\n : formItem.getSelectedOptions(value);\n setPrinstineValue(\n multiple ? selectedOptions.concat() : selectedOptions[0]\n );\n }\n\n loadOptions &&\n config.autoLoadOptionsFromSource !== false &&\n (formInited || !addHook\n ? this.reload()\n : addHook && addHook(this.initOptions, 'init'));\n }\n\n componentDidMount() {\n this.mounted = true;\n this.normalizeValue();\n\n if (this.props.value) {\n this.syncAutoFill(this.props.value);\n }\n }\n\n shouldComponentUpdate(nextProps: OptionsProps) {\n if (config.strictMode === false || nextProps.strictMode === false) {\n return true;\n } else if (nextProps.source || nextProps.autoComplete) {\n return true;\n } else if (nextProps.formItem?.expressionsInOptions) {\n return true;\n }\n\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n componentDidUpdate(prevProps: OptionsProps) {\n const props = this.props;\n const formItem = props.formItem as IFormItemStore;\n\n if (prevProps.options !== props.options && formItem) {\n formItem.setOptions(\n normalizeOptions(props.options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n } else if (\n config.autoLoadOptionsFromSource !== false &&\n props.formInited &&\n props.source &&\n formItem &&\n (prevProps.source !== props.source || prevProps.data !== props.data)\n ) {\n if (isPureVariable(props.source as string)) {\n const prevOptions = resolveVariableAndFilter(\n prevProps.source as string,\n prevProps.data,\n '| raw'\n );\n const options = resolveVariableAndFilter(\n props.source as string,\n props.data,\n '| raw'\n );\n\n if (prevOptions !== options) {\n formItem.setOptions(\n normalizeOptions(options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n }\n } else if (\n isEffectiveApi(props.source, props.data) &&\n isApiOutdated(\n prevProps.source,\n props.source,\n prevProps.data,\n props.data\n )\n ) {\n formItem\n .loadOptions(\n props.source,\n props.data,\n undefined,\n true,\n this.changeOptionValue\n )\n .then(() => this.normalizeValue());\n }\n }\n\n if (prevProps.value !== props.value || formItem?.expressionsInOptions) {\n formItem.syncOptions(undefined, props.data);\n this.syncAutoFill(props.value);\n }\n }\n\n componentWillUnmount() {\n this.props.removeHook?.(this.reload, 'init');\n this.toDispose.forEach(fn => fn());\n this.toDispose = [];\n }\n\n syncAutoFill(value: any) {\n const {autoFill, multiple, onBulkChange, data} = this.props;\n const formItem = this.props.formItem as IFormItemStore;\n\n if (autoFill && !isEmpty(autoFill) && formItem.filteredOptions.length) {\n const selectedOptions = formItem.getSelectedOptions(value);\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: selectedOptions.map(item =>\n createObject(\n {\n ...data,\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n item,\n true\n )\n },\n item\n )\n )\n }\n : createObject(\n {\n ...data,\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n selectedOptions[0],\n true\n )\n },\n selectedOptions[0]\n )\n );\n onBulkChange?.(toSync);\n }\n }\n\n // 当前值,跟设置预期的值格式不一致时自动转换。\n normalizeValue() {\n const {\n joinValues,\n extractValue,\n value,\n multiple,\n formItem,\n valueField,\n enableNodePath,\n pathSeparator,\n onChange\n } = this.props;\n\n if (!formItem || joinValues !== false || !formItem.options.length) {\n return;\n }\n\n if (\n extractValue === false &&\n (typeof value === 'string' || typeof value === 'number')\n ) {\n const selectedOptions = formItem.getSelectedOptions(value);\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n } else if (\n extractValue === true &&\n value &&\n !(\n (Array.isArray(value) &&\n value.every(\n val => typeof val === 'string' || typeof val === 'number'\n )) ||\n typeof value === 'string' ||\n typeof value === 'number'\n )\n ) {\n const selectedOptions = formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) => selectedOption[valueField || 'value']\n );\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n }\n }\n\n getWrappedInstance() {\n return this.input;\n }\n\n @autobind\n inputRef(ref: any) {\n this.input = ref;\n }\n\n @autobind\n handleToggle(\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) {\n const {onChange, formItem, value} = this.props;\n\n if (!formItem) {\n return;\n }\n\n let newValue: string | Array<Option> | Option = this.toggleValue(\n option,\n value\n );\n\n onChange && onChange(newValue, submitOnChange, changeImmediately);\n }\n\n /**\n * 初始化时处理默认全选逻辑\n */\n defaultCheckAll() {\n const {value, formItem, setPrinstineValue} = this.props;\n // 如果有默认值\\回填值直接返回\n if (!formItem || formItem.getSelectedOptions(value).length) {\n return;\n }\n let valueArray = formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n setPrinstineValue?.(newValue);\n }\n\n /**\n * 选中的值经过joinValues和delimiter等规则处理输出规定格式的值\n * @param valueArray 选中值的数组\n * @returns 通过joinValues和delimiter等规则输出规定格式的值\n */\n formatValueArray(valueArray: Array<Option>) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n resetValue,\n multiple\n } = this.props;\n let newValue: string | Array<Option> | Option = '';\n if (multiple) {\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n newValue = valueArray[0] || resetValue;\n\n if (joinValues && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n return newValue;\n }\n\n @autobind\n handleToggleAll() {\n const {value, onChange, formItem} = this.props;\n\n if (!formItem) {\n return;\n }\n const selectedOptions = formItem.getSelectedOptions(value);\n let valueArray =\n selectedOptions.length === formItem.filteredOptions.length\n ? []\n : formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n onChange && onChange(newValue);\n }\n\n toggleValue(option: Option, originValue?: any) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n clearable,\n resetValue,\n multiple,\n formItem\n } = this.props;\n\n let valueArray =\n originValue !== undefined\n ? formItem!.getSelectedOptions(originValue).concat()\n : [];\n\n const idx = findIndex(\n valueArray,\n optionValueCompare(option[valueField || 'value'], valueField || 'value')\n );\n let newValue: string | Array<Option> | Option = '';\n\n if (multiple) {\n if (~idx) {\n valueArray.splice(idx, 1);\n } else {\n valueArray.push(option);\n }\n\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n if (~idx && clearable) {\n valueArray.splice(idx, 1);\n } else {\n valueArray = [option];\n }\n\n newValue = valueArray[0] || resetValue;\n\n if ((joinValues || extractValue) && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n\n return newValue;\n }\n\n // 当有 action 触发,如果指定了 reload 目标组件,有可能会来到这里面来\n @autobind\n reload() {\n return this.reloadOptions();\n }\n\n @autobind\n reloadOptions(setError?: boolean, isInit = false) {\n const {source, formItem, data, onChange, setPrinstineValue, selectFirst} =\n this.props;\n\n if (formItem && isPureVariable(source as string)) {\n isAlive(formItem) &&\n formItem.setOptions(\n normalizeOptions(\n resolveVariableAndFilter(source as string, data, '| raw') || []\n ),\n this.changeOptionValue,\n data\n );\n return;\n } else if (!formItem || !isEffectiveApi(source, data)) {\n return;\n }\n\n return formItem.loadOptions(\n source,\n data,\n undefined,\n false,\n isInit ? setPrinstineValue : onChange,\n setError\n );\n }\n\n @autobind\n deferLoad(option: Option) {\n const {deferApi, source, env, formItem, data} = this.props;\n const api = option.deferApi || deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.deferLoadOptions(option, api, createObject(data, option));\n }\n\n @autobind\n expandTreeOptions(nodePathArr: any[]) {\n const {deferApi, source, env, formItem, data} = this.props;\n const api = deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.expandTreeOptions(nodePathArr, api, createObject(data));\n }\n\n @autobind\n async initOptions(data: any) {\n await this.reloadOptions(false, true);\n const {formItem, name, multiple, defaultCheckAll} = this.props;\n if (!formItem) {\n return;\n }\n if (isAlive(formItem) && formItem.value) {\n setVariable(data, name!, formItem.value);\n }\n\n // 默认全选\n if (multiple && defaultCheckAll && formItem.filteredOptions?.length) {\n this.defaultCheckAll();\n }\n }\n\n focus() {\n this.input && this.input.focus && this.input.focus();\n }\n\n @autobind\n changeOptionValue(value: any) {\n const {\n onChange,\n formInited,\n setPrinstineValue,\n value: originValue\n } = this.props;\n\n if (formInited === false) {\n originValue === undefined && setPrinstineValue?.(value);\n } else {\n onChange?.(value);\n }\n }\n\n @autobind\n setOptions(options: Array<any>, skipNormalize = false) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem &&\n formItem.setOptions(\n skipNormalize ? options : normalizeOptions(options || []),\n this.changeOptionValue,\n this.props.data\n );\n }\n\n @autobind\n syncOptions() {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.syncOptions(undefined, this.props.data);\n }\n\n @autobind\n setLoading(value: boolean) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.setLoading(value);\n }\n\n @autobind\n async handleOptionAdd(\n idx: number | Array<number> = -1,\n value?: any,\n skipForm: boolean = false\n ) {\n let {\n addControls,\n disabled,\n labelField,\n onOpenDialog,\n optionLabel,\n addApi,\n source,\n data,\n valueField,\n formItem: model,\n createBtnLabel,\n env,\n translate: __\n } = this.props;\n\n // 禁用或者没有配置 name\n if (disabled || !model) {\n return;\n }\n\n // 用户没有配置表单项,则自动创建一个 label 输入\n if (!skipForm && (!Array.isArray(addControls) || !addControls.length)) {\n addControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n const parent = Array.isArray(idx)\n ? getTree(model.options, idx.slice(0, -1))\n : undefined;\n\n const ctx: any = createObject(\n data,\n Array.isArray(idx)\n ? {\n parent: parent,\n ...value\n }\n : value\n );\n\n let result: any = skipForm\n ? ctx\n : await onOpenDialog(\n {\n type: 'dialog',\n title: createBtnLabel || `新增${optionLabel || '选项'}`,\n body: {\n type: 'form',\n api: addApi,\n controls: addControls\n }\n },\n ctx\n );\n\n // 单独发请求\n if (skipForm && addApi) {\n try {\n const payload = await env.fetcher(addApi!, result, {\n method: 'post'\n });\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('Options.createFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 有 result 说明弹框点了确认。否则就是取消了。\n if (!result) {\n return;\n }\n\n // 没走服务端的。\n if (!result.hasOwnProperty(valueField || 'value')) {\n result = {\n ...result,\n [valueField || 'value']: result[labelField || 'label']\n };\n }\n\n // 如果是懒加载的,只懒加载当前节点。\n if (parent?.defer) {\n this.deferLoad(parent);\n } else if (source && addApi) {\n // 如果配置了 source 且配置了 addApi 直接重新拉取接口就够了\n // 不能不判断 addApi 就刷新,因为有些场景就是临时添加的。\n this.reload();\n } else {\n // 否则直接前端变更 options\n let options = model.options.concat();\n if (Array.isArray(idx)) {\n options = spliceTree(options, idx, 0, {...result});\n } else {\n ~idx\n ? options.splice(idx, 0, {...result})\n : options.push({...result});\n }\n model.setOptions(options, this.changeOptionValue, data);\n }\n }\n\n @autobind\n async handleOptionEdit(\n value: any,\n origin: any = value,\n skipForm: boolean = false\n ) {\n let {\n editControls,\n disabled,\n labelField,\n onOpenDialog,\n editApi,\n env,\n source,\n data,\n formItem: model,\n optionLabel,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n if (!skipForm && (!Array.isArray(editControls) || !editControls.length)) {\n editControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n\n let result = skipForm\n ? value\n : await onOpenDialog(\n {\n type: 'dialog',\n title: __('Options.editLabel', {\n label: optionLabel || __('Options.label')\n }),\n body: {\n type: 'form',\n api: editApi,\n controls: editControls\n }\n },\n createObject(data, value)\n );\n\n // 单独发请求\n if (skipForm && editApi) {\n try {\n const payload = await env.fetcher(\n editApi!,\n createObject(data, result),\n {\n method: 'post'\n }\n );\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('saveFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 没有结果,说明取消了。\n if (!result) {\n return;\n }\n\n if (source && editApi) {\n this.reload();\n } else {\n const indexes = findTreeIndex(model.options, item => item === origin);\n\n if (indexes) {\n model.setOptions(\n spliceTree(model.options, indexes, 1, {\n ...origin,\n ...result\n }),\n this.changeOptionValue,\n data\n );\n }\n }\n }\n\n @autobind\n async handleOptionDelete(value: any) {\n let {\n deleteConfirmText,\n disabled,\n data,\n deleteApi,\n env,\n formItem: model,\n source,\n valueField,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n const ctx = createObject(data, value);\n\n // 如果配置了 deleteConfirmText 让用户先确认。\n const confirmed = deleteConfirmText\n ? await env.confirm(filter(deleteConfirmText, ctx))\n : true;\n if (!confirmed) {\n return;\n }\n\n // 通过 deleteApi 删除。\n try {\n if (!deleteApi) {\n throw new Error(__('Options.deleteAPI'));\n }\n\n const result = await env.fetcher(deleteApi!, ctx, {\n method: 'delete'\n });\n\n if (!result.ok) {\n env.notify('error', result.msg || __('deleteFailed'));\n } else if (source) {\n this.reload();\n } else {\n const options = model.options.concat();\n const indexes = findTreeIndex(\n options,\n item => item[valueField || 'value'] == value[valueField || 'value']\n );\n\n if (indexes) {\n model.setOptions(\n spliceTree(options, indexes, 1),\n this.changeOptionValue,\n data\n );\n }\n }\n } catch (e) {\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n render() {\n const {\n value,\n formItem,\n addApi,\n editApi,\n deleteApi,\n creatable,\n editable,\n removable,\n enableNodePath,\n pathSeparator,\n delimiter = ',',\n labelField = 'label',\n valueField = 'value'\n } = this.props;\n\n const {nodePathArray, nodeValueArray} = normalizeNodePath(\n value,\n enableNodePath,\n labelField,\n valueField,\n pathSeparator,\n delimiter\n );\n\n return (\n <Control\n {...this.props}\n ref={this.inputRef}\n options={formItem ? formItem.filteredOptions : []}\n onToggle={this.handleToggle}\n onToggleAll={this.handleToggleAll}\n selectedOptions={\n formItem\n ? formItem.getSelectedOptions(\n value,\n enableNodePath ? nodeValueArray : undefined\n )\n : []\n }\n nodePath={nodePathArray}\n loading={formItem ? formItem.loading : false}\n setLoading={this.setLoading}\n setOptions={this.setOptions}\n syncOptions={this.syncOptions}\n reloadOptions={this.reload}\n deferLoad={this.deferLoad}\n expandTreeOptions={this.expandTreeOptions}\n creatable={\n creatable !== false && isEffectiveApi(addApi) ? true : creatable\n }\n editable={editable || (editable !== false && isEffectiveApi(editApi))}\n removable={\n removable || (removable !== false && isEffectiveApi(deleteApi))\n }\n onAdd={this.handleOptionAdd}\n onEdit={this.handleOptionEdit}\n onDelete={this.handleOptionDelete}\n />\n );\n }\n }\n\n return registerFormItem({\n ...(config as FormItemBasicConfig),\n strictMode: false,\n component: FormOptionsItem\n });\n}\n\nexport function OptionsControl(config: OptionsBasicConfig) {\n return function <T extends React.ComponentType<OptionsControlProps>>(\n component: T\n ): T {\n const renderer = registerOptionsControl({\n ...config,\n component: component\n });\n return renderer.component as any;\n };\n}\n\nexport function highlight(\n text: string,\n input?: string,\n hlClassName: string = 'is-matched'\n) {\n if (!input) {\n return text;\n }\n\n text = String(text);\n const reg = new RegExp(input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'), 'ig');\n if (!reg.test(text)) {\n return text;\n }\n\n const dom: Array<any> = [];\n\n let start = 0;\n let match = null;\n\n reg.lastIndex = 0;\n while ((match = reg.exec(text))) {\n const prev = text.substring(start, match.index);\n prev && dom.push(<span key={dom.length}>{prev}</span>);\n\n match[0] &&\n dom.push(\n <span className={hlClassName} key={dom.length}>\n {match[0]}\n </span>\n );\n start = match.index + match[0].length;\n }\n const rest = text.substring(start);\n rest && dom.push(<span key={dom.length}>{rest}</span>);\n\n // const parts = text.split(reg);\n\n // parts.forEach((text: string, index) => {\n // text && dom.push(<span key={index}>{text}</span>);\n // dom.push(\n // <span className={hlClassName} key={`${index}-hl`}>\n // {input}\n // </span>\n // );\n // });\n\n // dom.pop();\n\n return dom;\n}\n"
11
+ "/**\n * @file 所有列表选择类控件的父级,比如 Select、Radios、Checkboxes、\n * List、ButtonGroup 等等\n */\nimport {Api, PlainObject, Schema} from '../../types';\nimport {isEffectiveApi, isApiOutdated, isValidApi} from '../../utils/api';\nimport {isAlive} from 'mobx-state-tree';\nimport {\n anyChanged,\n autobind,\n createObject,\n setVariable,\n spliceTree,\n findTreeIndex,\n getTree,\n isEmpty,\n getTreeAncestors,\n normalizeNodePath\n} from '../../utils/helper';\nimport {reaction} from 'mobx';\nimport {\n FormControlProps,\n registerFormItem,\n FormItemBasicConfig,\n detectProps as itemDetectProps,\n FormBaseControl\n} from './Item';\nimport {IFormItemStore} from '../../store/formItem';\nexport type OptionsControlComponent = React.ComponentType<FormControlProps>;\n\nimport React from 'react';\nimport {\n resolveVariableAndFilter,\n isPureVariable,\n dataMapping\n} from '../../utils/tpl-builtin';\nimport {\n Option,\n OptionProps,\n normalizeOptions,\n optionValueCompare\n} from '../../components/Select';\nimport {filter} from '../../utils/tpl';\nimport findIndex from 'lodash/findIndex';\nimport {\n SchemaApi,\n SchemaExpression,\n SchemaObject,\n SchemaTokenizeableString\n} from '../../Schema';\nimport isPlainObject from 'lodash/isPlainObject';\nimport merge from 'lodash/merge';\n\nexport {Option};\n\nexport interface FormOptionsControl extends FormBaseControl {\n /**\n * 选项集合\n */\n options?: Array<Option> | string[] | PlainObject;\n\n /**\n * 可用来通过 API 拉取 options。\n */\n source?: SchemaApi | SchemaTokenizeableString;\n\n /**\n * 默认选择选项第一个值。\n */\n selectFirst?: boolean;\n\n /**\n * 用表达式来配置 source 接口初始要不要拉取\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetchOn?: SchemaExpression;\n\n /**\n * 配置 source 接口初始拉不拉取。\n *\n * @deprecated 建议用 source 接口的 sendOn\n */\n initFetch?: boolean;\n\n /**\n * 是否为多选模式\n */\n multiple?: boolean;\n\n /**\n * 单选模式:当用户选中某个选项时,选项中的 value 将被作为该表单项的值提交,否则,整个选项对象都会作为该表单项的值提交。\n * 多选模式:选中的多个选项的 `value` 会通过 `delimiter` 连接起来,否则直接将以数组的形式提交值。\n */\n joinValues?: boolean;\n\n /**\n * 分割符\n */\n delimiter?: string;\n\n /**\n * 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。\n */\n extractValue?: boolean;\n\n /**\n * 是否可清除。\n */\n clearable?: boolean;\n\n /**\n * 点清除按钮时,将表单项设置成当前配置的值。\n *\n * @default ''\n */\n resetValue?: string;\n\n /**\n * 延时加载的 API,当选项中有 defer: true 的选项时,点开会通过此接口扩充。\n */\n deferApi?: SchemaApi;\n\n /**\n * 添加时调用的接口\n */\n addApi?: SchemaApi;\n\n /**\n * 新增时的表单项。\n */\n addControls?: Array<SchemaObject>;\n\n /**\n * 是否可以新增\n */\n creatable?: boolean;\n\n /**\n * 新增文字\n */\n createBtnLabel?: string;\n\n /**\n * 是否可以编辑\n */\n editable?: boolean;\n\n /**\n * 编辑时调用的 API\n */\n editApi?: SchemaApi;\n\n /**\n * 选项修改的表单项\n */\n editControls?: Array<SchemaObject>;\n\n /**\n * 是否可删除\n */\n removable?: boolean;\n\n /**\n * 选项删除 API\n */\n deleteApi?: SchemaApi;\n\n /**\n * 选项删除提示文字。\n */\n deleteConfirmText?: string;\n\n /**\n * 自动填充,当选项被选择的时候,将选项中的其他值同步设置到表单内。\n */\n autoFill?: {\n [propName: string]: SchemaTokenizeableString;\n };\n}\n\nexport interface OptionsBasicConfig extends FormItemBasicConfig {\n autoLoadOptionsFromSource?: boolean;\n}\n\nexport interface OptionsConfig extends OptionsBasicConfig {\n component: React.ComponentType<OptionsControlProps>;\n}\n\n// 下发给注册进来的组件的属性。\nexport interface OptionsControlProps\n extends FormControlProps,\n Omit<\n FormOptionsControl,\n 'type' | 'className' | 'descriptionClassName' | 'inputClassName'\n > {\n options: Array<Option>;\n onToggle: (\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) => void;\n onToggleAll: () => void;\n selectedOptions: Array<Option>;\n setOptions: (value: Array<any>, skipNormalize?: boolean) => void;\n setLoading: (value: boolean) => void;\n reloadOptions: (setError?: boolean) => void;\n deferLoad: (option: Option) => void;\n expandTreeOptions: (nodePathArr: any[]) => void;\n onAdd?: (\n idx?: number | Array<number>,\n value?: any,\n skipForm?: boolean\n ) => void;\n onEdit?: (value: Option, origin?: Option, skipForm?: boolean) => void;\n onDelete?: (value: Option) => void;\n}\n\n// 自己接收的属性。\nexport interface OptionsProps\n extends FormControlProps,\n Omit<OptionProps, 'className'> {\n source?: Api;\n deferApi?: Api;\n creatable?: boolean;\n addApi?: Api;\n addControls?: Array<any>;\n editApi?: Api;\n editControls?: Array<any>;\n deleteApi?: Api;\n deleteConfirmText?: string;\n optionLabel?: string;\n}\n\nexport const detectProps = itemDetectProps.concat([\n 'value',\n 'options',\n 'size',\n 'buttons',\n 'columnsCount',\n 'multiple',\n 'hideRoot',\n 'checkAll',\n 'showIcon',\n 'showRadio',\n 'btnDisabled',\n 'joinValues',\n 'extractValue',\n 'borderMode',\n 'hideSelected'\n]);\n\nexport function registerOptionsControl(config: OptionsConfig) {\n const Control = config.component;\n\n class FormOptionsItem extends React.Component<OptionsProps, any> {\n static displayName = `OptionsControl(${config.type})`;\n static defaultProps = {\n delimiter: ',',\n labelField: 'label',\n valueField: 'value',\n joinValues: true,\n extractValue: false,\n multiple: false,\n placeholder: 'Select.placeholder',\n resetValue: '',\n deleteConfirmText: '确定要删除?',\n ...Control.defaultProps\n };\n static propsList: any = (Control as any).propsList\n ? [...(Control as any).propsList]\n : [];\n static ComposedComponent = Control;\n\n toDispose: Array<() => void> = [];\n\n input: any;\n mounted = false;\n\n constructor(props: OptionsProps) {\n super(props);\n\n const {\n initFetch,\n formItem,\n source,\n data,\n setPrinstineValue,\n defaultValue,\n multiple,\n joinValues,\n extractValue,\n addHook,\n formInited,\n valueField,\n options,\n value,\n defaultCheckAll\n } = props;\n\n if (formItem) {\n formItem.setOptions(\n normalizeOptions(options),\n this.changeOptionValue,\n data\n );\n\n this.toDispose.push(\n reaction(\n () => JSON.stringify([formItem.loading, formItem.filteredOptions]),\n () => this.mounted && this.forceUpdate()\n )\n );\n\n this.toDispose.push(\n reaction(\n () => JSON.stringify(formItem.options),\n () => this.mounted && this.syncAutoFill(formItem.tmpValue)\n )\n );\n // 默认全选。这里会和默认值\\回填值逻辑冲突,所以如果有配置source则不执行默认全选\n if (\n multiple &&\n defaultCheckAll &&\n formItem.filteredOptions?.length &&\n !source\n ) {\n this.defaultCheckAll();\n }\n }\n\n let loadOptions: boolean = initFetch !== false;\n\n if (formItem && joinValues === false && defaultValue) {\n const selectedOptions = extractValue\n ? formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) =>\n selectedOption[valueField || 'value']\n )\n : formItem.getSelectedOptions(value);\n setPrinstineValue(\n multiple ? selectedOptions.concat() : selectedOptions[0]\n );\n }\n\n loadOptions &&\n config.autoLoadOptionsFromSource !== false &&\n (formInited || !addHook\n ? this.reload()\n : addHook && addHook(this.initOptions, 'init'));\n }\n\n componentDidMount() {\n this.mounted = true;\n this.normalizeValue();\n\n if (this.props.value) {\n this.syncAutoFill(this.props.value);\n }\n }\n\n shouldComponentUpdate(nextProps: OptionsProps) {\n if (config.strictMode === false || nextProps.strictMode === false) {\n return true;\n } else if (nextProps.source || nextProps.autoComplete) {\n return true;\n } else if (nextProps.formItem?.expressionsInOptions) {\n return true;\n }\n\n if (anyChanged(detectProps, this.props, nextProps)) {\n return true;\n }\n\n return false;\n }\n\n componentDidUpdate(prevProps: OptionsProps) {\n const props = this.props;\n const formItem = props.formItem as IFormItemStore;\n\n if (prevProps.options !== props.options && formItem) {\n formItem.setOptions(\n normalizeOptions(props.options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n } else if (\n config.autoLoadOptionsFromSource !== false &&\n props.formInited &&\n props.source &&\n formItem &&\n (prevProps.source !== props.source || prevProps.data !== props.data)\n ) {\n if (isPureVariable(props.source as string)) {\n const prevOptions = resolveVariableAndFilter(\n prevProps.source as string,\n prevProps.data,\n '| raw'\n );\n const options = resolveVariableAndFilter(\n props.source as string,\n props.data,\n '| raw'\n );\n\n if (prevOptions !== options) {\n formItem.setOptions(\n normalizeOptions(options || []),\n this.changeOptionValue,\n props.data\n );\n this.normalizeValue();\n }\n } else if (\n isEffectiveApi(props.source, props.data) &&\n isApiOutdated(\n prevProps.source,\n props.source,\n prevProps.data,\n props.data\n )\n ) {\n formItem\n .loadOptions(\n props.source,\n props.data,\n undefined,\n true,\n this.changeOptionValue\n )\n .then(() => this.normalizeValue());\n }\n }\n\n if (prevProps.value !== props.value || formItem?.expressionsInOptions) {\n formItem.syncOptions(undefined, props.data);\n this.syncAutoFill(props.value);\n }\n }\n\n componentWillUnmount() {\n this.props.removeHook?.(this.reload, 'init');\n this.toDispose.forEach(fn => fn());\n this.toDispose = [];\n }\n\n syncAutoFill(value: any) {\n const {autoFill, multiple, onBulkChange, data} = this.props;\n const formItem = this.props.formItem as IFormItemStore;\n\n if (\n onBulkChange &&\n autoFill &&\n !isEmpty(autoFill) &&\n formItem.filteredOptions.length\n ) {\n const selectedOptions = formItem.getSelectedOptions(value);\n const toSync = dataMapping(\n autoFill,\n multiple\n ? {\n items: selectedOptions.map(item =>\n createObject(\n {\n ...data,\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n item,\n true\n )\n },\n item\n )\n )\n }\n : createObject(\n {\n ...data,\n ancestors: getTreeAncestors(\n formItem.filteredOptions,\n selectedOptions[0],\n true\n )\n },\n selectedOptions[0]\n )\n );\n\n Object.keys(toSync).forEach(key => {\n if (isPlainObject(toSync[key]) && isPlainObject(data[key])) {\n toSync[key] = merge({}, data[key], toSync[key]);\n }\n });\n\n onBulkChange(toSync);\n }\n }\n\n // 当前值,跟设置预期的值格式不一致时自动转换。\n normalizeValue() {\n const {\n joinValues,\n extractValue,\n value,\n multiple,\n formItem,\n valueField,\n enableNodePath,\n pathSeparator,\n onChange\n } = this.props;\n\n if (!formItem || joinValues !== false || !formItem.options.length) {\n return;\n }\n\n if (\n extractValue === false &&\n (typeof value === 'string' || typeof value === 'number')\n ) {\n const selectedOptions = formItem.getSelectedOptions(value);\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n } else if (\n extractValue === true &&\n value &&\n !(\n (Array.isArray(value) &&\n value.every(\n val => typeof val === 'string' || typeof val === 'number'\n )) ||\n typeof value === 'string' ||\n typeof value === 'number'\n )\n ) {\n const selectedOptions = formItem\n .getSelectedOptions(value)\n .map(\n (selectedOption: Option) => selectedOption[valueField || 'value']\n );\n onChange?.(multiple ? selectedOptions.concat() : selectedOptions[0]);\n }\n }\n\n getWrappedInstance() {\n return this.input;\n }\n\n @autobind\n inputRef(ref: any) {\n this.input = ref;\n }\n\n @autobind\n handleToggle(\n option: Option,\n submitOnChange?: boolean,\n changeImmediately?: boolean\n ) {\n const {onChange, formItem, value} = this.props;\n\n if (!formItem) {\n return;\n }\n\n let newValue: string | Array<Option> | Option = this.toggleValue(\n option,\n value\n );\n\n onChange && onChange(newValue, submitOnChange, changeImmediately);\n }\n\n /**\n * 初始化时处理默认全选逻辑\n */\n defaultCheckAll() {\n const {value, formItem, setPrinstineValue} = this.props;\n // 如果有默认值\\回填值直接返回\n if (!formItem || formItem.getSelectedOptions(value).length) {\n return;\n }\n let valueArray = formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n setPrinstineValue?.(newValue);\n }\n\n /**\n * 选中的值经过joinValues和delimiter等规则处理输出规定格式的值\n * @param valueArray 选中值的数组\n * @returns 通过joinValues和delimiter等规则输出规定格式的值\n */\n formatValueArray(valueArray: Array<Option>) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n resetValue,\n multiple\n } = this.props;\n let newValue: string | Array<Option> | Option = '';\n if (multiple) {\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n newValue = valueArray[0] || resetValue;\n\n if (joinValues && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n return newValue;\n }\n\n @autobind\n handleToggleAll() {\n const {value, onChange, formItem} = this.props;\n\n if (!formItem) {\n return;\n }\n const selectedOptions = formItem.getSelectedOptions(value);\n let valueArray =\n selectedOptions.length === formItem.filteredOptions.length\n ? []\n : formItem.filteredOptions.concat();\n const newValue = this.formatValueArray(valueArray);\n onChange && onChange(newValue);\n }\n\n toggleValue(option: Option, originValue?: any) {\n const {\n joinValues,\n extractValue,\n valueField,\n delimiter,\n clearable,\n resetValue,\n multiple,\n formItem\n } = this.props;\n\n let valueArray =\n originValue !== undefined\n ? formItem!.getSelectedOptions(originValue).concat()\n : [];\n\n const idx = findIndex(\n valueArray,\n optionValueCompare(option[valueField || 'value'], valueField || 'value')\n );\n let newValue: string | Array<Option> | Option = '';\n\n if (multiple) {\n if (~idx) {\n valueArray.splice(idx, 1);\n } else {\n valueArray.push(option);\n }\n\n newValue = valueArray;\n\n if (joinValues) {\n newValue = (newValue as Array<any>)\n .map(item => item[valueField || 'value'])\n .join(delimiter);\n } else if (extractValue) {\n newValue = (newValue as Array<any>).map(\n item => item[valueField || 'value']\n );\n }\n } else {\n if (~idx && clearable) {\n valueArray.splice(idx, 1);\n } else {\n valueArray = [option];\n }\n\n newValue = valueArray[0] || resetValue;\n\n if ((joinValues || extractValue) && newValue) {\n newValue = (newValue as any)[valueField || 'value'];\n }\n }\n\n return newValue;\n }\n\n // 当有 action 触发,如果指定了 reload 目标组件,有可能会来到这里面来\n @autobind\n reload() {\n return this.reloadOptions();\n }\n\n @autobind\n reloadOptions(setError?: boolean, isInit = false) {\n const {source, formItem, data, onChange, setPrinstineValue, selectFirst} =\n this.props;\n\n if (formItem && isPureVariable(source as string)) {\n isAlive(formItem) &&\n formItem.setOptions(\n normalizeOptions(\n resolveVariableAndFilter(source as string, data, '| raw') || []\n ),\n this.changeOptionValue,\n data\n );\n return;\n } else if (!formItem || !isEffectiveApi(source, data)) {\n return;\n }\n\n return formItem.loadOptions(\n source,\n data,\n undefined,\n false,\n isInit ? setPrinstineValue : onChange,\n setError\n );\n }\n\n @autobind\n deferLoad(option: Option) {\n const {deferApi, source, env, formItem, data} = this.props;\n const api = option.deferApi || deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.deferLoadOptions(option, api, createObject(data, option));\n }\n\n @autobind\n expandTreeOptions(nodePathArr: any[]) {\n const {deferApi, source, env, formItem, data} = this.props;\n const api = deferApi || source;\n\n if (!api) {\n env.notify(\n 'error',\n '请在选项中设置 `deferApi` 或者表单项中设置 `deferApi`,用来加载子选项。'\n );\n return;\n }\n\n formItem?.expandTreeOptions(nodePathArr, api, createObject(data));\n }\n\n @autobind\n async initOptions(data: any) {\n await this.reloadOptions(false, true);\n const {formItem, name, multiple, defaultCheckAll} = this.props;\n if (!formItem) {\n return;\n }\n if (isAlive(formItem) && formItem.value) {\n setVariable(data, name!, formItem.value);\n }\n\n // 默认全选\n if (multiple && defaultCheckAll && formItem.filteredOptions?.length) {\n this.defaultCheckAll();\n }\n }\n\n focus() {\n this.input && this.input.focus && this.input.focus();\n }\n\n @autobind\n changeOptionValue(value: any) {\n const {\n onChange,\n formInited,\n setPrinstineValue,\n value: originValue\n } = this.props;\n\n if (formInited === false) {\n originValue === undefined && setPrinstineValue?.(value);\n } else {\n onChange?.(value);\n }\n }\n\n @autobind\n setOptions(options: Array<any>, skipNormalize = false) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem &&\n formItem.setOptions(\n skipNormalize ? options : normalizeOptions(options || []),\n this.changeOptionValue,\n this.props.data\n );\n }\n\n @autobind\n syncOptions() {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.syncOptions(undefined, this.props.data);\n }\n\n @autobind\n setLoading(value: boolean) {\n const formItem = this.props.formItem as IFormItemStore;\n formItem && formItem.setLoading(value);\n }\n\n @autobind\n async handleOptionAdd(\n idx: number | Array<number> = -1,\n value?: any,\n skipForm: boolean = false\n ) {\n let {\n addControls,\n disabled,\n labelField,\n onOpenDialog,\n optionLabel,\n addApi,\n source,\n data,\n valueField,\n formItem: model,\n createBtnLabel,\n env,\n translate: __\n } = this.props;\n\n // 禁用或者没有配置 name\n if (disabled || !model) {\n return;\n }\n\n // 用户没有配置表单项,则自动创建一个 label 输入\n if (!skipForm && (!Array.isArray(addControls) || !addControls.length)) {\n addControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n const parent = Array.isArray(idx)\n ? getTree(model.options, idx.slice(0, -1))\n : undefined;\n\n const ctx: any = createObject(\n data,\n Array.isArray(idx)\n ? {\n parent: parent,\n ...value\n }\n : value\n );\n\n let result: any = skipForm\n ? ctx\n : await onOpenDialog(\n {\n type: 'dialog',\n title: createBtnLabel || `新增${optionLabel || '选项'}`,\n body: {\n type: 'form',\n api: addApi,\n controls: [\n {\n type: 'hidden',\n name: 'idx',\n value: idx\n },\n {\n type: 'hidden',\n name: 'parent',\n value: parent\n },\n ...(addControls || [])\n ]\n }\n },\n ctx\n );\n\n // 单独发请求\n if (skipForm && addApi) {\n try {\n const payload = await env.fetcher(addApi!, result, {\n method: 'post'\n });\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('Options.createFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 有 result 说明弹框点了确认。否则就是取消了。\n if (!result) {\n return;\n }\n\n // 没走服务端的。\n if (!result.hasOwnProperty(valueField || 'value')) {\n result = {\n ...result,\n [valueField || 'value']: result[labelField || 'label']\n };\n }\n\n // 如果是懒加载的,只懒加载当前节点。\n if (parent?.defer) {\n this.deferLoad(parent);\n } else if (source && addApi) {\n // 如果配置了 source 且配置了 addApi 直接重新拉取接口就够了\n // 不能不判断 addApi 就刷新,因为有些场景就是临时添加的。\n this.reload();\n } else {\n // 否则直接前端变更 options\n let options = model.options.concat();\n if (Array.isArray(idx)) {\n options = spliceTree(options, idx, 0, {...result});\n } else {\n ~idx\n ? options.splice(idx, 0, {...result})\n : options.push({...result});\n }\n model.setOptions(options, this.changeOptionValue, data);\n }\n }\n\n @autobind\n async handleOptionEdit(\n value: any,\n origin: any = value,\n skipForm: boolean = false\n ) {\n let {\n editControls,\n disabled,\n labelField,\n onOpenDialog,\n editApi,\n env,\n source,\n data,\n formItem: model,\n optionLabel,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n if (!skipForm && (!Array.isArray(editControls) || !editControls.length)) {\n editControls = [\n {\n type: 'text',\n name: labelField || 'label',\n label: false,\n placeholder: __('Options.addPlaceholder')\n }\n ];\n }\n\n let result = skipForm\n ? value\n : await onOpenDialog(\n {\n type: 'dialog',\n title: __('Options.editLabel', {\n label: optionLabel || __('Options.label')\n }),\n body: {\n type: 'form',\n api: editApi,\n controls: editControls\n }\n },\n createObject(data, value)\n );\n\n // 单独发请求\n if (skipForm && editApi) {\n try {\n const payload = await env.fetcher(\n editApi!,\n createObject(data, result),\n {\n method: 'post'\n }\n );\n\n if (!payload.ok) {\n env.notify('error', payload.msg || __('saveFailed'));\n result = null;\n } else {\n result = payload.data || result;\n }\n } catch (e) {\n result = null;\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n // 没有结果,说明取消了。\n if (!result) {\n return;\n }\n\n if (source && editApi) {\n this.reload();\n } else {\n const indexes = findTreeIndex(model.options, item => item === origin);\n\n if (indexes) {\n model.setOptions(\n spliceTree(model.options, indexes, 1, {\n ...origin,\n ...result\n }),\n this.changeOptionValue,\n data\n );\n }\n }\n }\n\n @autobind\n async handleOptionDelete(value: any) {\n let {\n deleteConfirmText,\n disabled,\n data,\n deleteApi,\n env,\n formItem: model,\n source,\n valueField,\n translate: __\n } = this.props;\n\n if (disabled || !model) {\n return;\n }\n\n const ctx = createObject(data, value);\n\n // 如果配置了 deleteConfirmText 让用户先确认。\n const confirmed = deleteConfirmText\n ? await env.confirm(filter(deleteConfirmText, ctx))\n : true;\n if (!confirmed) {\n return;\n }\n\n // 通过 deleteApi 删除。\n try {\n if (!deleteApi) {\n throw new Error(__('Options.deleteAPI'));\n }\n\n const result = await env.fetcher(deleteApi!, ctx, {\n method: 'delete'\n });\n\n if (!result.ok) {\n env.notify('error', result.msg || __('deleteFailed'));\n } else if (source) {\n this.reload();\n } else {\n const options = model.options.concat();\n const indexes = findTreeIndex(\n options,\n item => item[valueField || 'value'] == value[valueField || 'value']\n );\n\n if (indexes) {\n model.setOptions(\n spliceTree(options, indexes, 1),\n this.changeOptionValue,\n data\n );\n }\n }\n } catch (e) {\n console.error(e);\n env.notify('error', e.message);\n }\n }\n\n render() {\n const {\n value,\n formItem,\n addApi,\n editApi,\n deleteApi,\n creatable,\n editable,\n removable,\n enableNodePath,\n pathSeparator,\n delimiter = ',',\n labelField = 'label',\n valueField = 'value'\n } = this.props;\n\n const {nodePathArray, nodeValueArray} = normalizeNodePath(\n value,\n enableNodePath,\n labelField,\n valueField,\n pathSeparator,\n delimiter\n );\n\n return (\n <Control\n {...this.props}\n ref={this.inputRef}\n options={formItem ? formItem.filteredOptions : []}\n onToggle={this.handleToggle}\n onToggleAll={this.handleToggleAll}\n selectedOptions={\n formItem\n ? formItem.getSelectedOptions(\n value,\n enableNodePath ? nodeValueArray : undefined\n )\n : []\n }\n nodePath={nodePathArray}\n loading={formItem ? formItem.loading : false}\n setLoading={this.setLoading}\n setOptions={this.setOptions}\n syncOptions={this.syncOptions}\n reloadOptions={this.reload}\n deferLoad={this.deferLoad}\n expandTreeOptions={this.expandTreeOptions}\n creatable={\n creatable !== false && isEffectiveApi(addApi) ? true : creatable\n }\n editable={editable || (editable !== false && isEffectiveApi(editApi))}\n removable={\n removable || (removable !== false && isEffectiveApi(deleteApi))\n }\n onAdd={this.handleOptionAdd}\n onEdit={this.handleOptionEdit}\n onDelete={this.handleOptionDelete}\n />\n );\n }\n }\n\n return registerFormItem({\n ...(config as FormItemBasicConfig),\n strictMode: false,\n component: FormOptionsItem\n });\n}\n\nexport function OptionsControl(config: OptionsBasicConfig) {\n return function <T extends React.ComponentType<OptionsControlProps>>(\n component: T\n ): T {\n const renderer = registerOptionsControl({\n ...config,\n component: component\n });\n return renderer.component as any;\n };\n}\n\nexport function highlight(\n text: string,\n input?: string,\n hlClassName: string = 'is-matched'\n) {\n if (!input) {\n return text;\n }\n\n text = String(text);\n const reg = new RegExp(input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&'), 'ig');\n if (!reg.test(text)) {\n return text;\n }\n\n const dom: Array<any> = [];\n\n let start = 0;\n let match = null;\n\n reg.lastIndex = 0;\n while ((match = reg.exec(text))) {\n const prev = text.substring(start, match.index);\n prev && dom.push(<span key={dom.length}>{prev}</span>);\n\n match[0] &&\n dom.push(\n <span className={hlClassName} key={dom.length}>\n {match[0]}\n </span>\n );\n start = match.index + match[0].length;\n }\n const rest = text.substring(start);\n rest && dom.push(<span key={dom.length}>{rest}</span>);\n\n // const parts = text.split(reg);\n\n // parts.forEach((text: string, index) => {\n // text && dom.push(<span key={index}>{text}</span>);\n // dom.push(\n // <span className={hlClassName} key={`${index}-hl`}>\n // {input}\n // </span>\n // );\n // });\n\n // dom.pop();\n\n return dom;\n}\n"
12
12
  ]
13
13
  }
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { OptionsControlProps, Option, FormOptionsControl } from './Options';
3
3
  import { Api } from '../../types';
4
4
  import { SchemaApi } from '../../Schema';
5
+ import { TransferControlSchema } from './Transfer';
5
6
  /**
6
7
  * Select 下拉选择框。
7
8
  * 文档:https://baidu.gitee.io/amis/docs/components/form/select
@@ -13,10 +14,6 @@ export interface SelectControlSchema extends FormOptionsControl {
13
14
  * 接口可以返回匹配到的选项,帮助用户输入。
14
15
  */
15
16
  autoComplete?: SchemaApi;
16
- /**
17
- * 是否可以搜索值
18
- */
19
- searchable?: boolean;
20
17
  /**
21
18
  * 可以自定义菜单展示。
22
19
  */
@@ -25,6 +22,42 @@ export interface SelectControlSchema extends FormOptionsControl {
25
22
  * 边框模式,全边框,还是半边框,或者没边框。
26
23
  */
27
24
  borderMode?: 'full' | 'half' | 'none';
25
+ /**
26
+ * 勾选展示模式
27
+ */
28
+ selectMode?: 'table' | 'group' | 'tree' | 'chained' | 'associated';
29
+ /**
30
+ * 当 selectMode 为 associated 时用来定义左侧的选项
31
+ */
32
+ leftOptions?: Array<Option>;
33
+ /**
34
+ * 当 selectMode 为 associated 时用来定义左侧的选择模式
35
+ */
36
+ leftMode?: 'tree' | 'list';
37
+ /**
38
+ * 当 selectMode 为 associated 时用来定义右侧的选择模式
39
+ */
40
+ rightMode?: 'table' | 'list' | 'tree' | 'chained';
41
+ /**
42
+ * 搜索结果展示模式
43
+ */
44
+ searchResultMode?: 'table' | 'list' | 'tree' | 'chained';
45
+ /**
46
+ * 当 selectMode 为 table 时定义表格列信息。
47
+ */
48
+ columns?: Array<any>;
49
+ /**
50
+ * 当 searchResultMode 为 table 时定义表格列信息。
51
+ */
52
+ searchResultColumns?: Array<any>;
53
+ /**
54
+ * 可搜索?
55
+ */
56
+ searchable?: boolean;
57
+ /**
58
+ * 搜索 API
59
+ */
60
+ searchApi?: SchemaApi;
28
61
  }
29
62
  export interface SelectProps extends OptionsControlProps {
30
63
  autoComplete?: Api;
@@ -47,8 +80,13 @@ export default class SelectControl extends React.Component<SelectProps, any> {
47
80
  mergeOptions(options: Array<object>): Option[];
48
81
  renderMenu(option: Option, state: any): JSX.Element;
49
82
  reload(): void;
83
+ option2value(): void;
84
+ renderOtherMode(): JSX.Element;
50
85
  render(): JSX.Element;
51
86
  }
87
+ export interface TransferDropDownProps extends OptionsControlProps, Omit<TransferControlSchema, 'type' | 'options' | 'inputClassName' | 'className' | 'descriptionClassName'> {
88
+ borderMode?: 'full' | 'half' | 'none';
89
+ }
52
90
  export declare class SelectControlRenderer extends SelectControl {
53
91
  }
54
92
  export declare class MultiSelectControlRenderer extends SelectControl {
@@ -10,6 +10,9 @@ var find_1 = (0, tslib_1.__importDefault)(require("lodash/find"));
10
10
  var debounce_1 = (0, tslib_1.__importDefault)(require("lodash/debounce"));
11
11
  var api_1 = require("../../utils/api");
12
12
  var helper_1 = require("../../utils/helper");
13
+ var Spinner_1 = (0, tslib_1.__importDefault)(require("../../components/Spinner"));
14
+ var Transfer_1 = require("./Transfer");
15
+ var TransferDropDown_1 = (0, tslib_1.__importDefault)(require("../../components/TransferDropDown"));
13
16
  var SelectControl = /** @class */ (function (_super) {
14
17
  (0, tslib_1.__extends)(SelectControl, _super);
15
18
  function SelectControl(props) {
@@ -137,13 +140,17 @@ var SelectControl = /** @class */ (function (_super) {
137
140
  var reload = this.props.reloadOptions;
138
141
  reload && reload();
139
142
  };
143
+ SelectControl.prototype.option2value = function () { };
144
+ SelectControl.prototype.renderOtherMode = function () {
145
+ var _a = this.props, selectMode = _a.selectMode, rest = (0, tslib_1.__rest)(_a, ["selectMode"]);
146
+ return (react_1.default.createElement(TransferDropdownRenderer, (0, tslib_1.__assign)({}, rest, { selectMode: selectMode === 'group' ? 'list' : selectMode })));
147
+ };
140
148
  SelectControl.prototype.render = function () {
141
- var _a = this.props, autoComplete = _a.autoComplete, searchable = _a.searchable, options = _a.options, className = _a.className, loading = _a.loading, value = _a.value, selectedOptions = _a.selectedOptions, multi = _a.multi, multiple = _a.multiple, placeholder = _a.placeholder, id = _a.id, classPrefix = _a.classPrefix, classnames = _a.classnames, creatable = _a.creatable, inline = _a.inline, noResultsText = _a.noResultsText, render = _a.render, menuTpl = _a.menuTpl, borderMode = _a.borderMode, rest = (0, tslib_1.__rest)(_a, ["autoComplete", "searchable", "options", "className", "loading", "value", "selectedOptions", "multi", "multiple", "placeholder", "id", "classPrefix", "classnames", "creatable", "inline", "noResultsText", "render", "menuTpl", "borderMode"]);
149
+ var _a = this.props, autoComplete = _a.autoComplete, searchable = _a.searchable, options = _a.options, className = _a.className, loading = _a.loading, value = _a.value, selectedOptions = _a.selectedOptions, multi = _a.multi, multiple = _a.multiple, placeholder = _a.placeholder, id = _a.id, classPrefix = _a.classPrefix, classnames = _a.classnames, creatable = _a.creatable, inline = _a.inline, noResultsText = _a.noResultsText, render = _a.render, menuTpl = _a.menuTpl, borderMode = _a.borderMode, selectMode = _a.selectMode, rest = (0, tslib_1.__rest)(_a, ["autoComplete", "searchable", "options", "className", "loading", "value", "selectedOptions", "multi", "multiple", "placeholder", "id", "classPrefix", "classnames", "creatable", "inline", "noResultsText", "render", "menuTpl", "borderMode", "selectMode"]);
142
150
  if (noResultsText) {
143
151
  noResultsText = render('noResultText', noResultsText);
144
152
  }
145
- return (react_1.default.createElement("div", { className: (0, classnames_1.default)(classPrefix + "SelectControl", className) },
146
- react_1.default.createElement(Select_1.default, (0, tslib_1.__assign)({}, rest, { borderMode: borderMode, placeholder: placeholder, multiple: multiple || multi, ref: this.inputRef, value: selectedOptions, options: options, loadOptions: (0, api_1.isEffectiveApi)(autoComplete) ? this.lazyloadRemote : undefined, creatable: creatable, searchable: searchable || !!autoComplete, onChange: this.changeValue, loading: loading, noResultsText: noResultsText, renderMenu: menuTpl ? this.renderMenu : undefined }))));
153
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(classPrefix + "SelectControl", className) }, ['table', 'list', 'group', 'tree', 'chained', 'associated'].includes(selectMode) ? (this.renderOtherMode()) : (react_1.default.createElement(Select_1.default, (0, tslib_1.__assign)({}, rest, { borderMode: borderMode, placeholder: placeholder, multiple: multiple || multi, ref: this.inputRef, value: selectedOptions, options: options, loadOptions: (0, api_1.isEffectiveApi)(autoComplete) ? this.lazyloadRemote : undefined, creatable: creatable, searchable: searchable || !!autoComplete, onChange: this.changeValue, loading: loading, noResultsText: noResultsText, renderMenu: menuTpl ? this.renderMenu : undefined })))));
147
154
  };
148
155
  var _a;
149
156
  SelectControl.defaultProps = {
@@ -160,6 +167,33 @@ var SelectControl = /** @class */ (function (_super) {
160
167
  return SelectControl;
161
168
  }(react_1.default.Component));
162
169
  exports.default = SelectControl;
170
+ var TransferDropdownRenderer = /** @class */ (function (_super) {
171
+ (0, tslib_1.__extends)(TransferDropdownRenderer, _super);
172
+ function TransferDropdownRenderer() {
173
+ return _super !== null && _super.apply(this, arguments) || this;
174
+ }
175
+ TransferDropdownRenderer.prototype.render = function () {
176
+ var _a;
177
+ var _b = this.props, className = _b.className, cx = _b.classnames, selectedOptions = _b.selectedOptions, sortable = _b.sortable, loading = _b.loading, searchable = _b.searchable, searchResultMode = _b.searchResultMode, showArrow = _b.showArrow, deferLoad = _b.deferLoad, disabled = _b.disabled, selectTitle = _b.selectTitle, selectMode = _b.selectMode, multiple = _b.multiple, columns = _b.columns, leftMode = _b.leftMode, borderMode = _b.borderMode;
178
+ // 目前 LeftOptions 没有接口可以动态加载
179
+ // 为了方便可以快速实现动态化,让选项的第一个成员携带
180
+ // LeftOptions 信息
181
+ var _c = this.props, options = _c.options, leftOptions = _c.leftOptions, leftDefaultValue = _c.leftDefaultValue;
182
+ if (selectMode === 'associated' &&
183
+ options &&
184
+ options.length === 1 &&
185
+ options[0].leftOptions &&
186
+ Array.isArray(options[0].children)) {
187
+ leftOptions = options[0].leftOptions;
188
+ leftDefaultValue = (_a = options[0].leftDefaultValue) !== null && _a !== void 0 ? _a : leftDefaultValue;
189
+ options = options[0].children;
190
+ }
191
+ return (react_1.default.createElement(react_1.default.Fragment, null,
192
+ react_1.default.createElement(TransferDropDown_1.default, { selectMode: selectMode, className: className, value: selectedOptions, disabled: disabled, options: options, onChange: this.handleChange, option2value: this.option2value, sortable: sortable, searchResultMode: searchResultMode, onSearch: searchable ? this.handleSearch : undefined, showArrow: showArrow, onDeferLoad: deferLoad, selectTitle: selectTitle, multiple: multiple, columns: columns, leftMode: leftMode, leftOptions: leftOptions, borderMode: borderMode }),
193
+ react_1.default.createElement(Spinner_1.default, { overlay: true, key: "info", show: loading })));
194
+ };
195
+ return TransferDropdownRenderer;
196
+ }(Transfer_1.BaseTransferRenderer));
163
197
  var SelectControlRenderer = /** @class */ (function (_super) {
164
198
  (0, tslib_1.__extends)(SelectControlRenderer, _super);
165
199
  function SelectControlRenderer() {
@@ -6,8 +6,8 @@
6
6
  "/src/renderers/Form/Select.tsx"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "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",
9
+ "mappings": "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",
10
10
  "sourcesContent": [
11
- "import React from 'react';\nimport cx from 'classnames';\nimport {\n OptionsControl,\n OptionsControlProps,\n Option,\n FormOptionsControl\n} from './Options';\nimport Select, {normalizeOptions} from '../../components/Select';\nimport find from 'lodash/find';\nimport debouce from 'lodash/debounce';\nimport {Api} from '../../types';\nimport {isEffectiveApi} from '../../utils/api';\nimport {isEmpty, createObject, autobind} from '../../utils/helper';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {SchemaApi} from '../../Schema';\n\n/**\n * Select 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/select\n */\nexport interface SelectControlSchema extends FormOptionsControl {\n type: 'select' | 'multi-select';\n\n /**\n * 自动完成 API,当输入部分文字的时候,会将这些文字通过 ${term} 可以取到,发送给接口。\n * 接口可以返回匹配到的选项,帮助用户输入。\n */\n autoComplete?: SchemaApi;\n\n /**\n * 是否可以搜索值\n */\n searchable?: boolean;\n\n /**\n * 可以自定义菜单展示。\n */\n menuTpl?: string;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n}\n\nexport interface SelectProps extends OptionsControlProps {\n autoComplete?: Api;\n searchable?: boolean;\n defaultOpen?: boolean;\n}\n\nexport default class SelectControl extends React.Component<SelectProps, any> {\n static defaultProps: Partial<SelectProps> = {\n clearable: false,\n searchable: false,\n multiple: false\n };\n\n input: any;\n unHook: Function;\n lazyloadRemote: Function;\n constructor(props: SelectProps) {\n super(props);\n\n this.changeValue = this.changeValue.bind(this);\n this.lazyloadRemote = debouce(this.loadRemote.bind(this), 250, {\n trailing: true,\n leading: false\n });\n this.inputRef = this.inputRef.bind(this);\n }\n\n componentWillUnmount() {\n this.unHook && this.unHook();\n }\n\n inputRef(ref: any) {\n this.input = ref;\n }\n\n foucs() {\n this.input && this.input.focus();\n }\n\n changeValue(value: Option | Array<Option> | void) {\n const {\n joinValues,\n extractValue,\n delimiter,\n multiple,\n type,\n valueField,\n onChange,\n setOptions,\n options\n } = this.props;\n\n let newValue: string | Option | Array<Option> | void = value;\n let additonalOptions: Array<any> = [];\n\n (Array.isArray(value) ? value : value ? [value] : []).forEach(\n (option: any) => {\n let resolved = find(\n options,\n (item: any) =>\n item[valueField || 'value'] == option[valueField || 'value']\n );\n resolved || additonalOptions.push(option);\n }\n );\n\n if (joinValues) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? (value\n .map(item => item[valueField || 'value'])\n .join(delimiter) as string)\n : value\n ? (value as Option)[valueField || 'value']\n : '';\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n } else if (extractValue) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? value.map(item => item[valueField || 'value'])\n : value\n ? [(value as Option)[valueField || 'value']]\n : [''];\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n }\n\n // 不设置没法回显\n additonalOptions.length && setOptions(options.concat(additonalOptions));\n\n onChange(newValue);\n }\n\n async loadRemote(input: string) {\n const {\n autoComplete,\n env,\n data,\n setOptions,\n setLoading,\n formInited,\n addHook\n } = this.props;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n if (!formInited) {\n this.unHook && this.unHook();\n return (this.unHook = addHook(this.loadRemote.bind(this, input), 'init'));\n }\n\n const ctx = createObject(data, {\n term: input,\n value: input\n });\n\n if (!isEffectiveApi(autoComplete, ctx)) {\n return Promise.resolve({\n options: []\n });\n }\n\n setLoading(true);\n try {\n const ret = await env.fetcher(autoComplete, ctx);\n\n let options = (ret.data && (ret.data as any).options) || ret.data || [];\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return {\n options: combinedOptions\n };\n } finally {\n setLoading(false);\n }\n }\n\n mergeOptions(options: Array<object>) {\n const {selectedOptions} = this.props;\n let combinedOptions = normalizeOptions(options).concat();\n\n if (Array.isArray(selectedOptions) && selectedOptions.length) {\n selectedOptions.forEach(option => {\n if (\n !find(combinedOptions, (item: Option) => item.value == option.value)\n ) {\n combinedOptions.push({\n ...option,\n hidden: true\n });\n }\n });\n }\n return combinedOptions;\n }\n\n @autobind\n renderMenu(option: Option, state: any) {\n const {menuTpl, render, data} = this.props;\n\n return render(`menu/${state.index}`, menuTpl, {\n data: createObject(createObject(data, state), option)\n });\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n render() {\n let {\n autoComplete,\n searchable,\n options,\n className,\n loading,\n value,\n selectedOptions,\n multi,\n multiple,\n placeholder,\n id,\n classPrefix,\n classnames,\n creatable,\n inline,\n noResultsText,\n render,\n menuTpl,\n borderMode,\n ...rest\n } = this.props;\n\n if (noResultsText) {\n noResultsText = render('noResultText', noResultsText);\n }\n\n return (\n <div className={cx(`${classPrefix}SelectControl`, className)}>\n <Select\n {...rest}\n borderMode={borderMode}\n placeholder={placeholder}\n multiple={multiple || multi}\n ref={this.inputRef}\n value={selectedOptions}\n options={options}\n loadOptions={\n isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined\n }\n creatable={creatable}\n searchable={searchable || !!autoComplete}\n onChange={this.changeValue}\n loading={loading}\n noResultsText={noResultsText}\n renderMenu={menuTpl ? this.renderMenu : undefined}\n />\n </div>\n );\n }\n}\n\n@OptionsControl({\n type: 'select'\n})\nexport class SelectControlRenderer extends SelectControl {}\n\n@OptionsControl({\n type: 'multi-select'\n})\nexport class MultiSelectControlRenderer extends SelectControl {\n static defaultProps = {\n multiple: true\n };\n}\n"
11
+ "import React from 'react';\nimport cx from 'classnames';\nimport {\n OptionsControl,\n OptionsControlProps,\n Option,\n FormOptionsControl\n} from './Options';\nimport Select, {normalizeOptions} from '../../components/Select';\nimport find from 'lodash/find';\nimport debouce from 'lodash/debounce';\nimport {Api} from '../../types';\nimport {isEffectiveApi} from '../../utils/api';\nimport {isEmpty, createObject, autobind} from '../../utils/helper';\nimport {dataMapping} from '../../utils/tpl-builtin';\nimport {SchemaApi} from '../../Schema';\nimport Spinner from '../../components/Spinner';\nimport {BaseTransferRenderer, TransferControlSchema} from './Transfer';\nimport TransferDropDown from '../../components/TransferDropDown';\n\n/**\n * Select 下拉选择框。\n * 文档:https://baidu.gitee.io/amis/docs/components/form/select\n */\nexport interface SelectControlSchema extends FormOptionsControl {\n type: 'select' | 'multi-select';\n\n /**\n * 自动完成 API,当输入部分文字的时候,会将这些文字通过 ${term} 可以取到,发送给接口。\n * 接口可以返回匹配到的选项,帮助用户输入。\n */\n autoComplete?: SchemaApi;\n\n /**\n * 可以自定义菜单展示。\n */\n menuTpl?: string;\n\n /**\n * 边框模式,全边框,还是半边框,或者没边框。\n */\n borderMode?: 'full' | 'half' | 'none';\n\n /**\n * 勾选展示模式\n */\n selectMode?: 'table' | 'group' | 'tree' | 'chained' | 'associated';\n\n /**\n * 当 selectMode 为 associated 时用来定义左侧的选项\n */\n leftOptions?: Array<Option>;\n\n /**\n * 当 selectMode 为 associated 时用来定义左侧的选择模式\n */\n leftMode?: 'tree' | 'list';\n\n /**\n * 当 selectMode 为 associated 时用来定义右侧的选择模式\n */\n rightMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 搜索结果展示模式\n */\n searchResultMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 当 selectMode 为 table 时定义表格列信息。\n */\n columns?: Array<any>;\n\n /**\n * 当 searchResultMode 为 table 时定义表格列信息。\n */\n searchResultColumns?: Array<any>;\n\n /**\n * 可搜索?\n */\n searchable?: boolean;\n\n /**\n * 搜索 API\n */\n searchApi?: SchemaApi;\n}\n\nexport interface SelectProps extends OptionsControlProps {\n autoComplete?: Api;\n searchable?: boolean;\n defaultOpen?: boolean;\n}\n\nexport default class SelectControl extends React.Component<SelectProps, any> {\n static defaultProps: Partial<SelectProps> = {\n clearable: false,\n searchable: false,\n multiple: false\n };\n\n input: any;\n unHook: Function;\n lazyloadRemote: Function;\n constructor(props: SelectProps) {\n super(props);\n\n this.changeValue = this.changeValue.bind(this);\n this.lazyloadRemote = debouce(this.loadRemote.bind(this), 250, {\n trailing: true,\n leading: false\n });\n this.inputRef = this.inputRef.bind(this);\n }\n\n componentWillUnmount() {\n this.unHook && this.unHook();\n }\n\n inputRef(ref: any) {\n this.input = ref;\n }\n\n foucs() {\n this.input && this.input.focus();\n }\n\n changeValue(value: Option | Array<Option> | void) {\n const {\n joinValues,\n extractValue,\n delimiter,\n multiple,\n type,\n valueField,\n onChange,\n setOptions,\n options\n } = this.props;\n\n let newValue: string | Option | Array<Option> | void = value;\n let additonalOptions: Array<any> = [];\n\n (Array.isArray(value) ? value : value ? [value] : []).forEach(\n (option: any) => {\n let resolved = find(\n options,\n (item: any) =>\n item[valueField || 'value'] == option[valueField || 'value']\n );\n resolved || additonalOptions.push(option);\n }\n );\n\n if (joinValues) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? (value\n .map(item => item[valueField || 'value'])\n .join(delimiter) as string)\n : value\n ? (value as Option)[valueField || 'value']\n : '';\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n } else if (extractValue) {\n if (multiple) {\n newValue = Array.isArray(value)\n ? value.map(item => item[valueField || 'value'])\n : value\n ? [(value as Option)[valueField || 'value']]\n : [''];\n } else {\n newValue = newValue ? (newValue as Option)[valueField || 'value'] : '';\n }\n }\n\n // 不设置没法回显\n additonalOptions.length && setOptions(options.concat(additonalOptions));\n\n onChange(newValue);\n }\n\n async loadRemote(input: string) {\n const {\n autoComplete,\n env,\n data,\n setOptions,\n setLoading,\n formInited,\n addHook\n } = this.props;\n\n if (!env || !env.fetcher) {\n throw new Error('fetcher is required');\n }\n\n if (!formInited) {\n this.unHook && this.unHook();\n return (this.unHook = addHook(this.loadRemote.bind(this, input), 'init'));\n }\n\n const ctx = createObject(data, {\n term: input,\n value: input\n });\n\n if (!isEffectiveApi(autoComplete, ctx)) {\n return Promise.resolve({\n options: []\n });\n }\n\n setLoading(true);\n try {\n const ret = await env.fetcher(autoComplete, ctx);\n\n let options = (ret.data && (ret.data as any).options) || ret.data || [];\n let combinedOptions = this.mergeOptions(options);\n setOptions(combinedOptions);\n\n return {\n options: combinedOptions\n };\n } finally {\n setLoading(false);\n }\n }\n\n mergeOptions(options: Array<object>) {\n const {selectedOptions} = this.props;\n let combinedOptions = normalizeOptions(options).concat();\n\n if (Array.isArray(selectedOptions) && selectedOptions.length) {\n selectedOptions.forEach(option => {\n if (\n !find(combinedOptions, (item: Option) => item.value == option.value)\n ) {\n combinedOptions.push({\n ...option,\n hidden: true\n });\n }\n });\n }\n return combinedOptions;\n }\n\n @autobind\n renderMenu(option: Option, state: any) {\n const {menuTpl, render, data} = this.props;\n\n return render(`menu/${state.index}`, menuTpl, {\n data: createObject(createObject(data, state), option)\n });\n }\n\n reload() {\n const reload = this.props.reloadOptions;\n reload && reload();\n }\n\n option2value() {}\n\n renderOtherMode() {\n const {selectMode, ...rest} = this.props;\n return (\n <TransferDropdownRenderer\n {...rest}\n selectMode={selectMode === 'group' ? 'list' : selectMode}\n />\n );\n }\n\n render() {\n let {\n autoComplete,\n searchable,\n options,\n className,\n loading,\n value,\n selectedOptions,\n multi,\n multiple,\n placeholder,\n id,\n classPrefix,\n classnames,\n creatable,\n inline,\n noResultsText,\n render,\n menuTpl,\n borderMode,\n selectMode,\n ...rest\n } = this.props;\n\n if (noResultsText) {\n noResultsText = render('noResultText', noResultsText);\n }\n\n return (\n <div className={cx(`${classPrefix}SelectControl`, className)}>\n {['table', 'list', 'group', 'tree', 'chained', 'associated'].includes(\n selectMode\n ) ? (\n this.renderOtherMode()\n ) : (\n <Select\n {...rest}\n borderMode={borderMode}\n placeholder={placeholder}\n multiple={multiple || multi}\n ref={this.inputRef}\n value={selectedOptions}\n options={options}\n loadOptions={\n isEffectiveApi(autoComplete) ? this.lazyloadRemote : undefined\n }\n creatable={creatable}\n searchable={searchable || !!autoComplete}\n onChange={this.changeValue}\n loading={loading}\n noResultsText={noResultsText}\n renderMenu={menuTpl ? this.renderMenu : undefined}\n />\n )}\n </div>\n );\n }\n}\n\nexport interface TransferDropDownProps\n extends OptionsControlProps,\n Omit<\n TransferControlSchema,\n | 'type'\n | 'options'\n | 'inputClassName'\n | 'className'\n | 'descriptionClassName'\n > {\n borderMode?: 'full' | 'half' | 'none';\n}\n\nclass TransferDropdownRenderer extends BaseTransferRenderer<TransferDropDownProps> {\n render() {\n const {\n className,\n classnames: cx,\n selectedOptions,\n sortable,\n loading,\n searchable,\n searchResultMode,\n showArrow,\n deferLoad,\n disabled,\n selectTitle,\n selectMode,\n multiple,\n columns,\n leftMode,\n borderMode\n } = this.props;\n\n // 目前 LeftOptions 没有接口可以动态加载\n // 为了方便可以快速实现动态化,让选项的第一个成员携带\n // LeftOptions 信息\n let {options, leftOptions, leftDefaultValue} = this.props;\n if (\n selectMode === 'associated' &&\n options &&\n options.length === 1 &&\n options[0].leftOptions &&\n Array.isArray(options[0].children)\n ) {\n leftOptions = options[0].leftOptions;\n leftDefaultValue = options[0].leftDefaultValue ?? leftDefaultValue;\n options = options[0].children;\n }\n\n return (\n <>\n <TransferDropDown\n selectMode={selectMode}\n className={className}\n value={selectedOptions}\n disabled={disabled}\n options={options}\n onChange={this.handleChange}\n option2value={this.option2value}\n sortable={sortable}\n searchResultMode={searchResultMode}\n onSearch={searchable ? this.handleSearch : undefined}\n showArrow={showArrow}\n onDeferLoad={deferLoad}\n selectTitle={selectTitle}\n multiple={multiple}\n columns={columns}\n leftMode={leftMode}\n leftOptions={leftOptions}\n borderMode={borderMode}\n />\n\n <Spinner overlay key=\"info\" show={loading} />\n </>\n );\n }\n}\n\n@OptionsControl({\n type: 'select'\n})\nexport class SelectControlRenderer extends SelectControl {}\n\n@OptionsControl({\n type: 'multi-select'\n})\nexport class MultiSelectControlRenderer extends SelectControl {\n static defaultProps = {\n multiple: true\n };\n}\n"
12
12
  ]
13
13
  }
@@ -0,0 +1,48 @@
1
+ /// <reference types="react" />
2
+ import { OptionsControlProps, FormOptionsControl } from './Options';
3
+ import { BaseTransferRenderer } from './Transfer';
4
+ import { SchemaApi } from '../../Schema';
5
+ /**
6
+ * TabsTransferPicker 穿梭器的弹框形态
7
+ * 文档:https://baidu.gitee.io/amis/docs/components/form/tabs-transfer-picker
8
+ */
9
+ export interface TabsTransferPickerControlSchema extends FormOptionsControl {
10
+ type: 'tabs-transfer-picker';
11
+ /**
12
+ * 是否显示剪头
13
+ */
14
+ showArrow?: boolean;
15
+ /**
16
+ * 可排序?
17
+ */
18
+ sortable?: boolean;
19
+ /**
20
+ * 搜索结果展示模式
21
+ */
22
+ searchResultMode?: 'table' | 'list' | 'tree' | 'chained';
23
+ /**
24
+ * 可搜索?
25
+ */
26
+ searchable?: boolean;
27
+ /**
28
+ * 搜索 API
29
+ */
30
+ searchApi?: SchemaApi;
31
+ /**
32
+ * 左侧的标题文字
33
+ */
34
+ selectTitle?: string;
35
+ /**
36
+ * 右侧结果的标题文字
37
+ */
38
+ resultTitle?: string;
39
+ /**
40
+ * 弹窗大小
41
+ */
42
+ pickerSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
43
+ }
44
+ export interface TabsTransferProps extends OptionsControlProps, Omit<TabsTransferPickerControlSchema, 'type' | 'options' | 'inputClassName' | 'className' | 'descriptionClassName'> {
45
+ }
46
+ export declare class TabsTransferPickerRenderer extends BaseTransferRenderer<TabsTransferProps> {
47
+ render(): JSX.Element;
48
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TabsTransferPickerRenderer = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var Options_1 = require("./Options");
6
+ var react_1 = (0, tslib_1.__importDefault)(require("react"));
7
+ var Spinner_1 = (0, tslib_1.__importDefault)(require("../../components/Spinner"));
8
+ var Transfer_1 = require("./Transfer");
9
+ var TabsTransferPicker_1 = (0, tslib_1.__importDefault)(require("../../components/TabsTransferPicker"));
10
+ var TabsTransferPickerRenderer = /** @class */ (function (_super) {
11
+ (0, tslib_1.__extends)(TabsTransferPickerRenderer, _super);
12
+ function TabsTransferPickerRenderer() {
13
+ return _super !== null && _super.apply(this, arguments) || this;
14
+ }
15
+ TabsTransferPickerRenderer.prototype.render = function () {
16
+ var _a = this.props, className = _a.className, cx = _a.classnames, options = _a.options, selectedOptions = _a.selectedOptions, sortable = _a.sortable, loading = _a.loading, searchable = _a.searchable, searchResultMode = _a.searchResultMode, showArrow = _a.showArrow, deferLoad = _a.deferLoad, disabled = _a.disabled, selectTitle = _a.selectTitle, resultTitle = _a.resultTitle, pickerSize = _a.pickerSize, columns = _a.columns, leftMode = _a.leftMode, leftOptions = _a.leftOptions;
17
+ return (react_1.default.createElement("div", { className: cx('TabsTransferControl', className) },
18
+ react_1.default.createElement(TabsTransferPicker_1.default, { value: selectedOptions, disabled: disabled, options: options, onChange: this.handleChange, option2value: this.option2value, sortable: sortable, searchResultMode: searchResultMode, onSearch: searchable ? this.handleSearch : undefined, showArrow: showArrow, onDeferLoad: deferLoad, selectTitle: selectTitle, resultTitle: resultTitle, size: pickerSize, leftMode: leftMode, leftOptions: leftOptions }),
19
+ react_1.default.createElement(Spinner_1.default, { overlay: true, key: "info", show: loading })));
20
+ };
21
+ TabsTransferPickerRenderer = (0, tslib_1.__decorate)([
22
+ (0, Options_1.OptionsControl)({
23
+ type: 'tabs-transfer-picker'
24
+ })
25
+ ], TabsTransferPickerRenderer);
26
+ return TabsTransferPickerRenderer;
27
+ }(Transfer_1.BaseTransferRenderer));
28
+ exports.TabsTransferPickerRenderer = TabsTransferPickerRenderer;
29
+ //# sourceMappingURL=./renderers/Form/TabsTransferPicker.js.map
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": 3,
3
+ "file": "TabsTransferPicker.js",
4
+ "sourceRoot": "",
5
+ "sources": [
6
+ "/src/renderers/Form/TabsTransferPicker.tsx"
7
+ ],
8
+ "names": [],
9
+ "mappings": ";;;;AAAA,qCAImB;AACnB,6DAA0B;AAE1B,kFAA+C;AAC/C,uCAAgD;AAIhD,wGAAqE;AAgErE;IAAgD,2DAAuC;IAAvF;;IA8CA,CAAC;IA7CC,2CAAM,GAAN;QACQ,IAAA,KAkBF,IAAI,CAAC,KAAK,EAjBZ,SAAS,eAAA,EACG,EAAE,gBAAA,EACd,OAAO,aAAA,EACP,eAAe,qBAAA,EACf,QAAQ,cAAA,EACR,OAAO,aAAA,EACP,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,SAAS,eAAA,EACT,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,OAAO,aAAA,EACP,QAAQ,cAAA,EACR,WAAW,iBACC,CAAC;QAEf,OAAO,CACL,uCAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC;YAClD,8BAAC,4BAAkB,IACjB,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACpD,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,GACxB;YAEF,8BAAC,iBAAO,IAAC,OAAO,QAAC,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,OAAO,GAAI,CACzC,CACP,CAAC;IACJ,CAAC;IA7CU,0BAA0B;QAHtC,IAAA,wBAAc,EAAC;YACd,IAAI,EAAE,sBAAsB;SAC7B,CAAC;OACW,0BAA0B,CA8CtC;IAAD,iCAAC;CAAA,AA9CD,CAAgD,+BAAoB,GA8CnE;AA9CY,gEAA0B",
10
+ "sourcesContent": [
11
+ "import {\n OptionsControlProps,\n OptionsControl,\n FormOptionsControl\n} from './Options';\nimport React from 'react';\nimport {Api} from '../../types';\nimport Spinner from '../../components/Spinner';\nimport {BaseTransferRenderer} from './Transfer';\nimport TabsTransfer from '../../components/TabsTransfer';\nimport {SchemaApi} from '../../Schema';\nimport TransferPicker from '../../components/TransferPicker';\nimport TabsTransferPicker from '../../components/TabsTransferPicker';\n\n/**\n * TabsTransferPicker 穿梭器的弹框形态\n * 文档:https://baidu.gitee.io/amis/docs/components/form/tabs-transfer-picker\n */\nexport interface TabsTransferPickerControlSchema extends FormOptionsControl {\n type: 'tabs-transfer-picker';\n\n /**\n * 是否显示剪头\n */\n showArrow?: boolean;\n\n /**\n * 可排序?\n */\n sortable?: boolean;\n\n /**\n * 搜索结果展示模式\n */\n searchResultMode?: 'table' | 'list' | 'tree' | 'chained';\n\n /**\n * 可搜索?\n */\n searchable?: boolean;\n\n /**\n * 搜索 API\n */\n searchApi?: SchemaApi;\n\n /**\n * 左侧的标题文字\n */\n selectTitle?: string;\n\n /**\n * 右侧结果的标题文字\n */\n resultTitle?: string;\n\n /**\n * 弹窗大小\n */\n pickerSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nexport interface TabsTransferProps\n extends OptionsControlProps,\n Omit<\n TabsTransferPickerControlSchema,\n | 'type'\n | 'options'\n | 'inputClassName'\n | 'className'\n | 'descriptionClassName'\n > {}\n\n@OptionsControl({\n type: 'tabs-transfer-picker'\n})\nexport class TabsTransferPickerRenderer extends BaseTransferRenderer<TabsTransferProps> {\n render() {\n const {\n className,\n classnames: cx,\n options,\n selectedOptions,\n sortable,\n loading,\n searchable,\n searchResultMode,\n showArrow,\n deferLoad,\n disabled,\n selectTitle,\n resultTitle,\n pickerSize,\n columns,\n leftMode,\n leftOptions\n } = this.props;\n\n return (\n <div className={cx('TabsTransferControl', className)}>\n <TabsTransferPicker\n value={selectedOptions}\n disabled={disabled}\n options={options}\n onChange={this.handleChange}\n option2value={this.option2value}\n sortable={sortable}\n searchResultMode={searchResultMode}\n onSearch={searchable ? this.handleSearch : undefined}\n showArrow={showArrow}\n onDeferLoad={deferLoad}\n selectTitle={selectTitle}\n resultTitle={resultTitle}\n size={pickerSize}\n leftMode={leftMode}\n leftOptions={leftOptions}\n />\n\n <Spinner overlay key=\"info\" show={loading} />\n </div>\n );\n }\n}\n"
12
+ ]
13
+ }