rsuite 5.37.3 → 5.38.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 (38) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/Calendar/styles/index.less +6 -4
  3. package/DatePicker/styles/index.less +16 -6
  4. package/Dropdown/styles/mixin.less +0 -1
  5. package/InputGroup/styles/index.less +3 -3
  6. package/Picker/styles/mixin.less +1 -0
  7. package/cjs/Calendar/Calendar.d.ts +6 -1
  8. package/cjs/Calendar/Calendar.js +12 -13
  9. package/cjs/Calendar/CalendarContainer.d.ts +2 -0
  10. package/cjs/Calendar/CalendarContainer.js +4 -2
  11. package/cjs/Calendar/TableRow.js +6 -3
  12. package/cjs/Calendar/types.d.ts +1 -0
  13. package/cjs/InputPicker/InputPicker.js +1 -4
  14. package/cjs/Overlay/OverlayTrigger.js +1 -1
  15. package/dist/rsuite-no-reset-rtl.css +21 -13
  16. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  17. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  18. package/dist/rsuite-no-reset.css +21 -13
  19. package/dist/rsuite-no-reset.min.css +1 -1
  20. package/dist/rsuite-no-reset.min.css.map +1 -1
  21. package/dist/rsuite-rtl.css +21 -13
  22. package/dist/rsuite-rtl.min.css +1 -1
  23. package/dist/rsuite-rtl.min.css.map +1 -1
  24. package/dist/rsuite.css +21 -13
  25. package/dist/rsuite.js +5 -5
  26. package/dist/rsuite.min.css +1 -1
  27. package/dist/rsuite.min.css.map +1 -1
  28. package/dist/rsuite.min.js +1 -1
  29. package/dist/rsuite.min.js.map +1 -1
  30. package/esm/Calendar/Calendar.d.ts +6 -1
  31. package/esm/Calendar/Calendar.js +12 -13
  32. package/esm/Calendar/CalendarContainer.d.ts +2 -0
  33. package/esm/Calendar/CalendarContainer.js +4 -2
  34. package/esm/Calendar/TableRow.js +6 -3
  35. package/esm/Calendar/types.d.ts +1 -0
  36. package/esm/InputPicker/InputPicker.js +1 -4
  37. package/esm/Overlay/OverlayTrigger.js +1 -1
  38. package/package.json +1 -1
@@ -17,12 +17,17 @@ export interface CalendarProps extends WithAsProps {
17
17
  locale?: CalendarLocale;
18
18
  /** Callback fired before the value changed */
19
19
  onChange?: (date: Date) => void;
20
- /** Callback fired before the month changed */
20
+ /**
21
+ * Callback fired before the month changed
22
+ * @todo-Doma Change signature to `onMonthChange(year: number, month: number, reason: string)`?
23
+ */
21
24
  onMonthChange?: (date: Date) => void;
22
25
  /** Callback fired before the date selected */
23
26
  onSelect?: (date: Date) => void;
24
27
  /** Custom render calendar cells */
25
28
  renderCell?: (date: Date) => React.ReactNode;
29
+ /** Custom cell classes base on it's date */
30
+ cellClassName?: (date: Date) => string | undefined;
26
31
  }
27
32
  declare const Calendar: RsRefForwardingComponent<typeof CalendarContainer, CalendarProps>;
28
33
  export default Calendar;
@@ -25,7 +25,8 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
25
25
  onSelect = props.onSelect,
26
26
  renderCell = props.renderCell,
27
27
  value = props.value,
28
- rest = _objectWithoutPropertiesLoose(props, ["as", "bordered", "className", "classPrefix", "compact", "defaultValue", "isoWeek", "locale", "onChange", "onMonthChange", "onSelect", "renderCell", "value"]);
28
+ cellClassName = props.cellClassName,
29
+ rest = _objectWithoutPropertiesLoose(props, ["as", "bordered", "className", "classPrefix", "compact", "defaultValue", "isoWeek", "locale", "onChange", "onMonthChange", "onSelect", "renderCell", "value", "cellClassName"]);
29
30
 
30
31
  var _useCalendarDate = useCalendarDate(value, defaultValue),
31
32
  calendarDate = _useCalendarDate.calendarDate,
@@ -37,21 +38,18 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
37
38
  var handleChange = useCallback(function (nextValue) {
38
39
  setCalendarDate(nextValue);
39
40
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
40
- }, [setCalendarDate, onChange]);
41
+
42
+ if (!isSameMonth(nextValue, calendarDate)) {
43
+ onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(nextValue);
44
+ }
45
+ }, [setCalendarDate, onChange, calendarDate, onMonthChange]);
41
46
  var handleClickToday = useCallback(function () {
42
47
  handleChange(new Date());
43
48
  }, [handleChange]);
44
49
  var handleSelect = useCallback(function (nextValue) {
45
50
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextValue);
46
51
  handleChange(nextValue);
47
- }, [handleChange, onSelect]); // Trigger onMonthChange when the month changes
48
-
49
- var handleMonthChange = useCallback(function (nextValue) {
50
- if (!isSameMonth(nextValue, calendarDate)) {
51
- handleChange(nextValue);
52
- onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(nextValue);
53
- }
54
- }, [calendarDate, handleChange, onMonthChange]);
52
+ }, [handleChange, onSelect]);
55
53
 
56
54
  var _useClassNames = useClassNames(classPrefix),
57
55
  prefix = _useClassNames.prefix,
@@ -89,9 +87,10 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
89
87
  },
90
88
  renderToolbar: renderToolbar,
91
89
  renderCell: customRenderCell,
92
- onMoveForward: handleMonthChange,
93
- onMoveBackward: handleMonthChange,
94
- onChangeMonth: handleMonthChange,
90
+ cellClassName: cellClassName,
91
+ onMoveForward: handleChange,
92
+ onMoveBackward: handleChange,
93
+ onChangeMonth: handleChange,
95
94
  onSelect: handleSelect
96
95
  }));
97
96
  });
@@ -52,6 +52,8 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
52
52
  onSelect?: (date: Date, event: React.MouseEvent) => void;
53
53
  /** Custom rendering cell*/
54
54
  renderCell?: (date: Date) => React.ReactNode;
55
+ /** Custom cell classes base on it's date */
56
+ cellClassName?: (date: Date) => string | undefined;
55
57
  /** Called when opening the month view */
56
58
  onToggleMonthDropdown?: (toggle: boolean) => void;
57
59
  /** Called when opening the time view */
@@ -40,13 +40,14 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
40
40
  onToggleMonthDropdown = props.onToggleMonthDropdown,
41
41
  onToggleTimeDropdown = props.onToggleTimeDropdown,
42
42
  calendarDate = props.calendarDate,
43
+ cellClassName = props.cellClassName,
43
44
  renderCell = props.renderCell,
44
45
  renderTitle = props.renderTitle,
45
46
  renderToolbar = props.renderToolbar,
46
47
  showMeridian = props.showMeridian,
47
48
  showWeekNumbers = props.showWeekNumbers,
48
49
  inline = props.inline,
49
- rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
50
+ rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "cellClassName", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
50
51
 
51
52
  var _useClassNames = useClassNames(classPrefix),
52
53
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -132,11 +133,12 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
132
133
  onChangeTime: onChangeTime,
133
134
  onMouseMove: onMouseMove,
134
135
  onSelect: onSelect,
136
+ cellClassName: cellClassName,
135
137
  renderCell: renderCell,
136
138
  showWeekNumbers: showWeekNumbers,
137
139
  inline: inline
138
140
  };
139
- }, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangeTime, onMouseMove, onSelect, renderCell, showWeekNumbers]);
141
+ }, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangeTime, onMouseMove, onSelect, cellClassName, renderCell, showWeekNumbers]);
140
142
  return /*#__PURE__*/React.createElement(CalendarProvider, {
141
143
  value: contextValue
142
144
  }, /*#__PURE__*/React.createElement(Component, _extends({}, omitHideDisabledProps(rest), {
@@ -25,6 +25,7 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
25
25
  isoWeek = _useCalendarContext.isoWeek,
26
26
  onMouseMove = _useCalendarContext.onMouseMove,
27
27
  onSelect = _useCalendarContext.onSelect,
28
+ cellClassName = _useCalendarContext.cellClassName,
28
29
  renderCell = _useCalendarContext.renderCell,
29
30
  overrideLocale = _useCalendarContext.locale,
30
31
  showWeekNumbers = _useCalendarContext.showWeekNumbers;
@@ -67,7 +68,9 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
67
68
  var unSameMonth = !(inSameMonth !== null && inSameMonth !== void 0 && inSameMonth(thisDate));
68
69
  var isStartSelected = !unSameMonth && selectedStartDate && DateUtils.isSameDay(thisDate, selectedStartDate);
69
70
  var isEndSelected = !unSameMonth && selectedEndDate && DateUtils.isSameDay(thisDate, selectedEndDate);
70
- var isSelected = isRangeSelectionMode ? isStartSelected || isEndSelected : DateUtils.isSameDay(thisDate, selected);
71
+ var isSelected = isRangeSelectionMode ? isStartSelected || isEndSelected : DateUtils.isSameDay(thisDate, selected); // TODO-Doma Move those logic that's for DatePicker/DateRangePicker to a separate component
72
+ // Calendar is not supposed to be reused this way
73
+
71
74
  var inRange = false; // for Selected
72
75
 
73
76
  if (selectedStartDate && selectedEndDate) {
@@ -91,7 +94,7 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
91
94
  }
92
95
  }
93
96
 
94
- var _classes = prefix('cell', {
97
+ var _classes = merge(prefix('cell', {
95
98
  'cell-un-same-month': unSameMonth,
96
99
  'cell-is-today': isToday,
97
100
  'cell-selected': isSelected,
@@ -99,7 +102,7 @@ var TableRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
99
102
  'cell-selected-end': isEndSelected,
100
103
  'cell-in-range': !unSameMonth && inRange,
101
104
  'cell-disabled': disabled
102
- });
105
+ }), cellClassName === null || cellClassName === void 0 ? void 0 : cellClassName(thisDate));
103
106
 
104
107
  var title = formatDate ? formatDate(thisDate, formatStr) : DateUtils.format(thisDate, formatStr);
105
108
  days.push( /*#__PURE__*/React.createElement("div", {
@@ -13,6 +13,7 @@ export interface CalendarInnerContextValue {
13
13
  onMouseMove?: (date: Date) => void;
14
14
  onSelect?: (date: Date, event: React.MouseEvent) => void;
15
15
  renderCell?: (date: Date) => React.ReactNode;
16
+ cellClassName?: (date: Date) => string | undefined;
16
17
  showWeekNumbers?: boolean;
17
18
  inline?: boolean;
18
19
  }
@@ -502,9 +502,6 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
502
502
  (_triggerRef$current4 = triggerRef.current) === null || _triggerRef$current4 === void 0 ? void 0 : _triggerRef$current4.open();
503
503
  }
504
504
  }, [readOnly]);
505
- var handleBlur = useCallback(function () {
506
- setOpen(false);
507
- }, []);
508
505
  var handleEnter = useCallback(function () {
509
506
  focusInput();
510
507
  setOpen(true);
@@ -742,7 +739,7 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
742
739
  }, tagElements, displaySearchInput && /*#__PURE__*/React.createElement(InputSearch, _extends({}, inputProps, {
743
740
  tabIndex: tabIndex,
744
741
  readOnly: readOnly,
745
- onBlur: createChainedFunction(handleBlur, onBlur),
742
+ onBlur: onBlur,
746
743
  onFocus: createChainedFunction(handleFocus, onFocus),
747
744
  inputRef: inputRef,
748
745
  onChange: handleSearch,
@@ -230,7 +230,7 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
230
230
  }, [enterable, open, handleOpen]);
231
231
  var handleDelayedClose = useCallback(function () {
232
232
  if (!enterable) {
233
- handleClose();
233
+ return handleClose();
234
234
  }
235
235
 
236
236
  isOnTrigger.current = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.37.3",
3
+ "version": "5.38.0",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",