amis 1.4.2-beta.1 → 1.4.2-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/lib/Schema.d.ts +9 -2
  2. package/lib/Schema.js.map +1 -1
  3. package/lib/components/AnchorNav.d.ts +22 -21
  4. package/lib/components/AnchorNav.js +7 -3
  5. package/lib/components/AnchorNav.js.map +2 -2
  6. package/lib/components/ArrayInput.d.ts +84 -84
  7. package/lib/components/AssociatedSelection.d.ts +930 -0
  8. package/lib/components/AssociatedSelection.js +89 -0
  9. package/lib/components/AssociatedSelection.js.map +13 -0
  10. package/lib/components/Badge.js +2 -2
  11. package/lib/components/Badge.js.map +2 -2
  12. package/lib/components/{ChainedCheckboxes.d.ts → ChainedSelection.d.ts} +267 -98
  13. package/lib/components/{ChainedCheckboxes.js → ChainedSelection.js} +30 -24
  14. package/lib/components/ChainedSelection.js.map +13 -0
  15. package/lib/components/ColorPicker.d.ts +84 -84
  16. package/lib/components/DatePicker.d.ts +84 -84
  17. package/lib/components/DateRangePicker.d.ts +84 -84
  18. package/lib/components/Editor.d.ts +84 -84
  19. package/lib/components/GroupedSelection.d.ts +907 -0
  20. package/lib/components/GroupedSelection.js +48 -0
  21. package/lib/components/GroupedSelection.js.map +13 -0
  22. package/lib/components/Link.d.ts +29 -36
  23. package/lib/components/Link.js +14 -15
  24. package/lib/components/Link.js.map +2 -2
  25. package/lib/components/ListGroup.d.ts +21 -21
  26. package/lib/components/ModalManager.js +1 -1
  27. package/lib/components/ModalManager.js.map +2 -2
  28. package/lib/components/MonthRangePicker.d.ts +84 -84
  29. package/lib/components/NumberInput.d.ts +20 -20
  30. package/lib/components/PickerColumn.d.ts +514 -0
  31. package/lib/components/PickerColumn.js +279 -0
  32. package/lib/components/PickerColumn.js.map +13 -0
  33. package/lib/components/PickerContainer.d.ts +513 -0
  34. package/lib/components/PickerContainer.js +96 -0
  35. package/lib/components/PickerContainer.js.map +13 -0
  36. package/lib/components/Radios.d.ts +22 -21
  37. package/lib/components/Radios.js +1 -0
  38. package/lib/components/Radios.js.map +2 -2
  39. package/lib/components/Rating.d.ts +21 -21
  40. package/lib/components/ResultBox.d.ts +84 -84
  41. package/lib/components/SearchBox.d.ts +84 -84
  42. package/lib/components/SearchBox.js +4 -4
  43. package/lib/components/SearchBox.js.map +2 -2
  44. package/lib/components/Select.d.ts +245 -237
  45. package/lib/components/Select.js +25 -4
  46. package/lib/components/Select.js.map +2 -2
  47. package/lib/components/{Checkboxes.d.ts → Selection.d.ts} +273 -98
  48. package/lib/components/Selection.js +134 -0
  49. package/lib/components/Selection.js.map +13 -0
  50. package/lib/components/{TableCheckboxes.d.ts → TableSelection.d.ts} +266 -96
  51. package/lib/components/{TableCheckboxes.js → TableSelection.js} +30 -30
  52. package/lib/components/TableSelection.js.map +13 -0
  53. package/lib/components/Tabs.d.ts +20 -20
  54. package/lib/components/TabsTransfer.d.ts +84 -84
  55. package/lib/components/TabsTransfer.js +9 -9
  56. package/lib/components/TabsTransfer.js.map +2 -2
  57. package/lib/components/TabsTransferPicker.d.ts +489 -0
  58. package/lib/components/TabsTransferPicker.js +60 -0
  59. package/lib/components/TabsTransferPicker.js.map +13 -0
  60. package/lib/components/Transfer.d.ts +908 -274
  61. package/lib/components/Transfer.js +31 -24
  62. package/lib/components/Transfer.js.map +2 -2
  63. package/lib/components/TransferDropDown.d.ts +487 -0
  64. package/lib/components/TransferDropDown.js +59 -0
  65. package/lib/components/TransferDropDown.js.map +13 -0
  66. package/lib/components/TransferPicker.d.ts +489 -0
  67. package/lib/components/TransferPicker.js +60 -0
  68. package/lib/components/TransferPicker.js.map +13 -0
  69. package/lib/components/Tree.d.ts +84 -84
  70. package/lib/components/{TreeCheckboxes.d.ts → TreeSelection.d.ts} +269 -99
  71. package/lib/components/{TreeCheckboxes.js → TreeSelection.js} +36 -32
  72. package/lib/components/TreeSelection.js.map +13 -0
  73. package/lib/components/WithRemoteConfig.js +1 -1
  74. package/lib/components/WithRemoteConfig.js.map +2 -2
  75. package/lib/components/condition-builder/Field.js +5 -2
  76. package/lib/components/condition-builder/Field.js.map +2 -2
  77. package/lib/components/condition-builder/Func.js +2 -2
  78. package/lib/components/condition-builder/Func.js.map +2 -2
  79. package/lib/components/condition-builder/InputSwitch.js +2 -2
  80. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  81. package/lib/components/condition-builder/Item.js +3 -3
  82. package/lib/components/condition-builder/Item.js.map +2 -2
  83. package/lib/components/index.d.ts +8 -8
  84. package/lib/components/index.js +16 -16
  85. package/lib/components/index.js.map +2 -2
  86. package/lib/envOverwrite.js.map +2 -2
  87. package/lib/factory.d.ts +4 -0
  88. package/lib/factory.js +4 -2
  89. package/lib/factory.js.map +2 -2
  90. package/lib/helper.css.map +1 -1
  91. package/lib/hooks/index.d.ts +5 -0
  92. package/lib/hooks/index.js +14 -0
  93. package/lib/hooks/index.js.map +13 -0
  94. package/lib/hooks/use-set-state.d.ts +2 -0
  95. package/lib/hooks/use-set-state.js +15 -0
  96. package/lib/hooks/use-set-state.js.map +13 -0
  97. package/lib/hooks/use-touch.d.ts +16 -0
  98. package/lib/hooks/use-touch.js +73 -0
  99. package/lib/hooks/use-touch.js.map +13 -0
  100. package/lib/hooks/use-update-effect.d.ts +3 -0
  101. package/lib/hooks/use-update-effect.js +17 -0
  102. package/lib/hooks/use-update-effect.js.map +13 -0
  103. package/lib/index.d.ts +3 -0
  104. package/lib/index.js +4 -1
  105. package/lib/index.js.map +2 -2
  106. package/lib/locale/de-DE.js +2 -0
  107. package/lib/locale/de-DE.js.map +2 -2
  108. package/lib/locale/en-US.js +2 -0
  109. package/lib/locale/en-US.js.map +2 -2
  110. package/lib/locale/zh-CN.js +4 -2
  111. package/lib/locale/zh-CN.js.map +2 -2
  112. package/lib/renderers/Action.d.ts +4 -3
  113. package/lib/renderers/Action.js +17 -4
  114. package/lib/renderers/Action.js.map +2 -2
  115. package/lib/renderers/AnchorNav.d.ts +1 -0
  116. package/lib/renderers/AnchorNav.js +2 -2
  117. package/lib/renderers/AnchorNav.js.map +2 -2
  118. package/lib/renderers/Avatar.js +3 -3
  119. package/lib/renderers/Avatar.js.map +2 -2
  120. package/lib/renderers/Breadcrumb.js +1 -1
  121. package/lib/renderers/Breadcrumb.js.map +2 -2
  122. package/lib/renderers/CRUD.d.ts +9 -0
  123. package/lib/renderers/CRUD.js +24 -4
  124. package/lib/renderers/CRUD.js.map +2 -2
  125. package/lib/renderers/Card.d.ts +4 -0
  126. package/lib/renderers/Card.js +29 -23
  127. package/lib/renderers/Card.js.map +2 -2
  128. package/lib/renderers/Chart.js +1 -1
  129. package/lib/renderers/Chart.js.map +2 -2
  130. package/lib/renderers/Collapse.js +3 -2
  131. package/lib/renderers/Collapse.js.map +2 -2
  132. package/lib/renderers/DropDownButton.js +1 -1
  133. package/lib/renderers/DropDownButton.js.map +2 -2
  134. package/lib/renderers/Form/DiffEditor.d.ts +4 -3
  135. package/lib/renderers/Form/Editor.d.ts +3 -2
  136. package/lib/renderers/Form/InputCity.d.ts +84 -84
  137. package/lib/renderers/Form/InputCity.js +7 -6
  138. package/lib/renderers/Form/InputCity.js.map +2 -2
  139. package/lib/renderers/Form/InputColor.d.ts +84 -84
  140. package/lib/renderers/Form/InputFile.js +10 -4
  141. package/lib/renderers/Form/InputFile.js.map +2 -2
  142. package/lib/renderers/Form/InputImage.js +11 -4
  143. package/lib/renderers/Form/InputImage.js.map +2 -2
  144. package/lib/renderers/Form/Item.d.ts +1 -1
  145. package/lib/renderers/Form/Item.js.map +1 -1
  146. package/lib/renderers/Form/Options.js +13 -3
  147. package/lib/renderers/Form/Options.js.map +2 -2
  148. package/lib/renderers/Form/Select.d.ts +41 -4
  149. package/lib/renderers/Form/Select.js +23 -3
  150. package/lib/renderers/Form/Select.js.map +2 -2
  151. package/lib/renderers/Form/TabsTransferPicker.d.ts +48 -0
  152. package/lib/renderers/Form/TabsTransferPicker.js +29 -0
  153. package/lib/renderers/Form/TabsTransferPicker.js.map +13 -0
  154. package/lib/renderers/Form/Transfer.js +3 -2
  155. package/lib/renderers/Form/Transfer.js.map +2 -2
  156. package/lib/renderers/Form/TransferPicker.d.ts +48 -0
  157. package/lib/renderers/Form/TransferPicker.js +29 -0
  158. package/lib/renderers/Form/TransferPicker.js.map +13 -0
  159. package/lib/renderers/Form/TreeSelect.js +2 -2
  160. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  161. package/lib/renderers/Form/index.js +1 -1
  162. package/lib/renderers/Form/index.js.map +2 -2
  163. package/lib/renderers/Form/wrapControl.js +13 -1
  164. package/lib/renderers/Form/wrapControl.js.map +2 -2
  165. package/lib/renderers/IFrame.js +1 -3
  166. package/lib/renderers/IFrame.js.map +2 -2
  167. package/lib/renderers/Json.d.ts +4 -0
  168. package/lib/renderers/Json.js +4 -13
  169. package/lib/renderers/Json.js.map +2 -2
  170. package/lib/renderers/Link.d.ts +4 -2
  171. package/lib/renderers/Link.js +15 -6
  172. package/lib/renderers/Link.js.map +2 -2
  173. package/lib/renderers/List.js +1 -1
  174. package/lib/renderers/List.js.map +2 -2
  175. package/lib/renderers/Mapping.d.ts +9 -2
  176. package/lib/renderers/Mapping.js +18 -6
  177. package/lib/renderers/Mapping.js.map +2 -2
  178. package/lib/renderers/Nav.d.ts +21 -21
  179. package/lib/renderers/Nav.js +39 -21
  180. package/lib/renderers/Nav.js.map +2 -2
  181. package/lib/renderers/Portlet.d.ts +125 -0
  182. package/lib/renderers/Portlet.js +156 -0
  183. package/lib/renderers/Portlet.js.map +13 -0
  184. package/lib/renderers/Property.js +2 -1
  185. package/lib/renderers/Property.js.map +2 -2
  186. package/lib/renderers/SearchBox.d.ts +6 -1
  187. package/lib/renderers/SearchBox.js +19 -5
  188. package/lib/renderers/SearchBox.js.map +2 -2
  189. package/lib/renderers/Table/TableContent.d.ts +4 -1
  190. package/lib/renderers/Table/TableContent.js +21 -1
  191. package/lib/renderers/Table/TableContent.js.map +2 -2
  192. package/lib/renderers/Table/index.d.ts +5 -1
  193. package/lib/renderers/Table/index.js +64 -29
  194. package/lib/renderers/Table/index.js.map +2 -2
  195. package/lib/renderers/Tabs.js +9 -1
  196. package/lib/renderers/Tabs.js.map +2 -2
  197. package/lib/renderers/WebComponent.js +1 -1
  198. package/lib/renderers/WebComponent.js.map +2 -2
  199. package/lib/store/combo.d.ts +2 -16
  200. package/lib/store/crud.js +3 -7
  201. package/lib/store/crud.js.map +2 -2
  202. package/lib/store/form.d.ts +1 -1
  203. package/lib/store/form.js +5 -6
  204. package/lib/store/form.js.map +2 -2
  205. package/lib/store/service.js +5 -4
  206. package/lib/store/service.js.map +2 -2
  207. package/lib/store/table.d.ts +2 -2
  208. package/lib/themes/ang-ie11.css +422 -149
  209. package/lib/themes/ang.css +422 -149
  210. package/lib/themes/ang.css.map +1 -1
  211. package/lib/themes/antd-ie11.css +422 -149
  212. package/lib/themes/antd.css +422 -149
  213. package/lib/themes/antd.css.map +1 -1
  214. package/lib/themes/cxd-ie11.css +456 -182
  215. package/lib/themes/cxd.css +456 -182
  216. package/lib/themes/cxd.css.map +1 -1
  217. package/lib/themes/dark-ie11.css +422 -149
  218. package/lib/themes/dark.css +422 -149
  219. package/lib/themes/dark.css.map +1 -1
  220. package/lib/themes/default.css +456 -182
  221. package/lib/themes/default.css.map +1 -1
  222. package/lib/types.d.ts +37 -0
  223. package/lib/types.js +0 -5
  224. package/lib/types.js.map +2 -2
  225. package/lib/utils/api.d.ts +3 -2
  226. package/lib/utils/api.js +28 -12
  227. package/lib/utils/api.js.map +2 -2
  228. package/lib/utils/dom.d.ts +4 -0
  229. package/lib/utils/dom.js +11 -1
  230. package/lib/utils/dom.js.map +2 -2
  231. package/lib/utils/helper.d.ts +2 -0
  232. package/lib/utils/helper.js +11 -2
  233. package/lib/utils/helper.js.map +2 -2
  234. package/lib/utils/icon.js +3 -0
  235. package/lib/utils/icon.js.map +2 -2
  236. package/package.json +1 -1
  237. package/schema.json +3038 -790
  238. package/scss/_mixins.scss +1 -3
  239. package/scss/_properties.scss +25 -1
  240. package/scss/base/_normalize.scss +2 -0
  241. package/scss/components/_anchor-nav.scss +88 -29
  242. package/scss/components/_card.scss +8 -14
  243. package/scss/components/_collapse.scss +16 -1
  244. package/scss/components/_mapping.scss +6 -0
  245. package/scss/components/_nav.scss +1 -1
  246. package/scss/components/_picker-columns.scss +123 -0
  247. package/scss/components/_popover.scss +17 -0
  248. package/scss/components/_portlet.scss +51 -0
  249. package/scss/components/_status.scss +1 -1
  250. package/scss/components/_table.scss +26 -0
  251. package/scss/components/form/_checks.scss +0 -351
  252. package/scss/components/form/_fieldset.scss +5 -1
  253. package/scss/components/form/_selection.scss +354 -0
  254. package/scss/components/form/_transfer.scss +75 -18
  255. package/scss/themes/_common.scss +4 -0
  256. package/scss/themes/_cxd-variables.scss +4 -1
  257. package/scss/themes/cxd.scss +16 -12
  258. package/sdk/ang-ie11.css +457 -152
  259. package/sdk/ang.css +480 -154
  260. package/sdk/antd-ie11.css +456 -151
  261. package/sdk/antd.css +480 -154
  262. package/sdk/charts.js +13 -13
  263. package/sdk/color-picker.js +65 -69
  264. package/sdk/cropperjs.js +2 -2
  265. package/sdk/cxd-ie11.css +496 -194
  266. package/sdk/cxd.css +517 -190
  267. package/sdk/dark-ie11.css +457 -152
  268. package/sdk/dark.css +480 -154
  269. package/sdk/exceljs.js +1 -1
  270. package/sdk/helper.css.map +1 -1
  271. package/sdk/locale/de-DE.js +2 -0
  272. package/sdk/markdown.js +69 -69
  273. package/sdk/papaparse.js +1 -1
  274. package/sdk/renderers/Form/CityDB.js +1 -1
  275. package/sdk/rest.js +20 -28
  276. package/sdk/rich-text.js +62 -62
  277. package/sdk/sdk-ie11.css +496 -194
  278. package/sdk/sdk.css +517 -190
  279. package/sdk/sdk.js +1268 -1236
  280. package/sdk/thirds/hls.js/hls.js +1 -1
  281. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  282. package/sdk/tinymce.js +57 -57
  283. package/src/Schema.ts +14 -0
  284. package/src/components/AnchorNav.tsx +15 -4
  285. package/src/components/{AssociatedCheckboxes.tsx → AssociatedSelection.tsx} +41 -37
  286. package/src/components/Badge.tsx +3 -3
  287. package/src/components/{ChainedCheckboxes.tsx → ChainedSelection.tsx} +57 -40
  288. package/src/components/{ListCheckboxes.tsx → GroupedSelection.tsx} +26 -21
  289. package/src/components/Link.tsx +28 -37
  290. package/src/components/ModalManager.ts +1 -1
  291. package/src/components/PickerColumn.tsx +429 -0
  292. package/src/components/PickerContainer.tsx +128 -0
  293. package/src/components/Radios.tsx +3 -8
  294. package/src/components/SearchBox.tsx +4 -5
  295. package/src/components/Select.tsx +57 -5
  296. package/src/components/{Checkboxes.tsx → Selection.tsx} +75 -21
  297. package/src/components/{TableCheckboxes.tsx → TableSelection.tsx} +46 -25
  298. package/src/components/TabsTransfer.tsx +13 -7
  299. package/src/components/TabsTransferPicker.tsx +85 -0
  300. package/src/components/Transfer.tsx +71 -50
  301. package/src/components/TransferDropDown.tsx +117 -0
  302. package/src/components/TransferPicker.tsx +84 -0
  303. package/src/components/{TreeCheckboxes.tsx → TreeSelection.tsx} +33 -26
  304. package/src/components/WithRemoteConfig.tsx +7 -2
  305. package/src/components/condition-builder/Field.tsx +5 -5
  306. package/src/components/condition-builder/Func.tsx +3 -3
  307. package/src/components/condition-builder/InputSwitch.tsx +3 -3
  308. package/src/components/condition-builder/Item.tsx +5 -12
  309. package/src/components/index.tsx +13 -13
  310. package/src/envOverwrite.ts +0 -1
  311. package/src/factory.tsx +18 -3
  312. package/src/hooks/index.ts +5 -0
  313. package/src/hooks/use-set-state.ts +19 -0
  314. package/src/hooks/use-touch.ts +100 -0
  315. package/src/hooks/use-update-effect.ts +16 -0
  316. package/src/index.tsx +3 -0
  317. package/src/locale/de-DE.ts +2 -0
  318. package/src/locale/en-US.ts +2 -0
  319. package/src/locale/zh-CN.ts +4 -2
  320. package/src/renderers/Action.tsx +28 -2
  321. package/src/renderers/AnchorNav.tsx +4 -0
  322. package/src/renderers/Avatar.tsx +8 -4
  323. package/src/renderers/Breadcrumb.tsx +5 -1
  324. package/src/renderers/CRUD.tsx +33 -3
  325. package/src/renderers/Card.tsx +63 -34
  326. package/src/renderers/Chart.tsx +6 -2
  327. package/src/renderers/Collapse.tsx +4 -2
  328. package/src/renderers/DropDownButton.tsx +1 -1
  329. package/src/renderers/Form/InputCity.tsx +4 -8
  330. package/src/renderers/Form/InputFile.tsx +29 -20
  331. package/src/renderers/Form/InputImage.tsx +11 -3
  332. package/src/renderers/Form/Item.tsx +1 -1
  333. package/src/renderers/Form/Options.tsx +16 -2
  334. package/src/renderers/Form/Select.tsx +144 -21
  335. package/src/renderers/Form/TabsTransferPicker.tsx +123 -0
  336. package/src/renderers/Form/Transfer.tsx +3 -2
  337. package/src/renderers/Form/TransferPicker.tsx +123 -0
  338. package/src/renderers/Form/TreeSelect.tsx +25 -0
  339. package/src/renderers/Form/index.tsx +1 -1
  340. package/src/renderers/Form/wrapControl.tsx +26 -1
  341. package/src/renderers/IFrame.tsx +2 -4
  342. package/src/renderers/Json.tsx +9 -9
  343. package/src/renderers/Link.tsx +27 -13
  344. package/src/renderers/List.tsx +1 -1
  345. package/src/renderers/Mapping.tsx +27 -11
  346. package/src/renderers/Nav.tsx +108 -60
  347. package/src/renderers/Portlet.tsx +423 -0
  348. package/src/renderers/Property.tsx +3 -2
  349. package/src/renderers/SearchBox.tsx +23 -4
  350. package/src/renderers/Table/TableContent.tsx +40 -2
  351. package/src/renderers/Table/index.tsx +87 -41
  352. package/src/renderers/Tabs.tsx +9 -1
  353. package/src/renderers/WebComponent.tsx +2 -2
  354. package/src/store/crud.ts +3 -8
  355. package/src/store/form.ts +5 -10
  356. package/src/store/service.ts +5 -4
  357. package/src/types.ts +57 -0
  358. package/src/utils/api.ts +40 -20
  359. package/src/utils/dom.tsx +12 -0
  360. package/src/utils/helper.ts +8 -0
  361. package/src/utils/icon.tsx +4 -0
  362. package/dump.rdb +0 -0
  363. package/lib/components/AssociatedCheckboxes.d.ts +0 -762
  364. package/lib/components/AssociatedCheckboxes.js +0 -90
  365. package/lib/components/AssociatedCheckboxes.js.map +0 -13
  366. package/lib/components/ChainedCheckboxes.js.map +0 -13
  367. package/lib/components/Checkboxes.js +0 -101
  368. package/lib/components/Checkboxes.js.map +0 -13
  369. package/lib/components/ListCheckboxes.d.ts +0 -739
  370. package/lib/components/ListCheckboxes.js +0 -48
  371. package/lib/components/ListCheckboxes.js.map +0 -13
  372. package/lib/components/ListRadios.d.ts +0 -763
  373. package/lib/components/ListRadios.js +0 -86
  374. package/lib/components/ListRadios.js.map +0 -13
  375. package/lib/components/TableCheckboxes.js.map +0 -13
  376. package/lib/components/TreeCheckboxes.js.map +0 -13
  377. package/lib/components/TreeRadios.d.ts +0 -838
  378. package/lib/components/TreeRadios.js +0 -116
  379. package/lib/components/TreeRadios.js.map +0 -13
  380. package/src/components/ListRadios.tsx +0 -159
  381. package/src/components/TreeRadios.tsx +0 -202
@@ -54,7 +54,7 @@ export class SearchBox extends React.Component<SearchBoxProps> {
54
54
 
55
55
  @autobind
56
56
  handleCancel() {
57
- const {onActiveChange, onChange, onCancel} = this.props;
57
+ const {onActiveChange, onCancel, onChange} = this.props;
58
58
  onActiveChange?.(false);
59
59
  onCancel?.();
60
60
  onChange?.('');
@@ -62,14 +62,14 @@ export class SearchBox extends React.Component<SearchBoxProps> {
62
62
 
63
63
  @autobind
64
64
  handleChange(e: React.ChangeEvent<HTMLInputElement>) {
65
- const {onChange, onSearch, searchImediately} = this.props;
65
+ const {searchImediately, onChange} = this.props;
66
66
  onChange?.(e.currentTarget.value);
67
67
  searchImediately && this.lazyEmitSearch();
68
68
  }
69
69
 
70
70
  @autobind
71
71
  handleSearch() {
72
- const {value, onSearch} = this.props;
72
+ const {onSearch, value} = this.props;
73
73
  onSearch?.(value || '');
74
74
  }
75
75
 
@@ -84,14 +84,13 @@ export class SearchBox extends React.Component<SearchBoxProps> {
84
84
  render() {
85
85
  const {
86
86
  classnames: cx,
87
- value,
88
87
  active,
89
88
  name,
90
89
  className,
91
- onChange,
92
90
  disabled,
93
91
  placeholder,
94
92
  mini,
93
+ value,
95
94
  translate: __
96
95
  } = this.props;
97
96
 
@@ -20,7 +20,8 @@ import {
20
20
  findTree,
21
21
  autobind,
22
22
  ucFirst,
23
- normalizeNodePath
23
+ normalizeNodePath,
24
+ isMobile
24
25
  } from '../utils/helper';
25
26
  import find from 'lodash/find';
26
27
  import isPlainObject from 'lodash/isPlainObject';
@@ -35,6 +36,7 @@ import {LocaleProps, localeable} from '../locale';
35
36
  import Spinner from './Spinner';
36
37
  import {Option, Options} from '../Schema';
37
38
  import {RemoteOptionsProps, withRemoteConfig} from './WithRemoteConfig';
39
+ import PickerColumn from './PickerColumn';
38
40
 
39
41
  export {Option, Options};
40
42
 
@@ -317,6 +319,7 @@ interface SelectProps extends OptionProps, ThemeProps, LocaleProps {
317
319
  defaultCheckAll?: boolean;
318
320
  simpleValue?: boolean;
319
321
  defaultOpen?: boolean;
322
+ useMobileUI?: boolean;
320
323
 
321
324
  /**
322
325
  * 边框模式,全边框,还是半边框,或者没边框。
@@ -326,6 +329,11 @@ interface SelectProps extends OptionProps, ThemeProps, LocaleProps {
326
329
  * 是否隐藏已选项
327
330
  */
328
331
  hideSelected?: boolean;
332
+
333
+ /**
334
+ * 移动端样式类名
335
+ */
336
+ mobileClassName?: string;
329
337
  }
330
338
 
331
339
  interface SelectState {
@@ -335,6 +343,7 @@ interface SelectState {
335
343
  inputValue: string;
336
344
  highlightedIndex: number;
337
345
  selection: Array<Option>;
346
+ pickerSelectItem: any;
338
347
  }
339
348
 
340
349
  export class Select extends React.Component<SelectProps, SelectState> {
@@ -368,6 +377,8 @@ export class Select extends React.Component<SelectProps, SelectState> {
368
377
 
369
378
  this.open = this.open.bind(this);
370
379
  this.close = this.close.bind(this);
380
+ this.confirm = this.confirm.bind(this);
381
+ this.handlePickerChange = this.handlePickerChange.bind(this);
371
382
  this.toggle = this.toggle.bind(this);
372
383
  this.onBlur = this.onBlur.bind(this);
373
384
  this.onFocus = this.onFocus.bind(this);
@@ -391,7 +402,8 @@ export class Select extends React.Component<SelectProps, SelectState> {
391
402
  inputValue: '',
392
403
  highlightedIndex: -1,
393
404
  selection: value2array(props.value, props),
394
- itemHeight: 35
405
+ itemHeight: 35,
406
+ pickerSelectItem: ''
395
407
  };
396
408
  }
397
409
 
@@ -435,6 +447,14 @@ export class Select extends React.Component<SelectProps, SelectState> {
435
447
  });
436
448
  }
437
449
 
450
+ confirm() {
451
+ // @ts-ignore
452
+ this.handleChange(this.state.pickerSelectItem);
453
+ this.setState({
454
+ isOpen: false
455
+ });
456
+ }
457
+
438
458
  toggle(e?: React.MouseEvent<HTMLDivElement>) {
439
459
  if (
440
460
  e &&
@@ -549,6 +569,16 @@ export class Select extends React.Component<SelectProps, SelectState> {
549
569
  );
550
570
  }
551
571
 
572
+ handlePickerChange(selectItem: any, index: number, confirm: boolean) {
573
+ this.setState({
574
+ pickerSelectItem: selectItem
575
+ });
576
+ // 直接选中选项
577
+ if (confirm) {
578
+ this.handleChange(selectItem);
579
+ }
580
+ }
581
+
552
582
  handleChange(selectItem: any) {
553
583
  const {onChange, multiple, simpleValue, valueField} = this.props;
554
584
  let {selection} = this.state;
@@ -716,6 +746,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
716
746
  const {
717
747
  popOverContainer,
718
748
  options,
749
+ value,
719
750
  valueField,
720
751
  labelField,
721
752
  noResultsText,
@@ -737,7 +768,9 @@ export class Select extends React.Component<SelectProps, SelectState> {
737
768
  overlayPlacement,
738
769
  translate: __,
739
770
  hideSelected,
740
- renderMenu
771
+ renderMenu,
772
+ mobileClassName,
773
+ useMobileUI = true
741
774
  } = this.props;
742
775
  const {selection} = this.state;
743
776
 
@@ -882,7 +915,22 @@ export class Select extends React.Component<SelectProps, SelectState> {
882
915
  );
883
916
  };
884
917
 
885
- const menu = (
918
+ const mobileUI = isMobile() && useMobileUI;
919
+ const menu = mobileUI ? (
920
+ <PickerColumn
921
+ mobileClassName={mobileClassName}
922
+ labelField={'label'}
923
+ readonly={false}
924
+ className={'PickerColumns-column'}
925
+ value={value && value[0]}
926
+ swipeDuration={1000}
927
+ visibleItemCount={5}
928
+ options={filtedOptions}
929
+ onChange={checkAll ? noop : this.handlePickerChange}
930
+ onClose={this.close}
931
+ onConfirm={this.confirm}
932
+ ></PickerColumn>
933
+ ) : (
886
934
  <div
887
935
  ref={this.menu}
888
936
  className={cx('Select-menu', {
@@ -978,7 +1026,11 @@ export class Select extends React.Component<SelectProps, SelectState> {
978
1026
  >
979
1027
  <PopOver
980
1028
  overlay
981
- className={cx('Select-popover', popoverClassName)}
1029
+ className={cx(
1030
+ 'Select-popover',
1031
+ popoverClassName,
1032
+ mobileUI ? 'PopOver-isMobile' : ''
1033
+ )}
982
1034
  style={{
983
1035
  minWidth: this.target ? this.target.offsetWidth : 'auto'
984
1036
  }}
@@ -16,29 +16,33 @@ import isEqual from 'lodash/isEqual';
16
16
  import {LocaleProps, localeable} from '../locale';
17
17
  // import isPlainObject from 'lodash/isPlainObject';
18
18
 
19
- export interface BaseCheckboxesProps extends ThemeProps, LocaleProps {
19
+ export interface BaseSelectionProps extends ThemeProps, LocaleProps {
20
20
  options: Options;
21
21
  className?: string;
22
22
  placeholder?: string;
23
- value?: Array<any>;
24
- onChange?: (value: Array<Option>) => void;
23
+ value?: any | Array<any>;
24
+ multiple?: boolean;
25
+ clearable?: boolean;
26
+ onChange?: (value: Array<any> | any) => void;
25
27
  onDeferLoad?: (option: Option) => void;
26
28
  inline?: boolean;
27
29
  labelClassName?: string;
28
30
  option2value?: (option: Option) => any;
29
31
  itemClassName?: string;
30
32
  itemRender: (option: Option) => JSX.Element;
31
-
32
33
  disabled?: boolean;
34
+ onClick?: (e: React.MouseEvent) => void;
33
35
  }
34
36
 
35
- export class BaseCheckboxes<
36
- T extends BaseCheckboxesProps = BaseCheckboxesProps,
37
+ export class BaseSelection<
38
+ T extends BaseSelectionProps = BaseSelectionProps,
37
39
  S = any
38
40
  > extends React.Component<T, S> {
39
41
  static defaultProps = {
40
42
  placeholder: 'placeholder.noOption',
41
- itemRender: (option: Option) => <span>{option.label}</span>
43
+ itemRender: (option: Option) => <span>{option.label}</span>,
44
+ multiple: true,
45
+ clearable: true
42
46
  };
43
47
 
44
48
  static value2array(
@@ -62,36 +66,82 @@ export class BaseCheckboxes<
62
66
  });
63
67
  }
64
68
 
69
+ static resolveSelected(
70
+ value: any,
71
+ options: Options,
72
+ option2value: (option: Option) => any = (option: Option) => option
73
+ ) {
74
+ value = Array.isArray(value) ? value[0] : value;
75
+ return findTree(options, option => isEqual(option2value(option), value));
76
+ }
77
+
78
+ // 获取两个数组的交集
79
+ intersectArray(
80
+ arr1: undefined | Array<Option>,
81
+ arr2: undefined | Array<Option>
82
+ ): Array<Option> {
83
+ if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
84
+ return [];
85
+ }
86
+ const len1 = arr1.length;
87
+ const len2 = arr2.length;
88
+ if (len1 < len2) {
89
+ return this.intersectArray(arr2, arr1);
90
+ }
91
+ return Array.from(new Set(arr1.filter(item => arr2.includes(item))));
92
+ }
93
+
65
94
  toggleOption(option: Option) {
66
- const {value, onChange, option2value, options, disabled} = this.props;
95
+ const {
96
+ value,
97
+ onChange,
98
+ option2value,
99
+ options,
100
+ disabled,
101
+ multiple,
102
+ clearable
103
+ } = this.props;
67
104
 
68
105
  if (disabled || option.disabled) {
69
106
  return;
70
107
  }
71
108
 
72
- let valueArray = BaseCheckboxes.value2array(value, options, option2value);
109
+ let valueArray = BaseSelection.value2array(value, options, option2value);
73
110
  let idx = valueArray.indexOf(option);
74
111
 
75
- if (~idx) {
112
+ if (~idx && (multiple || clearable)) {
76
113
  valueArray.splice(idx, 1);
77
- } else {
114
+ } else if (multiple) {
78
115
  valueArray.push(option);
116
+ } else {
117
+ valueArray = [option];
79
118
  }
80
119
 
81
120
  let newValue: string | Array<Option> = option2value
82
121
  ? valueArray.map(item => option2value(item))
83
122
  : valueArray;
84
123
 
85
- onChange && onChange(newValue);
124
+ onChange && onChange(multiple ? newValue : newValue[0]);
86
125
  }
87
126
 
88
127
  @autobind
89
128
  toggleAll() {
90
- const {value, onChange, option2value, options} = this.props;
129
+ const {value, onChange, option2value, options, multiple} = this.props;
130
+ if (multiple) {
131
+ return;
132
+ }
133
+
91
134
  let valueArray: Array<Option> = [];
92
135
 
93
- if (!Array.isArray(value) || !value.length) {
94
- valueArray = options.filter(option => !option.disabled);
136
+ const availableOptions = options.filter(option => !option.disabled);
137
+ const intersectOptions = this.intersectArray(value, availableOptions);
138
+
139
+ if (!Array.isArray(value)) {
140
+ valueArray = availableOptions;
141
+ } else if (intersectOptions.length < availableOptions.length) {
142
+ valueArray = Array.from(new Set([...value, ...availableOptions]));
143
+ } else {
144
+ valueArray = value.filter(item => !availableOptions.includes(item));
95
145
  }
96
146
 
97
147
  let newValue: string | Array<Option> = option2value
@@ -113,17 +163,20 @@ export class BaseCheckboxes<
113
163
  classnames: cx,
114
164
  option2value,
115
165
  itemClassName,
116
- itemRender
166
+ itemRender,
167
+ multiple,
168
+ onClick
117
169
  } = this.props;
118
170
 
119
171
  const __ = this.props.translate;
120
172
 
121
- let valueArray = BaseCheckboxes.value2array(value, options, option2value);
173
+ let valueArray = BaseSelection.value2array(value, options, option2value);
122
174
  let body: Array<React.ReactNode> = [];
123
175
 
124
176
  if (Array.isArray(options) && options.length) {
125
177
  body = options.map((option, key) => (
126
178
  <Checkbox
179
+ type={multiple ? 'checkbox' : 'radio'}
127
180
  className={cx(itemClassName, option.className)}
128
181
  key={key}
129
182
  onChange={() => this.toggleOption(option)}
@@ -140,10 +193,11 @@ export class BaseCheckboxes<
140
193
  return (
141
194
  <div
142
195
  className={cx(
143
- 'Checkboxes',
196
+ 'Selection',
144
197
  className,
145
- inline ? 'Checkboxes--inline' : ''
198
+ inline ? 'Selection--inline' : ''
146
199
  )}
200
+ onClick={onClick}
147
201
  >
148
202
  {body && body.length ? body : <div>{__(placeholder)}</div>}
149
203
  </div>
@@ -151,11 +205,11 @@ export class BaseCheckboxes<
151
205
  }
152
206
  }
153
207
 
154
- export class Checkboxes extends BaseCheckboxes {}
208
+ export class Selection extends BaseSelection {}
155
209
 
156
210
  export default themeable(
157
211
  localeable(
158
- uncontrollable(Checkboxes, {
212
+ uncontrollable(Selection, {
159
213
  value: 'onChange'
160
214
  })
161
215
  )
@@ -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';
@@ -7,7 +7,7 @@ import {Option} from './Select';
7
7
  import {resolveVariable} from '../utils/tpl-builtin';
8
8
  import {localeable} from '../locale';
9
9
 
10
- export interface TableCheckboxesProps extends BaseCheckboxesProps {
10
+ export interface TableSelectionProps extends BaseSelectionProps {
11
11
  columns: Array<{
12
12
  name: string;
13
13
  label: string;
@@ -25,9 +25,9 @@ export interface TableCheckboxesProps extends BaseCheckboxesProps {
25
25
  ) => JSX.Element;
26
26
  }
27
27
 
28
- export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
28
+ export class TableSelection extends BaseSelection<TableSelectionProps> {
29
29
  static defaultProps = {
30
- ...BaseCheckboxes.defaultProps,
30
+ ...BaseSelection.defaultProps,
31
31
  cellRender: (
32
32
  column: {
33
33
  name: string;
@@ -50,9 +50,16 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
50
50
  }
51
51
 
52
52
  renderTHead() {
53
- const {options, classnames: cx, value, disabled, option2value} = this.props;
53
+ const {
54
+ options,
55
+ classnames: cx,
56
+ value,
57
+ disabled,
58
+ option2value,
59
+ multiple
60
+ } = this.props;
54
61
  let columns = this.getColumns();
55
- let valueArray = BaseCheckboxes.value2array(value, options, option2value);
62
+ let valueArray = BaseSelection.value2array(value, options, option2value);
56
63
  const availableOptions = options.filter(option => !option.disabled);
57
64
  let partialChecked = false;
58
65
  let allChecked = !!availableOptions.length;
@@ -70,9 +77,10 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
70
77
  return (
71
78
  <thead>
72
79
  <tr>
73
- {Array.isArray(options) && options.length ? (
80
+ {multiple && Array.isArray(options) && options.length ? (
74
81
  <th className={cx('Table-checkCell')}>
75
82
  <Checkbox
83
+ key="checkbox"
76
84
  size="sm"
77
85
  disabled={disabled}
78
86
  onChange={this.toggleAll}
@@ -97,11 +105,13 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
97
105
  cellRender,
98
106
  value,
99
107
  disabled,
108
+ multiple,
100
109
  option2value,
101
- translate: __
110
+ translate: __,
111
+ itemClassName
102
112
  } = this.props;
103
113
  const columns = this.getColumns();
104
- let valueArray = BaseCheckboxes.value2array(value, options, option2value);
114
+ let valueArray = BaseSelection.value2array(value, options, option2value);
105
115
 
106
116
  return (
107
117
  <tbody>
@@ -113,10 +123,18 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
113
123
  <tr
114
124
  key={rowIndex}
115
125
  onClick={e => e.defaultPrevented || this.toggleOption(option)}
126
+ className={cx(
127
+ itemClassName,
128
+ option.className,
129
+ disabled || option.disabled ? 'is-disabled' : '',
130
+ !!~valueArray.indexOf(option) ? 'is-active' : ''
131
+ )}
116
132
  >
117
- <td className={cx('Table-checkCell')}>
118
- <Checkbox size="sm" checked={checked} disabled={disabled} />
119
- </td>
133
+ {multiple ? (
134
+ <td className={cx('Table-checkCell')} key="checkbox">
135
+ <Checkbox size="sm" checked={checked} disabled={disabled} />
136
+ </td>
137
+ ) : null}
120
138
  {columns.map((column, colIndex) => (
121
139
  <td key={colIndex}>
122
140
  {cellRender(column, option, colIndex, rowIndex)}
@@ -144,10 +162,11 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
144
162
  classnames: cx,
145
163
  option2value,
146
164
  itemClassName,
147
- itemRender
165
+ itemRender,
166
+ multiple
148
167
  } = this.props;
149
168
 
150
- let valueArray = BaseCheckboxes.value2array(value, options, option2value);
169
+ let valueArray = BaseSelection.value2array(value, options, option2value);
151
170
  let body: Array<React.ReactNode> = [];
152
171
 
153
172
  if (Array.isArray(options) && options.length) {
@@ -155,30 +174,32 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
155
174
  <div
156
175
  key={key}
157
176
  className={cx(
158
- 'TableCheckboxes-item',
177
+ 'TableSelection-item',
159
178
  itemClassName,
160
179
  option.className,
161
180
  disabled || option.disabled ? 'is-disabled' : ''
162
181
  )}
163
182
  onClick={() => this.toggleOption(option)}
164
183
  >
165
- <div className={cx('TableCheckboxes-itemLabel')}>
184
+ <div className={cx('TableSelection-itemLabel')}>
166
185
  {itemRender(option)}
167
186
  </div>
168
187
 
169
- <Checkbox
170
- size="sm"
171
- checked={!!~valueArray.indexOf(option)}
172
- disabled={disabled || option.disabled}
173
- labelClassName={labelClassName}
174
- description={option.description}
175
- />
188
+ {multiple ? (
189
+ <Checkbox
190
+ size="sm"
191
+ checked={!!~valueArray.indexOf(option)}
192
+ disabled={disabled || option.disabled}
193
+ labelClassName={labelClassName}
194
+ description={option.description}
195
+ />
196
+ ) : null}
176
197
  </div>
177
198
  ));
178
199
  }
179
200
 
180
201
  return (
181
- <div className={cx('TableCheckboxes', className)}>
202
+ <div className={cx('TableSelection', className)}>
182
203
  <div className={cx('Table-content')}>
183
204
  <table className={cx('Table-table')}>
184
205
  {this.renderTHead()}
@@ -192,7 +213,7 @@ export class TableCheckboxes extends BaseCheckboxes<TableCheckboxesProps> {
192
213
 
193
214
  export default themeable(
194
215
  localeable(
195
- uncontrollable(TableCheckboxes, {
216
+ uncontrollable(TableSelection, {
196
217
  value: 'onChange'
197
218
  })
198
219
  )
@@ -2,14 +2,14 @@ import React from 'react';
2
2
  import {autobind} from '../utils/helper';
3
3
  import Tabs, {Tab} from './Tabs';
4
4
  import SearchBox from './SearchBox';
5
- import TableCheckboxes from './TableCheckboxes';
6
- import TreeCheckboxes from './TreeCheckboxes';
7
- import ChainedCheckboxes from './ChainedCheckboxes';
8
- import ListCheckboxes from './ListCheckboxes';
5
+ import TableCheckboxes from './TableSelection';
6
+ import TreeCheckboxes from './TreeSelection';
7
+ import ChainedCheckboxes from './ChainedSelection';
8
+ import ListCheckboxes from './GroupedSelection';
9
9
  import {Options, Option} from './Select';
10
10
  import Transfer, {TransferProps} from './Transfer';
11
11
  import {themeable} from '../theme';
12
- import AssociatedCheckboxes from './AssociatedCheckboxes';
12
+ import AssociatedCheckboxes from './AssociatedSelection';
13
13
  import {localeable} from '../locale';
14
14
 
15
15
  export interface TabsTransferProps
@@ -121,7 +121,7 @@ export class TabsTransfer extends React.Component<TabsTransferProps> {
121
121
  return (
122
122
  <Tabs
123
123
  mode="card"
124
- className={cx('Transfer-tabs')}
124
+ className={cx('TabsTransfer-tabs')}
125
125
  activeKey={searchResult !== null ? 0 : undefined}
126
126
  toolbar={
127
127
  searchable ? (
@@ -134,7 +134,12 @@ export class TabsTransfer extends React.Component<TabsTransferProps> {
134
134
  >
135
135
  {searchResult !== null
136
136
  ? [
137
- <Tab title={__('searchResult')} key={0} eventKey={0}>
137
+ <Tab
138
+ className="TabsTransfer-tab"
139
+ title={__('searchResult')}
140
+ key={0}
141
+ eventKey={0}
142
+ >
138
143
  {this.renderSearchResult(searchResult)}
139
144
  </Tab>
140
145
  ]
@@ -143,6 +148,7 @@ export class TabsTransfer extends React.Component<TabsTransferProps> {
143
148
  eventKey={index}
144
149
  key={index}
145
150
  title={option.label || option.title}
151
+ className="TabsTransfer-tab"
146
152
  >
147
153
  {option.selectMode === 'table' ? (
148
154
  <TableCheckboxes
@@ -0,0 +1,85 @@
1
+ import {localeable} from '../locale';
2
+ import {themeable} from '../theme';
3
+ import {uncontrollable} from 'uncontrollable';
4
+ import React from 'react';
5
+ import ResultBox from './ResultBox';
6
+ import {Icon} from './icons';
7
+ import PickerContainer from './PickerContainer';
8
+ import {autobind} from '../utils/helper';
9
+ import TabsTransfer, {TabsTransferProps} from './TabsTransfer';
10
+
11
+ export interface TabsTransferPickerProps
12
+ extends Omit<TabsTransferProps, 'itemRender'> {
13
+ // 新的属性?
14
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
15
+ }
16
+
17
+ export class TransferPicker extends React.Component<TabsTransferPickerProps> {
18
+ @autobind
19
+ handleClose() {
20
+ this.setState({
21
+ inputValue: '',
22
+ searchResult: null
23
+ });
24
+ }
25
+
26
+ @autobind
27
+ handleConfirm(value: any) {
28
+ this.props.onChange?.(value);
29
+ this.handleClose();
30
+ }
31
+
32
+ render() {
33
+ const {
34
+ classnames: cx,
35
+ value,
36
+ translate: __,
37
+ disabled,
38
+ className,
39
+ onChange,
40
+ size,
41
+ ...rest
42
+ } = this.props;
43
+
44
+ return (
45
+ <PickerContainer
46
+ title={__('Select.placeholder')}
47
+ popOverRender={({onClose, value, onChange}) => {
48
+ return <TabsTransfer {...rest} value={value} onChange={onChange} />;
49
+ }}
50
+ value={value}
51
+ onConfirm={this.handleConfirm}
52
+ onCancel={this.handleClose}
53
+ size={size}
54
+ >
55
+ {({onClick, isOpened}) => (
56
+ <ResultBox
57
+ className={cx(
58
+ 'TransferPicker',
59
+ className,
60
+ isOpened ? 'is-active' : ''
61
+ )}
62
+ allowInput={false}
63
+ result={value}
64
+ onResultChange={onChange}
65
+ onResultClick={onClick}
66
+ placeholder={__('Select.placeholder')}
67
+ disabled={disabled}
68
+ >
69
+ <span className={cx('TransferPicker-icon')}>
70
+ <Icon icon="pencil" className="icon" />
71
+ </span>
72
+ </ResultBox>
73
+ )}
74
+ </PickerContainer>
75
+ );
76
+ }
77
+ }
78
+
79
+ export default themeable(
80
+ localeable(
81
+ uncontrollable(TransferPicker, {
82
+ value: 'onChange'
83
+ })
84
+ )
85
+ );