rsuite 5.52.0 → 5.53.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 (104) hide show
  1. package/AutoComplete/styles/index.css +4 -0
  2. package/CHANGELOG.md +15 -0
  3. package/Cascader/styles/index.css +4 -0
  4. package/CheckPicker/styles/index.css +4 -0
  5. package/CheckTree/styles/index.css +34 -14
  6. package/CheckTreePicker/styles/index.css +34 -14
  7. package/CheckTreePicker/styles/index.less +39 -29
  8. package/DatePicker/styles/index.css +4 -0
  9. package/DateRangePicker/styles/index.css +4 -0
  10. package/InputGroup/styles/index.css +5 -0
  11. package/InputGroup/styles/index.less +1 -1
  12. package/InputNumber/styles/index.css +2 -0
  13. package/InputPicker/styles/index.css +4 -0
  14. package/Message/styles/index.css +170 -29
  15. package/Message/styles/index.less +42 -3
  16. package/Message/styles/mixin.less +18 -3
  17. package/MultiCascader/styles/index.css +4 -0
  18. package/Pagination/styles/index.css +4 -0
  19. package/SelectPicker/styles/index.css +4 -0
  20. package/Tabs/package.json +7 -0
  21. package/Tabs/styles/index.css +1816 -0
  22. package/Tabs/styles/index.less +28 -0
  23. package/TagInput/styles/index.css +4 -0
  24. package/TagPicker/styles/index.css +4 -0
  25. package/Tree/styles/index.css +10 -4
  26. package/TreePicker/styles/index.css +10 -4
  27. package/TreePicker/styles/index.less +9 -5
  28. package/cjs/CheckTreePicker/CheckTreeNode.js +1 -1
  29. package/cjs/DateRangePicker/DateRangePicker.d.ts +10 -10
  30. package/cjs/DateRangePicker/index.d.ts +1 -1
  31. package/cjs/Dropdown/DropdownItem.js +4 -2
  32. package/cjs/Message/Message.d.ts +28 -6
  33. package/cjs/Message/Message.js +17 -11
  34. package/cjs/Nav/Nav.d.ts +2 -0
  35. package/cjs/Nav/Nav.js +13 -8
  36. package/cjs/Tabs/Tab.d.ts +25 -0
  37. package/cjs/Tabs/Tab.js +21 -0
  38. package/cjs/Tabs/TabPanel.d.ts +10 -0
  39. package/cjs/Tabs/TabPanel.js +33 -0
  40. package/cjs/Tabs/Tabs.d.ts +50 -0
  41. package/cjs/Tabs/Tabs.js +221 -0
  42. package/cjs/Tabs/index.d.ts +3 -0
  43. package/cjs/Tabs/index.js +9 -0
  44. package/cjs/index.d.ts +2 -0
  45. package/cjs/index.js +3 -1
  46. package/cjs/internals/Menu/Menu.js +12 -1
  47. package/cjs/internals/Picker/ListCheckItem.js +7 -2
  48. package/cjs/internals/Picker/ListItem.js +6 -2
  49. package/cjs/internals/Picker/TreeView.js +1 -1
  50. package/cjs/utils/ReactChildren.d.ts +2 -2
  51. package/cjs/utils/ReactChildren.js +16 -17
  52. package/cjs/utils/index.d.ts +2 -0
  53. package/cjs/utils/index.js +8 -2
  54. package/cjs/utils/statusIcons.js +2 -2
  55. package/dist/rsuite-no-reset-rtl.css +212 -35
  56. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  57. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  58. package/dist/rsuite-no-reset.css +212 -35
  59. package/dist/rsuite-no-reset.min.css +1 -1
  60. package/dist/rsuite-no-reset.min.css.map +1 -1
  61. package/dist/rsuite-rtl.css +212 -35
  62. package/dist/rsuite-rtl.min.css +1 -1
  63. package/dist/rsuite-rtl.min.css.map +1 -1
  64. package/dist/rsuite.css +212 -35
  65. package/dist/rsuite.js +78 -45
  66. package/dist/rsuite.js.map +1 -1
  67. package/dist/rsuite.min.css +1 -1
  68. package/dist/rsuite.min.css.map +1 -1
  69. package/dist/rsuite.min.js +1 -1
  70. package/dist/rsuite.min.js.map +1 -1
  71. package/esm/CheckTreePicker/CheckTreeNode.js +1 -1
  72. package/esm/DateRangePicker/DateRangePicker.d.ts +10 -10
  73. package/esm/DateRangePicker/index.d.ts +1 -1
  74. package/esm/Dropdown/DropdownItem.js +4 -2
  75. package/esm/Message/Message.d.ts +28 -6
  76. package/esm/Message/Message.js +19 -13
  77. package/esm/Nav/Nav.d.ts +2 -0
  78. package/esm/Nav/Nav.js +12 -7
  79. package/esm/Tabs/Tab.d.ts +25 -0
  80. package/esm/Tabs/Tab.js +15 -0
  81. package/esm/Tabs/TabPanel.d.ts +10 -0
  82. package/esm/Tabs/TabPanel.js +27 -0
  83. package/esm/Tabs/Tabs.d.ts +50 -0
  84. package/esm/Tabs/Tabs.js +215 -0
  85. package/esm/Tabs/index.d.ts +3 -0
  86. package/esm/Tabs/index.js +3 -0
  87. package/esm/index.d.ts +2 -0
  88. package/esm/index.js +1 -0
  89. package/esm/internals/Menu/Menu.js +12 -1
  90. package/esm/internals/Picker/ListCheckItem.js +7 -2
  91. package/esm/internals/Picker/ListItem.js +6 -2
  92. package/esm/internals/Picker/TreeView.js +1 -1
  93. package/esm/utils/ReactChildren.d.ts +2 -2
  94. package/esm/utils/ReactChildren.js +16 -17
  95. package/esm/utils/index.d.ts +2 -0
  96. package/esm/utils/index.js +3 -1
  97. package/esm/utils/statusIcons.js +2 -2
  98. package/internals/Picker/styles/index.less +1 -1
  99. package/package.json +1 -1
  100. package/styles/color-modes/dark.less +4 -0
  101. package/styles/color-modes/light.less +18 -4
  102. package/styles/index.less +1 -0
  103. package/styles/mixins/listbox.less +2 -7
  104. package/styles/variables.less +2 -1
@@ -12,6 +12,16 @@ import useClickOutside from '../../utils/useClickOutside';
12
12
  import { isFocusLeaving } from '../../utils/events';
13
13
  import { isFocusableElement } from '../../utils/dom';
14
14
  var defaultOpenMenuOn = ['click'];
15
+ function getMenuItemTarget(event) {
16
+ var _event$currentTarget;
17
+ var target = event.target;
18
+ if (target.getAttribute('role') === 'menuitem') {
19
+ return target;
20
+ }
21
+ return Array.from((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 ? void 0 : _event$currentTarget.querySelectorAll('[role="menuitem"]')).find(function (item) {
22
+ return item.contains(target);
23
+ });
24
+ }
15
25
 
16
26
  /**
17
27
  * Headless ARIA `menu`
@@ -286,7 +296,8 @@ function Menu(_ref) {
286
296
 
287
297
  // Only used for clicks bubbling from child `menuitem`s.
288
298
  var handleMenuClick = useCallback(function (event) {
289
- var target = event.target;
299
+ var target = getMenuItemTarget(event);
300
+ if (!target) return;
290
301
 
291
302
  // Only handle clicks on `menuitem`s
292
303
  if (target.getAttribute('role') !== 'menuitem') return;
@@ -1,6 +1,8 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
3
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
+ var _templateObject;
4
6
  import React from 'react';
5
7
  import { useClassNames, useEventCallback } from '../../utils';
6
8
  import Checkbox from '../../Checkbox';
@@ -44,7 +46,9 @@ var ListCheckItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
44
46
  var _useCombobox = useCombobox(),
45
47
  id = _useCombobox.id;
46
48
  var _useClassNames = useClassNames(classPrefix),
47
- withClassPrefix = _useClassNames.withClassPrefix;
49
+ withClassPrefix = _useClassNames.withClassPrefix,
50
+ merge = _useClassNames.merge,
51
+ rootPrefix = _useClassNames.rootPrefix;
48
52
  var checkboxItemClasses = withClassPrefix({
49
53
  focus: focus
50
54
  });
@@ -61,6 +65,7 @@ var ListCheckItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
61
65
  onClick: handleSelectItem,
62
66
  onCheckboxClick: handleCheck
63
67
  };
68
+ console.log(className, 'className');
64
69
  return /*#__PURE__*/React.createElement(Component, _extends({
65
70
  role: "option",
66
71
  "aria-selected": active,
@@ -69,7 +74,7 @@ var ListCheckItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
69
74
  "data-key": value
70
75
  }, rest, {
71
76
  ref: ref,
72
- className: className,
77
+ className: merge(className, rootPrefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["picker-list-item"])))),
73
78
  tabIndex: -1
74
79
  }), renderMenuItemCheckbox ? renderMenuItemCheckbox(checkboxProps) : /*#__PURE__*/React.createElement(CheckboxItem, _extends({
75
80
  role: "checkbox"
@@ -1,6 +1,8 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
3
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
+ var _templateObject;
4
6
  import React from 'react';
5
7
  import { useClassNames, useEventCallback } from '../../utils';
6
8
  import useCombobox from './hooks/useCombobox';
@@ -30,7 +32,9 @@ var ListItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
30
32
  }
31
33
  });
32
34
  var _useClassNames = useClassNames(classPrefix),
33
- withClassPrefix = _useClassNames.withClassPrefix;
35
+ withClassPrefix = _useClassNames.withClassPrefix,
36
+ merge = _useClassNames.merge,
37
+ rootPrefix = _useClassNames.rootPrefix;
34
38
  var classes = withClassPrefix({
35
39
  active: active,
36
40
  focus: focus,
@@ -44,7 +48,7 @@ var ListItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
44
48
  "data-key": value
45
49
  }, rest, {
46
50
  ref: ref,
47
- className: className,
51
+ className: merge(className, rootPrefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["picker-list-item"])))),
48
52
  tabIndex: -1,
49
53
  onKeyDown: disabled ? null : onKeyDown,
50
54
  onClick: handleClick
@@ -14,7 +14,7 @@ var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
14
14
  popupType = _useCombobox.popupType;
15
15
  return /*#__PURE__*/React.createElement("div", _extends({
16
16
  role: "tree",
17
- id: id + "-" + popupType,
17
+ id: id ? id + "-" + popupType : undefined,
18
18
  "aria-multiselectable": multiselectable,
19
19
  "aria-labelledby": labelId,
20
20
  ref: ref
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  export declare function find(children: React.ReactNode, func: any, context?: any): React.ReactNode;
3
- export declare function map(children: React.ReactNode, func: any, context?: any): any[] | null | undefined;
4
- export declare function mapCloneElement(children: React.ReactNode, func: any, context?: any): any[] | null | undefined;
3
+ export declare function map(children: React.ReactNode, func: any, context?: any): any;
4
+ export declare function mapCloneElement(children: React.ReactNode, func: any, context?: any): any;
5
5
  export declare function count(children: React.ReactNode): number;
6
6
  declare function some(children: React.ReactNode, func: any, context?: any): boolean;
7
7
  declare const _default: {
@@ -1,10 +1,22 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import React from 'react';
4
+ function typeOf(object) {
5
+ if (typeof object === 'object' && object !== null) {
6
+ return object.type || object.$$typeof;
7
+ }
8
+ }
9
+ function isFragment(children) {
10
+ return React.Children.count(children) === 1 && typeOf(children) === Symbol.for('react.fragment');
11
+ }
12
+ function getChildren(children) {
13
+ var _props;
14
+ return isFragment(children) ? (_props = children.props) === null || _props === void 0 ? void 0 : _props.children : children;
15
+ }
4
16
  export function find(children, func, context) {
5
17
  var index = 0;
6
18
  var result;
7
- React.Children.forEach(children, function (child) {
19
+ React.Children.forEach(getChildren(children), function (child) {
8
20
  if (result) {
9
21
  return;
10
22
  }
@@ -17,7 +29,7 @@ export function find(children, func, context) {
17
29
  }
18
30
  export function map(children, func, context) {
19
31
  var index = 0;
20
- return React.Children.map(children, function (child) {
32
+ return React.Children.map(getChildren(children), function (child) {
21
33
  if (! /*#__PURE__*/React.isValidElement(child)) {
22
34
  return child;
23
35
  }
@@ -26,21 +38,8 @@ export function map(children, func, context) {
26
38
  return handle;
27
39
  });
28
40
  }
29
- function typeOf(object) {
30
- if (typeof object === 'object' && object !== null) {
31
- return object.type || object.$$typeof;
32
- }
33
- }
34
- function isFragment(children) {
35
- return React.Children.count(children) === 1 && typeOf(children) === Symbol.for('react.fragment');
36
- }
37
41
  export function mapCloneElement(children, func, context) {
38
- var elements = children;
39
- if (isFragment(children)) {
40
- var _props;
41
- elements = (_props = children.props) === null || _props === void 0 ? void 0 : _props.children;
42
- }
43
- return map(elements, function (child, index) {
42
+ return map(children, function (child, index) {
44
43
  return /*#__PURE__*/React.cloneElement(child, _extends({
45
44
  key: index
46
45
  }, func(child, index)));
@@ -54,7 +53,7 @@ export function count(children) {
54
53
  function some(children, func, context) {
55
54
  var index = 0;
56
55
  var result = false;
57
- React.Children.forEach(children, function (child) {
56
+ React.Children.forEach(getChildren(children), function (child) {
58
57
  if (result) {
59
58
  return;
60
59
  }
@@ -44,3 +44,5 @@ export { default as useIsMounted } from './useIsMounted';
44
44
  export { default as useMount } from './useMount';
45
45
  export { default as useUniqueId } from './useUniqueId';
46
46
  export { default as useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
47
+ export { default as useInternalId } from './useInternalId';
48
+ export { default as useEnsuredRef } from './useEnsuredRef';
@@ -46,4 +46,6 @@ export { default as useUpdateEffect } from './useUpdateEffect';
46
46
  export { default as useIsMounted } from './useIsMounted';
47
47
  export { default as useMount } from './useMount';
48
48
  export { default as useUniqueId } from './useUniqueId';
49
- export { default as useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
49
+ export { default as useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
50
+ export { default as useInternalId } from './useInternalId';
51
+ export { default as useEnsuredRef } from './useEnsuredRef';
@@ -3,14 +3,14 @@ import React from 'react';
3
3
  import Info from '@rsuite/icons/legacy/Info';
4
4
  import CheckCircle from '@rsuite/icons/legacy/CheckCircle';
5
5
  import CloseCircle from '@rsuite/icons/legacy/CloseCircle';
6
- import Remind from '@rsuite/icons/legacy/Remind';
7
6
  import Check from '@rsuite/icons/Check';
8
7
  import Close from '@rsuite/icons/Close';
8
+ import RemindRoundIcon from '@rsuite/icons/RemindRound';
9
9
  export var MESSAGE_STATUS_ICONS = {
10
10
  info: /*#__PURE__*/React.createElement(Info, null),
11
11
  success: /*#__PURE__*/React.createElement(CheckCircle, null),
12
12
  error: /*#__PURE__*/React.createElement(CloseCircle, null),
13
- warning: /*#__PURE__*/React.createElement(Remind, null)
13
+ warning: /*#__PURE__*/React.createElement(RemindRoundIcon, null)
14
14
  };
15
15
  export var PROGRESS_STATUS_ICON = {
16
16
  success: /*#__PURE__*/React.createElement(Check, null),
@@ -354,7 +354,7 @@
354
354
  &:not(.rs-checkbox-disabled):hover,
355
355
  &:focus,
356
356
  &&-focus {
357
- .listbox-option-active(true);
357
+ .listbox-option-active();
358
358
 
359
359
  .high-contrast-mode({
360
360
  .rs-check-tree-node-text-wrapper {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.52.0",
3
+ "version": "5.53.0",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -134,18 +134,22 @@
134
134
  --rs-message-success-text: #fff;
135
135
  --rs-message-success-icon: #fff;
136
136
  --rs-message-success-bg: var(--rs-green-500);
137
+ --rs-message-success-border: var(--rs-green-800);
137
138
  --rs-message-info-header: #fff;
138
139
  --rs-message-info-text: #fff;
139
140
  --rs-message-info-icon: #fff;
140
141
  --rs-message-info-bg: var(--rs-blue-500);
142
+ --rs-message-info-border: var(--rs-blue-800);
141
143
  --rs-message-warning-header: var(--rs-gray-900);
142
144
  --rs-message-warning-text: var(--rs-gray-900);
143
145
  --rs-message-warning-icon: var(--rs-gray-900);
144
146
  --rs-message-warning-bg: var(--rs-yellow-500);
147
+ --rs-message-warning-border: var(--rs-yellow-800);
145
148
  --rs-message-error-header: #fff;
146
149
  --rs-message-error-text: #fff;
147
150
  --rs-message-error-icon: #fff;
148
151
  --rs-message-error-bg: var(--rs-red-500);
152
+ --rs-message-error-border: var(--rs-red-800);
149
153
 
150
154
  // Tooltip
151
155
  --rs-tooltip-bg: var(--rs-gray-500);
@@ -140,19 +140,27 @@
140
140
  --rs-message-success-header: var(--rs-text-heading);
141
141
  --rs-message-success-text: var(--rs-text-primary);
142
142
  --rs-message-success-icon: var(--rs-color-green);
143
- --rs-message-success-bg: var(--rs-green-50);
143
+ --rs-message-success-icon-border: var(--rs-green-200);
144
+ --rs-message-success-bg: rgb(from var(--rs-green-100) r g b / 60%);
145
+ --rs-message-success-border: var(--rs-color-green);
144
146
  --rs-message-info-header: var(--rs-text-heading);
145
147
  --rs-message-info-text: var(--rs-text-primary);
146
148
  --rs-message-info-icon: var(--rs-color-blue);
147
- --rs-message-info-bg: var(--rs-blue-50);
149
+ --rs-message-info-icon-border: var(--rs-blue-200);
150
+ --rs-message-info-bg: rgb(from var(--rs-blue-100) r g b / 60%);
151
+ --rs-message-info-border: var(--rs-color-blue);
148
152
  --rs-message-warning-header: var(--rs-text-heading);
149
153
  --rs-message-warning-text: var(--rs-text-primary);
150
154
  --rs-message-warning-icon: var(--rs-color-yellow);
151
- --rs-message-warning-bg: var(--rs-yellow-50);
155
+ --rs-message-warning-icon-border: var(--rs-yellow-200);
156
+ --rs-message-warning-bg: rgb(from var(--rs-yellow-100) r g b / 60%);
157
+ --rs-message-warning-border: var(--rs-color-yellow);
152
158
  --rs-message-error-header: var(--rs-text-heading);
153
159
  --rs-message-error-text: var(--rs-text-primary);
154
160
  --rs-message-error-icon: var(--rs-color-red);
155
- --rs-message-error-bg: var(--rs-red-50);
161
+ --rs-message-error-icon-border: var(--rs-red-200);
162
+ --rs-message-error-bg: rgb(from var(--rs-red-100) r g b / 60%);
163
+ --rs-message-error-border: var(--rs-color-red);
156
164
 
157
165
  // Tooltip
158
166
  --rs-tooltip-bg: var(--rs-gray-900);
@@ -392,6 +400,12 @@
392
400
  --rs-loader-ring-inverse: fade(@B050, 30%);
393
401
  --rs-loader-backdrop-inverse: fade(@B900, 83%);
394
402
 
403
+ // Message
404
+ --rs-message-success-bg: fade(@green-100, 60%);
405
+ --rs-message-info-bg: fade(@blue-100, 60%);
406
+ --rs-message-warning-bg: fade(@yellow-100, 60%);
407
+ --rs-message-error-bg: fade(@red-100, 60%);
408
+
395
409
  // Dropdown
396
410
  --rs-dropdown-item-bg-hover: fade(@H100, 50%);
397
411
 
package/styles/index.less CHANGED
@@ -66,6 +66,7 @@
66
66
  @import '../Table/styles/index';
67
67
  @import '../Tag/styles/index';
68
68
  @import '../TagGroup/styles/index';
69
+ @import '../Tabs/styles/index';
69
70
  @import '../TagPicker/styles/index';
70
71
  @import '../TagInput/styles/index';
71
72
  @import '../Timeline/styles/index';
@@ -38,14 +38,9 @@
38
38
  }
39
39
 
40
40
  // "-active" for aria-activedescendant
41
- .listbox-option-active(@multiselectable: false) {
41
+ .listbox-option-active() {
42
42
  background-color: var(--rs-listbox-option-hover-bg);
43
-
44
- // No need to change text color in multiselectable listboxes
45
- // in favor of checkbox state changes
46
- & when (@multiselectable = false) {
47
- color: var(--rs-listbox-option-hover-text);
48
- }
43
+ color: var(--rs-listbox-option-hover-text);
49
44
 
50
45
  .high-contrast-mode({
51
46
  .focus-ring(slim-inset);
@@ -571,7 +571,7 @@
571
571
  @message-title-size: @font-size-base;
572
572
  @message-link-font-weight: bold;
573
573
 
574
- @message-icon-size: @font-size-small;
574
+ @message-icon-size: 16px;
575
575
  @message-icon-large-size: 24px;
576
576
  @message-icon-margin-right: 10px;
577
577
 
@@ -862,6 +862,7 @@
862
862
  @zindex-popover: 1060;
863
863
  @zindex-tooltip: 1070;
864
864
  @zindex-notification: 1080;
865
+ @zindex-message-full: 1090;
865
866
 
866
867
  //#==== Uploader
867
868
  @zindex-uploader-picture-preview: 1;