rsuite 5.64.0 → 5.64.2

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 (40) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/Radio/styles/index.css +3 -0
  3. package/Radio/styles/index.less +4 -0
  4. package/cjs/DateInput/DateField.js +2 -2
  5. package/cjs/DateInput/DateInput.js +12 -5
  6. package/cjs/DateInput/hooks/useFieldCursor.d.ts +1 -0
  7. package/cjs/DateInput/hooks/useFieldCursor.js +11 -5
  8. package/cjs/DateRangeInput/DateRangeInput.js +11 -3
  9. package/cjs/Drawer/Drawer.d.ts +1 -1
  10. package/cjs/Modal/Modal.js +0 -1
  11. package/cjs/Modal/utils.d.ts +0 -1
  12. package/cjs/Modal/utils.js +3 -4
  13. package/cjs/Panel/PanelBody.js +4 -3
  14. package/dist/rsuite-no-reset-rtl.css +3 -0
  15. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  16. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  17. package/dist/rsuite-no-reset.css +3 -0
  18. package/dist/rsuite-no-reset.min.css +1 -1
  19. package/dist/rsuite-no-reset.min.css.map +1 -1
  20. package/dist/rsuite-rtl.css +3 -0
  21. package/dist/rsuite-rtl.min.css +1 -1
  22. package/dist/rsuite-rtl.min.css.map +1 -1
  23. package/dist/rsuite.css +3 -0
  24. package/dist/rsuite.js +63 -52
  25. package/dist/rsuite.js.map +1 -1
  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/DateInput/DateField.js +2 -2
  31. package/esm/DateInput/DateInput.js +12 -5
  32. package/esm/DateInput/hooks/useFieldCursor.d.ts +1 -0
  33. package/esm/DateInput/hooks/useFieldCursor.js +11 -5
  34. package/esm/DateRangeInput/DateRangeInput.js +11 -3
  35. package/esm/Drawer/Drawer.d.ts +1 -1
  36. package/esm/Modal/Modal.js +0 -1
  37. package/esm/Modal/utils.d.ts +0 -1
  38. package/esm/Modal/utils.js +3 -4
  39. package/esm/Panel/PanelBody.js +4 -3
  40. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## [5.64.2](https://github.com/rsuite/rsuite/compare/v5.64.1...v5.64.2) (2024-06-21)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **Panel:** fix unable to add className to PanelBody ([#3845](https://github.com/rsuite/rsuite/issues/3845)) ([ca70540](https://github.com/rsuite/rsuite/commit/ca705409fcd5539b2e95e34be3245414ede84237))
7
+ * **radio:** disabled radio control hover cursor ([#3847](https://github.com/rsuite/rsuite/issues/3847)) ([99f7859](https://github.com/rsuite/rsuite/commit/99f7859921defdd7b7fc980552653a4c2f391028))
8
+ * remove unnecessary dependencies ([#3844](https://github.com/rsuite/rsuite/issues/3844)) ([51d70ba](https://github.com/rsuite/rsuite/commit/51d70ba00a35c5fc8d75c324cb856e811adebcd1))
9
+
10
+
11
+
12
+ ## [5.64.1](https://github.com/rsuite/rsuite/compare/v5.64.0...v5.64.1) (2024-06-14)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **DateInput,DateRangeInput:** fix date input error when manually input date ([#3832](https://github.com/rsuite/rsuite/issues/3832)) ([40db883](https://github.com/rsuite/rsuite/commit/40db883280d940aa871a77f92608ae0d2c37f2e9))
18
+ * **Modal:** fix `overflow` not working when Modal is in Drawer ([#3839](https://github.com/rsuite/rsuite/issues/3839)) ([d65b28d](https://github.com/rsuite/rsuite/commit/d65b28dc2ba3fb534ee760ace5bc93dd34e06afb))
19
+
20
+
21
+
1
22
  # [5.64.0](https://github.com/rsuite/rsuite/compare/v5.62.1...v5.64.0) (2024-05-30)
2
23
 
3
24
 
@@ -167,6 +167,9 @@
167
167
  bottom: -10px;
168
168
  left: -10px;
169
169
  }
170
+ .rs-radio-control [type='radio']:disabled {
171
+ cursor: not-allowed;
172
+ }
170
173
  .rs-radio-control::before,
171
174
  .rs-radio-control .rs-radio-inner::before,
172
175
  .rs-radio-control .rs-radio-inner::after {
@@ -40,6 +40,10 @@
40
40
  right: -@radio-sense-width;
41
41
  bottom: -@radio-sense-width;
42
42
  left: -@radio-sense-width;
43
+
44
+ &:disabled {
45
+ cursor: @cursor-disabled;
46
+ }
43
47
  }
44
48
 
45
49
  &::before,
@@ -170,7 +170,7 @@ var useDateField = exports.useDateField = function useDateField(format, localize
170
170
  hour = dateField.hour,
171
171
  minute = dateField.minute,
172
172
  second = dateField.second;
173
- var date = new Date(year || 0, typeof month === 'number' ? month - 1 : 0,
173
+ var date = new Date(year || 0, typeof month === 'number' ? Math.max(month - 1, 0) : 0,
174
174
  // The default day is 1 when the value is null, otherwise it becomes the last day of the month.
175
175
  day || 1, hour || 0, minute || 0, second || 0);
176
176
  if (typeof type === 'undefined' || typeof value === 'undefined') {
@@ -183,7 +183,7 @@ var useDateField = exports.useDateField = function useDateField(format, localize
183
183
 
184
184
  // Invalid Date
185
185
  return new Date('');
186
- } else if (type === 'day' && value === 0) {
186
+ } else if ((type === 'day' || type === 'month') && value === 0) {
187
187
  // Invalid Date. If the type is day and the value is 0, it is considered an invalid date.
188
188
  return new Date('');
189
189
  }
@@ -61,6 +61,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
61
61
  isEmptyValue = _useDateInputState.isEmptyValue;
62
62
  var _useFieldCursor = (0, _useFieldCursor2.default)(formatStr, valueProp),
63
63
  isMoveCursor = _useFieldCursor.isMoveCursor,
64
+ isResetValue = _useFieldCursor.isResetValue,
64
65
  increment = _useFieldCursor.increment,
65
66
  reset = _useFieldCursor.reset;
66
67
  var dateString = toDateString();
@@ -87,7 +88,11 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
87
88
  }));
88
89
  setSelectedState(state);
89
90
  setSelectionRange(state.selectionStart, state.selectionEnd);
90
- reset();
91
+
92
+ // If the selected field changes, reset the input state
93
+ if (selectedState.selectedPattern !== state.selectedPattern) {
94
+ reset();
95
+ }
91
96
  });
92
97
  var onSegmentValueChange = (0, _hooks.useEventCallback)(function (event) {
93
98
  var input = event.target;
@@ -110,14 +115,12 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
110
115
  if (!pattern) {
111
116
  return;
112
117
  }
113
- increment();
114
118
  var field = getDateField(pattern);
115
119
  var value = parseInt(key, 10);
116
120
  var padValue = parseInt("" + (field.value || '') + key, 10);
117
121
  var newValue = value;
118
-
119
- // Check if the value entered by the user is a valid date
120
- if ((0, _utils2.validateDateTime)(field.name, padValue)) {
122
+ if ((0, _utils2.validateDateTime)(field.name, padValue) && !isResetValue()) {
123
+ // Check if the value entered by the user is a valid date
121
124
  newValue = padValue;
122
125
  }
123
126
  setDateField(pattern, newValue, function (date) {
@@ -133,6 +136,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
133
136
  }));
134
137
  setSelectedState(nextState);
135
138
  setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
139
+ increment();
136
140
 
137
141
  // If the field is full value, move the cursor to the next field
138
142
  if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
@@ -161,6 +165,9 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
161
165
  }));
162
166
  setSelectedState(state);
163
167
  setSelectionRange(state.selectionStart, state.selectionEnd);
168
+ if (selectedState.selectedPattern !== state.selectedPattern) {
169
+ reset();
170
+ }
164
171
  });
165
172
  var onKeyboardInput = (0, _useKeyboardInputEvent.default)({
166
173
  onSegmentChange: onSegmentChange,
@@ -2,5 +2,6 @@ export declare function useFieldCursor<V = Date | null>(format: string, value?:
2
2
  increment: () => void;
3
3
  reset: () => void;
4
4
  isMoveCursor: (value: number, pattern: string) => boolean;
5
+ isResetValue: () => boolean;
5
6
  };
6
7
  export default useFieldCursor;
@@ -9,12 +9,17 @@ var _utils = require("../utils");
9
9
  var _hooks = require("../../internals/hooks");
10
10
  function useFieldCursor(format, value) {
11
11
  var typeCount = (0, _react.useRef)(0);
12
- var increment = function increment() {
12
+ var increment = (0, _react.useCallback)(function () {
13
13
  typeCount.current += 1;
14
- };
15
- var reset = function reset() {
14
+ }, []);
15
+ var reset = (0, _react.useCallback)(function () {
16
16
  typeCount.current = 0;
17
- };
17
+ }, []);
18
+ var isResetValue = (0, _react.useCallback)(function () {
19
+ return typeCount.current === 0;
20
+ }, []);
21
+
22
+ // Check if the cursor should move to the next field
18
23
  var isMoveCursor = (0, _react.useCallback)(function (value, pattern) {
19
24
  var patternGroup = (0, _utils.getPatternGroups)(format, pattern);
20
25
  if (value.toString().length === patternGroup.length) {
@@ -48,7 +53,8 @@ function useFieldCursor(format, value) {
48
53
  return {
49
54
  increment: increment,
50
55
  reset: reset,
51
- isMoveCursor: isMoveCursor
56
+ isMoveCursor: isMoveCursor,
57
+ isResetValue: isResetValue
52
58
  };
53
59
  }
54
60
  var _default = exports.default = useFieldCursor;
@@ -70,6 +70,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
70
70
  }));
71
71
  var _useFieldCursor = (0, _DateInput.useFieldCursor)(formatStr, valueProp),
72
72
  isMoveCursor = _useFieldCursor.isMoveCursor,
73
+ isResetValue = _useFieldCursor.isResetValue,
73
74
  increment = _useFieldCursor.increment,
74
75
  reset = _useFieldCursor.reset;
75
76
  var getActiveState = function getActiveState(type) {
@@ -127,7 +128,11 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
127
128
  }));
128
129
  setSelectedState(state);
129
130
  setSelectionRange(state.selectionStart, state.selectionEnd);
130
- reset();
131
+
132
+ // If the selected field changes, reset the input state
133
+ if (selectedState.selectedPattern !== state.selectedPattern) {
134
+ reset();
135
+ }
131
136
  });
132
137
  var onSegmentValueChange = (0, _hooks.useEventCallback)(function (event) {
133
138
  var input = event.target;
@@ -150,14 +155,13 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
150
155
  if (!pattern) {
151
156
  return;
152
157
  }
153
- increment();
154
158
  var field = getActiveState().getDateField(pattern);
155
159
  var value = parseInt(key, 10);
156
160
  var padValue = parseInt("" + (field.value || '') + key, 10);
157
161
  var newValue = value;
158
162
 
159
163
  // Check if the value entered by the user is a valid date
160
- if ((0, _DateInput.validateDateTime)(field.name, padValue)) {
164
+ if ((0, _DateInput.validateDateTime)(field.name, padValue) && !isResetValue()) {
161
165
  newValue = padValue;
162
166
  }
163
167
  getActiveState().setDateField(pattern, newValue, function (date) {
@@ -173,6 +177,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
173
177
  }));
174
178
  setSelectedState(nextState);
175
179
  setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
180
+ increment();
176
181
 
177
182
  // If the field is full value, move the cursor to the next field
178
183
  if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
@@ -209,6 +214,9 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
209
214
  setDateType(dateType);
210
215
  setSelectedState(state);
211
216
  setSelectionRange(state.selectionStart, state.selectionEnd);
217
+ if (selectedState.selectedPattern !== state.selectedPattern) {
218
+ reset();
219
+ }
212
220
  });
213
221
  var onKeyboardInput = (0, _DateInput.useKeyboardInputEvent)({
214
222
  onSegmentChange: onSegmentChange,
@@ -6,7 +6,7 @@ import DrawerHeader from './DrawerHeader';
6
6
  import DrawerActions from './DrawerActions';
7
7
  import DrawerFooter from './DrawerFooter';
8
8
  import DrawerTitle from './DrawerTitle';
9
- export interface DrawerProps extends ModalProps {
9
+ export interface DrawerProps extends Omit<ModalProps, 'overflow'> {
10
10
  /** The placement of Drawer */
11
11
  placement?: TypeAttributes.Placement4;
12
12
  /** Custom close button */
@@ -93,7 +93,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
93
93
  // The style of the Modal body will be updated with the size of the window or container.
94
94
  var _useBodyStyles = (0, _utils2.useBodyStyles)(dialogRef, {
95
95
  overflow: overflow,
96
- drawer: isDrawer,
97
96
  prefix: prefix,
98
97
  size: size
99
98
  }),
@@ -3,7 +3,6 @@ import { TypeAttributes } from '../internals/types';
3
3
  export type ModalSize = TypeAttributes.Size | 'full' | number | string;
4
4
  export declare const useBodyStyles: (ref: React.RefObject<HTMLElement>, options: {
5
5
  overflow: boolean;
6
- drawer: boolean;
7
6
  size?: ModalSize | undefined;
8
7
  prefix: (...classes: any) => string;
9
8
  }) => [import("react").CSSProperties | null, (entering?: boolean) => void, () => void];
@@ -13,7 +13,6 @@ var useBodyStyles = exports.useBodyStyles = function useBodyStyles(ref, options)
13
13
  bodyStyles = _useState[0],
14
14
  setBodyStyles = _useState[1];
15
15
  var overflow = options.overflow,
16
- drawer = options.drawer,
17
16
  prefix = options.prefix,
18
17
  size = options.size;
19
18
  var windowResizeListener = (0, _react.useRef)();
@@ -52,11 +51,11 @@ var useBodyStyles = exports.useBodyStyles = function useBodyStyles(ref, options)
52
51
  contentElementResizeObserver.current = null;
53
52
  }, []);
54
53
  var onChangeBodyStyles = (0, _react.useCallback)(function (entering) {
55
- if (drawer || size === 'full') {
54
+ if (!overflow || size === 'full') {
56
55
  setBodyStyles(null);
57
56
  return;
58
57
  }
59
- if (overflow && ref.current) {
58
+ if (ref.current) {
60
59
  updateBodyStyles(undefined, entering);
61
60
  contentElement.current = ref.current.querySelector("." + prefix('content'));
62
61
  if (!windowResizeListener.current) {
@@ -69,7 +68,7 @@ var useBodyStyles = exports.useBodyStyles = function useBodyStyles(ref, options)
69
68
  contentElementResizeObserver.current.observe(contentElement.current);
70
69
  }
71
70
  }
72
- }, [drawer, overflow, prefix, ref, size, updateBodyStyles]);
71
+ }, [overflow, prefix, ref, size, updateBodyStyles]);
73
72
  (0, _react.useEffect)(function () {
74
73
  return onDestroyEvents;
75
74
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -10,7 +10,7 @@ var _react = _interopRequireDefault(require("react"));
10
10
  var _Collapse = _interopRequireDefault(require("../Animation/Collapse"));
11
11
  var _hooks = require("../internals/hooks");
12
12
  var _ScrollView = _interopRequireDefault(require("../internals/ScrollView"));
13
- var _excluded = ["classPrefix", "children", "collapsible", "expanded", "bodyFill", "role", "id", "labelId", "scrollShadow", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "onScroll"],
13
+ var _excluded = ["classPrefix", "children", "collapsible", "expanded", "bodyFill", "role", "id", "labelId", "scrollShadow", "className", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "onScroll"],
14
14
  _excluded2 = ["className"];
15
15
  var PanelBody = function PanelBody(props) {
16
16
  var _props$classPrefix = props.classPrefix,
@@ -23,6 +23,7 @@ var PanelBody = function PanelBody(props) {
23
23
  id = props.id,
24
24
  labelId = props.labelId,
25
25
  scrollShadow = props.scrollShadow,
26
+ className = props.className,
26
27
  onEnter = props.onEnter,
27
28
  onEntering = props.onEntering,
28
29
  onEntered = props.onEntered,
@@ -35,9 +36,9 @@ var PanelBody = function PanelBody(props) {
35
36
  merge = _useClassNames.merge,
36
37
  prefix = _useClassNames.prefix,
37
38
  withClassPrefix = _useClassNames.withClassPrefix;
38
- var bodyClasses = withClassPrefix({
39
+ var bodyClasses = merge(className, withClassPrefix({
39
40
  fill: bodyFill
40
- });
41
+ }));
41
42
  var renderBody = function renderBody(bodyProps) {
42
43
  return /*#__PURE__*/_react.default.createElement(_ScrollView.default, (0, _extends2.default)({}, rest, bodyProps, {
43
44
  customScrollbar: true,
@@ -12101,6 +12101,9 @@ textarea.rs-inline-edit-sm .rs-plaintext {
12101
12101
  bottom: -10px;
12102
12102
  right: -10px;
12103
12103
  }
12104
+ .rs-radio-control [type='radio']:disabled {
12105
+ cursor: not-allowed;
12106
+ }
12104
12107
  .rs-radio-control::before,
12105
12108
  .rs-radio-control .rs-radio-inner::before,
12106
12109
  .rs-radio-control .rs-radio-inner::after {