@seafile/seafile-calendar 0.0.24-beta2 → 0.0.24-beta3
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/assets/index.css +1177 -0
- package/dist/rc-calendar.css +1179 -0
- package/dist/rc-calendar.css.map +1 -0
- package/dist/rc-calendar.js +7064 -0
- package/dist/rc-calendar.js.map +1 -0
- package/dist/rc-calendar.min.css +1179 -0
- package/dist/rc-calendar.min.css.map +1 -0
- package/dist/rc-calendar.min.js +1 -0
- package/es/Calendar.js +440 -0
- package/es/FullCalendar.js +182 -0
- package/es/MonthCalendar.js +135 -0
- package/es/Picker.js +245 -0
- package/es/RangeCalendar.js +740 -661
- package/es/calendar/CalendarFooter.js +93 -0
- package/es/calendar/CalendarHeader.js +257 -0
- package/es/calendar/CalendarRightPanel.js +138 -0
- package/es/calendar/OkButton.js +22 -0
- package/es/calendar/TimePickerButton.js +28 -0
- package/es/calendar/TodayButton.js +28 -0
- package/es/date/DateConstants.js +4 -0
- package/es/date/DateInput.js +233 -0
- package/es/date/DateTBody.js +275 -0
- package/es/date/DateTHead.js +78 -0
- package/es/date/DateTable.js +32 -0
- package/es/decade/DecadePanel.js +181 -0
- package/es/full-calendar/CalendarHeader.js +180 -0
- package/es/index.js +3 -0
- package/es/locale/ar_EG.js +27 -0
- package/es/locale/bg_BG.js +27 -0
- package/es/locale/ca_ES.js +27 -0
- package/es/locale/cs_CZ.js +27 -0
- package/es/locale/da_DK.js +27 -0
- package/es/locale/de_DE.js +27 -0
- package/es/locale/el_GR.js +27 -0
- package/es/locale/en_GB.js +27 -0
- package/es/locale/en_US.js +28 -0
- package/es/locale/es_ES.js +27 -0
- package/es/locale/et_EE.js +27 -0
- package/es/locale/fa_IR.js +27 -0
- package/es/locale/fi_FI.js +27 -0
- package/es/locale/fr_BE.js +27 -0
- package/es/locale/fr_FR.js +27 -0
- package/es/locale/he_IL.js +28 -0
- package/es/locale/hi_IN.js +28 -0
- package/es/locale/hr_HR.js +28 -0
- package/es/locale/hu_HU.js +27 -0
- package/es/locale/id_ID.js +28 -0
- package/es/locale/is_IS.js +27 -0
- package/es/locale/it_IT.js +27 -0
- package/es/locale/ja_JP.js +26 -0
- package/es/locale/kn_IN.js +28 -0
- package/es/locale/ko_KR.js +27 -0
- package/es/locale/ku_IQ.js +27 -0
- package/es/locale/lv_LV.js +27 -0
- package/es/locale/mm_MM.js +28 -0
- package/es/locale/mn_MN.js +28 -0
- package/es/locale/ms_MY.js +27 -0
- package/es/locale/nb_NO.js +27 -0
- package/es/locale/nl_BE.js +27 -0
- package/es/locale/nl_NL.js +27 -0
- package/es/locale/pl_PL.js +27 -0
- package/es/locale/pt_BR.js +27 -0
- package/es/locale/pt_PT.js +27 -0
- package/es/locale/ro_RO.js +28 -0
- package/es/locale/ru_RU.js +27 -0
- package/es/locale/sk_SK.js +27 -0
- package/es/locale/sl_SI.js +27 -0
- package/es/locale/sr_RS.js +27 -0
- package/es/locale/sv_SE.js +27 -0
- package/es/locale/ta_IN.js +28 -0
- package/es/locale/th_TH.js +27 -0
- package/es/locale/tr_TR.js +27 -0
- package/es/locale/ug_CN.js +26 -0
- package/es/locale/uk_UA.js +27 -0
- package/es/locale/vi_VN.js +28 -0
- package/es/locale/zh_CN.js +27 -0
- package/es/locale/zh_TW.js +26 -0
- package/es/mixin/CalendarMixin.js +123 -0
- package/es/mixin/CommonMixin.js +85 -0
- package/es/month/MonthPanel.js +154 -0
- package/es/month/MonthTable.js +156 -0
- package/es/picker/placements.js +35 -0
- package/es/range-calendar/CalendarPart.js +151 -0
- package/es/util/dayjs.js +17 -0
- package/es/util/index.js +105 -0
- package/es/util/toTime.js +21 -0
- package/es/year/YearPanel.js +194 -0
- package/lib/Calendar.js +503 -0
- package/lib/FullCalendar.js +221 -0
- package/lib/MonthCalendar.js +172 -0
- package/lib/Picker.js +282 -0
- package/lib/RangeCalendar.js +831 -710
- package/lib/calendar/CalendarFooter.js +134 -0
- package/lib/calendar/CalendarHeader.js +290 -0
- package/lib/calendar/CalendarRightPanel.js +162 -0
- package/lib/calendar/OkButton.js +32 -0
- package/lib/calendar/TimePickerButton.js +41 -0
- package/lib/calendar/TodayButton.js +39 -0
- package/lib/date/DateConstants.js +8 -0
- package/lib/date/DateInput.js +265 -0
- package/lib/date/DateTBody.js +302 -0
- package/lib/date/DateTHead.js +95 -0
- package/lib/date/DateTable.js +54 -0
- package/lib/decade/DecadePanel.js +207 -0
- package/lib/full-calendar/CalendarHeader.js +201 -0
- package/lib/index.js +12 -0
- package/lib/locale/ar_EG.js +31 -0
- package/lib/locale/bg_BG.js +31 -0
- package/lib/locale/ca_ES.js +31 -0
- package/lib/locale/cs_CZ.js +31 -0
- package/lib/locale/da_DK.js +31 -0
- package/lib/locale/de_DE.js +31 -0
- package/lib/locale/el_GR.js +31 -0
- package/lib/locale/en_GB.js +31 -0
- package/lib/locale/en_US.js +32 -0
- package/lib/locale/es_ES.js +31 -0
- package/lib/locale/et_EE.js +31 -0
- package/lib/locale/fa_IR.js +31 -0
- package/lib/locale/fi_FI.js +31 -0
- package/lib/locale/fr_BE.js +31 -0
- package/lib/locale/fr_FR.js +31 -0
- package/lib/locale/he_IL.js +32 -0
- package/lib/locale/hi_IN.js +32 -0
- package/lib/locale/hr_HR.js +32 -0
- package/lib/locale/hu_HU.js +31 -0
- package/lib/locale/id_ID.js +32 -0
- package/lib/locale/is_IS.js +31 -0
- package/lib/locale/it_IT.js +31 -0
- package/lib/locale/ja_JP.js +30 -0
- package/lib/locale/kn_IN.js +32 -0
- package/lib/locale/ko_KR.js +31 -0
- package/lib/locale/ku_IQ.js +31 -0
- package/lib/locale/lv_LV.js +31 -0
- package/lib/locale/mm_MM.js +32 -0
- package/lib/locale/mn_MN.js +32 -0
- package/lib/locale/ms_MY.js +31 -0
- package/lib/locale/nb_NO.js +31 -0
- package/lib/locale/nl_BE.js +31 -0
- package/lib/locale/nl_NL.js +31 -0
- package/lib/locale/pl_PL.js +31 -0
- package/lib/locale/pt_BR.js +31 -0
- package/lib/locale/pt_PT.js +31 -0
- package/lib/locale/ro_RO.js +32 -0
- package/lib/locale/ru_RU.js +31 -0
- package/lib/locale/sk_SK.js +31 -0
- package/lib/locale/sl_SI.js +31 -0
- package/lib/locale/sr_RS.js +31 -0
- package/lib/locale/sv_SE.js +31 -0
- package/lib/locale/ta_IN.js +32 -0
- package/lib/locale/th_TH.js +31 -0
- package/lib/locale/tr_TR.js +31 -0
- package/lib/locale/ug_CN.js +30 -0
- package/lib/locale/uk_UA.js +31 -0
- package/lib/locale/vi_VN.js +32 -0
- package/lib/locale/zh_CN.js +31 -0
- package/lib/locale/zh_TW.js +30 -0
- package/lib/mixin/CalendarMixin.js +153 -0
- package/lib/mixin/CommonMixin.js +106 -0
- package/lib/month/MonthPanel.js +179 -0
- package/lib/month/MonthTable.js +181 -0
- package/lib/picker/placements.js +39 -0
- package/lib/range-calendar/CalendarPart.js +184 -0
- package/lib/util/dayjs.js +46 -0
- package/lib/util/index.js +130 -0
- package/lib/util/toTime.js +28 -0
- package/lib/year/YearPanel.js +219 -0
- package/package.json +7 -4
package/es/RangeCalendar.js
CHANGED
@@ -1,34 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
6
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
7
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
8
|
-
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
9
|
-
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
10
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
11
|
-
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
12
|
-
function _possibleConstructorReturn(t, e) { if (e && ("object" == typeof e || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
13
|
-
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
14
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
15
|
-
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
16
|
-
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
17
|
-
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
18
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
19
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
20
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
21
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
22
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
23
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
24
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
25
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
26
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
1
|
+
import _extends from 'babel-runtime/helpers/extends';
|
2
|
+
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
3
|
+
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
4
|
+
import _inherits from 'babel-runtime/helpers/inherits';
|
27
5
|
import React from 'react';
|
28
6
|
import PropTypes from 'prop-types';
|
29
7
|
import classnames from 'classnames';
|
30
8
|
import { polyfill } from 'react-lifecycles-compat';
|
31
|
-
import KeyCode from
|
9
|
+
import KeyCode from 'rc-util/es/KeyCode';
|
32
10
|
import CalendarPart from './range-calendar/CalendarPart';
|
33
11
|
import TodayButton from './calendar/TodayButton';
|
34
12
|
import OkButton from './calendar/OkButton';
|
@@ -37,41 +15,49 @@ import { commonMixinWrapper, propType, defaultProp } from './mixin/CommonMixin';
|
|
37
15
|
import { syncTime, getTodayTime, isAllowedDate } from './util';
|
38
16
|
import { goTime, goStartMonth, goEndMonth, includesTime } from './util/toTime';
|
39
17
|
import dayjs from './util/dayjs';
|
18
|
+
|
40
19
|
function noop() {}
|
20
|
+
|
41
21
|
function isEmptyArray(arr) {
|
42
22
|
return Array.isArray(arr) && (arr.length === 0 || arr.every(function (i) {
|
43
23
|
return !i;
|
44
24
|
}));
|
45
25
|
}
|
26
|
+
|
46
27
|
function isArraysEqual(a, b) {
|
47
28
|
if (a === b) return true;
|
48
29
|
if (a === null || typeof a === 'undefined' || b === null || typeof b === 'undefined') {
|
49
30
|
return false;
|
50
31
|
}
|
51
32
|
if (a.length !== b.length) return false;
|
33
|
+
|
52
34
|
for (var i = 0; i < a.length; ++i) {
|
53
35
|
if (a[i] !== b[i]) return false;
|
54
36
|
}
|
55
37
|
return true;
|
56
38
|
}
|
39
|
+
|
57
40
|
function getValueFromSelectedValue(selectedValue) {
|
58
|
-
var
|
59
|
-
|
60
|
-
|
41
|
+
var start = selectedValue[0],
|
42
|
+
end = selectedValue[1];
|
43
|
+
|
61
44
|
if (end && (start === undefined || start === null)) {
|
62
45
|
start = end.clone().subtract(1, 'month');
|
63
46
|
}
|
47
|
+
|
64
48
|
if (start && (end === undefined || end === null)) {
|
65
49
|
end = start.clone().add(1, 'month');
|
66
50
|
}
|
67
51
|
return [start, end];
|
68
52
|
}
|
53
|
+
|
69
54
|
function normalizeAnchor(props, init) {
|
70
55
|
var selectedValue = props.selectedValue || init && props.defaultSelectedValue;
|
71
56
|
var value = props.value || init && props.defaultValue;
|
72
57
|
var normalizedValue = value ? getValueFromSelectedValue(value) : getValueFromSelectedValue(selectedValue);
|
73
58
|
return !isEmptyArray(normalizedValue) ? normalizedValue : init && [dayjs(), dayjs().add(1, 'months')];
|
74
59
|
}
|
60
|
+
|
75
61
|
function generateOptions(length, extraOptionGen) {
|
76
62
|
var arr = extraOptionGen ? extraOptionGen().concat() : [];
|
77
63
|
for (var value = 0; value < length; value++) {
|
@@ -81,6 +67,7 @@ function generateOptions(length, extraOptionGen) {
|
|
81
67
|
}
|
82
68
|
return arr;
|
83
69
|
}
|
70
|
+
|
84
71
|
function onInputSelect(direction, value, cause) {
|
85
72
|
if (!value) {
|
86
73
|
return;
|
@@ -93,523 +80,61 @@ function onInputSelect(direction, value, cause) {
|
|
93
80
|
selectedValue[1 - index] = this.state.showTimePicker ? selectedValue[index] : undefined;
|
94
81
|
}
|
95
82
|
this.props.onInputSelect(selectedValue);
|
96
|
-
this.fireSelectValueChange(selectedValue, null, cause || {
|
97
|
-
source: 'dateInput'
|
98
|
-
});
|
83
|
+
this.fireSelectValueChange(selectedValue, null, cause || { source: 'dateInput' });
|
99
84
|
}
|
100
|
-
var RangeCalendar = /*#__PURE__*/function (_React$Component) {
|
101
|
-
function RangeCalendar(_props) {
|
102
|
-
var _this;
|
103
|
-
_classCallCheck(this, RangeCalendar);
|
104
|
-
_this = _callSuper(this, RangeCalendar, [_props]);
|
105
|
-
_defineProperty(_this, "onDatePanelEnter", function () {
|
106
|
-
if (_this.hasSelectedValue()) {
|
107
|
-
_this.fireHoverValueChange(_this.state.selectedValue.concat());
|
108
|
-
}
|
109
|
-
});
|
110
|
-
_defineProperty(_this, "onDatePanelLeave", function () {
|
111
|
-
if (_this.hasSelectedValue()) {
|
112
|
-
_this.fireHoverValueChange([]);
|
113
|
-
}
|
114
|
-
});
|
115
|
-
_defineProperty(_this, "onSelect", function (value) {
|
116
|
-
var type = _this.props.type;
|
117
|
-
var _this$state = _this.state,
|
118
|
-
selectedValue = _this$state.selectedValue,
|
119
|
-
prevSelectedValue = _this$state.prevSelectedValue,
|
120
|
-
firstSelectedValue = _this$state.firstSelectedValue;
|
121
|
-
var nextSelectedValue;
|
122
|
-
if (type === 'both') {
|
123
|
-
if (!firstSelectedValue) {
|
124
|
-
syncTime(prevSelectedValue[0], value);
|
125
|
-
nextSelectedValue = [value];
|
126
|
-
} else if (_this.compare(firstSelectedValue, value) < 0) {
|
127
|
-
syncTime(prevSelectedValue[1], value);
|
128
|
-
nextSelectedValue = [firstSelectedValue, value];
|
129
|
-
} else {
|
130
|
-
syncTime(prevSelectedValue[0], value);
|
131
|
-
syncTime(prevSelectedValue[1], firstSelectedValue);
|
132
|
-
nextSelectedValue = [value, firstSelectedValue];
|
133
|
-
}
|
134
|
-
} else if (type === 'start') {
|
135
|
-
syncTime(prevSelectedValue[0], value);
|
136
|
-
var endValue = selectedValue[1];
|
137
|
-
nextSelectedValue = endValue && _this.compare(endValue, value) > 0 ? [value, endValue] : [value];
|
138
|
-
} else {
|
139
|
-
// type === 'end'
|
140
|
-
var startValue = selectedValue[0];
|
141
|
-
if (startValue && _this.compare(startValue, value) <= 0) {
|
142
|
-
syncTime(prevSelectedValue[1], value);
|
143
|
-
nextSelectedValue = [startValue, value];
|
144
|
-
} else {
|
145
|
-
syncTime(prevSelectedValue[0], value);
|
146
|
-
nextSelectedValue = [value];
|
147
|
-
}
|
148
|
-
}
|
149
|
-
_this.fireSelectValueChange(nextSelectedValue);
|
150
|
-
});
|
151
|
-
_defineProperty(_this, "onKeyDown", function (event) {
|
152
|
-
if (event.target.nodeName.toLowerCase() === 'input') {
|
153
|
-
return;
|
154
|
-
}
|
155
|
-
var keyCode = event.keyCode;
|
156
|
-
var ctrlKey = event.ctrlKey || event.metaKey;
|
157
|
-
var _this$state2 = _this.state,
|
158
|
-
selectedValue = _this$state2.selectedValue,
|
159
|
-
hoverValue = _this$state2.hoverValue,
|
160
|
-
firstSelectedValue = _this$state2.firstSelectedValue,
|
161
|
-
value = _this$state2.value;
|
162
|
-
var _this$props = _this.props,
|
163
|
-
onKeyDown = _this$props.onKeyDown,
|
164
|
-
disabledDate = _this$props.disabledDate;
|
165
|
-
|
166
|
-
// Update last time of the picker
|
167
|
-
var updateHoverPoint = function updateHoverPoint(func) {
|
168
|
-
// Change hover to make focus in UI
|
169
|
-
var currentHoverTime;
|
170
|
-
var nextHoverTime;
|
171
|
-
var nextHoverValue;
|
172
|
-
if (!firstSelectedValue) {
|
173
|
-
currentHoverTime = hoverValue[0] || selectedValue[0] || value[0] || dayjs();
|
174
|
-
nextHoverTime = func(currentHoverTime);
|
175
|
-
nextHoverValue = [nextHoverTime];
|
176
|
-
_this.fireHoverValueChange(nextHoverValue);
|
177
|
-
} else {
|
178
|
-
if (hoverValue.length === 1) {
|
179
|
-
currentHoverTime = hoverValue[0].clone();
|
180
|
-
nextHoverTime = func(currentHoverTime);
|
181
|
-
nextHoverValue = _this.onDayHover(nextHoverTime);
|
182
|
-
} else {
|
183
|
-
currentHoverTime = hoverValue[0].isSame(firstSelectedValue, 'day') ? hoverValue[1] : hoverValue[0];
|
184
|
-
nextHoverTime = func(currentHoverTime);
|
185
|
-
nextHoverValue = _this.onDayHover(nextHoverTime);
|
186
|
-
}
|
187
|
-
}
|
188
85
|
|
189
|
-
|
190
|
-
|
191
|
-
var miss = nextHoverValue.some(function (ht) {
|
192
|
-
return !includesTime(value, ht, 'month');
|
193
|
-
});
|
194
|
-
if (miss) {
|
195
|
-
var newValue = nextHoverValue.slice().sort(function (t1, t2) {
|
196
|
-
return t1.valueOf() - t2.valueOf();
|
197
|
-
});
|
198
|
-
if (newValue[0].isSame(newValue[1], 'month')) {
|
199
|
-
newValue[1] = newValue[0].clone().add(1, 'month');
|
200
|
-
}
|
201
|
-
_this.fireValueChange(newValue);
|
202
|
-
}
|
203
|
-
} else if (nextHoverValue.length === 1) {
|
204
|
-
// If only one value, let's keep the origin panel
|
205
|
-
var oriValueIndex = value.findIndex(function (time) {
|
206
|
-
return time.isSame(currentHoverTime, 'month');
|
207
|
-
});
|
208
|
-
if (oriValueIndex === -1) oriValueIndex = 0;
|
209
|
-
if (value.every(function (time) {
|
210
|
-
return !time.isSame(nextHoverTime, 'month');
|
211
|
-
})) {
|
212
|
-
var _newValue = value.slice();
|
213
|
-
_newValue[oriValueIndex] = nextHoverTime.clone();
|
214
|
-
_this.fireValueChange(_newValue);
|
215
|
-
}
|
216
|
-
}
|
217
|
-
event.preventDefault();
|
218
|
-
return nextHoverTime;
|
219
|
-
};
|
220
|
-
switch (keyCode) {
|
221
|
-
case KeyCode.DOWN:
|
222
|
-
updateHoverPoint(function (time) {
|
223
|
-
return goTime(time, 1, 'weeks');
|
224
|
-
});
|
225
|
-
return;
|
226
|
-
case KeyCode.UP:
|
227
|
-
updateHoverPoint(function (time) {
|
228
|
-
return goTime(time, -1, 'weeks');
|
229
|
-
});
|
230
|
-
return;
|
231
|
-
case KeyCode.LEFT:
|
232
|
-
if (ctrlKey) {
|
233
|
-
updateHoverPoint(function (time) {
|
234
|
-
return goTime(time, -1, 'years');
|
235
|
-
});
|
236
|
-
} else {
|
237
|
-
updateHoverPoint(function (time) {
|
238
|
-
return goTime(time, -1, 'days');
|
239
|
-
});
|
240
|
-
}
|
241
|
-
return;
|
242
|
-
case KeyCode.RIGHT:
|
243
|
-
if (ctrlKey) {
|
244
|
-
updateHoverPoint(function (time) {
|
245
|
-
return goTime(time, 1, 'years');
|
246
|
-
});
|
247
|
-
} else {
|
248
|
-
updateHoverPoint(function (time) {
|
249
|
-
return goTime(time, 1, 'days');
|
250
|
-
});
|
251
|
-
}
|
252
|
-
return;
|
253
|
-
case KeyCode.HOME:
|
254
|
-
updateHoverPoint(function (time) {
|
255
|
-
return goStartMonth(time);
|
256
|
-
});
|
257
|
-
return;
|
258
|
-
case KeyCode.END:
|
259
|
-
updateHoverPoint(function (time) {
|
260
|
-
return goEndMonth(time);
|
261
|
-
});
|
262
|
-
return;
|
263
|
-
case KeyCode.PAGE_DOWN:
|
264
|
-
updateHoverPoint(function (time) {
|
265
|
-
return goTime(time, 1, 'month');
|
266
|
-
});
|
267
|
-
return;
|
268
|
-
case KeyCode.PAGE_UP:
|
269
|
-
updateHoverPoint(function (time) {
|
270
|
-
return goTime(time, -1, 'month');
|
271
|
-
});
|
272
|
-
return;
|
273
|
-
case KeyCode.ENTER:
|
274
|
-
{
|
275
|
-
var lastValue;
|
276
|
-
if (hoverValue.length === 0) {
|
277
|
-
lastValue = updateHoverPoint(function (time) {
|
278
|
-
return time;
|
279
|
-
});
|
280
|
-
} else if (hoverValue.length === 1) {
|
281
|
-
lastValue = hoverValue[0];
|
282
|
-
} else {
|
283
|
-
lastValue = hoverValue[0].isSame(firstSelectedValue, 'day') ? hoverValue[1] : hoverValue[0];
|
284
|
-
}
|
285
|
-
if (lastValue && (!disabledDate || !disabledDate(lastValue))) {
|
286
|
-
_this.onSelect(lastValue);
|
287
|
-
}
|
288
|
-
event.preventDefault();
|
289
|
-
return;
|
290
|
-
}
|
291
|
-
default:
|
292
|
-
if (onKeyDown) {
|
293
|
-
onKeyDown(event);
|
294
|
-
}
|
295
|
-
}
|
296
|
-
});
|
297
|
-
_defineProperty(_this, "onDayHover", function (value) {
|
298
|
-
var hoverValue = [];
|
299
|
-
var _this$state3 = _this.state,
|
300
|
-
selectedValue = _this$state3.selectedValue,
|
301
|
-
firstSelectedValue = _this$state3.firstSelectedValue;
|
302
|
-
var type = _this.props.type;
|
303
|
-
if (type === 'start' && selectedValue[1]) {
|
304
|
-
hoverValue = _this.compare(value, selectedValue[1]) < 0 ? [value, selectedValue[1]] : [value];
|
305
|
-
} else if (type === 'end' && selectedValue[0]) {
|
306
|
-
hoverValue = _this.compare(value, selectedValue[0]) > 0 ? [selectedValue[0], value] : [];
|
307
|
-
} else {
|
308
|
-
if (!firstSelectedValue) {
|
309
|
-
if (_this.state.hoverValue.length) {
|
310
|
-
_this.setState({
|
311
|
-
hoverValue: []
|
312
|
-
});
|
313
|
-
}
|
314
|
-
return hoverValue;
|
315
|
-
}
|
316
|
-
hoverValue = _this.compare(value, firstSelectedValue) < 0 ? [value, firstSelectedValue] : [firstSelectedValue, value];
|
317
|
-
}
|
318
|
-
_this.fireHoverValueChange(hoverValue);
|
319
|
-
return hoverValue;
|
320
|
-
});
|
321
|
-
_defineProperty(_this, "onToday", function () {
|
322
|
-
var startValue = getTodayTime(_this.state.value[0]);
|
323
|
-
var endValue = startValue.clone().add(1, 'months');
|
324
|
-
_this.setState({
|
325
|
-
value: [startValue, endValue]
|
326
|
-
});
|
327
|
-
});
|
328
|
-
_defineProperty(_this, "onOpenTimePicker", function () {
|
329
|
-
_this.setState({
|
330
|
-
showTimePicker: true
|
331
|
-
});
|
332
|
-
});
|
333
|
-
_defineProperty(_this, "onCloseTimePicker", function () {
|
334
|
-
_this.setState({
|
335
|
-
showTimePicker: false
|
336
|
-
});
|
337
|
-
});
|
338
|
-
_defineProperty(_this, "onOk", function () {
|
339
|
-
var selectedValue = _this.state.selectedValue;
|
340
|
-
if (_this.isAllowedDateAndTime(selectedValue)) {
|
341
|
-
_this.props.onOk(_this.state.selectedValue);
|
342
|
-
}
|
343
|
-
});
|
344
|
-
_defineProperty(_this, "onStartInputChange", function () {
|
345
|
-
for (var _len = arguments.length, oargs = new Array(_len), _key = 0; _key < _len; _key++) {
|
346
|
-
oargs[_key] = arguments[_key];
|
347
|
-
}
|
348
|
-
var args = ['left'].concat(oargs);
|
349
|
-
return onInputSelect.apply(_this, args);
|
350
|
-
});
|
351
|
-
_defineProperty(_this, "onEndInputChange", function () {
|
352
|
-
for (var _len2 = arguments.length, oargs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
353
|
-
oargs[_key2] = arguments[_key2];
|
354
|
-
}
|
355
|
-
var args = ['right'].concat(oargs);
|
356
|
-
return onInputSelect.apply(_this, args);
|
357
|
-
});
|
358
|
-
_defineProperty(_this, "onStartInputSelect", function (value) {
|
359
|
-
var args = ['left', value, {
|
360
|
-
source: 'dateInputSelect'
|
361
|
-
}];
|
362
|
-
return onInputSelect.apply(_this, args);
|
363
|
-
});
|
364
|
-
_defineProperty(_this, "onEndInputSelect", function (value) {
|
365
|
-
var args = ['right', value, {
|
366
|
-
source: 'dateInputSelect'
|
367
|
-
}];
|
368
|
-
return onInputSelect.apply(_this, args);
|
369
|
-
});
|
370
|
-
_defineProperty(_this, "onStartValueChange", function (leftValue) {
|
371
|
-
var value = _toConsumableArray(_this.state.value);
|
372
|
-
value[0] = leftValue;
|
373
|
-
return _this.fireValueChange(value);
|
374
|
-
});
|
375
|
-
_defineProperty(_this, "onEndValueChange", function (rightValue) {
|
376
|
-
var value = _toConsumableArray(_this.state.value);
|
377
|
-
value[1] = rightValue;
|
378
|
-
return _this.fireValueChange(value);
|
379
|
-
});
|
380
|
-
_defineProperty(_this, "onStartPanelChange", function (value, mode) {
|
381
|
-
var _this2 = _this,
|
382
|
-
props = _this2.props,
|
383
|
-
state = _this2.state;
|
384
|
-
var newMode = [mode, state.mode[1]];
|
385
|
-
var newState = {
|
386
|
-
panelTriggerSource: 'start'
|
387
|
-
};
|
388
|
-
if (!('mode' in props)) {
|
389
|
-
newState.mode = newMode;
|
390
|
-
}
|
391
|
-
_this.setState(newState);
|
392
|
-
var newValue = [value || state.value[0], state.value[1]];
|
393
|
-
props.onPanelChange(newValue, newMode);
|
394
|
-
});
|
395
|
-
_defineProperty(_this, "onEndPanelChange", function (value, mode) {
|
396
|
-
var _this3 = _this,
|
397
|
-
props = _this3.props,
|
398
|
-
state = _this3.state;
|
399
|
-
var newMode = [state.mode[0], mode];
|
400
|
-
var newState = {
|
401
|
-
panelTriggerSource: 'end'
|
402
|
-
};
|
403
|
-
if (!('mode' in props)) {
|
404
|
-
newState.mode = newMode;
|
405
|
-
}
|
406
|
-
_this.setState(newState);
|
407
|
-
var newValue = [state.value[0], value || state.value[1]];
|
408
|
-
props.onPanelChange(newValue, newMode);
|
409
|
-
});
|
410
|
-
_defineProperty(_this, "getStartValue", function () {
|
411
|
-
var _this$state4 = _this.state,
|
412
|
-
selectedValue = _this$state4.selectedValue,
|
413
|
-
showTimePicker = _this$state4.showTimePicker,
|
414
|
-
value = _this$state4.value,
|
415
|
-
mode = _this$state4.mode,
|
416
|
-
panelTriggerSource = _this$state4.panelTriggerSource;
|
417
|
-
var startValue = value[0];
|
418
|
-
// keep selectedTime when select date
|
419
|
-
if (selectedValue[0] && _this.props.timePicker) {
|
420
|
-
startValue = startValue.clone();
|
421
|
-
syncTime(selectedValue[0], startValue);
|
422
|
-
}
|
423
|
-
if (showTimePicker && selectedValue[0]) {
|
424
|
-
startValue = selectedValue[0];
|
425
|
-
}
|
86
|
+
var RangeCalendar = function (_React$Component) {
|
87
|
+
_inherits(RangeCalendar, _React$Component);
|
426
88
|
|
427
|
-
|
428
|
-
|
429
|
-
startValue = startValue.clone().subtract(1, 'month');
|
430
|
-
}
|
431
|
-
return startValue;
|
432
|
-
});
|
433
|
-
_defineProperty(_this, "getEndValue", function () {
|
434
|
-
var _this$state5 = _this.state,
|
435
|
-
value = _this$state5.value,
|
436
|
-
selectedValue = _this$state5.selectedValue,
|
437
|
-
showTimePicker = _this$state5.showTimePicker,
|
438
|
-
mode = _this$state5.mode,
|
439
|
-
panelTriggerSource = _this$state5.panelTriggerSource;
|
440
|
-
var endValue = value[1] ? value[1].clone() : value[0].clone().add(1, 'month');
|
441
|
-
// keep selectedTime when select date
|
442
|
-
if (selectedValue[1] && _this.props.timePicker) {
|
443
|
-
syncTime(selectedValue[1], endValue);
|
444
|
-
}
|
445
|
-
if (showTimePicker) {
|
446
|
-
endValue = selectedValue[1] ? selectedValue[1] : _this.getStartValue();
|
447
|
-
}
|
89
|
+
function RangeCalendar(props) {
|
90
|
+
_classCallCheck(this, RangeCalendar);
|
448
91
|
|
449
|
-
|
450
|
-
if (!showTimePicker && panelTriggerSource !== 'end' && mode[0] === 'date' && mode[1] === 'date' && endValue.isSame(value[0], 'month')) {
|
451
|
-
endValue = endValue.clone().add(1, 'month');
|
452
|
-
}
|
453
|
-
return endValue;
|
454
|
-
});
|
455
|
-
// get disabled hours for second picker
|
456
|
-
_defineProperty(_this, "getEndDisableTime", function () {
|
457
|
-
var _this$state6 = _this.state,
|
458
|
-
selectedValue = _this$state6.selectedValue,
|
459
|
-
value = _this$state6.value;
|
460
|
-
var disabledTime = _this.props.disabledTime;
|
461
|
-
var userSettingDisabledTime = disabledTime(selectedValue, 'end') || {};
|
462
|
-
var startValue = selectedValue && selectedValue[0] || value[0].clone();
|
463
|
-
// if startTime and endTime is same day..
|
464
|
-
// the second time picker will not able to pick time before first time picker
|
465
|
-
if (!selectedValue[1] || startValue.isSame(selectedValue[1], 'day')) {
|
466
|
-
var hours = startValue.hour();
|
467
|
-
var minutes = startValue.minute();
|
468
|
-
var second = startValue.second();
|
469
|
-
var _disabledHours = userSettingDisabledTime.disabledHours,
|
470
|
-
_disabledMinutes = userSettingDisabledTime.disabledMinutes,
|
471
|
-
_disabledSeconds = userSettingDisabledTime.disabledSeconds;
|
472
|
-
var oldDisabledMinutes = _disabledMinutes ? _disabledMinutes() : [];
|
473
|
-
var olddisabledSeconds = _disabledSeconds ? _disabledSeconds() : [];
|
474
|
-
_disabledHours = generateOptions(hours, _disabledHours);
|
475
|
-
_disabledMinutes = generateOptions(minutes, _disabledMinutes);
|
476
|
-
_disabledSeconds = generateOptions(second, _disabledSeconds);
|
477
|
-
return {
|
478
|
-
disabledHours: function disabledHours() {
|
479
|
-
return _disabledHours;
|
480
|
-
},
|
481
|
-
disabledMinutes: function disabledMinutes(hour) {
|
482
|
-
if (hour === hours) {
|
483
|
-
return _disabledMinutes;
|
484
|
-
}
|
485
|
-
return oldDisabledMinutes;
|
486
|
-
},
|
487
|
-
disabledSeconds: function disabledSeconds(hour, minute) {
|
488
|
-
if (hour === hours && minute === minutes) {
|
489
|
-
return _disabledSeconds;
|
490
|
-
}
|
491
|
-
return olddisabledSeconds;
|
492
|
-
}
|
493
|
-
};
|
494
|
-
}
|
495
|
-
return userSettingDisabledTime;
|
496
|
-
});
|
497
|
-
_defineProperty(_this, "isAllowedDateAndTime", function (selectedValue) {
|
498
|
-
return isAllowedDate(selectedValue[0], _this.props.disabledDate, _this.disabledStartTime) && isAllowedDate(selectedValue[1], _this.props.disabledDate, _this.disabledEndTime);
|
499
|
-
});
|
500
|
-
_defineProperty(_this, "isMonthYearPanelShow", function (mode) {
|
501
|
-
return ['month', 'year', 'decade'].indexOf(mode) > -1;
|
502
|
-
});
|
503
|
-
_defineProperty(_this, "hasSelectedValue", function () {
|
504
|
-
var selectedValue = _this.state.selectedValue;
|
505
|
-
return !!selectedValue[1] && !!selectedValue[0];
|
506
|
-
});
|
507
|
-
_defineProperty(_this, "compare", function (v1, v2) {
|
508
|
-
if (_this.props.timePicker) {
|
509
|
-
return v1.diff(v2);
|
510
|
-
}
|
511
|
-
return v1.diff(v2, 'days');
|
512
|
-
});
|
513
|
-
_defineProperty(_this, "fireSelectValueChange", function (selectedValue, direct, cause) {
|
514
|
-
var timePicker = _this.props.timePicker;
|
515
|
-
var prevSelectedValue = _this.state.prevSelectedValue;
|
516
|
-
if (timePicker && timePicker.props.defaultValue) {
|
517
|
-
var timePickerDefaultValue = timePicker.props.defaultValue;
|
518
|
-
if (!prevSelectedValue[0] && selectedValue[0]) {
|
519
|
-
syncTime(timePickerDefaultValue[0], selectedValue[0]);
|
520
|
-
}
|
521
|
-
if (!prevSelectedValue[1] && selectedValue[1]) {
|
522
|
-
syncTime(timePickerDefaultValue[1], selectedValue[1]);
|
523
|
-
}
|
524
|
-
}
|
525
|
-
if (!('selectedValue' in _this.props)) {
|
526
|
-
_this.setState({
|
527
|
-
selectedValue: selectedValue
|
528
|
-
});
|
529
|
-
}
|
92
|
+
var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
|
530
93
|
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
_this.setState({
|
536
|
-
selectedValue: selectedValue,
|
537
|
-
value: getValueFromSelectedValue([startValue, endValue])
|
538
|
-
});
|
539
|
-
}
|
540
|
-
if (selectedValue[0] && !selectedValue[1]) {
|
541
|
-
_this.setState({
|
542
|
-
firstSelectedValue: selectedValue[0]
|
543
|
-
});
|
544
|
-
_this.fireHoverValueChange(selectedValue.concat());
|
545
|
-
}
|
546
|
-
_this.props.onChange(selectedValue);
|
547
|
-
if (direct || selectedValue[0] && selectedValue[1]) {
|
548
|
-
_this.setState({
|
549
|
-
prevSelectedValue: selectedValue,
|
550
|
-
firstSelectedValue: null
|
551
|
-
});
|
552
|
-
_this.fireHoverValueChange([]);
|
553
|
-
_this.props.onSelect(selectedValue, cause);
|
554
|
-
}
|
555
|
-
});
|
556
|
-
_defineProperty(_this, "fireValueChange", function (value) {
|
557
|
-
var props = _this.props;
|
558
|
-
if (!('value' in props)) {
|
559
|
-
_this.setState({
|
560
|
-
value: value
|
561
|
-
});
|
562
|
-
}
|
563
|
-
props.onValueChange(value);
|
564
|
-
});
|
565
|
-
_defineProperty(_this, "fireHoverValueChange", function (hoverValue) {
|
566
|
-
var props = _this.props;
|
567
|
-
if (!('hoverValue' in props)) {
|
568
|
-
_this.setState({
|
569
|
-
hoverValue: hoverValue
|
570
|
-
});
|
571
|
-
}
|
572
|
-
props.onHoverChange(hoverValue);
|
573
|
-
});
|
574
|
-
_defineProperty(_this, "clear", function () {
|
575
|
-
_this.fireSelectValueChange([], true);
|
576
|
-
_this.props.onClear();
|
577
|
-
});
|
578
|
-
_defineProperty(_this, "disabledStartTime", function (time) {
|
579
|
-
return _this.props.disabledTime(time, 'start');
|
580
|
-
});
|
581
|
-
_defineProperty(_this, "disabledEndTime", function (time) {
|
582
|
-
return _this.props.disabledTime(time, 'end');
|
583
|
-
});
|
584
|
-
_defineProperty(_this, "disabledStartMonth", function (month) {
|
585
|
-
var value = _this.state.value;
|
586
|
-
return month.isAfter(value[1], 'month');
|
587
|
-
});
|
588
|
-
_defineProperty(_this, "disabledEndMonth", function (month) {
|
589
|
-
var value = _this.state.value;
|
590
|
-
return month.isBefore(value[0], 'month');
|
591
|
-
});
|
592
|
-
var _selectedValue2 = _props.selectedValue || _props.defaultSelectedValue;
|
593
|
-
var _value = normalizeAnchor(_props, 1);
|
94
|
+
_initialiseProps.call(_this);
|
95
|
+
|
96
|
+
var selectedValue = props.selectedValue || props.defaultSelectedValue;
|
97
|
+
var value = normalizeAnchor(props, 1);
|
594
98
|
_this.state = {
|
595
|
-
selectedValue:
|
596
|
-
prevSelectedValue:
|
99
|
+
selectedValue: selectedValue,
|
100
|
+
prevSelectedValue: selectedValue,
|
597
101
|
firstSelectedValue: null,
|
598
|
-
hoverValue:
|
599
|
-
value:
|
102
|
+
hoverValue: props.hoverValue || [],
|
103
|
+
value: value,
|
600
104
|
showTimePicker: false,
|
601
|
-
mode:
|
105
|
+
mode: props.mode || ['date', 'date'],
|
602
106
|
panelTriggerSource: '' // Trigger by which picker panel: 'start' & 'end'
|
603
107
|
};
|
604
108
|
return _this;
|
605
109
|
}
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
value
|
610
|
-
|
110
|
+
|
111
|
+
RangeCalendar.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, state) {
|
112
|
+
var newState = {};
|
113
|
+
if ('value' in nextProps) {
|
114
|
+
newState.value = normalizeAnchor(nextProps, 0);
|
115
|
+
}
|
116
|
+
if ('hoverValue' in nextProps && !isArraysEqual(state.hoverValue, nextProps.hoverValue)) {
|
117
|
+
newState.hoverValue = nextProps.hoverValue;
|
118
|
+
}
|
119
|
+
if ('selectedValue' in nextProps) {
|
120
|
+
newState.selectedValue = nextProps.selectedValue;
|
121
|
+
newState.prevSelectedValue = nextProps.selectedValue;
|
122
|
+
}
|
123
|
+
if ('mode' in nextProps && !isArraysEqual(state.mode, nextProps.mode)) {
|
124
|
+
newState.mode = nextProps.mode;
|
125
|
+
}
|
126
|
+
return newState;
|
127
|
+
};
|
128
|
+
|
129
|
+
// get disabled hours for second picker
|
130
|
+
|
131
|
+
|
132
|
+
RangeCalendar.prototype.render = function render() {
|
133
|
+
var _className, _classnames;
|
134
|
+
|
135
|
+
var props = this.props,
|
611
136
|
state = this.state;
|
612
|
-
|
137
|
+
var prefixCls = props.prefixCls,
|
613
138
|
dateInputPlaceholder = props.dateInputPlaceholder,
|
614
139
|
seperator = props.seperator,
|
615
140
|
timePicker = props.timePicker,
|
@@ -619,139 +144,153 @@ var RangeCalendar = /*#__PURE__*/function (_React$Component) {
|
|
619
144
|
showToday = props.showToday,
|
620
145
|
type = props.type,
|
621
146
|
clearIcon = props.clearIcon;
|
622
|
-
|
147
|
+
var hoverValue = state.hoverValue,
|
623
148
|
selectedValue = state.selectedValue,
|
624
149
|
mode = state.mode,
|
625
150
|
showTimePicker = state.showTimePicker;
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
151
|
+
|
152
|
+
var className = (_className = {}, _className[props.className] = !!props.className, _className[prefixCls] = 1, _className[prefixCls + '-hidden'] = !props.visible, _className[prefixCls + '-range'] = 1, _className[prefixCls + '-show-time-picker'] = showTimePicker, _className[prefixCls + '-week-number'] = props.showWeekNumber, _className);
|
153
|
+
var classes = classnames(className);
|
154
|
+
var newProps = {
|
155
|
+
selectedValue: state.selectedValue,
|
156
|
+
onSelect: this.onSelect,
|
157
|
+
onDayHover: type === 'start' && selectedValue[1] || type === 'end' && selectedValue[0] || !!hoverValue.length ? this.onDayHover : undefined
|
158
|
+
};
|
159
|
+
|
160
|
+
var placeholder1 = void 0;
|
161
|
+
var placeholder2 = void 0;
|
162
|
+
|
163
|
+
if (dateInputPlaceholder) {
|
164
|
+
if (Array.isArray(dateInputPlaceholder)) {
|
165
|
+
placeholder1 = dateInputPlaceholder[0];
|
166
|
+
placeholder2 = dateInputPlaceholder[1];
|
167
|
+
} else {
|
168
|
+
placeholder1 = placeholder2 = dateInputPlaceholder;
|
643
169
|
}
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
170
|
+
}
|
171
|
+
var showOkButton = showOk === true || showOk !== false && !!timePicker;
|
172
|
+
var cls = classnames((_classnames = {}, _classnames[prefixCls + '-footer'] = true, _classnames[prefixCls + '-range-bottom'] = true, _classnames[prefixCls + '-footer-show-ok'] = showOkButton, _classnames));
|
173
|
+
|
174
|
+
var startValue = this.getStartValue();
|
175
|
+
var endValue = this.getEndValue();
|
176
|
+
var todayTime = getTodayTime(startValue);
|
177
|
+
var thisMonth = todayTime.month();
|
178
|
+
var thisYear = todayTime.year();
|
179
|
+
var isTodayInView = startValue.year() === thisYear && startValue.month() === thisMonth || endValue.year() === thisYear && endValue.month() === thisMonth;
|
180
|
+
var nextMonthOfStart = startValue.clone().add(1, 'months');
|
181
|
+
var isClosestMonths = nextMonthOfStart.year() === endValue.year() && nextMonthOfStart.month() === endValue.month();
|
182
|
+
|
183
|
+
var extraFooter = props.renderFooter();
|
184
|
+
|
185
|
+
return React.createElement(
|
186
|
+
'div',
|
187
|
+
{
|
656
188
|
ref: this.saveRoot,
|
657
189
|
className: classes,
|
658
190
|
style: props.style,
|
659
|
-
tabIndex:
|
191
|
+
tabIndex: '0',
|
660
192
|
onKeyDown: this.onKeyDown
|
661
|
-
},
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
193
|
+
},
|
194
|
+
props.renderSidebar(),
|
195
|
+
React.createElement(
|
196
|
+
'div',
|
197
|
+
{ className: prefixCls + '-panel' },
|
198
|
+
showClear && selectedValue[0] && selectedValue[1] ? React.createElement(
|
199
|
+
'a',
|
200
|
+
{
|
201
|
+
role: 'button',
|
202
|
+
title: locale.clear,
|
203
|
+
onClick: this.clear
|
204
|
+
},
|
205
|
+
clearIcon || React.createElement('span', { className: prefixCls + '-clear-btn' })
|
206
|
+
) : null,
|
207
|
+
React.createElement(
|
208
|
+
'div',
|
209
|
+
{
|
210
|
+
className: prefixCls + '-date-panel',
|
211
|
+
onMouseLeave: type !== 'both' ? this.onDatePanelLeave : undefined,
|
212
|
+
onMouseEnter: type !== 'both' ? this.onDatePanelEnter : undefined
|
213
|
+
},
|
214
|
+
React.createElement(CalendarPart, _extends({}, props, newProps, {
|
215
|
+
hoverValue: hoverValue,
|
216
|
+
direction: 'left',
|
217
|
+
disabledTime: this.disabledStartTime,
|
218
|
+
disabledMonth: this.disabledStartMonth,
|
219
|
+
format: this.getFormat(),
|
220
|
+
value: startValue,
|
221
|
+
mode: mode[0],
|
222
|
+
placeholder: placeholder1,
|
223
|
+
onInputChange: this.onStartInputChange,
|
224
|
+
onInputSelect: this.onStartInputSelect,
|
225
|
+
onValueChange: this.onStartValueChange,
|
226
|
+
onPanelChange: this.onStartPanelChange,
|
227
|
+
showDateInput: this.props.showDateInput,
|
228
|
+
timePicker: timePicker,
|
229
|
+
showTimePicker: showTimePicker || mode[0] === 'time',
|
230
|
+
enablePrev: true,
|
231
|
+
enableNext: !isClosestMonths || this.isMonthYearPanelShow(mode[1]),
|
232
|
+
clearIcon: clearIcon
|
233
|
+
})),
|
234
|
+
React.createElement(
|
235
|
+
'span',
|
236
|
+
{ className: prefixCls + '-range-middle' },
|
237
|
+
seperator
|
238
|
+
),
|
239
|
+
React.createElement(CalendarPart, _extends({}, props, newProps, {
|
240
|
+
hoverValue: hoverValue,
|
241
|
+
direction: 'right',
|
242
|
+
format: this.getFormat(),
|
243
|
+
timePickerDisabledTime: this.getEndDisableTime(),
|
244
|
+
placeholder: placeholder2,
|
245
|
+
value: endValue,
|
246
|
+
mode: mode[1],
|
247
|
+
onInputChange: this.onEndInputChange,
|
248
|
+
onInputSelect: this.onEndInputSelect,
|
249
|
+
onValueChange: this.onEndValueChange,
|
250
|
+
onPanelChange: this.onEndPanelChange,
|
251
|
+
showDateInput: this.props.showDateInput,
|
252
|
+
timePicker: timePicker,
|
253
|
+
showTimePicker: showTimePicker || mode[1] === 'time',
|
254
|
+
disabledTime: this.disabledEndTime,
|
255
|
+
disabledMonth: this.disabledEndMonth,
|
256
|
+
enablePrev: !isClosestMonths || this.isMonthYearPanelShow(mode[0]),
|
257
|
+
enableNext: true,
|
258
|
+
clearIcon: clearIcon
|
259
|
+
}))
|
260
|
+
),
|
261
|
+
React.createElement(
|
262
|
+
'div',
|
263
|
+
{ className: cls },
|
264
|
+
showToday || props.timePicker || showOkButton || extraFooter ? React.createElement(
|
265
|
+
'div',
|
266
|
+
{ className: prefixCls + '-footer-btn' },
|
267
|
+
extraFooter,
|
268
|
+
showToday ? React.createElement(TodayButton, _extends({}, props, {
|
269
|
+
disabled: isTodayInView,
|
270
|
+
value: state.value[0],
|
271
|
+
onToday: this.onToday,
|
272
|
+
text: locale.backToToday
|
273
|
+
})) : null,
|
274
|
+
props.timePicker ? React.createElement(TimePickerButton, _extends({}, props, {
|
275
|
+
showTimePicker: showTimePicker || mode[0] === 'time' && mode[1] === 'time',
|
276
|
+
onOpenTimePicker: this.onOpenTimePicker,
|
277
|
+
onCloseTimePicker: this.onCloseTimePicker,
|
278
|
+
timePickerDisabled: !this.hasSelectedValue() || hoverValue.length
|
279
|
+
})) : null,
|
280
|
+
showOkButton ? React.createElement(OkButton, _extends({}, props, {
|
281
|
+
onOk: this.onOk,
|
282
|
+
okDisabled: !this.isAllowedDateAndTime(selectedValue) || !this.hasSelectedValue() || hoverValue.length
|
283
|
+
})) : null
|
284
|
+
) : null
|
285
|
+
)
|
286
|
+
)
|
287
|
+
);
|
288
|
+
};
|
289
|
+
|
290
|
+
return RangeCalendar;
|
753
291
|
}(React.Component);
|
754
|
-
|
292
|
+
|
293
|
+
RangeCalendar.propTypes = _extends({}, propType, {
|
755
294
|
prefixCls: PropTypes.string,
|
756
295
|
dateInputPlaceholder: PropTypes.any,
|
757
296
|
seperator: PropTypes.string,
|
@@ -780,8 +319,8 @@ _defineProperty(RangeCalendar, "propTypes", _objectSpread(_objectSpread({}, prop
|
|
780
319
|
disabledTime: PropTypes.func,
|
781
320
|
clearIcon: PropTypes.node,
|
782
321
|
onKeyDown: PropTypes.func
|
783
|
-
})
|
784
|
-
|
322
|
+
});
|
323
|
+
RangeCalendar.defaultProps = _extends({}, defaultProp, {
|
785
324
|
type: 'both',
|
786
325
|
seperator: '~',
|
787
326
|
defaultSelectedValue: [],
|
@@ -792,6 +331,546 @@ _defineProperty(RangeCalendar, "defaultProps", _objectSpread(_objectSpread({}, d
|
|
792
331
|
onInputSelect: noop,
|
793
332
|
showToday: true,
|
794
333
|
showDateInput: true
|
795
|
-
})
|
334
|
+
});
|
335
|
+
|
336
|
+
var _initialiseProps = function _initialiseProps() {
|
337
|
+
var _this2 = this;
|
338
|
+
|
339
|
+
this.onDatePanelEnter = function () {
|
340
|
+
if (_this2.hasSelectedValue()) {
|
341
|
+
_this2.fireHoverValueChange(_this2.state.selectedValue.concat());
|
342
|
+
}
|
343
|
+
};
|
344
|
+
|
345
|
+
this.onDatePanelLeave = function () {
|
346
|
+
if (_this2.hasSelectedValue()) {
|
347
|
+
_this2.fireHoverValueChange([]);
|
348
|
+
}
|
349
|
+
};
|
350
|
+
|
351
|
+
this.onSelect = function (value) {
|
352
|
+
var type = _this2.props.type;
|
353
|
+
var _state = _this2.state,
|
354
|
+
selectedValue = _state.selectedValue,
|
355
|
+
prevSelectedValue = _state.prevSelectedValue,
|
356
|
+
firstSelectedValue = _state.firstSelectedValue;
|
357
|
+
|
358
|
+
var nextSelectedValue = void 0;
|
359
|
+
if (type === 'both') {
|
360
|
+
if (!firstSelectedValue) {
|
361
|
+
syncTime(prevSelectedValue[0], value);
|
362
|
+
nextSelectedValue = [value];
|
363
|
+
} else if (_this2.compare(firstSelectedValue, value) < 0) {
|
364
|
+
syncTime(prevSelectedValue[1], value);
|
365
|
+
nextSelectedValue = [firstSelectedValue, value];
|
366
|
+
} else {
|
367
|
+
syncTime(prevSelectedValue[0], value);
|
368
|
+
syncTime(prevSelectedValue[1], firstSelectedValue);
|
369
|
+
nextSelectedValue = [value, firstSelectedValue];
|
370
|
+
}
|
371
|
+
} else if (type === 'start') {
|
372
|
+
syncTime(prevSelectedValue[0], value);
|
373
|
+
var endValue = selectedValue[1];
|
374
|
+
nextSelectedValue = endValue && _this2.compare(endValue, value) > 0 ? [value, endValue] : [value];
|
375
|
+
} else {
|
376
|
+
// type === 'end'
|
377
|
+
var startValue = selectedValue[0];
|
378
|
+
if (startValue && _this2.compare(startValue, value) <= 0) {
|
379
|
+
syncTime(prevSelectedValue[1], value);
|
380
|
+
nextSelectedValue = [startValue, value];
|
381
|
+
} else {
|
382
|
+
syncTime(prevSelectedValue[0], value);
|
383
|
+
nextSelectedValue = [value];
|
384
|
+
}
|
385
|
+
}
|
386
|
+
|
387
|
+
_this2.fireSelectValueChange(nextSelectedValue);
|
388
|
+
};
|
389
|
+
|
390
|
+
this.onKeyDown = function (event) {
|
391
|
+
if (event.target.nodeName.toLowerCase() === 'input') {
|
392
|
+
return;
|
393
|
+
}
|
394
|
+
|
395
|
+
var keyCode = event.keyCode;
|
396
|
+
|
397
|
+
var ctrlKey = event.ctrlKey || event.metaKey;
|
398
|
+
|
399
|
+
var _state2 = _this2.state,
|
400
|
+
selectedValue = _state2.selectedValue,
|
401
|
+
hoverValue = _state2.hoverValue,
|
402
|
+
firstSelectedValue = _state2.firstSelectedValue,
|
403
|
+
value = _state2.value;
|
404
|
+
var _props = _this2.props,
|
405
|
+
onKeyDown = _props.onKeyDown,
|
406
|
+
disabledDate = _props.disabledDate;
|
407
|
+
|
408
|
+
// Update last time of the picker
|
409
|
+
|
410
|
+
var updateHoverPoint = function updateHoverPoint(func) {
|
411
|
+
// Change hover to make focus in UI
|
412
|
+
var currentHoverTime = void 0;
|
413
|
+
var nextHoverTime = void 0;
|
414
|
+
var nextHoverValue = void 0;
|
415
|
+
|
416
|
+
if (!firstSelectedValue) {
|
417
|
+
currentHoverTime = hoverValue[0] || selectedValue[0] || value[0] || dayjs();
|
418
|
+
nextHoverTime = func(currentHoverTime);
|
419
|
+
nextHoverValue = [nextHoverTime];
|
420
|
+
_this2.fireHoverValueChange(nextHoverValue);
|
421
|
+
} else {
|
422
|
+
if (hoverValue.length === 1) {
|
423
|
+
currentHoverTime = hoverValue[0].clone();
|
424
|
+
nextHoverTime = func(currentHoverTime);
|
425
|
+
nextHoverValue = _this2.onDayHover(nextHoverTime);
|
426
|
+
} else {
|
427
|
+
currentHoverTime = hoverValue[0].isSame(firstSelectedValue, 'day') ? hoverValue[1] : hoverValue[0];
|
428
|
+
nextHoverTime = func(currentHoverTime);
|
429
|
+
nextHoverValue = _this2.onDayHover(nextHoverTime);
|
430
|
+
}
|
431
|
+
}
|
432
|
+
|
433
|
+
// Find origin hover time on value index
|
434
|
+
if (nextHoverValue.length >= 2) {
|
435
|
+
var miss = nextHoverValue.some(function (ht) {
|
436
|
+
return !includesTime(value, ht, 'month');
|
437
|
+
});
|
438
|
+
if (miss) {
|
439
|
+
var newValue = nextHoverValue.slice().sort(function (t1, t2) {
|
440
|
+
return t1.valueOf() - t2.valueOf();
|
441
|
+
});
|
442
|
+
if (newValue[0].isSame(newValue[1], 'month')) {
|
443
|
+
newValue[1] = newValue[0].clone().add(1, 'month');
|
444
|
+
}
|
445
|
+
_this2.fireValueChange(newValue);
|
446
|
+
}
|
447
|
+
} else if (nextHoverValue.length === 1) {
|
448
|
+
// If only one value, let's keep the origin panel
|
449
|
+
var oriValueIndex = value.findIndex(function (time) {
|
450
|
+
return time.isSame(currentHoverTime, 'month');
|
451
|
+
});
|
452
|
+
if (oriValueIndex === -1) oriValueIndex = 0;
|
453
|
+
|
454
|
+
if (value.every(function (time) {
|
455
|
+
return !time.isSame(nextHoverTime, 'month');
|
456
|
+
})) {
|
457
|
+
var _newValue = value.slice();
|
458
|
+
_newValue[oriValueIndex] = nextHoverTime.clone();
|
459
|
+
_this2.fireValueChange(_newValue);
|
460
|
+
}
|
461
|
+
}
|
462
|
+
|
463
|
+
event.preventDefault();
|
464
|
+
|
465
|
+
return nextHoverTime;
|
466
|
+
};
|
467
|
+
|
468
|
+
switch (keyCode) {
|
469
|
+
case KeyCode.DOWN:
|
470
|
+
updateHoverPoint(function (time) {
|
471
|
+
return goTime(time, 1, 'weeks');
|
472
|
+
});
|
473
|
+
return;
|
474
|
+
case KeyCode.UP:
|
475
|
+
updateHoverPoint(function (time) {
|
476
|
+
return goTime(time, -1, 'weeks');
|
477
|
+
});
|
478
|
+
return;
|
479
|
+
case KeyCode.LEFT:
|
480
|
+
if (ctrlKey) {
|
481
|
+
updateHoverPoint(function (time) {
|
482
|
+
return goTime(time, -1, 'years');
|
483
|
+
});
|
484
|
+
} else {
|
485
|
+
updateHoverPoint(function (time) {
|
486
|
+
return goTime(time, -1, 'days');
|
487
|
+
});
|
488
|
+
}
|
489
|
+
return;
|
490
|
+
case KeyCode.RIGHT:
|
491
|
+
if (ctrlKey) {
|
492
|
+
updateHoverPoint(function (time) {
|
493
|
+
return goTime(time, 1, 'years');
|
494
|
+
});
|
495
|
+
} else {
|
496
|
+
updateHoverPoint(function (time) {
|
497
|
+
return goTime(time, 1, 'days');
|
498
|
+
});
|
499
|
+
}
|
500
|
+
return;
|
501
|
+
case KeyCode.HOME:
|
502
|
+
updateHoverPoint(function (time) {
|
503
|
+
return goStartMonth(time);
|
504
|
+
});
|
505
|
+
return;
|
506
|
+
case KeyCode.END:
|
507
|
+
updateHoverPoint(function (time) {
|
508
|
+
return goEndMonth(time);
|
509
|
+
});
|
510
|
+
return;
|
511
|
+
case KeyCode.PAGE_DOWN:
|
512
|
+
updateHoverPoint(function (time) {
|
513
|
+
return goTime(time, 1, 'month');
|
514
|
+
});
|
515
|
+
return;
|
516
|
+
case KeyCode.PAGE_UP:
|
517
|
+
updateHoverPoint(function (time) {
|
518
|
+
return goTime(time, -1, 'month');
|
519
|
+
});
|
520
|
+
return;
|
521
|
+
case KeyCode.ENTER:
|
522
|
+
{
|
523
|
+
var lastValue = void 0;
|
524
|
+
if (hoverValue.length === 0) {
|
525
|
+
lastValue = updateHoverPoint(function (time) {
|
526
|
+
return time;
|
527
|
+
});
|
528
|
+
} else if (hoverValue.length === 1) {
|
529
|
+
lastValue = hoverValue[0];
|
530
|
+
} else {
|
531
|
+
lastValue = hoverValue[0].isSame(firstSelectedValue, 'day') ? hoverValue[1] : hoverValue[0];
|
532
|
+
}
|
533
|
+
if (lastValue && (!disabledDate || !disabledDate(lastValue))) {
|
534
|
+
_this2.onSelect(lastValue);
|
535
|
+
}
|
536
|
+
event.preventDefault();
|
537
|
+
return;
|
538
|
+
}
|
539
|
+
default:
|
540
|
+
if (onKeyDown) {
|
541
|
+
onKeyDown(event);
|
542
|
+
}
|
543
|
+
}
|
544
|
+
};
|
545
|
+
|
546
|
+
this.onDayHover = function (value) {
|
547
|
+
var hoverValue = [];
|
548
|
+
var _state3 = _this2.state,
|
549
|
+
selectedValue = _state3.selectedValue,
|
550
|
+
firstSelectedValue = _state3.firstSelectedValue;
|
551
|
+
var type = _this2.props.type;
|
552
|
+
|
553
|
+
if (type === 'start' && selectedValue[1]) {
|
554
|
+
hoverValue = _this2.compare(value, selectedValue[1]) < 0 ? [value, selectedValue[1]] : [value];
|
555
|
+
} else if (type === 'end' && selectedValue[0]) {
|
556
|
+
hoverValue = _this2.compare(value, selectedValue[0]) > 0 ? [selectedValue[0], value] : [];
|
557
|
+
} else {
|
558
|
+
if (!firstSelectedValue) {
|
559
|
+
if (_this2.state.hoverValue.length) {
|
560
|
+
_this2.setState({ hoverValue: [] });
|
561
|
+
}
|
562
|
+
return hoverValue;
|
563
|
+
}
|
564
|
+
hoverValue = _this2.compare(value, firstSelectedValue) < 0 ? [value, firstSelectedValue] : [firstSelectedValue, value];
|
565
|
+
}
|
566
|
+
_this2.fireHoverValueChange(hoverValue);
|
567
|
+
|
568
|
+
return hoverValue;
|
569
|
+
};
|
570
|
+
|
571
|
+
this.onToday = function () {
|
572
|
+
var startValue = getTodayTime(_this2.state.value[0]);
|
573
|
+
var endValue = startValue.clone().add(1, 'months');
|
574
|
+
_this2.setState({ value: [startValue, endValue] });
|
575
|
+
};
|
576
|
+
|
577
|
+
this.onOpenTimePicker = function () {
|
578
|
+
_this2.setState({
|
579
|
+
showTimePicker: true
|
580
|
+
});
|
581
|
+
};
|
582
|
+
|
583
|
+
this.onCloseTimePicker = function () {
|
584
|
+
_this2.setState({
|
585
|
+
showTimePicker: false
|
586
|
+
});
|
587
|
+
};
|
588
|
+
|
589
|
+
this.onOk = function () {
|
590
|
+
var selectedValue = _this2.state.selectedValue;
|
591
|
+
|
592
|
+
if (_this2.isAllowedDateAndTime(selectedValue)) {
|
593
|
+
_this2.props.onOk(_this2.state.selectedValue);
|
594
|
+
}
|
595
|
+
};
|
596
|
+
|
597
|
+
this.onStartInputChange = function () {
|
598
|
+
for (var _len = arguments.length, oargs = Array(_len), _key = 0; _key < _len; _key++) {
|
599
|
+
oargs[_key] = arguments[_key];
|
600
|
+
}
|
601
|
+
|
602
|
+
var args = ['left'].concat(oargs);
|
603
|
+
return onInputSelect.apply(_this2, args);
|
604
|
+
};
|
605
|
+
|
606
|
+
this.onEndInputChange = function () {
|
607
|
+
for (var _len2 = arguments.length, oargs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
608
|
+
oargs[_key2] = arguments[_key2];
|
609
|
+
}
|
610
|
+
|
611
|
+
var args = ['right'].concat(oargs);
|
612
|
+
return onInputSelect.apply(_this2, args);
|
613
|
+
};
|
614
|
+
|
615
|
+
this.onStartInputSelect = function (value) {
|
616
|
+
var args = ['left', value, { source: 'dateInputSelect' }];
|
617
|
+
return onInputSelect.apply(_this2, args);
|
618
|
+
};
|
619
|
+
|
620
|
+
this.onEndInputSelect = function (value) {
|
621
|
+
var args = ['right', value, { source: 'dateInputSelect' }];
|
622
|
+
return onInputSelect.apply(_this2, args);
|
623
|
+
};
|
624
|
+
|
625
|
+
this.onStartValueChange = function (leftValue) {
|
626
|
+
var value = [].concat(_this2.state.value);
|
627
|
+
value[0] = leftValue;
|
628
|
+
return _this2.fireValueChange(value);
|
629
|
+
};
|
630
|
+
|
631
|
+
this.onEndValueChange = function (rightValue) {
|
632
|
+
var value = [].concat(_this2.state.value);
|
633
|
+
value[1] = rightValue;
|
634
|
+
return _this2.fireValueChange(value);
|
635
|
+
};
|
636
|
+
|
637
|
+
this.onStartPanelChange = function (value, mode) {
|
638
|
+
var props = _this2.props,
|
639
|
+
state = _this2.state;
|
640
|
+
|
641
|
+
var newMode = [mode, state.mode[1]];
|
642
|
+
var newState = {
|
643
|
+
panelTriggerSource: 'start'
|
644
|
+
};
|
645
|
+
if (!('mode' in props)) {
|
646
|
+
newState.mode = newMode;
|
647
|
+
}
|
648
|
+
_this2.setState(newState);
|
649
|
+
var newValue = [value || state.value[0], state.value[1]];
|
650
|
+
props.onPanelChange(newValue, newMode);
|
651
|
+
};
|
652
|
+
|
653
|
+
this.onEndPanelChange = function (value, mode) {
|
654
|
+
var props = _this2.props,
|
655
|
+
state = _this2.state;
|
656
|
+
|
657
|
+
var newMode = [state.mode[0], mode];
|
658
|
+
var newState = {
|
659
|
+
panelTriggerSource: 'end'
|
660
|
+
};
|
661
|
+
if (!('mode' in props)) {
|
662
|
+
newState.mode = newMode;
|
663
|
+
}
|
664
|
+
_this2.setState(newState);
|
665
|
+
var newValue = [state.value[0], value || state.value[1]];
|
666
|
+
props.onPanelChange(newValue, newMode);
|
667
|
+
};
|
668
|
+
|
669
|
+
this.getStartValue = function () {
|
670
|
+
var _state4 = _this2.state,
|
671
|
+
selectedValue = _state4.selectedValue,
|
672
|
+
showTimePicker = _state4.showTimePicker,
|
673
|
+
value = _state4.value,
|
674
|
+
mode = _state4.mode,
|
675
|
+
panelTriggerSource = _state4.panelTriggerSource;
|
676
|
+
|
677
|
+
var startValue = value[0];
|
678
|
+
// keep selectedTime when select date
|
679
|
+
if (selectedValue[0] && _this2.props.timePicker) {
|
680
|
+
startValue = startValue.clone();
|
681
|
+
syncTime(selectedValue[0], startValue);
|
682
|
+
}
|
683
|
+
if (showTimePicker && selectedValue[0]) {
|
684
|
+
startValue = selectedValue[0];
|
685
|
+
}
|
686
|
+
|
687
|
+
// Adjust month if date not align
|
688
|
+
if (panelTriggerSource === 'end' && mode[0] === 'date' && mode[1] === 'date' && startValue.isSame(value[1], 'month')) {
|
689
|
+
startValue = startValue.clone().subtract(1, 'month');
|
690
|
+
}
|
691
|
+
|
692
|
+
return startValue;
|
693
|
+
};
|
694
|
+
|
695
|
+
this.getEndValue = function () {
|
696
|
+
var _state5 = _this2.state,
|
697
|
+
value = _state5.value,
|
698
|
+
selectedValue = _state5.selectedValue,
|
699
|
+
showTimePicker = _state5.showTimePicker,
|
700
|
+
mode = _state5.mode,
|
701
|
+
panelTriggerSource = _state5.panelTriggerSource;
|
702
|
+
|
703
|
+
var endValue = value[1] ? value[1].clone() : value[0].clone().add(1, 'month');
|
704
|
+
// keep selectedTime when select date
|
705
|
+
if (selectedValue[1] && _this2.props.timePicker) {
|
706
|
+
syncTime(selectedValue[1], endValue);
|
707
|
+
}
|
708
|
+
if (showTimePicker) {
|
709
|
+
endValue = selectedValue[1] ? selectedValue[1] : _this2.getStartValue();
|
710
|
+
}
|
711
|
+
|
712
|
+
// Adjust month if date not align
|
713
|
+
if (!showTimePicker && panelTriggerSource !== 'end' && mode[0] === 'date' && mode[1] === 'date' && endValue.isSame(value[0], 'month')) {
|
714
|
+
endValue = endValue.clone().add(1, 'month');
|
715
|
+
}
|
716
|
+
|
717
|
+
return endValue;
|
718
|
+
};
|
719
|
+
|
720
|
+
this.getEndDisableTime = function () {
|
721
|
+
var _state6 = _this2.state,
|
722
|
+
selectedValue = _state6.selectedValue,
|
723
|
+
value = _state6.value;
|
724
|
+
var disabledTime = _this2.props.disabledTime;
|
725
|
+
|
726
|
+
var userSettingDisabledTime = disabledTime(selectedValue, 'end') || {};
|
727
|
+
var startValue = selectedValue && selectedValue[0] || value[0].clone();
|
728
|
+
// if startTime and endTime is same day..
|
729
|
+
// the second time picker will not able to pick time before first time picker
|
730
|
+
if (!selectedValue[1] || startValue.isSame(selectedValue[1], 'day')) {
|
731
|
+
var hours = startValue.hour();
|
732
|
+
var minutes = startValue.minute();
|
733
|
+
var second = startValue.second();
|
734
|
+
var _disabledHours = userSettingDisabledTime.disabledHours,
|
735
|
+
_disabledMinutes = userSettingDisabledTime.disabledMinutes,
|
736
|
+
_disabledSeconds = userSettingDisabledTime.disabledSeconds;
|
737
|
+
|
738
|
+
var oldDisabledMinutes = _disabledMinutes ? _disabledMinutes() : [];
|
739
|
+
var olddisabledSeconds = _disabledSeconds ? _disabledSeconds() : [];
|
740
|
+
_disabledHours = generateOptions(hours, _disabledHours);
|
741
|
+
_disabledMinutes = generateOptions(minutes, _disabledMinutes);
|
742
|
+
_disabledSeconds = generateOptions(second, _disabledSeconds);
|
743
|
+
return {
|
744
|
+
disabledHours: function disabledHours() {
|
745
|
+
return _disabledHours;
|
746
|
+
},
|
747
|
+
disabledMinutes: function disabledMinutes(hour) {
|
748
|
+
if (hour === hours) {
|
749
|
+
return _disabledMinutes;
|
750
|
+
}
|
751
|
+
return oldDisabledMinutes;
|
752
|
+
},
|
753
|
+
disabledSeconds: function disabledSeconds(hour, minute) {
|
754
|
+
if (hour === hours && minute === minutes) {
|
755
|
+
return _disabledSeconds;
|
756
|
+
}
|
757
|
+
return olddisabledSeconds;
|
758
|
+
}
|
759
|
+
};
|
760
|
+
}
|
761
|
+
return userSettingDisabledTime;
|
762
|
+
};
|
763
|
+
|
764
|
+
this.isAllowedDateAndTime = function (selectedValue) {
|
765
|
+
return isAllowedDate(selectedValue[0], _this2.props.disabledDate, _this2.disabledStartTime) && isAllowedDate(selectedValue[1], _this2.props.disabledDate, _this2.disabledEndTime);
|
766
|
+
};
|
767
|
+
|
768
|
+
this.isMonthYearPanelShow = function (mode) {
|
769
|
+
return ['month', 'year', 'decade'].indexOf(mode) > -1;
|
770
|
+
};
|
771
|
+
|
772
|
+
this.hasSelectedValue = function () {
|
773
|
+
var selectedValue = _this2.state.selectedValue;
|
774
|
+
|
775
|
+
return !!selectedValue[1] && !!selectedValue[0];
|
776
|
+
};
|
777
|
+
|
778
|
+
this.compare = function (v1, v2) {
|
779
|
+
if (_this2.props.timePicker) {
|
780
|
+
return v1.diff(v2);
|
781
|
+
}
|
782
|
+
return v1.diff(v2, 'days');
|
783
|
+
};
|
784
|
+
|
785
|
+
this.fireSelectValueChange = function (selectedValue, direct, cause) {
|
786
|
+
var timePicker = _this2.props.timePicker;
|
787
|
+
var prevSelectedValue = _this2.state.prevSelectedValue;
|
788
|
+
|
789
|
+
if (timePicker && timePicker.props.defaultValue) {
|
790
|
+
var timePickerDefaultValue = timePicker.props.defaultValue;
|
791
|
+
if (!prevSelectedValue[0] && selectedValue[0]) {
|
792
|
+
syncTime(timePickerDefaultValue[0], selectedValue[0]);
|
793
|
+
}
|
794
|
+
if (!prevSelectedValue[1] && selectedValue[1]) {
|
795
|
+
syncTime(timePickerDefaultValue[1], selectedValue[1]);
|
796
|
+
}
|
797
|
+
}
|
798
|
+
|
799
|
+
if (!('selectedValue' in _this2.props)) {
|
800
|
+
_this2.setState({
|
801
|
+
selectedValue: selectedValue
|
802
|
+
});
|
803
|
+
}
|
804
|
+
|
805
|
+
// 尚未选择过时间,直接输入的话
|
806
|
+
if (!_this2.state.selectedValue[0] || !_this2.state.selectedValue[1]) {
|
807
|
+
var startValue = selectedValue[0] || dayjs();
|
808
|
+
var endValue = selectedValue[1] || startValue.clone().add(1, 'months');
|
809
|
+
_this2.setState({
|
810
|
+
selectedValue: selectedValue,
|
811
|
+
value: getValueFromSelectedValue([startValue, endValue])
|
812
|
+
});
|
813
|
+
}
|
814
|
+
|
815
|
+
if (selectedValue[0] && !selectedValue[1]) {
|
816
|
+
_this2.setState({ firstSelectedValue: selectedValue[0] });
|
817
|
+
_this2.fireHoverValueChange(selectedValue.concat());
|
818
|
+
}
|
819
|
+
_this2.props.onChange(selectedValue);
|
820
|
+
if (direct || selectedValue[0] && selectedValue[1]) {
|
821
|
+
_this2.setState({
|
822
|
+
prevSelectedValue: selectedValue,
|
823
|
+
firstSelectedValue: null
|
824
|
+
});
|
825
|
+
_this2.fireHoverValueChange([]);
|
826
|
+
_this2.props.onSelect(selectedValue, cause);
|
827
|
+
}
|
828
|
+
};
|
829
|
+
|
830
|
+
this.fireValueChange = function (value) {
|
831
|
+
var props = _this2.props;
|
832
|
+
if (!('value' in props)) {
|
833
|
+
_this2.setState({
|
834
|
+
value: value
|
835
|
+
});
|
836
|
+
}
|
837
|
+
props.onValueChange(value);
|
838
|
+
};
|
839
|
+
|
840
|
+
this.fireHoverValueChange = function (hoverValue) {
|
841
|
+
var props = _this2.props;
|
842
|
+
if (!('hoverValue' in props)) {
|
843
|
+
_this2.setState({ hoverValue: hoverValue });
|
844
|
+
}
|
845
|
+
props.onHoverChange(hoverValue);
|
846
|
+
};
|
847
|
+
|
848
|
+
this.clear = function () {
|
849
|
+
_this2.fireSelectValueChange([], true);
|
850
|
+
_this2.props.onClear();
|
851
|
+
};
|
852
|
+
|
853
|
+
this.disabledStartTime = function (time) {
|
854
|
+
return _this2.props.disabledTime(time, 'start');
|
855
|
+
};
|
856
|
+
|
857
|
+
this.disabledEndTime = function (time) {
|
858
|
+
return _this2.props.disabledTime(time, 'end');
|
859
|
+
};
|
860
|
+
|
861
|
+
this.disabledStartMonth = function (month) {
|
862
|
+
var value = _this2.state.value;
|
863
|
+
|
864
|
+
return month.isAfter(value[1], 'month');
|
865
|
+
};
|
866
|
+
|
867
|
+
this.disabledEndMonth = function (month) {
|
868
|
+
var value = _this2.state.value;
|
869
|
+
|
870
|
+
return month.isBefore(value[0], 'month');
|
871
|
+
};
|
872
|
+
};
|
873
|
+
|
796
874
|
polyfill(RangeCalendar);
|
875
|
+
|
797
876
|
export default commonMixinWrapper(RangeCalendar);
|