amis 1.5.7 → 1.5.8-beta.2

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 (350) 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.d.ts +20 -20
  15. package/lib/components/ChainedSelection.d.ts +84 -84
  16. package/lib/components/ChainedSelection.js +15 -3
  17. package/lib/components/ChainedSelection.js.map +2 -2
  18. package/lib/components/ColorPicker.d.ts +84 -84
  19. package/lib/components/ColorPicker.js.map +2 -2
  20. package/lib/components/DatePicker.d.ts +84 -84
  21. package/lib/components/DatePicker.js +10 -4
  22. package/lib/components/DatePicker.js.map +2 -2
  23. package/lib/components/DateRangePicker.d.ts +85 -84
  24. package/lib/components/DateRangePicker.js +21 -6
  25. package/lib/components/DateRangePicker.js.map +2 -2
  26. package/lib/components/GroupedSelection.d.ts +84 -84
  27. package/lib/components/GroupedSelection.js +14 -2
  28. package/lib/components/GroupedSelection.js.map +2 -2
  29. package/lib/components/MonthRangePicker.d.ts +85 -84
  30. package/lib/components/MonthRangePicker.js +19 -6
  31. package/lib/components/MonthRangePicker.js.map +2 -2
  32. package/lib/components/Overlay.d.ts +1 -1
  33. package/lib/components/Overlay.js.map +1 -1
  34. package/lib/components/Picker.js +9 -4
  35. package/lib/components/Picker.js.map +2 -2
  36. package/lib/components/PickerColumn.js +0 -1
  37. package/lib/components/PickerColumn.js.map +2 -2
  38. package/lib/components/PickerContainer.d.ts +3 -0
  39. package/lib/components/PickerContainer.js +12 -5
  40. package/lib/components/PickerContainer.js.map +2 -2
  41. package/lib/components/PopUp.d.ts +1 -0
  42. package/lib/components/PopUp.js +5 -5
  43. package/lib/components/PopUp.js.map +2 -2
  44. package/lib/components/ResultBox.js +2 -1
  45. package/lib/components/ResultBox.js.map +2 -2
  46. package/lib/components/ResultList.d.ts +9 -2
  47. package/lib/components/ResultList.js +22 -2
  48. package/lib/components/ResultList.js.map +2 -2
  49. package/lib/components/Select.d.ts +237 -237
  50. package/lib/components/Select.js +1 -1
  51. package/lib/components/Select.js.map +1 -1
  52. package/lib/components/Selection.d.ts +94 -86
  53. package/lib/components/Selection.js +11 -2
  54. package/lib/components/Selection.js.map +2 -2
  55. package/lib/components/Steps.js.map +2 -2
  56. package/lib/components/TableSelection.d.ts +85 -85
  57. package/lib/components/TableSelection.js +1 -9
  58. package/lib/components/TableSelection.js.map +2 -2
  59. package/lib/components/Tabs.js +31 -33
  60. package/lib/components/Tabs.js.map +2 -2
  61. package/lib/components/TabsTransfer.d.ts +87 -256
  62. package/lib/components/TabsTransfer.js +52 -9
  63. package/lib/components/TabsTransfer.js.map +2 -2
  64. package/lib/components/TabsTransferPicker.d.ts +1 -1
  65. package/lib/components/TabsTransferPicker.js +20 -18
  66. package/lib/components/TabsTransferPicker.js.map +2 -2
  67. package/lib/components/Timeline.d.ts +69 -0
  68. package/lib/components/Timeline.js +16 -0
  69. package/lib/components/Timeline.js.map +13 -0
  70. package/lib/components/TimelineItem.d.ts +516 -0
  71. package/lib/components/TimelineItem.js +41 -0
  72. package/lib/components/TimelineItem.js.map +13 -0
  73. package/lib/components/Transfer.d.ts +100 -98
  74. package/lib/components/Transfer.js +2 -3
  75. package/lib/components/Transfer.js.map +2 -2
  76. package/lib/components/TransferDropDown.d.ts +84 -84
  77. package/lib/components/TransferDropDown.js +1 -5
  78. package/lib/components/TransferDropDown.js.map +2 -2
  79. package/lib/components/TransferPicker.d.ts +1 -0
  80. package/lib/components/TransferPicker.js +19 -4
  81. package/lib/components/TransferPicker.js.map +2 -2
  82. package/lib/components/TreeSelection.d.ts +85 -85
  83. package/lib/components/TreeSelection.js +7 -1
  84. package/lib/components/TreeSelection.js.map +2 -2
  85. package/lib/components/calendar/Calendar.d.ts +5 -0
  86. package/lib/components/calendar/Calendar.js +15 -2
  87. package/lib/components/calendar/Calendar.js.map +2 -2
  88. package/lib/components/calendar/DaysView.d.ts +1 -0
  89. package/lib/components/calendar/DaysView.js +25 -13
  90. package/lib/components/calendar/DaysView.js.map +2 -2
  91. package/lib/components/calendar/MonthsView.d.ts +28 -0
  92. package/lib/components/calendar/MonthsView.js +79 -3
  93. package/lib/components/calendar/MonthsView.js.map +2 -2
  94. package/lib/components/calendar/QuartersView.d.ts +1 -0
  95. package/lib/components/calendar/QuartersView.js +2 -2
  96. package/lib/components/calendar/QuartersView.js.map +2 -2
  97. package/lib/components/calendar/TimeView.d.ts +5 -0
  98. package/lib/components/calendar/TimeView.js +8 -5
  99. package/lib/components/calendar/TimeView.js.map +2 -2
  100. package/lib/components/calendar/YearsView.js +6 -4
  101. package/lib/components/calendar/YearsView.js.map +2 -2
  102. package/lib/components/condition-builder/Field.js +1 -4
  103. package/lib/components/condition-builder/Field.js.map +2 -2
  104. package/lib/components/condition-builder/Func.js +1 -1
  105. package/lib/components/condition-builder/Func.js.map +2 -2
  106. package/lib/components/formula/Editor.d.ts +3 -0
  107. package/lib/components/formula/Editor.js +3 -2
  108. package/lib/components/formula/Editor.js.map +2 -2
  109. package/lib/components/formula/FuncList.js +2 -1
  110. package/lib/components/formula/FuncList.js.map +2 -2
  111. package/lib/components/formula/Picker.js +1 -1
  112. package/lib/components/formula/Picker.js.map +2 -2
  113. package/lib/components/icons.js +2 -0
  114. package/lib/components/icons.js.map +2 -2
  115. package/lib/components/index.d.ts +2 -1
  116. package/lib/components/index.js +4 -2
  117. package/lib/components/index.js.map +2 -2
  118. package/lib/components/virtual-list/SizeAndPositionManager.js.map +2 -2
  119. package/lib/components/virtual-list/index.js +1 -2
  120. package/lib/components/virtual-list/index.js.map +2 -2
  121. package/lib/factory.js +5 -0
  122. package/lib/factory.js.map +2 -2
  123. package/lib/icons/tree-down.js +7 -0
  124. package/lib/index.d.ts +1 -0
  125. package/lib/index.js +2 -1
  126. package/lib/index.js.map +2 -2
  127. package/lib/locale/de-DE.js +13 -2
  128. package/lib/locale/de-DE.js.map +2 -2
  129. package/lib/locale/en-US.js +13 -2
  130. package/lib/locale/en-US.js.map +2 -2
  131. package/lib/locale/zh-CN.js +12 -1
  132. package/lib/locale/zh-CN.js.map +2 -2
  133. package/lib/renderers/Avatar.d.ts +35 -26
  134. package/lib/renderers/Avatar.js +14 -19
  135. package/lib/renderers/Avatar.js.map +2 -2
  136. package/lib/renderers/Card.js +6 -5
  137. package/lib/renderers/Card.js.map +2 -2
  138. package/lib/renderers/Custom.js.map +2 -2
  139. package/lib/renderers/Each.js +5 -2
  140. package/lib/renderers/Each.js.map +2 -2
  141. package/lib/renderers/Flex.js +1 -5
  142. package/lib/renderers/Flex.js.map +2 -2
  143. package/lib/renderers/Form/ChartRadios.js.map +2 -2
  144. package/lib/renderers/Form/Checkboxes.js.map +2 -2
  145. package/lib/renderers/Form/DiffEditor.js +2 -1
  146. package/lib/renderers/Form/DiffEditor.js.map +2 -2
  147. package/lib/renderers/Form/InputCity.d.ts +84 -84
  148. package/lib/renderers/Form/InputColor.d.ts +84 -84
  149. package/lib/renderers/Form/InputColor.js +1 -1
  150. package/lib/renderers/Form/InputColor.js.map +2 -2
  151. package/lib/renderers/Form/InputDate.js +6 -4
  152. package/lib/renderers/Form/InputDate.js.map +2 -2
  153. package/lib/renderers/Form/InputDateRange.js +1 -1
  154. package/lib/renderers/Form/InputDateRange.js.map +2 -2
  155. package/lib/renderers/Form/InputFormula.d.ts +4 -1
  156. package/lib/renderers/Form/InputFormula.js +2 -2
  157. package/lib/renderers/Form/InputFormula.js.map +2 -2
  158. package/lib/renderers/Form/InputImage.d.ts +1 -0
  159. package/lib/renderers/Form/InputImage.js +8 -4
  160. package/lib/renderers/Form/InputImage.js.map +2 -2
  161. package/lib/renderers/Form/InputMonthRange.js +1 -1
  162. package/lib/renderers/Form/InputMonthRange.js.map +2 -2
  163. package/lib/renderers/Form/InputQuarterRange.js +1 -1
  164. package/lib/renderers/Form/InputQuarterRange.js.map +2 -2
  165. package/lib/renderers/Form/InputYearRange.js +1 -1
  166. package/lib/renderers/Form/InputYearRange.js.map +2 -2
  167. package/lib/renderers/Form/Item.js +11 -4
  168. package/lib/renderers/Form/Item.js.map +2 -2
  169. package/lib/renderers/Form/NestedSelect.js +1 -1
  170. package/lib/renderers/Form/NestedSelect.js.map +2 -2
  171. package/lib/renderers/Form/Select.js +1 -1
  172. package/lib/renderers/Form/Select.js.map +2 -2
  173. package/lib/renderers/Form/TabsTransfer.d.ts +5 -32
  174. package/lib/renderers/Form/TabsTransfer.js +20 -1
  175. package/lib/renderers/Form/TabsTransfer.js.map +2 -2
  176. package/lib/renderers/Form/TabsTransferPicker.d.ts +5 -35
  177. package/lib/renderers/Form/TabsTransferPicker.js +21 -2
  178. package/lib/renderers/Form/TabsTransferPicker.js.map +2 -2
  179. package/lib/renderers/Form/Transfer.d.ts +15 -4
  180. package/lib/renderers/Form/Transfer.js +55 -18
  181. package/lib/renderers/Form/Transfer.js.map +2 -2
  182. package/lib/renderers/Form/TransferPicker.d.ts +3 -32
  183. package/lib/renderers/Form/TransferPicker.js +1 -1
  184. package/lib/renderers/Form/TransferPicker.js.map +2 -2
  185. package/lib/renderers/Form/TreeSelect.js.map +2 -2
  186. package/lib/renderers/IFrame.js +0 -2
  187. package/lib/renderers/IFrame.js.map +2 -2
  188. package/lib/renderers/Remark.d.ts +4 -0
  189. package/lib/renderers/Remark.js +38 -7
  190. package/lib/renderers/Remark.js.map +2 -2
  191. package/lib/renderers/Steps.js +5 -5
  192. package/lib/renderers/Steps.js.map +2 -2
  193. package/lib/renderers/Table/index.js +4 -1
  194. package/lib/renderers/Table/index.js.map +2 -2
  195. package/lib/renderers/Tabs.js +1 -1
  196. package/lib/renderers/Tabs.js.map +2 -2
  197. package/lib/renderers/Timeline.d.ts +65 -0
  198. package/lib/renderers/Timeline.js +54 -0
  199. package/lib/renderers/Timeline.js.map +13 -0
  200. package/lib/renderers/Video.js.map +2 -2
  201. package/lib/store/combo.js.map +2 -2
  202. package/lib/themes/ang-ie11.css +659 -25
  203. package/lib/themes/ang.css +659 -25
  204. package/lib/themes/ang.css.map +1 -1
  205. package/lib/themes/antd-ie11.css +694 -25
  206. package/lib/themes/antd.css +694 -25
  207. package/lib/themes/antd.css.map +1 -1
  208. package/lib/themes/cxd-ie11.css +696 -25
  209. package/lib/themes/cxd.css +696 -25
  210. package/lib/themes/cxd.css.map +1 -1
  211. package/lib/themes/dark-ie11.css +660 -25
  212. package/lib/themes/dark.css +660 -25
  213. package/lib/themes/dark.css.map +1 -1
  214. package/lib/themes/default.css +696 -25
  215. package/lib/themes/default.css.map +1 -1
  216. package/lib/utils/RootClose.js +3 -1
  217. package/lib/utils/RootClose.js.map +2 -2
  218. package/lib/utils/helper.d.ts +1 -1
  219. package/lib/utils/helper.js +1 -1
  220. package/lib/utils/helper.js.map +2 -2
  221. package/package.json +13 -6
  222. package/schema.json +1042 -541
  223. package/scss/_properties.scss +8 -0
  224. package/scss/components/_avatar.scss +27 -9
  225. package/scss/components/_calendar.scss +280 -0
  226. package/scss/components/_card.scss +1 -1
  227. package/scss/components/_collapse-group.scss +1 -3
  228. package/scss/components/_formula.scss +30 -6
  229. package/scss/components/_modal.scss +18 -0
  230. package/scss/components/_panel.scss +45 -0
  231. package/scss/components/_popup.scss +10 -6
  232. package/scss/components/_timeline.scss +198 -0
  233. package/scss/components/form/_form.scss +168 -0
  234. package/scss/components/form/_result-list.scss +2 -0
  235. package/scss/components/form/_selection.scss +5 -4
  236. package/scss/themes/_antd-variables.scss +42 -0
  237. package/scss/themes/_common.scss +1 -0
  238. package/scss/themes/_cxd-variables.scss +47 -0
  239. package/scss/themes/_dark-variables.scss +1 -0
  240. package/sdk/ang-ie11.css +782 -23
  241. package/sdk/ang.css +791 -26
  242. package/sdk/antd-ie11.css +782 -23
  243. package/sdk/antd.css +826 -26
  244. package/sdk/charts.js +17 -17
  245. package/sdk/codemirror.js +7 -7
  246. package/sdk/color-picker.js +65 -65
  247. package/sdk/cropperjs.js +3 -3
  248. package/sdk/cxd-ie11.css +782 -23
  249. package/sdk/cxd.css +828 -26
  250. package/sdk/dark-ie11.css +783 -24
  251. package/sdk/dark.css +792 -26
  252. package/sdk/exceljs.js +1 -1
  253. package/sdk/locale/de-DE.js +13 -2
  254. package/sdk/markdown.js +69 -69
  255. package/sdk/papaparse.js +1 -1
  256. package/sdk/renderers/Form/CityDB.js +1 -1
  257. package/sdk/rest.js +18 -18
  258. package/sdk/rich-text.js +62 -62
  259. package/sdk/sdk-ie11.css +782 -23
  260. package/sdk/sdk.css +828 -26
  261. package/sdk/sdk.js +1225 -1285
  262. package/sdk/thirds/hls.js/hls.js +18 -18
  263. package/sdk/thirds/mpegts.js/mpegts.js +2 -2
  264. package/sdk/tinymce.js +57 -57
  265. package/src/Schema.ts +3 -0
  266. package/src/components/AssociatedSelection.tsx +5 -1
  267. package/src/components/Avatar.tsx +253 -0
  268. package/src/components/BaiduMapPicker.tsx +19 -14
  269. package/src/components/CalendarMobile.tsx +563 -0
  270. package/src/components/ChainedSelection.tsx +16 -3
  271. package/src/components/ColorPicker.tsx +37 -39
  272. package/src/components/DatePicker.tsx +41 -35
  273. package/src/components/DateRangePicker.tsx +61 -16
  274. package/src/components/GroupedSelection.tsx +14 -2
  275. package/src/components/MonthRangePicker.tsx +57 -17
  276. package/src/components/Overlay.tsx +1 -1
  277. package/src/components/Picker.tsx +41 -36
  278. package/src/components/PickerColumn.tsx +22 -25
  279. package/src/components/PickerContainer.tsx +13 -1
  280. package/src/components/PopUp.tsx +34 -49
  281. package/src/components/ResultBox.tsx +4 -1
  282. package/src/components/ResultList.tsx +36 -6
  283. package/src/components/Select.tsx +1 -1
  284. package/src/components/Selection.tsx +21 -3
  285. package/src/components/Steps.tsx +23 -10
  286. package/src/components/TableSelection.tsx +1 -44
  287. package/src/components/Tabs.tsx +65 -54
  288. package/src/components/TabsTransfer.tsx +78 -9
  289. package/src/components/TabsTransferPicker.tsx +25 -13
  290. package/src/components/Timeline.tsx +31 -0
  291. package/src/components/TimelineItem.tsx +107 -0
  292. package/src/components/Transfer.tsx +11 -8
  293. package/src/components/TransferDropDown.tsx +1 -7
  294. package/src/components/TransferPicker.tsx +25 -4
  295. package/src/components/TreeSelection.tsx +7 -1
  296. package/src/components/calendar/Calendar.tsx +26 -6
  297. package/src/components/calendar/DaysView.tsx +79 -31
  298. package/src/components/calendar/MonthsView.tsx +116 -2
  299. package/src/components/calendar/QuartersView.tsx +3 -2
  300. package/src/components/calendar/TimeView.tsx +26 -16
  301. package/src/components/calendar/YearsView.tsx +14 -16
  302. package/src/components/condition-builder/Field.tsx +1 -3
  303. package/src/components/condition-builder/Func.tsx +1 -1
  304. package/src/components/formula/Editor.tsx +16 -11
  305. package/src/components/formula/FuncList.tsx +3 -1
  306. package/src/components/formula/Picker.tsx +2 -1
  307. package/src/components/icons.tsx +2 -0
  308. package/src/components/index.tsx +2 -0
  309. package/src/components/virtual-list/SizeAndPositionManager.ts +6 -3
  310. package/src/components/virtual-list/index.tsx +4 -6
  311. package/src/factory.tsx +6 -0
  312. package/src/icons/tree-down.svg +5 -0
  313. package/src/index.tsx +1 -0
  314. package/src/locale/de-DE.ts +13 -2
  315. package/src/locale/en-US.ts +13 -2
  316. package/src/locale/zh-CN.ts +12 -1
  317. package/src/renderers/Avatar.tsx +83 -74
  318. package/src/renderers/Card.tsx +10 -6
  319. package/src/renderers/Custom.tsx +6 -3
  320. package/src/renderers/Each.tsx +4 -4
  321. package/src/renderers/Flex.tsx +3 -7
  322. package/src/renderers/Form/ChartRadios.tsx +2 -7
  323. package/src/renderers/Form/Checkboxes.tsx +1 -1
  324. package/src/renderers/Form/DiffEditor.tsx +2 -3
  325. package/src/renderers/Form/InputColor.tsx +1 -1
  326. package/src/renderers/Form/InputDate.tsx +38 -19
  327. package/src/renderers/Form/InputDateRange.tsx +0 -1
  328. package/src/renderers/Form/InputFormula.tsx +9 -4
  329. package/src/renderers/Form/InputImage.tsx +9 -4
  330. package/src/renderers/Form/InputMonthRange.tsx +0 -1
  331. package/src/renderers/Form/InputQuarterRange.tsx +0 -1
  332. package/src/renderers/Form/InputYearRange.tsx +0 -1
  333. package/src/renderers/Form/Item.tsx +15 -4
  334. package/src/renderers/Form/NestedSelect.tsx +1 -1
  335. package/src/renderers/Form/Select.tsx +0 -1
  336. package/src/renderers/Form/TabsTransfer.tsx +28 -38
  337. package/src/renderers/Form/TabsTransferPicker.tsx +28 -46
  338. package/src/renderers/Form/Transfer.tsx +75 -24
  339. package/src/renderers/Form/TransferPicker.tsx +6 -38
  340. package/src/renderers/Form/TreeSelect.tsx +12 -14
  341. package/src/renderers/IFrame.tsx +0 -2
  342. package/src/renderers/Remark.tsx +67 -18
  343. package/src/renderers/Steps.tsx +11 -13
  344. package/src/renderers/Table/index.tsx +7 -1
  345. package/src/renderers/Tabs.tsx +6 -2
  346. package/src/renderers/Timeline.tsx +141 -0
  347. package/src/renderers/Video.tsx +4 -20
  348. package/src/store/combo.ts +1 -3
  349. package/src/utils/RootClose.ts +5 -1
  350. package/src/utils/helper.ts +1 -1
@@ -0,0 +1,563 @@
1
+ /**
2
+ * @file CalendarMobile
3
+ * @description 移动端日历组件
4
+ * @author hongyang03
5
+ */
6
+
7
+ import React from 'react';
8
+ import moment from 'moment';
9
+ import Calendar from './calendar/Calendar';
10
+ import {themeable, ThemeProps} from '../theme';
11
+ import {LocaleProps, localeable} from '../locale';
12
+ import {autobind} from '../utils/helper';
13
+
14
+ export interface CalendarMobileProps extends ThemeProps, LocaleProps {
15
+ className?: string;
16
+ timeFormat?: string;
17
+ inputFormat?: string;
18
+ startDate?: moment.Moment;
19
+ endDate?: moment.Moment;
20
+ minDate?: moment.Moment;
21
+ maxDate?: moment.Moment;
22
+ minDuration?: moment.Duration;
23
+ maxDuration?: moment.Duration;
24
+ dateFormat?: string;
25
+ embed?: boolean;
26
+ viewMode?: 'days' | 'months' | 'years' | 'time' | 'quarters';
27
+ close?: () => void;
28
+ confirm?: () => void;
29
+ onChange?: (data: any, callback?: () => void) => void;
30
+ footerExtra?: JSX.Element | null;
31
+ showViewMode?: 'years' | 'months';
32
+ }
33
+
34
+ export interface CalendarMobileState {
35
+ startDate?: moment.Moment;
36
+ endDate?: moment.Moment;
37
+ monthHeights?: number[];
38
+ currentDate: moment.Moment;
39
+ showToast: boolean;
40
+ isScrollToBottom: boolean;
41
+ dateTime: any;
42
+ }
43
+
44
+ export class CalendarMobile extends React.Component<
45
+ CalendarMobileProps,
46
+ CalendarMobileState
47
+ > {
48
+
49
+ mobileBody: any;
50
+ mobileHeader: any;
51
+ timer: any;
52
+
53
+ static defaultProps: Pick<CalendarMobileProps, 'showViewMode' | 'minDate' | 'maxDate'> = {
54
+ showViewMode: 'months',
55
+ minDate: moment().subtract(1, 'year').startOf('months'),
56
+ maxDate: moment().add(1, 'year').endOf('months'),
57
+ };
58
+
59
+ constructor(props: CalendarMobileProps) {
60
+ super(props);
61
+
62
+ this.mobileBody = React.createRef();
63
+ this.mobileHeader = React.createRef();
64
+
65
+ const {startDate, endDate, viewMode} = this.props;
66
+
67
+ this.state = {
68
+ startDate,
69
+ endDate,
70
+ showToast: false,
71
+ currentDate: moment(),
72
+ isScrollToBottom: false,
73
+ dateTime: endDate ? [endDate.hour(), endDate.minute()] : [0, 0]
74
+ };
75
+ }
76
+
77
+ componentDidMount() {
78
+ this.initMonths();
79
+ }
80
+
81
+ componentDidUpdate(prevProps: CalendarMobileProps) {
82
+ const props = this.props;
83
+
84
+ if (prevProps.minDate !== props.minDate || prevProps.maxDate !== props.maxDate) {
85
+ this.initMonths();
86
+ }
87
+ }
88
+
89
+ componentWillUnmount() {
90
+ this.setState({showToast: false});
91
+ clearTimeout(this.timer);
92
+ }
93
+
94
+ initMonths() {
95
+ if (this.mobileBody.current) {
96
+ const header = this.mobileHeader.current;
97
+ let monthHeights: number[] = [];
98
+ const monthCollection = this.mobileBody.current.children;
99
+ for (let i = 0; i < monthCollection.length; i++) {
100
+ monthHeights[i] = monthCollection[i].offsetTop - header.clientHeight;
101
+ }
102
+ this.setState({
103
+ monthHeights
104
+ });
105
+ this.scollToDate(moment());
106
+ }
107
+ }
108
+
109
+ scollToDate(date: moment.Moment) {
110
+ const {minDate, showViewMode} = this.props;
111
+ const index = date.diff(minDate, showViewMode);
112
+ const currentEl = this.mobileBody.current.children[index];
113
+ const header = this.mobileHeader.current;
114
+ this.mobileBody.current.scrollBy(0, currentEl.offsetTop - this.mobileBody.current.scrollTop - header.clientHeight);
115
+ }
116
+
117
+ @autobind
118
+ onMobileBodyScroll(e: any) {
119
+ const {showViewMode} = this.props;
120
+ const {monthHeights} = this.state;
121
+ let minDate = this.props.minDate?.clone();
122
+ if (!this.mobileBody?.current || !monthHeights || !minDate) {
123
+ return;
124
+ }
125
+ const scrollTop = this.mobileBody.current.scrollTop;
126
+ const clientHeight = this.mobileBody.current.clientHeight;
127
+ const scrollHeight = this.mobileBody.current.scrollHeight;
128
+
129
+ let i = 0;
130
+ for(i; i < monthHeights.length; i++) {
131
+ if (scrollTop < monthHeights[i]) {
132
+ break;
133
+ }
134
+ }
135
+ i--;
136
+ i < 0 && (i = 0);
137
+ const currentDate = minDate.add(i, showViewMode);
138
+ this.setState({
139
+ currentDate,
140
+ isScrollToBottom: scrollTop + clientHeight === scrollHeight
141
+ });
142
+ }
143
+
144
+ @autobind
145
+ scrollPreYear() {
146
+ if (!this.state.currentDate) {
147
+ return;
148
+ }
149
+ const {minDate} = this.props;
150
+ let {currentDate} = this.state;
151
+ currentDate = currentDate.clone().subtract(1, 'years');
152
+ if (minDate && currentDate.isBefore(minDate)) {
153
+ currentDate = minDate;
154
+ }
155
+ this.setState({
156
+ currentDate
157
+ });
158
+ this.scollToDate(currentDate);
159
+ }
160
+
161
+ @autobind
162
+ scrollAfterYear() {
163
+ if (!this.state.currentDate) {
164
+ return;
165
+ }
166
+ const {maxDate} = this.props;
167
+ let {currentDate} = this.state;
168
+ currentDate = currentDate.clone().add(1, 'years');
169
+ if (maxDate && currentDate.isAfter(maxDate)) {
170
+ currentDate = maxDate;
171
+ }
172
+ this.setState({
173
+ currentDate
174
+ });
175
+ this.scollToDate(currentDate);
176
+ }
177
+
178
+ getDaysOfWeek() {
179
+ const locale = moment().localeData();
180
+ const days = locale.weekdaysMin();
181
+ const first = locale.firstDayOfWeek();
182
+ const dow: string[] = [];
183
+ let i = 0;
184
+
185
+ days.forEach((day: string) => {
186
+ dow[ (7 + ( i++ ) - first) % 7 ] = day;
187
+ });
188
+
189
+ return dow;
190
+ }
191
+
192
+ @autobind
193
+ handleCalendarClick(isDisabled: boolean) {
194
+ if (isDisabled) {
195
+ this.setState({showToast: true});
196
+ this.timer = setTimeout(() => {
197
+ this.setState({showToast: false});
198
+ }, 2000);
199
+ }
200
+ }
201
+
202
+ getRenderProps(props: any, currentDate: moment.Moment) {
203
+ let {startDate, endDate} = this.state;
204
+ const {translate: __, viewMode} = this.props;
205
+ const precision = viewMode === 'time' ? 'hours' : viewMode || 'day';
206
+ let footerText = '';
207
+
208
+ if (startDate &&
209
+ endDate &&
210
+ currentDate.isBetween(startDate, endDate, precision, '()')) {
211
+ props.className += ' rdtBetween';
212
+ }
213
+ else if (startDate
214
+ && endDate
215
+ && startDate.isSame(endDate, precision)
216
+ && currentDate.isSame(startDate, precision)) {
217
+ props.className += ' rdtRangeStart';
218
+ footerText = __('Calendar.beginAndEnd');
219
+ }
220
+ else if (startDate && currentDate.isSame(startDate, precision)) {
221
+ props.className += ' rdtRangeStart';
222
+ footerText = __('Calendar.begin');
223
+ if (endDate) {
224
+ props.className += ' rdtRangeHasEnd';
225
+ }
226
+ }
227
+ else if (endDate && currentDate.isSame(endDate, precision)) {
228
+ props.className += ' rdtRangeEnd';
229
+ footerText = __('Calendar.end');
230
+ }
231
+
232
+ if (precision === 'day' && currentDate.date() === 1 && currentDate.day() === 1) {
233
+ props.className += ' rdtOldNone';
234
+ }
235
+
236
+ const rdtDisabled = props.className.indexOf('rdtDisabled') > -1;
237
+
238
+ return {
239
+ props,
240
+ footerText,
241
+ rdtDisabled
242
+ };
243
+ }
244
+
245
+ @autobind
246
+ handleTimeChange(newTime: any) {
247
+ if (!newTime) {
248
+ return;
249
+ }
250
+ const {onChange} = this.props;
251
+ let {startDate, endDate} = this.state;
252
+ if (startDate) {
253
+ let obj = {
254
+ dateTime: newTime,
255
+ startDate: endDate ? startDate : startDate?.clone().set({hour: newTime[0], minute: newTime[1], second: 0}),
256
+ endDate: !endDate ? endDate : endDate?.clone().set({hour: newTime[0], minute: newTime[1], second: 0})
257
+ };
258
+ this.setState(obj, () => {
259
+ onChange && onChange(this.state);
260
+ });
261
+ }
262
+ }
263
+
264
+ @autobind
265
+ checkIsValidDate(currentDate: moment.Moment) {
266
+ const {minDate, maxDate} = this.props;
267
+ let {startDate, endDate} = this.state;
268
+ let {minDuration, maxDuration, viewMode} = this.props;
269
+ const precision = viewMode === 'time' ? 'hours' : viewMode || 'day';
270
+
271
+ if (minDate && currentDate.isBefore(minDate, precision)) {
272
+ return false;
273
+ }
274
+ else if (maxDate && currentDate.isAfter(maxDate, precision)) {
275
+ return false;
276
+ }
277
+ else if (startDate && !endDate) {
278
+ if (minDuration
279
+ && currentDate.isBefore(startDate.clone().add(minDuration))
280
+ && currentDate.isSameOrAfter(startDate)) {
281
+ return false;
282
+ }
283
+ else if (maxDuration && currentDate.isAfter(startDate.clone().add(maxDuration))) {
284
+ return false;
285
+ }
286
+ }
287
+
288
+ return true;
289
+ }
290
+
291
+ @autobind
292
+ renderMobileDay(props: any, currentDate: moment.Moment) {
293
+ const cx = this.props.classnames;
294
+ const renderProps = this.getRenderProps(props, currentDate);
295
+
296
+ return <td {...renderProps.props}>
297
+ <div className="calendar-wrap" onClick={() => this.handleCalendarClick(renderProps.rdtDisabled)}>
298
+ {currentDate.date()}
299
+ <div className={cx('CalendarMobile-range-text')}>{renderProps.footerText}</div>
300
+ </div>
301
+ </td>;
302
+ }
303
+
304
+ @autobind
305
+ renderMonth(props: any, month: number, year: number) {
306
+ const cx = this.props.classnames;
307
+ const currentDate = moment().year(year).month(month);
308
+ const monthStr = currentDate
309
+ .localeData()
310
+ .monthsShort(currentDate.month(month));
311
+ const strLength = 3;
312
+ const monthStrFixedLength = monthStr.substring(0, strLength);
313
+ const renderProps = this.getRenderProps(props, currentDate);
314
+
315
+ return (
316
+ <td {...renderProps.props}>
317
+ <div className="calendar-wrap" onClick={() => this.handleCalendarClick(renderProps.rdtDisabled)}>
318
+ {monthStrFixedLength}
319
+ <div className={cx('CalendarMobile-range-text')}>{renderProps.footerText}</div>
320
+ </div>
321
+ </td>
322
+ );
323
+ }
324
+
325
+ @autobind
326
+ renderQuarter(props: any, quarter: number, year: number) {
327
+ const cx = this.props.classnames;
328
+ const currentDate = moment().year(year).quarter(quarter);
329
+ const renderProps = this.getRenderProps(props, currentDate);
330
+
331
+ return (
332
+ <td {...props}>
333
+ <div className="calendar-wrap" onClick={() => this.handleCalendarClick(renderProps.rdtDisabled)}>
334
+ Q{quarter}
335
+ <div className={cx('CalendarMobile-range-text')}>{renderProps.footerText}</div>
336
+ </div>
337
+ </td>
338
+ );
339
+ }
340
+
341
+ @autobind
342
+ handleMobileChange(newValue: moment.Moment) {
343
+ const {embed, minDuration, maxDuration, confirm, onChange, viewMode, minDate, maxDate} = this.props;
344
+ const {startDate, endDate, dateTime} = this.state;
345
+ const precision = viewMode === 'time' ? 'hours' : viewMode || 'day';
346
+
347
+ if (minDate && newValue && newValue.isBefore(minDate, 'second')) {
348
+ newValue = minDate;
349
+ }
350
+
351
+ if (maxDate && newValue && newValue.isAfter(maxDate, 'second')) {
352
+ newValue = maxDate;
353
+ }
354
+
355
+ if (
356
+ startDate &&
357
+ !endDate &&
358
+ newValue.isSameOrAfter(startDate) &&
359
+ (!minDuration || newValue.isSameOrAfter(startDate.clone().add(minDuration))) &&
360
+ (!maxDuration || newValue.isSameOrBefore(startDate.clone().add(maxDuration)))
361
+ ) {
362
+ return this.setState(
363
+ {
364
+ endDate: newValue.clone().endOf(precision).set({hour: dateTime[0], minute: dateTime[1], second: 0})
365
+ },
366
+ () => {
367
+ onChange && onChange(this.state, () => embed && confirm && confirm());
368
+ }
369
+ );
370
+ }
371
+
372
+ this.setState(
373
+ {
374
+ startDate: newValue.clone().startOf(precision).set({hour: dateTime[0], minute: dateTime[1], second: 0}),
375
+ endDate: undefined
376
+ },
377
+ () => {
378
+ onChange && onChange(this.state);
379
+ }
380
+ );
381
+ }
382
+
383
+ @autobind
384
+ renderMobileCalendarBody() {
385
+ const {
386
+ classnames: cx,
387
+ dateFormat,
388
+ timeFormat,
389
+ inputFormat,
390
+ locale,
391
+ viewMode = 'days',
392
+ close
393
+ } = this.props;
394
+ const __ = this.props.translate;
395
+
396
+ const {minDate, maxDate, showViewMode} = this.props;
397
+ if (!minDate || !maxDate) {
398
+ return;
399
+ }
400
+ let calendarDates: moment.Moment[] = [];
401
+ for(let minDateClone = minDate.clone(); minDateClone.isSameOrBefore(maxDate); minDateClone.add(1, showViewMode)) {
402
+ calendarDates.push(minDateClone.clone());
403
+ }
404
+
405
+ return (
406
+ <div className={cx('CalendarMobile-body')} ref={this.mobileBody}
407
+ onScroll={this.onMobileBodyScroll}>
408
+ {calendarDates.map((calendarDate: moment.Moment, index: number) => {
409
+ const rdtOldNone = showViewMode === 'months'
410
+ && calendarDate.clone().startOf('month').day() === 1
411
+ ? 'rdtOldNone' : '';
412
+
413
+ return <div className={cx('CalendarMobile-calendar-wrap', rdtOldNone)} key={'calendar-wrap' + index}>
414
+ {showViewMode === 'months' && <div className={cx('CalendarMobile-calendar-mark')} key={'calendar-mark' + index}>
415
+ {calendarDate.month() + 1}
416
+ </div>}
417
+ <div className={cx('CalendarMobile-calendar-header')}>
418
+ <span className="rdtSwitch">
419
+ {calendarDate.format(__('dateformat.year'))}
420
+ </span>
421
+ {showViewMode === 'months' && <span className="rdtSwitch">
422
+ {calendarDate.format(__('MMM'))}
423
+ </span>}
424
+ </div>
425
+ <Calendar
426
+ className={cx('CalendarMobile-calendar', rdtOldNone)}
427
+ viewDate={calendarDate}
428
+ value={calendarDate}
429
+ onChange={this.handleMobileChange}
430
+ requiredConfirm={false}
431
+ dateFormat={dateFormat}
432
+ inputFormat={inputFormat}
433
+ timeFormat=''
434
+ isValidDate={this.checkIsValidDate}
435
+ viewMode={viewMode}
436
+ input={false}
437
+ onClose={close}
438
+ renderDay={this.renderMobileDay}
439
+ renderMonth={this.renderMonth}
440
+ renderQuarter={this.renderQuarter}
441
+ locale={locale}
442
+ hideHeader={true}
443
+ updateOn={viewMode}
444
+ key={'calendar' + index}
445
+ />
446
+ </div>
447
+ })}
448
+ </div>
449
+ );
450
+ }
451
+
452
+ @autobind
453
+ renderMobileTimePicker() {
454
+ const {
455
+ classnames: cx,
456
+ timeFormat,
457
+ locale,
458
+ close
459
+ } = this.props;
460
+ const __ = this.props.translate;
461
+
462
+ const {startDate, endDate, dateTime} = this.state;
463
+
464
+ return (
465
+ <div className={cx('CalendarMobile-time')}>
466
+ <div className={cx('CalendarMobile-time-title')}>
467
+ {startDate && endDate ? __('Calendar.endPick') : __('Calendar.startPick')}
468
+ </div>
469
+ <Calendar
470
+ className={cx('CalendarMobile-time-calendar')}
471
+ onChange={this.handleTimeChange}
472
+ requiredConfirm={false}
473
+ timeFormat={timeFormat}
474
+ viewMode="time"
475
+ input={false}
476
+ onClose={close}
477
+ locale={locale}
478
+ useMobileUI={true}
479
+ showToolbar={false}
480
+ viewDate={moment().set({hour: dateTime[0], minute: dateTime[1], second: 0})}
481
+ />
482
+ </div>
483
+ );
484
+ }
485
+
486
+
487
+ render() {
488
+ const {
489
+ className,
490
+ classnames: cx,
491
+ embed,
492
+ confirm,
493
+ footerExtra,
494
+ timeFormat,
495
+ minDate,
496
+ maxDate,
497
+ showViewMode
498
+ } = this.props;
499
+ const __ = this.props.translate;
500
+
501
+ const {startDate, endDate, currentDate, showToast, isScrollToBottom} = this.state;
502
+ let dateNow = currentDate
503
+ ? currentDate.format(__(`Calendar.${showViewMode === 'months' ? 'yearmonth' : 'year'}`))
504
+ : moment().format(__(`Calendar.${showViewMode === 'months' ? 'yearmonth' : 'year'}`));
505
+
506
+ const header = (
507
+ <div className={cx('CalendarMobile-header')} ref={this.mobileHeader}>
508
+ <div className={cx('CalendarMobile-subtitle')}>
509
+ <span className="subtitle-text">
510
+ {currentDate && currentDate.isSameOrBefore(minDate, showViewMode)
511
+ ? null
512
+ : <a className="rdtPrev" onClick={this.scrollPreYear}>&lsaquo;</a>}
513
+ {dateNow}
514
+ {currentDate && currentDate.isSameOrAfter(maxDate, showViewMode) || isScrollToBottom
515
+ ? null
516
+ : <a className="rdtNext" onClick={this.scrollAfterYear}>&rsaquo;</a>}
517
+ </span>
518
+ </div>
519
+ {showViewMode === 'months' ? <div className={cx('CalendarMobile-weekdays')}>
520
+ {this.getDaysOfWeek().map((day: string, index: number) => (
521
+ <span key={day + index} className="weekday">
522
+ {day}
523
+ </span>
524
+ ))}
525
+ </div> : null}
526
+ </div>
527
+ );
528
+
529
+ const footer = (
530
+ <div className={cx('CalendarMobile-footer')}>
531
+ {timeFormat && startDate && this.renderMobileTimePicker()}
532
+ <div className={cx('CalendarMobile-footer-toolbar')}>
533
+ <div className={cx('CalendarMobile-footer-ranges')}>
534
+ {footerExtra}
535
+ </div>
536
+ {confirm && !embed && <a
537
+ className={cx('Button', 'Button--primary', 'date-range-confirm', {
538
+ 'is-disabled': !startDate || !endDate
539
+ })}
540
+ onClick={confirm}
541
+ >
542
+ {__('confirm')}
543
+ </a>}
544
+ </div>
545
+ </div>
546
+ );
547
+
548
+ return (
549
+ <div className={cx('CalendarMobile',
550
+ embed ? 'CalendarMobile-embed' : '',
551
+ className)}>
552
+ <div className={cx('CalendarMobile-wrap')}>
553
+ {header}
554
+ {this.renderMobileCalendarBody()}
555
+ {footer}
556
+ </div>
557
+ {showToast? <div className={cx('CalendarMobile-toast')}>{__('Calendar.toast')}</div> : null}
558
+ </div>
559
+ );
560
+ }
561
+ };
562
+
563
+ export default themeable(localeable(CalendarMobile));
@@ -78,7 +78,13 @@ export class ChainedSelection extends BaseSelection<
78
78
  onClick={() => this.toggleOption(option)}
79
79
  >
80
80
  <div className={cx('ChainedSelection-itemLabel')}>
81
- {itemRender(option)}
81
+ {itemRender(option, {
82
+ index: index,
83
+ multiple: multiple,
84
+ checked: !!~valueArray.indexOf(option),
85
+ onChange: () => this.toggleOption(option),
86
+ disabled: disabled || option.disabled
87
+ })}
82
88
  </div>
83
89
 
84
90
  {multiple ? (
@@ -100,7 +106,8 @@ export class ChainedSelection extends BaseSelection<
100
106
  disabled,
101
107
  classnames: cx,
102
108
  itemClassName,
103
- itemRender
109
+ itemRender,
110
+ multiple
104
111
  } = this.props;
105
112
  const valueArray = this.valueArray;
106
113
 
@@ -118,7 +125,13 @@ export class ChainedSelection extends BaseSelection<
118
125
  onClick={() => this.selectOption(option, depth, id)}
119
126
  >
120
127
  <div className={cx('ChainedSelection-itemLabel')}>
121
- {itemRender(option)}
128
+ {itemRender(option, {
129
+ index: index,
130
+ multiple: multiple,
131
+ checked: !!~this.state.selected.indexOf(id),
132
+ onChange: () => this.selectOption(option, depth, id),
133
+ disabled: disabled || option.disabled
134
+ })}
122
135
  </div>
123
136
 
124
137
  {option.defer && option.loading ? <Spinner size="sm" show /> : null}
@@ -320,45 +320,43 @@ export class ColorControl extends React.PureComponent<
320
320
  </PopOver>
321
321
  </Overlay>
322
322
  ) : null}
323
- {
324
- useMobileUI && isMobile() && (
325
- <PopUp
326
- className={cx(`${ns}ColorPicker-popup`)}
327
- isShow={isOpened}
328
- onHide={this.handleClick}
329
- >
330
- {allowCustomColor ? (
331
- <SketchPicker
332
- styles={{}}
333
- disableAlpha={!!~['rgb', 'hex'].indexOf(format as string)}
334
- color={value}
335
- presetColors={presetColors}
336
- onChangeComplete={this.handleChange}
337
- />
338
- ) : (
339
- <GithubPicker
340
- color={value}
341
- colors={
342
- Array.isArray(presetColors)
343
- ? (presetColors
344
- .filter(
345
- item => typeof item === 'string' || isObject(item)
346
- )
347
- .map(item =>
348
- typeof item === 'string'
349
- ? item
350
- : isObject(item)
351
- ? item?.color
352
- : item
353
- ) as string[])
354
- : undefined
355
- }
356
- onChangeComplete={this.handleChange}
357
- />
358
- )}
359
- </PopUp>
360
- )
361
- }
323
+ {useMobileUI && isMobile() && (
324
+ <PopUp
325
+ className={cx(`${ns}ColorPicker-popup`)}
326
+ isShow={isOpened}
327
+ onHide={this.handleClick}
328
+ >
329
+ {allowCustomColor ? (
330
+ <SketchPicker
331
+ styles={{}}
332
+ disableAlpha={!!~['rgb', 'hex'].indexOf(format as string)}
333
+ color={value}
334
+ presetColors={presetColors}
335
+ onChangeComplete={this.handleChange}
336
+ />
337
+ ) : (
338
+ <GithubPicker
339
+ color={value}
340
+ colors={
341
+ Array.isArray(presetColors)
342
+ ? (presetColors
343
+ .filter(
344
+ item => typeof item === 'string' || isObject(item)
345
+ )
346
+ .map(item =>
347
+ typeof item === 'string'
348
+ ? item
349
+ : isObject(item)
350
+ ? item?.color
351
+ : item
352
+ ) as string[])
353
+ : undefined
354
+ }
355
+ onChangeComplete={this.handleChange}
356
+ />
357
+ )}
358
+ </PopUp>
359
+ )}
362
360
  </div>
363
361
  );
364
362
  }