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
@@ -0,0 +1,120 @@
1
+ import {localeable} from '../locale';
2
+ import {themeable} from '../theme';
3
+ import {Transfer, TransferProps} from './Transfer';
4
+ import {uncontrollable} from 'uncontrollable';
5
+ import React from 'react';
6
+ import ResultBox from './ResultBox';
7
+ import {Icon} from './icons';
8
+ import InputBox from './InputBox';
9
+ import PopOverContainer from './PopOverContainer';
10
+
11
+ export interface TransferDropDownProps extends TransferProps {
12
+ // 新的属性?
13
+ multiple?: boolean;
14
+ borderMode?: 'full' | 'half' | 'none';
15
+ }
16
+
17
+ export class TransferDropDown extends Transfer<TransferDropDownProps> {
18
+ render() {
19
+ const {
20
+ classnames: cx,
21
+ value,
22
+ translate: __,
23
+ disabled,
24
+ className,
25
+ onChange,
26
+ onSearch,
27
+ multiple,
28
+ borderMode
29
+ } = this.props;
30
+ const {inputValue, searchResult} = this.state;
31
+
32
+ return (
33
+ <PopOverContainer
34
+ popOverClassName={cx('TransferDropDown-popover')}
35
+ popOverRender={({onClose}) => (
36
+ <div className={cx('TransferDropDown-content')}>
37
+ {onSearch ? (
38
+ <div className={cx('Transfer-search')}>
39
+ <InputBox
40
+ value={inputValue}
41
+ onChange={this.handleSearch}
42
+ placeholder={__('Transfer.searchKeyword')}
43
+ clearable={false}
44
+ onKeyDown={this.handleSearchKeyDown}
45
+ >
46
+ {searchResult !== null ? (
47
+ <a onClick={this.handleSeachCancel}>
48
+ <Icon icon="close" className="icon" />
49
+ </a>
50
+ ) : (
51
+ <Icon icon="search" className="icon" />
52
+ )}
53
+ </InputBox>
54
+ </div>
55
+ ) : null}
56
+ {searchResult !== null
57
+ ? this.renderSearchResult({
58
+ ...this.props,
59
+ value,
60
+ onChange: multiple
61
+ ? onChange
62
+ : (value: any) => {
63
+ onClose();
64
+ onChange?.(value);
65
+ },
66
+ multiple
67
+ })
68
+ : this.renderOptions({
69
+ ...this.props,
70
+ value,
71
+ onChange: multiple
72
+ ? onChange
73
+ : (value: any) => {
74
+ onClose();
75
+ onChange?.(value);
76
+ },
77
+ multiple
78
+ })}
79
+ </div>
80
+ )}
81
+ >
82
+ {({onClick, isOpened, ref}) => (
83
+ <ResultBox
84
+ className={cx(
85
+ 'TransferDropDown',
86
+ className,
87
+ isOpened ? 'is-active' : ''
88
+ )}
89
+ borderMode={borderMode}
90
+ allowInput={false}
91
+ result={
92
+ multiple
93
+ ? value
94
+ : value?.[0]
95
+ ? this.props.itemRender(value[0])
96
+ : null
97
+ }
98
+ onResultChange={onChange}
99
+ onResultClick={onClick}
100
+ placeholder={__('Select.placeholder')}
101
+ disabled={disabled}
102
+ ref={ref}
103
+ >
104
+ <span className={cx('TransferDropDown-icon')}>
105
+ <Icon icon="caret" className="icon" />
106
+ </span>
107
+ </ResultBox>
108
+ )}
109
+ </PopOverContainer>
110
+ );
111
+ }
112
+ }
113
+
114
+ export default themeable(
115
+ localeable(
116
+ uncontrollable(TransferDropDown, {
117
+ value: 'onChange'
118
+ })
119
+ )
120
+ );
@@ -0,0 +1,91 @@
1
+ import {localeable} from '../locale';
2
+ import {themeable} from '../theme';
3
+ import Transfer, {TransferProps} from './Transfer';
4
+ import {uncontrollable} from 'uncontrollable';
5
+ import React from 'react';
6
+ import ResultBox from './ResultBox';
7
+ import {Icon} from './icons';
8
+ import PickerContainer from './PickerContainer';
9
+ import {autobind} from '../utils/helper';
10
+
11
+ export interface TransferPickerProps extends Omit<TransferProps, 'itemRender'> {
12
+ // 新的属性?
13
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
14
+
15
+ /**
16
+ * 边框模式,全边框,还是半边框,或者没边框。
17
+ */
18
+ borderMode?: 'full' | 'half' | 'none';
19
+ }
20
+
21
+ export class TransferPicker extends React.Component<TransferPickerProps> {
22
+ @autobind
23
+ handleClose() {
24
+ this.setState({
25
+ inputValue: '',
26
+ searchResult: null
27
+ });
28
+ }
29
+
30
+ @autobind
31
+ handleConfirm(value: any) {
32
+ this.props.onChange?.(value);
33
+ this.handleClose();
34
+ }
35
+
36
+ render() {
37
+ const {
38
+ classnames: cx,
39
+ value,
40
+ translate: __,
41
+ disabled,
42
+ className,
43
+ onChange,
44
+ size,
45
+ borderMode,
46
+ ...rest
47
+ } = this.props;
48
+
49
+ return (
50
+ <PickerContainer
51
+ title={__('Select.placeholder')}
52
+ popOverRender={({onClose, value, onChange}) => {
53
+ return <Transfer {...rest} value={value} onChange={onChange} />;
54
+ }}
55
+ value={value}
56
+ onConfirm={this.handleConfirm}
57
+ onCancel={this.handleClose}
58
+ size={size}
59
+ >
60
+ {({onClick, isOpened}) => (
61
+ <ResultBox
62
+ className={cx(
63
+ 'TransferPicker',
64
+ className,
65
+ isOpened ? 'is-active' : ''
66
+ )}
67
+ allowInput={false}
68
+ result={value}
69
+ onResultChange={onChange}
70
+ onResultClick={onClick}
71
+ placeholder={__('Select.placeholder')}
72
+ disabled={disabled}
73
+ borderMode={borderMode}
74
+ >
75
+ <span className={cx('TransferPicker-icon')}>
76
+ <Icon icon="pencil" className="icon" />
77
+ </span>
78
+ </ResultBox>
79
+ )}
80
+ </PickerContainer>
81
+ );
82
+ }
83
+ }
84
+
85
+ export default themeable(
86
+ localeable(
87
+ uncontrollable(TransferPicker, {
88
+ value: 'onChange'
89
+ })
90
+ )
91
+ );
@@ -24,6 +24,20 @@ import Checkbox from './Checkbox';
24
24
  import {LocaleProps, localeable} from '../locale';
25
25
  import Spinner from './Spinner';
26
26
 
27
+ interface IDropIndicator {
28
+ left: number;
29
+ top: number;
30
+ width: number;
31
+ height?: number;
32
+ }
33
+
34
+ export interface IDropInfo {
35
+ dragNode: Option | null;
36
+ node: Option;
37
+ position: 'top' | 'bottom' | 'self';
38
+ indicator: IDropIndicator;
39
+ }
40
+
27
41
  interface TreeSelectorProps extends ThemeProps, LocaleProps {
28
42
  highlightTxt?: string;
29
43
 
@@ -97,6 +111,8 @@ interface TreeSelectorProps extends ThemeProps, LocaleProps {
97
111
  onDelete?: (value: Option) => void;
98
112
  onDeferLoad?: (option: Option) => void;
99
113
  onExpandTree?: (nodePathArr: any[]) => void;
114
+ draggable?: boolean;
115
+ onMove?: (dropInfo: IDropInfo) => void;
100
116
  }
101
117
 
102
118
  interface TreeSelectorState {
@@ -106,6 +122,9 @@ interface TreeSelectorState {
106
122
  isAdding: boolean;
107
123
  isEditing: boolean;
108
124
  editingItem: Option | null;
125
+
126
+ // 拖拽指示器
127
+ dropIndicator?: IDropIndicator;
109
128
  }
110
129
 
111
130
  export class TreeSelector extends React.Component<
@@ -146,6 +165,16 @@ export class TreeSelector extends React.Component<
146
165
  };
147
166
 
148
167
  unfolded: WeakMap<Object, boolean> = new WeakMap();
168
+ dragNode: Option | null;
169
+ dropInfo: IDropInfo | null;
170
+ startPoint: {
171
+ x: number;
172
+ y: number;
173
+ } = {
174
+ x: 0,
175
+ y: 0
176
+ };
177
+ root = React.createRef<HTMLDivElement>();
149
178
 
150
179
  constructor(props: TreeSelectorProps) {
151
180
  super(props);
@@ -168,7 +197,8 @@ export class TreeSelector extends React.Component<
168
197
  addingParent: null,
169
198
  isAdding: false,
170
199
  isEditing: false,
171
- editingItem: null
200
+ editingItem: null,
201
+ dropIndicator: undefined
172
202
  };
173
203
 
174
204
  this.syncUnFolded(props);
@@ -603,6 +633,129 @@ export class TreeSelector extends React.Component<
603
633
  );
604
634
  }
605
635
 
636
+ getOffsetPosition(element: HTMLElement) {
637
+ let left = 0;
638
+ let top = 0;
639
+
640
+ while (element.offsetParent) {
641
+ left += element.offsetLeft;
642
+ top += element.offsetTop;
643
+ element = element.offsetParent as HTMLElement;
644
+ }
645
+ return {left, top};
646
+ }
647
+
648
+ @autobind
649
+ getDropInfo(e: React.DragEvent<Element>, node: Option): IDropInfo {
650
+ let rect = e.currentTarget.getBoundingClientRect();
651
+
652
+ const dragNode = this.dragNode;
653
+ const deltaX = Math.min(50, rect.width * 0.3);
654
+ const gap = node?.children?.length ? 0 : 16;
655
+
656
+ // 计算相对位置
657
+ let offset = this.getOffsetPosition(this.root.current!);
658
+ let targetOffset = this.getOffsetPosition(e.currentTarget as HTMLElement);
659
+ let left = targetOffset.left - offset.left;
660
+ let top = targetOffset.top - offset.top;
661
+
662
+ let {clientX, clientY} = e;
663
+
664
+ let position: IDropInfo['position'] =
665
+ clientY >= rect.top + rect.height / 2 ? 'bottom' : 'top';
666
+ let indicator;
667
+ if (position === 'bottom' && clientX >= this.startPoint.x + deltaX) {
668
+ position = 'self';
669
+ indicator = {
670
+ top: top,
671
+ left: left,
672
+ width: rect.width,
673
+ height: rect.height
674
+ };
675
+ } else {
676
+ indicator = {
677
+ top: position === 'bottom' ? top + rect.height : top,
678
+ left: left + gap,
679
+ width: rect.width - gap
680
+ };
681
+ }
682
+
683
+ return {
684
+ node,
685
+ dragNode,
686
+ position,
687
+ indicator
688
+ };
689
+ }
690
+
691
+ @autobind
692
+ updateDropIndicator(e: React.DragEvent<Element>, node: Option) {
693
+ const gap = node?.children?.length ? 0 : 16;
694
+ this.dropInfo = this.getDropInfo(e, node);
695
+ let {dragNode, indicator} = this.dropInfo;
696
+ if (node === dragNode) {
697
+ this.setState({dropIndicator: undefined});
698
+ return;
699
+ }
700
+ this.setState({
701
+ dropIndicator: indicator
702
+ });
703
+ }
704
+
705
+ @autobind
706
+ onDragStart(node: Option) {
707
+ let draggable = this.props.draggable;
708
+ return (e: React.DragEvent<Element>) => {
709
+ if (draggable) {
710
+ e.dataTransfer.effectAllowed = 'copyMove';
711
+
712
+ this.dragNode = node;
713
+ this.dropInfo = null;
714
+ this.startPoint = {
715
+ x: e.clientX,
716
+ y: e.clientY
717
+ };
718
+
719
+ if (node?.children?.length) {
720
+ this.unfolded.set(node, false);
721
+ this.forceUpdate();
722
+ }
723
+ } else {
724
+ this.dragNode = null;
725
+ this.dropInfo = null;
726
+ }
727
+ e.stopPropagation();
728
+ };
729
+ }
730
+
731
+ @autobind
732
+ onDragOver(node: Option) {
733
+ return (e: React.DragEvent<Element>) => {
734
+ if (!this.dragNode) {
735
+ return;
736
+ }
737
+ this.updateDropIndicator(e, node);
738
+ e.preventDefault();
739
+ };
740
+ }
741
+
742
+ @autobind
743
+ onDragEnd(dragNode: Option) {
744
+ return (e: React.DragEvent<Element>) => {
745
+ this.setState({
746
+ dropIndicator: undefined
747
+ });
748
+ let node = this.dropInfo?.node;
749
+ if (!this.dropInfo || !node || dragNode === node) {
750
+ return;
751
+ }
752
+ this.props.onMove?.(this.dropInfo);
753
+ this.dragNode = null;
754
+ this.dropInfo = null;
755
+ e.preventDefault();
756
+ };
757
+ }
758
+
606
759
  @autobind
607
760
  renderList(
608
761
  list: Options,
@@ -633,7 +786,8 @@ export class TreeSelector extends React.Component<
633
786
  createTip,
634
787
  editTip,
635
788
  removeTip,
636
- translate: __
789
+ translate: __,
790
+ draggable
637
791
  } = this.props;
638
792
  const {
639
793
  value: stateValue,
@@ -729,7 +883,17 @@ export class TreeSelector extends React.Component<
729
883
  'is-checked': checked,
730
884
  'is-disabled': nodeDisabled
731
885
  })}
886
+ draggable={draggable}
887
+ onDragStart={this.onDragStart(item)}
888
+ onDragOver={this.onDragOver(item)}
889
+ onDragEnd={this.onDragEnd(item)}
732
890
  >
891
+ {draggable && (
892
+ <a className={cx('Tree-itemDrager drag-bar')}>
893
+ <Icon icon="drag-bar" className="icon" />
894
+ </a>
895
+ )}
896
+
733
897
  {item.loading ? (
734
898
  <Spinner
735
899
  size="sm"
@@ -756,7 +920,7 @@ export class TreeSelector extends React.Component<
756
920
  <i
757
921
  className={cx(
758
922
  `Tree-itemIcon ${
759
- (childrenItems ? 'Tree-folderIcon' : 'Tree-leafIcon')
923
+ childrenItems ? 'Tree-folderIcon' : 'Tree-leafIcon'
760
924
  }`
761
925
  )}
762
926
  onClick={() =>
@@ -766,9 +930,11 @@ export class TreeSelector extends React.Component<
766
930
  : this.handleSelect(item))
767
931
  }
768
932
  >
769
- {getIcon(iconValue)
770
- ? <Icon icon={iconValue} className="icon"/>
771
- : <i className={iconValue}></i>}
933
+ {getIcon(iconValue) ? (
934
+ <Icon icon={iconValue} className="icon" />
935
+ ) : (
936
+ <i className={iconValue}></i>
937
+ )}
772
938
  </i>
773
939
  ) : null}
774
940
 
@@ -872,10 +1038,19 @@ export class TreeSelector extends React.Component<
872
1038
  rootCreatable,
873
1039
  rootCreateTip,
874
1040
  disabled,
1041
+ draggable,
875
1042
  translate: __
876
1043
  } = this.props;
877
1044
  let options = this.props.options;
878
- const {value, isAdding, addingParent, isEditing, inputValue} = this.state;
1045
+ const {
1046
+ value,
1047
+ isAdding,
1048
+ addingParent,
1049
+ isEditing,
1050
+ inputValue,
1051
+ dropIndicator
1052
+ } = this.state;
1053
+
879
1054
  let addBtn = null;
880
1055
 
881
1056
  if (creatable && rootCreatable !== false && hideRoot) {
@@ -896,8 +1071,10 @@ export class TreeSelector extends React.Component<
896
1071
  <div
897
1072
  className={cx(`Tree ${className || ''}`, {
898
1073
  'Tree--outline': showOutline,
899
- 'is-disabled': disabled
1074
+ 'is-disabled': disabled,
1075
+ 'is-draggable': draggable
900
1076
  })}
1077
+ ref={this.root}
901
1078
  >
902
1079
  {(options && options.length) || addBtn || hideRoot === false ? (
903
1080
  <ul className={cx('Tree-list')}>
@@ -957,6 +1134,15 @@ export class TreeSelector extends React.Component<
957
1134
  ) : (
958
1135
  <div className={cx('Tree-placeholder')}>{placeholder}</div>
959
1136
  )}
1137
+
1138
+ {dropIndicator && (
1139
+ <div
1140
+ className={cx('Tree-dropIndicator', {
1141
+ 'Tree-dropIndicator--hover': !!dropIndicator.height
1142
+ })}
1143
+ style={dropIndicator}
1144
+ />
1145
+ )}
960
1146
  </div>
961
1147
  );
962
1148
  }
@@ -1,4 +1,4 @@
1
- import {BaseCheckboxes, BaseCheckboxesProps} from './Checkboxes';
1
+ import {BaseSelection, BaseSelectionProps} from './Selection';
2
2
  import {themeable} from '../theme';
3
3
  import React from 'react';
4
4
  import {uncontrollable} from 'uncontrollable';
@@ -9,25 +9,25 @@ import Spinner from './Spinner';
9
9
  import {localeable} from '../locale';
10
10
  import {Icon} from './icons';
11
11
 
12
- export interface TreeCheckboxesProps extends BaseCheckboxesProps {
12
+ export interface TreeSelectionProps extends BaseSelectionProps {
13
13
  expand?: 'all' | 'first' | 'root' | 'none';
14
14
  }
15
15
 
16
- export interface TreeCheckboxesState {
16
+ export interface TreeSelectionState {
17
17
  expanded: Array<string>;
18
18
  }
19
19
 
20
- export class TreeCheckboxes extends BaseCheckboxes<
21
- TreeCheckboxesProps,
22
- TreeCheckboxesState
20
+ export class TreeSelection extends BaseSelection<
21
+ TreeSelectionProps,
22
+ TreeSelectionState
23
23
  > {
24
24
  valueArray: Array<Option>;
25
- state: TreeCheckboxesState = {
25
+ state: TreeSelectionState = {
26
26
  expanded: []
27
27
  };
28
28
 
29
29
  static defaultProps = {
30
- ...BaseCheckboxes.defaultProps,
30
+ ...BaseSelection.defaultProps,
31
31
  expand: 'first' as 'first'
32
32
  };
33
33
 
@@ -35,7 +35,7 @@ export class TreeCheckboxes extends BaseCheckboxes<
35
35
  this.syncExpanded();
36
36
  }
37
37
 
38
- componentDidUpdate(prevProps: TreeCheckboxesProps) {
38
+ componentDidUpdate(prevProps: TreeSelectionProps) {
39
39
  const props = this.props;
40
40
 
41
41
  if (
@@ -82,7 +82,9 @@ export class TreeCheckboxes extends BaseCheckboxes<
82
82
  option2value,
83
83
  options,
84
84
  onDeferLoad,
85
- disabled
85
+ disabled,
86
+ multiple,
87
+ clearable
86
88
  } = this.props;
87
89
 
88
90
  if (disabled || option.disabled) {
@@ -92,12 +94,13 @@ export class TreeCheckboxes extends BaseCheckboxes<
92
94
  return;
93
95
  }
94
96
 
95
- let valueArray = BaseCheckboxes.value2array(value, options, option2value);
97
+ let valueArray = BaseSelection.value2array(value, options, option2value);
96
98
 
97
99
  if (
98
100
  option.value === void 0 &&
99
101
  Array.isArray(option.children) &&
100
- option.children.length
102
+ option.children.length &&
103
+ multiple
101
104
  ) {
102
105
  const someCheckedFn = (child: Option) =>
103
106
  (Array.isArray(child.children) && child.children.length
@@ -124,10 +127,12 @@ export class TreeCheckboxes extends BaseCheckboxes<
124
127
  } else {
125
128
  let idx = valueArray.indexOf(option);
126
129
 
127
- if (~idx) {
130
+ if (~idx && (multiple || clearable)) {
128
131
  valueArray.splice(idx, 1);
129
- } else {
132
+ } else if (multiple) {
130
133
  valueArray.push(option);
134
+ } else {
135
+ valueArray = [option];
131
136
  }
132
137
  }
133
138
 
@@ -135,7 +140,7 @@ export class TreeCheckboxes extends BaseCheckboxes<
135
140
  ? valueArray.map(item => option2value(item))
136
141
  : valueArray;
137
142
 
138
- onChange && onChange(newValue);
143
+ onChange && onChange(multiple ? newValue : newValue[0]);
139
144
  }
140
145
 
141
146
  toggleCollapsed(option: Option, index: string) {
@@ -163,7 +168,8 @@ export class TreeCheckboxes extends BaseCheckboxes<
163
168
  disabled,
164
169
  classnames: cx,
165
170
  itemClassName,
166
- itemRender
171
+ itemRender,
172
+ multiple
167
173
  } = this.props;
168
174
  const id = indexes.join('-');
169
175
  const valueArray = this.valueArray;
@@ -204,7 +210,7 @@ export class TreeCheckboxes extends BaseCheckboxes<
204
210
  <div
205
211
  key={index}
206
212
  className={cx(
207
- 'TreeCheckboxes-item',
213
+ 'TreeSelection-item',
208
214
  disabled || option.disabled || (option.defer && option.loading)
209
215
  ? 'is-disabled'
210
216
  : '',
@@ -213,9 +219,10 @@ export class TreeCheckboxes extends BaseCheckboxes<
213
219
  >
214
220
  <div
215
221
  className={cx(
216
- 'TreeCheckboxes-itemInner',
222
+ 'TreeSelection-itemInner',
217
223
  itemClassName,
218
- option.className
224
+ option.className,
225
+ checked ? 'is-active' : ''
219
226
  )}
220
227
  onClick={() => this.toggleOption(option)}
221
228
  >
@@ -231,13 +238,13 @@ export class TreeCheckboxes extends BaseCheckboxes<
231
238
  </a>
232
239
  ) : null}
233
240
 
234
- <div className={cx('TreeCheckboxes-itemLabel')}>
241
+ <div className={cx('TreeSelection-itemLabel')}>
235
242
  {itemRender(option)}
236
243
  </div>
237
244
 
238
245
  {option.defer && option.loading ? <Spinner show size="sm" /> : null}
239
246
 
240
- {!option.defer || option.loaded ? (
247
+ {multiple && (!option.defer || option.loaded) ? (
241
248
  <Checkbox
242
249
  size="sm"
243
250
  checked={checked}
@@ -249,7 +256,7 @@ export class TreeCheckboxes extends BaseCheckboxes<
249
256
  ) : null}
250
257
  </div>
251
258
  {hasChildren ? (
252
- <div className={cx('TreeCheckboxes-sublist')}>
259
+ <div className={cx('TreeSelection-sublist')}>
253
260
  {option.children!.map((option, key) =>
254
261
  this.renderItem(option, key, indexes.concat(key))
255
262
  )}
@@ -270,7 +277,7 @@ export class TreeCheckboxes extends BaseCheckboxes<
270
277
  translate: __
271
278
  } = this.props;
272
279
 
273
- this.valueArray = BaseCheckboxes.value2array(value, options, option2value);
280
+ this.valueArray = BaseSelection.value2array(value, options, option2value);
274
281
  let body: Array<React.ReactNode> = [];
275
282
 
276
283
  if (Array.isArray(options) && options.length) {
@@ -278,11 +285,11 @@ export class TreeCheckboxes extends BaseCheckboxes<
278
285
  }
279
286
 
280
287
  return (
281
- <div className={cx('TreeCheckboxes', className)}>
288
+ <div className={cx('TreeSelection', className)}>
282
289
  {body && body.length ? (
283
290
  body
284
291
  ) : (
285
- <div className={cx('TreeCheckboxes-placeholder')}>
292
+ <div className={cx('TreeSelection-placeholder')}>
286
293
  {__(placeholder)}
287
294
  </div>
288
295
  )}
@@ -293,7 +300,7 @@ export class TreeCheckboxes extends BaseCheckboxes<
293
300
 
294
301
  export default themeable(
295
302
  localeable(
296
- uncontrollable(TreeCheckboxes, {
303
+ uncontrollable(TreeSelection, {
297
304
  value: 'onChange'
298
305
  })
299
306
  )