@rc-component/picker 1.2.4 → 1.4.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.
Files changed (48) hide show
  1. package/README.md +3 -1
  2. package/es/PickerInput/Popup/Footer.js +7 -4
  3. package/es/PickerInput/RangePicker.js +31 -12
  4. package/es/PickerInput/Selector/Icon.js +4 -4
  5. package/es/PickerInput/Selector/Input.js +6 -5
  6. package/es/PickerInput/Selector/RangeSelector.js +5 -5
  7. package/es/PickerInput/Selector/SingleSelector/index.js +5 -5
  8. package/es/PickerInput/SinglePicker.js +31 -12
  9. package/es/PickerInput/context.d.ts +4 -3
  10. package/es/PickerInput/hooks/useFilledProps.d.ts +1 -1
  11. package/es/PickerInput/hooks/useFilledProps.js +3 -0
  12. package/es/PickerPanel/PanelBody.js +10 -10
  13. package/es/PickerPanel/PanelHeader.js +9 -6
  14. package/es/PickerPanel/TimePanel/TimePanelBody/TimeColumn.js +7 -8
  15. package/es/PickerPanel/TimePanel/TimePanelBody/index.js +6 -6
  16. package/es/PickerPanel/context.d.ts +9 -3
  17. package/es/PickerPanel/context.js +10 -0
  18. package/es/PickerPanel/index.d.ts +2 -11
  19. package/es/PickerPanel/index.js +14 -9
  20. package/es/hooks/useSemantic.d.ts +13 -0
  21. package/es/hooks/useSemantic.js +21 -0
  22. package/es/interface.d.ts +16 -3
  23. package/es/locale/te_IN.d.ts +3 -0
  24. package/es/locale/te_IN.js +33 -0
  25. package/lib/PickerInput/Popup/Footer.js +5 -2
  26. package/lib/PickerInput/RangePicker.js +31 -12
  27. package/lib/PickerInput/Selector/Icon.js +3 -3
  28. package/lib/PickerInput/Selector/Input.js +5 -4
  29. package/lib/PickerInput/Selector/RangeSelector.js +3 -3
  30. package/lib/PickerInput/Selector/SingleSelector/index.js +3 -3
  31. package/lib/PickerInput/SinglePicker.js +31 -12
  32. package/lib/PickerInput/context.d.ts +4 -3
  33. package/lib/PickerInput/hooks/useFilledProps.d.ts +1 -1
  34. package/lib/PickerInput/hooks/useFilledProps.js +3 -0
  35. package/lib/PickerPanel/PanelBody.js +9 -9
  36. package/lib/PickerPanel/PanelHeader.js +4 -1
  37. package/lib/PickerPanel/TimePanel/TimePanelBody/TimeColumn.js +5 -6
  38. package/lib/PickerPanel/TimePanel/TimePanelBody/index.js +5 -5
  39. package/lib/PickerPanel/context.d.ts +9 -3
  40. package/lib/PickerPanel/context.js +11 -1
  41. package/lib/PickerPanel/index.d.ts +2 -11
  42. package/lib/PickerPanel/index.js +13 -8
  43. package/lib/hooks/useSemantic.d.ts +13 -0
  44. package/lib/hooks/useSemantic.js +27 -0
  45. package/lib/interface.d.ts +16 -3
  46. package/lib/locale/te_IN.d.ts +3 -0
  47. package/lib/locale/te_IN.js +39 -0
  48. package/package.json +1 -1
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _util = require("@rc-component/util");
9
+ var _classnames = _interopRequireDefault(require("classnames"));
9
10
  var _useLayoutEffect = _interopRequireDefault(require("@rc-component/util/lib/hooks/useLayoutEffect"));
10
11
  var _omit = _interopRequireDefault(require("@rc-component/util/lib/omit"));
11
12
  var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs"));
@@ -27,6 +28,7 @@ var _useRangeValue3 = _interopRequireWildcard(require("./hooks/useRangeValue"));
27
28
  var _useShowNow = _interopRequireDefault(require("./hooks/useShowNow"));
28
29
  var _Popup = _interopRequireDefault(require("./Popup"));
29
30
  var _SingleSelector = _interopRequireDefault(require("./Selector/SingleSelector"));
31
+ var _useSemantic3 = _interopRequireDefault(require("../hooks/useSemantic"));
30
32
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
31
33
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -62,8 +64,10 @@ function Picker(props, ref) {
62
64
  isInvalidateDate = _useFilledProps2[5];
63
65
  var _ref = filledProps,
64
66
  prefixCls = _ref.prefixCls,
65
- styles = _ref.styles,
66
- classNames = _ref.classNames,
67
+ rootClassName = _ref.rootClassName,
68
+ propStyles = _ref.styles,
69
+ propClassNames = _ref.classNames,
70
+ previewValue = _ref.previewValue,
67
71
  order = _ref.order,
68
72
  defaultValue = _ref.defaultValue,
69
73
  value = _ref.value,
@@ -115,6 +119,12 @@ function Picker(props, ref) {
115
119
  }
116
120
  var toggleDates = (0, _useToggleDates.default)(generateConfig, locale, internalPicker);
117
121
 
122
+ // ======================= Semantic =======================
123
+ var _useSemantic = (0, _useSemantic3.default)(propClassNames, propStyles),
124
+ _useSemantic2 = _slicedToArray(_useSemantic, 2),
125
+ mergedClassNames = _useSemantic2[0],
126
+ mergedStyles = _useSemantic2[1];
127
+
118
128
  // ========================= Open =========================
119
129
  var _useOpen = (0, _useOpen3.default)(open, defaultOpen, [disabled], onOpenChange),
120
130
  _useOpen2 = _slicedToArray(_useOpen, 2),
@@ -288,6 +298,13 @@ function Picker(props, ref) {
288
298
  setInternalHoverValue(null);
289
299
  }
290
300
  }, [mergedOpen]);
301
+ var onSetHover = function onSetHover(date, source) {
302
+ if (previewValue !== 'hover') {
303
+ return;
304
+ }
305
+ setInternalHoverValue(date);
306
+ setHoverSource(source);
307
+ };
291
308
 
292
309
  // ========================================================
293
310
  // == Panels ==
@@ -295,8 +312,7 @@ function Picker(props, ref) {
295
312
  // ======================= Presets ========================
296
313
  var presetList = (0, _usePresets.default)(presets);
297
314
  var onPresetHover = function onPresetHover(nextValue) {
298
- setInternalHoverValue(nextValue);
299
- setHoverSource('preset');
315
+ onSetHover(nextValue, 'preset');
300
316
  };
301
317
 
302
318
  // TODO: handle this
@@ -315,8 +331,7 @@ function Picker(props, ref) {
315
331
 
316
332
  // ======================== Panel =========================
317
333
  var onPanelHover = function onPanelHover(date) {
318
- setInternalHoverValue(date);
319
- setHoverSource('cell');
334
+ onSetHover(date, 'cell');
320
335
  };
321
336
 
322
337
  // >>> Focus
@@ -358,7 +373,7 @@ function Picker(props, ref) {
358
373
 
359
374
  var panelProps = React.useMemo(function () {
360
375
  var domProps = (0, _pickAttrs.default)(filledProps, false);
361
- var restProps = (0, _omit.default)(filledProps, [].concat(_toConsumableArray(Object.keys(domProps)), ['onChange', 'onCalendarChange', 'style', 'className', 'onPanelChange']));
376
+ var restProps = (0, _omit.default)(filledProps, [].concat(_toConsumableArray(Object.keys(domProps)), ['onChange', 'onCalendarChange', 'style', 'className', 'onPanelChange', 'classNames', 'styles']));
362
377
  return _objectSpread(_objectSpread({}, restProps), {}, {
363
378
  multiple: filledProps.multiple
364
379
  });
@@ -455,10 +470,10 @@ function Picker(props, ref) {
455
470
  generateConfig: generateConfig,
456
471
  button: components.button,
457
472
  input: components.input,
458
- styles: styles,
459
- classNames: classNames
473
+ classNames: mergedClassNames,
474
+ styles: mergedStyles
460
475
  };
461
- }, [prefixCls, locale, generateConfig, components.button, components.input, styles, classNames]);
476
+ }, [prefixCls, locale, generateConfig, components.button, components.input, mergedClassNames, mergedStyles]);
462
477
 
463
478
  // ======================== Effect ========================
464
479
  // >>> Mode
@@ -491,8 +506,8 @@ function Picker(props, ref) {
491
506
  value: context
492
507
  }, /*#__PURE__*/React.createElement(_PickerTrigger.default, _extends({}, (0, _util2.pickTriggerProps)(filledProps), {
493
508
  popupElement: panel,
494
- popupStyle: styles.popup,
495
- popupClassName: classNames.popup
509
+ popupStyle: mergedStyles.popup.root,
510
+ popupClassName: (0, _classnames.default)(rootClassName, mergedClassNames.popup.root)
496
511
  // Visible
497
512
  ,
498
513
  visible: mergedOpen,
@@ -502,6 +517,10 @@ function Picker(props, ref) {
502
517
  , _extends({}, filledProps, {
503
518
  // Ref
504
519
  ref: selectorRef
520
+ // Style
521
+ ,
522
+ className: (0, _classnames.default)(filledProps.className, rootClassName, mergedClassNames.root),
523
+ style: _objectSpread(_objectSpread({}, mergedStyles.root), filledProps.style)
505
524
  // Icon
506
525
  ,
507
526
  suffixIcon: suffixIcon,
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { GenerateConfig } from '../generate';
3
- import type { Components, Locale, SemanticStructure } from '../interface';
3
+ import type { Components, Locale } from '../interface';
4
+ import type { FilledClassNames, FilledStyles } from '../hooks/useSemantic';
4
5
  export interface PickerContextProps<DateType = any> {
5
6
  prefixCls: string;
6
7
  locale: Locale;
@@ -8,8 +9,8 @@ export interface PickerContextProps<DateType = any> {
8
9
  /** Customize button component */
9
10
  button?: Components['button'];
10
11
  input?: Components['input'];
11
- styles?: Partial<Record<SemanticStructure, React.CSSProperties>>;
12
- classNames?: Partial<Record<SemanticStructure, string>>;
12
+ classNames: FilledClassNames;
13
+ styles: FilledStyles;
13
14
  }
14
15
  declare const PickerContext: React.Context<PickerContextProps<any>>;
15
16
  export default PickerContext;
@@ -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,
@@ -39,6 +39,8 @@ function PanelBody(props) {
39
39
  disabledDate = props.disabledDate;
40
40
  var _usePanelContext = (0, _context.usePanelContext)(),
41
41
  prefixCls = _usePanelContext.prefixCls,
42
+ classNames = _usePanelContext.classNames,
43
+ styles = _usePanelContext.styles,
42
44
  type = _usePanelContext.panelType,
43
45
  now = _usePanelContext.now,
44
46
  contextDisabledDate = _usePanelContext.disabledDate,
@@ -55,9 +57,7 @@ function PanelBody(props) {
55
57
 
56
58
  // ============================= Context ==============================
57
59
  var _React$useContext = React.useContext(_context.PickerHackContext),
58
- onCellDblClick = _React$useContext.onCellDblClick,
59
- pickerClassNames = _React$useContext.classNames,
60
- styles = _React$useContext.styles;
60
+ onCellDblClick = _React$useContext.onCellDblClick;
61
61
 
62
62
  // ============================== Value ===============================
63
63
  var matchValues = function matchValues(date) {
@@ -113,12 +113,12 @@ function PanelBody(props) {
113
113
  rowNode.push( /*#__PURE__*/React.createElement("td", {
114
114
  key: col,
115
115
  title: title,
116
- className: (0, _classnames.default)(cellPrefixCls, pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.popupItem, _objectSpread(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(cellPrefixCls, "-disabled"), disabled), "".concat(cellPrefixCls, "-hover"), (hoverValue || []).some(function (date) {
116
+ className: (0, _classnames.default)(cellPrefixCls, classNames.item, _objectSpread(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(cellPrefixCls, "-disabled"), disabled), "".concat(cellPrefixCls, "-hover"), (hoverValue || []).some(function (date) {
117
117
  return (0, _dateUtil.isSame)(generateConfig, locale, currentDate, date, type);
118
118
  })), "".concat(cellPrefixCls, "-in-range"), inRange && !rangeStart && !rangeEnd), "".concat(cellPrefixCls, "-range-start"), rangeStart), "".concat(cellPrefixCls, "-range-end"), rangeEnd), "".concat(prefixCls, "-cell-selected"), !hoverRangeValue &&
119
119
  // WeekPicker use row instead
120
120
  type !== 'week' && matchValues(currentDate)), getCellClassName(currentDate))),
121
- style: styles === null || styles === void 0 ? void 0 : styles.popupItem,
121
+ style: styles.item,
122
122
  onClick: function onClick() {
123
123
  if (!disabled) {
124
124
  onSelect(currentDate);
@@ -158,10 +158,10 @@ function PanelBody(props) {
158
158
 
159
159
  // ============================== Render ==============================
160
160
  return /*#__PURE__*/React.createElement("div", {
161
- className: (0, _classnames.default)("".concat(prefixCls, "-body"), pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.popupBody),
162
- style: styles === null || styles === void 0 ? void 0 : styles.popupBody
161
+ className: (0, _classnames.default)("".concat(prefixCls, "-body"), classNames.body),
162
+ style: styles.body
163
163
  }, /*#__PURE__*/React.createElement("table", {
164
- className: (0, _classnames.default)("".concat(prefixCls, "-content"), pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.popupContent),
165
- style: styles === null || styles === void 0 ? void 0 : styles.popupContent
164
+ className: (0, _classnames.default)("".concat(prefixCls, "-content"), classNames.content),
165
+ style: styles.content
166
166
  }, headerCells && /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, headerCells)), /*#__PURE__*/React.createElement("tbody", null, rows)));
167
167
  }
@@ -24,6 +24,8 @@ function PanelHeader(props) {
24
24
  children = props.children;
25
25
  var _usePanelContext = (0, _context.usePanelContext)(),
26
26
  prefixCls = _usePanelContext.prefixCls,
27
+ classNames = _usePanelContext.classNames,
28
+ styles = _usePanelContext.styles,
27
29
  _usePanelContext$prev = _usePanelContext.prevIcon,
28
30
  prevIcon = _usePanelContext$prev === void 0 ? "\u2039" : _usePanelContext$prev,
29
31
  _usePanelContext$next = _usePanelContext.nextIcon,
@@ -95,7 +97,8 @@ function PanelHeader(props) {
95
97
  var superPrevBtnCls = "".concat(headerPrefixCls, "-super-prev-btn");
96
98
  var superNextBtnCls = "".concat(headerPrefixCls, "-super-next-btn");
97
99
  return /*#__PURE__*/React.createElement("div", {
98
- className: headerPrefixCls
100
+ className: (0, _classnames.default)(headerPrefixCls, classNames.header),
101
+ style: styles.header
99
102
  }, superOffset && /*#__PURE__*/React.createElement("button", {
100
103
  type: "button",
101
104
  "aria-label": locale.previousYear,
@@ -49,10 +49,9 @@ function TimeColumn(props) {
49
49
  prefixCls = _usePanelContext.prefixCls,
50
50
  cellRender = _usePanelContext.cellRender,
51
51
  now = _usePanelContext.now,
52
- locale = _usePanelContext.locale;
53
- var _React$useContext = React.useContext(_context.PickerHackContext),
54
- pickerClassNames = _React$useContext.classNames,
55
- styles = _React$useContext.styles;
52
+ locale = _usePanelContext.locale,
53
+ classNames = _usePanelContext.classNames,
54
+ styles = _usePanelContext.styles;
56
55
  var panelPrefixCls = "".concat(prefixCls, "-time-panel");
57
56
  var cellPrefixCls = "".concat(prefixCls, "-time-panel-cell");
58
57
 
@@ -131,8 +130,8 @@ function TimeColumn(props) {
131
130
  }, label);
132
131
  return /*#__PURE__*/React.createElement("li", {
133
132
  key: unitValue,
134
- style: styles === null || styles === void 0 ? void 0 : styles.popupItem,
135
- className: (0, _classnames.default)(cellPrefixCls, pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.popupItem, _defineProperty(_defineProperty({}, "".concat(cellPrefixCls, "-selected"), value === unitValue), "".concat(cellPrefixCls, "-disabled"), disabled)),
133
+ style: styles.item,
134
+ className: (0, _classnames.default)(cellPrefixCls, classNames.item, _defineProperty(_defineProperty({}, "".concat(cellPrefixCls, "-selected"), value === unitValue), "".concat(cellPrefixCls, "-disabled"), disabled)),
136
135
  onClick: function onClick() {
137
136
  if (!disabled) {
138
137
  onChange(unitValue);
@@ -33,6 +33,8 @@ function TimePanelBody(props) {
33
33
  changeOnScroll = props.changeOnScroll;
34
34
  var _usePanelContext = (0, _context.usePanelContext)(),
35
35
  prefixCls = _usePanelContext.prefixCls,
36
+ classNames = _usePanelContext.classNames,
37
+ styles = _usePanelContext.styles,
36
38
  values = _usePanelContext.values,
37
39
  generateConfig = _usePanelContext.generateConfig,
38
40
  locale = _usePanelContext.locale,
@@ -42,9 +44,7 @@ function TimePanelBody(props) {
42
44
  pickerValue = _usePanelContext.pickerValue;
43
45
  var value = (values === null || values === void 0 ? void 0 : values[0]) || null;
44
46
  var _React$useContext = React.useContext(_context.PickerHackContext),
45
- onCellDblClick = _React$useContext.onCellDblClick,
46
- pickerClassNames = _React$useContext.classNames,
47
- styles = _React$useContext.styles;
47
+ onCellDblClick = _React$useContext.onCellDblClick;
48
48
 
49
49
  // ========================== Info ==========================
50
50
  var _useTimeInfo = (0, _useTimeInfo3.default)(generateConfig, props, value),
@@ -257,8 +257,8 @@ function TimePanelBody(props) {
257
257
  changeOnScroll: changeOnScroll
258
258
  };
259
259
  return /*#__PURE__*/React.createElement("div", {
260
- className: (0, _classnames.default)("".concat(prefixCls, "-content"), pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.popupContent),
261
- style: styles === null || styles === void 0 ? void 0 : styles.popupContent
260
+ className: (0, _classnames.default)("".concat(prefixCls, "-content"), classNames.content),
261
+ style: styles.content
262
262
  }, showHour && /*#__PURE__*/React.createElement(_TimeColumn.default, _extends({
263
263
  units: hourUnits,
264
264
  value: hour,
@@ -1,9 +1,17 @@
1
1
  import * as React from 'react';
2
- import type { PanelMode, SemanticStructure, SharedPanelProps } from '../interface';
2
+ import type { PanelMode, SharedPanelProps } from '../interface';
3
+ import type { FilledPanelClassNames, FilledPanelStyles } from '../hooks/useSemantic';
4
+ export interface SharedPanelContextProps {
5
+ classNames: FilledPanelClassNames;
6
+ styles: FilledPanelStyles;
7
+ }
8
+ export declare const SharedPanelContext: React.Context<SharedPanelContextProps>;
3
9
  export interface PanelContextProps<DateType extends object = any> extends Pick<SharedPanelProps<DateType>, 'prefixCls' | 'cellRender' | 'generateConfig' | 'locale' | 'onSelect' | 'hoverValue' | 'hoverRangeValue' | 'onHover' | 'values' | 'pickerValue' | 'disabledDate' | 'minDate' | 'maxDate' | 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'> {
4
10
  /** Tell current panel type */
5
11
  panelType: PanelMode;
6
12
  now: DateType;
13
+ classNames: FilledPanelClassNames;
14
+ styles: FilledPanelStyles;
7
15
  }
8
16
  /** Used for each single Panel. e.g. DatePanel */
9
17
  export declare const PanelContext: React.Context<PanelContextProps<any>>;
@@ -17,8 +25,6 @@ export interface PickerHackContextProps {
17
25
  hideNext?: boolean;
18
26
  hideHeader?: boolean;
19
27
  onCellDblClick?: () => void;
20
- styles?: Partial<Record<SemanticStructure, React.CSSProperties>>;
21
- classNames?: Partial<Record<SemanticStructure, string>>;
22
28
  }
23
29
  /**
24
30
  * Internal usage for RangePicker to not to show the operation arrow
@@ -4,12 +4,13 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.PickerHackContext = exports.PanelContext = void 0;
7
+ exports.SharedPanelContext = exports.PickerHackContext = exports.PanelContext = void 0;
8
8
  exports.useInfo = useInfo;
9
9
  exports.usePanelContext = usePanelContext;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ var SharedPanelContext = exports.SharedPanelContext = /*#__PURE__*/React.createContext(null);
13
14
  /** Used for each single Panel. e.g. DatePanel */
14
15
  var PanelContext = exports.PanelContext = /*#__PURE__*/React.createContext(null);
15
16
  function usePanelContext() {
@@ -20,6 +21,8 @@ function usePanelContext() {
20
21
  * Get shared props for the SharedPanelProps interface.
21
22
  */
22
23
  function useInfo(props, panelType) {
24
+ // TODO: this is not good to get from each props.
25
+ // Should move to `SharedPanelContext` instead.
23
26
  var prefixCls = props.prefixCls,
24
27
  generateConfig = props.generateConfig,
25
28
  locale = props.locale,
@@ -38,6 +41,11 @@ function useInfo(props, panelType) {
38
41
  superPrevIcon = props.superPrevIcon,
39
42
  superNextIcon = props.superNextIcon;
40
43
 
44
+ // ======================= Context ========================
45
+ var _React$useContext = React.useContext(SharedPanelContext),
46
+ classNames = _React$useContext.classNames,
47
+ styles = _React$useContext.styles;
48
+
41
49
  // ========================= MISC =========================
42
50
  var now = generateConfig.getNow();
43
51
 
@@ -47,6 +55,8 @@ function useInfo(props, panelType) {
47
55
  values: values,
48
56
  pickerValue: pickerValue,
49
57
  prefixCls: prefixCls,
58
+ classNames: classNames,
59
+ styles: styles,
50
60
  disabledDate: disabledDate,
51
61
  minDate: minDate,
52
62
  maxDate: maxDate,
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { CellRender, Components, Locale, OnPanelChange, PanelMode, PickerMode, SharedPanelProps, SharedTimeProps } from '../interface';
2
+ import type { CellRender, Components, Locale, OnPanelChange, PanelMode, PanelSemanticName, PickerMode, SharedPanelProps, SharedTimeProps } from '../interface';
3
3
  export interface PickerPanelRef {
4
4
  nativeElement: HTMLDivElement;
5
5
  }
@@ -43,7 +43,6 @@ export interface SinglePickerPanelProps<DateType extends object = any> extends B
43
43
  value?: DateType | null;
44
44
  onChange?: (date: DateType) => void;
45
45
  }
46
- type PanelSemanticName = 'popupBody' | 'popupContent' | 'popupItem';
47
46
  export type PickerPanelProps<DateType extends object = any> = BasePickerPanelProps<DateType> & {
48
47
  /** multiple selection. Not support time or datetime picker */
49
48
  multiple?: boolean;
@@ -53,13 +52,5 @@ export type PickerPanelProps<DateType extends object = any> = BasePickerPanelPro
53
52
  styles?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
54
53
  classNames?: Partial<Record<PanelSemanticName, string>>;
55
54
  };
56
- declare const _default: <DateType extends object = any>(props: BasePickerPanelProps<DateType> & {
57
- /** multiple selection. Not support time or datetime picker */
58
- multiple?: boolean;
59
- defaultValue?: DateType | DateType[];
60
- value?: DateType | DateType[];
61
- onChange?: (date: DateType | DateType[]) => void;
62
- styles?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
63
- classNames?: Partial<Record<PanelSemanticName, string>>;
64
- } & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
55
+ declare const _default: <DateType extends object = any>(props: PickerPanelProps<DateType> & React.RefAttributes<PickerPanelRef>) => React.ReactElement;
65
56
  export default _default;
@@ -264,16 +264,19 @@ function PickerPanel(props, ref) {
264
264
  var PanelComponent = components[internalMode] || DefaultComponents[internalMode] || _DatePanel.default;
265
265
 
266
266
  // ======================== Context =========================
267
- var mergedStyles = pickerStyles !== null && pickerStyles !== void 0 ? pickerStyles : panelStyles;
268
- var mergedClassNames = pickerClassNames !== null && pickerClassNames !== void 0 ? pickerClassNames : panelClassNames;
267
+ var sharedPanelContext = React.useMemo(function () {
268
+ var _ref2, _pickerClassNames$pop, _ref3, _pickerStyles$popup;
269
+ return {
270
+ classNames: (_ref2 = (_pickerClassNames$pop = pickerClassNames === null || pickerClassNames === void 0 ? void 0 : pickerClassNames.popup) !== null && _pickerClassNames$pop !== void 0 ? _pickerClassNames$pop : panelClassNames) !== null && _ref2 !== void 0 ? _ref2 : {},
271
+ styles: (_ref3 = (_pickerStyles$popup = pickerStyles === null || pickerStyles === void 0 ? void 0 : pickerStyles.popup) !== null && _pickerStyles$popup !== void 0 ? _pickerStyles$popup : panelStyles) !== null && _ref3 !== void 0 ? _ref3 : {}
272
+ };
273
+ }, [pickerClassNames, panelClassNames, pickerStyles, panelStyles]);
269
274
  var parentHackContext = React.useContext(_context2.PickerHackContext);
270
275
  var pickerPanelContext = React.useMemo(function () {
271
276
  return _objectSpread(_objectSpread({}, parentHackContext), {}, {
272
- hideHeader: hideHeader,
273
- classNames: mergedClassNames,
274
- styles: mergedStyles
277
+ hideHeader: hideHeader
275
278
  });
276
- }, [parentHackContext, hideHeader, mergedClassNames, mergedStyles]);
279
+ }, [parentHackContext, hideHeader]);
277
280
 
278
281
  // ======================== Warnings ========================
279
282
  if (process.env.NODE_ENV !== 'production') {
@@ -293,7 +296,9 @@ function PickerPanel(props, ref) {
293
296
  'disabledDate', 'minDate', 'maxDate',
294
297
  // Hover
295
298
  'onHover']);
296
- return /*#__PURE__*/React.createElement(_context2.PickerHackContext.Provider, {
299
+ return /*#__PURE__*/React.createElement(_context2.SharedPanelContext.Provider, {
300
+ value: sharedPanelContext
301
+ }, /*#__PURE__*/React.createElement(_context2.PickerHackContext.Provider, {
297
302
  value: pickerPanelContext
298
303
  }, /*#__PURE__*/React.createElement("div", {
299
304
  ref: rootRef,
@@ -326,7 +331,7 @@ function PickerPanel(props, ref) {
326
331
  ,
327
332
  hoverRangeValue: hoverRangeDate,
328
333
  hoverValue: hoverValue
329
- }))));
334
+ })))));
330
335
  }
331
336
  var RefPanelPicker = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(PickerPanel));
332
337
  if (process.env.NODE_ENV !== 'production') {
@@ -0,0 +1,13 @@
1
+ import type { SharedPickerProps } from '../interface';
2
+ export type FilledPanelClassNames = NonNullable<SharedPickerProps['classNames']>['popup'];
3
+ export type FilledPanelStyles = NonNullable<SharedPickerProps['styles']>['popup'];
4
+ export type FilledClassNames = NonNullable<SharedPickerProps['classNames']> & {
5
+ popup: FilledPanelClassNames;
6
+ };
7
+ export type FilledStyles = NonNullable<SharedPickerProps['styles']> & {
8
+ popup: FilledPanelStyles;
9
+ };
10
+ /**
11
+ * Convert `classNames` & `styles` to a fully filled object
12
+ */
13
+ export default function useSemantic(classNames?: SharedPickerProps['classNames'], styles?: SharedPickerProps['styles']): readonly [FilledClassNames, FilledStyles];
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useSemantic;
7
+ var _react = require("react");
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
+ /**
15
+ * Convert `classNames` & `styles` to a fully filled object
16
+ */
17
+ function useSemantic(classNames, styles) {
18
+ return (0, _react.useMemo)(function () {
19
+ var mergedClassNames = _objectSpread(_objectSpread({}, classNames), {}, {
20
+ popup: (classNames === null || classNames === void 0 ? void 0 : classNames.popup) || {}
21
+ });
22
+ var mergedStyles = _objectSpread(_objectSpread({}, styles), {}, {
23
+ popup: (styles === null || styles === void 0 ? void 0 : styles.popup) || {}
24
+ });
25
+ return [mergedClassNames, mergedStyles];
26
+ }, [classNames, styles]);
27
+ }
@@ -201,19 +201,26 @@ export type Components<DateType extends object = any> = Partial<Record<InternalM
201
201
  button?: React.ComponentType<any> | string;
202
202
  input?: React.ComponentType<any> | string;
203
203
  }>;
204
- export type SemanticStructure = 'popup' | 'popupBody' | 'popupContent' | 'popupItem' | 'suffix' | 'prefix' | 'input';
205
204
  export type CustomFormat<DateType> = (value: DateType) => string;
206
205
  export type FormatType<DateType = any> = string | CustomFormat<DateType>;
207
206
  export type SharedHTMLAttrs = Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'defaultValue' | 'onChange' | 'placeholder' | 'id' | 'onInvalid' | 'disabled' | 'onFocus' | 'onBlur' | 'onSelect' | 'min' | 'max' | 'onKeyDown' | 'size' | 'prefix'>;
208
207
  export type PickerFocusEventHandler = (e: React.FocusEvent<HTMLElement>, info: BaseInfo) => void;
209
208
  export type LegacyOnKeyDown = (event: React.KeyboardEvent<HTMLElement>, preventDefault: VoidFunction) => void;
209
+ export type SemanticName = 'root' | 'prefix' | 'input' | 'suffix';
210
+ export type PreviewValueType = 'hover';
211
+ export type PanelSemanticName = 'root' | 'header' | 'body' | 'content' | 'item' | 'footer';
210
212
  export interface SharedPickerProps<DateType extends object = any> extends SharedHTMLAttrs, Pick<SharedPanelProps<DateType>, 'prevIcon' | 'nextIcon' | 'superPrevIcon' | 'superNextIcon'> {
211
213
  direction?: 'ltr' | 'rtl';
212
214
  prefixCls?: string;
213
215
  className?: string;
214
216
  style?: React.CSSProperties;
215
- styles?: Partial<Record<SemanticStructure, React.CSSProperties>>;
216
- classNames?: Partial<Record<SemanticStructure, string>>;
217
+ rootClassName?: string;
218
+ styles?: Partial<Record<SemanticName, React.CSSProperties>> & {
219
+ popup?: Partial<Record<PanelSemanticName, React.CSSProperties>>;
220
+ };
221
+ classNames?: Partial<Record<SemanticName, string>> & {
222
+ popup?: Partial<Record<PanelSemanticName, string>>;
223
+ };
217
224
  locale: Locale;
218
225
  generateConfig: GenerateConfig<DateType>;
219
226
  picker?: PickerMode;
@@ -275,6 +282,12 @@ export interface SharedPickerProps<DateType extends object = any> extends Shared
275
282
  * This is only used for strong a11y requirement which do not want modify after blur.
276
283
  */
277
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;
278
291
  transitionName?: string;
279
292
  components?: Components<DateType>;
280
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/picker",
3
- "version": "1.2.4",
3
+ "version": "1.4.0",
4
4
  "description": "React date & time picker",
5
5
  "keywords": [
6
6
  "react",