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
@@ -3,9 +3,13 @@ import moment from 'moment';
3
3
  import DaysView from 'react-datetime/src/DaysView';
4
4
  import React from 'react';
5
5
  import Downshift from 'downshift';
6
+ import find from 'lodash/find';
6
7
  import {LocaleProps, localeable} from '../../locale';
7
8
  import {ClassNamesFn} from '../../theme';
8
- import find from 'lodash/find';
9
+ import {isMobile, convertArrayValueToMoment} from "../../utils/helper";
10
+ import Picker from '../Picker';
11
+ import {PickerOption} from '../PickerColumn';
12
+ import {DateType} from './Calendar';
9
13
 
10
14
  interface CustomDaysViewProps extends LocaleProps {
11
15
  classPrefix?: string;
@@ -14,12 +18,16 @@ interface CustomDaysViewProps extends LocaleProps {
14
18
  viewDate: moment.Moment;
15
19
  selectedDate: moment.Moment;
16
20
  minDate: moment.Moment;
21
+ maxDate: moment.Moment;
22
+ useMobileUI: boolean;
23
+ embed: boolean;
17
24
  timeFormat: string;
18
25
  requiredConfirm?: boolean;
19
26
  isEndDate?: boolean;
20
27
  renderDay?: Function;
21
28
  onClose?: () => void;
22
29
  onChange: (value: moment.Moment) => void;
30
+ onConfirm?: (value: number[], types: DateType[]) => void;
23
31
  setDateTimeState: (state: any) => void;
24
32
  setTime: (type: string, amount: number) => void;
25
33
  subtractTime: (
@@ -41,20 +49,52 @@ interface CustomDaysViewProps extends LocaleProps {
41
49
  handleClickOutside: () => void;
42
50
  classnames: ClassNamesFn;
43
51
  schedules?: Array<{
44
- startTime: Date,
45
- endTime: Date,
46
- content: any,
47
- className?: string
52
+ startTime: Date;
53
+ endTime: Date;
54
+ content: any;
55
+ className?: string;
48
56
  }>;
49
57
  largeMode?: boolean;
50
58
  onScheduleClick?: (scheduleData: any) => void;
59
+ hideHeader?: boolean;
60
+ getColumns: (types: DateType[], dateBoundary: void) => any;
61
+ getDateBoundary: (currentDate: moment.Moment) => any;
51
62
  }
52
63
 
53
64
  export class CustomDaysView extends DaysView {
54
65
  props: CustomDaysViewProps;
66
+ state: { columns: { options: PickerOption[] }[]; types: DateType[]; pickerValue: number[]};
67
+ setState: (arg0: any) => () => any;
55
68
  getDaysOfWeek: (locale: any) => any;
56
69
  renderDays: () => JSX.Element;
57
70
 
71
+ constructor(props: any) {
72
+ super(props);
73
+
74
+ const {selectedDate, viewDate, timeFormat} = props;
75
+ const currentDate = (selectedDate || viewDate || moment());
76
+
77
+ const types: DateType[] = ['year', 'month', 'date'];
78
+ timeFormat.split(':').forEach((format: string) => {
79
+ const type: DateType | '' = /h/i.test(format)
80
+ ? 'hours'
81
+ : /m/.test(format)
82
+ ? 'minutes'
83
+ : /s/.test(format)
84
+ ? 'seconds'
85
+ : '';
86
+ type && types.push(type)
87
+ });
88
+
89
+ const dateBoundary = this.props.getDateBoundary(currentDate);
90
+ const columns = this.props.getColumns(types, dateBoundary);
91
+ this.state = {
92
+ columns,
93
+ types,
94
+ pickerValue: currentDate.toArray()
95
+ }
96
+ }
97
+
58
98
  updateSelectedDate = (event: React.MouseEvent<any>) => {
59
99
  // need confirm
60
100
  if (this.props.requiredConfirm) {
@@ -129,7 +169,12 @@ export class CustomDaysView extends DaysView {
129
169
  if (this.props.schedules) {
130
170
  let schedule: any[] = [];
131
171
  this.props.schedules.forEach((item: any) => {
132
- if (currentDate.isSameOrAfter(moment(item.startTime).subtract(1, 'days')) && currentDate.isSameOrBefore(item.endTime)) {
172
+ if (
173
+ currentDate.isSameOrAfter(
174
+ moment(item.startTime).subtract(1, 'days')
175
+ ) &&
176
+ currentDate.isSameOrBefore(item.endTime)
177
+ ) {
133
178
  schedule.push(item);
134
179
  }
135
180
  });
@@ -141,8 +186,11 @@ export class CustomDaysView extends DaysView {
141
186
  scheduleData: schedule.map((item: any) => {
142
187
  return {
143
188
  ...item,
144
- time: moment(item.startTime).format('YYYY-MM-DD HH:mm:ss') + ' - ' + moment(item.endTime).format('YYYY-MM-DD HH:mm:ss'),
145
- }
189
+ time:
190
+ moment(item.startTime).format('YYYY-MM-DD HH:mm:ss') +
191
+ ' - ' +
192
+ moment(item.endTime).format('YYYY-MM-DD HH:mm:ss')
193
+ };
146
194
  }),
147
195
  currentDate
148
196
  };
@@ -156,8 +204,7 @@ export class CustomDaysView extends DaysView {
156
204
  }
157
205
  if (moment(schedule[i].startTime).isSame(currentDate, 'day')) {
158
206
  showSchedule.push(schedule[i]);
159
- }
160
- else if (currentDate.weekday() === 0) {
207
+ } else if (currentDate.weekday() === 0) {
161
208
  // 周一重新设置日程
162
209
  showSchedule.push({
163
210
  ...schedule[i],
@@ -166,46 +213,86 @@ export class CustomDaysView extends DaysView {
166
213
  }
167
214
  }
168
215
  [0, 1, 2].forEach((i: number) => {
169
- const findSchedule = find(schedule, (item: any) => item.height === i);
170
- if (findSchedule && findSchedule !== showSchedule[i] && currentDate.weekday() !== 0) {
216
+ const findSchedule = find(
217
+ schedule,
218
+ (item: any) => item.height === i
219
+ );
220
+ if (
221
+ findSchedule &&
222
+ findSchedule !== showSchedule[i] &&
223
+ currentDate.weekday() !== 0
224
+ ) {
171
225
  // 生成一个空白格占位
172
226
  showSchedule.splice(i, 0, {
173
227
  width: 1,
174
228
  className: 'bg-transparent',
175
229
  content: ''
176
230
  });
177
- }
178
- else {
231
+ } else {
179
232
  showSchedule[i] && (showSchedule[i].height = i);
180
233
  }
181
234
  });
182
235
  // 最多展示3个
183
236
  showSchedule = showSchedule.slice(0, 3);
184
237
  const scheduleDiv = showSchedule.map((item: any, index: number) => {
185
- const width = item.width || Math.min(moment(item.endTime).diff(moment(item.startTime), 'days') + 1, 7 - moment(item.startTime).weekday());
186
- return <div key={props.key + 'content' + index}
187
- className={cx('ScheduleCalendar-large-schedule-content', item.className)}
188
- style={{width: width + '00%'}}
189
- onClick={() => this.props.onScheduleClick && this.props.onScheduleClick(scheduleData)}>
190
- <div className={cx('ScheduleCalendar-text-overflow')}>{item.content}</div>
191
- </div>;
238
+ const width =
239
+ item.width ||
240
+ Math.min(
241
+ moment(item.endTime).diff(moment(item.startTime), 'days') + 1,
242
+ 7 - moment(item.startTime).weekday()
243
+ );
244
+ return (
245
+ <div
246
+ key={props.key + 'content' + index}
247
+ className={cx(
248
+ 'ScheduleCalendar-large-schedule-content',
249
+ item.className
250
+ )}
251
+ style={{width: width + '00%'}}
252
+ onClick={() =>
253
+ this.props.onScheduleClick &&
254
+ this.props.onScheduleClick(scheduleData)
255
+ }
256
+ >
257
+ <div className={cx('ScheduleCalendar-text-overflow')}>
258
+ {item.content}
259
+ </div>
260
+ </div>
261
+ );
192
262
  });
193
- return <td {...props}>
263
+ return (
264
+ <td {...props}>
194
265
  <div className={cx('ScheduleCalendar-large-day-wrap')}>
195
- <div className={cx('ScheduleCalendar-large-schedule-header')}>{currentDate.date()}</div>
266
+ <div className={cx('ScheduleCalendar-large-schedule-header')}>
267
+ {currentDate.date()}
268
+ </div>
196
269
  {scheduleDiv}
197
- {schedule.length > 3 && <div className={cx('ScheduleCalendar-large-schedule-footer')}>{schedule.length - 3} {__('more')}</div>}
270
+ {schedule.length > 3 && (
271
+ <div className={cx('ScheduleCalendar-large-schedule-footer')}>
272
+ {schedule.length - 3} {__('more')}
273
+ </div>
274
+ )}
198
275
  </div>
199
- </td>
276
+ </td>
277
+ );
200
278
  }
201
279
 
202
280
  // 正常模式
203
- const ScheduleIcon = <span className={cx('ScheduleCalendar-icon', schedule[0].className)}
204
- onClick={() => this.props.onScheduleClick && this.props.onScheduleClick(scheduleData)}></span>;
205
- return <td {...props}>
206
- {currentDate.date()}
207
- {ScheduleIcon}
208
- </td>;
281
+ const ScheduleIcon = (
282
+ <span
283
+ className={cx('ScheduleCalendar-icon', schedule[0].className)}
284
+ onClick={() =>
285
+ this.props.onScheduleClick &&
286
+ this.props.onScheduleClick(scheduleData)
287
+ }
288
+ ></span>
289
+ );
290
+ return (
291
+ <td {...props}>
292
+ {currentDate.date()}
293
+ {ScheduleIcon}
294
+ </td>
295
+ );
209
296
  }
210
297
  }
211
298
  return <td {...props}>{currentDate.date()}</td>;
@@ -357,14 +444,59 @@ export class CustomDaysView extends DaysView {
357
444
  );
358
445
  };
359
446
 
447
+ onPickerConfirm = (value: number[]) => {
448
+ this.props.onConfirm && this.props.onConfirm(value, this.state.types);
449
+ }
450
+
451
+ onPickerChange = (value: number[], index: number) => {
452
+ const {selectedDate, viewDate} = this.props;
453
+
454
+ // 变更年份、月份的时候,需要更新columns
455
+ if (index === 1 || index === 0) {
456
+ const currentDate = (selectedDate || viewDate || moment()).clone();
457
+
458
+ // 只需计算year 、month
459
+ const selectDate = convertArrayValueToMoment(value, ['year', 'month'], currentDate);
460
+ const dateBoundary = this.props.getDateBoundary(selectDate);
461
+ this.setState({
462
+ columns: this.props.getColumns(this.state.types, dateBoundary),
463
+ pickerValue: value
464
+ });
465
+ }
466
+ }
467
+
468
+ renderPicker = () => {
469
+ const {translate: __} = this.props;
470
+ const title = this.state.types.length > 3 ? __('Date.titleTime') : __('Date.titleDate');
471
+ return (
472
+ <Picker
473
+ translate={this.props.translate}
474
+ locale={this.props.locale}
475
+ title={title}
476
+ columns={this.state.columns}
477
+ value={this.state.pickerValue}
478
+ onChange={this.onPickerChange}
479
+ onConfirm={this.onPickerConfirm}
480
+ onClose={this.cancel}
481
+ />
482
+ );
483
+ };
484
+
360
485
  render() {
486
+ const {viewDate: date, useMobileUI, embed} = this.props;
361
487
  const footer = this.renderFooter();
362
- const date = this.props.viewDate;
363
488
  const locale = date.localeData();
364
489
  const __ = this.props.translate;
490
+ if (isMobile() && useMobileUI && !embed) {
491
+ return (
492
+ <div className="rdtYears">
493
+ {this.renderPicker()}
494
+ </div>
495
+ );
496
+ }
365
497
 
366
498
  const tableChildren = [
367
- <thead key="th">
499
+ this.props.hideHeader ? null : <thead key="th">
368
500
  <tr>
369
501
  <th colSpan={7}>
370
502
  <div className="rdtHeader">
@@ -3,14 +3,20 @@ import MonthsView from 'react-datetime/src/MonthsView';
3
3
  import moment from 'moment';
4
4
  import React from 'react';
5
5
  import {LocaleProps, localeable, TranslateFn} from '../../locale';
6
+ import Picker from '../Picker';
7
+ import {PickerOption} from '../PickerColumn';
8
+ import {getRange, isMobile} from '../../utils/helper';
9
+ import {DateType} from './Calendar';
6
10
 
7
11
  export interface OtherProps {
8
12
  inputFormat?: string;
13
+ hideHeader?: boolean;
9
14
  }
10
15
 
11
16
  export class CustomMonthsView extends MonthsView {
12
17
  props: {
13
18
  viewDate: moment.Moment;
19
+ selectedDate: moment.Moment;
14
20
  subtractTime: (
15
21
  amount: number,
16
22
  type: string,
@@ -22,9 +28,38 @@ export class CustomMonthsView extends MonthsView {
22
28
  toSelected?: moment.Moment
23
29
  ) => () => void;
24
30
  showView: (view: string) => () => void;
31
+ minDate?: moment.Moment;
32
+ maxDate?: moment.Moment;
33
+ onChange?: () => void;
34
+ onClose?: () => void;
35
+ onConfirm?: (value: number[], types: string[]) => void;
36
+ getColumns: (types: DateType[], dateBoundary: void) => any;
37
+ timeCell: (value: number, type: DateType) => string;
38
+ getDateBoundary: (currentDate: moment.Moment) => any;
39
+ useMobileUI: boolean;
25
40
  } & LocaleProps &
26
41
  OtherProps;
42
+ maxDateObject: {year: number; month: number; day?: number};
43
+ minDateObject: {year: number; month: number; day?: number};
44
+ state: { columns: { options: PickerOption[] }[]; pickerValue: number[]};
45
+ setState: (arg0: any) => () => any;
27
46
  renderMonths: () => JSX.Element;
47
+
48
+
49
+ constructor(props: any) {
50
+ super(props);
51
+
52
+ const {selectedDate, viewDate} = props;
53
+ const currentDate = (selectedDate || viewDate || moment());
54
+
55
+ const dateBoundary = this.props.getDateBoundary(currentDate);
56
+ const columns = this.props.getColumns(['year', 'month'], dateBoundary);
57
+ this.state = {
58
+ columns,
59
+ pickerValue: currentDate.toArray()
60
+ }
61
+ }
62
+
28
63
  renderMonth = (props: any, month: number) => {
29
64
  var localMoment = this.props.viewDate;
30
65
  var monthStr = localMoment
@@ -40,11 +75,83 @@ export class CustomMonthsView extends MonthsView {
40
75
  </td>
41
76
  );
42
77
  };
78
+
79
+ onConfirm = (value: number[]) => {
80
+ this.props.onConfirm && this.props.onConfirm(value, ['year', 'month']);
81
+ };
82
+
83
+ onPickerChange = (value: number[], index: number) => {
84
+ const {maxDate, minDate} = this.props;
85
+ const year = moment().year();
86
+ const columns = [...this.state.columns];
87
+ const maxDateObject = maxDate
88
+ ? maxDate.toObject()
89
+ : {
90
+ years: year + 100,
91
+ months: 11
92
+ };
93
+ const minDateObject = minDate
94
+ ? minDate.toObject()
95
+ : {
96
+ years: year - 100,
97
+ months: 0
98
+ };
99
+ let range = [];
100
+ // 选择年份是最大值的年或者最小值的月时,需要重新计算月分选择的cloumn
101
+ if (index === 0) {
102
+ if (
103
+ value[0] === minDateObject.years &&
104
+ value[0] === maxDateObject.years
105
+ ) {
106
+ range = getRange(minDateObject.months, maxDateObject.months, 1);
107
+ }
108
+ else if (value[0] === minDateObject.years) {
109
+ range = getRange(minDateObject.months, 11, 1);
110
+ }
111
+ else if (value[0] === maxDateObject.years) {
112
+ range = getRange(0, maxDateObject.months, 1);
113
+ }
114
+ else {
115
+ range = getRange(0, 11, 1);
116
+ }
117
+ columns[1] = {
118
+ options: range.map(i => {
119
+ return {
120
+ text: this.props.timeCell(i+1, 'month'),
121
+ value: i
122
+ };
123
+ })
124
+ };
125
+ this.setState({columns, pickerValue: value});
126
+ }
127
+ };
128
+
129
+ renderPicker = () => {
130
+ const {translate: __} = this.props;
131
+ const title = __('Date.titleMonth');
132
+
133
+ return (
134
+ <Picker
135
+ translate={this.props.translate}
136
+ locale={this.props.locale}
137
+ title={title}
138
+ columns={this.state.columns}
139
+ value={this.state.pickerValue}
140
+ onChange={this.onPickerChange}
141
+ onConfirm={this.onConfirm}
142
+ onClose={this.props.onClose}
143
+ />
144
+ );
145
+ };
146
+
43
147
  render() {
44
148
  const __ = this.props.translate;
45
- const showYearHead = !/^mm$/i.test(this.props.inputFormat || '');
149
+ const showYearHead = !/^mm$/i.test(this.props.inputFormat || '') && !this.props.hideHeader;
46
150
  const canClick = /yy/i.test(this.props.inputFormat || '');
47
151
 
152
+ if (isMobile() && this.props.useMobileUI) {
153
+ return <div className="rdtYears">{this.renderPicker()}</div>;
154
+ }
48
155
  return (
49
156
  <div className="rdtMonths">
50
157
  {showYearHead && (
@@ -23,6 +23,7 @@ export interface QuarterViewProps extends LocaleProps, ThemeProps {
23
23
  updateSelectedDate: (e: any, close?: boolean) => void;
24
24
  renderQuarter: any;
25
25
  isValidDate: (date: moment.Moment) => boolean;
26
+ hideHeader?: boolean;
26
27
  }
27
28
 
28
29
  export class QuarterView extends React.Component<QuarterViewProps> {
@@ -140,11 +141,11 @@ export class QuarterView extends React.Component<QuarterViewProps> {
140
141
  }
141
142
 
142
143
  render() {
143
- const {classnames: cx} = this.props;
144
+ const {classnames: cx, hideHeader} = this.props;
144
145
 
145
146
  return (
146
147
  <div className={cx('ClalendarQuarter')}>
147
- {this.renderYear()}
148
+ {hideHeader ? null : this.renderYear()}
148
149
  <table>
149
150
  <tbody>{this.renderQuarters()}</tbody>
150
151
  </table>
@@ -7,35 +7,46 @@ import {Icon} from '../icons';
7
7
  import {ClassNamesFn} from '../../theme';
8
8
  import Picker from '../Picker';
9
9
  import {PickerColumnItem} from '../PickerColumn';
10
- import {getRange, isMobile} from "../../utils/helper";
10
+ import {getRange, isMobile} from '../../utils/helper';
11
+
12
+ interface State {
13
+ daypart: any;
14
+ counters: Array<string>;
15
+ [propName: string]: any;
16
+ }
17
+
18
+ interface CustomTimeViewProps {
19
+ viewDate: moment.Moment;
20
+ selectedDate: moment.Moment;
21
+ subtractTime: (
22
+ amount: number,
23
+ type: string,
24
+ toSelected?: moment.Moment
25
+ ) => () => void;
26
+ addTime: (
27
+ amount: number,
28
+ type: string,
29
+ toSelected?: moment.Moment
30
+ ) => () => void;
31
+ showView: (view: string) => () => void;
32
+ timeFormat: string;
33
+ classnames: ClassNamesFn;
34
+ setTime: (type: string, value: any) => void;
35
+ onClose?: () => void;
36
+ onConfirm?: (value: number[], types: string[]) => void;
37
+ useMobileUI: boolean;
38
+ showToolbar?: boolean;
39
+ onChange?: (value: any) => void;
40
+ };
11
41
 
12
42
  export class CustomTimeView extends TimeView {
13
- props: {
14
- viewDate: moment.Moment;
15
- subtractTime: (
16
- amount: number,
17
- type: string,
18
- toSelected?: moment.Moment
19
- ) => () => void;
20
- addTime: (
21
- amount: number,
22
- type: string,
23
- toSelected?: moment.Moment
24
- ) => () => void;
25
- showView: (view: string) => () => void;
26
- timeFormat: string;
27
- classnames: ClassNamesFn;
28
- setTime: (type: string, value: any) => void;
29
- onClose?: () => void;
30
- onConfirm?: (value: number[], types: string[]) => void;
31
- useMobileUI: boolean;
32
- } & LocaleProps;
43
+ props: CustomTimeViewProps & LocaleProps;
33
44
  onStartClicking: any;
34
45
  disableContextMenu: any;
35
46
  updateMilli: any;
36
47
  renderHeader: any;
37
48
  pad: any;
38
- state: {daypart: any; counters: Array<string>; [propName: string]: any};
49
+ state: State;
39
50
  timeConstraints: any;
40
51
  padValues = {
41
52
  hours: 2,
@@ -43,7 +54,22 @@ export class CustomTimeView extends TimeView {
43
54
  seconds: 2,
44
55
  milliseconds: 3
45
56
  };
57
+ setState: (arg0: any) => () => any;
58
+ calculateState: (props: CustomTimeViewProps) => () => any;
46
59
 
60
+ static defaultProps = {
61
+ showToolbar: true
62
+ };
63
+
64
+
65
+ componentWillReceiveProps(nextProps: CustomTimeViewProps) {
66
+ if (nextProps.viewDate !== this.props.viewDate
67
+ || nextProps.selectedDate !== this.props.selectedDate
68
+ || nextProps.timeFormat !== this.props.timeFormat) {
69
+ this.setState(this.calculateState(nextProps));
70
+ }
71
+ }
72
+
47
73
  renderDayPart = () => {
48
74
  const {translate: __, classnames: cx} = this.props;
49
75
  return (
@@ -90,7 +116,7 @@ export class CustomTimeView extends TimeView {
90
116
  return parseInt(value);
91
117
  }
92
118
  return 0;
93
- }
119
+ };
94
120
 
95
121
  renderCounter = (type: string) => {
96
122
  const cx = this.props.classnames;
@@ -148,14 +174,28 @@ export class CustomTimeView extends TimeView {
148
174
  return null;
149
175
  };
150
176
 
151
- onConfirm = (value: number[]) => {
152
- this.props.onConfirm && this.props.onConfirm(value, this.state.counters);
153
- }
177
+ onConfirm = (value: (number | string)[]) => {
178
+ // 修正am、pm
179
+ const hourIndex = this.state.counters.indexOf('hours');
180
+ if (
181
+ hourIndex !== -1 &&
182
+ this.state.daypart !== false &&
183
+ this.props.timeFormat.toLowerCase().indexOf(' a') !== -1
184
+ ) {
185
+ const amMode: string = value.splice(-1, 1)[0] as string;
186
+ let hour = (value[hourIndex] as number) % 12;
187
+ // 修正pm
188
+ amMode.toLowerCase().indexOf('p') !== -1 && (hour = hour + 12);
189
+ value[hourIndex] = hour;
190
+ }
191
+
192
+ this.props.onConfirm && this.props.onConfirm(value as number[], this.state.counters);
193
+ };
154
194
 
155
195
  getDayPartOptions = () => {
156
196
  const {translate: __} = this.props;
157
197
  let options = ['am', 'pm'];
158
- if ( this.props.timeFormat.indexOf( ' A' ) !== -1 ) {
198
+ if (this.props.timeFormat.indexOf(' A') !== -1) {
159
199
  options = ['AM', 'PM'];
160
200
  }
161
201
 
@@ -163,55 +203,78 @@ export class CustomTimeView extends TimeView {
163
203
  text: __(daypart),
164
204
  value: daypart
165
205
  }));
206
+ };
207
+
208
+ onPickerChange = (value: (number | string)[], index: number) => {
209
+ const time: {[prop:string]: any} = {};
210
+ this.state.counters.forEach((type, i) => time[type] = value[i]);
211
+ if (this.state.daypart !== false && index > this.state.counters.length -1) {
212
+ time.daypart = value[value.length -1];
213
+ }
214
+ this.setState((prevState: State) => {
215
+ return {...prevState, ...time}
216
+ });
217
+ this.props.onChange && this.props.onChange(value);
166
218
  }
167
219
 
168
220
  renderTimeViewPicker = () => {
221
+ const {translate: __} = this.props;
222
+ const title = __('Date.titleTime');
169
223
  const columns: PickerColumnItem[] = [];
170
224
  const values = [];
171
225
 
172
226
  this.state.counters.forEach(type => {
173
227
  if (type !== 'daypart') {
174
- const counterValue: number = this.getCounterValue(type);
175
228
  let {min, max, step} = this.timeConstraints[type];
176
229
  // 修正am pm时hours可选最大值
177
- if (type === 'hours'
178
- && this.state.daypart !== false
179
- && this.props.timeFormat.toLowerCase().indexOf(' a') !== -1) {
180
- max = max > 12 ? 12 : max;
230
+ if (
231
+ type === 'hours' &&
232
+ this.state.daypart !== false &&
233
+ this.props.timeFormat.toLowerCase().indexOf(' a') !== -1
234
+ ) {
235
+ max = max > 12 ? 12 : max;
181
236
  }
182
237
  columns.push({
183
- options: getRange(min, max, step)
238
+ options: getRange(min, max, step).map(item => {
239
+ return {
240
+ text: this.pad(type, item),
241
+ value: item
242
+ }
243
+ })
184
244
  });
185
- values.push(counterValue);
245
+ values.push(parseInt(this.state[type], 10));
186
246
  }
187
247
  });
188
248
  if (this.state.daypart !== false) {
189
249
  columns.push({
190
250
  options: this.getDayPartOptions()
191
251
  });
192
- values.push(this.state.daypart)
252
+ values.push(this.state.daypart);
193
253
  }
194
254
 
195
255
  return (
196
256
  <Picker
197
257
  translate={this.props.translate}
198
258
  locale={this.props.locale}
259
+ title={title}
199
260
  columns={columns}
200
- value={values}
261
+ value={values}
201
262
  onConfirm={this.onConfirm}
202
263
  onClose={this.props.onClose}
264
+ showToolbar={this.props.showToolbar}
265
+ onChange={this.onPickerChange}
203
266
  />
204
267
  );
205
- }
268
+ };
206
269
 
207
270
  render() {
208
271
  let counters: Array<JSX.Element | null> = [];
209
272
  const cx = this.props.classnames;
210
-
273
+
211
274
  if (isMobile() && this.props.useMobileUI) {
212
- return <div className={cx('CalendarTime')}>
213
- {this.renderTimeViewPicker()}
214
- </div>
275
+ return (
276
+ <div className={cx('CalendarTime')}>{this.renderTimeViewPicker()}</div>
277
+ );
215
278
  }
216
279
  this.state.counters.forEach(c => {
217
280
  if (counters.length) {