amis 1.5.6-beta.5 → 1.6.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 (435) hide show
  1. package/.husky/pre-commit +1 -1
  2. package/lib/Schema.d.ts +3 -2
  3. package/lib/Schema.js.map +1 -1
  4. package/lib/components/AssociatedSelection.d.ts +84 -84
  5. package/lib/components/AssociatedSelection.js +2 -2
  6. package/lib/components/AssociatedSelection.js.map +2 -2
  7. package/lib/components/Avatar.d.ts +135 -0
  8. package/lib/components/Avatar.js +120 -0
  9. package/lib/components/Avatar.js.map +13 -0
  10. package/lib/components/BaiduMapPicker.js.map +2 -2
  11. package/lib/components/CalendarMobile.d.ts +547 -0
  12. package/lib/components/CalendarMobile.js +432 -0
  13. package/lib/components/CalendarMobile.js.map +13 -0
  14. package/lib/components/Card.js +1 -1
  15. package/lib/components/Card.js.map +2 -2
  16. package/lib/components/Cascader.d.ts +123 -0
  17. package/lib/components/Cascader.js +487 -0
  18. package/lib/components/Cascader.js.map +13 -0
  19. package/lib/components/ChainedSelection.d.ts +84 -84
  20. package/lib/components/ChainedSelection.js +15 -3
  21. package/lib/components/ChainedSelection.js.map +2 -2
  22. package/lib/components/CityArea.d.ts +527 -0
  23. package/lib/components/CityArea.js +177 -0
  24. package/lib/components/CityArea.js.map +13 -0
  25. package/lib/components/Collapse.js +1 -1
  26. package/lib/components/Collapse.js.map +2 -2
  27. package/lib/components/ColorPicker.d.ts +84 -84
  28. package/lib/components/ColorPicker.js +4 -3
  29. package/lib/components/ColorPicker.js.map +2 -2
  30. package/lib/components/DatePicker.d.ts +85 -84
  31. package/lib/components/DatePicker.js +15 -8
  32. package/lib/components/DatePicker.js.map +2 -2
  33. package/lib/components/DateRangePicker.d.ts +85 -84
  34. package/lib/components/DateRangePicker.js +18 -6
  35. package/lib/components/DateRangePicker.js.map +2 -2
  36. package/lib/components/GroupedSelection.d.ts +84 -84
  37. package/lib/components/GroupedSelection.js +14 -2
  38. package/lib/components/GroupedSelection.js.map +2 -2
  39. package/lib/components/MonthRangePicker.d.ts +85 -84
  40. package/lib/components/MonthRangePicker.js +16 -6
  41. package/lib/components/MonthRangePicker.js.map +2 -2
  42. package/lib/components/Overlay.d.ts +1 -1
  43. package/lib/components/Overlay.js.map +1 -1
  44. package/lib/components/Picker.d.ts +1 -0
  45. package/lib/components/Picker.js +16 -7
  46. package/lib/components/Picker.js.map +2 -2
  47. package/lib/components/PickerColumn.d.ts +1 -0
  48. package/lib/components/PickerColumn.js +21 -18
  49. package/lib/components/PickerColumn.js.map +2 -2
  50. package/lib/components/PickerContainer.d.ts +3 -0
  51. package/lib/components/PickerContainer.js +12 -5
  52. package/lib/components/PickerContainer.js.map +2 -2
  53. package/lib/components/PopOverContainer.d.ts +1 -0
  54. package/lib/components/PopOverContainer.js +5 -3
  55. package/lib/components/PopOverContainer.js.map +2 -2
  56. package/lib/components/PopUp.d.ts +1041 -28
  57. package/lib/components/PopUp.js +32 -8
  58. package/lib/components/PopUp.js.map +2 -2
  59. package/lib/components/Rating.d.ts +203 -73
  60. package/lib/components/Rating.js +147 -31
  61. package/lib/components/Rating.js.map +2 -2
  62. package/lib/components/ResultBox.d.ts +85 -84
  63. package/lib/components/ResultBox.js +9 -4
  64. package/lib/components/ResultBox.js.map +2 -2
  65. package/lib/components/ResultList.d.ts +9 -2
  66. package/lib/components/ResultList.js +22 -2
  67. package/lib/components/ResultList.js.map +2 -2
  68. package/lib/components/Select.d.ts +237 -237
  69. package/lib/components/Select.js +9 -6
  70. package/lib/components/Select.js.map +2 -2
  71. package/lib/components/Selection.d.ts +94 -86
  72. package/lib/components/Selection.js +11 -2
  73. package/lib/components/Selection.js.map +2 -2
  74. package/lib/components/Steps.js.map +2 -2
  75. package/lib/components/TableSelection.d.ts +85 -85
  76. package/lib/components/TableSelection.js +1 -9
  77. package/lib/components/TableSelection.js.map +2 -2
  78. package/lib/components/Tabs.js +31 -33
  79. package/lib/components/Tabs.js.map +2 -2
  80. package/lib/components/TabsTransfer.d.ts +87 -256
  81. package/lib/components/TabsTransfer.js +52 -9
  82. package/lib/components/TabsTransfer.js.map +2 -2
  83. package/lib/components/TabsTransferPicker.d.ts +1 -1
  84. package/lib/components/TabsTransferPicker.js +20 -18
  85. package/lib/components/TabsTransferPicker.js.map +2 -2
  86. package/lib/components/Timeline.d.ts +69 -0
  87. package/lib/components/Timeline.js +16 -0
  88. package/lib/components/Timeline.js.map +13 -0
  89. package/lib/components/TimelineItem.d.ts +516 -0
  90. package/lib/components/TimelineItem.js +41 -0
  91. package/lib/components/TimelineItem.js.map +13 -0
  92. package/lib/components/Transfer.d.ts +100 -98
  93. package/lib/components/Transfer.js +2 -3
  94. package/lib/components/Transfer.js.map +2 -2
  95. package/lib/components/TransferDropDown.d.ts +85 -84
  96. package/lib/components/TransferDropDown.js +9 -10
  97. package/lib/components/TransferDropDown.js.map +2 -2
  98. package/lib/components/TransferPicker.d.ts +1 -0
  99. package/lib/components/TransferPicker.js +19 -4
  100. package/lib/components/TransferPicker.js.map +2 -2
  101. package/lib/components/TreeSelection.d.ts +85 -85
  102. package/lib/components/TreeSelection.js +7 -1
  103. package/lib/components/TreeSelection.js.map +2 -2
  104. package/lib/components/calendar/Calendar.d.ts +19 -0
  105. package/lib/components/calendar/Calendar.js +71 -1
  106. package/lib/components/calendar/Calendar.js.map +2 -2
  107. package/lib/components/calendar/DaysView.d.ts +21 -0
  108. package/lib/components/calendar/DaysView.js +76 -17
  109. package/lib/components/calendar/DaysView.js.map +2 -2
  110. package/lib/components/calendar/MonthsView.d.ts +34 -0
  111. package/lib/components/calendar/MonthsView.js +68 -3
  112. package/lib/components/calendar/MonthsView.js.map +2 -2
  113. package/lib/components/calendar/QuartersView.d.ts +1 -0
  114. package/lib/components/calendar/QuartersView.js +2 -2
  115. package/lib/components/calendar/QuartersView.js.map +2 -2
  116. package/lib/components/calendar/TimeView.d.ts +30 -18
  117. package/lib/components/calendar/TimeView.js +47 -8
  118. package/lib/components/calendar/TimeView.js.map +2 -2
  119. package/lib/components/calendar/YearsView.d.ts +6 -0
  120. package/lib/components/calendar/YearsView.js +21 -10
  121. package/lib/components/calendar/YearsView.js.map +2 -2
  122. package/lib/components/condition-builder/Field.js +1 -4
  123. package/lib/components/condition-builder/Field.js.map +2 -2
  124. package/lib/components/condition-builder/Func.js +1 -1
  125. package/lib/components/condition-builder/Func.js.map +2 -2
  126. package/lib/components/formula/Editor.d.ts +3 -0
  127. package/lib/components/formula/Editor.js +3 -2
  128. package/lib/components/formula/Editor.js.map +2 -2
  129. package/lib/components/formula/FuncList.js +2 -1
  130. package/lib/components/formula/FuncList.js.map +2 -2
  131. package/lib/components/formula/Picker.js +1 -1
  132. package/lib/components/formula/Picker.js.map +2 -2
  133. package/lib/components/icons.js +4 -0
  134. package/lib/components/icons.js.map +2 -2
  135. package/lib/components/index.d.ts +2 -1
  136. package/lib/components/index.js +4 -2
  137. package/lib/components/index.js.map +2 -2
  138. package/lib/components/virtual-list/SizeAndPositionManager.js.map +2 -2
  139. package/lib/components/virtual-list/index.js +1 -2
  140. package/lib/components/virtual-list/index.js.map +2 -2
  141. package/lib/factory.js +5 -0
  142. package/lib/factory.js.map +2 -2
  143. package/lib/icons/star.js +12 -0
  144. package/lib/icons/tree-down.js +7 -0
  145. package/lib/index.d.ts +1 -0
  146. package/lib/index.js +2 -1
  147. package/lib/index.js.map +2 -2
  148. package/lib/locale/de-DE.js +17 -2
  149. package/lib/locale/de-DE.js.map +2 -2
  150. package/lib/locale/en-US.js +17 -2
  151. package/lib/locale/en-US.js.map +2 -2
  152. package/lib/locale/zh-CN.js +16 -1
  153. package/lib/locale/zh-CN.js.map +2 -2
  154. package/lib/renderers/Avatar.d.ts +35 -26
  155. package/lib/renderers/Avatar.js +14 -19
  156. package/lib/renderers/Avatar.js.map +2 -2
  157. package/lib/renderers/CRUD.js +1 -2
  158. package/lib/renderers/CRUD.js.map +2 -2
  159. package/lib/renderers/Card.js +6 -5
  160. package/lib/renderers/Card.js.map +2 -2
  161. package/lib/renderers/Custom.js.map +2 -2
  162. package/lib/renderers/DropDownButton.d.ts +11 -2
  163. package/lib/renderers/DropDownButton.js +30 -12
  164. package/lib/renderers/DropDownButton.js.map +2 -2
  165. package/lib/renderers/Each.js +5 -2
  166. package/lib/renderers/Each.js.map +2 -2
  167. package/lib/renderers/Flex.js +1 -5
  168. package/lib/renderers/Flex.js.map +2 -2
  169. package/lib/renderers/Form/ChartRadios.js.map +2 -2
  170. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  171. package/lib/renderers/Form/CityDB.js +526 -2
  172. package/lib/renderers/Form/CityDB.js.map +2 -2
  173. package/lib/renderers/Form/DiffEditor.js +2 -1
  174. package/lib/renderers/Form/DiffEditor.js.map +2 -2
  175. package/lib/renderers/Form/InputCity.d.ts +85 -84
  176. package/lib/renderers/Form/InputCity.js +4 -2
  177. package/lib/renderers/Form/InputCity.js.map +2 -2
  178. package/lib/renderers/Form/InputColor.d.ts +84 -84
  179. package/lib/renderers/Form/InputColor.js +6 -2
  180. package/lib/renderers/Form/InputColor.js.map +2 -2
  181. package/lib/renderers/Form/InputDate.js +10 -5
  182. package/lib/renderers/Form/InputDate.js.map +2 -2
  183. package/lib/renderers/Form/InputDateRange.js +6 -2
  184. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  185. package/lib/renderers/Form/InputFormula.d.ts +4 -1
  186. package/lib/renderers/Form/InputFormula.js +2 -2
  187. package/lib/renderers/Form/InputFormula.js.map +2 -2
  188. package/lib/renderers/Form/InputImage.d.ts +1 -0
  189. package/lib/renderers/Form/InputImage.js +8 -4
  190. package/lib/renderers/Form/InputImage.js.map +2 -2
  191. package/lib/renderers/Form/InputMonthRange.js +1 -1
  192. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  193. package/lib/renderers/Form/InputQuarterRange.js +1 -1
  194. package/lib/renderers/Form/InputQuarterRange.js.map +2 -2
  195. package/lib/renderers/Form/InputRating.d.ts +37 -0
  196. package/lib/renderers/Form/InputRating.js +6 -2
  197. package/lib/renderers/Form/InputRating.js.map +2 -2
  198. package/lib/renderers/Form/InputYearRange.js +1 -1
  199. package/lib/renderers/Form/InputYearRange.js.map +2 -2
  200. package/lib/renderers/Form/Item.d.ts +10 -14
  201. package/lib/renderers/Form/Item.js +18 -9
  202. package/lib/renderers/Form/Item.js.map +2 -2
  203. package/lib/renderers/Form/NestedSelect.d.ts +1 -0
  204. package/lib/renderers/Form/NestedSelect.js +8 -4
  205. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  206. package/lib/renderers/Form/Select.d.ts +2 -0
  207. package/lib/renderers/Form/Select.js +7 -4
  208. package/lib/renderers/Form/Select.js.map +2 -2
  209. package/lib/renderers/Form/TabsTransfer.d.ts +5 -32
  210. package/lib/renderers/Form/TabsTransfer.js +20 -1
  211. package/lib/renderers/Form/TabsTransfer.js.map +2 -2
  212. package/lib/renderers/Form/TabsTransferPicker.d.ts +5 -35
  213. package/lib/renderers/Form/TabsTransferPicker.js +21 -2
  214. package/lib/renderers/Form/TabsTransferPicker.js.map +2 -2
  215. package/lib/renderers/Form/Transfer.d.ts +15 -4
  216. package/lib/renderers/Form/Transfer.js +55 -18
  217. package/lib/renderers/Form/Transfer.js.map +2 -2
  218. package/lib/renderers/Form/TransferPicker.d.ts +3 -32
  219. package/lib/renderers/Form/TransferPicker.js +1 -1
  220. package/lib/renderers/Form/TransferPicker.js.map +2 -2
  221. package/lib/renderers/Form/TreeSelect.js +4 -4
  222. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  223. package/lib/renderers/Form/index.js +2 -1
  224. package/lib/renderers/Form/index.js.map +2 -2
  225. package/lib/renderers/IFrame.js +0 -2
  226. package/lib/renderers/IFrame.js.map +2 -2
  227. package/lib/renderers/Json.js +7 -0
  228. package/lib/renderers/Json.js.map +2 -2
  229. package/lib/renderers/Nav.js +4 -1
  230. package/lib/renderers/Nav.js.map +2 -2
  231. package/lib/renderers/Remark.d.ts +4 -0
  232. package/lib/renderers/Remark.js +39 -7
  233. package/lib/renderers/Remark.js.map +2 -2
  234. package/lib/renderers/Steps.js +5 -5
  235. package/lib/renderers/Steps.js.map +2 -2
  236. package/lib/renderers/Table/TableRow.js +4 -1
  237. package/lib/renderers/Table/TableRow.js.map +2 -2
  238. package/lib/renderers/Table/index.js +4 -1
  239. package/lib/renderers/Table/index.js.map +2 -2
  240. package/lib/renderers/Tabs.js +1 -1
  241. package/lib/renderers/Tabs.js.map +2 -2
  242. package/lib/renderers/Timeline.d.ts +65 -0
  243. package/lib/renderers/Timeline.js +54 -0
  244. package/lib/renderers/Timeline.js.map +13 -0
  245. package/lib/renderers/Video.js.map +2 -2
  246. package/lib/schemaExtend.js +23 -9
  247. package/lib/schemaExtend.js.map +2 -2
  248. package/lib/store/combo.js.map +2 -2
  249. package/lib/store/formItem.js +6 -6
  250. package/lib/store/formItem.js.map +2 -2
  251. package/lib/store/table.js +1 -1
  252. package/lib/store/table.js.map +2 -2
  253. package/lib/themes/ang-ie11.css +1018 -67
  254. package/lib/themes/ang.css +1018 -67
  255. package/lib/themes/ang.css.map +1 -1
  256. package/lib/themes/antd-ie11.css +1053 -67
  257. package/lib/themes/antd.css +1053 -67
  258. package/lib/themes/antd.css.map +1 -1
  259. package/lib/themes/cxd-ie11.css +1058 -78
  260. package/lib/themes/cxd.css +1058 -78
  261. package/lib/themes/cxd.css.map +1 -1
  262. package/lib/themes/dark-ie11.css +1019 -67
  263. package/lib/themes/dark.css +1019 -67
  264. package/lib/themes/dark.css.map +1 -1
  265. package/lib/themes/default.css +1058 -78
  266. package/lib/themes/default.css.map +1 -1
  267. package/lib/utils/RootClose.js +3 -1
  268. package/lib/utils/RootClose.js.map +2 -2
  269. package/lib/utils/helper.d.ts +1 -6
  270. package/lib/utils/helper.js +6 -17
  271. package/lib/utils/helper.js.map +2 -2
  272. package/package.json +12 -6
  273. package/schema.json +3696 -971
  274. package/scss/_properties.scss +21 -7
  275. package/scss/components/_avatar.scss +27 -9
  276. package/scss/components/_calendar.scss +287 -0
  277. package/scss/components/_card.scss +1 -1
  278. package/scss/components/_cascader.scss +102 -0
  279. package/scss/components/_city-area.scss +27 -0
  280. package/scss/components/_collapse-group.scss +1 -3
  281. package/scss/components/_dropdown.scss +39 -9
  282. package/scss/components/_formula.scss +30 -6
  283. package/scss/components/_modal.scss +18 -0
  284. package/scss/components/_panel.scss +45 -0
  285. package/scss/components/_picker-columns.scss +15 -5
  286. package/scss/components/_popup.scss +42 -15
  287. package/scss/components/_result-box.scss +31 -0
  288. package/scss/components/_timeline.scss +198 -0
  289. package/scss/components/form/_checks.scss +2 -0
  290. package/scss/components/form/_color.scss +2 -2
  291. package/scss/components/form/_date-range.scss +1 -1
  292. package/scss/components/form/_date.scss +46 -1
  293. package/scss/components/form/_form.scss +168 -0
  294. package/scss/components/form/_nested-select.scss +3 -0
  295. package/scss/components/form/_rating.scss +60 -21
  296. package/scss/components/form/_result-list.scss +2 -0
  297. package/scss/components/form/_select.scss +32 -3
  298. package/scss/components/form/_selection.scss +5 -4
  299. package/scss/components/form/_transfer.scss +3 -0
  300. package/scss/components/form/_tree-select.scss +1 -1
  301. package/scss/themes/_antd-variables.scss +42 -0
  302. package/scss/themes/_common.scss +3 -0
  303. package/scss/themes/_cxd-variables.scss +51 -2
  304. package/scss/themes/_dark-variables.scss +1 -0
  305. package/scss/themes/cxd.scss +0 -12
  306. package/sdk/ang-ie11.css +1278 -141
  307. package/sdk/ang.css +1296 -153
  308. package/sdk/antd-ie11.css +1278 -141
  309. package/sdk/antd.css +1331 -153
  310. package/sdk/charts.js +14 -14
  311. package/sdk/codemirror.js +7 -7
  312. package/sdk/color-picker.js +65 -65
  313. package/sdk/cropperjs.js +2 -2
  314. package/sdk/cxd-ie11.css +1258 -132
  315. package/sdk/cxd.css +1338 -168
  316. package/sdk/dark-ie11.css +1278 -141
  317. package/sdk/dark.css +1297 -153
  318. package/sdk/exceljs.js +1 -1
  319. package/sdk/locale/de-DE.js +17 -2
  320. package/sdk/markdown.js +69 -69
  321. package/sdk/papaparse.js +1 -1
  322. package/sdk/renderers/Form/CityDB.js +1 -1
  323. package/sdk/rest.js +18 -18
  324. package/sdk/rich-text.js +62 -62
  325. package/sdk/sdk-ie11.css +1258 -132
  326. package/sdk/sdk.css +1338 -168
  327. package/sdk/sdk.js +1242 -1218
  328. package/sdk/thirds/hls.js/hls.js +1 -1
  329. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  330. package/sdk/tinymce.js +57 -57
  331. package/src/Schema.ts +3 -0
  332. package/src/components/AssociatedSelection.tsx +5 -1
  333. package/src/components/Avatar.tsx +253 -0
  334. package/src/components/BaiduMapPicker.tsx +19 -14
  335. package/src/components/CalendarMobile.tsx +563 -0
  336. package/src/components/Card.tsx +2 -2
  337. package/src/components/Cascader.tsx +564 -0
  338. package/src/components/ChainedSelection.tsx +16 -3
  339. package/src/components/CityArea.tsx +315 -0
  340. package/src/components/Collapse.tsx +1 -1
  341. package/src/components/ColorPicker.tsx +41 -40
  342. package/src/components/DatePicker.tsx +54 -38
  343. package/src/components/DateRangePicker.tsx +83 -29
  344. package/src/components/GroupedSelection.tsx +14 -2
  345. package/src/components/MonthRangePicker.tsx +76 -30
  346. package/src/components/Overlay.tsx +1 -1
  347. package/src/components/Picker.tsx +55 -35
  348. package/src/components/PickerColumn.tsx +43 -36
  349. package/src/components/PickerContainer.tsx +13 -1
  350. package/src/components/PopOverContainer.tsx +31 -17
  351. package/src/components/PopUp.tsx +84 -57
  352. package/src/components/Rating.tsx +235 -47
  353. package/src/components/ResultBox.tsx +14 -2
  354. package/src/components/ResultList.tsx +36 -6
  355. package/src/components/Select.tsx +20 -23
  356. package/src/components/Selection.tsx +21 -3
  357. package/src/components/Steps.tsx +23 -10
  358. package/src/components/TableSelection.tsx +1 -44
  359. package/src/components/Tabs.tsx +65 -54
  360. package/src/components/TabsTransfer.tsx +78 -9
  361. package/src/components/TabsTransferPicker.tsx +25 -13
  362. package/src/components/Timeline.tsx +31 -0
  363. package/src/components/TimelineItem.tsx +107 -0
  364. package/src/components/Transfer.tsx +11 -8
  365. package/src/components/TransferDropDown.tsx +20 -12
  366. package/src/components/TransferPicker.tsx +25 -4
  367. package/src/components/TreeSelection.tsx +7 -1
  368. package/src/components/calendar/Calendar.tsx +101 -4
  369. package/src/components/calendar/DaysView.tsx +165 -33
  370. package/src/components/calendar/MonthsView.tsx +108 -1
  371. package/src/components/calendar/QuartersView.tsx +3 -2
  372. package/src/components/calendar/TimeView.tsx +104 -41
  373. package/src/components/calendar/YearsView.tsx +34 -17
  374. package/src/components/condition-builder/Field.tsx +1 -3
  375. package/src/components/condition-builder/Func.tsx +1 -1
  376. package/src/components/formula/Editor.tsx +16 -11
  377. package/src/components/formula/FuncList.tsx +3 -1
  378. package/src/components/formula/Picker.tsx +2 -1
  379. package/src/components/icons.tsx +4 -0
  380. package/src/components/index.tsx +2 -0
  381. package/src/components/virtual-list/SizeAndPositionManager.ts +6 -3
  382. package/src/components/virtual-list/index.tsx +4 -6
  383. package/src/factory.tsx +6 -0
  384. package/src/icons/star.svg +12 -0
  385. package/src/icons/tree-down.svg +5 -0
  386. package/src/index.tsx +1 -0
  387. package/src/locale/de-DE.ts +17 -2
  388. package/src/locale/en-US.ts +17 -2
  389. package/src/locale/zh-CN.ts +16 -1
  390. package/src/renderers/Avatar.tsx +83 -74
  391. package/src/renderers/CRUD.tsx +1 -3
  392. package/src/renderers/Card.tsx +10 -6
  393. package/src/renderers/Custom.tsx +6 -3
  394. package/src/renderers/DropDownButton.tsx +69 -35
  395. package/src/renderers/Each.tsx +4 -4
  396. package/src/renderers/Flex.tsx +3 -7
  397. package/src/renderers/Form/ChartRadios.tsx +2 -7
  398. package/src/renderers/Form/Checkboxes.tsx +1 -1
  399. package/src/renderers/Form/CityDB.ts +526 -2
  400. package/src/renderers/Form/DiffEditor.tsx +2 -3
  401. package/src/renderers/Form/InputCity.tsx +23 -3
  402. package/src/renderers/Form/InputColor.tsx +21 -2
  403. package/src/renderers/Form/InputDate.tsx +48 -20
  404. package/src/renderers/Form/InputDateRange.tsx +9 -2
  405. package/src/renderers/Form/InputFormula.tsx +9 -4
  406. package/src/renderers/Form/InputImage.tsx +9 -4
  407. package/src/renderers/Form/InputMonthRange.tsx +0 -1
  408. package/src/renderers/Form/InputQuarterRange.tsx +0 -1
  409. package/src/renderers/Form/InputRating.tsx +66 -3
  410. package/src/renderers/Form/InputYearRange.tsx +0 -1
  411. package/src/renderers/Form/Item.tsx +29 -8
  412. package/src/renderers/Form/NestedSelect.tsx +32 -4
  413. package/src/renderers/Form/Select.tsx +15 -3
  414. package/src/renderers/Form/TabsTransfer.tsx +28 -38
  415. package/src/renderers/Form/TabsTransferPicker.tsx +28 -46
  416. package/src/renderers/Form/Transfer.tsx +75 -24
  417. package/src/renderers/Form/TransferPicker.tsx +6 -38
  418. package/src/renderers/Form/TreeSelect.tsx +18 -16
  419. package/src/renderers/Form/index.tsx +2 -1
  420. package/src/renderers/IFrame.tsx +0 -2
  421. package/src/renderers/Json.tsx +5 -0
  422. package/src/renderers/Nav.tsx +4 -1
  423. package/src/renderers/Remark.tsx +68 -18
  424. package/src/renderers/Steps.tsx +11 -13
  425. package/src/renderers/Table/TableRow.tsx +3 -1
  426. package/src/renderers/Table/index.tsx +7 -1
  427. package/src/renderers/Tabs.tsx +6 -2
  428. package/src/renderers/Timeline.tsx +141 -0
  429. package/src/renderers/Video.tsx +4 -20
  430. package/src/schemaExtend.ts +22 -10
  431. package/src/store/combo.ts +1 -3
  432. package/src/store/formItem.ts +2 -2
  433. package/src/store/table.ts +2 -1
  434. package/src/utils/RootClose.ts +5 -1
  435. package/src/utils/helper.ts +6 -16
@@ -8,22 +8,33 @@ import React from 'react';
8
8
  import cx from 'classnames';
9
9
  import {ClassNamesFn, themeable} from '../theme';
10
10
 
11
+ import {isObject} from '../utils/helper';
12
+ import {Icon} from './icons';
13
+
14
+ export type textPositionType = 'left' | 'right';
15
+
11
16
  interface RatingProps {
12
17
  id?: string;
13
18
  key?: string | number;
14
19
  style?: React.CSSProperties;
15
20
  count: number;
16
21
  half: boolean;
17
- char: string;
18
- size: number;
22
+ char: string | React.ReactNode;
19
23
  className?: string;
20
- onChange?: (value: any) => void;
24
+ charClassName?: string;
25
+ textClassName?: string;
26
+ onChange?: (value: number) => void;
27
+ onHoverChange?: (value: number) => void;
21
28
  value: number;
22
- containerClass: string;
29
+ containerClass?: string;
23
30
  readOnly: boolean;
24
31
  classPrefix: string;
25
32
  disabled?: boolean;
26
33
  allowClear?: boolean;
34
+ inactiveColor?: string;
35
+ colors?: string | {[propName: string]: string};
36
+ texts?: {[propName: string]: string};
37
+ textPosition?: textPositionType;
27
38
  classnames: ClassNamesFn;
28
39
  }
29
40
 
@@ -35,13 +46,22 @@ export class Rating extends React.Component<RatingProps, any> {
35
46
  allowClear: true,
36
47
  value: 0,
37
48
  count: 5,
38
- char: '★',
39
- size: 24
49
+ char: <Icon icon="star" className="icon" />,
50
+ colors: {
51
+ '2': '#abadb1',
52
+ '3': '#787b81',
53
+ '5': '#ffa900'
54
+ },
55
+ textPosition: 'right' as textPositionType
40
56
  };
41
57
 
58
+ starsNode: Record<string, any>;
59
+
42
60
  constructor(props: RatingProps) {
43
61
  super(props);
44
62
 
63
+ this.starsNode = {};
64
+
45
65
  this.state = {
46
66
  value: props.value || 0,
47
67
  stars: [],
@@ -49,7 +69,10 @@ export class Rating extends React.Component<RatingProps, any> {
49
69
  halfStar: {
50
70
  at: Math.floor(props.value),
51
71
  hidden: props.half && props.value % 1 < 0.5
52
- }
72
+ },
73
+ showColor: '',
74
+ showText: null,
75
+ hoverValue: null
53
76
  };
54
77
 
55
78
  this.getRate = this.getRate.bind(this);
@@ -58,6 +81,8 @@ export class Rating extends React.Component<RatingProps, any> {
58
81
  this.mouseOver = this.mouseOver.bind(this);
59
82
  this.mouseLeave = this.mouseLeave.bind(this);
60
83
  this.handleClick = this.handleClick.bind(this);
84
+ this.saveRef = this.saveRef.bind(this);
85
+ this.handleStarMouseLeave = this.handleStarMouseLeave.bind(this);
61
86
  }
62
87
 
63
88
  componentDidMount() {
@@ -65,6 +90,8 @@ export class Rating extends React.Component<RatingProps, any> {
65
90
  this.setState({
66
91
  stars: this.getStars(value)
67
92
  });
93
+
94
+ this.getShowColorAndText(value);
68
95
  }
69
96
 
70
97
  componentDidUpdate(prevProps: RatingProps) {
@@ -82,6 +109,55 @@ export class Rating extends React.Component<RatingProps, any> {
82
109
  }
83
110
  }
84
111
 
112
+ sortKeys(map: {[propName: number]: string}) {
113
+ return Object.keys(map).sort(
114
+ (a: number | string, b: number | string) => Number(a) - Number(b)
115
+ );
116
+ }
117
+
118
+ getShowColorAndText(value: number) {
119
+ const {colors, texts, half} = this.props;
120
+
121
+ if (!value)
122
+ return this.setState({
123
+ showText: null
124
+ });
125
+
126
+ // 对 value 取整
127
+ if (half) {
128
+ value = Math.floor(Number(value) * 2) / 2;
129
+ } else {
130
+ value = Math.floor(value);
131
+ }
132
+
133
+ if (colors && typeof colors !== 'string') {
134
+ const keys: string[] = this.sortKeys(colors);
135
+ const showKey = keys.filter(item => Number(item) < value).length;
136
+
137
+ const showColor = keys[showKey] !== undefined && colors[keys[showKey]];
138
+ showColor &&
139
+ this.setState({
140
+ showColor
141
+ });
142
+ } else if (colors && typeof colors === 'string') {
143
+ this.setState({
144
+ showColor: colors
145
+ });
146
+ }
147
+
148
+ if (texts && isObject(texts)) {
149
+ const keys: string[] = this.sortKeys(texts);
150
+ const showKey = keys.filter(item => Number(item) < value).length;
151
+ const showText =
152
+ keys[showKey] !== undefined &&
153
+ texts[keys[showKey] as keyof typeof texts];
154
+ showText &&
155
+ this.setState({
156
+ showText
157
+ });
158
+ }
159
+ }
160
+
85
161
  getRate() {
86
162
  let stars;
87
163
  const {value} = this.state;
@@ -108,14 +184,28 @@ export class Rating extends React.Component<RatingProps, any> {
108
184
  return stars;
109
185
  }
110
186
 
111
- mouseOver(event: React.ChangeEvent<any>) {
187
+ saveRef(index: number) {
188
+ return (node: React.ReactNode) => {
189
+ this.starsNode[String(index)] = node;
190
+ };
191
+ }
192
+
193
+ mouseOver(event: React.ChangeEvent<any>, index: number) {
112
194
  const {isClear} = this.state;
113
195
  if (isClear) return;
114
- let {readOnly, size, half} = this.props;
196
+
197
+ const {readOnly, half} = this.props;
198
+
115
199
  if (readOnly) return;
116
- let index = Number(event.target.getAttribute('data-index'));
200
+
117
201
  if (half) {
118
- const isAtHalf = this.moreThanHalf(event, size);
202
+ const isAtHalf = this.moreThanHalf(event, index);
203
+
204
+ const tmpValue = isAtHalf ? index + 1 : index + 0.5;
205
+
206
+ this.getShowColorAndText(tmpValue);
207
+ this.onHoverChange(tmpValue);
208
+
119
209
  if (isAtHalf) index = index + 1;
120
210
  this.setState({
121
211
  halfStar: {
@@ -125,24 +215,43 @@ export class Rating extends React.Component<RatingProps, any> {
125
215
  });
126
216
  } else {
127
217
  index = index + 1;
218
+ this.onHoverChange(index);
219
+ this.getShowColorAndText(index);
128
220
  }
129
221
  this.setState({
130
222
  stars: this.getStars(index)
131
223
  });
132
224
  }
133
225
 
134
- moreThanHalf(event: any, size: number) {
135
- let {target} = event;
136
- let mouseAt = event.clientX - target.getBoundingClientRect().left;
137
- mouseAt = Math.round(Math.abs(mouseAt));
138
- return mouseAt > size / 2;
226
+ onHoverChange(value: number) {
227
+ const {onHoverChange} = this.props;
228
+ const {hoverValue} = this.state;
229
+
230
+ if (!hoverValue || (hoverValue && hoverValue !== value)) {
231
+ this.setState({
232
+ hoverValue: value
233
+ });
234
+ onHoverChange && onHoverChange(value);
235
+ }
236
+ }
237
+
238
+ moreThanHalf(event: any, index: number) {
239
+ const star = this.starsNode[index];
240
+ const leftPos = star.getBoundingClientRect().left;
241
+
242
+ return event.clientX - leftPos > star.clientWidth / 2;
139
243
  }
140
244
 
141
245
  mouseLeave() {
142
246
  const {value, isClear} = this.state;
143
247
  const {half, readOnly} = this.props;
144
248
  if (readOnly) return;
145
- if (isClear) return this.setState({isClear: false});
249
+ if (isClear)
250
+ return this.setState({
251
+ isClear: false,
252
+ hoverValue: null
253
+ });
254
+
146
255
  if (half) {
147
256
  this.setState({
148
257
  halfStar: {
@@ -152,18 +261,39 @@ export class Rating extends React.Component<RatingProps, any> {
152
261
  });
153
262
  }
154
263
  this.setState({
155
- stars: this.getStars()
264
+ stars: this.getStars(),
265
+ hoverValue: null
156
266
  });
267
+ this.getShowColorAndText(value);
157
268
  }
158
269
 
159
- handleClick(event: React.ChangeEvent<any>) {
160
- const {half, readOnly, onChange, size, allowClear} = this.props;
270
+ handleStarMouseLeave(event: any, index: number) {
271
+ const star = this.starsNode[index];
272
+ const leftSideX = star.getBoundingClientRect().left;
273
+ const {isClear} = this.state;
274
+
275
+ if (isClear) return this.setState({isClear: false});
276
+
277
+ // leave star from left side
278
+ if (event.clientX <= leftSideX) {
279
+ this.getShowColorAndText(index);
280
+ this.setState({
281
+ stars: this.getStars(index),
282
+ halfStar: {
283
+ at: index,
284
+ hidden: true
285
+ }
286
+ });
287
+ }
288
+ }
289
+
290
+ handleClick(event: React.ChangeEvent<any>, index: number) {
291
+ const {half, readOnly, onChange, allowClear} = this.props;
161
292
  if (readOnly) return;
162
- let index = Number(event.target.getAttribute('data-index'));
163
293
 
164
294
  let value;
165
295
  if (half) {
166
- const isAtHalf = this.moreThanHalf(event, size);
296
+ const isAtHalf = this.moreThanHalf(event, index);
167
297
  if (isAtHalf) index = index + 1;
168
298
  value = isAtHalf ? index : index + 0.5;
169
299
  this.setState({
@@ -183,41 +313,99 @@ export class Rating extends React.Component<RatingProps, any> {
183
313
  stars: this.getStars(index),
184
314
  isClear
185
315
  });
316
+
317
+ this.getShowColorAndText(value);
318
+
186
319
  onChange && onChange(value);
187
320
  }
188
321
 
189
322
  renderStars() {
190
- const {halfStar, stars} = this.state;
191
- const {char, half, disabled, readOnly, classnames: cx} = this.props;
192
- return stars.map((star: any, i: number) => {
193
- let className = cx('Rating', {
194
- 'Rating-half': half && !halfStar.hidden && halfStar.at === i,
195
- 'is-active': star.active,
196
- 'is-disabled': readOnly || disabled
197
- });
323
+ const {halfStar, stars, showColor} = this.state;
324
+ const {
325
+ inactiveColor,
326
+ char,
327
+ half,
328
+ disabled,
329
+ readOnly,
330
+ charClassName,
331
+ classnames: cx
332
+ } = this.props;
198
333
 
199
- return (
200
- <span
201
- className={className}
202
- key={i}
203
- data-index={i}
204
- data-forhalf={char}
205
- onMouseOver={this.mouseOver}
206
- onMouseMove={this.mouseOver}
207
- onMouseLeave={this.mouseLeave}
208
- onClick={this.handleClick}
209
- >
210
- {char}
211
- </span>
212
- );
213
- });
334
+ return (
335
+ <ul onMouseLeave={this.mouseLeave}>
336
+ {stars.map((star: any, i: number) => {
337
+ const isThisHalf = half && !halfStar.hidden && halfStar.at === i;
338
+
339
+ return (
340
+ <li
341
+ ref={this.saveRef(i)}
342
+ className={cx('Rating-star', charClassName, {
343
+ 'is-half': isThisHalf,
344
+ 'is-active': star.active,
345
+ 'is-disabled': readOnly || disabled
346
+ })}
347
+ key={i}
348
+ style={{
349
+ color: star.active ? showColor : inactiveColor
350
+ }}
351
+ onMouseOver={e => this.mouseOver(e, i)}
352
+ onMouseMove={e => this.mouseOver(e, i)}
353
+ onClick={e => this.handleClick(e, i)}
354
+ onMouseLeave={e => this.handleStarMouseLeave(e, i)}
355
+ >
356
+ {isThisHalf && (
357
+ <div
358
+ className={cx('Rating-star-half')}
359
+ style={{
360
+ color: showColor
361
+ }}
362
+ >
363
+ {char}
364
+ </div>
365
+ )}
366
+ {char}
367
+ </li>
368
+ );
369
+ })}
370
+ </ul>
371
+ );
372
+ }
373
+
374
+ renderText() {
375
+ const {showText} = this.state;
376
+ const {textClassName, textPosition, classnames: cx} = this.props;
377
+
378
+ if (!showText) return null;
379
+
380
+ return (
381
+ <span
382
+ className={cx('Rating-text', textClassName, {
383
+ [`Rating-text--${textPosition === 'left' ? 'left' : 'right'}`]:
384
+ textPosition
385
+ })}
386
+ >
387
+ {showText}
388
+ </span>
389
+ );
214
390
  }
215
391
 
216
392
  render() {
217
- let {className} = this.props;
393
+ const {className, textPosition, classnames: cx} = this.props;
218
394
 
219
395
  return (
220
- <div className={cx(className ? className : '')}>{this.renderStars()}</div>
396
+ <div className={cx('Rating', className)}>
397
+ {textPosition === 'left' ? (
398
+ <>
399
+ {this.renderText()}
400
+ {this.renderStars()}
401
+ </>
402
+ ) : (
403
+ <>
404
+ {this.renderStars()}
405
+ {this.renderText()}
406
+ </>
407
+ )}
408
+ </div>
221
409
  );
222
410
  }
223
411
  }
@@ -4,8 +4,9 @@ import {InputBoxProps} from './InputBox';
4
4
  import {uncontrollable} from 'uncontrollable';
5
5
  import {Icon} from './icons';
6
6
  import Input from './Input';
7
- import {autobind, ucFirst} from '../utils/helper';
7
+ import {autobind, isMobile, ucFirst} from '../utils/helper';
8
8
  import {LocaleProps, localeable} from '../locale';
9
+ import isPlainObject = require('lodash/isPlainObject');
9
10
 
10
11
  export interface ResultBoxProps
11
12
  extends ThemeProps,
@@ -18,6 +19,7 @@ export interface ResultBoxProps
18
19
  onResultChange?: (value: Array<any>) => void;
19
20
  allowInput?: boolean;
20
21
  inputPlaceholder: string;
22
+ useMobileUI?: boolean;
21
23
  }
22
24
 
23
25
  export class ResultBox extends React.Component<ResultBoxProps> {
@@ -114,9 +116,11 @@ export class ResultBox extends React.Component<ResultBoxProps> {
114
116
  onFocus,
115
117
  onBlur,
116
118
  borderMode,
119
+ useMobileUI,
117
120
  ...rest
118
121
  } = this.props;
119
122
  const isFocused = this.state.isFocused;
123
+ const mobileUI = useMobileUI && isMobile();
120
124
 
121
125
  return (
122
126
  <div
@@ -125,6 +129,7 @@ export class ResultBox extends React.Component<ResultBoxProps> {
125
129
  'is-disabled': disabled,
126
130
  'is-error': hasError,
127
131
  'is-clickable': onResultClick,
132
+ 'is-mobile': mobileUI,
128
133
  [`ResultBox--border${ucFirst(borderMode)}`]: borderMode
129
134
  })}
130
135
  onClick={onResultClick}
@@ -147,7 +152,9 @@ export class ResultBox extends React.Component<ResultBoxProps> {
147
152
  </div>
148
153
  ))
149
154
  ) : result && !Array.isArray(result) ? (
150
- <span className={cx('ResultBox-singleValue')}>{result}</span>
155
+ <span className={cx('ResultBox-singleValue')}>
156
+ {isPlainObject(result) ? itemRender(result) : result}
157
+ </span>
151
158
  ) : allowInput && !disabled ? null : (
152
159
  <span className={cx('ResultBox-placeholder')}>
153
160
  {__(placeholder || 'placeholder.noData')}
@@ -180,6 +187,11 @@ export class ResultBox extends React.Component<ResultBoxProps> {
180
187
  <Icon icon="close" className="icon" />
181
188
  </a>
182
189
  ) : null}
190
+ {!allowInput && mobileUI ? (
191
+ <span className={cx('ResultBox-arrow')}>
192
+ <Icon icon="caret" className="icon" />
193
+ </span>
194
+ ) : null}
183
195
  </div>
184
196
  );
185
197
  }
@@ -13,21 +13,28 @@ import {LocaleProps, localeable} from '../locale';
13
13
  export interface ResultListProps extends ThemeProps, LocaleProps {
14
14
  className?: string;
15
15
  value?: Array<Option>;
16
- onChange?: (value: Array<Option>) => void;
16
+ onChange?: (value: Array<Option>, optionModified?: boolean) => void;
17
17
  sortable?: boolean;
18
18
  disabled?: boolean;
19
19
  title?: string;
20
20
  placeholder: string;
21
- itemRender: (option: Option) => JSX.Element;
21
+ itemRender: (option: Option, states: ItemRenderStates) => JSX.Element;
22
22
  itemClassName?: string;
23
23
  }
24
24
 
25
+ export interface ItemRenderStates {
26
+ index: number;
27
+ disabled?: boolean;
28
+ onChange: (value: any, name: string) => void;
29
+ }
30
+
25
31
  export class ResultList extends React.Component<ResultListProps> {
32
+ static itemRender(option: any) {
33
+ return <span>{`${option.scopeLabel || ''}${option.label}`}</span>;
34
+ }
26
35
  static defaultProps: Pick<ResultListProps, 'placeholder' | 'itemRender'> = {
27
36
  placeholder: 'placeholder.selectData',
28
- itemRender: (option: any) => (
29
- <span>{`${option.scopeLabel || ''}${option.label}`}</span>
30
- )
37
+ itemRender: ResultList.itemRender
31
38
  };
32
39
 
33
40
  id = guid();
@@ -114,6 +121,23 @@ export class ResultList extends React.Component<ResultListProps> {
114
121
  delete this.sortable;
115
122
  }
116
123
 
124
+ handleValueChange(index: number, value: any, name: string) {
125
+ if (typeof name !== 'string') {
126
+ return;
127
+ }
128
+ const {value: list, onChange} = this.props;
129
+
130
+ const result = Array.isArray(list) ? list.concat() : [];
131
+ if (!result[index]) {
132
+ return;
133
+ }
134
+ result.splice(index, 1, {
135
+ ...result[index],
136
+ [name]: value
137
+ });
138
+ onChange?.(result, true);
139
+ }
140
+
117
141
  render() {
118
142
  const {
119
143
  classnames: cx,
@@ -150,7 +174,13 @@ export class ResultList extends React.Component<ResultListProps> {
150
174
  />
151
175
  ) : null}
152
176
 
153
- <label>{itemRender(option)}</label>
177
+ <label>
178
+ {itemRender(option, {
179
+ index,
180
+ disabled,
181
+ onChange: this.handleValueChange.bind(this, index)
182
+ })}
183
+ </label>
154
184
 
155
185
  {!disabled ? (
156
186
  <a
@@ -37,6 +37,7 @@ import Spinner from './Spinner';
37
37
  import {Option, Options} from '../Schema';
38
38
  import {RemoteOptionsProps, withRemoteConfig} from './WithRemoteConfig';
39
39
  import Picker from './Picker';
40
+ import PopUp from './PopUp';
40
41
 
41
42
  export {Option, Options};
42
43
 
@@ -923,23 +924,13 @@ export class Select extends React.Component<SelectProps, SelectState> {
923
924
  labelField: 'label',
924
925
  options: filtedOptions
925
926
  };
926
- const menu = mobileUI ? (
927
- <Picker
928
- className={cx('PickerColumns-column', mobileClassName)}
929
- labelField='label'
930
- value={value[0]}
931
- translate={this.props.translate}
932
- locale={this.props.locale}
933
- columns={[column]}
934
- onChange={checkAll ? noop : this.handlePickerChange}
935
- onClose={this.close}
936
- onConfirm={this.confirm}
937
- />
938
- ) : (
927
+ const menu = (
939
928
  <div
940
929
  ref={this.menu}
941
930
  className={cx('Select-menu', {
942
- 'Select--longlist': filtedOptions.length && filtedOptions.length > 100
931
+ 'Select--longlist':
932
+ filtedOptions.length && filtedOptions.length > 100,
933
+ 'is-mobile': mobileUI
943
934
  })}
944
935
  >
945
936
  {searchable ? (
@@ -1021,8 +1012,16 @@ export class Select extends React.Component<SelectProps, SelectState> {
1021
1012
  )}
1022
1013
  </div>
1023
1014
  );
1024
-
1025
- return (
1015
+ return mobileUI ? (
1016
+ <PopUp
1017
+ className={cx(`Select-popup`)}
1018
+ container={popOverContainer}
1019
+ isShow={this.state.isOpen}
1020
+ onHide={this.close}
1021
+ >
1022
+ {menu}
1023
+ </PopUp>
1024
+ ) : (
1026
1025
  <Overlay
1027
1026
  container={popOverContainer || this.getTarget}
1028
1027
  target={this.getTarget}
@@ -1031,11 +1030,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
1031
1030
  >
1032
1031
  <PopOver
1033
1032
  overlay
1034
- className={cx(
1035
- 'Select-popover',
1036
- popoverClassName,
1037
- mobileUI ? 'PopOver-isMobile' : ''
1038
- )}
1033
+ className={cx('Select-popover')}
1039
1034
  style={{
1040
1035
  minWidth: this.target ? this.target.offsetWidth : 'auto'
1041
1036
  }}
@@ -1061,13 +1056,14 @@ export class Select extends React.Component<SelectProps, SelectState> {
1061
1056
  labelField,
1062
1057
  disabled,
1063
1058
  checkAll,
1064
- borderMode
1059
+ borderMode,
1060
+ useMobileUI
1065
1061
  } = this.props;
1066
1062
 
1067
1063
  const selection = this.state.selection;
1068
1064
  const inputValue = this.state.inputValue;
1069
1065
  const resetValue = this.props.resetValue;
1070
-
1066
+ const mobileUI = useMobileUI && isMobile();
1071
1067
  return (
1072
1068
  <Downshift
1073
1069
  selectedItem={selection}
@@ -1101,6 +1097,7 @@ export class Select extends React.Component<SelectProps, SelectState> {
1101
1097
  'is-opened': isOpen,
1102
1098
  'is-focused': this.state.isFocused,
1103
1099
  'is-disabled': disabled,
1100
+ 'is-mobile': mobileUI,
1104
1101
  [`Select--border${ucFirst(borderMode)}`]: borderMode
1105
1102
  },
1106
1103
  className
@@ -29,18 +29,30 @@ export interface BaseSelectionProps extends ThemeProps, LocaleProps {
29
29
  labelClassName?: string;
30
30
  option2value?: (option: Option) => any;
31
31
  itemClassName?: string;
32
- itemRender: (option: Option) => JSX.Element;
32
+ itemRender: (option: Option, states: ItemRenderStates) => JSX.Element;
33
33
  disabled?: boolean;
34
34
  onClick?: (e: React.MouseEvent) => void;
35
35
  }
36
36
 
37
+ export interface ItemRenderStates {
38
+ index: number;
39
+ multiple?: boolean;
40
+ checked: boolean;
41
+ onChange: () => void;
42
+ disabled?: boolean;
43
+ }
44
+
37
45
  export class BaseSelection<
38
46
  T extends BaseSelectionProps = BaseSelectionProps,
39
47
  S = any
40
48
  > extends React.Component<T, S> {
49
+ static itemRender(option: Option, states: ItemRenderStates) {
50
+ return <span>{option.label}</span>;
51
+ }
52
+
41
53
  static defaultProps = {
42
54
  placeholder: 'placeholder.noOption',
43
- itemRender: (option: Option) => <span>{option.label}</span>,
55
+ itemRender: BaseSelection.itemRender,
44
56
  multiple: true,
45
57
  clearable: false
46
58
  };
@@ -182,7 +194,13 @@ export class BaseSelection<
182
194
  labelClassName={labelClassName}
183
195
  description={option.description}
184
196
  >
185
- {itemRender(option)}
197
+ {itemRender(option, {
198
+ index: key,
199
+ multiple: multiple,
200
+ checked: !!~valueArray.indexOf(option),
201
+ onChange: () => this.toggleOption(option),
202
+ disabled: disabled || option.disabled
203
+ })}
186
204
  </Checkbox>
187
205
  ));
188
206
  }