rsuite 5.24.1 → 5.25.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/Breadcrumb/styles/index.less +4 -0
  2. package/Button/styles/index.less +14 -10
  3. package/CHANGELOG.md +18 -0
  4. package/Picker/styles/index.less +5 -8
  5. package/Picker/styles/mixin.less +3 -20
  6. package/cjs/@types/global.d.ts +6 -0
  7. package/cjs/Breadcrumb/BreadcrumbItem.js +1 -1
  8. package/cjs/Calendar/MonthDropdown.js +2 -4
  9. package/cjs/CustomProvider/CustomProvider.d.ts +2 -0
  10. package/cjs/CustomProvider/CustomProvider.js +5 -3
  11. package/cjs/Overlay/OverlayTrigger.js +4 -0
  12. package/cjs/Picker/PickerToggle.js +1 -1
  13. package/cjs/Picker/PickerToggleTrigger.js +6 -7
  14. package/cjs/Ripple/Ripple.js +8 -0
  15. package/cjs/utils/useCustom.js +3 -1
  16. package/dist/rsuite-rtl.css +132 -168
  17. package/dist/rsuite-rtl.min.css +1 -1
  18. package/dist/rsuite-rtl.min.css.map +1 -1
  19. package/dist/rsuite.css +132 -168
  20. package/dist/rsuite.js +8 -8
  21. package/dist/rsuite.min.css +1 -1
  22. package/dist/rsuite.min.css.map +1 -1
  23. package/dist/rsuite.min.js +1 -1
  24. package/dist/rsuite.min.js.map +1 -1
  25. package/esm/@types/global.d.ts +6 -0
  26. package/esm/Breadcrumb/BreadcrumbItem.js +1 -1
  27. package/esm/Calendar/MonthDropdown.js +2 -4
  28. package/esm/CustomProvider/CustomProvider.d.ts +2 -0
  29. package/esm/CustomProvider/CustomProvider.js +5 -3
  30. package/esm/Overlay/OverlayTrigger.js +4 -0
  31. package/esm/Picker/PickerToggle.js +1 -1
  32. package/esm/Picker/PickerToggleTrigger.js +7 -5
  33. package/esm/Ripple/Ripple.js +9 -1
  34. package/esm/utils/useCustom.js +3 -1
  35. package/package.json +1 -1
  36. package/styles/color-modes/dark.less +5 -2
  37. package/styles/color-modes/high-contrast.less +3 -0
  38. package/styles/color-modes/light.less +4 -1
@@ -16,6 +16,10 @@
16
16
  &:focus {
17
17
  .tab-focus();
18
18
  }
19
+
20
+ &-active {
21
+ color: var(--rs-breadcrumb-item-active-text);
22
+ }
19
23
  }
20
24
 
21
25
  // Separator has gap with text
@@ -135,6 +135,7 @@
135
135
  color: var(--rs-btn-ghost-hover-text);
136
136
  background-color: transparent;
137
137
  border-color: var(--rs-btn-ghost-hover-border);
138
+ box-shadow: 0 0 0 1px var(--rs-btn-ghost-hover-border);
138
139
  });
139
140
 
140
141
  .button-pressed({
@@ -147,12 +148,15 @@
147
148
  color: var(--rs-btn-ghost-text);
148
149
  background-color: transparent;
149
150
  opacity: 0.3;
151
+ border-color: var(--rs-btn-ghost-border);
152
+ box-shadow:none;
150
153
  });
151
154
  }
152
155
 
153
156
  // Spectrum buttons
154
157
  each(@spectrum, .(@color) {
155
158
  @C200: var(~'--rs-@{color}-200');
159
+ @C300: var(~'--rs-@{color}-300');
156
160
  @C400: var(~'--rs-@{color}-400');
157
161
  @C500: var(~'--rs-@{color}-500');
158
162
  @C600: var(~'--rs-@{color}-600');
@@ -162,15 +166,15 @@ each(@spectrum, .(@color) {
162
166
 
163
167
  .rs-btn-@{color} {
164
168
  --rs-btn-primary-bg: @C500;
165
- --rs-btn-primary-hover-bg: @C600;
166
- --rs-btn-primary-active-bg: @C700;
169
+ --rs-btn-primary-hover-bg: @C700;
170
+ --rs-btn-primary-active-bg: @C800;
167
171
  --rs-btn-subtle-hover-bg: @C500;
168
- --rs-btn-subtle-hover-text: #fff;
172
+ --rs-btn-subtle-hover-text: @B200;
169
173
  --rs-btn-subtle-active-bg: @C600;
170
- --rs-btn-subtle-active-text: #fff;
174
+ --rs-btn-subtle-active-text: @B800;
171
175
  --rs-btn-ghost-border: @C700;
172
176
  --rs-btn-ghost-text: @C700;
173
- --rs-btn-ghost-hover-border: @C800;
177
+ --rs-btn-ghost-hover-border: @C900;
174
178
  --rs-btn-ghost-hover-text: @C800;
175
179
  --rs-btn-ghost-active-border: @C900;
176
180
  --rs-btn-ghost-active-text: @C900;
@@ -178,12 +182,12 @@ each(@spectrum, .(@color) {
178
182
  --rs-btn-link-hover-text: @C800;
179
183
  --rs-btn-link-active-text: @C900;
180
184
  --rs-iconbtn-primary-addon: @C600;
181
- --rs-iconbtn-primary-activated-addon: @C700;
182
- --rs-iconbtn-primary-pressed-addon: @C800;
185
+ --rs-iconbtn-primary-activated-addon: @C800;
186
+ --rs-iconbtn-primary-pressed-addon: @C900;
183
187
 
184
188
  .dark-mode({
185
189
  --rs-btn-primary-bg: @C700;
186
- --rs-btn-primary-hover-bg: @C600;
190
+ --rs-btn-primary-hover-bg: @C500;
187
191
  --rs-btn-primary-active-bg: @C400;
188
192
  --rs-btn-subtle-hover-bg: @C600;
189
193
  --rs-btn-subtle-hover-text: #fff;
@@ -199,8 +203,8 @@ each(@spectrum, .(@color) {
199
203
  --rs-btn-link-hover-text: @C400;
200
204
  --rs-btn-link-active-text: @C200;
201
205
  --rs-iconbtn-primary-addon: @C600;
202
- --rs-iconbtn-primary-activated-addon: @C500;
203
- --rs-iconbtn-primary-pressed-addon: @C400;
206
+ --rs-iconbtn-primary-activated-addon: @C400;
207
+ --rs-iconbtn-primary-pressed-addon: @C300;
204
208
  });
205
209
 
206
210
  .high-contrast-mode({
package/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ # [5.25.0](https://github.com/rsuite/rsuite/compare/v5.24.1...v5.25.0) (2023-01-20)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Breadcrumb:** improve font color for active item ([#3028](https://github.com/rsuite/rsuite/issues/3028)) ([1efcbf9](https://github.com/rsuite/rsuite/commit/1efcbf90a345ee93928ca13c181c103d247e869d))
6
+ - **Breadcrumb:** rendered breadcrumbs as span when href is not specified ([#3027](https://github.com/rsuite/rsuite/issues/3027)) ([8ad16e4](https://github.com/rsuite/rsuite/commit/8ad16e4d572b55892a50c0cad747554039b43398))
7
+ - **Button:** fix disabled icon button bug in dark mode ([#3020](https://github.com/rsuite/rsuite/issues/3020)) ([8975eff](https://github.com/rsuite/rsuite/commit/8975eff6b6e9a4ec9c2ed4c58cfbdf4f23e5d94a))
8
+ - **DatePicker:** fix first click not working on month selection ([#3019](https://github.com/rsuite/rsuite/issues/3019)) ([42eeaa3](https://github.com/rsuite/rsuite/commit/42eeaa3cc5e19442157f771f02dab850f257c2dc))
9
+ - **Whisper:** add type checking for child components ([#3012](https://github.com/rsuite/rsuite/issues/3012)) ([c189119](https://github.com/rsuite/rsuite/commit/c18911903141423d79eb79d5313bc47dd974705e))
10
+
11
+ ### Features
12
+
13
+ - **CustomProvider:** add support for disableRipple on `<CustomProvider>` ([#3030](https://github.com/rsuite/rsuite/issues/3030)) ([c6bb7ad](https://github.com/rsuite/rsuite/commit/c6bb7ade76ea843b43e799c5cb797b6b5e69d98f))
14
+
15
+ ### Performance Improvements
16
+
17
+ - **Button:** improved button color when hovered and activated ([#3022](https://github.com/rsuite/rsuite/issues/3022)) ([7973696](https://github.com/rsuite/rsuite/commit/7973696c2854d7199fc27d040dffe45dc356dc9a))
18
+
1
19
  ## [5.24.1](https://github.com/rsuite/rsuite/compare/v5.24.0...v5.24.1) (2023-01-12)
2
20
 
3
21
  ### Bug Fixes
@@ -233,14 +233,6 @@
233
233
 
234
234
  .rs-picker-cleanable.rs-picker-has-value & {
235
235
  padding-right: (@dropdown-toggle-padding-right + @picker-toggle-clean-width);
236
-
237
- .rs-@{date-picker-prefix}&,
238
- .rs-@{date-range-picker-prefix}& {
239
- padding-right: (
240
- @dropdown-toggle-padding-right + @picker-toggle-clean-width +
241
- @picker-item-content-padding-vertical
242
- );
243
- }
244
236
  }
245
237
  }
246
238
 
@@ -261,6 +253,11 @@
261
253
  color: var(--rs-state-error);
262
254
  }
263
255
 
256
+ &:hover svg path {
257
+ stroke: var(--rs-state-error);
258
+ stroke-width: 1;
259
+ }
260
+
264
261
  .rs-@{date-picker-prefix} &,
265
262
  .rs-@{date-range-picker-prefix} & {
266
263
  right: (@picker-toggle-clean-right + @picker-item-content-padding-vertical);
@@ -99,28 +99,18 @@
99
99
  }
100
100
 
101
101
  .rs-picker-has-value.rs-picker-cleanable & {
102
- padding-right: (
103
- @padding-horizontal + @dropdown-caret-width + @dropdown-caret-padding + @clean-btn-width +
104
- @clean-btn-margin
105
- );
102
+ padding-right: (@padding-horizontal + @dropdown-caret-width + @dropdown-caret-padding);
106
103
  }
107
104
 
108
105
  .rs-picker-toggle-caret,
109
106
  .rs-picker-toggle-clean {
110
107
  top: @padding-vertical;
108
+ right: @padding-horizontal;
111
109
 
112
110
  .rs-picker-default & {
113
111
  top: @padding-vertical - @picker-default-toggle-border-width;
114
112
  }
115
113
  }
116
-
117
- .rs-picker-toggle-caret {
118
- right: @padding-horizontal;
119
- }
120
-
121
- .rs-picker-toggle-clean {
122
- right: (@dropdown-caret-width + @padding-horizontal + @clean-btn-width - @clean-btn-margin);
123
- }
124
114
  }
125
115
 
126
116
  .picker-button-caret-lg() {
@@ -156,19 +146,12 @@
156
146
  .rs-picker-toggle-clean,
157
147
  .rs-picker-toggle-caret {
158
148
  top: @top;
149
+ right: @padding-horizontal;
159
150
 
160
151
  .rs-picker-subtle & {
161
152
  top: @top - @picker-default-toggle-border-width;
162
153
  }
163
154
  }
164
-
165
- .rs-picker-toggle-caret {
166
- right: @padding-horizontal;
167
- }
168
-
169
- .rs-picker-toggle-clean {
170
- right: (@padding-horizontal + @toggle-clean-padding + @calendar-caret-width);
171
- }
172
155
  }
173
156
 
174
157
  .date-picker-button-caret-lg() {
@@ -1 +1,7 @@
1
1
  declare const __DEV__: boolean;
2
+
3
+ declare namespace Chai {
4
+ interface Assertion {
5
+ toHaveError(expectedMessage?: string): Assertion;
6
+ }
7
+ }
@@ -19,7 +19,7 @@ var _utils = require("../utils");
19
19
 
20
20
  var BreadcrumbItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
21
21
  var _props$as = props.as,
22
- Component = _props$as === void 0 ? _SafeAnchor.default : _props$as,
22
+ Component = _props$as === void 0 ? props.href ? _SafeAnchor.default : 'span' : _props$as,
23
23
  href = props.href,
24
24
  _props$classPrefix = props.classPrefix,
25
25
  classPrefix = _props$classPrefix === void 0 ? 'breadcrumb-item' : _props$classPrefix,
@@ -78,8 +78,7 @@ var MonthDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
78
78
 
79
79
  return false;
80
80
  }, [disabledMonth]);
81
-
82
- var rowRenderer = function rowRenderer(_ref) {
81
+ var rowRenderer = (0, _react.useCallback)(function (_ref) {
83
82
  var index = _ref.index,
84
83
  style = _ref.style;
85
84
 
@@ -115,8 +114,7 @@ var MonthDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
115
114
  year: year
116
115
  });
117
116
  })));
118
- };
119
-
117
+ }, [date, isMonthDisabled, merge, prefix, rowCount, startYear]);
120
118
  var classes = merge(className, withClassPrefix(), {
121
119
  show: show
122
120
  });
@@ -38,6 +38,8 @@ export interface CustomValue<T = Locale> {
38
38
  * A Map of toast containers
39
39
  */
40
40
  toasters?: React.MutableRefObject<Map<string, ToastContainerInstance>>;
41
+ /** If true, the ripple effect is disabled. Affected components include: Button, Nav.Item, Pagination. */
42
+ disableRipple?: boolean;
41
43
  }
42
44
  export interface CustomProviderProps<T = Locale> extends Partial<CustomValue<T>> {
43
45
  /** Supported themes */
@@ -32,7 +32,8 @@ var CustomProvider = function CustomProvider(props) {
32
32
  classPrefix = _props$classPrefix === void 0 ? (0, _prefix.getClassNamePrefix)() : _props$classPrefix,
33
33
  theme = props.theme,
34
34
  container = props.toastContainer,
35
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["children", "classPrefix", "theme", "toastContainer"]);
35
+ disableRipple = props.disableRipple,
36
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["children", "classPrefix", "theme", "toastContainer", "disableRipple"]);
36
37
 
37
38
  var toasters = _react.default.useRef(new Map());
38
39
 
@@ -46,9 +47,10 @@ var CustomProvider = function CustomProvider(props) {
46
47
  return (0, _extends2.default)({
47
48
  classPrefix: classPrefix,
48
49
  theme: theme,
49
- toasters: toasters
50
+ toasters: toasters,
51
+ disableRipple: disableRipple
50
52
  }, rest);
51
- }, [classPrefix, theme, rest]);
53
+ }, [classPrefix, theme, disableRipple, rest]);
52
54
 
53
55
  (0, _react.useEffect)(function () {
54
56
  if (_DOMHelper.canUseDOM && theme) {
@@ -393,6 +393,10 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
393
393
  } : speaker);
394
394
  };
395
395
 
396
+ if (typeof children === 'object' && children.type === _react.default.Fragment || typeof children === 'string') {
397
+ console.error('[rsuite] The OverlayTrigger component does not accept strings or Fragments as child.');
398
+ }
399
+
396
400
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, typeof children === 'function' ? children(triggerEvents, triggerRef) : /*#__PURE__*/_react.default.cloneElement(children, (0, _extends2.default)({
397
401
  ref: triggerRef,
398
402
  'aria-describedby': controlId
@@ -247,7 +247,7 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
247
247
  closeLabel: 'Clear'
248
248
  },
249
249
  onClick: handleClean
250
- }), caret && /*#__PURE__*/_react.default.createElement(Caret, {
250
+ }), caret && !showCleanButton && /*#__PURE__*/_react.default.createElement(Caret, {
251
251
  className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["caret"])))
252
252
  })));
253
253
  });
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
7
5
  exports.__esModule = true;
@@ -11,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
9
 
12
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
11
 
14
- var _react = _interopRequireWildcard(require("react"));
12
+ var _react = _interopRequireDefault(require("react"));
15
13
 
16
14
  var _pick = _interopRequireDefault(require("lodash/pick"));
17
15
 
@@ -19,8 +17,6 @@ var _OverlayTrigger = _interopRequireDefault(require("../Overlay/OverlayTrigger"
19
17
 
20
18
  var _utils = require("../utils");
21
19
 
22
- var _CustomProvider = require("../CustomProvider");
23
-
24
20
  var omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'defaultOpen', 'onHide', 'container', 'containerPadding', 'preventOverflow'];
25
21
  exports.omitTriggerPropKeys = omitTriggerPropKeys;
26
22
  var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading']);
@@ -34,12 +30,15 @@ var PickerToggleTrigger = /*#__PURE__*/_react.default.forwardRef(function (props
34
30
  trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
35
31
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["pickerProps", "speaker", "placement", "trigger"]);
36
32
  var pickerTriggerProps = (0, _pick.default)(pickerProps, pickTriggerPropKeys);
37
- var context = (0, _react.useContext)(_CustomProvider.CustomContext);
33
+
34
+ var _useCustom = (0, _utils.useCustom)(),
35
+ rtl = _useCustom.rtl;
36
+
38
37
  return /*#__PURE__*/_react.default.createElement(_OverlayTrigger.default, (0, _extends2.default)({}, rest, pickerTriggerProps, {
39
38
  disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
40
39
  ref: ref,
41
40
  trigger: trigger,
42
- placement: (0, _utils.placementPolyfill)(placement, context === null || context === void 0 ? void 0 : context.rtl),
41
+ placement: (0, _utils.placementPolyfill)(placement, rtl),
43
42
  speaker: speaker
44
43
  }));
45
44
  });
@@ -39,6 +39,9 @@ var getPosition = function getPosition(target, event) {
39
39
  };
40
40
 
41
41
  var Ripple = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
42
+ var _useCustom = (0, _utils.useCustom)(),
43
+ disableRipple = _useCustom.disableRipple;
44
+
42
45
  var _props$as = props.as,
43
46
  Component = _props$as === void 0 ? 'span' : _props$as,
44
47
  className = props.className,
@@ -88,6 +91,11 @@ var Ripple = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
88
91
  };
89
92
  }
90
93
  }, [handleMouseDown]);
94
+
95
+ if (disableRipple) {
96
+ return null;
97
+ }
98
+
91
99
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
92
100
  className: classes,
93
101
  ref: (0, _utils.mergeRefs)(triggerRef, ref)
@@ -41,7 +41,8 @@ function useCustom(keys, overrideLocale) {
41
41
  rtl = _useContext$rtl === void 0 ? getDefaultRTL() : _useContext$rtl,
42
42
  formatDate = _useContext.formatDate,
43
43
  parseDate = _useContext.parseDate,
44
- toasters = _useContext.toasters;
44
+ toasters = _useContext.toasters,
45
+ disableRipple = _useContext.disableRipple;
45
46
 
46
47
  var componentLocale = (0, _extends2.default)({}, locale === null || locale === void 0 ? void 0 : locale.common, typeof keys === 'string' ? locale === null || locale === void 0 ? void 0 : locale[keys] : typeof keys === 'object' ? mergeObject(keys.map(function (key) {
47
48
  return locale === null || locale === void 0 ? void 0 : locale[key];
@@ -69,6 +70,7 @@ function useCustom(keys, overrideLocale) {
69
70
  locale: componentLocale,
70
71
  rtl: rtl,
71
72
  toasters: toasters,
73
+ disableRipple: disableRipple,
72
74
  formatDate: formatDate || defaultFormatDate,
73
75
  parseDate: parseDate || defaultParseDate
74
76
  };