@rc-component/picker 1.4.0 → 1.5.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/es/PickerInput/RangePicker.js +5 -7
- package/es/PickerInput/SinglePicker.js +5 -7
- package/es/PickerInput/hooks/useDelayState.js +15 -8
- package/es/PickerInput/hooks/useRangePickerValue.js +11 -15
- package/es/PickerInput/hooks/useRangeValue.d.ts +1 -1
- package/es/PickerInput/hooks/useRangeValue.js +9 -10
- package/es/PickerPanel/index.js +13 -22
- package/lib/PickerInput/RangePicker.js +4 -6
- package/lib/PickerInput/SinglePicker.js +4 -6
- package/lib/PickerInput/hooks/useDelayState.js +14 -7
- package/lib/PickerInput/hooks/useRangePickerValue.js +10 -14
- package/lib/PickerInput/hooks/useRangeValue.d.ts +1 -1
- package/lib/PickerInput/hooks/useRangeValue.js +8 -9
- package/lib/PickerPanel/index.js +12 -21
- package/package.json +2 -2
|
@@ -15,7 +15,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
15
15
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
16
16
|
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; } }
|
|
17
17
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
-
import { useEvent,
|
|
18
|
+
import { useEvent, useControlledState } from '@rc-component/util';
|
|
19
19
|
import cls from 'classnames';
|
|
20
20
|
import useLayoutEffect from "@rc-component/util/es/hooks/useLayoutEffect";
|
|
21
21
|
import omit from "@rc-component/util/es/omit";
|
|
@@ -192,12 +192,10 @@ function RangePicker(props, ref) {
|
|
|
192
192
|
}, [showTime, activeIndex, calendarValue, activeIndexList]);
|
|
193
193
|
|
|
194
194
|
// ========================= Mode =========================
|
|
195
|
-
var
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
modes = _useMergedState2[0],
|
|
200
|
-
setModes = _useMergedState2[1];
|
|
195
|
+
var _useControlledState = useControlledState([picker, picker], mode),
|
|
196
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
197
|
+
modes = _useControlledState2[0],
|
|
198
|
+
setModes = _useControlledState2[1];
|
|
201
199
|
var mergedMode = modes[activeIndex] || picker;
|
|
202
200
|
|
|
203
201
|
/** Extends from `mergedMode` to patch `datetime` mode */
|
|
@@ -15,7 +15,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
15
15
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
16
16
|
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; } }
|
|
17
17
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
|
-
import { useEvent,
|
|
18
|
+
import { useEvent, useControlledState } from '@rc-component/util';
|
|
19
19
|
import cls from 'classnames';
|
|
20
20
|
import useLayoutEffect from "@rc-component/util/es/hooks/useLayoutEffect";
|
|
21
21
|
import omit from "@rc-component/util/es/omit";
|
|
@@ -163,12 +163,10 @@ function Picker(props, ref) {
|
|
|
163
163
|
};
|
|
164
164
|
|
|
165
165
|
// ========================= Mode =========================
|
|
166
|
-
var
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
mergedMode = _useMergedState2[0],
|
|
171
|
-
setMode = _useMergedState2[1];
|
|
166
|
+
var _useControlledState = useControlledState(picker, mode),
|
|
167
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
168
|
+
mergedMode = _useControlledState2[0],
|
|
169
|
+
setMode = _useControlledState2[1];
|
|
172
170
|
|
|
173
171
|
/** Extends from `mergedMode` to patch `datetime` mode */
|
|
174
172
|
var internalMode = mergedMode === 'date' && showTime ? 'datetime' : mergedMode;
|
|
@@ -4,7 +4,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
4
4
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
5
|
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; } }
|
|
6
6
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
-
import { useEvent,
|
|
7
|
+
import { useEvent, useControlledState } from '@rc-component/util';
|
|
8
8
|
import raf from "@rc-component/util/es/raf";
|
|
9
9
|
import React from 'react';
|
|
10
10
|
|
|
@@ -13,12 +13,19 @@ import React from 'react';
|
|
|
13
13
|
* But will be `false` for a delay of effect.
|
|
14
14
|
*/
|
|
15
15
|
export default function useDelayState(value, defaultValue, onChange) {
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
var _useControlledState = useControlledState(defaultValue, value),
|
|
17
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
18
|
+
state = _useControlledState2[0],
|
|
19
|
+
setState = _useControlledState2[1];
|
|
20
|
+
|
|
21
|
+
// Need force update to ensure React re-render
|
|
22
|
+
var _React$useState = React.useState({}),
|
|
23
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
24
|
+
forceUpdate = _React$useState2[1];
|
|
25
|
+
var triggerUpdate = useEvent(function (nextState) {
|
|
26
|
+
setState(nextState);
|
|
27
|
+
forceUpdate({});
|
|
28
|
+
});
|
|
22
29
|
var nextValueRef = React.useRef(value);
|
|
23
30
|
|
|
24
31
|
// ============================= Update =============================
|
|
@@ -27,7 +34,7 @@ export default function useDelayState(value, defaultValue, onChange) {
|
|
|
27
34
|
raf.cancel(rafRef.current);
|
|
28
35
|
};
|
|
29
36
|
var doUpdate = useEvent(function () {
|
|
30
|
-
|
|
37
|
+
triggerUpdate(nextValueRef.current);
|
|
31
38
|
if (onChange && state !== nextValueRef.current) {
|
|
32
39
|
onChange(nextValueRef.current);
|
|
33
40
|
}
|
|
@@ -4,7 +4,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
4
4
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
5
|
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; } }
|
|
6
6
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
-
import {
|
|
7
|
+
import { useControlledState } from '@rc-component/util';
|
|
8
8
|
import useLayoutEffect from "@rc-component/util/es/hooks/useLayoutEffect";
|
|
9
9
|
import * as React from 'react';
|
|
10
10
|
import { fillTime, isSame } from "../../utils/dateUtil";
|
|
@@ -53,22 +53,18 @@ export default function useRangePickerValue(generateConfig, locale, calendarValu
|
|
|
53
53
|
endPickerValue = _pickerValue[1];
|
|
54
54
|
|
|
55
55
|
// PickerValue state
|
|
56
|
-
var
|
|
56
|
+
var _useControlledState = useControlledState(function () {
|
|
57
57
|
return getDefaultPickerValue(0);
|
|
58
|
-
},
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
setStartPickerValue = _useMergedState2[1];
|
|
64
|
-
var _useMergedState3 = useMergedState(function () {
|
|
58
|
+
}, startPickerValue),
|
|
59
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
60
|
+
mergedStartPickerValue = _useControlledState2[0],
|
|
61
|
+
setStartPickerValue = _useControlledState2[1];
|
|
62
|
+
var _useControlledState3 = useControlledState(function () {
|
|
65
63
|
return getDefaultPickerValue(1);
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
mergedEndPickerValue = _useMergedState4[0],
|
|
71
|
-
setEndPickerValue = _useMergedState4[1];
|
|
64
|
+
}, endPickerValue),
|
|
65
|
+
_useControlledState4 = _slicedToArray(_useControlledState3, 2),
|
|
66
|
+
mergedEndPickerValue = _useControlledState4[0],
|
|
67
|
+
setEndPickerValue = _useControlledState4[1];
|
|
72
68
|
|
|
73
69
|
// Current PickerValue
|
|
74
70
|
var currentPickerValue = React.useMemo(function () {
|
|
@@ -15,7 +15,7 @@ rangeValue: boolean,
|
|
|
15
15
|
* This should only used in SinglePicker with `multiple` mode.
|
|
16
16
|
* So when `rangeValue` is `true`, order will be ignored.
|
|
17
17
|
*/
|
|
18
|
-
order: boolean, defaultValue?: ValueType, value?: ValueType, onCalendarChange?: (dates: ValueType, dateStrings: ReplaceListType<Required<ValueType>, string>, info: BaseInfo) => void, onOk?: (dates: ValueType) => void): readonly [ValueType, (updater: ValueType | ((origin: ValueType) => ValueType)
|
|
18
|
+
order: boolean, defaultValue?: ValueType, value?: ValueType, onCalendarChange?: (dates: ValueType, dateStrings: ReplaceListType<Required<ValueType>, string>, info: BaseInfo) => void, onOk?: (dates: ValueType) => void): readonly [ValueType, (updater: ValueType | ((origin: ValueType) => ValueType)) => void, (useControlledValueFirst?: boolean) => ValueType, TriggerCalendarChange<ValueType>, () => void];
|
|
19
19
|
export default function useRangeValue<ValueType extends DateType[], DateType extends object = any>(info: Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'allowEmpty' | 'order' | 'picker'> & ReplacedPickerProps<DateType>, mergedValue: ValueType, setInnerValue: (nextValue: ValueType) => void, getCalendarValue: () => ValueType, triggerCalendarChange: TriggerCalendarChange<ValueType>, disabled: ReplaceListType<Required<ValueType>, boolean>, formatList: FormatType[], focused: boolean, open: boolean, isInvalidateDate: (date: DateType, info?: {
|
|
20
20
|
from?: DateType;
|
|
21
21
|
activeIndex: number;
|
|
@@ -8,7 +8,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
8
8
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
9
9
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
10
10
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
11
|
-
import { useEvent,
|
|
11
|
+
import { useEvent, useControlledState } from '@rc-component/util';
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import useSyncState from "../../hooks/useSyncState";
|
|
14
14
|
import { formatValue, isSame, isSameTimestamp } from "../../utils/dateUtil";
|
|
@@ -101,12 +101,10 @@ rangeValue,
|
|
|
101
101
|
*/
|
|
102
102
|
order, defaultValue, value, onCalendarChange, onOk) {
|
|
103
103
|
// This is the root value which will sync with controlled or uncontrolled value
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
innerValue = _useMergedState2[0],
|
|
109
|
-
setInnerValue = _useMergedState2[1];
|
|
104
|
+
var _useControlledState = useControlledState(defaultValue, value),
|
|
105
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
106
|
+
innerValue = _useControlledState2[0],
|
|
107
|
+
setInnerValue = _useControlledState2[1];
|
|
110
108
|
var mergedValue = innerValue || EMPTY_VALUE;
|
|
111
109
|
|
|
112
110
|
// ========================= Inner Values =========================
|
|
@@ -256,11 +254,12 @@ export default function useRangeValue(info, mergedValue, setInnerValue, getCalen
|
|
|
256
254
|
|
|
257
255
|
// Trigger `onChange` if needed
|
|
258
256
|
if (onChange && !isSameMergedDates) {
|
|
257
|
+
var everyEmpty = clone.every(function (val) {
|
|
258
|
+
return !val;
|
|
259
|
+
});
|
|
259
260
|
onChange(
|
|
260
261
|
// Return null directly if all date are empty
|
|
261
|
-
isNullValue && clone
|
|
262
|
-
return !val;
|
|
263
|
-
}) ? null : clone, getDateTexts(clone));
|
|
262
|
+
isNullValue && everyEmpty ? null : clone, everyEmpty ? null : getDateTexts(clone));
|
|
264
263
|
}
|
|
265
264
|
}
|
|
266
265
|
return allPassed;
|
package/es/PickerPanel/index.js
CHANGED
|
@@ -16,7 +16,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
16
16
|
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; } }
|
|
17
17
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
18
18
|
import classNames from 'classnames';
|
|
19
|
-
import { useEvent,
|
|
19
|
+
import { useEvent, useControlledState, warning } from '@rc-component/util';
|
|
20
20
|
import * as React from 'react';
|
|
21
21
|
import useLocale from "../hooks/useLocale";
|
|
22
22
|
import { fillShowTimeConfig, getTimeProps } from "../hooks/useTimeConfig";
|
|
@@ -117,15 +117,10 @@ function PickerPanel(props, ref) {
|
|
|
117
117
|
var now = generateConfig.getNow();
|
|
118
118
|
|
|
119
119
|
// ========================== Mode ==========================
|
|
120
|
-
var
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
}),
|
|
126
|
-
_useMergedState2 = _slicedToArray(_useMergedState, 2),
|
|
127
|
-
mergedMode = _useMergedState2[0],
|
|
128
|
-
setMergedMode = _useMergedState2[1];
|
|
120
|
+
var _useControlledState = useControlledState(picker || 'date', mode),
|
|
121
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
122
|
+
mergedMode = _useControlledState2[0],
|
|
123
|
+
setMergedMode = _useControlledState2[1];
|
|
129
124
|
var internalMode = mergedMode === 'date' && mergedShowTime ? 'datetime' : mergedMode;
|
|
130
125
|
|
|
131
126
|
// ========================= Toggle =========================
|
|
@@ -134,12 +129,10 @@ function PickerPanel(props, ref) {
|
|
|
134
129
|
// ========================= Value ==========================
|
|
135
130
|
// >>> Real value
|
|
136
131
|
// Interactive with `onChange` event which only trigger when the `mode` is `picker`
|
|
137
|
-
var
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
innerValue = _useMergedState4[0],
|
|
142
|
-
setMergedValue = _useMergedState4[1];
|
|
132
|
+
var _useControlledState3 = useControlledState(defaultValue, value),
|
|
133
|
+
_useControlledState4 = _slicedToArray(_useControlledState3, 2),
|
|
134
|
+
innerValue = _useControlledState4[0],
|
|
135
|
+
setMergedValue = _useControlledState4[1];
|
|
143
136
|
var mergedValue = React.useMemo(function () {
|
|
144
137
|
// Clean up `[null]`
|
|
145
138
|
var values = toArray(innerValue).filter(function (val) {
|
|
@@ -171,12 +164,10 @@ function PickerPanel(props, ref) {
|
|
|
171
164
|
|
|
172
165
|
// >>> PickerValue
|
|
173
166
|
// PickerValue is used to control the current displaying panel
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
mergedPickerValue = _useMergedState6[0],
|
|
179
|
-
setInternalPickerValue = _useMergedState6[1];
|
|
167
|
+
var _useControlledState5 = useControlledState(defaultPickerValue || mergedValue[0] || now, pickerValue),
|
|
168
|
+
_useControlledState6 = _slicedToArray(_useControlledState5, 2),
|
|
169
|
+
mergedPickerValue = _useControlledState6[0],
|
|
170
|
+
setInternalPickerValue = _useControlledState6[1];
|
|
180
171
|
React.useEffect(function () {
|
|
181
172
|
if (mergedValue[0] && !pickerValue) {
|
|
182
173
|
setInternalPickerValue(mergedValue[0]);
|
|
@@ -201,12 +201,10 @@ function RangePicker(props, ref) {
|
|
|
201
201
|
}, [showTime, activeIndex, calendarValue, activeIndexList]);
|
|
202
202
|
|
|
203
203
|
// ========================= Mode =========================
|
|
204
|
-
var
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
modes = _useMergedState2[0],
|
|
209
|
-
setModes = _useMergedState2[1];
|
|
204
|
+
var _useControlledState = (0, _util.useControlledState)([picker, picker], mode),
|
|
205
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
206
|
+
modes = _useControlledState2[0],
|
|
207
|
+
setModes = _useControlledState2[1];
|
|
210
208
|
var mergedMode = modes[activeIndex] || picker;
|
|
211
209
|
|
|
212
210
|
/** Extends from `mergedMode` to patch `datetime` mode */
|
|
@@ -171,12 +171,10 @@ function Picker(props, ref) {
|
|
|
171
171
|
};
|
|
172
172
|
|
|
173
173
|
// ========================= Mode =========================
|
|
174
|
-
var
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
mergedMode = _useMergedState2[0],
|
|
179
|
-
setMode = _useMergedState2[1];
|
|
174
|
+
var _useControlledState = (0, _util.useControlledState)(picker, mode),
|
|
175
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
176
|
+
mergedMode = _useControlledState2[0],
|
|
177
|
+
setMode = _useControlledState2[1];
|
|
180
178
|
|
|
181
179
|
/** Extends from `mergedMode` to patch `datetime` mode */
|
|
182
180
|
var internalMode = mergedMode === 'date' && showTime ? 'datetime' : mergedMode;
|
|
@@ -19,12 +19,19 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
19
19
|
* But will be `false` for a delay of effect.
|
|
20
20
|
*/
|
|
21
21
|
function useDelayState(value, defaultValue, onChange) {
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
var _useControlledState = (0, _util.useControlledState)(defaultValue, value),
|
|
23
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
24
|
+
state = _useControlledState2[0],
|
|
25
|
+
setState = _useControlledState2[1];
|
|
26
|
+
|
|
27
|
+
// Need force update to ensure React re-render
|
|
28
|
+
var _React$useState = _react.default.useState({}),
|
|
29
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
30
|
+
forceUpdate = _React$useState2[1];
|
|
31
|
+
var triggerUpdate = (0, _util.useEvent)(function (nextState) {
|
|
32
|
+
setState(nextState);
|
|
33
|
+
forceUpdate({});
|
|
34
|
+
});
|
|
28
35
|
var nextValueRef = _react.default.useRef(value);
|
|
29
36
|
|
|
30
37
|
// ============================= Update =============================
|
|
@@ -33,7 +40,7 @@ function useDelayState(value, defaultValue, onChange) {
|
|
|
33
40
|
_raf.default.cancel(rafRef.current);
|
|
34
41
|
};
|
|
35
42
|
var doUpdate = (0, _util.useEvent)(function () {
|
|
36
|
-
|
|
43
|
+
triggerUpdate(nextValueRef.current);
|
|
37
44
|
if (onChange && state !== nextValueRef.current) {
|
|
38
45
|
onChange(nextValueRef.current);
|
|
39
46
|
}
|
|
@@ -64,22 +64,18 @@ function useRangePickerValue(generateConfig, locale, calendarValue, modes, open,
|
|
|
64
64
|
endPickerValue = _pickerValue[1];
|
|
65
65
|
|
|
66
66
|
// PickerValue state
|
|
67
|
-
var
|
|
67
|
+
var _useControlledState = (0, _util.useControlledState)(function () {
|
|
68
68
|
return getDefaultPickerValue(0);
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
setStartPickerValue = _useMergedState2[1];
|
|
75
|
-
var _useMergedState3 = (0, _util.useMergedState)(function () {
|
|
69
|
+
}, startPickerValue),
|
|
70
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
71
|
+
mergedStartPickerValue = _useControlledState2[0],
|
|
72
|
+
setStartPickerValue = _useControlledState2[1];
|
|
73
|
+
var _useControlledState3 = (0, _util.useControlledState)(function () {
|
|
76
74
|
return getDefaultPickerValue(1);
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
mergedEndPickerValue = _useMergedState4[0],
|
|
82
|
-
setEndPickerValue = _useMergedState4[1];
|
|
75
|
+
}, endPickerValue),
|
|
76
|
+
_useControlledState4 = _slicedToArray(_useControlledState3, 2),
|
|
77
|
+
mergedEndPickerValue = _useControlledState4[0],
|
|
78
|
+
setEndPickerValue = _useControlledState4[1];
|
|
83
79
|
|
|
84
80
|
// Current PickerValue
|
|
85
81
|
var currentPickerValue = React.useMemo(function () {
|
|
@@ -15,7 +15,7 @@ rangeValue: boolean,
|
|
|
15
15
|
* This should only used in SinglePicker with `multiple` mode.
|
|
16
16
|
* So when `rangeValue` is `true`, order will be ignored.
|
|
17
17
|
*/
|
|
18
|
-
order: boolean, defaultValue?: ValueType, value?: ValueType, onCalendarChange?: (dates: ValueType, dateStrings: ReplaceListType<Required<ValueType>, string>, info: BaseInfo) => void, onOk?: (dates: ValueType) => void): readonly [ValueType, (updater: ValueType | ((origin: ValueType) => ValueType)
|
|
18
|
+
order: boolean, defaultValue?: ValueType, value?: ValueType, onCalendarChange?: (dates: ValueType, dateStrings: ReplaceListType<Required<ValueType>, string>, info: BaseInfo) => void, onOk?: (dates: ValueType) => void): readonly [ValueType, (updater: ValueType | ((origin: ValueType) => ValueType)) => void, (useControlledValueFirst?: boolean) => ValueType, TriggerCalendarChange<ValueType>, () => void];
|
|
19
19
|
export default function useRangeValue<ValueType extends DateType[], DateType extends object = any>(info: Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'allowEmpty' | 'order' | 'picker'> & ReplacedPickerProps<DateType>, mergedValue: ValueType, setInnerValue: (nextValue: ValueType) => void, getCalendarValue: () => ValueType, triggerCalendarChange: TriggerCalendarChange<ValueType>, disabled: ReplaceListType<Required<ValueType>, boolean>, formatList: FormatType[], focused: boolean, open: boolean, isInvalidateDate: (date: DateType, info?: {
|
|
20
20
|
from?: DateType;
|
|
21
21
|
activeIndex: number;
|
|
@@ -112,12 +112,10 @@ rangeValue,
|
|
|
112
112
|
*/
|
|
113
113
|
order, defaultValue, value, onCalendarChange, onOk) {
|
|
114
114
|
// This is the root value which will sync with controlled or uncontrolled value
|
|
115
|
-
var
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
innerValue = _useMergedState2[0],
|
|
120
|
-
setInnerValue = _useMergedState2[1];
|
|
115
|
+
var _useControlledState = (0, _util.useControlledState)(defaultValue, value),
|
|
116
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
117
|
+
innerValue = _useControlledState2[0],
|
|
118
|
+
setInnerValue = _useControlledState2[1];
|
|
121
119
|
var mergedValue = innerValue || EMPTY_VALUE;
|
|
122
120
|
|
|
123
121
|
// ========================= Inner Values =========================
|
|
@@ -267,11 +265,12 @@ function useRangeValue(info, mergedValue, setInnerValue, getCalendarValue, trigg
|
|
|
267
265
|
|
|
268
266
|
// Trigger `onChange` if needed
|
|
269
267
|
if (onChange && !isSameMergedDates) {
|
|
268
|
+
var everyEmpty = clone.every(function (val) {
|
|
269
|
+
return !val;
|
|
270
|
+
});
|
|
270
271
|
onChange(
|
|
271
272
|
// Return null directly if all date are empty
|
|
272
|
-
isNullValue && clone
|
|
273
|
-
return !val;
|
|
274
|
-
}) ? null : clone, getDateTexts(clone));
|
|
273
|
+
isNullValue && everyEmpty ? null : clone, everyEmpty ? null : getDateTexts(clone));
|
|
275
274
|
}
|
|
276
275
|
}
|
|
277
276
|
return allPassed;
|
package/lib/PickerPanel/index.js
CHANGED
|
@@ -126,15 +126,10 @@ function PickerPanel(props, ref) {
|
|
|
126
126
|
var now = generateConfig.getNow();
|
|
127
127
|
|
|
128
128
|
// ========================== Mode ==========================
|
|
129
|
-
var
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
}),
|
|
135
|
-
_useMergedState2 = _slicedToArray(_useMergedState, 2),
|
|
136
|
-
mergedMode = _useMergedState2[0],
|
|
137
|
-
setMergedMode = _useMergedState2[1];
|
|
129
|
+
var _useControlledState = (0, _util.useControlledState)(picker || 'date', mode),
|
|
130
|
+
_useControlledState2 = _slicedToArray(_useControlledState, 2),
|
|
131
|
+
mergedMode = _useControlledState2[0],
|
|
132
|
+
setMergedMode = _useControlledState2[1];
|
|
138
133
|
var internalMode = mergedMode === 'date' && mergedShowTime ? 'datetime' : mergedMode;
|
|
139
134
|
|
|
140
135
|
// ========================= Toggle =========================
|
|
@@ -143,12 +138,10 @@ function PickerPanel(props, ref) {
|
|
|
143
138
|
// ========================= Value ==========================
|
|
144
139
|
// >>> Real value
|
|
145
140
|
// Interactive with `onChange` event which only trigger when the `mode` is `picker`
|
|
146
|
-
var
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
innerValue = _useMergedState4[0],
|
|
151
|
-
setMergedValue = _useMergedState4[1];
|
|
141
|
+
var _useControlledState3 = (0, _util.useControlledState)(defaultValue, value),
|
|
142
|
+
_useControlledState4 = _slicedToArray(_useControlledState3, 2),
|
|
143
|
+
innerValue = _useControlledState4[0],
|
|
144
|
+
setMergedValue = _useControlledState4[1];
|
|
152
145
|
var mergedValue = React.useMemo(function () {
|
|
153
146
|
// Clean up `[null]`
|
|
154
147
|
var values = (0, _miscUtil.toArray)(innerValue).filter(function (val) {
|
|
@@ -180,12 +173,10 @@ function PickerPanel(props, ref) {
|
|
|
180
173
|
|
|
181
174
|
// >>> PickerValue
|
|
182
175
|
// PickerValue is used to control the current displaying panel
|
|
183
|
-
var
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
mergedPickerValue = _useMergedState6[0],
|
|
188
|
-
setInternalPickerValue = _useMergedState6[1];
|
|
176
|
+
var _useControlledState5 = (0, _util.useControlledState)(defaultPickerValue || mergedValue[0] || now, pickerValue),
|
|
177
|
+
_useControlledState6 = _slicedToArray(_useControlledState5, 2),
|
|
178
|
+
mergedPickerValue = _useControlledState6[0],
|
|
179
|
+
setInternalPickerValue = _useControlledState6[1];
|
|
189
180
|
React.useEffect(function () {
|
|
190
181
|
if (mergedValue[0] && !pickerValue) {
|
|
191
182
|
setInternalPickerValue(mergedValue[0]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-component/picker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "React date & time picker",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@rc-component/resize-observer": "^1.0.0",
|
|
43
43
|
"@rc-component/trigger": "^3.0.0",
|
|
44
|
-
"@rc-component/util": "^1.
|
|
44
|
+
"@rc-component/util": "^1.3.0",
|
|
45
45
|
"classnames": "^2.2.1",
|
|
46
46
|
"rc-overflow": "^1.3.2"
|
|
47
47
|
},
|