amis 1.7.0 → 1.8.0-beta.13

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 (469) hide show
  1. package/lib/Schema.d.ts +10 -2
  2. package/lib/Schema.js +0 -1
  3. package/lib/Schema.js.map +2 -2
  4. package/lib/SchemaRenderer.js +19 -3
  5. package/lib/SchemaRenderer.js.map +2 -2
  6. package/lib/WithRootStore.d.ts +18 -0
  7. package/lib/WithStore.js +2 -1
  8. package/lib/WithStore.js.map +2 -2
  9. package/lib/actions/CmptAction.js +26 -4
  10. package/lib/actions/CmptAction.js.map +2 -2
  11. package/lib/actions/PageAction.d.ts +32 -0
  12. package/lib/actions/PageAction.js +72 -0
  13. package/lib/actions/PageAction.js.map +13 -0
  14. package/lib/actions/index.d.ts +1 -0
  15. package/lib/actions/index.js +1 -0
  16. package/lib/actions/index.js.map +2 -2
  17. package/lib/components/Alert2.js +4 -2
  18. package/lib/components/Alert2.js.map +2 -2
  19. package/lib/components/AssociatedSelection.js +9 -2
  20. package/lib/components/AssociatedSelection.js.map +2 -2
  21. package/lib/components/Avatar.d.ts +20 -20
  22. package/lib/components/BarCode.js +1 -1
  23. package/lib/components/BarCode.js.map +2 -2
  24. package/lib/components/CalendarMobile.d.ts +84 -84
  25. package/lib/components/Card.d.ts +20 -20
  26. package/lib/components/Cascader.d.ts +2 -0
  27. package/lib/components/Cascader.js +28 -12
  28. package/lib/components/Cascader.js.map +2 -2
  29. package/lib/components/Checkbox.d.ts +24 -23
  30. package/lib/components/Checkbox.js +5 -1
  31. package/lib/components/Checkbox.js.map +2 -2
  32. package/lib/components/CityArea.js +3 -0
  33. package/lib/components/CityArea.js.map +2 -2
  34. package/lib/components/Collapse.d.ts +20 -20
  35. package/lib/components/DatePicker.d.ts +87 -84
  36. package/lib/components/DatePicker.js +48 -11
  37. package/lib/components/DatePicker.js.map +2 -2
  38. package/lib/components/DateRangePicker.d.ts +285 -171
  39. package/lib/components/DateRangePicker.js +471 -66
  40. package/lib/components/DateRangePicker.js.map +2 -2
  41. package/lib/components/Drawer.js +1 -1
  42. package/lib/components/Drawer.js.map +2 -2
  43. package/lib/components/ListGroup.d.ts +21 -21
  44. package/lib/components/Modal.js +1 -1
  45. package/lib/components/Modal.js.map +2 -2
  46. package/lib/components/MonthRangePicker.d.ts +84 -84
  47. package/lib/components/Overlay.d.ts +1 -0
  48. package/lib/components/Overlay.js +4 -3
  49. package/lib/components/Overlay.js.map +2 -2
  50. package/lib/components/Progress.d.ts +29 -24
  51. package/lib/components/Progress.js +52 -21
  52. package/lib/components/Progress.js.map +2 -2
  53. package/lib/components/PullRefresh.d.ts +86 -0
  54. package/lib/components/PullRefresh.js +135 -0
  55. package/lib/components/PullRefresh.js.map +13 -0
  56. package/lib/components/Radios.d.ts +22 -22
  57. package/lib/components/Radios.js +3 -5
  58. package/lib/components/Radios.js.map +2 -2
  59. package/lib/components/Range.d.ts +2 -2
  60. package/lib/components/Range.js +24 -11
  61. package/lib/components/Range.js.map +2 -2
  62. package/lib/components/Spinner.d.ts +200 -107
  63. package/lib/components/Spinner.js +30 -26
  64. package/lib/components/Spinner.js.map +2 -2
  65. package/lib/components/Steps.d.ts +6 -0
  66. package/lib/components/Steps.js +13 -9
  67. package/lib/components/Steps.js.map +2 -2
  68. package/lib/components/Tabs.d.ts +27 -23
  69. package/lib/components/Tabs.js +37 -22
  70. package/lib/components/Tabs.js.map +2 -2
  71. package/lib/components/Tooltip.d.ts +4 -0
  72. package/lib/components/Tooltip.js +6 -4
  73. package/lib/components/Tooltip.js.map +2 -2
  74. package/lib/components/TooltipWrapper.d.ts +87 -24
  75. package/lib/components/TooltipWrapper.js +40 -8
  76. package/lib/components/TooltipWrapper.js.map +2 -2
  77. package/lib/components/Transfer.d.ts +84 -84
  78. package/lib/components/TransferDropDown.d.ts +84 -84
  79. package/lib/components/Tree.d.ts +87 -85
  80. package/lib/components/Tree.js +13 -5
  81. package/lib/components/Tree.js.map +2 -2
  82. package/lib/components/TreeSelection.d.ts +84 -84
  83. package/lib/components/calendar/Calendar.js +3 -12
  84. package/lib/components/calendar/Calendar.js.map +2 -2
  85. package/lib/components/calendar/TimeView.d.ts +1 -0
  86. package/lib/components/calendar/TimeView.js +7 -0
  87. package/lib/components/calendar/TimeView.js.map +2 -2
  88. package/lib/components/calendar/YearsView.js +3 -3
  89. package/lib/components/calendar/YearsView.js.map +2 -2
  90. package/lib/components/condition-builder/Expression.d.ts +1 -0
  91. package/lib/components/condition-builder/Expression.js +4 -4
  92. package/lib/components/condition-builder/Expression.js.map +2 -2
  93. package/lib/components/condition-builder/Field.d.ts +1 -0
  94. package/lib/components/condition-builder/Field.js +3 -2
  95. package/lib/components/condition-builder/Field.js.map +2 -2
  96. package/lib/components/condition-builder/Group.d.ts +1 -0
  97. package/lib/components/condition-builder/Group.js +2 -2
  98. package/lib/components/condition-builder/Group.js.map +2 -2
  99. package/lib/components/condition-builder/GroupOrItem.d.ts +1 -0
  100. package/lib/components/condition-builder/GroupOrItem.js +2 -2
  101. package/lib/components/condition-builder/GroupOrItem.js.map +2 -2
  102. package/lib/components/condition-builder/InputSwitch.d.ts +2 -1
  103. package/lib/components/condition-builder/InputSwitch.js +2 -2
  104. package/lib/components/condition-builder/InputSwitch.js.map +2 -2
  105. package/lib/components/condition-builder/Item.d.ts +1 -0
  106. package/lib/components/condition-builder/Item.js +9 -8
  107. package/lib/components/condition-builder/Item.js.map +2 -2
  108. package/lib/components/condition-builder/Value.d.ts +1 -0
  109. package/lib/components/condition-builder/Value.js +5 -5
  110. package/lib/components/condition-builder/Value.js.map +2 -2
  111. package/lib/components/condition-builder/index.d.ts +1 -0
  112. package/lib/components/condition-builder/index.js +2 -2
  113. package/lib/components/condition-builder/index.js.map +2 -2
  114. package/lib/components/formula/Editor.d.ts +90 -86
  115. package/lib/components/formula/Editor.js +26 -4
  116. package/lib/components/formula/Editor.js.map +2 -2
  117. package/lib/components/formula/Picker.d.ts +5 -0
  118. package/lib/components/formula/Picker.js +21 -4
  119. package/lib/components/formula/Picker.js.map +2 -2
  120. package/lib/components/icons.js +2 -0
  121. package/lib/components/icons.js.map +2 -2
  122. package/lib/factory.d.ts +5 -0
  123. package/lib/factory.js +24 -3
  124. package/lib/factory.js.map +2 -2
  125. package/lib/icons/trash.js +10 -0
  126. package/lib/index.d.ts +1 -0
  127. package/lib/index.js +2 -1
  128. package/lib/index.js.map +2 -2
  129. package/lib/locale/de-DE.js +18 -1
  130. package/lib/locale/de-DE.js.map +2 -2
  131. package/lib/locale/en-US.js +18 -1
  132. package/lib/locale/en-US.js.map +2 -2
  133. package/lib/locale/zh-CN.js +18 -1
  134. package/lib/locale/zh-CN.js.map +2 -2
  135. package/lib/renderers/Action.d.ts +3 -1
  136. package/lib/renderers/Action.js +23 -5
  137. package/lib/renderers/Action.js.map +2 -2
  138. package/lib/renderers/App.d.ts +1 -0
  139. package/lib/renderers/App.js +3 -0
  140. package/lib/renderers/App.js.map +2 -2
  141. package/lib/renderers/ButtonGroup.d.ts +2 -2
  142. package/lib/renderers/ButtonGroup.js.map +1 -1
  143. package/lib/renderers/CRUD.d.ts +8 -0
  144. package/lib/renderers/CRUD.js +12 -5
  145. package/lib/renderers/CRUD.js.map +2 -2
  146. package/lib/renderers/Carousel.d.ts +1 -0
  147. package/lib/renderers/Carousel.js +13 -1
  148. package/lib/renderers/Carousel.js.map +2 -2
  149. package/lib/renderers/Chart.d.ts +1 -0
  150. package/lib/renderers/Chart.js +3 -0
  151. package/lib/renderers/Chart.js.map +2 -2
  152. package/lib/renderers/Dialog.d.ts +5 -0
  153. package/lib/renderers/Dialog.js +7 -3
  154. package/lib/renderers/Dialog.js.map +2 -2
  155. package/lib/renderers/Drawer.d.ts +1 -0
  156. package/lib/renderers/Drawer.js +6 -1
  157. package/lib/renderers/Drawer.js.map +2 -2
  158. package/lib/renderers/DropDownButton.d.ts +2 -0
  159. package/lib/renderers/DropDownButton.js +13 -4
  160. package/lib/renderers/DropDownButton.js.map +2 -2
  161. package/lib/renderers/Form/Checkbox.d.ts +5 -2
  162. package/lib/renderers/Form/Checkbox.js +2 -2
  163. package/lib/renderers/Form/Checkbox.js.map +2 -2
  164. package/lib/renderers/Form/Checkboxes.d.ts +7 -2
  165. package/lib/renderers/Form/Checkboxes.js +101 -12
  166. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  167. package/lib/renderers/Form/Combo.d.ts +6 -4
  168. package/lib/renderers/Form/Combo.js +132 -45
  169. package/lib/renderers/Form/Combo.js.map +2 -2
  170. package/lib/renderers/Form/DiffEditor.d.ts +3 -2
  171. package/lib/renderers/Form/Editor.d.ts +2 -2
  172. package/lib/renderers/Form/InputCity.d.ts +87 -84
  173. package/lib/renderers/Form/InputCity.js +48 -3
  174. package/lib/renderers/Form/InputCity.js.map +2 -2
  175. package/lib/renderers/Form/InputDate.js +10 -3
  176. package/lib/renderers/Form/InputDate.js.map +2 -2
  177. package/lib/renderers/Form/InputDateRange.d.ts +5 -0
  178. package/lib/renderers/Form/InputDateRange.js +12 -3
  179. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  180. package/lib/renderers/Form/InputFile.js +19 -8
  181. package/lib/renderers/Form/InputFile.js.map +2 -2
  182. package/lib/renderers/Form/InputFormula.d.ts +4 -0
  183. package/lib/renderers/Form/InputFormula.js +2 -2
  184. package/lib/renderers/Form/InputFormula.js.map +2 -2
  185. package/lib/renderers/Form/InputImage.js +18 -7
  186. package/lib/renderers/Form/InputImage.js.map +2 -2
  187. package/lib/renderers/Form/InputMonthRange.js +5 -1
  188. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  189. package/lib/renderers/Form/InputRange.d.ts +2 -2
  190. package/lib/renderers/Form/InputRange.js +13 -14
  191. package/lib/renderers/Form/InputRange.js.map +2 -2
  192. package/lib/renderers/Form/InputTable.js +4 -2
  193. package/lib/renderers/Form/InputTable.js.map +2 -2
  194. package/lib/renderers/Form/InputText.d.ts +1 -1
  195. package/lib/renderers/Form/InputText.js +8 -10
  196. package/lib/renderers/Form/InputText.js.map +2 -2
  197. package/lib/renderers/Form/InputTree.d.ts +5 -0
  198. package/lib/renderers/Form/InputTree.js +51 -2
  199. package/lib/renderers/Form/InputTree.js.map +2 -2
  200. package/lib/renderers/Form/Item.d.ts +79 -76
  201. package/lib/renderers/Form/Item.js +3 -1
  202. package/lib/renderers/Form/Item.js.map +2 -2
  203. package/lib/renderers/Form/NestedSelect.d.ts +4 -0
  204. package/lib/renderers/Form/NestedSelect.js +14 -5
  205. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  206. package/lib/renderers/Form/Options.js +61 -27
  207. package/lib/renderers/Form/Options.js.map +2 -2
  208. package/lib/renderers/Form/Select.js +4 -2
  209. package/lib/renderers/Form/Select.js.map +2 -2
  210. package/lib/renderers/Form/Textarea.js +2 -1
  211. package/lib/renderers/Form/Textarea.js.map +2 -2
  212. package/lib/renderers/Form/TreeSelect.d.ts +11 -2
  213. package/lib/renderers/Form/TreeSelect.js +56 -10
  214. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  215. package/lib/renderers/Form/index.d.ts +3 -0
  216. package/lib/renderers/Form/index.js +53 -16
  217. package/lib/renderers/Form/index.js.map +2 -2
  218. package/lib/renderers/Form/wrapControl.d.ts +10 -0
  219. package/lib/renderers/Form/wrapControl.js +41 -19
  220. package/lib/renderers/Form/wrapControl.js.map +2 -2
  221. package/lib/renderers/Nav.d.ts +82 -67
  222. package/lib/renderers/Nav.js +49 -13
  223. package/lib/renderers/Nav.js.map +2 -2
  224. package/lib/renderers/Page.d.ts +21 -0
  225. package/lib/renderers/Page.js +56 -17
  226. package/lib/renderers/Page.js.map +2 -2
  227. package/lib/renderers/Progress.d.ts +4 -7
  228. package/lib/renderers/Progress.js +3 -3
  229. package/lib/renderers/Progress.js.map +2 -2
  230. package/lib/renderers/Service.d.ts +3 -0
  231. package/lib/renderers/Service.js +55 -20
  232. package/lib/renderers/Service.js.map +2 -2
  233. package/lib/renderers/Spinner.d.ts +58 -2
  234. package/lib/renderers/Spinner.js +8 -1
  235. package/lib/renderers/Spinner.js.map +2 -2
  236. package/lib/renderers/Steps.d.ts +8 -0
  237. package/lib/renderers/Steps.js +2 -2
  238. package/lib/renderers/Steps.js.map +2 -2
  239. package/lib/renderers/Table/ColumnToggler.d.ts +4 -0
  240. package/lib/renderers/Table/ColumnToggler.js +11 -6
  241. package/lib/renderers/Table/ColumnToggler.js.map +2 -2
  242. package/lib/renderers/Table/TableCell.js +27 -1
  243. package/lib/renderers/Table/TableCell.js.map +2 -2
  244. package/lib/renderers/Table/TableRow.js +1 -1
  245. package/lib/renderers/Table/TableRow.js.map +2 -2
  246. package/lib/renderers/Table/index.d.ts +2 -0
  247. package/lib/renderers/Table/index.js +23 -10
  248. package/lib/renderers/Table/index.js.map +2 -2
  249. package/lib/renderers/Tabs.d.ts +14 -2
  250. package/lib/renderers/Tabs.js +24 -8
  251. package/lib/renderers/Tabs.js.map +2 -2
  252. package/lib/renderers/TooltipWrapper.d.ts +133 -0
  253. package/lib/renderers/TooltipWrapper.js +70 -0
  254. package/lib/renderers/TooltipWrapper.js.map +13 -0
  255. package/lib/renderers/Wizard.d.ts +7 -3
  256. package/lib/renderers/Wizard.js +269 -152
  257. package/lib/renderers/Wizard.js.map +2 -2
  258. package/lib/store/combo.d.ts +2 -2
  259. package/lib/store/crud.d.ts +1 -0
  260. package/lib/store/crud.js +55 -19
  261. package/lib/store/crud.js.map +2 -2
  262. package/lib/store/form.d.ts +1 -1
  263. package/lib/store/form.js +5 -1
  264. package/lib/store/form.js.map +2 -2
  265. package/lib/store/formItem.js +1 -1
  266. package/lib/store/formItem.js.map +2 -2
  267. package/lib/store/index.d.ts +5 -0
  268. package/lib/store/index.js +14 -0
  269. package/lib/store/index.js.map +2 -2
  270. package/lib/store/table.d.ts +2 -2
  271. package/lib/store/table.js +4 -4
  272. package/lib/store/table.js.map +2 -2
  273. package/lib/themes/ang-ie11.css +965 -210
  274. package/lib/themes/ang.css +955 -175
  275. package/lib/themes/ang.css.map +1 -1
  276. package/lib/themes/antd-ie11.css +1080 -325
  277. package/lib/themes/antd.css +956 -176
  278. package/lib/themes/antd.css.map +1 -1
  279. package/lib/themes/cxd-ie11.css +1048 -293
  280. package/lib/themes/cxd.css +961 -180
  281. package/lib/themes/cxd.css.map +1 -1
  282. package/lib/themes/dark-ie11.css +965 -210
  283. package/lib/themes/dark.css +955 -175
  284. package/lib/themes/dark.css.map +1 -1
  285. package/lib/themes/default-ie11.css +1048 -293
  286. package/lib/themes/default.css +961 -180
  287. package/lib/themes/default.css.map +1 -1
  288. package/lib/types.d.ts +3 -1
  289. package/lib/types.js.map +1 -1
  290. package/lib/utils/ColorScale.d.ts +19 -0
  291. package/lib/utils/ColorScale.js +104 -0
  292. package/lib/utils/ColorScale.js.map +13 -0
  293. package/lib/utils/api.js +20 -4
  294. package/lib/utils/api.js.map +2 -2
  295. package/lib/utils/columnsSplit.d.ts +1 -0
  296. package/lib/utils/columnsSplit.js +40 -0
  297. package/lib/utils/columnsSplit.js.map +13 -0
  298. package/lib/utils/debug.d.ts +1 -1
  299. package/lib/utils/debug.js +16 -22
  300. package/lib/utils/debug.js.map +2 -2
  301. package/lib/utils/dom.d.ts +1 -1
  302. package/lib/utils/dom.js +7 -5
  303. package/lib/utils/dom.js.map +2 -2
  304. package/lib/utils/position.js +0 -1
  305. package/lib/utils/position.js.map +2 -2
  306. package/lib/utils/scrollPosition.d.ts +6 -0
  307. package/lib/utils/scrollPosition.js +31 -0
  308. package/lib/utils/scrollPosition.js.map +13 -0
  309. package/package.json +3 -2
  310. package/schema.json +30213 -29222
  311. package/scss/_properties.scss +67 -25
  312. package/scss/components/_alert.scss +1 -1
  313. package/scss/components/_barcode.scss +1 -1
  314. package/scss/components/_button-group.scss +15 -0
  315. package/scss/components/_carousel.scss +1 -0
  316. package/scss/components/_column-toggler.scss +21 -11
  317. package/scss/components/_debug.scss +3 -3
  318. package/scss/components/_formula.scss +19 -1
  319. package/scss/components/_nav.scss +51 -6
  320. package/scss/components/_progress.scss +7 -14
  321. package/scss/components/_pull-refresh.scss +25 -0
  322. package/scss/components/_spinner.scss +134 -56
  323. package/scss/components/_steps.scss +199 -8
  324. package/scss/components/_tabs.scss +145 -13
  325. package/scss/components/_tooltip.scss +76 -9
  326. package/scss/components/form/_checks.scss +125 -2
  327. package/scss/components/form/_combo.scss +13 -1
  328. package/scss/components/form/_date-range.scss +27 -2
  329. package/scss/components/form/_date.scss +25 -0
  330. package/scss/components/form/_editor.scss +2 -1
  331. package/scss/components/form/_file.scss +4 -0
  332. package/scss/components/form/_form.scss +31 -8
  333. package/scss/components/form/_number.scss +5 -2
  334. package/scss/components/form/_select.scss +0 -1
  335. package/scss/components/form/_textarea.scss +1 -23
  336. package/scss/components/form/_transfer.scss +3 -2
  337. package/scss/themes/_antd-variables.scss +1 -1
  338. package/scss/themes/_common.scss +1 -0
  339. package/scss/themes/_cxd-variables.scss +6 -5
  340. package/sdk/ang-ie11.css +1059 -198
  341. package/sdk/ang.css +1050 -164
  342. package/sdk/antd-ie11.css +1167 -306
  343. package/sdk/antd.css +1051 -165
  344. package/sdk/barcode.js +51 -51
  345. package/sdk/charts.js +14 -14
  346. package/sdk/codemirror.js +7 -7
  347. package/sdk/color-picker.js +65 -65
  348. package/sdk/cropperjs.js +2 -2
  349. package/sdk/cxd-ie11.css +1145 -284
  350. package/sdk/cxd.css +1056 -169
  351. package/sdk/dark-ie11.css +1056 -195
  352. package/sdk/dark.css +1050 -164
  353. package/sdk/exceljs.js +1 -1
  354. package/sdk/locale/de-DE.js +18 -1
  355. package/sdk/markdown.js +69 -69
  356. package/sdk/papaparse.js +1 -1
  357. package/sdk/renderers/Form/CityDB.js +1 -1
  358. package/sdk/rest.js +17 -17
  359. package/sdk/rich-text.js +62 -62
  360. package/sdk/sdk-ie11.css +1145 -284
  361. package/sdk/sdk.css +1056 -169
  362. package/sdk/sdk.js +1321 -1273
  363. package/sdk/thirds/hls.js/hls.js +1 -1
  364. package/sdk/thirds/mpegts.js/mpegts.js +1 -1
  365. package/sdk/tinymce.js +57 -57
  366. package/src/Schema.ts +15 -2
  367. package/src/SchemaRenderer.tsx +32 -14
  368. package/src/WithStore.tsx +3 -1
  369. package/src/actions/CmptAction.ts +28 -0
  370. package/src/actions/PageAction.ts +62 -0
  371. package/src/actions/index.ts +1 -0
  372. package/src/components/Alert2.tsx +9 -3
  373. package/src/components/AssociatedSelection.tsx +9 -3
  374. package/src/components/BarCode.tsx +2 -2
  375. package/src/components/Cascader.tsx +37 -11
  376. package/src/components/Checkbox.tsx +11 -5
  377. package/src/components/CityArea.tsx +3 -0
  378. package/src/components/DatePicker.tsx +68 -22
  379. package/src/components/DateRangePicker.tsx +551 -88
  380. package/src/components/Drawer.tsx +1 -0
  381. package/src/components/Modal.tsx +1 -0
  382. package/src/components/Overlay.tsx +6 -3
  383. package/src/components/Progress.tsx +64 -33
  384. package/src/components/PullRefresh.tsx +197 -0
  385. package/src/components/Radios.tsx +6 -17
  386. package/src/components/Range.tsx +26 -12
  387. package/src/components/Spinner.tsx +77 -42
  388. package/src/components/Steps.tsx +28 -27
  389. package/src/components/Tabs.tsx +51 -21
  390. package/src/components/Tooltip.tsx +12 -3
  391. package/src/components/TooltipWrapper.tsx +140 -33
  392. package/src/components/Tree.tsx +19 -5
  393. package/src/components/calendar/Calendar.tsx +4 -13
  394. package/src/components/calendar/TimeView.tsx +12 -0
  395. package/src/components/calendar/YearsView.tsx +3 -4
  396. package/src/components/condition-builder/Expression.tsx +6 -1
  397. package/src/components/condition-builder/Field.tsx +5 -1
  398. package/src/components/condition-builder/Group.tsx +4 -1
  399. package/src/components/condition-builder/GroupOrItem.tsx +4 -1
  400. package/src/components/condition-builder/InputSwitch.tsx +4 -1
  401. package/src/components/condition-builder/Item.tsx +28 -4
  402. package/src/components/condition-builder/Value.tsx +7 -1
  403. package/src/components/condition-builder/index.tsx +4 -2
  404. package/src/components/formula/Editor.tsx +46 -10
  405. package/src/components/formula/Picker.tsx +32 -1
  406. package/src/components/icons.tsx +2 -0
  407. package/src/factory.tsx +31 -3
  408. package/src/icons/trash.svg +8 -0
  409. package/src/index.tsx +1 -0
  410. package/src/locale/de-DE.ts +18 -1
  411. package/src/locale/en-US.ts +18 -1
  412. package/src/locale/zh-CN.ts +18 -1
  413. package/src/renderers/Action.tsx +24 -2
  414. package/src/renderers/App.tsx +4 -0
  415. package/src/renderers/ButtonGroup.tsx +2 -2
  416. package/src/renderers/CRUD.tsx +23 -5
  417. package/src/renderers/Carousel.tsx +8 -0
  418. package/src/renderers/Chart.tsx +4 -0
  419. package/src/renderers/Dialog.tsx +21 -3
  420. package/src/renderers/Drawer.tsx +14 -2
  421. package/src/renderers/DropDownButton.tsx +14 -3
  422. package/src/renderers/Form/Checkbox.tsx +11 -2
  423. package/src/renderers/Form/Checkboxes.tsx +106 -23
  424. package/src/renderers/Form/Combo.tsx +179 -66
  425. package/src/renderers/Form/InputCity.tsx +46 -5
  426. package/src/renderers/Form/InputDate.tsx +18 -4
  427. package/src/renderers/Form/InputDateRange.tsx +27 -3
  428. package/src/renderers/Form/InputFile.tsx +23 -7
  429. package/src/renderers/Form/InputFormula.tsx +7 -0
  430. package/src/renderers/Form/InputImage.tsx +22 -6
  431. package/src/renderers/Form/InputMonthRange.tsx +7 -1
  432. package/src/renderers/Form/InputRange.tsx +20 -22
  433. package/src/renderers/Form/InputTable.tsx +6 -2
  434. package/src/renderers/Form/InputText.tsx +14 -4
  435. package/src/renderers/Form/InputTree.tsx +40 -2
  436. package/src/renderers/Form/Item.tsx +7 -0
  437. package/src/renderers/Form/NestedSelect.tsx +23 -4
  438. package/src/renderers/Form/Options.tsx +26 -7
  439. package/src/renderers/Form/Select.tsx +5 -3
  440. package/src/renderers/Form/Textarea.tsx +3 -1
  441. package/src/renderers/Form/TreeSelect.tsx +47 -9
  442. package/src/renderers/Form/index.tsx +56 -25
  443. package/src/renderers/Form/wrapControl.tsx +23 -12
  444. package/src/renderers/Nav.tsx +231 -33
  445. package/src/renderers/Page.tsx +97 -35
  446. package/src/renderers/Progress.tsx +9 -11
  447. package/src/renderers/Service.tsx +66 -27
  448. package/src/renderers/Spinner.tsx +85 -3
  449. package/src/renderers/Steps.tsx +14 -0
  450. package/src/renderers/Table/ColumnToggler.tsx +36 -11
  451. package/src/renderers/Table/TableCell.tsx +39 -1
  452. package/src/renderers/Table/TableRow.tsx +1 -1
  453. package/src/renderers/Table/index.tsx +43 -19
  454. package/src/renderers/Tabs.tsx +90 -31
  455. package/src/renderers/TooltipWrapper.tsx +262 -0
  456. package/src/renderers/Wizard.tsx +169 -93
  457. package/src/store/crud.ts +50 -5
  458. package/src/store/form.ts +8 -3
  459. package/src/store/formItem.ts +1 -2
  460. package/src/store/index.ts +20 -0
  461. package/src/store/table.ts +4 -4
  462. package/src/types.ts +8 -1
  463. package/src/utils/ColorScale.ts +138 -0
  464. package/src/utils/api.ts +26 -4
  465. package/src/utils/columnsSplit.tsx +57 -0
  466. package/src/utils/debug.tsx +17 -24
  467. package/src/utils/dom.tsx +7 -6
  468. package/src/utils/position.ts +0 -1
  469. package/src/utils/scrollPosition.ts +29 -0
@@ -5,12 +5,11 @@
5
5
  * @author fex
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.DateRangePicker = exports.availableRanges = void 0;
8
+ exports.DateRangePicker = exports.advancedRanges = exports.availableRanges = void 0;
9
9
  var tslib_1 = require("tslib");
10
10
  var react_1 = (0, tslib_1.__importDefault)(require("react"));
11
11
  var moment_1 = (0, tslib_1.__importDefault)(require("moment"));
12
12
  var react_dom_1 = require("react-dom");
13
- var classnames_1 = (0, tslib_1.__importDefault)(require("classnames"));
14
13
  var icons_1 = require("./icons");
15
14
  var Overlay_1 = (0, tslib_1.__importDefault)(require("./Overlay"));
16
15
  var Calendar_1 = (0, tslib_1.__importDefault)(require("./calendar/Calendar"));
@@ -20,6 +19,7 @@ var theme_1 = require("../theme");
20
19
  var helper_1 = require("../utils/helper");
21
20
  var locale_1 = require("../locale");
22
21
  var CalendarMobile_1 = (0, tslib_1.__importDefault)(require("./CalendarMobile"));
22
+ var Input_1 = (0, tslib_1.__importDefault)(require("./Input"));
23
23
  exports.availableRanges = {
24
24
  'today': {
25
25
  label: 'Date.today',
@@ -39,8 +39,18 @@ exports.availableRanges = {
39
39
  return now.add(-1, 'days').endOf('day');
40
40
  }
41
41
  },
42
- '1dayago': {
43
- label: 'DateRange.1dayago',
42
+ 'tomorrow': {
43
+ label: 'Date.tomorrow',
44
+ startDate: function (now) {
45
+ return now.add(1, 'days').startOf('day');
46
+ },
47
+ endDate: function (now) {
48
+ return now.add(1, 'days').endOf('day');
49
+ }
50
+ },
51
+ // 兼容一下错误的用法
52
+ '1daysago': {
53
+ label: 'DateRange.1daysago',
44
54
  startDate: function (now) {
45
55
  return now.add(-1, 'days');
46
56
  },
@@ -148,6 +158,176 @@ exports.availableRanges = {
148
158
  }
149
159
  }
150
160
  };
161
+ exports.advancedRanges = [
162
+ {
163
+ regexp: /^(\d+)hoursago$/,
164
+ resolve: function (__, _, hours) {
165
+ return {
166
+ label: __('DateRange.hoursago', { hours: hours }),
167
+ startDate: function (now) {
168
+ return now.add(-hours, 'hours').startOf('hour');
169
+ },
170
+ endDate: function (now) {
171
+ return now.add(-1, 'hours').endOf('hours');
172
+ }
173
+ };
174
+ }
175
+ },
176
+ {
177
+ regexp: /^(\d+)hourslater$/,
178
+ resolve: function (__, _, hours) {
179
+ return {
180
+ label: __('DateRange.hourslater', { hours: hours }),
181
+ startDate: function (now) {
182
+ return now.startOf('hour');
183
+ },
184
+ endDate: function (now) {
185
+ return now.add(hours, 'hours').endOf('hour');
186
+ }
187
+ };
188
+ }
189
+ },
190
+ {
191
+ regexp: /^(\d+)daysago$/,
192
+ resolve: function (__, _, days) {
193
+ return {
194
+ label: __('DateRange.daysago', { days: days }),
195
+ startDate: function (now) {
196
+ return now.add(-days, 'days').startOf('day');
197
+ },
198
+ endDate: function (now) {
199
+ return now.add(-1, 'days').endOf('day');
200
+ }
201
+ };
202
+ }
203
+ },
204
+ {
205
+ regexp: /^(\d+)dayslater$/,
206
+ resolve: function (__, _, days) {
207
+ return {
208
+ label: __('DateRange.dayslater', { days: days }),
209
+ startDate: function (now) {
210
+ return now.startOf('day');
211
+ },
212
+ endDate: function (now) {
213
+ return now.add(days, 'days').endOf('day');
214
+ }
215
+ };
216
+ }
217
+ },
218
+ {
219
+ regexp: /^(\d+)weeksago$/,
220
+ resolve: function (__, _, weeks) {
221
+ return {
222
+ label: __('DateRange.weeksago', { weeks: weeks }),
223
+ startDate: function (now) {
224
+ return now.startOf('week').add(-weeks, 'weeks');
225
+ },
226
+ endDate: function (now) {
227
+ return now.startOf('week').add(-1, 'days').endOf('day');
228
+ }
229
+ };
230
+ }
231
+ },
232
+ {
233
+ regexp: /^(\d+)weekslater$/,
234
+ resolve: function (__, _, weeks) {
235
+ return {
236
+ label: __('DateRange.weekslater', { weeks: weeks }),
237
+ startDate: function (now) {
238
+ return now.startOf('week');
239
+ },
240
+ endDate: function (now) {
241
+ return now.startOf('week').add(weeks, 'weeks').endOf('day');
242
+ }
243
+ };
244
+ }
245
+ },
246
+ {
247
+ regexp: /^(\d+)monthsago$/,
248
+ resolve: function (__, _, months) {
249
+ return {
250
+ label: __('DateRange.monthsago', { months: months }),
251
+ startDate: function (now) {
252
+ return now.startOf('months').add(-months, 'months');
253
+ },
254
+ endDate: function (now) {
255
+ return now.startOf('month').add(-1, 'days').endOf('day');
256
+ }
257
+ };
258
+ }
259
+ },
260
+ {
261
+ regexp: /^(\d+)monthslater$/,
262
+ resolve: function (__, _, months) {
263
+ return {
264
+ label: __('DateRange.monthslater', { months: months }),
265
+ startDate: function (now) {
266
+ return now.startOf('month');
267
+ },
268
+ endDate: function (now) {
269
+ return now.startOf('month').add(months, 'months').endOf('day');
270
+ }
271
+ };
272
+ }
273
+ },
274
+ {
275
+ regexp: /^(\d+)quartersago$/,
276
+ resolve: function (__, _, quarters) {
277
+ return {
278
+ label: __('DateRange.quartersago', { quarters: quarters }),
279
+ startDate: function (now) {
280
+ return now.startOf('quarters').add(-quarters, 'quarters');
281
+ },
282
+ endDate: function (now) {
283
+ return now.startOf('quarter').add(-1, 'days').endOf('day');
284
+ }
285
+ };
286
+ }
287
+ },
288
+ {
289
+ regexp: /^(\d+)quarterslater$/,
290
+ resolve: function (__, _, quarters) {
291
+ return {
292
+ label: __('DateRange.quarterslater', { quarters: quarters }),
293
+ startDate: function (now) {
294
+ return now.startOf('quarter');
295
+ },
296
+ endDate: function (now) {
297
+ return now.startOf('quarter').add(quarters, 'quarters').endOf('day');
298
+ }
299
+ };
300
+ }
301
+ },
302
+ {
303
+ regexp: /^(\d+)yearsago$/,
304
+ resolve: function (__, _, years) {
305
+ return {
306
+ label: __('DateRange.yearsago', { years: years }),
307
+ startDate: function (now) {
308
+ return now.startOf('years').add(-years, 'years');
309
+ },
310
+ endDate: function (now) {
311
+ return now.startOf('year').add(-1, 'days').endOf('day');
312
+ }
313
+ };
314
+ }
315
+ },
316
+ {
317
+ regexp: /^(\d+)yearslater$/,
318
+ resolve: function (__, _, years) {
319
+ return {
320
+ label: __('DateRange.yearslater', { years: years }),
321
+ startDate: function (now) {
322
+ return now.startOf('year');
323
+ },
324
+ endDate: function (now) {
325
+ return now.startOf('year').add(years, 'years').endOf('day');
326
+ }
327
+ };
328
+ }
329
+ }
330
+ ];
151
331
  var DateRangePicker = /** @class */ (function (_super) {
152
332
  (0, tslib_1.__extends)(DateRangePicker, _super);
153
333
  function DateRangePicker(props) {
@@ -155,9 +335,20 @@ var DateRangePicker = /** @class */ (function (_super) {
155
335
  // 是否是第一次点击,如果是第一次点击就可以点任意地址
156
336
  _this.isFirstClick = true;
157
337
  _this.nextMonth = (0, moment_1.default)().add(1, 'months');
338
+ _this.startInputRef = react_1.default.createRef();
339
+ _this.endInputRef = react_1.default.createRef();
340
+ _this.calendarRef = react_1.default.createRef();
158
341
  _this.open = _this.open.bind(_this);
342
+ _this.openStart = _this.openStart.bind(_this);
343
+ _this.openEnd = _this.openEnd.bind(_this);
159
344
  _this.close = _this.close.bind(_this);
160
- _this.handleSelectChange = _this.handleSelectChange.bind(_this);
345
+ _this.startInputChange = _this.startInputChange.bind(_this);
346
+ _this.endInputChange = _this.endInputChange.bind(_this);
347
+ _this.handleDateChange = _this.handleDateChange.bind(_this);
348
+ _this.handleStartDateChange = _this.handleStartDateChange.bind(_this);
349
+ _this.handeleEndDateChange = _this.handeleEndDateChange.bind(_this);
350
+ _this.handleTimeStartChange = _this.handleTimeStartChange.bind(_this);
351
+ _this.handleTimeEndChange = _this.handleTimeEndChange.bind(_this);
161
352
  _this.handleFocus = _this.handleFocus.bind(_this);
162
353
  _this.handleBlur = _this.handleBlur.bind(_this);
163
354
  _this.checkStartIsValidDate = _this.checkStartIsValidDate.bind(_this);
@@ -171,8 +362,17 @@ var DateRangePicker = /** @class */ (function (_super) {
171
362
  _this.renderDay = _this.renderDay.bind(_this);
172
363
  _this.renderQuarter = _this.renderQuarter.bind(_this);
173
364
  _this.handleMobileChange = _this.handleMobileChange.bind(_this);
174
- var _a = _this.props, format = _a.format, joinValues = _a.joinValues, delimiter = _a.delimiter, value = _a.value;
175
- _this.state = (0, tslib_1.__assign)({ isOpened: false, isFocused: false }, DateRangePicker.unFormatValue(value, format, joinValues, delimiter));
365
+ _this.handleOutClick = _this.handleOutClick.bind(_this);
366
+ var _a = _this.props, format = _a.format, joinValues = _a.joinValues, delimiter = _a.delimiter, value = _a.value, inputFormat = _a.inputFormat;
367
+ var _b = DateRangePicker.unFormatValue(value, format, joinValues, delimiter), startDate = _b.startDate, endDate = _b.endDate;
368
+ _this.state = {
369
+ isOpened: false,
370
+ isFocused: false,
371
+ startDate: startDate,
372
+ endDate: endDate,
373
+ startInputValue: startDate === null || startDate === void 0 ? void 0 : startDate.format(inputFormat),
374
+ endInputValue: endDate === null || endDate === void 0 ? void 0 : endDate.format(inputFormat)
375
+ };
176
376
  return _this;
177
377
  }
178
378
  DateRangePicker.formatValue = function (newValue, format, joinValues, delimiter, utc) {
@@ -201,11 +401,36 @@ var DateRangePicker = /** @class */ (function (_super) {
201
401
  endDate: value[1] ? (0, moment_1.default)(value[1], format) : undefined
202
402
  };
203
403
  };
404
+ DateRangePicker.prototype.componentDidMount = function () {
405
+ document.body.addEventListener('click', this.handleOutClick, true);
406
+ };
407
+ DateRangePicker.prototype.componentWillUnmount = function () {
408
+ document.body.removeEventListener('click', this.handleOutClick, true);
409
+ };
410
+ DateRangePicker.prototype.handleOutClick = function (e) {
411
+ if (!e.target ||
412
+ !this.dom.current ||
413
+ this.dom.current.contains(e.target) ||
414
+ !this.calendarRef.current ||
415
+ this.calendarRef.current.contains(e.target)) {
416
+ return;
417
+ }
418
+ if (this.state.isOpened) {
419
+ e.preventDefault();
420
+ this.close();
421
+ }
422
+ };
204
423
  DateRangePicker.prototype.componentDidUpdate = function (prevProps) {
205
424
  var props = this.props;
206
- var value = props.value, format = props.format, joinValues = props.joinValues, delimiter = props.delimiter;
425
+ var value = props.value, format = props.format, joinValues = props.joinValues, inputFormat = props.inputFormat, delimiter = props.delimiter;
207
426
  if (prevProps.value !== value) {
208
- this.setState((0, tslib_1.__assign)({}, DateRangePicker.unFormatValue(value, format, joinValues, delimiter)));
427
+ var _a = DateRangePicker.unFormatValue(value, format, joinValues, delimiter), startDate = _a.startDate, endDate = _a.endDate;
428
+ this.setState({
429
+ startDate: startDate,
430
+ endDate: endDate,
431
+ startInputValue: startDate === null || startDate === void 0 ? void 0 : startDate.format(inputFormat),
432
+ endInputValue: endDate === null || endDate === void 0 ? void 0 : endDate.format(inputFormat)
433
+ });
209
434
  }
210
435
  };
211
436
  DateRangePicker.prototype.focus = function () {
@@ -242,9 +467,28 @@ var DateRangePicker = /** @class */ (function (_super) {
242
467
  isOpened: true
243
468
  });
244
469
  };
470
+ DateRangePicker.prototype.openStart = function () {
471
+ if (this.props.disabled) {
472
+ return;
473
+ }
474
+ this.setState({
475
+ isOpened: true,
476
+ editState: 'start'
477
+ });
478
+ };
479
+ DateRangePicker.prototype.openEnd = function () {
480
+ if (this.props.disabled) {
481
+ return;
482
+ }
483
+ this.setState({
484
+ isOpened: true,
485
+ editState: 'end'
486
+ });
487
+ };
245
488
  DateRangePicker.prototype.close = function () {
246
489
  this.setState({
247
- isOpened: false
490
+ isOpened: false,
491
+ editState: undefined
248
492
  }, this.blur);
249
493
  };
250
494
  DateRangePicker.prototype.handleClick = function () {
@@ -297,44 +541,180 @@ var DateRangePicker = /** @class */ (function (_super) {
297
541
  }
298
542
  return value;
299
543
  };
300
- DateRangePicker.prototype.handleSelectChange = function (newValue) {
544
+ DateRangePicker.prototype.handleDateChange = function (newValue) {
545
+ var editState = this.state.editState;
546
+ if (editState === 'start') {
547
+ this.handleStartDateChange(newValue);
548
+ }
549
+ else if (editState === 'end') {
550
+ this.handeleEndDateChange(newValue);
551
+ }
552
+ };
553
+ DateRangePicker.prototype.handleStartDateChange = function (newValue) {
554
+ var _a = this.props, timeFormat = _a.timeFormat, minDate = _a.minDate, inputFormat = _a.inputFormat, type = _a.type;
555
+ var startDate = this.state.startDate;
556
+ if (minDate && newValue.isBefore(minDate)) {
557
+ newValue = minDate;
558
+ }
559
+ var date = this.filterDate(newValue, startDate || minDate, timeFormat, 'start');
560
+ var newState = {
561
+ startDate: date,
562
+ startInputValue: date.format(inputFormat)
563
+ };
564
+ // 这些没有时间的选择点第一次后第二次就是选结束时间
565
+ if (type === 'input-date-range' ||
566
+ type === 'input-year-range' ||
567
+ type === 'input-quarter-range') {
568
+ newState.editState = 'end';
569
+ }
570
+ this.setState(newState);
571
+ };
572
+ DateRangePicker.prototype.handeleEndDateChange = function (newValue) {
301
573
  var _this = this;
302
- var _a = this.props, embed = _a.embed, timeFormat = _a.timeFormat, minDuration = _a.minDuration, maxDuration = _a.maxDuration, minDate = _a.minDate;
574
+ var _a = this.props, embed = _a.embed, timeFormat = _a.timeFormat, inputFormat = _a.inputFormat;
303
575
  var _b = this.state, startDate = _b.startDate, endDate = _b.endDate;
304
- // 第一次点击只标记起始时间,或者点击了开始时间前面的时间
305
- if (this.isFirstClick || newValue.isBefore(startDate)) {
306
- // 这种情况说明第二次点击点击了前面的时间,这时要标记为第二次点击
307
- if (newValue.isBefore(startDate)) {
308
- this.isFirstClick = true;
309
- }
310
- if (minDate && newValue.isBefore(minDate)) {
311
- newValue = minDate;
312
- }
576
+ newValue = this.getEndDateByDuration(newValue);
577
+ // 如果结束时间在前面,需要清空开始时间
578
+ if (newValue.isBefore(startDate)) {
313
579
  this.setState({
314
- startDate: this.filterDate(newValue, startDate || minDate, timeFormat, 'start'),
315
- endDate: undefined
580
+ startDate: undefined,
581
+ startInputValue: ''
316
582
  });
317
583
  }
584
+ var date = this.filterDate(newValue, endDate, timeFormat, 'end');
585
+ this.setState({
586
+ endDate: date,
587
+ endInputValue: date.format(inputFormat)
588
+ }, function () {
589
+ embed && _this.confirm();
590
+ });
591
+ };
592
+ // 手动控制输入时间
593
+ DateRangePicker.prototype.startInputChange = function (e) {
594
+ var _a = this.props, onChange = _a.onChange, inputFormat = _a.inputFormat, format = _a.format, utc = _a.utc;
595
+ var value = e.currentTarget.value;
596
+ this.setState({ startInputValue: value });
597
+ if (value === '') {
598
+ onChange('');
599
+ }
318
600
  else {
319
- // 第二次点击作为结束时间
320
- if (!startDate) {
321
- // 不大可能,但只能作为开始时间了
322
- startDate = newValue;
323
- }
324
- if (minDuration && newValue.isAfter(startDate.clone().add(minDuration))) {
325
- newValue = startDate.clone().add(minDuration);
326
- }
327
- if (maxDuration &&
328
- newValue.isBefore(startDate.clone().add(maxDuration))) {
329
- newValue = startDate.clone().add(maxDuration);
330
- }
331
- this.setState({
332
- endDate: this.filterDate(newValue, endDate, timeFormat, 'end')
333
- }, function () {
334
- embed && _this.confirm();
601
+ var newDate = this.getStartDateByDuration((0, moment_1.default)(value, inputFormat));
602
+ this.setState({ startDate: newDate });
603
+ }
604
+ };
605
+ DateRangePicker.prototype.endInputChange = function (e) {
606
+ var _a = this.props, onChange = _a.onChange, inputFormat = _a.inputFormat, format = _a.format, utc = _a.utc;
607
+ var value = e.currentTarget.value;
608
+ this.setState({ endInputValue: value });
609
+ if (value === '') {
610
+ onChange('');
611
+ }
612
+ else {
613
+ var newDate = this.getEndDateByDuration((0, moment_1.default)(value, inputFormat));
614
+ this.setState({ endDate: newDate });
615
+ }
616
+ };
617
+ // 根据 duration 修复结束时间
618
+ DateRangePicker.prototype.getEndDateByDuration = function (newValue) {
619
+ var _a = this.props, minDuration = _a.minDuration, maxDuration = _a.maxDuration, type = _a.type;
620
+ var _b = this.state, startDate = _b.startDate, endDate = _b.endDate, editState = _b.editState;
621
+ if (!startDate) {
622
+ return newValue;
623
+ }
624
+ // 时间范围必须统一成同一天,不然会不一致
625
+ if (type === 'input-time-range' && startDate) {
626
+ newValue.set({
627
+ year: startDate.year(),
628
+ month: startDate.month(),
629
+ date: startDate.date()
630
+ });
631
+ }
632
+ if (minDuration && newValue.isBefore(startDate.clone().add(minDuration))) {
633
+ newValue = startDate.clone().add(minDuration);
634
+ }
635
+ if (maxDuration && newValue.isAfter(startDate.clone().add(maxDuration))) {
636
+ newValue = startDate.clone().add(maxDuration);
637
+ }
638
+ return newValue;
639
+ };
640
+ // 根据 duration 修复起始时间
641
+ DateRangePicker.prototype.getStartDateByDuration = function (newValue) {
642
+ var _a = this.props, minDuration = _a.minDuration, maxDuration = _a.maxDuration, type = _a.type;
643
+ var _b = this.state, endDate = _b.endDate, editState = _b.editState;
644
+ if (!endDate) {
645
+ return newValue;
646
+ }
647
+ // 时间范围必须统一成同一天,不然会不一致
648
+ if (type === 'input-time-range' && endDate) {
649
+ newValue.set({
650
+ year: endDate.year(),
651
+ month: endDate.month(),
652
+ date: endDate.date()
653
+ });
654
+ }
655
+ if (minDuration &&
656
+ newValue.isBefore(endDate.clone().subtract(minDuration))) {
657
+ newValue = endDate.clone().subtract(minDuration);
658
+ }
659
+ if (maxDuration &&
660
+ newValue.isAfter(endDate.clone().subtract(maxDuration))) {
661
+ newValue = endDate.clone().subtract(maxDuration);
662
+ }
663
+ return newValue;
664
+ };
665
+ // 主要用于处理时间的情况
666
+ DateRangePicker.prototype.handleTimeStartChange = function (newValue) {
667
+ var _this = this;
668
+ var _a = this.props, embed = _a.embed, timeFormat = _a.timeFormat, inputFormat = _a.inputFormat, minDuration = _a.minDuration, maxDuration = _a.maxDuration, minDate = _a.minDate;
669
+ var _b = this.state, startDate = _b.startDate, endDate = _b.endDate;
670
+ // 时间范围必须统一成同一天,不然会不一致
671
+ if (endDate) {
672
+ newValue.set({
673
+ year: endDate.year(),
674
+ month: endDate.month(),
675
+ date: endDate.date()
335
676
  });
336
677
  }
337
- this.isFirstClick = !this.isFirstClick;
678
+ if (minDate && newValue && newValue.isBefore(minDate, 'second')) {
679
+ newValue = minDate;
680
+ }
681
+ this.setState({
682
+ startDate: newValue,
683
+ startInputValue: newValue.format(inputFormat)
684
+ }, function () {
685
+ embed && _this.confirm();
686
+ });
687
+ };
688
+ DateRangePicker.prototype.handleTimeEndChange = function (newValue) {
689
+ var _this = this;
690
+ var _a = this.props, embed = _a.embed, timeFormat = _a.timeFormat, inputFormat = _a.inputFormat, minDuration = _a.minDuration, maxDuration = _a.maxDuration, maxDate = _a.maxDate;
691
+ var _b = this.state, startDate = _b.startDate, endDate = _b.endDate;
692
+ if (startDate) {
693
+ newValue.set({
694
+ year: startDate.year(),
695
+ month: startDate.month(),
696
+ date: startDate.date()
697
+ });
698
+ }
699
+ if (maxDate && newValue && newValue.isAfter(maxDate, 'second')) {
700
+ newValue = maxDate;
701
+ }
702
+ if (startDate &&
703
+ minDuration &&
704
+ newValue.isAfter(startDate.clone().add(minDuration))) {
705
+ newValue = startDate.clone().add(minDuration);
706
+ }
707
+ if (startDate &&
708
+ maxDuration &&
709
+ newValue.isBefore(startDate.clone().add(maxDuration))) {
710
+ newValue = startDate.clone().add(maxDuration);
711
+ }
712
+ this.setState({
713
+ endDate: newValue,
714
+ endInputValue: newValue.format(inputFormat)
715
+ }, function () {
716
+ embed && _this.confirm();
717
+ });
338
718
  };
339
719
  DateRangePicker.prototype.handleMobileChange = function (data, callback) {
340
720
  this.setState({
@@ -374,8 +754,21 @@ var DateRangePicker = /** @class */ (function (_super) {
374
754
  }
375
755
  var range = {};
376
756
  if (typeof item === 'string') {
377
- range = exports.availableRanges[item];
378
- range.key = item;
757
+ if (exports.availableRanges[item]) {
758
+ range = exports.availableRanges[item];
759
+ range.key = item;
760
+ }
761
+ else {
762
+ // 通过正则尝试匹配
763
+ for (var i = 0, len = exports.advancedRanges.length; i < len; i++) {
764
+ var value = exports.advancedRanges[i];
765
+ var m = value.regexp.exec(item);
766
+ if (m) {
767
+ range = value.resolve.apply(item, (0, tslib_1.__spreadArray)([__], m, true));
768
+ range.key = item;
769
+ }
770
+ }
771
+ }
379
772
  }
380
773
  else if (item.startDate &&
381
774
  item.endDate) {
@@ -389,6 +782,7 @@ var DateRangePicker = /** @class */ (function (_super) {
389
782
  e.preventDefault();
390
783
  e.stopPropagation();
391
784
  var _a = this.props, resetValue = _a.resetValue, onChange = _a.onChange;
785
+ this.setState({ startInputValue: '', endInputValue: '' });
392
786
  onChange(resetValue);
393
787
  };
394
788
  DateRangePicker.prototype.checkStartIsValidDate = function (currentDate) {
@@ -472,62 +866,73 @@ var DateRangePicker = /** @class */ (function (_super) {
472
866
  quarter)));
473
867
  };
474
868
  DateRangePicker.prototype.renderCalendar = function () {
475
- var _a = this.props, ns = _a.classPrefix, cx = _a.classnames, dateFormat = _a.dateFormat, timeFormat = _a.timeFormat, inputFormat = _a.inputFormat, ranges = _a.ranges, locale = _a.locale, embed = _a.embed, _b = _a.viewMode, viewMode = _b === void 0 ? 'days' : _b;
869
+ var _a;
870
+ var _b = this.props, ns = _b.classPrefix, cx = _b.classnames, dateFormat = _b.dateFormat, timeFormat = _b.timeFormat, inputFormat = _b.inputFormat, ranges = _b.ranges, locale = _b.locale, embed = _b.embed, type = _b.type, _c = _b.viewMode, viewMode = _c === void 0 ? 'days' : _c;
476
871
  var __ = this.props.translate;
477
- var _c = this.state, startDate = _c.startDate, endDate = _c.endDate;
478
- return (react_1.default.createElement("div", { className: "".concat(ns, "DateRangePicker-wrap") },
872
+ var _d = this.state, startDate = _d.startDate, endDate = _d.endDate;
873
+ return (react_1.default.createElement("div", { className: "".concat(ns, "DateRangePicker-wrap"), ref: this.calendarRef },
479
874
  this.renderRanges(ranges),
480
- react_1.default.createElement(Calendar_1.default, { className: "".concat(ns, "DateRangePicker-start"), value: startDate, onChange: this.handleSelectChange, requiredConfirm: false, dateFormat: dateFormat, inputFormat: inputFormat, timeFormat: timeFormat, isValidDate: this.checkStartIsValidDate, viewMode: viewMode, input: false, onClose: this.close, renderDay: this.renderDay, renderQuarter: this.renderQuarter, locale: locale }),
481
- react_1.default.createElement(Calendar_1.default, { className: "".concat(ns, "DateRangePicker-end"), value: endDate, onChange: this.handleSelectChange, requiredConfirm: false, dateFormat: dateFormat, inputFormat: inputFormat, timeFormat: timeFormat, viewDate: this.nextMonth, isEndDate: true, isValidDate: this.checkEndIsValidDate, viewMode: viewMode, input: false, onClose: this.close, renderDay: this.renderDay, renderQuarter: this.renderQuarter, locale: locale }),
875
+ react_1.default.createElement(Calendar_1.default, { className: "".concat(ns, "DateRangePicker-start"), value: startDate,
876
+ // 区分的原因是 time-range 左侧就只能选起始时间,而其它都能在左侧同时同时选择起始和结束
877
+ // TODO: 后续得把 time-range 代码拆分出来
878
+ onChange: type === 'input-datetime-range'
879
+ ? this.handleStartDateChange
880
+ : viewMode === 'time'
881
+ ? this.handleTimeStartChange
882
+ : this.handleDateChange, requiredConfirm: false, dateFormat: dateFormat, inputFormat: inputFormat, timeFormat: timeFormat, isValidDate: this.checkStartIsValidDate, viewMode: viewMode, input: false, onClose: this.close, renderDay: this.renderDay, renderQuarter: this.renderQuarter, locale: locale }),
883
+ react_1.default.createElement(Calendar_1.default, { className: "".concat(ns, "DateRangePicker-end"), value: endDate, onChange: type === 'input-datetime-range'
884
+ ? this.handeleEndDateChange
885
+ : viewMode === 'time'
886
+ ? this.handleTimeEndChange
887
+ : this.handleDateChange, requiredConfirm: false, dateFormat: dateFormat, inputFormat: inputFormat, timeFormat: timeFormat, viewDate: this.nextMonth, isEndDate: true, isValidDate: this.checkEndIsValidDate, viewMode: viewMode, input: false, onClose: this.close, renderDay: this.renderDay, renderQuarter: this.renderQuarter, locale: locale }),
482
888
  embed ? null : (react_1.default.createElement("div", { key: "button", className: "".concat(ns, "DateRangePicker-actions") },
483
889
  react_1.default.createElement("a", { className: cx('Button', 'Button--default'), onClick: this.close }, __('cancel')),
484
890
  react_1.default.createElement("a", { className: cx('Button', 'Button--primary', 'm-l-sm', {
485
- 'is-disabled': !this.state.startDate || !this.state.endDate
891
+ 'is-disabled': !this.state.startDate ||
892
+ !this.state.endDate ||
893
+ ((_a = this.state.endDate) === null || _a === void 0 ? void 0 : _a.isBefore(this.state.startDate))
486
894
  }), onClick: this.confirm }, __('confirm'))))));
487
895
  };
488
896
  DateRangePicker.prototype.render = function () {
489
897
  var _a;
490
898
  var _this = this;
491
- var _b = this.props, className = _b.className, popoverClassName = _b.popoverClassName, ns = _b.classPrefix, value = _b.value, placeholder = _b.placeholder, popOverContainer = _b.popOverContainer, inputFormat = _b.inputFormat, format = _b.format, joinValues = _b.joinValues, delimiter = _b.delimiter, clearable = _b.clearable, disabled = _b.disabled, embed = _b.embed, overlayPlacement = _b.overlayPlacement, borderMode = _b.borderMode, useMobileUI = _b.useMobileUI, timeFormat = _b.timeFormat, minDate = _b.minDate, maxDate = _b.maxDate, minDuration = _b.minDuration, maxDuration = _b.maxDuration, dateFormat = _b.dateFormat, _c = _b.viewMode, viewMode = _c === void 0 ? 'days' : _c, ranges = _b.ranges;
899
+ var _b = this.props, className = _b.className, popoverClassName = _b.popoverClassName, ns = _b.classPrefix, cx = _b.classnames, value = _b.value, startPlaceholder = _b.startPlaceholder, endPlaceholder = _b.endPlaceholder, popOverContainer = _b.popOverContainer, inputFormat = _b.inputFormat, format = _b.format, joinValues = _b.joinValues, delimiter = _b.delimiter, clearable = _b.clearable, disabled = _b.disabled, embed = _b.embed, overlayPlacement = _b.overlayPlacement, borderMode = _b.borderMode, useMobileUI = _b.useMobileUI, timeFormat = _b.timeFormat, minDate = _b.minDate, maxDate = _b.maxDate, minDuration = _b.minDuration, maxDuration = _b.maxDuration, dateFormat = _b.dateFormat, _c = _b.viewMode, viewMode = _c === void 0 ? 'days' : _c, ranges = _b.ranges;
492
900
  var useCalendarMobile = useMobileUI &&
493
901
  (0, helper_1.isMobile)() &&
494
902
  ['days', 'months', 'quarters'].indexOf(viewMode) > -1;
495
903
  var _d = this.state, isOpened = _d.isOpened, isFocused = _d.isFocused, startDate = _d.startDate, endDate = _d.endDate;
496
- var selectedDate = DateRangePicker.unFormatValue(value, format, joinValues, delimiter);
497
- var startViewValue = selectedDate.startDate
498
- ? selectedDate.startDate.format(inputFormat)
499
- : '';
500
- var endViewValue = selectedDate.endDate
501
- ? selectedDate.endDate.format(inputFormat)
502
- : '';
503
- var arr = [];
504
- startViewValue && arr.push(startViewValue);
505
- endViewValue && arr.push(endViewValue);
506
904
  var __ = this.props.translate;
507
905
  var calendarMobile = (react_1.default.createElement(CalendarMobile_1.default, { timeFormat: timeFormat, inputFormat: inputFormat, startDate: startDate, endDate: endDate, minDate: minDate, maxDate: maxDate, minDuration: minDuration, maxDuration: maxDuration, dateFormat: dateFormat, embed: embed, viewMode: viewMode, close: this.close, confirm: this.confirm, onChange: this.handleMobileChange, footerExtra: this.renderRanges(ranges), showViewMode: viewMode === 'quarters' || viewMode === 'months' ? 'years' : 'months' }));
508
906
  if (embed) {
509
- return (react_1.default.createElement("div", { className: (0, classnames_1.default)("".concat(ns, "DateRangeCalendar"), {
907
+ return (react_1.default.createElement("div", { className: cx("".concat(ns, "DateRangeCalendar"), {
510
908
  'is-disabled': disabled
511
909
  }, className) }, useCalendarMobile ? calendarMobile : this.renderCalendar()));
512
910
  }
513
911
  var CalendarMobileTitle = (react_1.default.createElement("div", { className: "".concat(ns, "CalendarMobile-title") }, __('Calendar.datepicker')));
514
- return (react_1.default.createElement("div", { tabIndex: 0, onKeyPress: this.handleKeyPress, onFocus: this.handleFocus, onBlur: this.handleBlur, className: (0, classnames_1.default)("".concat(ns, "DateRangePicker"), (_a = {
912
+ return (react_1.default.createElement("div", { tabIndex: 0, onKeyPress: this.handleKeyPress, onFocus: this.handleFocus, onBlur: this.handleBlur, className: cx("".concat(ns, "DateRangePicker"), (_a = {
515
913
  'is-disabled': disabled,
516
914
  'is-focused': isFocused
517
915
  },
518
916
  _a["".concat(ns, "DateRangePicker--border").concat((0, helper_1.ucFirst)(borderMode))] = borderMode,
519
917
  _a['is-mobile'] = useMobileUI && (0, helper_1.isMobile)(),
520
- _a), className), ref: this.dom, onClick: this.handleClick },
521
- arr.length ? (react_1.default.createElement("span", { className: "".concat(ns, "DateRangePicker-value") }, arr.join(__('DateRange.valueConcat')))) : (react_1.default.createElement("span", { className: "".concat(ns, "DateRangePicker-placeholder") }, __(placeholder))),
918
+ _a), className), ref: this.dom },
919
+ react_1.default.createElement(Input_1.default, { className: cx('DateRangePicker-input', {
920
+ isActive: this.state.editState === 'start'
921
+ }), onChange: this.startInputChange, onClick: this.openStart, ref: this.startInputRef, placeholder: __(startPlaceholder), autoComplete: "off", value: this.state.startInputValue || '', disabled: disabled }),
922
+ react_1.default.createElement("span", { className: cx('DateRangePicker-input-separator') }, "~"),
923
+ react_1.default.createElement(Input_1.default, { className: cx('DateRangePicker-input', {
924
+ isActive: this.state.editState === 'end'
925
+ }), onChange: this.endInputChange, onClick: this.openEnd, ref: this.endInputRef, placeholder: __(endPlaceholder), autoComplete: "off", value: this.state.endInputValue || '', disabled: disabled }),
522
926
  clearable && !disabled && value ? (react_1.default.createElement("a", { className: "".concat(ns, "DateRangePicker-clear"), onClick: this.clearValue },
523
927
  react_1.default.createElement(icons_1.Icon, { icon: "input-clear", className: "icon" }))) : null,
524
928
  react_1.default.createElement("a", { className: "".concat(ns, "DateRangePicker-toggler") },
525
929
  react_1.default.createElement(icons_1.Icon, { icon: "clock", className: "icon" })),
526
- isOpened ? (useMobileUI && (0, helper_1.isMobile)() ? (react_1.default.createElement(PopUp_1.default, { isShow: isOpened, container: popOverContainer, className: (0, classnames_1.default)("".concat(ns, "CalendarMobile-pop")), onHide: this.close, header: CalendarMobileTitle }, useCalendarMobile ? calendarMobile : this.renderCalendar())) : (react_1.default.createElement(Overlay_1.default, { target: function () { return _this.dom.current; }, onHide: this.close, container: popOverContainer || (function () { return (0, react_dom_1.findDOMNode)(_this); }), rootClose: false, placement: overlayPlacement, show: true },
527
- react_1.default.createElement(PopOver_1.default, { classPrefix: ns, className: (0, classnames_1.default)("".concat(ns, "DateRangePicker-popover"), popoverClassName), onHide: this.close, onClick: this.handlePopOverClick, overlay: true }, this.renderCalendar())))) : null));
930
+ isOpened ? (useMobileUI && (0, helper_1.isMobile)() ? (react_1.default.createElement(PopUp_1.default, { isShow: isOpened, container: popOverContainer, className: cx("".concat(ns, "CalendarMobile-pop")), onHide: this.close, header: CalendarMobileTitle }, useCalendarMobile ? calendarMobile : this.renderCalendar())) : (react_1.default.createElement(Overlay_1.default, { target: function () { return _this.dom.current; }, onHide: this.close, container: popOverContainer || (function () { return (0, react_dom_1.findDOMNode)(_this); }), rootClose: false, placement: overlayPlacement, show: true },
931
+ react_1.default.createElement(PopOver_1.default, { classPrefix: ns, className: cx("".concat(ns, "DateRangePicker-popover"), popoverClassName), onHide: this.close, onClick: this.handlePopOverClick }, this.renderCalendar())))) : null));
528
932
  };
529
933
  DateRangePicker.defaultProps = {
530
- placeholder: 'DateRange.placeholder',
934
+ startPlaceholder: 'Calendar.startPick',
935
+ endPlaceholder: 'Calendar.endPick',
531
936
  format: 'X',
532
937
  inputFormat: 'YYYY-MM-DD',
533
938
  joinValues: true,