@rc-component/picker 1.3.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +3 -1
  2. package/es/PickerInput/RangePicker.js +15 -11
  3. package/es/PickerInput/Selector/hooks/useClearIcon.d.ts +1 -1
  4. package/es/PickerInput/SinglePicker.js +15 -11
  5. package/es/PickerInput/hooks/useDelayState.js +15 -8
  6. package/es/PickerInput/hooks/useFilledProps.d.ts +1 -1
  7. package/es/PickerInput/hooks/useFilledProps.js +3 -0
  8. package/es/PickerInput/hooks/useRangePickerValue.js +11 -15
  9. package/es/PickerInput/hooks/useRangeValue.d.ts +1 -1
  10. package/es/PickerInput/hooks/useRangeValue.js +5 -7
  11. package/es/PickerPanel/index.d.ts +1 -9
  12. package/es/PickerPanel/index.js +13 -22
  13. package/es/interface.d.ts +7 -0
  14. package/es/locale/te_IN.d.ts +3 -0
  15. package/es/locale/te_IN.js +33 -0
  16. package/es/utils/getClearIcon.d.ts +1 -1
  17. package/lib/PickerInput/RangePicker.js +14 -10
  18. package/lib/PickerInput/Selector/hooks/useClearIcon.d.ts +1 -1
  19. package/lib/PickerInput/SinglePicker.js +14 -10
  20. package/lib/PickerInput/hooks/useDelayState.js +14 -7
  21. package/lib/PickerInput/hooks/useFilledProps.d.ts +1 -1
  22. package/lib/PickerInput/hooks/useFilledProps.js +3 -0
  23. package/lib/PickerInput/hooks/useRangePickerValue.js +10 -14
  24. package/lib/PickerInput/hooks/useRangeValue.d.ts +1 -1
  25. package/lib/PickerInput/hooks/useRangeValue.js +4 -6
  26. package/lib/PickerPanel/index.d.ts +1 -9
  27. package/lib/PickerPanel/index.js +12 -21
  28. package/lib/interface.d.ts +7 -0
  29. package/lib/locale/te_IN.d.ts +3 -0
  30. package/lib/locale/te_IN.js +39 -0
  31. package/lib/utils/getClearIcon.d.ts +1 -1
  32. package/package.json +2 -2
package/README.md CHANGED
@@ -54,6 +54,7 @@ render(<Picker />, mountNode);
54
54
  | autoFocus | boolean | false | whether auto focus |
55
55
  | showTime | boolean \| Object | [showTime options](#showTime-options) | to provide an additional time selection |
56
56
  | picker | time \| date \| week \| month \| year | | control which kind of panel should be shown |
57
+ | previewValue | false \| hover | hover | When the user selects the date hover option, the value of the input field undergoes a temporary change |
57
58
  | format | String \| String[] | depends on whether you set timePicker and your locale | use to format/parse date(without time) value to/from input. When an array is provided, all values are used for parsing and first value for display |
58
59
  | use12Hours | boolean | false | 12 hours display mode |
59
60
  | value | moment | | current value like input's value |
@@ -102,7 +103,7 @@ render(<Picker />, mountNode);
102
103
  ### RangePicker
103
104
 
104
105
  | Property | Type | Default | Description |
105
- | --- | --- | --- | --- |
106
+ | --- | --- | --- | --- | --- |
106
107
  | prefixCls | String | rc-picker | prefixCls of this component |
107
108
  | className | String | '' | additional css class of root dom |
108
109
  | style | React.CSSProperties | | additional style of root dom node |
@@ -112,6 +113,7 @@ render(<Picker />, mountNode);
112
113
  | defaultPickerValue | moment | | Set default display picker view date |
113
114
  | separator | String | '~' | set separator between inputs |
114
115
  | picker | time \| date \| week \| month \| year | | control which kind of panel |
116
+ | previewValue | false \| hover | hover | When the user selects the date hover option, the value of the input field undergoes a temporary change |
115
117
  | placeholder | [String, String] | | placeholder of date input |
116
118
  | showTime | boolean \| Object | [showTime options](#showTime-options) | to provide an additional time selection |
117
119
  | showTime.defaultValue | [moment, moment] | | to set default time of selected date |
@@ -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, useMergedState } from '@rc-component/util';
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";
@@ -76,6 +76,7 @@ function RangePicker(props, ref) {
76
76
  rootClassName = filledProps.rootClassName,
77
77
  propStyles = filledProps.styles,
78
78
  propClassNames = filledProps.classNames,
79
+ previewValue = filledProps.previewValue,
79
80
  defaultValue = filledProps.defaultValue,
80
81
  value = filledProps.value,
81
82
  needConfirm = filledProps.needConfirm,
@@ -191,12 +192,10 @@ function RangePicker(props, ref) {
191
192
  }, [showTime, activeIndex, calendarValue, activeIndexList]);
192
193
 
193
194
  // ========================= Mode =========================
194
- var _useMergedState = useMergedState([picker, picker], {
195
- value: mode
196
- }),
197
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
198
- modes = _useMergedState2[0],
199
- setModes = _useMergedState2[1];
195
+ var _useControlledState = useControlledState([picker, picker], mode),
196
+ _useControlledState2 = _slicedToArray(_useControlledState, 2),
197
+ modes = _useControlledState2[0],
198
+ setModes = _useControlledState2[1];
200
199
  var mergedMode = modes[activeIndex] || picker;
201
200
 
202
201
  /** Extends from `mergedMode` to patch `datetime` mode */
@@ -340,12 +339,18 @@ function RangePicker(props, ref) {
340
339
  _React$useState6 = _slicedToArray(_React$useState5, 2),
341
340
  activeInfo = _React$useState6[0],
342
341
  setActiveInfo = _React$useState6[1];
342
+ var onSetHover = function onSetHover(date, source) {
343
+ if (previewValue !== 'hover') {
344
+ return;
345
+ }
346
+ setInternalHoverValues(date);
347
+ setHoverSource(source);
348
+ };
343
349
 
344
350
  // ======================= Presets ========================
345
351
  var presetList = usePresets(presets, ranges);
346
352
  var onPresetHover = function onPresetHover(nextValues) {
347
- setInternalHoverValues(nextValues);
348
- setHoverSource('preset');
353
+ onSetHover(nextValues, 'preset');
349
354
  };
350
355
  var onPresetSubmit = function onPresetSubmit(nextValues) {
351
356
  var passed = triggerSubmitChange(nextValues);
@@ -361,8 +366,7 @@ function RangePicker(props, ref) {
361
366
 
362
367
  // ======================== Panel =========================
363
368
  var onPanelHover = function onPanelHover(date) {
364
- setInternalHoverValues(date ? fillCalendarValue(date, activeIndex) : null);
365
- setHoverSource('cell');
369
+ onSetHover(date ? fillCalendarValue(date, activeIndex) : null, 'cell');
366
370
  };
367
371
 
368
372
  // >>> Focus
@@ -5,4 +5,4 @@ import * as React from 'react';
5
5
  */
6
6
  export declare function fillClearIcon(prefixCls: string, allowClear?: boolean | {
7
7
  clearIcon?: ReactNode;
8
- }, clearIcon?: ReactNode): string | number | true | React.JSX.Element | Iterable<ReactNode>;
8
+ }, clearIcon?: ReactNode): string | number | true | Iterable<ReactNode> | React.JSX.Element;
@@ -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, useMergedState } from '@rc-component/util';
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";
@@ -59,6 +59,7 @@ function Picker(props, ref) {
59
59
  rootClassName = _ref.rootClassName,
60
60
  propStyles = _ref.styles,
61
61
  propClassNames = _ref.classNames,
62
+ previewValue = _ref.previewValue,
62
63
  order = _ref.order,
63
64
  defaultValue = _ref.defaultValue,
64
65
  value = _ref.value,
@@ -162,12 +163,10 @@ function Picker(props, ref) {
162
163
  };
163
164
 
164
165
  // ========================= Mode =========================
165
- var _useMergedState = useMergedState(picker, {
166
- value: mode
167
- }),
168
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
169
- mergedMode = _useMergedState2[0],
170
- setMode = _useMergedState2[1];
166
+ var _useControlledState = useControlledState(picker, mode),
167
+ _useControlledState2 = _slicedToArray(_useControlledState, 2),
168
+ mergedMode = _useControlledState2[0],
169
+ setMode = _useControlledState2[1];
171
170
 
172
171
  /** Extends from `mergedMode` to patch `datetime` mode */
173
172
  var internalMode = mergedMode === 'date' && showTime ? 'datetime' : mergedMode;
@@ -289,6 +288,13 @@ function Picker(props, ref) {
289
288
  setInternalHoverValue(null);
290
289
  }
291
290
  }, [mergedOpen]);
291
+ var onSetHover = function onSetHover(date, source) {
292
+ if (previewValue !== 'hover') {
293
+ return;
294
+ }
295
+ setInternalHoverValue(date);
296
+ setHoverSource(source);
297
+ };
292
298
 
293
299
  // ========================================================
294
300
  // == Panels ==
@@ -296,8 +302,7 @@ function Picker(props, ref) {
296
302
  // ======================= Presets ========================
297
303
  var presetList = usePresets(presets);
298
304
  var onPresetHover = function onPresetHover(nextValue) {
299
- setInternalHoverValue(nextValue);
300
- setHoverSource('preset');
305
+ onSetHover(nextValue, 'preset');
301
306
  };
302
307
 
303
308
  // TODO: handle this
@@ -316,8 +321,7 @@ function Picker(props, ref) {
316
321
 
317
322
  // ======================== Panel =========================
318
323
  var onPanelHover = function onPanelHover(date) {
319
- setInternalHoverValue(date);
320
- setHoverSource('cell');
324
+ onSetHover(date, 'cell');
321
325
  };
322
326
 
323
327
  // >>> Focus
@@ -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, useMergedState } from '@rc-component/util';
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 _useMergedState = useMergedState(defaultValue, {
17
- value: value
18
- }),
19
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
20
- state = _useMergedState2[0],
21
- setState = _useMergedState2[1];
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
- setState(nextValueRef.current);
37
+ triggerUpdate(nextValueRef.current);
31
38
  if (onChange && state !== nextValueRef.current) {
32
39
  onChange(nextValueRef.current);
33
40
  }
@@ -2,7 +2,7 @@ import type { FormatType, InternalMode, PickerMode } from '../../interface';
2
2
  import type { RangePickerProps } from '../RangePicker';
3
3
  import useInvalidate from './useInvalidate';
4
4
  type UseInvalidate<DateType extends object = any> = typeof useInvalidate<DateType>;
5
- type PickedProps<DateType extends object = any> = Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'picker' | 'prefixCls' | 'styles' | 'classNames' | 'order' | 'components' | 'inputRender' | 'clearIcon' | 'allowClear' | 'needConfirm' | 'format' | 'inputReadOnly' | 'disabledDate' | 'minDate' | 'maxDate' | 'defaultOpenValue'> & {
5
+ type PickedProps<DateType extends object = any> = Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'picker' | 'prefixCls' | 'styles' | 'classNames' | 'order' | 'components' | 'inputRender' | 'clearIcon' | 'allowClear' | 'needConfirm' | 'format' | 'inputReadOnly' | 'disabledDate' | 'minDate' | 'maxDate' | 'defaultOpenValue' | 'previewValue'> & {
6
6
  multiple?: boolean;
7
7
  showTime?: any;
8
8
  value?: any;
@@ -45,6 +45,8 @@ export default function useFilledProps(props, updater) {
45
45
  picker = _props$picker === void 0 ? 'date' : _props$picker,
46
46
  _props$prefixCls = props.prefixCls,
47
47
  prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
48
+ _props$previewValue = props.previewValue,
49
+ previewValue = _props$previewValue === void 0 ? 'hover' : _props$previewValue,
48
50
  _props$styles = props.styles,
49
51
  styles = _props$styles === void 0 ? {} : _props$styles,
50
52
  _props$classNames = props.classNames,
@@ -110,6 +112,7 @@ export default function useFilledProps(props, updater) {
110
112
  // ======================== Props =========================
111
113
  var filledProps = React.useMemo(function () {
112
114
  return _objectSpread(_objectSpread({}, props), {}, {
115
+ previewValue: previewValue,
113
116
  prefixCls: prefixCls,
114
117
  locale: mergedLocale,
115
118
  picker: picker,
@@ -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 { useMergedState } from '@rc-component/util';
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 _useMergedState = useMergedState(function () {
56
+ var _useControlledState = useControlledState(function () {
57
57
  return getDefaultPickerValue(0);
58
- }, {
59
- value: startPickerValue
60
- }),
61
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
62
- mergedStartPickerValue = _useMergedState2[0],
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
- value: endPickerValue
68
- }),
69
- _useMergedState4 = _slicedToArray(_useMergedState3, 2),
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), ignoreDestroy?: boolean) => void, (useControlledValueFirst?: boolean) => ValueType, TriggerCalendarChange<ValueType>, () => void];
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, useMergedState } from '@rc-component/util';
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 _useMergedState = useMergedState(defaultValue, {
105
- value: value
106
- }),
107
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
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 =========================
@@ -52,13 +52,5 @@ export type PickerPanelProps<DateType extends object = any> = BasePickerPanelPro
52
52
  styles?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
53
53
  classNames?: Partial<Record<PanelSemanticName, string>>;
54
54
  };
55
- declare const _default: <DateType extends object = any>(props: BasePickerPanelProps<DateType> & {
56
- /** multiple selection. Not support time or datetime picker */
57
- multiple?: boolean;
58
- defaultValue?: DateType | DateType[];
59
- value?: DateType | DateType[];
60
- onChange?: (date: DateType | DateType[]) => void;
61
- styles?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
62
- classNames?: Partial<Record<PanelSemanticName, string>>;
63
- } & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
55
+ declare const _default: <DateType extends object = any>(props: PickerPanelProps<DateType> & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
64
56
  export default _default;
@@ -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, useMergedState, warning } from '@rc-component/util';
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 _useMergedState = useMergedState(picker, {
121
- value: mode,
122
- postState: function postState(val) {
123
- return val || 'date';
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 _useMergedState3 = useMergedState(defaultValue, {
138
- value: value
139
- }),
140
- _useMergedState4 = _slicedToArray(_useMergedState3, 2),
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 _useMergedState5 = useMergedState(defaultPickerValue || mergedValue[0] || now, {
175
- value: pickerValue
176
- }),
177
- _useMergedState6 = _slicedToArray(_useMergedState5, 2),
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]);
package/es/interface.d.ts CHANGED
@@ -207,6 +207,7 @@ export type SharedHTMLAttrs = Omit<React.InputHTMLAttributes<HTMLDivElement>, 'v
207
207
  export type PickerFocusEventHandler = (e: React.FocusEvent<HTMLElement>, info: BaseInfo) => void;
208
208
  export type LegacyOnKeyDown = (event: React.KeyboardEvent<HTMLElement>, preventDefault: VoidFunction) => void;
209
209
  export type SemanticName = 'root' | 'prefix' | 'input' | 'suffix';
210
+ export type PreviewValueType = 'hover';
210
211
  export type PanelSemanticName = 'root' | 'header' | 'body' | 'content' | 'item' | 'footer';
211
212
  export interface SharedPickerProps<DateType extends object = any> extends SharedHTMLAttrs, Pick<SharedPanelProps<DateType>, 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'> {
212
213
  direction?: 'ltr' | 'rtl';
@@ -281,6 +282,12 @@ export interface SharedPickerProps<DateType extends object = any> extends Shared
281
282
  * This is only used for strong a11y requirement which do not want modify after blur.
282
283
  */
283
284
  preserveInvalidOnBlur?: boolean;
285
+ /**
286
+ * When the user selects the date hover option, the value of the input field undergoes a temporary change.
287
+ * `false` will not preview value.
288
+ * `hover` will preview value when hover.
289
+ */
290
+ previewValue?: false | PreviewValueType;
284
291
  transitionName?: string;
285
292
  components?: Components<DateType>;
286
293
  /** @deprecated Please use `components.input` instead. */
@@ -0,0 +1,3 @@
1
+ import type { Locale } from '../interface';
2
+ declare const locale: Locale;
3
+ export default locale;
@@ -0,0 +1,33 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ 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); }
7
+ import { commonLocale } from "./common";
8
+ var locale = _objectSpread(_objectSpread({}, commonLocale), {}, {
9
+ locale: 'te_IN',
10
+ today: 'నేడు',
11
+ now: 'ఇప్పుడు',
12
+ backToToday: 'తిరిగి నేటికి',
13
+ ok: 'సరే',
14
+ clear: 'స్పష్టమైన',
15
+ week: 'వారం',
16
+ month: 'నెల',
17
+ year: 'సంవత్సరం',
18
+ timeSelect: 'సమయం ఎంపిక',
19
+ dateSelect: 'తేదీ ఎంపిక',
20
+ weekSelect: 'వారం ఎంపిక',
21
+ monthSelect: 'నెల ఎంపిక',
22
+ yearSelect: 'సంవత్సరం ఎంపిక',
23
+ decadeSelect: 'దశాబ్దం ఎంపిక',
24
+ previousMonth: 'మునుపటి నెల',
25
+ nextMonth: 'వచ్చే నెల',
26
+ previousYear: 'మునుపటి సంవత్సరం',
27
+ nextYear: 'తదుపరి సంవత్సరం',
28
+ previousDecade: 'మునుపటి దశాబ్దం',
29
+ nextDecade: 'తదుపరి దశాబ్దం',
30
+ previousCentury: 'మునుపటి శతాబ్దం',
31
+ nextCentury: 'తదుపరి శతాబ్దం'
32
+ });
33
+ export default locale;
@@ -2,4 +2,4 @@ import type { ReactNode } from "react";
2
2
  import React from "react";
3
3
  export declare function getClearIcon(prefixCls: string, allowClear?: boolean | {
4
4
  clearIcon?: ReactNode;
5
- }, clearIcon?: ReactNode): string | number | true | React.JSX.Element | Iterable<ReactNode>;
5
+ }, clearIcon?: ReactNode): string | number | true | Iterable<ReactNode> | React.JSX.Element;
@@ -85,6 +85,7 @@ function RangePicker(props, ref) {
85
85
  rootClassName = filledProps.rootClassName,
86
86
  propStyles = filledProps.styles,
87
87
  propClassNames = filledProps.classNames,
88
+ previewValue = filledProps.previewValue,
88
89
  defaultValue = filledProps.defaultValue,
89
90
  value = filledProps.value,
90
91
  needConfirm = filledProps.needConfirm,
@@ -200,12 +201,10 @@ function RangePicker(props, ref) {
200
201
  }, [showTime, activeIndex, calendarValue, activeIndexList]);
201
202
 
202
203
  // ========================= Mode =========================
203
- var _useMergedState = (0, _util.useMergedState)([picker, picker], {
204
- value: mode
205
- }),
206
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
207
- modes = _useMergedState2[0],
208
- 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];
209
208
  var mergedMode = modes[activeIndex] || picker;
210
209
 
211
210
  /** Extends from `mergedMode` to patch `datetime` mode */
@@ -349,12 +348,18 @@ function RangePicker(props, ref) {
349
348
  _React$useState6 = _slicedToArray(_React$useState5, 2),
350
349
  activeInfo = _React$useState6[0],
351
350
  setActiveInfo = _React$useState6[1];
351
+ var onSetHover = function onSetHover(date, source) {
352
+ if (previewValue !== 'hover') {
353
+ return;
354
+ }
355
+ setInternalHoverValues(date);
356
+ setHoverSource(source);
357
+ };
352
358
 
353
359
  // ======================= Presets ========================
354
360
  var presetList = (0, _usePresets.default)(presets, ranges);
355
361
  var onPresetHover = function onPresetHover(nextValues) {
356
- setInternalHoverValues(nextValues);
357
- setHoverSource('preset');
362
+ onSetHover(nextValues, 'preset');
358
363
  };
359
364
  var onPresetSubmit = function onPresetSubmit(nextValues) {
360
365
  var passed = triggerSubmitChange(nextValues);
@@ -370,8 +375,7 @@ function RangePicker(props, ref) {
370
375
 
371
376
  // ======================== Panel =========================
372
377
  var onPanelHover = function onPanelHover(date) {
373
- setInternalHoverValues(date ? fillCalendarValue(date, activeIndex) : null);
374
- setHoverSource('cell');
378
+ onSetHover(date ? fillCalendarValue(date, activeIndex) : null, 'cell');
375
379
  };
376
380
 
377
381
  // >>> Focus
@@ -5,4 +5,4 @@ import * as React from 'react';
5
5
  */
6
6
  export declare function fillClearIcon(prefixCls: string, allowClear?: boolean | {
7
7
  clearIcon?: ReactNode;
8
- }, clearIcon?: ReactNode): string | number | true | React.JSX.Element | Iterable<ReactNode>;
8
+ }, clearIcon?: ReactNode): string | number | true | Iterable<ReactNode> | React.JSX.Element;
@@ -67,6 +67,7 @@ function Picker(props, ref) {
67
67
  rootClassName = _ref.rootClassName,
68
68
  propStyles = _ref.styles,
69
69
  propClassNames = _ref.classNames,
70
+ previewValue = _ref.previewValue,
70
71
  order = _ref.order,
71
72
  defaultValue = _ref.defaultValue,
72
73
  value = _ref.value,
@@ -170,12 +171,10 @@ function Picker(props, ref) {
170
171
  };
171
172
 
172
173
  // ========================= Mode =========================
173
- var _useMergedState = (0, _util.useMergedState)(picker, {
174
- value: mode
175
- }),
176
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
177
- mergedMode = _useMergedState2[0],
178
- setMode = _useMergedState2[1];
174
+ var _useControlledState = (0, _util.useControlledState)(picker, mode),
175
+ _useControlledState2 = _slicedToArray(_useControlledState, 2),
176
+ mergedMode = _useControlledState2[0],
177
+ setMode = _useControlledState2[1];
179
178
 
180
179
  /** Extends from `mergedMode` to patch `datetime` mode */
181
180
  var internalMode = mergedMode === 'date' && showTime ? 'datetime' : mergedMode;
@@ -297,6 +296,13 @@ function Picker(props, ref) {
297
296
  setInternalHoverValue(null);
298
297
  }
299
298
  }, [mergedOpen]);
299
+ var onSetHover = function onSetHover(date, source) {
300
+ if (previewValue !== 'hover') {
301
+ return;
302
+ }
303
+ setInternalHoverValue(date);
304
+ setHoverSource(source);
305
+ };
300
306
 
301
307
  // ========================================================
302
308
  // == Panels ==
@@ -304,8 +310,7 @@ function Picker(props, ref) {
304
310
  // ======================= Presets ========================
305
311
  var presetList = (0, _usePresets.default)(presets);
306
312
  var onPresetHover = function onPresetHover(nextValue) {
307
- setInternalHoverValue(nextValue);
308
- setHoverSource('preset');
313
+ onSetHover(nextValue, 'preset');
309
314
  };
310
315
 
311
316
  // TODO: handle this
@@ -324,8 +329,7 @@ function Picker(props, ref) {
324
329
 
325
330
  // ======================== Panel =========================
326
331
  var onPanelHover = function onPanelHover(date) {
327
- setInternalHoverValue(date);
328
- setHoverSource('cell');
332
+ onSetHover(date, 'cell');
329
333
  };
330
334
 
331
335
  // >>> Focus
@@ -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 _useMergedState = (0, _util.useMergedState)(defaultValue, {
23
- value: value
24
- }),
25
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
26
- state = _useMergedState2[0],
27
- setState = _useMergedState2[1];
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
- setState(nextValueRef.current);
43
+ triggerUpdate(nextValueRef.current);
37
44
  if (onChange && state !== nextValueRef.current) {
38
45
  onChange(nextValueRef.current);
39
46
  }
@@ -2,7 +2,7 @@ import type { FormatType, InternalMode, PickerMode } from '../../interface';
2
2
  import type { RangePickerProps } from '../RangePicker';
3
3
  import useInvalidate from './useInvalidate';
4
4
  type UseInvalidate<DateType extends object = any> = typeof useInvalidate<DateType>;
5
- type PickedProps<DateType extends object = any> = Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'picker' | 'prefixCls' | 'styles' | 'classNames' | 'order' | 'components' | 'inputRender' | 'clearIcon' | 'allowClear' | 'needConfirm' | 'format' | 'inputReadOnly' | 'disabledDate' | 'minDate' | 'maxDate' | 'defaultOpenValue'> & {
5
+ type PickedProps<DateType extends object = any> = Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'picker' | 'prefixCls' | 'styles' | 'classNames' | 'order' | 'components' | 'inputRender' | 'clearIcon' | 'allowClear' | 'needConfirm' | 'format' | 'inputReadOnly' | 'disabledDate' | 'minDate' | 'maxDate' | 'defaultOpenValue' | 'previewValue'> & {
6
6
  multiple?: boolean;
7
7
  showTime?: any;
8
8
  value?: any;
@@ -54,6 +54,8 @@ function useFilledProps(props, updater) {
54
54
  picker = _props$picker === void 0 ? 'date' : _props$picker,
55
55
  _props$prefixCls = props.prefixCls,
56
56
  prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
57
+ _props$previewValue = props.previewValue,
58
+ previewValue = _props$previewValue === void 0 ? 'hover' : _props$previewValue,
57
59
  _props$styles = props.styles,
58
60
  styles = _props$styles === void 0 ? {} : _props$styles,
59
61
  _props$classNames = props.classNames,
@@ -119,6 +121,7 @@ function useFilledProps(props, updater) {
119
121
  // ======================== Props =========================
120
122
  var filledProps = React.useMemo(function () {
121
123
  return _objectSpread(_objectSpread({}, props), {}, {
124
+ previewValue: previewValue,
122
125
  prefixCls: prefixCls,
123
126
  locale: mergedLocale,
124
127
  picker: picker,
@@ -64,22 +64,18 @@ function useRangePickerValue(generateConfig, locale, calendarValue, modes, open,
64
64
  endPickerValue = _pickerValue[1];
65
65
 
66
66
  // PickerValue state
67
- var _useMergedState = (0, _util.useMergedState)(function () {
67
+ var _useControlledState = (0, _util.useControlledState)(function () {
68
68
  return getDefaultPickerValue(0);
69
- }, {
70
- value: startPickerValue
71
- }),
72
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
73
- mergedStartPickerValue = _useMergedState2[0],
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
- value: endPickerValue
79
- }),
80
- _useMergedState4 = _slicedToArray(_useMergedState3, 2),
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), ignoreDestroy?: boolean) => void, (useControlledValueFirst?: boolean) => ValueType, TriggerCalendarChange<ValueType>, () => void];
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 _useMergedState = (0, _util.useMergedState)(defaultValue, {
116
- value: value
117
- }),
118
- _useMergedState2 = _slicedToArray(_useMergedState, 2),
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 =========================
@@ -52,13 +52,5 @@ export type PickerPanelProps<DateType extends object = any> = BasePickerPanelPro
52
52
  styles?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
53
53
  classNames?: Partial<Record<PanelSemanticName, string>>;
54
54
  };
55
- declare const _default: <DateType extends object = any>(props: BasePickerPanelProps<DateType> & {
56
- /** multiple selection. Not support time or datetime picker */
57
- multiple?: boolean;
58
- defaultValue?: DateType | DateType[];
59
- value?: DateType | DateType[];
60
- onChange?: (date: DateType | DateType[]) => void;
61
- styles?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
62
- classNames?: Partial<Record<PanelSemanticName, string>>;
63
- } & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
55
+ declare const _default: <DateType extends object = any>(props: PickerPanelProps<DateType> & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
64
56
  export default _default;
@@ -126,15 +126,10 @@ function PickerPanel(props, ref) {
126
126
  var now = generateConfig.getNow();
127
127
 
128
128
  // ========================== Mode ==========================
129
- var _useMergedState = (0, _util.useMergedState)(picker, {
130
- value: mode,
131
- postState: function postState(val) {
132
- return val || 'date';
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 _useMergedState3 = (0, _util.useMergedState)(defaultValue, {
147
- value: value
148
- }),
149
- _useMergedState4 = _slicedToArray(_useMergedState3, 2),
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 _useMergedState5 = (0, _util.useMergedState)(defaultPickerValue || mergedValue[0] || now, {
184
- value: pickerValue
185
- }),
186
- _useMergedState6 = _slicedToArray(_useMergedState5, 2),
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]);
@@ -207,6 +207,7 @@ export type SharedHTMLAttrs = Omit<React.InputHTMLAttributes<HTMLDivElement>, 'v
207
207
  export type PickerFocusEventHandler = (e: React.FocusEvent<HTMLElement>, info: BaseInfo) => void;
208
208
  export type LegacyOnKeyDown = (event: React.KeyboardEvent<HTMLElement>, preventDefault: VoidFunction) => void;
209
209
  export type SemanticName = 'root' | 'prefix' | 'input' | 'suffix';
210
+ export type PreviewValueType = 'hover';
210
211
  export type PanelSemanticName = 'root' | 'header' | 'body' | 'content' | 'item' | 'footer';
211
212
  export interface SharedPickerProps<DateType extends object = any> extends SharedHTMLAttrs, Pick<SharedPanelProps<DateType>, 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'> {
212
213
  direction?: 'ltr' | 'rtl';
@@ -281,6 +282,12 @@ export interface SharedPickerProps<DateType extends object = any> extends Shared
281
282
  * This is only used for strong a11y requirement which do not want modify after blur.
282
283
  */
283
284
  preserveInvalidOnBlur?: boolean;
285
+ /**
286
+ * When the user selects the date hover option, the value of the input field undergoes a temporary change.
287
+ * `false` will not preview value.
288
+ * `hover` will preview value when hover.
289
+ */
290
+ previewValue?: false | PreviewValueType;
284
291
  transitionName?: string;
285
292
  components?: Components<DateType>;
286
293
  /** @deprecated Please use `components.input` instead. */
@@ -0,0 +1,3 @@
1
+ import type { Locale } from '../interface';
2
+ declare const locale: Locale;
3
+ export default locale;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _common = require("./common");
8
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
9
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
13
+ 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); }
14
+ var locale = _objectSpread(_objectSpread({}, _common.commonLocale), {}, {
15
+ locale: 'te_IN',
16
+ today: 'నేడు',
17
+ now: 'ఇప్పుడు',
18
+ backToToday: 'తిరిగి నేటికి',
19
+ ok: 'సరే',
20
+ clear: 'స్పష్టమైన',
21
+ week: 'వారం',
22
+ month: 'నెల',
23
+ year: 'సంవత్సరం',
24
+ timeSelect: 'సమయం ఎంపిక',
25
+ dateSelect: 'తేదీ ఎంపిక',
26
+ weekSelect: 'వారం ఎంపిక',
27
+ monthSelect: 'నెల ఎంపిక',
28
+ yearSelect: 'సంవత్సరం ఎంపిక',
29
+ decadeSelect: 'దశాబ్దం ఎంపిక',
30
+ previousMonth: 'మునుపటి నెల',
31
+ nextMonth: 'వచ్చే నెల',
32
+ previousYear: 'మునుపటి సంవత్సరం',
33
+ nextYear: 'తదుపరి సంవత్సరం',
34
+ previousDecade: 'మునుపటి దశాబ్దం',
35
+ nextDecade: 'తదుపరి దశాబ్దం',
36
+ previousCentury: 'మునుపటి శతాబ్దం',
37
+ nextCentury: 'తదుపరి శతాబ్దం'
38
+ });
39
+ var _default = exports.default = locale;
@@ -2,4 +2,4 @@ import type { ReactNode } from "react";
2
2
  import React from "react";
3
3
  export declare function getClearIcon(prefixCls: string, allowClear?: boolean | {
4
4
  clearIcon?: ReactNode;
5
- }, clearIcon?: ReactNode): string | number | true | React.JSX.Element | Iterable<ReactNode>;
5
+ }, clearIcon?: ReactNode): string | number | true | Iterable<ReactNode> | React.JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/picker",
3
- "version": "1.3.0",
3
+ "version": "1.4.1",
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.2.1",
44
+ "@rc-component/util": "^1.3.0",
45
45
  "classnames": "^2.2.1",
46
46
  "rc-overflow": "^1.3.2"
47
47
  },