rsuite 5.16.3 → 5.16.6

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 (44) hide show
  1. package/Button/styles/index.less +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/Picker/styles/index.less +1 -1
  4. package/cjs/AutoComplete/AutoComplete.d.ts +3 -1
  5. package/cjs/AutoComplete/AutoComplete.js +6 -2
  6. package/cjs/AutoComplete/test/AutoComplete.test.d.ts +1 -0
  7. package/cjs/AutoComplete/test/AutoComplete.test.js +23 -0
  8. package/cjs/Calendar/Header.js +2 -4
  9. package/cjs/Calendar/useCalendarDate.d.ts +1 -0
  10. package/cjs/Calendar/useCalendarDate.js +7 -1
  11. package/cjs/DatePicker/DatePicker.js +5 -4
  12. package/cjs/DateRangePicker/DateRangePicker.js +26 -5
  13. package/cjs/FormControl/FormControl.js +3 -5
  14. package/cjs/Overlay/OverlayTrigger.js +43 -34
  15. package/cjs/Picker/PickerToggle.d.ts +1 -1
  16. package/cjs/Picker/PickerToggle.js +52 -27
  17. package/cjs/utils/dateUtils.d.ts +1 -0
  18. package/cjs/utils/dateUtils.js +5 -1
  19. package/dist/rsuite-rtl.css +1 -1
  20. package/dist/rsuite-rtl.min.css +1 -1
  21. package/dist/rsuite-rtl.min.css.map +1 -1
  22. package/dist/rsuite.css +1 -1
  23. package/dist/rsuite.js +20 -9
  24. package/dist/rsuite.js.map +1 -1
  25. package/dist/rsuite.min.css +1 -1
  26. package/dist/rsuite.min.css.map +1 -1
  27. package/dist/rsuite.min.js +1 -1
  28. package/dist/rsuite.min.js.map +1 -1
  29. package/esm/AutoComplete/AutoComplete.d.ts +3 -1
  30. package/esm/AutoComplete/AutoComplete.js +6 -2
  31. package/esm/AutoComplete/test/AutoComplete.test.d.ts +1 -0
  32. package/esm/AutoComplete/test/AutoComplete.test.js +18 -0
  33. package/esm/Calendar/Header.js +2 -4
  34. package/esm/Calendar/useCalendarDate.d.ts +1 -0
  35. package/esm/Calendar/useCalendarDate.js +7 -1
  36. package/esm/DatePicker/DatePicker.js +5 -4
  37. package/esm/DateRangePicker/DateRangePicker.js +26 -5
  38. package/esm/FormControl/FormControl.js +3 -5
  39. package/esm/Overlay/OverlayTrigger.js +44 -35
  40. package/esm/Picker/PickerToggle.d.ts +1 -1
  41. package/esm/Picker/PickerToggle.js +52 -27
  42. package/esm/utils/dateUtils.d.ts +1 -0
  43. package/esm/utils/dateUtils.js +1 -0
  44. package/package.json +1 -1
@@ -44,7 +44,7 @@
44
44
  });
45
45
 
46
46
  .button-disabled({
47
- cursor: not-allowed;
47
+ cursor: @cursor-disabled;
48
48
  color: var(--rs-btn-default-disabled-text);
49
49
  background-color: var(--rs-btn-default-disabled-bg);
50
50
  });
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ## [5.16.6](https://github.com/rsuite/rsuite/compare/v5.16.5...v5.16.6) (2022-08-18)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Button:** use [@cursor-disabled](https://github.com/cursor-disabled) intead of hardcoded cursor ([#2658](https://github.com/rsuite/rsuite/issues/2658)) ([5731762](https://github.com/rsuite/rsuite/commit/57317622eb2d65e94e0a8bb962512232cc4dfd3d))
6
+ - **DatePicker,DateRangePicker:** display month name as title of month calendar view ([#2660](https://github.com/rsuite/rsuite/issues/2660)) ([1e812ef](https://github.com/rsuite/rsuite/commit/1e812ef7510ea7b82beda7c058bd07080db198f5))
7
+ - **Form.Control:** apply className to accepter component ([#2662](https://github.com/rsuite/rsuite/issues/2662)) ([a164d28](https://github.com/rsuite/rsuite/commit/a164d287acfe8be2f98080e3b7eb15971f47809f))
8
+
9
+ ## [5.16.5](https://github.com/rsuite/rsuite/compare/v5.16.4...v5.16.5) (2022-08-11)
10
+
11
+ ### Bug Fixes
12
+
13
+ - **AutoComplete:** fix `listbox` not keeping the same width as `input` ([#2645](https://github.com/rsuite/rsuite/issues/2645)) ([ad09288](https://github.com/rsuite/rsuite/commit/ad09288e0fc38f964524466a79ca25532dc221f8))
14
+ - **AutoComplete:** fix missing definition of string in datatype ([#2644](https://github.com/rsuite/rsuite/issues/2644)) ([528e291](https://github.com/rsuite/rsuite/commit/528e29154d188d928e3d93853f5ed0673b932b4a))
15
+ - **DateRangePicker:** fix default time not working ([#2642](https://github.com/rsuite/rsuite/issues/2642)) ([915de28](https://github.com/rsuite/rsuite/commit/915de2820af418195e7f9a6ed228c1b05362d633))
16
+
17
+ ## [5.16.4](https://github.com/rsuite/rsuite/compare/v5.16.3...v5.16.4) (2022-08-04)
18
+
19
+ ### Bug Fixes
20
+
21
+ - **DatePicker:** fix issues with focus event ([#2636](https://github.com/rsuite/rsuite/issues/2636)) ([76b68aa](https://github.com/rsuite/rsuite/commit/76b68aa79dd129a210238517c279fe41b0da89ac))
22
+
1
23
  ## [5.16.3](https://github.com/rsuite/rsuite/compare/v5.16.2...v5.16.3) (2022-07-29)
2
24
 
3
25
  ### Bug Fixes
@@ -104,6 +104,7 @@
104
104
  padding-right: 32px;
105
105
  color: var(--rs-text-primary);
106
106
  background-color: var(--rs-input-bg);
107
+ outline: none;
107
108
  }
108
109
 
109
110
  &.rs-btn-lg &-textbox {
@@ -120,7 +121,6 @@
120
121
 
121
122
  &-read-only {
122
123
  opacity: 0;
123
- pointer-events: none;
124
124
  }
125
125
  }
126
126
 
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { PickerComponent } from '../Picker';
3
3
  import { WithAsProps, FormControlPickerProps, TypeAttributes, ItemDataType } from '../@types/common';
4
4
  export declare type ValueType = string;
5
- export interface AutoCompleteProps<T = ValueType> extends WithAsProps, FormControlPickerProps<T, any, ItemDataType> {
5
+ export interface AutoCompleteProps<T = ValueType> extends WithAsProps, FormControlPickerProps<T, any, ItemDataType | string> {
6
6
  /** Additional classes for menu */
7
7
  menuClassName?: string;
8
8
  /** The placement of component */
@@ -13,6 +13,8 @@ export interface AutoCompleteProps<T = ValueType> extends WithAsProps, FormContr
13
13
  open?: boolean;
14
14
  /** Placeholder text */
15
15
  placeholder?: string;
16
+ /** The width of the menu will automatically follow the width of the input box */
17
+ menuAutoWidth?: boolean;
16
18
  /** Custom filter function to determine whether the item will be displayed */
17
19
  filterBy?: (value: string, item: ItemDataType) => boolean;
18
20
  /** Called when a option is selected */
@@ -44,6 +44,8 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
44
44
  classPrefix = _props$classPrefix === void 0 ? 'auto-complete' : _props$classPrefix,
45
45
  _props$defaultValue = props.defaultValue,
46
46
  defaultValue = _props$defaultValue === void 0 ? '' : _props$defaultValue,
47
+ _props$menuAutoWidth = props.menuAutoWidth,
48
+ menuAutoWidth = _props$menuAutoWidth === void 0 ? true : _props$menuAutoWidth,
47
49
  data = props.data,
48
50
  valueProp = props.value,
49
51
  open = props.open,
@@ -61,7 +63,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
61
63
  onFocus = props.onFocus,
62
64
  onBlur = props.onBlur,
63
65
  onMenuFocus = props.onMenuFocus,
64
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "className", "placement", "selectOnEnter", "classPrefix", "defaultValue", "data", "value", "open", "style", "menuClassName", "id", "renderMenu", "renderMenuItem", "onSelect", "filterBy", "onKeyDown", "onChange", "onClose", "onOpen", "onFocus", "onBlur", "onMenuFocus"]);
66
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "className", "placement", "selectOnEnter", "classPrefix", "defaultValue", "menuAutoWidth", "data", "value", "open", "style", "menuClassName", "id", "renderMenu", "renderMenuItem", "onSelect", "filterBy", "onKeyDown", "onChange", "onClose", "onOpen", "onFocus", "onBlur", "onMenuFocus"]);
65
67
  var datalist = (0, _utils3.transformData)(data);
66
68
 
67
69
  var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
@@ -203,7 +205,8 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
203
205
  style: styles,
204
206
  className: className,
205
207
  onKeyDown: handleKeyDownEvent,
206
- target: triggerRef
208
+ target: triggerRef,
209
+ autoWidth: menuAutoWidth
207
210
  }, renderMenu ? renderMenu(menu) : menu);
208
211
  };
209
212
 
@@ -239,6 +242,7 @@ AutoComplete.propTypes = (0, _extends2.default)({}, _utils2.animationPropTypes,
239
242
  defaultValue: _propTypes.default.string,
240
243
  className: _propTypes.default.string,
241
244
  menuClassName: _propTypes.default.string,
245
+ menuAutoWidth: _propTypes.default.bool,
242
246
  placement: _propTypes.default.oneOf(_utils.PLACEMENT),
243
247
  onFocus: _propTypes.default.func,
244
248
  onMenuFocus: _propTypes.default.func,
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _AutoComplete = _interopRequireDefault(require("../AutoComplete"));
8
+
9
+ /*#__PURE__*/
10
+ _react.default.createElement(_AutoComplete.default, {
11
+ data: ['item1', 'item2']
12
+ });
13
+
14
+ /*#__PURE__*/
15
+ _react.default.createElement(_AutoComplete.default, {
16
+ data: [{
17
+ label: 'item1',
18
+ value: 'item1'
19
+ }, {
20
+ label: 'item2',
21
+ value: 'item2'
22
+ }]
23
+ });
@@ -90,14 +90,12 @@ var Header = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
90
90
  return timeFormat.join(':');
91
91
  }, [format, showMeridian]);
92
92
  var getDateFormat = (0, _react.useCallback)(function () {
93
- if (showDate) {
94
- return (locale === null || locale === void 0 ? void 0 : locale.formattedDayPattern) || 'yyyy-MM-dd';
95
- } else if (showMonth) {
93
+ if (showMonth) {
96
94
  return (locale === null || locale === void 0 ? void 0 : locale.formattedMonthPattern) || 'yyyy-MM';
97
95
  }
98
96
 
99
97
  return 'yyyy';
100
- }, [locale, showDate, showMonth]);
98
+ }, [locale, showMonth]);
101
99
  var renderTitle = (0, _react.useCallback)(function () {
102
100
  var _renderTitleProp;
103
101
 
@@ -1,5 +1,6 @@
1
1
  declare const useCalendarDate: (value: Date | null | undefined, defaultDate: Date | undefined) => {
2
2
  calendarDate: Date;
3
3
  setCalendarDate: (date: Date | undefined) => void;
4
+ resetCalendarDate: () => void;
4
5
  };
5
6
  export default useCalendarDate;
@@ -21,6 +21,11 @@ var useCalendarDate = function useCalendarDate(value, defaultDate) {
21
21
  setValue(date);
22
22
  }
23
23
  }, [calendarDate]);
24
+ var resetCalendarDate = (0, _react.useCallback)(function () {
25
+ var _ref2;
26
+
27
+ setValue((_ref2 = value !== null && value !== void 0 ? value : defaultDate) !== null && _ref2 !== void 0 ? _ref2 : new Date());
28
+ }, [defaultDate, value]);
24
29
  (0, _utils.useUpdateEffect)(function () {
25
30
  var _valueRef$current;
26
31
 
@@ -31,7 +36,8 @@ var useCalendarDate = function useCalendarDate(value, defaultDate) {
31
36
  }, [value]);
32
37
  return {
33
38
  calendarDate: calendarDate,
34
- setCalendarDate: setCalendarDate
39
+ setCalendarDate: setCalendarDate,
40
+ resetCalendarDate: resetCalendarDate
35
41
  };
36
42
  };
37
43
 
@@ -101,7 +101,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
101
101
 
102
102
  var _useCalendarDate = (0, _useCalendarDate2.default)(valueProp, calendarDefaultDate),
103
103
  calendarDate = _useCalendarDate.calendarDate,
104
- setCalendarDate = _useCalendarDate.setCalendarDate;
104
+ setCalendarDate = _useCalendarDate.setCalendarDate,
105
+ resetCalendarDate = _useCalendarDate.resetCalendarDate;
105
106
 
106
107
  var _useState = (0, _react.useState)(),
107
108
  inputState = _useState[0],
@@ -244,9 +245,9 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
244
245
  */
245
246
 
246
247
  var handleClean = (0, _react.useCallback)(function (event) {
247
- setCalendarDate(new Date());
248
248
  updateValue(event, null);
249
- }, [setCalendarDate, updateValue]);
249
+ resetCalendarDate();
250
+ }, [resetCalendarDate, updateValue]);
250
251
  /**
251
252
  * Handle keyboard events.
252
253
  */
@@ -467,7 +468,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
467
468
  as: toggleAs,
468
469
  ref: targetRef,
469
470
  appearance: appearance,
470
- input: true,
471
+ editable: true,
471
472
  inputValue: value ? formatDate(value, formatStr) : '',
472
473
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : formatStr,
473
474
  inputMask: _utils.DateUtils.getDateMask(formatStr),
@@ -161,11 +161,31 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
161
161
  */
162
162
 
163
163
  var updateCalendarDateRange = (0, _react.useCallback)(function (value, calendarKey) {
164
+ var nextValue = value;
165
+ var shouldTime = _utils.DateUtils.shouldTime,
166
+ getHours = _utils.DateUtils.getHours,
167
+ getMinutes = _utils.DateUtils.getMinutes,
168
+ getSeconds = _utils.DateUtils.getSeconds,
169
+ set = _utils.DateUtils.set;
170
+
171
+ if (shouldTime(formatStr) && calendarKey === undefined && (value === null || value === void 0 ? void 0 : value.length) === 1 && (defaultCalendarValue === null || defaultCalendarValue === void 0 ? void 0 : defaultCalendarValue.length) === 2) {
172
+ var calendarEndDate = (calendarDate === null || calendarDate === void 0 ? void 0 : calendarDate[1]) || defaultCalendarValue[1];
173
+ var _startDate = value[0]; // When updating the start date, the time of the end date should keep the time set by the user by default.
174
+
175
+ var _endDate = set((0, _dateUtils.addMonths)(_startDate, 1), {
176
+ hours: getHours(calendarEndDate),
177
+ minutes: getMinutes(calendarEndDate),
178
+ seconds: getSeconds(calendarEndDate)
179
+ });
180
+
181
+ nextValue = [_startDate, _endDate];
182
+ }
183
+
164
184
  setCalendarDate((0, _utils2.getCalendarDate)({
165
- value: value,
185
+ value: nextValue,
166
186
  calendarKey: calendarKey
167
187
  }));
168
- }, []); // if valueProp changed then update selectValue/hoverValue
188
+ }, [calendarDate, defaultCalendarValue, formatStr]); // if valueProp changed then update selectValue/hoverValue
169
189
 
170
190
  (0, _react.useEffect)(function () {
171
191
  setSelectedDates(valueProp !== null && valueProp !== void 0 ? valueProp : []);
@@ -463,10 +483,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
463
483
  var nextCalendarDate;
464
484
 
465
485
  if (value && value.length) {
466
- var _startDate = value[0],
486
+ var _startDate2 = value[0],
467
487
  endData = value[1];
468
- nextCalendarDate = [_startDate, (0, _dateUtils.isSameMonth)(_startDate, endData) ? (0, _dateUtils.addMonths)(endData, 1) : endData];
488
+ nextCalendarDate = [_startDate2, (0, _dateUtils.isSameMonth)(_startDate2, endData) ? (0, _dateUtils.addMonths)(endData, 1) : endData];
469
489
  } else {
490
+ // Reset the date on the calendar to the default date
470
491
  nextCalendarDate = (0, _utils2.getCalendarDate)({
471
492
  value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null
472
493
  });
@@ -624,7 +645,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
624
645
  as: toggleAs,
625
646
  ref: targetRef,
626
647
  appearance: appearance,
627
- input: true,
648
+ editable: true,
628
649
  inputMask: _utils.DateUtils.getDateMask(rangeFormatStr),
629
650
  inputValue: value ? getDisplayString(value, true) : '',
630
651
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : rangeFormatStr,
@@ -58,7 +58,6 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
58
58
  AccepterComponent = _props$accepter === void 0 ? _Input.default : _props$accepter,
59
59
  _props$classPrefix = props.classPrefix,
60
60
  classPrefix = _props$classPrefix === void 0 ? 'form-control' : _props$classPrefix,
61
- className = props.className,
62
61
  checkAsync = props.checkAsync,
63
62
  checkTrigger = props.checkTrigger,
64
63
  _props$errorPlacement = props.errorPlacement,
@@ -78,7 +77,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
78
77
  _props$shouldResetWit = props.shouldResetWithUnmount,
79
78
  shouldResetWithUnmount = _props$shouldResetWit === void 0 ? false : _props$shouldResetWit,
80
79
  rule = props.rule,
81
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "accepter", "classPrefix", "className", "checkAsync", "checkTrigger", "errorPlacement", "errorMessage", "name", "value", "readOnly", "plaintext", "disabled", "onChange", "onBlur", "defaultValue", "shouldResetWithUnmount", "rule"]);
80
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "accepter", "classPrefix", "checkAsync", "checkTrigger", "errorPlacement", "errorMessage", "name", "value", "readOnly", "plaintext", "disabled", "onChange", "onBlur", "defaultValue", "shouldResetWithUnmount", "rule"]);
82
81
 
83
82
  var _useContext2 = (0, _react.useContext)(_FormGroup.FormGroupContext),
84
83
  controlId = _useContext2.controlId;
@@ -100,10 +99,9 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
100
99
 
101
100
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
102
101
  withClassPrefix = _useClassNames.withClassPrefix,
103
- prefix = _useClassNames.prefix,
104
- merge = _useClassNames.merge;
102
+ prefix = _useClassNames.prefix;
105
103
 
106
- var classes = merge(className, withClassPrefix('wrapper'));
104
+ var classes = withClassPrefix('wrapper');
107
105
 
108
106
  var handleFieldChange = function handleFieldChange(value, event) {
109
107
  handleFieldCheck(value, trigger === 'change');
@@ -278,56 +278,65 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
278
278
  var preventDefault = (0, _react.useCallback)(function (event) {
279
279
  event.preventDefault();
280
280
  }, []);
281
- var triggerEvents = {
282
- onClick: onClick,
283
- onContextMenu: onContextMenu,
284
- onMouseOver: onMouseOver,
285
- onMouseOut: onMouseOut,
286
- onFocus: onFocus,
287
- onBlur: onBlur,
288
- onMouseMove: onMouseMove
289
- };
281
+ var triggerEvents = (0, _react.useMemo)(function () {
282
+ // Pass events by props
283
+ var events = {
284
+ onClick: onClick,
285
+ onContextMenu: onContextMenu,
286
+ onMouseOver: onMouseOver,
287
+ onMouseOut: onMouseOut,
288
+ onFocus: onFocus,
289
+ onBlur: onBlur,
290
+ onMouseMove: onMouseMove
291
+ }; // When trigger is disabled, no predefined event listeners are added.
292
+
293
+ if (disabled || readOnly || plaintext || trigger === 'none') {
294
+ return events;
295
+ } // Get the cursor position through onMouseMove.
296
+ // https://rsuitejs.com/components/tooltip/#follow-cursor
297
+
298
+
299
+ if (followCursor) {
300
+ events.onMouseMove = (0, _utils.createChainedFunction)(handledMoveOverlay, onMouseMove);
301
+ } // The `click` event is usually used in `toggle` scenarios.
302
+ // The first click will open and the second click will close.
303
+
290
304
 
291
- if (!disabled && !readOnly && !plaintext) {
292
305
  if ((0, _isOneOf.default)('click', trigger)) {
293
- triggerEvents.onClick = (0, _utils.createChainedFunction)(handleOpenState, triggerEvents.onClick);
294
- }
306
+ events.onClick = (0, _utils.createChainedFunction)(handleOpenState, events.onClick);
307
+ return events;
308
+ } // The difference between it and the click event is that it does not trigger the close.
295
309
 
296
- if ((0, _isOneOf.default)('contextMenu', trigger)) {
297
- triggerEvents.onContextMenu = (0, _utils.createChainedFunction)(preventDefault, handleOpenState, triggerEvents.onContextMenu);
298
- }
299
310
 
300
311
  if ((0, _isOneOf.default)('active', trigger)) {
301
- triggerEvents.onClick = (0, _utils.createChainedFunction)(handleDelayedOpen, triggerEvents.onClick);
312
+ events.onClick = (0, _utils.createChainedFunction)(handleDelayedOpen, events.onClick);
313
+ return events;
302
314
  }
303
315
 
304
316
  if ((0, _isOneOf.default)('hover', trigger)) {
305
- var onMouseOverListener = null;
306
- var onMouseOutListener = null;
307
-
308
- if (trigger !== 'none') {
309
- onMouseOverListener = function onMouseOverListener(e) {
310
- return onMouseEventHandler(handleDelayedOpen, e);
311
- };
317
+ var onMouseOverListener = function onMouseOverListener(e) {
318
+ return onMouseEventHandler(handleDelayedOpen, e);
319
+ };
312
320
 
313
- onMouseOutListener = function onMouseOutListener(e) {
314
- return onMouseEventHandler(handleDelayedClose, e);
315
- };
316
- }
321
+ var onMouseOutListener = function onMouseOutListener(e) {
322
+ return onMouseEventHandler(handleDelayedClose, e);
323
+ };
317
324
 
318
- triggerEvents.onMouseOver = (0, _utils.createChainedFunction)(onMouseOverListener, onMouseOver);
319
- triggerEvents.onMouseOut = (0, _utils.createChainedFunction)(onMouseOutListener, onMouseOut);
325
+ events.onMouseOver = (0, _utils.createChainedFunction)(onMouseOverListener, events.onMouseOver);
326
+ events.onMouseOut = (0, _utils.createChainedFunction)(onMouseOutListener, events.onMouseOut);
320
327
  }
321
328
 
322
329
  if ((0, _isOneOf.default)('focus', trigger)) {
323
- triggerEvents.onFocus = (0, _utils.createChainedFunction)(handleDelayedOpen, onFocus);
324
- triggerEvents.onBlur = (0, _utils.createChainedFunction)(handleDelayedClose, onBlur);
330
+ events.onFocus = (0, _utils.createChainedFunction)(handleDelayedOpen, events.onFocus);
331
+ events.onBlur = (0, _utils.createChainedFunction)(handleDelayedClose, events.onBlur);
325
332
  }
326
333
 
327
- if (trigger !== 'none' && followCursor) {
328
- triggerEvents.onMouseMove = (0, _utils.createChainedFunction)(handledMoveOverlay, onMouseMove);
334
+ if ((0, _isOneOf.default)('contextMenu', trigger)) {
335
+ events.onContextMenu = (0, _utils.createChainedFunction)(preventDefault, handleOpenState, events.onContextMenu);
329
336
  }
330
- }
337
+
338
+ return events;
339
+ }, [disabled, followCursor, handleDelayedClose, handleDelayedOpen, handleOpenState, handledMoveOverlay, onBlur, onClick, onContextMenu, onFocus, onMouseMove, onMouseOut, onMouseOver, plaintext, preventDefault, readOnly, trigger]);
331
340
 
332
341
  var renderOverlay = function renderOverlay() {
333
342
  var overlayProps = (0, _extends2.default)({}, rest, {
@@ -15,7 +15,7 @@ export interface PickerToggleProps extends ToggleButtonProps {
15
15
  readOnly?: boolean;
16
16
  plaintext?: boolean;
17
17
  tabIndex?: number;
18
- input?: boolean;
18
+ editable?: boolean;
19
19
  inputPlaceholder?: string;
20
20
  inputMask?: (string | RegExp)[];
21
21
  onInputChange?: (value: string, event: React.ChangeEvent) => void;
@@ -51,12 +51,12 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
51
51
  readOnly = props.readOnly,
52
52
  plaintext = props.plaintext,
53
53
  hasValue = props.hasValue,
54
+ editable = props.editable,
54
55
  cleanableProp = props.cleanable,
55
56
  _props$tabIndex = props.tabIndex,
56
- tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,
57
+ tabIndexProp = _props$tabIndex === void 0 ? editable ? -1 : 0 : _props$tabIndex,
57
58
  id = props.id,
58
59
  value = props.value,
59
- input = props.input,
60
60
  inputPlaceholder = props.inputPlaceholder,
61
61
  inputValueProp = props.inputValue,
62
62
  _props$inputMask = props.inputMask,
@@ -74,8 +74,9 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
74
74
  _props$caretAs = props.caretAs,
75
75
  caretAs = _props$caretAs === void 0 ? caretComponent : _props$caretAs,
76
76
  label = props.label,
77
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "cleanable", "tabIndex", "id", "value", "input", "inputPlaceholder", "inputValue", "inputMask", "onInputChange", "onInputPressEnter", "onInputBlur", "onInputFocus", "onClean", "onFocus", "onBlur", "placement", "caretComponent", "caretAs", "label"]);
77
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "editable", "cleanable", "tabIndex", "id", "value", "inputPlaceholder", "inputValue", "inputMask", "onInputChange", "onInputPressEnter", "onInputBlur", "onInputFocus", "onClean", "onFocus", "onBlur", "placement", "caretComponent", "caretAs", "label"]);
78
78
  var inputRef = (0, _react.useRef)(null);
79
+ var comboboxRef = (0, _react.useRef)(null);
79
80
 
80
81
  var _useState = (0, _react.useState)(false),
81
82
  activeState = _useState[0],
@@ -95,30 +96,46 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
95
96
  setInputValue = _useState2[1];
96
97
 
97
98
  (0, _react.useEffect)(function () {
98
- var value = getInputValue();
99
- setInputValue(value);
99
+ if (comboboxRef.current) {
100
+ var _value = getInputValue();
101
+
102
+ setInputValue(_value);
103
+ }
100
104
  }, [getInputValue]);
101
105
  var classes = merge(className, withClassPrefix({
102
106
  active: activeProp || activeState
103
107
  }));
104
108
  var handleFocus = (0, _react.useCallback)(function (event) {
105
109
  setActive(true);
106
- onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
107
110
 
108
- if (input) {
109
- var _inputRef$current;
111
+ if (editable) {
112
+ // Avoid firing the onFocus event twice when DatePicker and DateRangePicker allow keyboard input.
113
+ if (event.target === inputRef.current) {
114
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
115
+ } // Force the input to be focused and editable.
110
116
 
111
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
117
+
118
+ if (document.activeElement === comboboxRef.current) {
119
+ var _inputRef$current;
120
+
121
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
122
+ }
123
+ } else {
124
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
112
125
  }
113
- }, [input, onFocus]);
126
+ }, [editable, onFocus]);
114
127
  var handleBlur = (0, _react.useCallback)(function (event) {
115
- if (inputRef.current && document.activeElement !== inputRef.current) {
128
+ if (inputRef.current && !editable) {
129
+ setActive(false);
130
+ } // When activeElement is an input, it remains active.
131
+
132
+
133
+ if (editable && inputRef.current && document.activeElement !== inputRef.current) {
116
134
  setActive(false);
117
- inputRef.current.blur();
118
135
  }
119
136
 
120
137
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
121
- }, [onBlur]);
138
+ }, [editable, onBlur]);
122
139
 
123
140
  var handleInputBlur = function handleInputBlur(event) {
124
141
  setInputValue(getInputValue());
@@ -126,10 +143,13 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
126
143
  };
127
144
 
128
145
  var handleClean = (0, _react.useCallback)(function (event) {
146
+ var _inputRef$current2, _comboboxRef$current;
147
+
129
148
  event.stopPropagation();
130
- onClean === null || onClean === void 0 ? void 0 : onClean(event);
131
- setActive(false);
132
- }, [onClean]);
149
+ onClean === null || onClean === void 0 ? void 0 : onClean(event); // When the value is cleared, the current component is still in focus.
150
+
151
+ editable ? (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.focus() : (_comboboxRef$current = comboboxRef.current) === null || _comboboxRef$current === void 0 ? void 0 : _comboboxRef$current.focus();
152
+ }, [editable, onClean]);
133
153
  var handleInputChange = (0, _react.useCallback)(function (event) {
134
154
  var _event$target;
135
155
 
@@ -138,10 +158,18 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
138
158
  onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(value, event);
139
159
  }, [onInputChange]);
140
160
  var handleInputKeyDown = (0, _react.useCallback)(function (event) {
141
- if (input && event.key === _utils.KEY_VALUES.ENTER) {
161
+ if (editable && event.key === _utils.KEY_VALUES.ENTER) {
142
162
  onInputPressEnter === null || onInputPressEnter === void 0 ? void 0 : onInputPressEnter(event);
143
163
  }
144
- }, [onInputPressEnter, input]);
164
+ }, [onInputPressEnter, editable]);
165
+ var renderInput = (0, _react.useCallback)(function (ref, props) {
166
+ return /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({
167
+ ref: (0, _utils.mergeRefs)(inputRef, ref),
168
+ style: {
169
+ pointerEvents: editable ? undefined : 'none'
170
+ }
171
+ }, props));
172
+ }, [editable]);
145
173
  var ToggleCaret = (0, _useToggleCaret.default)(placement);
146
174
  var Caret = caretAs !== null && caretAs !== void 0 ? caretAs : ToggleCaret;
147
175
 
@@ -154,7 +182,8 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
154
182
 
155
183
  var showCleanButton = cleanableProp && hasValue && !readOnly; // When the component is read-only or disabled, the input is not interactive.
156
184
 
157
- var inputFocused = readOnly || disabled ? false : input && activeState;
185
+ var inputFocused = readOnly || disabled ? false : editable && activeState;
186
+ var tabIndex = disabled ? undefined : tabIndexProp;
158
187
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
159
188
  role: "combobox",
160
189
  "aria-haspopup": "listbox",
@@ -162,9 +191,9 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
162
191
  "aria-disabled": disabled,
163
192
  "aria-owns": id ? id + "-listbox" : undefined
164
193
  }, rest, {
165
- ref: ref,
194
+ ref: (0, _utils.mergeRefs)(comboboxRef, ref),
166
195
  disabled: disabled,
167
- tabIndex: disabled ? undefined : tabIndex,
196
+ tabIndex: tabIndex,
168
197
  className: classes,
169
198
  onFocus: !disabled ? handleFocus : null // The debounce is set to 200 to solve the flicker caused by the switch between input and div.
170
199
  ,
@@ -181,16 +210,12 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
181
210
  readOnly: !inputFocused,
182
211
  disabled: disabled,
183
212
  "aria-controls": id ? id + "-listbox" : undefined,
184
- tabIndex: -1,
213
+ tabIndex: editable ? 0 : -1,
185
214
  className: prefix('textbox', {
186
215
  'read-only': !inputFocused
187
216
  }),
188
217
  placeholder: inputPlaceholder,
189
- render: function render(ref, props) {
190
- return /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({
191
- ref: (0, _utils.mergeRefs)(inputRef, ref)
192
- }, props));
193
- }
218
+ render: renderInput
194
219
  }), children ? /*#__PURE__*/_react.default.createElement("span", {
195
220
  className: prefix(hasValue ? 'value' : 'placeholder'),
196
221
  "aria-placeholder": typeof children === 'string' ? children : undefined
@@ -35,6 +35,7 @@ export { default as startOfWeek } from 'date-fns/startOfWeek';
35
35
  export { default as subDays } from 'date-fns/subDays';
36
36
  export { default as isMatch } from 'date-fns/isMatch';
37
37
  export { default as isValid } from 'date-fns/isValid';
38
+ export { default as set } from 'date-fns/set';
38
39
  export declare type CalendarOnlyPropsType = 'disabledHours' | 'disabledMinutes' | 'disabledSeconds' | 'hideHours' | 'hideMinutes' | 'hideSeconds';
39
40
  export declare const calendarOnlyProps: CalendarOnlyPropsType[];
40
41
  /**
@@ -6,7 +6,7 @@ exports.__esModule = true;
6
6
  exports.disabledTime = disabledTime;
7
7
  exports.getMonthView = getMonthView;
8
8
  exports.getDateMask = getDateMask;
9
- exports.shouldOnlyTime = exports.shouldDate = exports.shouldMonth = exports.shouldTime = exports.omitHideDisabledProps = exports.calendarOnlyProps = exports.isValid = exports.isMatch = exports.subDays = exports.startOfWeek = exports.startOfMonth = exports.startOfISOWeek = exports.startOfDay = exports.setYear = exports.setSeconds = exports.setMonth = exports.setMinutes = exports.setHours = exports.setDate = exports.parseISO = exports.parse = exports.isSameSecond = exports.isSameMonth = exports.isSameDay = exports.isEqual = exports.isBefore = exports.isAfter = exports.getYear = exports.getSeconds = exports.getMonth = exports.getMinutes = exports.getHours = exports.getDaysInMonth = exports.getDay = exports.getDate = exports.format = exports.endOfWeek = exports.endOfMonth = exports.endOfISOWeek = exports.endOfDay = exports.compareAsc = exports.addMonths = exports.addDays = void 0;
9
+ exports.shouldOnlyTime = exports.shouldDate = exports.shouldMonth = exports.shouldTime = exports.omitHideDisabledProps = exports.calendarOnlyProps = exports.set = exports.isValid = exports.isMatch = exports.subDays = exports.startOfWeek = exports.startOfMonth = exports.startOfISOWeek = exports.startOfDay = exports.setYear = exports.setSeconds = exports.setMonth = exports.setMinutes = exports.setHours = exports.setDate = exports.parseISO = exports.parse = exports.isSameSecond = exports.isSameMonth = exports.isSameDay = exports.isEqual = exports.isBefore = exports.isAfter = exports.getYear = exports.getSeconds = exports.getMonth = exports.getMinutes = exports.getHours = exports.getDaysInMonth = exports.getDay = exports.getDate = exports.format = exports.endOfWeek = exports.endOfMonth = exports.endOfISOWeek = exports.endOfDay = exports.compareAsc = exports.addMonths = exports.addDays = void 0;
10
10
 
11
11
  var _pick = _interopRequireDefault(require("lodash/pick"));
12
12
 
@@ -159,6 +159,10 @@ exports.isMatch = _isMatch.default;
159
159
  var _isValid = _interopRequireDefault(require("date-fns/isValid"));
160
160
 
161
161
  exports.isValid = _isValid.default;
162
+
163
+ var _set = _interopRequireDefault(require("date-fns/set"));
164
+
165
+ exports.set = _set.default;
162
166
  var disabledTimeProps = ['disabledHours', 'disabledMinutes', 'disabledSeconds'];
163
167
  var hideTimeProps = ['hideHours', 'hideMinutes', 'hideSeconds'];
164
168
  var calendarOnlyProps = disabledTimeProps.concat(hideTimeProps);
@@ -10939,6 +10939,7 @@ textarea.rs-picker-search-input {
10939
10939
  color: var(--rs-text-primary);
10940
10940
  background-color: #fff;
10941
10941
  background-color: var(--rs-input-bg);
10942
+ outline: none;
10942
10943
  }
10943
10944
  .rs-picker-toggle.rs-btn-lg .rs-picker-toggle-textbox {
10944
10945
  padding-right: 14px;
@@ -10951,7 +10952,6 @@ textarea.rs-picker-search-input {
10951
10952
  }
10952
10953
  .rs-picker-toggle-read-only {
10953
10954
  opacity: 0;
10954
- pointer-events: none;
10955
10955
  }
10956
10956
  .rs-picker-default .rs-btn,
10957
10957
  .rs-picker-default .rs-picker-toggle {