amis 1.5.6-beta.5 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/pre-commit +1 -1
- package/lib/Schema.d.ts +3 -2
- package/lib/Schema.js.map +1 -1
- package/lib/components/AssociatedSelection.d.ts +84 -84
- package/lib/components/AssociatedSelection.js +2 -2
- package/lib/components/AssociatedSelection.js.map +2 -2
- package/lib/components/Avatar.d.ts +135 -0
- package/lib/components/Avatar.js +120 -0
- package/lib/components/Avatar.js.map +13 -0
- package/lib/components/BaiduMapPicker.js.map +2 -2
- package/lib/components/CalendarMobile.d.ts +547 -0
- package/lib/components/CalendarMobile.js +432 -0
- package/lib/components/CalendarMobile.js.map +13 -0
- package/lib/components/Card.js +1 -1
- package/lib/components/Card.js.map +2 -2
- package/lib/components/Cascader.d.ts +123 -0
- package/lib/components/Cascader.js +487 -0
- package/lib/components/Cascader.js.map +13 -0
- package/lib/components/ChainedSelection.d.ts +84 -84
- package/lib/components/ChainedSelection.js +15 -3
- package/lib/components/ChainedSelection.js.map +2 -2
- package/lib/components/CityArea.d.ts +527 -0
- package/lib/components/CityArea.js +177 -0
- package/lib/components/CityArea.js.map +13 -0
- package/lib/components/Collapse.js +1 -1
- package/lib/components/Collapse.js.map +2 -2
- package/lib/components/ColorPicker.d.ts +84 -84
- package/lib/components/ColorPicker.js +4 -3
- package/lib/components/ColorPicker.js.map +2 -2
- package/lib/components/DatePicker.d.ts +85 -84
- package/lib/components/DatePicker.js +15 -8
- package/lib/components/DatePicker.js.map +2 -2
- package/lib/components/DateRangePicker.d.ts +85 -84
- package/lib/components/DateRangePicker.js +18 -6
- package/lib/components/DateRangePicker.js.map +2 -2
- package/lib/components/GroupedSelection.d.ts +84 -84
- package/lib/components/GroupedSelection.js +14 -2
- package/lib/components/GroupedSelection.js.map +2 -2
- package/lib/components/MonthRangePicker.d.ts +85 -84
- package/lib/components/MonthRangePicker.js +16 -6
- package/lib/components/MonthRangePicker.js.map +2 -2
- package/lib/components/Overlay.d.ts +1 -1
- package/lib/components/Overlay.js.map +1 -1
- package/lib/components/Picker.d.ts +1 -0
- package/lib/components/Picker.js +16 -7
- package/lib/components/Picker.js.map +2 -2
- package/lib/components/PickerColumn.d.ts +1 -0
- package/lib/components/PickerColumn.js +21 -18
- package/lib/components/PickerColumn.js.map +2 -2
- package/lib/components/PickerContainer.d.ts +3 -0
- package/lib/components/PickerContainer.js +12 -5
- package/lib/components/PickerContainer.js.map +2 -2
- package/lib/components/PopOverContainer.d.ts +1 -0
- package/lib/components/PopOverContainer.js +5 -3
- package/lib/components/PopOverContainer.js.map +2 -2
- package/lib/components/PopUp.d.ts +1041 -28
- package/lib/components/PopUp.js +32 -8
- package/lib/components/PopUp.js.map +2 -2
- package/lib/components/Rating.d.ts +203 -73
- package/lib/components/Rating.js +147 -31
- package/lib/components/Rating.js.map +2 -2
- package/lib/components/ResultBox.d.ts +85 -84
- package/lib/components/ResultBox.js +9 -4
- package/lib/components/ResultBox.js.map +2 -2
- package/lib/components/ResultList.d.ts +9 -2
- package/lib/components/ResultList.js +22 -2
- package/lib/components/ResultList.js.map +2 -2
- package/lib/components/Select.d.ts +237 -237
- package/lib/components/Select.js +9 -6
- package/lib/components/Select.js.map +2 -2
- package/lib/components/Selection.d.ts +94 -86
- package/lib/components/Selection.js +11 -2
- package/lib/components/Selection.js.map +2 -2
- package/lib/components/Steps.js.map +2 -2
- package/lib/components/TableSelection.d.ts +85 -85
- package/lib/components/TableSelection.js +1 -9
- package/lib/components/TableSelection.js.map +2 -2
- package/lib/components/Tabs.js +31 -33
- package/lib/components/Tabs.js.map +2 -2
- package/lib/components/TabsTransfer.d.ts +87 -256
- package/lib/components/TabsTransfer.js +52 -9
- package/lib/components/TabsTransfer.js.map +2 -2
- package/lib/components/TabsTransferPicker.d.ts +1 -1
- package/lib/components/TabsTransferPicker.js +20 -18
- package/lib/components/TabsTransferPicker.js.map +2 -2
- package/lib/components/Timeline.d.ts +69 -0
- package/lib/components/Timeline.js +16 -0
- package/lib/components/Timeline.js.map +13 -0
- package/lib/components/TimelineItem.d.ts +516 -0
- package/lib/components/TimelineItem.js +41 -0
- package/lib/components/TimelineItem.js.map +13 -0
- package/lib/components/Transfer.d.ts +100 -98
- package/lib/components/Transfer.js +2 -3
- package/lib/components/Transfer.js.map +2 -2
- package/lib/components/TransferDropDown.d.ts +85 -84
- package/lib/components/TransferDropDown.js +9 -10
- package/lib/components/TransferDropDown.js.map +2 -2
- package/lib/components/TransferPicker.d.ts +1 -0
- package/lib/components/TransferPicker.js +19 -4
- package/lib/components/TransferPicker.js.map +2 -2
- package/lib/components/TreeSelection.d.ts +85 -85
- package/lib/components/TreeSelection.js +7 -1
- package/lib/components/TreeSelection.js.map +2 -2
- package/lib/components/calendar/Calendar.d.ts +19 -0
- package/lib/components/calendar/Calendar.js +71 -1
- package/lib/components/calendar/Calendar.js.map +2 -2
- package/lib/components/calendar/DaysView.d.ts +21 -0
- package/lib/components/calendar/DaysView.js +76 -17
- package/lib/components/calendar/DaysView.js.map +2 -2
- package/lib/components/calendar/MonthsView.d.ts +34 -0
- package/lib/components/calendar/MonthsView.js +68 -3
- package/lib/components/calendar/MonthsView.js.map +2 -2
- package/lib/components/calendar/QuartersView.d.ts +1 -0
- package/lib/components/calendar/QuartersView.js +2 -2
- package/lib/components/calendar/QuartersView.js.map +2 -2
- package/lib/components/calendar/TimeView.d.ts +30 -18
- package/lib/components/calendar/TimeView.js +47 -8
- package/lib/components/calendar/TimeView.js.map +2 -2
- package/lib/components/calendar/YearsView.d.ts +6 -0
- package/lib/components/calendar/YearsView.js +21 -10
- package/lib/components/calendar/YearsView.js.map +2 -2
- package/lib/components/condition-builder/Field.js +1 -4
- package/lib/components/condition-builder/Field.js.map +2 -2
- package/lib/components/condition-builder/Func.js +1 -1
- package/lib/components/condition-builder/Func.js.map +2 -2
- package/lib/components/formula/Editor.d.ts +3 -0
- package/lib/components/formula/Editor.js +3 -2
- package/lib/components/formula/Editor.js.map +2 -2
- package/lib/components/formula/FuncList.js +2 -1
- package/lib/components/formula/FuncList.js.map +2 -2
- package/lib/components/formula/Picker.js +1 -1
- package/lib/components/formula/Picker.js.map +2 -2
- package/lib/components/icons.js +4 -0
- package/lib/components/icons.js.map +2 -2
- package/lib/components/index.d.ts +2 -1
- package/lib/components/index.js +4 -2
- package/lib/components/index.js.map +2 -2
- package/lib/components/virtual-list/SizeAndPositionManager.js.map +2 -2
- package/lib/components/virtual-list/index.js +1 -2
- package/lib/components/virtual-list/index.js.map +2 -2
- package/lib/factory.js +5 -0
- package/lib/factory.js.map +2 -2
- package/lib/icons/star.js +12 -0
- package/lib/icons/tree-down.js +7 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/index.js.map +2 -2
- package/lib/locale/de-DE.js +17 -2
- package/lib/locale/de-DE.js.map +2 -2
- package/lib/locale/en-US.js +17 -2
- package/lib/locale/en-US.js.map +2 -2
- package/lib/locale/zh-CN.js +16 -1
- package/lib/locale/zh-CN.js.map +2 -2
- package/lib/renderers/Avatar.d.ts +35 -26
- package/lib/renderers/Avatar.js +14 -19
- package/lib/renderers/Avatar.js.map +2 -2
- package/lib/renderers/CRUD.js +1 -2
- package/lib/renderers/CRUD.js.map +2 -2
- package/lib/renderers/Card.js +6 -5
- package/lib/renderers/Card.js.map +2 -2
- package/lib/renderers/Custom.js.map +2 -2
- package/lib/renderers/DropDownButton.d.ts +11 -2
- package/lib/renderers/DropDownButton.js +30 -12
- package/lib/renderers/DropDownButton.js.map +2 -2
- package/lib/renderers/Each.js +5 -2
- package/lib/renderers/Each.js.map +2 -2
- package/lib/renderers/Flex.js +1 -5
- package/lib/renderers/Flex.js.map +2 -2
- package/lib/renderers/Form/ChartRadios.js.map +2 -2
- package/lib/renderers/Form/Checkboxes.js.map +2 -2
- package/lib/renderers/Form/CityDB.js +526 -2
- package/lib/renderers/Form/CityDB.js.map +2 -2
- package/lib/renderers/Form/DiffEditor.js +2 -1
- package/lib/renderers/Form/DiffEditor.js.map +2 -2
- package/lib/renderers/Form/InputCity.d.ts +85 -84
- package/lib/renderers/Form/InputCity.js +4 -2
- package/lib/renderers/Form/InputCity.js.map +2 -2
- package/lib/renderers/Form/InputColor.d.ts +84 -84
- package/lib/renderers/Form/InputColor.js +6 -2
- package/lib/renderers/Form/InputColor.js.map +2 -2
- package/lib/renderers/Form/InputDate.js +10 -5
- package/lib/renderers/Form/InputDate.js.map +2 -2
- package/lib/renderers/Form/InputDateRange.js +6 -2
- package/lib/renderers/Form/InputDateRange.js.map +2 -2
- package/lib/renderers/Form/InputFormula.d.ts +4 -1
- package/lib/renderers/Form/InputFormula.js +2 -2
- package/lib/renderers/Form/InputFormula.js.map +2 -2
- package/lib/renderers/Form/InputImage.d.ts +1 -0
- package/lib/renderers/Form/InputImage.js +8 -4
- package/lib/renderers/Form/InputImage.js.map +2 -2
- package/lib/renderers/Form/InputMonthRange.js +1 -1
- package/lib/renderers/Form/InputMonthRange.js.map +2 -2
- package/lib/renderers/Form/InputQuarterRange.js +1 -1
- package/lib/renderers/Form/InputQuarterRange.js.map +2 -2
- package/lib/renderers/Form/InputRating.d.ts +37 -0
- package/lib/renderers/Form/InputRating.js +6 -2
- package/lib/renderers/Form/InputRating.js.map +2 -2
- package/lib/renderers/Form/InputYearRange.js +1 -1
- package/lib/renderers/Form/InputYearRange.js.map +2 -2
- package/lib/renderers/Form/Item.d.ts +10 -14
- package/lib/renderers/Form/Item.js +18 -9
- package/lib/renderers/Form/Item.js.map +2 -2
- package/lib/renderers/Form/NestedSelect.d.ts +1 -0
- package/lib/renderers/Form/NestedSelect.js +8 -4
- package/lib/renderers/Form/NestedSelect.js.map +2 -2
- package/lib/renderers/Form/Select.d.ts +2 -0
- package/lib/renderers/Form/Select.js +7 -4
- package/lib/renderers/Form/Select.js.map +2 -2
- package/lib/renderers/Form/TabsTransfer.d.ts +5 -32
- package/lib/renderers/Form/TabsTransfer.js +20 -1
- package/lib/renderers/Form/TabsTransfer.js.map +2 -2
- package/lib/renderers/Form/TabsTransferPicker.d.ts +5 -35
- package/lib/renderers/Form/TabsTransferPicker.js +21 -2
- package/lib/renderers/Form/TabsTransferPicker.js.map +2 -2
- package/lib/renderers/Form/Transfer.d.ts +15 -4
- package/lib/renderers/Form/Transfer.js +55 -18
- package/lib/renderers/Form/Transfer.js.map +2 -2
- package/lib/renderers/Form/TransferPicker.d.ts +3 -32
- package/lib/renderers/Form/TransferPicker.js +1 -1
- package/lib/renderers/Form/TransferPicker.js.map +2 -2
- package/lib/renderers/Form/TreeSelect.js +4 -4
- package/lib/renderers/Form/TreeSelect.js.map +2 -2
- package/lib/renderers/Form/index.js +2 -1
- package/lib/renderers/Form/index.js.map +2 -2
- package/lib/renderers/IFrame.js +0 -2
- package/lib/renderers/IFrame.js.map +2 -2
- package/lib/renderers/Json.js +7 -0
- package/lib/renderers/Json.js.map +2 -2
- package/lib/renderers/Nav.js +4 -1
- package/lib/renderers/Nav.js.map +2 -2
- package/lib/renderers/Remark.d.ts +4 -0
- package/lib/renderers/Remark.js +39 -7
- package/lib/renderers/Remark.js.map +2 -2
- package/lib/renderers/Steps.js +5 -5
- package/lib/renderers/Steps.js.map +2 -2
- package/lib/renderers/Table/TableRow.js +4 -1
- package/lib/renderers/Table/TableRow.js.map +2 -2
- package/lib/renderers/Table/index.js +4 -1
- package/lib/renderers/Table/index.js.map +2 -2
- package/lib/renderers/Tabs.js +1 -1
- package/lib/renderers/Tabs.js.map +2 -2
- package/lib/renderers/Timeline.d.ts +65 -0
- package/lib/renderers/Timeline.js +54 -0
- package/lib/renderers/Timeline.js.map +13 -0
- package/lib/renderers/Video.js.map +2 -2
- package/lib/schemaExtend.js +23 -9
- package/lib/schemaExtend.js.map +2 -2
- package/lib/store/combo.js.map +2 -2
- package/lib/store/formItem.js +6 -6
- package/lib/store/formItem.js.map +2 -2
- package/lib/store/table.js +1 -1
- package/lib/store/table.js.map +2 -2
- package/lib/themes/ang-ie11.css +1018 -67
- package/lib/themes/ang.css +1018 -67
- package/lib/themes/ang.css.map +1 -1
- package/lib/themes/antd-ie11.css +1053 -67
- package/lib/themes/antd.css +1053 -67
- package/lib/themes/antd.css.map +1 -1
- package/lib/themes/cxd-ie11.css +1058 -78
- package/lib/themes/cxd.css +1058 -78
- package/lib/themes/cxd.css.map +1 -1
- package/lib/themes/dark-ie11.css +1019 -67
- package/lib/themes/dark.css +1019 -67
- package/lib/themes/dark.css.map +1 -1
- package/lib/themes/default.css +1058 -78
- package/lib/themes/default.css.map +1 -1
- package/lib/utils/RootClose.js +3 -1
- package/lib/utils/RootClose.js.map +2 -2
- package/lib/utils/helper.d.ts +1 -6
- package/lib/utils/helper.js +6 -17
- package/lib/utils/helper.js.map +2 -2
- package/package.json +12 -6
- package/schema.json +3696 -971
- package/scss/_properties.scss +21 -7
- package/scss/components/_avatar.scss +27 -9
- package/scss/components/_calendar.scss +287 -0
- package/scss/components/_card.scss +1 -1
- package/scss/components/_cascader.scss +102 -0
- package/scss/components/_city-area.scss +27 -0
- package/scss/components/_collapse-group.scss +1 -3
- package/scss/components/_dropdown.scss +39 -9
- package/scss/components/_formula.scss +30 -6
- package/scss/components/_modal.scss +18 -0
- package/scss/components/_panel.scss +45 -0
- package/scss/components/_picker-columns.scss +15 -5
- package/scss/components/_popup.scss +42 -15
- package/scss/components/_result-box.scss +31 -0
- package/scss/components/_timeline.scss +198 -0
- package/scss/components/form/_checks.scss +2 -0
- package/scss/components/form/_color.scss +2 -2
- package/scss/components/form/_date-range.scss +1 -1
- package/scss/components/form/_date.scss +46 -1
- package/scss/components/form/_form.scss +168 -0
- package/scss/components/form/_nested-select.scss +3 -0
- package/scss/components/form/_rating.scss +60 -21
- package/scss/components/form/_result-list.scss +2 -0
- package/scss/components/form/_select.scss +32 -3
- package/scss/components/form/_selection.scss +5 -4
- package/scss/components/form/_transfer.scss +3 -0
- package/scss/components/form/_tree-select.scss +1 -1
- package/scss/themes/_antd-variables.scss +42 -0
- package/scss/themes/_common.scss +3 -0
- package/scss/themes/_cxd-variables.scss +51 -2
- package/scss/themes/_dark-variables.scss +1 -0
- package/scss/themes/cxd.scss +0 -12
- package/sdk/ang-ie11.css +1278 -141
- package/sdk/ang.css +1296 -153
- package/sdk/antd-ie11.css +1278 -141
- package/sdk/antd.css +1331 -153
- package/sdk/charts.js +14 -14
- package/sdk/codemirror.js +7 -7
- package/sdk/color-picker.js +65 -65
- package/sdk/cropperjs.js +2 -2
- package/sdk/cxd-ie11.css +1258 -132
- package/sdk/cxd.css +1338 -168
- package/sdk/dark-ie11.css +1278 -141
- package/sdk/dark.css +1297 -153
- package/sdk/exceljs.js +1 -1
- package/sdk/locale/de-DE.js +17 -2
- package/sdk/markdown.js +69 -69
- package/sdk/papaparse.js +1 -1
- package/sdk/renderers/Form/CityDB.js +1 -1
- package/sdk/rest.js +18 -18
- package/sdk/rich-text.js +62 -62
- package/sdk/sdk-ie11.css +1258 -132
- package/sdk/sdk.css +1338 -168
- package/sdk/sdk.js +1242 -1218
- package/sdk/thirds/hls.js/hls.js +1 -1
- package/sdk/thirds/mpegts.js/mpegts.js +1 -1
- package/sdk/tinymce.js +57 -57
- package/src/Schema.ts +3 -0
- package/src/components/AssociatedSelection.tsx +5 -1
- package/src/components/Avatar.tsx +253 -0
- package/src/components/BaiduMapPicker.tsx +19 -14
- package/src/components/CalendarMobile.tsx +563 -0
- package/src/components/Card.tsx +2 -2
- package/src/components/Cascader.tsx +564 -0
- package/src/components/ChainedSelection.tsx +16 -3
- package/src/components/CityArea.tsx +315 -0
- package/src/components/Collapse.tsx +1 -1
- package/src/components/ColorPicker.tsx +41 -40
- package/src/components/DatePicker.tsx +54 -38
- package/src/components/DateRangePicker.tsx +83 -29
- package/src/components/GroupedSelection.tsx +14 -2
- package/src/components/MonthRangePicker.tsx +76 -30
- package/src/components/Overlay.tsx +1 -1
- package/src/components/Picker.tsx +55 -35
- package/src/components/PickerColumn.tsx +43 -36
- package/src/components/PickerContainer.tsx +13 -1
- package/src/components/PopOverContainer.tsx +31 -17
- package/src/components/PopUp.tsx +84 -57
- package/src/components/Rating.tsx +235 -47
- package/src/components/ResultBox.tsx +14 -2
- package/src/components/ResultList.tsx +36 -6
- package/src/components/Select.tsx +20 -23
- package/src/components/Selection.tsx +21 -3
- package/src/components/Steps.tsx +23 -10
- package/src/components/TableSelection.tsx +1 -44
- package/src/components/Tabs.tsx +65 -54
- package/src/components/TabsTransfer.tsx +78 -9
- package/src/components/TabsTransferPicker.tsx +25 -13
- package/src/components/Timeline.tsx +31 -0
- package/src/components/TimelineItem.tsx +107 -0
- package/src/components/Transfer.tsx +11 -8
- package/src/components/TransferDropDown.tsx +20 -12
- package/src/components/TransferPicker.tsx +25 -4
- package/src/components/TreeSelection.tsx +7 -1
- package/src/components/calendar/Calendar.tsx +101 -4
- package/src/components/calendar/DaysView.tsx +165 -33
- package/src/components/calendar/MonthsView.tsx +108 -1
- package/src/components/calendar/QuartersView.tsx +3 -2
- package/src/components/calendar/TimeView.tsx +104 -41
- package/src/components/calendar/YearsView.tsx +34 -17
- package/src/components/condition-builder/Field.tsx +1 -3
- package/src/components/condition-builder/Func.tsx +1 -1
- package/src/components/formula/Editor.tsx +16 -11
- package/src/components/formula/FuncList.tsx +3 -1
- package/src/components/formula/Picker.tsx +2 -1
- package/src/components/icons.tsx +4 -0
- package/src/components/index.tsx +2 -0
- package/src/components/virtual-list/SizeAndPositionManager.ts +6 -3
- package/src/components/virtual-list/index.tsx +4 -6
- package/src/factory.tsx +6 -0
- package/src/icons/star.svg +12 -0
- package/src/icons/tree-down.svg +5 -0
- package/src/index.tsx +1 -0
- package/src/locale/de-DE.ts +17 -2
- package/src/locale/en-US.ts +17 -2
- package/src/locale/zh-CN.ts +16 -1
- package/src/renderers/Avatar.tsx +83 -74
- package/src/renderers/CRUD.tsx +1 -3
- package/src/renderers/Card.tsx +10 -6
- package/src/renderers/Custom.tsx +6 -3
- package/src/renderers/DropDownButton.tsx +69 -35
- package/src/renderers/Each.tsx +4 -4
- package/src/renderers/Flex.tsx +3 -7
- package/src/renderers/Form/ChartRadios.tsx +2 -7
- package/src/renderers/Form/Checkboxes.tsx +1 -1
- package/src/renderers/Form/CityDB.ts +526 -2
- package/src/renderers/Form/DiffEditor.tsx +2 -3
- package/src/renderers/Form/InputCity.tsx +23 -3
- package/src/renderers/Form/InputColor.tsx +21 -2
- package/src/renderers/Form/InputDate.tsx +48 -20
- package/src/renderers/Form/InputDateRange.tsx +9 -2
- package/src/renderers/Form/InputFormula.tsx +9 -4
- package/src/renderers/Form/InputImage.tsx +9 -4
- package/src/renderers/Form/InputMonthRange.tsx +0 -1
- package/src/renderers/Form/InputQuarterRange.tsx +0 -1
- package/src/renderers/Form/InputRating.tsx +66 -3
- package/src/renderers/Form/InputYearRange.tsx +0 -1
- package/src/renderers/Form/Item.tsx +29 -8
- package/src/renderers/Form/NestedSelect.tsx +32 -4
- package/src/renderers/Form/Select.tsx +15 -3
- package/src/renderers/Form/TabsTransfer.tsx +28 -38
- package/src/renderers/Form/TabsTransferPicker.tsx +28 -46
- package/src/renderers/Form/Transfer.tsx +75 -24
- package/src/renderers/Form/TransferPicker.tsx +6 -38
- package/src/renderers/Form/TreeSelect.tsx +18 -16
- package/src/renderers/Form/index.tsx +2 -1
- package/src/renderers/IFrame.tsx +0 -2
- package/src/renderers/Json.tsx +5 -0
- package/src/renderers/Nav.tsx +4 -1
- package/src/renderers/Remark.tsx +68 -18
- package/src/renderers/Steps.tsx +11 -13
- package/src/renderers/Table/TableRow.tsx +3 -1
- package/src/renderers/Table/index.tsx +7 -1
- package/src/renderers/Tabs.tsx +6 -2
- package/src/renderers/Timeline.tsx +141 -0
- package/src/renderers/Video.tsx +4 -20
- package/src/schemaExtend.ts +22 -10
- package/src/store/combo.ts +1 -3
- package/src/store/formItem.ts +2 -2
- package/src/store/table.ts +2 -1
- package/src/utils/RootClose.ts +5 -1
- package/src/utils/helper.ts +6 -16
@@ -3,9 +3,13 @@ import moment from 'moment';
|
|
3
3
|
import DaysView from 'react-datetime/src/DaysView';
|
4
4
|
import React from 'react';
|
5
5
|
import Downshift from 'downshift';
|
6
|
+
import find from 'lodash/find';
|
6
7
|
import {LocaleProps, localeable} from '../../locale';
|
7
8
|
import {ClassNamesFn} from '../../theme';
|
8
|
-
import
|
9
|
+
import {isMobile, convertArrayValueToMoment} from "../../utils/helper";
|
10
|
+
import Picker from '../Picker';
|
11
|
+
import {PickerOption} from '../PickerColumn';
|
12
|
+
import {DateType} from './Calendar';
|
9
13
|
|
10
14
|
interface CustomDaysViewProps extends LocaleProps {
|
11
15
|
classPrefix?: string;
|
@@ -14,12 +18,16 @@ interface CustomDaysViewProps extends LocaleProps {
|
|
14
18
|
viewDate: moment.Moment;
|
15
19
|
selectedDate: moment.Moment;
|
16
20
|
minDate: moment.Moment;
|
21
|
+
maxDate: moment.Moment;
|
22
|
+
useMobileUI: boolean;
|
23
|
+
embed: boolean;
|
17
24
|
timeFormat: string;
|
18
25
|
requiredConfirm?: boolean;
|
19
26
|
isEndDate?: boolean;
|
20
27
|
renderDay?: Function;
|
21
28
|
onClose?: () => void;
|
22
29
|
onChange: (value: moment.Moment) => void;
|
30
|
+
onConfirm?: (value: number[], types: DateType[]) => void;
|
23
31
|
setDateTimeState: (state: any) => void;
|
24
32
|
setTime: (type: string, amount: number) => void;
|
25
33
|
subtractTime: (
|
@@ -41,20 +49,52 @@ interface CustomDaysViewProps extends LocaleProps {
|
|
41
49
|
handleClickOutside: () => void;
|
42
50
|
classnames: ClassNamesFn;
|
43
51
|
schedules?: Array<{
|
44
|
-
startTime: Date
|
45
|
-
endTime: Date
|
46
|
-
content: any
|
47
|
-
className?: string
|
52
|
+
startTime: Date;
|
53
|
+
endTime: Date;
|
54
|
+
content: any;
|
55
|
+
className?: string;
|
48
56
|
}>;
|
49
57
|
largeMode?: boolean;
|
50
58
|
onScheduleClick?: (scheduleData: any) => void;
|
59
|
+
hideHeader?: boolean;
|
60
|
+
getColumns: (types: DateType[], dateBoundary: void) => any;
|
61
|
+
getDateBoundary: (currentDate: moment.Moment) => any;
|
51
62
|
}
|
52
63
|
|
53
64
|
export class CustomDaysView extends DaysView {
|
54
65
|
props: CustomDaysViewProps;
|
66
|
+
state: { columns: { options: PickerOption[] }[]; types: DateType[]; pickerValue: number[]};
|
67
|
+
setState: (arg0: any) => () => any;
|
55
68
|
getDaysOfWeek: (locale: any) => any;
|
56
69
|
renderDays: () => JSX.Element;
|
57
70
|
|
71
|
+
constructor(props: any) {
|
72
|
+
super(props);
|
73
|
+
|
74
|
+
const {selectedDate, viewDate, timeFormat} = props;
|
75
|
+
const currentDate = (selectedDate || viewDate || moment());
|
76
|
+
|
77
|
+
const types: DateType[] = ['year', 'month', 'date'];
|
78
|
+
timeFormat.split(':').forEach((format: string) => {
|
79
|
+
const type: DateType | '' = /h/i.test(format)
|
80
|
+
? 'hours'
|
81
|
+
: /m/.test(format)
|
82
|
+
? 'minutes'
|
83
|
+
: /s/.test(format)
|
84
|
+
? 'seconds'
|
85
|
+
: '';
|
86
|
+
type && types.push(type)
|
87
|
+
});
|
88
|
+
|
89
|
+
const dateBoundary = this.props.getDateBoundary(currentDate);
|
90
|
+
const columns = this.props.getColumns(types, dateBoundary);
|
91
|
+
this.state = {
|
92
|
+
columns,
|
93
|
+
types,
|
94
|
+
pickerValue: currentDate.toArray()
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
58
98
|
updateSelectedDate = (event: React.MouseEvent<any>) => {
|
59
99
|
// need confirm
|
60
100
|
if (this.props.requiredConfirm) {
|
@@ -129,7 +169,12 @@ export class CustomDaysView extends DaysView {
|
|
129
169
|
if (this.props.schedules) {
|
130
170
|
let schedule: any[] = [];
|
131
171
|
this.props.schedules.forEach((item: any) => {
|
132
|
-
if (
|
172
|
+
if (
|
173
|
+
currentDate.isSameOrAfter(
|
174
|
+
moment(item.startTime).subtract(1, 'days')
|
175
|
+
) &&
|
176
|
+
currentDate.isSameOrBefore(item.endTime)
|
177
|
+
) {
|
133
178
|
schedule.push(item);
|
134
179
|
}
|
135
180
|
});
|
@@ -141,8 +186,11 @@ export class CustomDaysView extends DaysView {
|
|
141
186
|
scheduleData: schedule.map((item: any) => {
|
142
187
|
return {
|
143
188
|
...item,
|
144
|
-
time:
|
145
|
-
|
189
|
+
time:
|
190
|
+
moment(item.startTime).format('YYYY-MM-DD HH:mm:ss') +
|
191
|
+
' - ' +
|
192
|
+
moment(item.endTime).format('YYYY-MM-DD HH:mm:ss')
|
193
|
+
};
|
146
194
|
}),
|
147
195
|
currentDate
|
148
196
|
};
|
@@ -156,8 +204,7 @@ export class CustomDaysView extends DaysView {
|
|
156
204
|
}
|
157
205
|
if (moment(schedule[i].startTime).isSame(currentDate, 'day')) {
|
158
206
|
showSchedule.push(schedule[i]);
|
159
|
-
}
|
160
|
-
else if (currentDate.weekday() === 0) {
|
207
|
+
} else if (currentDate.weekday() === 0) {
|
161
208
|
// 周一重新设置日程
|
162
209
|
showSchedule.push({
|
163
210
|
...schedule[i],
|
@@ -166,46 +213,86 @@ export class CustomDaysView extends DaysView {
|
|
166
213
|
}
|
167
214
|
}
|
168
215
|
[0, 1, 2].forEach((i: number) => {
|
169
|
-
const findSchedule = find(
|
170
|
-
|
216
|
+
const findSchedule = find(
|
217
|
+
schedule,
|
218
|
+
(item: any) => item.height === i
|
219
|
+
);
|
220
|
+
if (
|
221
|
+
findSchedule &&
|
222
|
+
findSchedule !== showSchedule[i] &&
|
223
|
+
currentDate.weekday() !== 0
|
224
|
+
) {
|
171
225
|
// 生成一个空白格占位
|
172
226
|
showSchedule.splice(i, 0, {
|
173
227
|
width: 1,
|
174
228
|
className: 'bg-transparent',
|
175
229
|
content: ''
|
176
230
|
});
|
177
|
-
}
|
178
|
-
else {
|
231
|
+
} else {
|
179
232
|
showSchedule[i] && (showSchedule[i].height = i);
|
180
233
|
}
|
181
234
|
});
|
182
235
|
// 最多展示3个
|
183
236
|
showSchedule = showSchedule.slice(0, 3);
|
184
237
|
const scheduleDiv = showSchedule.map((item: any, index: number) => {
|
185
|
-
const width =
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
238
|
+
const width =
|
239
|
+
item.width ||
|
240
|
+
Math.min(
|
241
|
+
moment(item.endTime).diff(moment(item.startTime), 'days') + 1,
|
242
|
+
7 - moment(item.startTime).weekday()
|
243
|
+
);
|
244
|
+
return (
|
245
|
+
<div
|
246
|
+
key={props.key + 'content' + index}
|
247
|
+
className={cx(
|
248
|
+
'ScheduleCalendar-large-schedule-content',
|
249
|
+
item.className
|
250
|
+
)}
|
251
|
+
style={{width: width + '00%'}}
|
252
|
+
onClick={() =>
|
253
|
+
this.props.onScheduleClick &&
|
254
|
+
this.props.onScheduleClick(scheduleData)
|
255
|
+
}
|
256
|
+
>
|
257
|
+
<div className={cx('ScheduleCalendar-text-overflow')}>
|
258
|
+
{item.content}
|
259
|
+
</div>
|
260
|
+
</div>
|
261
|
+
);
|
192
262
|
});
|
193
|
-
return
|
263
|
+
return (
|
264
|
+
<td {...props}>
|
194
265
|
<div className={cx('ScheduleCalendar-large-day-wrap')}>
|
195
|
-
<div className={cx('ScheduleCalendar-large-schedule-header')}>
|
266
|
+
<div className={cx('ScheduleCalendar-large-schedule-header')}>
|
267
|
+
{currentDate.date()}
|
268
|
+
</div>
|
196
269
|
{scheduleDiv}
|
197
|
-
{schedule.length > 3 &&
|
270
|
+
{schedule.length > 3 && (
|
271
|
+
<div className={cx('ScheduleCalendar-large-schedule-footer')}>
|
272
|
+
{schedule.length - 3} {__('more')}
|
273
|
+
</div>
|
274
|
+
)}
|
198
275
|
</div>
|
199
|
-
|
276
|
+
</td>
|
277
|
+
);
|
200
278
|
}
|
201
279
|
|
202
280
|
// 正常模式
|
203
|
-
const ScheduleIcon =
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
281
|
+
const ScheduleIcon = (
|
282
|
+
<span
|
283
|
+
className={cx('ScheduleCalendar-icon', schedule[0].className)}
|
284
|
+
onClick={() =>
|
285
|
+
this.props.onScheduleClick &&
|
286
|
+
this.props.onScheduleClick(scheduleData)
|
287
|
+
}
|
288
|
+
></span>
|
289
|
+
);
|
290
|
+
return (
|
291
|
+
<td {...props}>
|
292
|
+
{currentDate.date()}
|
293
|
+
{ScheduleIcon}
|
294
|
+
</td>
|
295
|
+
);
|
209
296
|
}
|
210
297
|
}
|
211
298
|
return <td {...props}>{currentDate.date()}</td>;
|
@@ -357,14 +444,59 @@ export class CustomDaysView extends DaysView {
|
|
357
444
|
);
|
358
445
|
};
|
359
446
|
|
447
|
+
onPickerConfirm = (value: number[]) => {
|
448
|
+
this.props.onConfirm && this.props.onConfirm(value, this.state.types);
|
449
|
+
}
|
450
|
+
|
451
|
+
onPickerChange = (value: number[], index: number) => {
|
452
|
+
const {selectedDate, viewDate} = this.props;
|
453
|
+
|
454
|
+
// 变更年份、月份的时候,需要更新columns
|
455
|
+
if (index === 1 || index === 0) {
|
456
|
+
const currentDate = (selectedDate || viewDate || moment()).clone();
|
457
|
+
|
458
|
+
// 只需计算year 、month
|
459
|
+
const selectDate = convertArrayValueToMoment(value, ['year', 'month'], currentDate);
|
460
|
+
const dateBoundary = this.props.getDateBoundary(selectDate);
|
461
|
+
this.setState({
|
462
|
+
columns: this.props.getColumns(this.state.types, dateBoundary),
|
463
|
+
pickerValue: value
|
464
|
+
});
|
465
|
+
}
|
466
|
+
}
|
467
|
+
|
468
|
+
renderPicker = () => {
|
469
|
+
const {translate: __} = this.props;
|
470
|
+
const title = this.state.types.length > 3 ? __('Date.titleTime') : __('Date.titleDate');
|
471
|
+
return (
|
472
|
+
<Picker
|
473
|
+
translate={this.props.translate}
|
474
|
+
locale={this.props.locale}
|
475
|
+
title={title}
|
476
|
+
columns={this.state.columns}
|
477
|
+
value={this.state.pickerValue}
|
478
|
+
onChange={this.onPickerChange}
|
479
|
+
onConfirm={this.onPickerConfirm}
|
480
|
+
onClose={this.cancel}
|
481
|
+
/>
|
482
|
+
);
|
483
|
+
};
|
484
|
+
|
360
485
|
render() {
|
486
|
+
const {viewDate: date, useMobileUI, embed} = this.props;
|
361
487
|
const footer = this.renderFooter();
|
362
|
-
const date = this.props.viewDate;
|
363
488
|
const locale = date.localeData();
|
364
489
|
const __ = this.props.translate;
|
490
|
+
if (isMobile() && useMobileUI && !embed) {
|
491
|
+
return (
|
492
|
+
<div className="rdtYears">
|
493
|
+
{this.renderPicker()}
|
494
|
+
</div>
|
495
|
+
);
|
496
|
+
}
|
365
497
|
|
366
498
|
const tableChildren = [
|
367
|
-
<thead key="th">
|
499
|
+
this.props.hideHeader ? null : <thead key="th">
|
368
500
|
<tr>
|
369
501
|
<th colSpan={7}>
|
370
502
|
<div className="rdtHeader">
|
@@ -3,14 +3,20 @@ import MonthsView from 'react-datetime/src/MonthsView';
|
|
3
3
|
import moment from 'moment';
|
4
4
|
import React from 'react';
|
5
5
|
import {LocaleProps, localeable, TranslateFn} from '../../locale';
|
6
|
+
import Picker from '../Picker';
|
7
|
+
import {PickerOption} from '../PickerColumn';
|
8
|
+
import {getRange, isMobile} from '../../utils/helper';
|
9
|
+
import {DateType} from './Calendar';
|
6
10
|
|
7
11
|
export interface OtherProps {
|
8
12
|
inputFormat?: string;
|
13
|
+
hideHeader?: boolean;
|
9
14
|
}
|
10
15
|
|
11
16
|
export class CustomMonthsView extends MonthsView {
|
12
17
|
props: {
|
13
18
|
viewDate: moment.Moment;
|
19
|
+
selectedDate: moment.Moment;
|
14
20
|
subtractTime: (
|
15
21
|
amount: number,
|
16
22
|
type: string,
|
@@ -22,9 +28,38 @@ export class CustomMonthsView extends MonthsView {
|
|
22
28
|
toSelected?: moment.Moment
|
23
29
|
) => () => void;
|
24
30
|
showView: (view: string) => () => void;
|
31
|
+
minDate?: moment.Moment;
|
32
|
+
maxDate?: moment.Moment;
|
33
|
+
onChange?: () => void;
|
34
|
+
onClose?: () => void;
|
35
|
+
onConfirm?: (value: number[], types: string[]) => void;
|
36
|
+
getColumns: (types: DateType[], dateBoundary: void) => any;
|
37
|
+
timeCell: (value: number, type: DateType) => string;
|
38
|
+
getDateBoundary: (currentDate: moment.Moment) => any;
|
39
|
+
useMobileUI: boolean;
|
25
40
|
} & LocaleProps &
|
26
41
|
OtherProps;
|
42
|
+
maxDateObject: {year: number; month: number; day?: number};
|
43
|
+
minDateObject: {year: number; month: number; day?: number};
|
44
|
+
state: { columns: { options: PickerOption[] }[]; pickerValue: number[]};
|
45
|
+
setState: (arg0: any) => () => any;
|
27
46
|
renderMonths: () => JSX.Element;
|
47
|
+
|
48
|
+
|
49
|
+
constructor(props: any) {
|
50
|
+
super(props);
|
51
|
+
|
52
|
+
const {selectedDate, viewDate} = props;
|
53
|
+
const currentDate = (selectedDate || viewDate || moment());
|
54
|
+
|
55
|
+
const dateBoundary = this.props.getDateBoundary(currentDate);
|
56
|
+
const columns = this.props.getColumns(['year', 'month'], dateBoundary);
|
57
|
+
this.state = {
|
58
|
+
columns,
|
59
|
+
pickerValue: currentDate.toArray()
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
28
63
|
renderMonth = (props: any, month: number) => {
|
29
64
|
var localMoment = this.props.viewDate;
|
30
65
|
var monthStr = localMoment
|
@@ -40,11 +75,83 @@ export class CustomMonthsView extends MonthsView {
|
|
40
75
|
</td>
|
41
76
|
);
|
42
77
|
};
|
78
|
+
|
79
|
+
onConfirm = (value: number[]) => {
|
80
|
+
this.props.onConfirm && this.props.onConfirm(value, ['year', 'month']);
|
81
|
+
};
|
82
|
+
|
83
|
+
onPickerChange = (value: number[], index: number) => {
|
84
|
+
const {maxDate, minDate} = this.props;
|
85
|
+
const year = moment().year();
|
86
|
+
const columns = [...this.state.columns];
|
87
|
+
const maxDateObject = maxDate
|
88
|
+
? maxDate.toObject()
|
89
|
+
: {
|
90
|
+
years: year + 100,
|
91
|
+
months: 11
|
92
|
+
};
|
93
|
+
const minDateObject = minDate
|
94
|
+
? minDate.toObject()
|
95
|
+
: {
|
96
|
+
years: year - 100,
|
97
|
+
months: 0
|
98
|
+
};
|
99
|
+
let range = [];
|
100
|
+
// 选择年份是最大值的年或者最小值的月时,需要重新计算月分选择的cloumn
|
101
|
+
if (index === 0) {
|
102
|
+
if (
|
103
|
+
value[0] === minDateObject.years &&
|
104
|
+
value[0] === maxDateObject.years
|
105
|
+
) {
|
106
|
+
range = getRange(minDateObject.months, maxDateObject.months, 1);
|
107
|
+
}
|
108
|
+
else if (value[0] === minDateObject.years) {
|
109
|
+
range = getRange(minDateObject.months, 11, 1);
|
110
|
+
}
|
111
|
+
else if (value[0] === maxDateObject.years) {
|
112
|
+
range = getRange(0, maxDateObject.months, 1);
|
113
|
+
}
|
114
|
+
else {
|
115
|
+
range = getRange(0, 11, 1);
|
116
|
+
}
|
117
|
+
columns[1] = {
|
118
|
+
options: range.map(i => {
|
119
|
+
return {
|
120
|
+
text: this.props.timeCell(i+1, 'month'),
|
121
|
+
value: i
|
122
|
+
};
|
123
|
+
})
|
124
|
+
};
|
125
|
+
this.setState({columns, pickerValue: value});
|
126
|
+
}
|
127
|
+
};
|
128
|
+
|
129
|
+
renderPicker = () => {
|
130
|
+
const {translate: __} = this.props;
|
131
|
+
const title = __('Date.titleMonth');
|
132
|
+
|
133
|
+
return (
|
134
|
+
<Picker
|
135
|
+
translate={this.props.translate}
|
136
|
+
locale={this.props.locale}
|
137
|
+
title={title}
|
138
|
+
columns={this.state.columns}
|
139
|
+
value={this.state.pickerValue}
|
140
|
+
onChange={this.onPickerChange}
|
141
|
+
onConfirm={this.onConfirm}
|
142
|
+
onClose={this.props.onClose}
|
143
|
+
/>
|
144
|
+
);
|
145
|
+
};
|
146
|
+
|
43
147
|
render() {
|
44
148
|
const __ = this.props.translate;
|
45
|
-
const showYearHead = !/^mm$/i.test(this.props.inputFormat || '');
|
149
|
+
const showYearHead = !/^mm$/i.test(this.props.inputFormat || '') && !this.props.hideHeader;
|
46
150
|
const canClick = /yy/i.test(this.props.inputFormat || '');
|
47
151
|
|
152
|
+
if (isMobile() && this.props.useMobileUI) {
|
153
|
+
return <div className="rdtYears">{this.renderPicker()}</div>;
|
154
|
+
}
|
48
155
|
return (
|
49
156
|
<div className="rdtMonths">
|
50
157
|
{showYearHead && (
|
@@ -23,6 +23,7 @@ export interface QuarterViewProps extends LocaleProps, ThemeProps {
|
|
23
23
|
updateSelectedDate: (e: any, close?: boolean) => void;
|
24
24
|
renderQuarter: any;
|
25
25
|
isValidDate: (date: moment.Moment) => boolean;
|
26
|
+
hideHeader?: boolean;
|
26
27
|
}
|
27
28
|
|
28
29
|
export class QuarterView extends React.Component<QuarterViewProps> {
|
@@ -140,11 +141,11 @@ export class QuarterView extends React.Component<QuarterViewProps> {
|
|
140
141
|
}
|
141
142
|
|
142
143
|
render() {
|
143
|
-
const {classnames: cx} = this.props;
|
144
|
+
const {classnames: cx, hideHeader} = this.props;
|
144
145
|
|
145
146
|
return (
|
146
147
|
<div className={cx('ClalendarQuarter')}>
|
147
|
-
{this.renderYear()}
|
148
|
+
{hideHeader ? null : this.renderYear()}
|
148
149
|
<table>
|
149
150
|
<tbody>{this.renderQuarters()}</tbody>
|
150
151
|
</table>
|
@@ -7,35 +7,46 @@ import {Icon} from '../icons';
|
|
7
7
|
import {ClassNamesFn} from '../../theme';
|
8
8
|
import Picker from '../Picker';
|
9
9
|
import {PickerColumnItem} from '../PickerColumn';
|
10
|
-
import {getRange, isMobile} from
|
10
|
+
import {getRange, isMobile} from '../../utils/helper';
|
11
|
+
|
12
|
+
interface State {
|
13
|
+
daypart: any;
|
14
|
+
counters: Array<string>;
|
15
|
+
[propName: string]: any;
|
16
|
+
}
|
17
|
+
|
18
|
+
interface CustomTimeViewProps {
|
19
|
+
viewDate: moment.Moment;
|
20
|
+
selectedDate: moment.Moment;
|
21
|
+
subtractTime: (
|
22
|
+
amount: number,
|
23
|
+
type: string,
|
24
|
+
toSelected?: moment.Moment
|
25
|
+
) => () => void;
|
26
|
+
addTime: (
|
27
|
+
amount: number,
|
28
|
+
type: string,
|
29
|
+
toSelected?: moment.Moment
|
30
|
+
) => () => void;
|
31
|
+
showView: (view: string) => () => void;
|
32
|
+
timeFormat: string;
|
33
|
+
classnames: ClassNamesFn;
|
34
|
+
setTime: (type: string, value: any) => void;
|
35
|
+
onClose?: () => void;
|
36
|
+
onConfirm?: (value: number[], types: string[]) => void;
|
37
|
+
useMobileUI: boolean;
|
38
|
+
showToolbar?: boolean;
|
39
|
+
onChange?: (value: any) => void;
|
40
|
+
};
|
11
41
|
|
12
42
|
export class CustomTimeView extends TimeView {
|
13
|
-
props:
|
14
|
-
viewDate: moment.Moment;
|
15
|
-
subtractTime: (
|
16
|
-
amount: number,
|
17
|
-
type: string,
|
18
|
-
toSelected?: moment.Moment
|
19
|
-
) => () => void;
|
20
|
-
addTime: (
|
21
|
-
amount: number,
|
22
|
-
type: string,
|
23
|
-
toSelected?: moment.Moment
|
24
|
-
) => () => void;
|
25
|
-
showView: (view: string) => () => void;
|
26
|
-
timeFormat: string;
|
27
|
-
classnames: ClassNamesFn;
|
28
|
-
setTime: (type: string, value: any) => void;
|
29
|
-
onClose?: () => void;
|
30
|
-
onConfirm?: (value: number[], types: string[]) => void;
|
31
|
-
useMobileUI: boolean;
|
32
|
-
} & LocaleProps;
|
43
|
+
props: CustomTimeViewProps & LocaleProps;
|
33
44
|
onStartClicking: any;
|
34
45
|
disableContextMenu: any;
|
35
46
|
updateMilli: any;
|
36
47
|
renderHeader: any;
|
37
48
|
pad: any;
|
38
|
-
state:
|
49
|
+
state: State;
|
39
50
|
timeConstraints: any;
|
40
51
|
padValues = {
|
41
52
|
hours: 2,
|
@@ -43,7 +54,22 @@ export class CustomTimeView extends TimeView {
|
|
43
54
|
seconds: 2,
|
44
55
|
milliseconds: 3
|
45
56
|
};
|
57
|
+
setState: (arg0: any) => () => any;
|
58
|
+
calculateState: (props: CustomTimeViewProps) => () => any;
|
46
59
|
|
60
|
+
static defaultProps = {
|
61
|
+
showToolbar: true
|
62
|
+
};
|
63
|
+
|
64
|
+
|
65
|
+
componentWillReceiveProps(nextProps: CustomTimeViewProps) {
|
66
|
+
if (nextProps.viewDate !== this.props.viewDate
|
67
|
+
|| nextProps.selectedDate !== this.props.selectedDate
|
68
|
+
|| nextProps.timeFormat !== this.props.timeFormat) {
|
69
|
+
this.setState(this.calculateState(nextProps));
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
47
73
|
renderDayPart = () => {
|
48
74
|
const {translate: __, classnames: cx} = this.props;
|
49
75
|
return (
|
@@ -90,7 +116,7 @@ export class CustomTimeView extends TimeView {
|
|
90
116
|
return parseInt(value);
|
91
117
|
}
|
92
118
|
return 0;
|
93
|
-
}
|
119
|
+
};
|
94
120
|
|
95
121
|
renderCounter = (type: string) => {
|
96
122
|
const cx = this.props.classnames;
|
@@ -148,14 +174,28 @@ export class CustomTimeView extends TimeView {
|
|
148
174
|
return null;
|
149
175
|
};
|
150
176
|
|
151
|
-
onConfirm = (value: number[]) => {
|
152
|
-
|
153
|
-
|
177
|
+
onConfirm = (value: (number | string)[]) => {
|
178
|
+
// 修正am、pm
|
179
|
+
const hourIndex = this.state.counters.indexOf('hours');
|
180
|
+
if (
|
181
|
+
hourIndex !== -1 &&
|
182
|
+
this.state.daypart !== false &&
|
183
|
+
this.props.timeFormat.toLowerCase().indexOf(' a') !== -1
|
184
|
+
) {
|
185
|
+
const amMode: string = value.splice(-1, 1)[0] as string;
|
186
|
+
let hour = (value[hourIndex] as number) % 12;
|
187
|
+
// 修正pm
|
188
|
+
amMode.toLowerCase().indexOf('p') !== -1 && (hour = hour + 12);
|
189
|
+
value[hourIndex] = hour;
|
190
|
+
}
|
191
|
+
|
192
|
+
this.props.onConfirm && this.props.onConfirm(value as number[], this.state.counters);
|
193
|
+
};
|
154
194
|
|
155
195
|
getDayPartOptions = () => {
|
156
196
|
const {translate: __} = this.props;
|
157
197
|
let options = ['am', 'pm'];
|
158
|
-
if (
|
198
|
+
if (this.props.timeFormat.indexOf(' A') !== -1) {
|
159
199
|
options = ['AM', 'PM'];
|
160
200
|
}
|
161
201
|
|
@@ -163,55 +203,78 @@ export class CustomTimeView extends TimeView {
|
|
163
203
|
text: __(daypart),
|
164
204
|
value: daypart
|
165
205
|
}));
|
206
|
+
};
|
207
|
+
|
208
|
+
onPickerChange = (value: (number | string)[], index: number) => {
|
209
|
+
const time: {[prop:string]: any} = {};
|
210
|
+
this.state.counters.forEach((type, i) => time[type] = value[i]);
|
211
|
+
if (this.state.daypart !== false && index > this.state.counters.length -1) {
|
212
|
+
time.daypart = value[value.length -1];
|
213
|
+
}
|
214
|
+
this.setState((prevState: State) => {
|
215
|
+
return {...prevState, ...time}
|
216
|
+
});
|
217
|
+
this.props.onChange && this.props.onChange(value);
|
166
218
|
}
|
167
219
|
|
168
220
|
renderTimeViewPicker = () => {
|
221
|
+
const {translate: __} = this.props;
|
222
|
+
const title = __('Date.titleTime');
|
169
223
|
const columns: PickerColumnItem[] = [];
|
170
224
|
const values = [];
|
171
225
|
|
172
226
|
this.state.counters.forEach(type => {
|
173
227
|
if (type !== 'daypart') {
|
174
|
-
const counterValue: number = this.getCounterValue(type);
|
175
228
|
let {min, max, step} = this.timeConstraints[type];
|
176
229
|
// 修正am pm时hours可选最大值
|
177
|
-
if (
|
178
|
-
|
179
|
-
|
180
|
-
|
230
|
+
if (
|
231
|
+
type === 'hours' &&
|
232
|
+
this.state.daypart !== false &&
|
233
|
+
this.props.timeFormat.toLowerCase().indexOf(' a') !== -1
|
234
|
+
) {
|
235
|
+
max = max > 12 ? 12 : max;
|
181
236
|
}
|
182
237
|
columns.push({
|
183
|
-
options: getRange(min, max, step)
|
238
|
+
options: getRange(min, max, step).map(item => {
|
239
|
+
return {
|
240
|
+
text: this.pad(type, item),
|
241
|
+
value: item
|
242
|
+
}
|
243
|
+
})
|
184
244
|
});
|
185
|
-
values.push(
|
245
|
+
values.push(parseInt(this.state[type], 10));
|
186
246
|
}
|
187
247
|
});
|
188
248
|
if (this.state.daypart !== false) {
|
189
249
|
columns.push({
|
190
250
|
options: this.getDayPartOptions()
|
191
251
|
});
|
192
|
-
values.push(this.state.daypart)
|
252
|
+
values.push(this.state.daypart);
|
193
253
|
}
|
194
254
|
|
195
255
|
return (
|
196
256
|
<Picker
|
197
257
|
translate={this.props.translate}
|
198
258
|
locale={this.props.locale}
|
259
|
+
title={title}
|
199
260
|
columns={columns}
|
200
|
-
value={values}
|
261
|
+
value={values}
|
201
262
|
onConfirm={this.onConfirm}
|
202
263
|
onClose={this.props.onClose}
|
264
|
+
showToolbar={this.props.showToolbar}
|
265
|
+
onChange={this.onPickerChange}
|
203
266
|
/>
|
204
267
|
);
|
205
|
-
}
|
268
|
+
};
|
206
269
|
|
207
270
|
render() {
|
208
271
|
let counters: Array<JSX.Element | null> = [];
|
209
272
|
const cx = this.props.classnames;
|
210
|
-
|
273
|
+
|
211
274
|
if (isMobile() && this.props.useMobileUI) {
|
212
|
-
return
|
213
|
-
|
214
|
-
|
275
|
+
return (
|
276
|
+
<div className={cx('CalendarTime')}>{this.renderTimeViewPicker()}</div>
|
277
|
+
);
|
215
278
|
}
|
216
279
|
this.state.counters.forEach(c => {
|
217
280
|
if (counters.length) {
|