rsuite 5.37.4 → 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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ # [5.38.0](https://github.com/rsuite/rsuite/compare/v5.37.4...v5.38.0) (2023-08-18)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Calendar:** fix onMonthChange not fired when clicking on dates ([#3335](https://github.com/rsuite/rsuite/issues/3335)) ([035d287](https://github.com/rsuite/rsuite/commit/035d287c0f998e1f1aeed62dca7d2cfeded46167))
6
+ - **InputPicker:** cursor should be text ([#3334](https://github.com/rsuite/rsuite/issues/3334)) ([eed2337](https://github.com/rsuite/rsuite/commit/eed2337546665878c51cf3d88d0801c8a37a908d))
7
+
8
+ ### Features
9
+
10
+ - **Calendar:** add cellClassName prop ([#3336](https://github.com/rsuite/rsuite/issues/3336)) ([cb7c2ae](https://github.com/rsuite/rsuite/commit/cb7c2aee30985219cb0d29155a3ae3d2f739d1d2)), closes [#3333](https://github.com/rsuite/rsuite/issues/3333)
11
+
1
12
  ## [5.37.4](https://github.com/rsuite/rsuite/compare/v5.37.3...v5.37.4) (2023-08-11)
2
13
 
3
14
  ### Bug Fixes
@@ -39,7 +39,6 @@
39
39
  padding-right: @dropdown-toggle-padding-right;
40
40
  // Fixed: Content is not centered when customizing renderTitle.
41
41
  display: inline-block;
42
- cursor: pointer;
43
42
  }
44
43
 
45
44
  // Horizontal dividers
@@ -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;
@@ -44,7 +44,8 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
44
44
  onSelect = props.onSelect,
45
45
  renderCell = props.renderCell,
46
46
  value = props.value,
47
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "bordered", "className", "classPrefix", "compact", "defaultValue", "isoWeek", "locale", "onChange", "onMonthChange", "onSelect", "renderCell", "value"]);
47
+ cellClassName = props.cellClassName,
48
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "bordered", "className", "classPrefix", "compact", "defaultValue", "isoWeek", "locale", "onChange", "onMonthChange", "onSelect", "renderCell", "value", "cellClassName"]);
48
49
 
49
50
  var _useCalendarDate = (0, _useCalendarDate2.default)(value, defaultValue),
50
51
  calendarDate = _useCalendarDate.calendarDate,
@@ -56,21 +57,18 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
56
57
  var handleChange = (0, _react.useCallback)(function (nextValue) {
57
58
  setCalendarDate(nextValue);
58
59
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue);
59
- }, [setCalendarDate, onChange]);
60
+
61
+ if (!(0, _isSameMonth.default)(nextValue, calendarDate)) {
62
+ onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(nextValue);
63
+ }
64
+ }, [setCalendarDate, onChange, calendarDate, onMonthChange]);
60
65
  var handleClickToday = (0, _react.useCallback)(function () {
61
66
  handleChange(new Date());
62
67
  }, [handleChange]);
63
68
  var handleSelect = (0, _react.useCallback)(function (nextValue) {
64
69
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextValue);
65
70
  handleChange(nextValue);
66
- }, [handleChange, onSelect]); // Trigger onMonthChange when the month changes
67
-
68
- var handleMonthChange = (0, _react.useCallback)(function (nextValue) {
69
- if (!(0, _isSameMonth.default)(nextValue, calendarDate)) {
70
- handleChange(nextValue);
71
- onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(nextValue);
72
- }
73
- }, [calendarDate, handleChange, onMonthChange]);
71
+ }, [handleChange, onSelect]);
74
72
 
75
73
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
76
74
  prefix = _useClassNames.prefix,
@@ -108,9 +106,10 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
108
106
  },
109
107
  renderToolbar: renderToolbar,
110
108
  renderCell: customRenderCell,
111
- onMoveForward: handleMonthChange,
112
- onMoveBackward: handleMonthChange,
113
- onChangeMonth: handleMonthChange,
109
+ cellClassName: cellClassName,
110
+ onMoveForward: handleChange,
111
+ onMoveBackward: handleChange,
112
+ onChangeMonth: handleChange,
114
113
  onSelect: handleSelect
115
114
  }));
116
115
  });
@@ -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 */
@@ -63,13 +63,14 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
63
63
  onToggleMonthDropdown = props.onToggleMonthDropdown,
64
64
  onToggleTimeDropdown = props.onToggleTimeDropdown,
65
65
  calendarDate = props.calendarDate,
66
+ cellClassName = props.cellClassName,
66
67
  renderCell = props.renderCell,
67
68
  renderTitle = props.renderTitle,
68
69
  renderToolbar = props.renderToolbar,
69
70
  showMeridian = props.showMeridian,
70
71
  showWeekNumbers = props.showWeekNumbers,
71
72
  inline = props.inline,
72
- rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
73
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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"]);
73
74
 
74
75
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
75
76
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -155,11 +156,12 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
155
156
  onChangeTime: onChangeTime,
156
157
  onMouseMove: onMouseMove,
157
158
  onSelect: onSelect,
159
+ cellClassName: cellClassName,
158
160
  renderCell: renderCell,
159
161
  showWeekNumbers: showWeekNumbers,
160
162
  inline: inline
161
163
  };
162
- }, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangeTime, onMouseMove, onSelect, renderCell, showWeekNumbers]);
164
+ }, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangeTime, onMouseMove, onSelect, cellClassName, renderCell, showWeekNumbers]);
163
165
  return /*#__PURE__*/_react.default.createElement(_CalendarContext.CalendarProvider, {
164
166
  value: contextValue
165
167
  }, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, (0, _dateUtils.omitHideDisabledProps)(rest), {
@@ -41,6 +41,7 @@ var TableRow = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
41
41
  isoWeek = _useCalendarContext.isoWeek,
42
42
  onMouseMove = _useCalendarContext.onMouseMove,
43
43
  onSelect = _useCalendarContext.onSelect,
44
+ cellClassName = _useCalendarContext.cellClassName,
44
45
  renderCell = _useCalendarContext.renderCell,
45
46
  overrideLocale = _useCalendarContext.locale,
46
47
  showWeekNumbers = _useCalendarContext.showWeekNumbers;
@@ -89,7 +90,9 @@ var TableRow = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
89
90
 
90
91
  var isEndSelected = !unSameMonth && selectedEndDate && _utils.DateUtils.isSameDay(thisDate, selectedEndDate);
91
92
 
92
- var isSelected = isRangeSelectionMode ? isStartSelected || isEndSelected : _utils.DateUtils.isSameDay(thisDate, selected);
93
+ var isSelected = isRangeSelectionMode ? isStartSelected || isEndSelected : _utils.DateUtils.isSameDay(thisDate, selected); // TODO-Doma Move those logic that's for DatePicker/DateRangePicker to a separate component
94
+ // Calendar is not supposed to be reused this way
95
+
93
96
  var inRange = false; // for Selected
94
97
 
95
98
  if (selectedStartDate && selectedEndDate) {
@@ -113,7 +116,7 @@ var TableRow = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
113
116
  }
114
117
  }
115
118
 
116
- var _classes = prefix('cell', {
119
+ var _classes = merge(prefix('cell', {
117
120
  'cell-un-same-month': unSameMonth,
118
121
  'cell-is-today': isToday,
119
122
  'cell-selected': isSelected,
@@ -121,7 +124,7 @@ var TableRow = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
121
124
  'cell-selected-end': isEndSelected,
122
125
  'cell-in-range': !unSameMonth && inRange,
123
126
  'cell-disabled': disabled
124
- });
127
+ }), cellClassName === null || cellClassName === void 0 ? void 0 : cellClassName(thisDate));
125
128
 
126
129
  var title = formatDate ? formatDate(thisDate, formatStr) : _utils.DateUtils.format(thisDate, formatStr);
127
130
  days.push( /*#__PURE__*/_react.default.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
  }
@@ -2708,7 +2708,6 @@ tbody.rs-anim-collapse.rs-anim-in {
2708
2708
  z-index: 5;
2709
2709
  padding-left: 32px;
2710
2710
  display: inline-block;
2711
- cursor: pointer;
2712
2711
  }
2713
2712
  .rs-picker-subtle.rs-picker-disabled .picker-subtle-toggle {
2714
2713
  cursor: not-allowed;
@@ -4902,7 +4901,6 @@ label:hover .rs-checkbox-wrapper .rs-checkbox-inner::before {
4902
4901
  z-index: 5;
4903
4902
  padding-left: 32px;
4904
4903
  display: inline-block;
4905
- cursor: pointer;
4906
4904
  }
4907
4905
  .rs-dropdown-toggle.rs-dropdown-toggle-no-caret {
4908
4906
  padding-left: 12px;
@@ -11502,7 +11500,6 @@ textarea.rs-picker-search-input {
11502
11500
  z-index: 5;
11503
11501
  padding-left: 32px;
11504
11502
  display: inline-block;
11505
- cursor: pointer;
11506
11503
  color: #575757;
11507
11504
  color: var(--rs-text-primary);
11508
11505
  border: 1px solid #e5e5ea;
@@ -11521,7 +11518,6 @@ textarea.rs-picker-search-input {
11521
11518
  z-index: 5;
11522
11519
  padding-left: 32px;
11523
11520
  display: inline-block;
11524
- cursor: pointer;
11525
11521
  }
11526
11522
  .rs-picker-subtle.rs-picker-disabled .rs-picker-toggle {
11527
11523
  cursor: not-allowed;