rsuite 5.58.0 → 5.59.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 (55) hide show
  1. package/Avatar/styles/index.css +74 -3
  2. package/Avatar/styles/index.less +25 -1
  3. package/Avatar/styles/mixin.less +8 -0
  4. package/CHANGELOG.md +24 -0
  5. package/Drawer/styles/index.css +4 -0
  6. package/Drawer/styles/index.less +5 -0
  7. package/cjs/Avatar/Avatar.d.ts +30 -5
  8. package/cjs/Avatar/Avatar.js +47 -21
  9. package/cjs/Avatar/AvatarIcon.d.ts +3 -0
  10. package/cjs/Avatar/AvatarIcon.js +24 -0
  11. package/cjs/Avatar/useImage.d.ts +39 -0
  12. package/cjs/Avatar/useImage.js +75 -0
  13. package/cjs/AvatarGroup/AvatarGroup.d.ts +14 -6
  14. package/cjs/DateInput/DateField.js +5 -0
  15. package/cjs/Heading/index.d.ts +1 -1
  16. package/cjs/Heading/index.js +3 -4
  17. package/cjs/Modal/Modal.js +36 -21
  18. package/cjs/Text/index.d.ts +1 -1
  19. package/cjs/Text/index.js +3 -4
  20. package/cjs/internals/Overlay/Modal.js +2 -1
  21. package/dist/rsuite-no-reset-rtl.css +75 -3
  22. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  23. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  24. package/dist/rsuite-no-reset.css +75 -3
  25. package/dist/rsuite-no-reset.min.css +1 -1
  26. package/dist/rsuite-no-reset.min.css.map +1 -1
  27. package/dist/rsuite-rtl.css +75 -3
  28. package/dist/rsuite-rtl.min.css +1 -1
  29. package/dist/rsuite-rtl.min.css.map +1 -1
  30. package/dist/rsuite.css +75 -3
  31. package/dist/rsuite.js +29 -7
  32. package/dist/rsuite.js.map +1 -1
  33. package/dist/rsuite.min.css +1 -1
  34. package/dist/rsuite.min.css.map +1 -1
  35. package/dist/rsuite.min.js +1 -1
  36. package/dist/rsuite.min.js.map +1 -1
  37. package/esm/Avatar/Avatar.d.ts +30 -5
  38. package/esm/Avatar/Avatar.js +48 -22
  39. package/esm/Avatar/AvatarIcon.d.ts +3 -0
  40. package/esm/Avatar/AvatarIcon.js +18 -0
  41. package/esm/Avatar/useImage.d.ts +39 -0
  42. package/esm/Avatar/useImage.js +70 -0
  43. package/esm/AvatarGroup/AvatarGroup.d.ts +14 -6
  44. package/esm/DateInput/DateField.js +5 -0
  45. package/esm/Heading/index.d.ts +1 -1
  46. package/esm/Heading/index.js +0 -1
  47. package/esm/Modal/Modal.js +36 -21
  48. package/esm/Text/index.d.ts +1 -1
  49. package/esm/Text/index.js +0 -1
  50. package/esm/internals/Overlay/Modal.js +2 -1
  51. package/package.json +1 -1
  52. package/styles/color-modes/dark.less +2 -0
  53. package/styles/color-modes/high-contrast.less +2 -0
  54. package/styles/color-modes/light.less +2 -0
  55. package/styles/variables.less +12 -20
@@ -26,46 +26,47 @@ var _utils2 = require("./utils");
26
26
  var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
27
27
  var _propTypes2 = require("../internals/propTypes");
28
28
  var _DrawerContext = _interopRequireDefault(require("../Drawer/DrawerContext"));
29
- var _templateObject, _templateObject2;
29
+ var _templateObject, _templateObject2, _templateObject3;
30
30
  var modalSizes = ['xs', 'sm', 'md', 'lg', 'full'];
31
31
  /**
32
32
  * The `Modal` component is used to show content in a layer above the app.
33
33
  * @see https://rsuitejs.com/components/modal
34
34
  */
35
35
  var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
- var _prefix;
37
- var className = props.className,
36
+ var _prefix, _merge;
37
+ var _props$animation = props.animation,
38
+ animation = _props$animation === void 0 ? _Bounce.default : _props$animation,
39
+ animationProps = props.animationProps,
40
+ _props$animationTimeo = props.animationTimeout,
41
+ animationTimeout = _props$animationTimeo === void 0 ? 300 : _props$animationTimeo,
42
+ ariaLabelledby = props['aria-labelledby'],
43
+ ariaDescribedby = props['aria-describedby'],
44
+ backdropClassName = props.backdropClassName,
45
+ _props$backdrop = props.backdrop,
46
+ backdrop = _props$backdrop === void 0 ? true : _props$backdrop,
47
+ className = props.className,
38
48
  children = props.children,
39
49
  _props$classPrefix = props.classPrefix,
40
50
  classPrefix = _props$classPrefix === void 0 ? 'modal' : _props$classPrefix,
41
51
  dialogClassName = props.dialogClassName,
42
- backdropClassName = props.backdropClassName,
43
- _props$backdrop = props.backdrop,
44
- backdrop = _props$backdrop === void 0 ? true : _props$backdrop,
45
52
  dialogStyle = props.dialogStyle,
46
- _props$animation = props.animation,
47
- animation = _props$animation === void 0 ? _Bounce.default : _props$animation,
48
- open = props.open,
49
- _props$size = props.size,
50
- size = _props$size === void 0 ? 'sm' : _props$size,
51
- full = props.full,
52
53
  _props$dialogAs = props.dialogAs,
53
54
  Dialog = _props$dialogAs === void 0 ? _ModalDialog.default : _props$dialogAs,
54
- animationProps = props.animationProps,
55
- _props$animationTimeo = props.animationTimeout,
56
- animationTimeout = _props$animationTimeo === void 0 ? 300 : _props$animationTimeo,
55
+ enforceFocusProp = props.enforceFocus,
56
+ full = props.full,
57
57
  _props$overflow = props.overflow,
58
58
  overflow = _props$overflow === void 0 ? true : _props$overflow,
59
+ open = props.open,
59
60
  onClose = props.onClose,
60
61
  onEntered = props.onEntered,
61
62
  onEntering = props.onEntering,
62
63
  onExited = props.onExited,
63
64
  _props$role = props.role,
64
65
  role = _props$role === void 0 ? 'dialog' : _props$role,
66
+ _props$size = props.size,
67
+ size = _props$size === void 0 ? 'sm' : _props$size,
65
68
  idProp = props.id,
66
- ariaLabelledby = props['aria-labelledby'],
67
- ariaDescribedby = props['aria-describedby'],
68
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "children", "classPrefix", "dialogClassName", "backdropClassName", "backdrop", "dialogStyle", "animation", "open", "size", "full", "dialogAs", "animationProps", "animationTimeout", "overflow", "onClose", "onEntered", "onEntering", "onExited", "role", "id", "aria-labelledby", "aria-describedby"]);
69
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["animation", "animationProps", "animationTimeout", "aria-labelledby", "aria-describedby", "backdropClassName", "backdrop", "className", "children", "classPrefix", "dialogClassName", "dialogStyle", "dialogAs", "enforceFocus", "full", "overflow", "open", "onClose", "onEntered", "onEntering", "onExited", "role", "size", "id"]);
69
70
  var inClass = {
70
71
  in: open && !animation
71
72
  };
@@ -163,18 +164,32 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
163
164
  placement = _ref2.placement; // The width or height of the drawer depends on the placement.
164
165
  sizeKey = placement === 'top' || placement === 'bottom' ? 'height' : 'width';
165
166
  }
167
+ var enforceFocus = (0, _react.useMemo)(function () {
168
+ if (typeof enforceFocusProp === 'boolean') {
169
+ return enforceFocusProp;
170
+ }
171
+
172
+ // When the Drawer is displayed and the backdrop is not displayed, the focus is not restricted.
173
+ if (isDrawer && backdrop === false) {
174
+ return false;
175
+ }
176
+ }, [backdrop, enforceFocusProp, isDrawer]);
177
+ var wrapperClassName = merge(prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["wrapper"]))), (_merge = {}, _merge[prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["no-backdrop"])))] = backdrop === false, _merge));
166
178
  return /*#__PURE__*/_react.default.createElement(_ModalContext.ModalContext.Provider, {
167
179
  value: modalContextValue
168
- }, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
180
+ }, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({
181
+ "data-testid": isDrawer ? 'drawer-wrapper' : 'modal-wrapper'
182
+ }, rest, {
169
183
  ref: ref,
170
184
  backdrop: backdrop,
185
+ enforceFocus: enforceFocus,
171
186
  open: open,
172
187
  onClose: onClose,
173
- className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["wrapper"]))),
188
+ className: wrapperClassName,
174
189
  onEntered: handleEntered,
175
190
  onEntering: handleEntering,
176
191
  onExited: handleExited,
177
- backdropClassName: merge(prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["backdrop"]))), backdropClassName, inClass),
192
+ backdropClassName: merge(prefix(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["backdrop"]))), backdropClassName, inClass),
178
193
  containerClassName: prefix({
179
194
  open: open,
180
195
  'has-backdrop': backdrop
@@ -1,3 +1,3 @@
1
1
  import Text from './Text';
2
- export { type TextProps } from './Text';
2
+ export type { TextProps } from './Text';
3
3
  export default Text;
package/cjs/Text/index.js CHANGED
@@ -1,10 +1,9 @@
1
1
  'use client';
2
2
  "use strict";
3
3
 
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
5
  exports.__esModule = true;
6
- exports.default = exports.TextProps = void 0;
7
- var _Text = _interopRequireWildcard(require("./Text"));
8
- exports.TextProps = _Text.TextProps;
6
+ exports.default = void 0;
7
+ var _Text = _interopRequireDefault(require("./Text"));
9
8
  var _default = _Text.default;
10
9
  exports.default = _default;
@@ -198,7 +198,8 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
198
198
  var className = fadeProps.className,
199
199
  rest = (0, _objectWithoutPropertiesLoose2.default)(fadeProps, ["className"]);
200
200
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
201
- "aria-hidden": true
201
+ "aria-hidden": true,
202
+ "data-testid": "backdrop"
202
203
  }, rest, {
203
204
  style: backdropStyle,
204
205
  ref: (0, _utils2.mergeRefs)(modal.setBackdropRef, ref),
@@ -320,6 +320,8 @@
320
320
  --rs-uploader-dnd-hover-border: var(--rs-primary-500);
321
321
  --rs-avatar-bg: var(--rs-gray-300);
322
322
  --rs-avatar-text: var(--rs-gray-0);
323
+ --rs-avatar-offset-color: var(--rs-gray-0);
324
+ --rs-avatar-ring-color: var(--rs-avatar-bg);
323
325
  --rs-badge-bg: var(--rs-color-red);
324
326
  --rs-badge-text: var(--rs-gray-0);
325
327
  --rs-close-button-hover-color: var(--rs-color-red);
@@ -688,6 +690,8 @@
688
690
  --rs-uploader-dnd-hover-border: var(--rs-primary-500);
689
691
  --rs-avatar-bg: var(--rs-gray-400);
690
692
  --rs-avatar-text: var(--rs-gray-0);
693
+ --rs-avatar-offset-color: var(--rs-gray-900);
694
+ --rs-avatar-ring-color: var(--rs-avatar-bg);
691
695
  --rs-badge-bg: var(--rs-color-red);
692
696
  --rs-badge-text: var(--rs-gray-0);
693
697
  --rs-close-button-hover-color: var(--rs-color-red);
@@ -1055,6 +1059,8 @@
1055
1059
  --rs-uploader-dnd-hover-border: var(--rs-primary-500);
1056
1060
  --rs-avatar-bg: var(--rs-gray-400);
1057
1061
  --rs-avatar-text: var(--rs-gray-0);
1062
+ --rs-avatar-offset-color: var(--rs-gray-900);
1063
+ --rs-avatar-ring-color: var(--rs-avatar-bg);
1058
1064
  --rs-badge-bg: var(--rs-red-500);
1059
1065
  --rs-badge-text: var(--rs-gray-0);
1060
1066
  --rs-close-button-hover-color: var(--rs-color-red);
@@ -1554,13 +1560,47 @@ tbody.rs-anim-collapse.rs-anim-in {
1554
1560
  background: var(--rs-avatar-bg);
1555
1561
  text-align: center;
1556
1562
  padding: 0 2px;
1557
- overflow: hidden;
1558
- text-overflow: ellipsis;
1559
- white-space: nowrap;
1563
+ }
1564
+ .rs-avatar-icon {
1565
+ position: absolute;
1566
+ }
1567
+ .rs-avatar-bordered {
1568
+ --rs-ring-offset-shadow: var(--rs-avatar-offset-color) 0 0 0 2px;
1569
+ --rs-ring-shadow: var(--rs-avatar-ring-color) 0 0 0 4px;
1570
+ -webkit-box-shadow: var(--rs-ring-offset-shadow), var(--rs-ring-shadow), 0 0 #0000;
1571
+ box-shadow: var(--rs-ring-offset-shadow), var(--rs-ring-shadow), 0 0 #0000;
1560
1572
  }
1561
1573
  .rs-avatar-circle {
1562
1574
  border-radius: 50%;
1563
1575
  }
1576
+ .rs-avatar-xxl {
1577
+ width: 120px;
1578
+ height: 120px;
1579
+ font-size: 48px;
1580
+ }
1581
+ .rs-avatar-xxl > .rs-icon {
1582
+ font-size: 84px;
1583
+ height: 84px;
1584
+ }
1585
+ .rs-avatar-xxl > .rs-avatar-image {
1586
+ width: 120px;
1587
+ height: 120px;
1588
+ line-height: 120px;
1589
+ }
1590
+ .rs-avatar-xl {
1591
+ width: 90px;
1592
+ height: 90px;
1593
+ font-size: 36px;
1594
+ }
1595
+ .rs-avatar-xl > .rs-icon {
1596
+ font-size: 63px;
1597
+ height: 63px;
1598
+ }
1599
+ .rs-avatar-xl > .rs-avatar-image {
1600
+ width: 90px;
1601
+ height: 90px;
1602
+ line-height: 90px;
1603
+ }
1564
1604
  .rs-avatar-lg {
1565
1605
  width: 60px;
1566
1606
  height: 60px;
@@ -1603,6 +1643,34 @@ tbody.rs-anim-collapse.rs-anim-in {
1603
1643
  height: 20px;
1604
1644
  line-height: 20px;
1605
1645
  }
1646
+ .rs-avatar-red {
1647
+ --rs-avatar-bg: var(--rs-red-500);
1648
+ --rs-avatar-ring-color: var(--rs-red-500);
1649
+ }
1650
+ .rs-avatar-orange {
1651
+ --rs-avatar-bg: var(--rs-orange-500);
1652
+ --rs-avatar-ring-color: var(--rs-orange-500);
1653
+ }
1654
+ .rs-avatar-yellow {
1655
+ --rs-avatar-bg: var(--rs-yellow-500);
1656
+ --rs-avatar-ring-color: var(--rs-yellow-500);
1657
+ }
1658
+ .rs-avatar-green {
1659
+ --rs-avatar-bg: var(--rs-green-500);
1660
+ --rs-avatar-ring-color: var(--rs-green-500);
1661
+ }
1662
+ .rs-avatar-cyan {
1663
+ --rs-avatar-bg: var(--rs-cyan-500);
1664
+ --rs-avatar-ring-color: var(--rs-cyan-500);
1665
+ }
1666
+ .rs-avatar-blue {
1667
+ --rs-avatar-bg: var(--rs-blue-500);
1668
+ --rs-avatar-ring-color: var(--rs-blue-500);
1669
+ }
1670
+ .rs-avatar-violet {
1671
+ --rs-avatar-bg: var(--rs-violet-500);
1672
+ --rs-avatar-ring-color: var(--rs-violet-500);
1673
+ }
1606
1674
  .rs-avatar-group {
1607
1675
  display: -webkit-box;
1608
1676
  display: -ms-flexbox;
@@ -4705,6 +4773,9 @@ label:hover .rs-checkbox-control .rs-checkbox-inner::before {
4705
4773
  width: 100%;
4706
4774
  height: 100%;
4707
4775
  }
4776
+ .rs-drawer-wrapper.rs-drawer-no-backdrop {
4777
+ pointer-events: none;
4778
+ }
4708
4779
  .rs-drawer {
4709
4780
  display: none;
4710
4781
  overflow: hidden;
@@ -4714,6 +4785,7 @@ label:hover .rs-checkbox-control .rs-checkbox-inner::before {
4714
4785
  -webkit-box-shadow: var(--rs-drawer-shadow);
4715
4786
  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.12), 0 0 10px rgba(0, 0, 0, 0.06);
4716
4787
  box-shadow: var(--rs-drawer-shadow);
4788
+ pointer-events: auto;
4717
4789
  outline: 0;
4718
4790
  }
4719
4791
  .rs-drawer-open.rs-drawer-has-backdrop {