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
@@ -1 +1,7 @@
1
1
  declare const __DEV__: boolean;
2
+
3
+ declare namespace Chai {
4
+ interface Assertion {
5
+ toHaveError(expectedMessage?: string): Assertion;
6
+ }
7
+ }
@@ -6,7 +6,7 @@ import SafeAnchor from '../SafeAnchor';
6
6
  import { useClassNames } from '../utils';
7
7
  var BreadcrumbItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
8
8
  var _props$as = props.as,
9
- Component = _props$as === void 0 ? SafeAnchor : _props$as,
9
+ Component = _props$as === void 0 ? props.href ? SafeAnchor : 'span' : _props$as,
10
10
  href = props.href,
11
11
  _props$classPrefix = props.classPrefix,
12
12
  classPrefix = _props$classPrefix === void 0 ? 'breadcrumb-item' : _props$classPrefix,
@@ -57,8 +57,7 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
57
57
 
58
58
  return false;
59
59
  }, [disabledMonth]);
60
-
61
- var rowRenderer = function rowRenderer(_ref) {
60
+ var rowRenderer = useCallback(function (_ref) {
62
61
  var index = _ref.index,
63
62
  style = _ref.style;
64
63
  var selectedMonth = DateUtils.getMonth(date);
@@ -91,8 +90,7 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
91
90
  year: year
92
91
  });
93
92
  })));
94
- };
95
-
93
+ }, [date, isMonthDisabled, merge, prefix, rowCount, startYear]);
96
94
  var classes = merge(className, withClassPrefix(), {
97
95
  show: show
98
96
  });
@@ -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 */
@@ -14,7 +14,8 @@ var CustomProvider = function CustomProvider(props) {
14
14
  classPrefix = _props$classPrefix === void 0 ? getClassNamePrefix() : _props$classPrefix,
15
15
  theme = props.theme,
16
16
  container = props.toastContainer,
17
- rest = _objectWithoutPropertiesLoose(props, ["children", "classPrefix", "theme", "toastContainer"]);
17
+ disableRipple = props.disableRipple,
18
+ rest = _objectWithoutPropertiesLoose(props, ["children", "classPrefix", "theme", "toastContainer", "disableRipple"]);
18
19
 
19
20
  var toasters = React.useRef(new Map());
20
21
 
@@ -28,9 +29,10 @@ var CustomProvider = function CustomProvider(props) {
28
29
  return _extends({
29
30
  classPrefix: classPrefix,
30
31
  theme: theme,
31
- toasters: toasters
32
+ toasters: toasters,
33
+ disableRipple: disableRipple
32
34
  }, rest);
33
- }, [classPrefix, theme, rest]);
35
+ }, [classPrefix, theme, disableRipple, rest]);
34
36
  useEffect(function () {
35
37
  if (canUseDOM && theme) {
36
38
  addClass(document.body, prefix(classPrefix, "theme-" + theme)); // Remove the className that will cause style conflicts
@@ -372,6 +372,10 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
372
372
  } : speaker);
373
373
  };
374
374
 
375
+ if (typeof children === 'object' && children.type === React.Fragment || typeof children === 'string') {
376
+ console.error('[rsuite] The OverlayTrigger component does not accept strings or Fragments as child.');
377
+ }
378
+
375
379
  return /*#__PURE__*/React.createElement(React.Fragment, null, typeof children === 'function' ? children(triggerEvents, triggerRef) : /*#__PURE__*/React.cloneElement(children, _extends({
376
380
  ref: triggerRef,
377
381
  'aria-describedby': controlId
@@ -224,7 +224,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
224
224
  closeLabel: 'Clear'
225
225
  },
226
226
  onClick: handleClean
227
- }), caret && /*#__PURE__*/React.createElement(Caret, {
227
+ }), caret && !showCleanButton && /*#__PURE__*/React.createElement(Caret, {
228
228
  className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["caret"])))
229
229
  })));
230
230
  });
@@ -1,10 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { useContext } from 'react';
3
+ import React from 'react';
4
4
  import pick from 'lodash/pick';
5
5
  import OverlayTrigger from '../Overlay/OverlayTrigger';
6
- import { placementPolyfill } from '../utils';
7
- import { CustomContext } from '../CustomProvider';
6
+ import { placementPolyfill, useCustom } from '../utils';
8
7
  export var omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'defaultOpen', 'onHide', 'container', 'containerPadding', 'preventOverflow'];
9
8
  export var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading']);
10
9
  var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
@@ -16,12 +15,15 @@ var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
16
15
  rest = _objectWithoutPropertiesLoose(props, ["pickerProps", "speaker", "placement", "trigger"]);
17
16
 
18
17
  var pickerTriggerProps = pick(pickerProps, pickTriggerPropKeys);
19
- var context = useContext(CustomContext);
18
+
19
+ var _useCustom = useCustom(),
20
+ rtl = _useCustom.rtl;
21
+
20
22
  return /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, rest, pickerTriggerProps, {
21
23
  disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
22
24
  ref: ref,
23
25
  trigger: trigger,
24
- placement: placementPolyfill(placement, context === null || context === void 0 ? void 0 : context.rtl),
26
+ placement: placementPolyfill(placement, rtl),
25
27
  speaker: speaker
26
28
  }));
27
29
  });
@@ -5,7 +5,7 @@ import PropTypes from 'prop-types';
5
5
  import getOffset from 'dom-lib/getOffset';
6
6
  import on from 'dom-lib/on';
7
7
  import Transition from '../Animation/Transition';
8
- import { mergeRefs, useClassNames } from '../utils';
8
+ import { mergeRefs, useClassNames, useCustom } from '../utils';
9
9
 
10
10
  var getPosition = function getPosition(target, event) {
11
11
  var offset = getOffset(target);
@@ -23,6 +23,9 @@ var getPosition = function getPosition(target, event) {
23
23
  };
24
24
 
25
25
  var Ripple = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
+ var _useCustom = useCustom(),
27
+ disableRipple = _useCustom.disableRipple;
28
+
26
29
  var _props$as = props.as,
27
30
  Component = _props$as === void 0 ? 'span' : _props$as,
28
31
  className = props.className,
@@ -72,6 +75,11 @@ var Ripple = /*#__PURE__*/React.forwardRef(function (props, ref) {
72
75
  };
73
76
  }
74
77
  }, [handleMouseDown]);
78
+
79
+ if (disableRipple) {
80
+ return null;
81
+ }
82
+
75
83
  return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
76
84
  className: classes,
77
85
  ref: mergeRefs(triggerRef, ref)
@@ -30,7 +30,8 @@ function useCustom(keys, overrideLocale) {
30
30
  rtl = _useContext$rtl === void 0 ? getDefaultRTL() : _useContext$rtl,
31
31
  formatDate = _useContext.formatDate,
32
32
  parseDate = _useContext.parseDate,
33
- toasters = _useContext.toasters;
33
+ toasters = _useContext.toasters,
34
+ disableRipple = _useContext.disableRipple;
34
35
 
35
36
  var componentLocale = _extends({}, 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) {
36
37
  return locale === null || locale === void 0 ? void 0 : locale[key];
@@ -59,6 +60,7 @@ function useCustom(keys, overrideLocale) {
59
60
  locale: componentLocale,
60
61
  rtl: rtl,
61
62
  toasters: toasters,
63
+ disableRipple: disableRipple,
62
64
  formatDate: formatDate || defaultFormatDate,
63
65
  parseDate: parseDate || defaultParseDate
64
66
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.24.1",
3
+ "version": "5.25.0",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -78,13 +78,13 @@
78
78
  --rs-btn-default-active-bg: @B300-dark;
79
79
  --rs-btn-default-active-text: @B000-dark;
80
80
  --rs-btn-default-disabled-bg: @B600-dark;
81
- --rs-btn-default-disabled-text: @B500-dark;
81
+ --rs-btn-default-disabled-text: @B400-dark;
82
82
  --rs-btn-primary-bg: @H700-dark;
83
83
  --rs-btn-primary-text: @B000-dark;
84
84
  --rs-btn-primary-hover-bg: @H600-dark;
85
85
  --rs-btn-primary-active-bg: @H400-dark;
86
86
  --rs-btn-subtle-text: @B200-dark;
87
- --rs-btn-subtle-hover-bg: @B700-dark;
87
+ --rs-btn-subtle-hover-bg: @B500-dark;
88
88
  --rs-btn-subtle-hover-text: @B050-dark;
89
89
  --rs-btn-subtle-active-bg: @B400-dark;
90
90
  --rs-btn-subtle-active-text: @B000-dark;
@@ -150,6 +150,9 @@
150
150
  --rs-placeholder: @B600-dark;
151
151
  --rs-placeholder-active: lighten(@B600-dark, 5%);
152
152
 
153
+ // Breadcrumb
154
+ --rs-breadcrumb-item-active-text: #fff;
155
+
153
156
  // Dropdown
154
157
  --rs-dropdown-divider: @B600-dark;
155
158
  --rs-dropdown-item-bg-hover: @B600-dark;
@@ -157,6 +157,9 @@
157
157
  --rs-placeholder: @B600-high-contrast;
158
158
  --rs-placeholder-active: lighten(@B600-high-contrast, 5%);
159
159
 
160
+ // Breadcrumb
161
+ --rs-breadcrumb-item-active-text: #fff;
162
+
160
163
  // Dropdown
161
164
  --rs-dropdown-divider: @B600-high-contrast;
162
165
  --rs-dropdown-item-bg-hover: @B600-high-contrast;
@@ -91,7 +91,7 @@
91
91
  --rs-btn-primary-hover-bg: @H600;
92
92
  --rs-btn-primary-active-bg: @H700;
93
93
  --rs-btn-subtle-text: @B600;
94
- --rs-btn-subtle-hover-bg: @B050;
94
+ --rs-btn-subtle-hover-bg: @B200;
95
95
  --rs-btn-subtle-hover-text: @B800;
96
96
  --rs-btn-subtle-active-bg: @B200;
97
97
  --rs-btn-subtle-active-text: @B900;
@@ -157,6 +157,9 @@
157
157
  --rs-placeholder: @B100;
158
158
  --rs-placeholder-active: @B200;
159
159
 
160
+ // Breadcrumb
161
+ --rs-breadcrumb-item-active-text: @B900;
162
+
160
163
  // Dropdown
161
164
  --rs-dropdown-divider: @B200;
162
165
  --rs-dropdown-item-bg-hover: fade(@H100, 50%);