rsuite 5.52.0 → 5.53.1

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 (116) hide show
  1. package/AutoComplete/styles/index.css +4 -0
  2. package/CHANGELOG.md +25 -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/Carousel/Carousel.js +1 -1
  29. package/cjs/CheckTreePicker/CheckTreeNode.js +1 -1
  30. package/cjs/DateRangePicker/DateRangePicker.d.ts +10 -10
  31. package/cjs/DateRangePicker/DateRangePicker.js +1 -1
  32. package/cjs/DateRangePicker/index.d.ts +1 -1
  33. package/cjs/Dropdown/DropdownItem.js +4 -2
  34. package/cjs/Message/Message.d.ts +28 -6
  35. package/cjs/Message/Message.js +17 -11
  36. package/cjs/Nav/Nav.d.ts +2 -0
  37. package/cjs/Nav/Nav.js +14 -10
  38. package/cjs/Panel/Panel.js +2 -2
  39. package/cjs/Stack/Stack.js +2 -2
  40. package/cjs/Steps/Steps.js +1 -1
  41. package/cjs/Tabs/Tab.d.ts +25 -0
  42. package/cjs/Tabs/Tab.js +21 -0
  43. package/cjs/Tabs/TabPanel.d.ts +10 -0
  44. package/cjs/Tabs/TabPanel.js +33 -0
  45. package/cjs/Tabs/Tabs.d.ts +50 -0
  46. package/cjs/Tabs/Tabs.js +221 -0
  47. package/cjs/Tabs/index.d.ts +3 -0
  48. package/cjs/Tabs/index.js +9 -0
  49. package/cjs/Timeline/Timeline.js +1 -1
  50. package/cjs/index.d.ts +2 -0
  51. package/cjs/index.js +3 -1
  52. package/cjs/internals/Menu/Menu.js +12 -1
  53. package/cjs/internals/Picker/ListCheckItem.js +7 -2
  54. package/cjs/internals/Picker/ListItem.js +6 -2
  55. package/cjs/internals/Picker/TreeView.js +1 -1
  56. package/cjs/utils/ReactChildren.d.ts +2 -2
  57. package/cjs/utils/ReactChildren.js +22 -20
  58. package/cjs/utils/index.d.ts +2 -0
  59. package/cjs/utils/index.js +8 -2
  60. package/cjs/utils/statusIcons.js +2 -2
  61. package/dist/rsuite-no-reset-rtl.css +212 -35
  62. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  63. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  64. package/dist/rsuite-no-reset.css +212 -35
  65. package/dist/rsuite-no-reset.min.css +1 -1
  66. package/dist/rsuite-no-reset.min.css.map +1 -1
  67. package/dist/rsuite-rtl.css +212 -35
  68. package/dist/rsuite-rtl.min.css +1 -1
  69. package/dist/rsuite-rtl.min.css.map +1 -1
  70. package/dist/rsuite.css +212 -35
  71. package/dist/rsuite.js +84 -51
  72. package/dist/rsuite.js.map +1 -1
  73. package/dist/rsuite.min.css +1 -1
  74. package/dist/rsuite.min.css.map +1 -1
  75. package/dist/rsuite.min.js +1 -1
  76. package/dist/rsuite.min.js.map +1 -1
  77. package/esm/Carousel/Carousel.js +1 -1
  78. package/esm/CheckTreePicker/CheckTreeNode.js +1 -1
  79. package/esm/DateRangePicker/DateRangePicker.d.ts +10 -10
  80. package/esm/DateRangePicker/DateRangePicker.js +1 -1
  81. package/esm/DateRangePicker/index.d.ts +1 -1
  82. package/esm/Dropdown/DropdownItem.js +4 -2
  83. package/esm/Message/Message.d.ts +28 -6
  84. package/esm/Message/Message.js +19 -13
  85. package/esm/Nav/Nav.d.ts +2 -0
  86. package/esm/Nav/Nav.js +13 -9
  87. package/esm/Panel/Panel.js +2 -2
  88. package/esm/Stack/Stack.js +3 -3
  89. package/esm/Steps/Steps.js +1 -1
  90. package/esm/Tabs/Tab.d.ts +25 -0
  91. package/esm/Tabs/Tab.js +15 -0
  92. package/esm/Tabs/TabPanel.d.ts +10 -0
  93. package/esm/Tabs/TabPanel.js +27 -0
  94. package/esm/Tabs/Tabs.d.ts +50 -0
  95. package/esm/Tabs/Tabs.js +215 -0
  96. package/esm/Tabs/index.d.ts +3 -0
  97. package/esm/Tabs/index.js +3 -0
  98. package/esm/Timeline/Timeline.js +1 -1
  99. package/esm/index.d.ts +2 -0
  100. package/esm/index.js +1 -0
  101. package/esm/internals/Menu/Menu.js +12 -1
  102. package/esm/internals/Picker/ListCheckItem.js +7 -2
  103. package/esm/internals/Picker/ListItem.js +6 -2
  104. package/esm/internals/Picker/TreeView.js +1 -1
  105. package/esm/utils/ReactChildren.d.ts +2 -2
  106. package/esm/utils/ReactChildren.js +22 -20
  107. package/esm/utils/index.d.ts +2 -0
  108. package/esm/utils/index.js +3 -1
  109. package/esm/utils/statusIcons.js +2 -2
  110. package/internals/Picker/styles/index.less +1 -1
  111. package/package.json +1 -1
  112. package/styles/color-modes/dark.less +4 -0
  113. package/styles/color-modes/light.less +18 -4
  114. package/styles/index.less +1 -0
  115. package/styles/mixins/listbox.less +2 -7
  116. package/styles/variables.less +2 -1
@@ -0,0 +1,215 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
4
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
+ var _templateObject;
6
+ import React from 'react';
7
+ import PropTypes from 'prop-types';
8
+ import { useClassNames, useControlled, ReactChildren, useEventCallback, useUniqueId, useCustom } from '../utils';
9
+ import Nav from '../Nav';
10
+ import Tab from './Tab';
11
+ import TabPanel from './TabPanel';
12
+ function getFocusableTabs(tablist) {
13
+ var tabs = tablist === null || tablist === void 0 ? void 0 : tablist.querySelectorAll('[role=tab]');
14
+ return Array.from(tabs).filter(function (tab) {
15
+ return !(tab.getAttribute('aria-disabled') === 'true');
16
+ });
17
+ }
18
+ function getFocusedTab(tablist) {
19
+ var tabs = getFocusableTabs(tablist);
20
+ return tabs.find(function (tab) {
21
+ return tab.getAttribute('aria-selected');
22
+ });
23
+ }
24
+ function nextItem(tablist) {
25
+ if (!tablist) {
26
+ return null;
27
+ }
28
+ var item = getFocusedTab(tablist);
29
+ var items = getFocusableTabs(tablist);
30
+ if (!item) {
31
+ return items[0];
32
+ }
33
+ var nextItem = items[items.indexOf(item) + 1];
34
+ if (!nextItem || nextItem.getAttribute('role') !== 'tab') {
35
+ return items[0];
36
+ }
37
+ return nextItem;
38
+ }
39
+ function previousItem(tablist) {
40
+ if (!tablist) {
41
+ return null;
42
+ }
43
+ var item = getFocusedTab(tablist);
44
+ var items = getFocusableTabs(tablist);
45
+ if (!item) {
46
+ return items[items.length - 1];
47
+ }
48
+ var previousItem = items[items.indexOf(item) - 1];
49
+ if (!previousItem || previousItem.getAttribute('role') !== 'tab') {
50
+ return items[items.length - 1];
51
+ }
52
+ return previousItem;
53
+ }
54
+ var renderPanels = function renderPanels(children, tabProps) {
55
+ var id = tabProps.id,
56
+ activeKey = tabProps.activeKey;
57
+ return ReactChildren.map(children, function (child) {
58
+ var _child$props = child.props,
59
+ eventKey = _child$props.eventKey,
60
+ children = _child$props.children;
61
+ var selected = eventKey === activeKey;
62
+ return /*#__PURE__*/React.createElement(TabPanel, {
63
+ "aria-labelledby": id + "-" + eventKey,
64
+ "aria-hidden": !selected,
65
+ id: id + "-panel-" + eventKey,
66
+ active: selected
67
+ }, children);
68
+ });
69
+ };
70
+ var renderTabs = function renderTabs(children, tabPanelProps) {
71
+ var id = tabPanelProps.id,
72
+ activeKey = tabPanelProps.activeKey;
73
+ return ReactChildren.map(children, function (child) {
74
+ var _child$props2 = child.props,
75
+ eventKey = _child$props2.eventKey,
76
+ title = _child$props2.title,
77
+ disabled = _child$props2.disabled,
78
+ icon = _child$props2.icon;
79
+ var selected = eventKey === activeKey;
80
+ return /*#__PURE__*/React.createElement(Nav.Item, {
81
+ role: "tab",
82
+ as: "button",
83
+ type: "button",
84
+ "aria-selected": selected,
85
+ "aria-controls": id + "-panel-" + eventKey,
86
+ "aria-disabled": disabled,
87
+ "data-event-key": eventKey,
88
+ disabled: disabled,
89
+ icon: icon,
90
+ id: id + "-" + eventKey,
91
+ tabIndex: selected ? undefined : -1,
92
+ eventKey: eventKey
93
+ }, title);
94
+ });
95
+ };
96
+
97
+ /**
98
+ * Tabs are a set of layered sections of content, known as tab panels, that display one panel of content at a time.
99
+ *
100
+ * @version 5.53.0
101
+ * @see https://rsuitejs.com/components/tabs
102
+ */
103
+ var Tabs = /*#__PURE__*/React.forwardRef(function (props, ref) {
104
+ var _props$as = props.as,
105
+ Component = _props$as === void 0 ? 'div' : _props$as,
106
+ _props$classPrefix = props.classPrefix,
107
+ classPrefix = _props$classPrefix === void 0 ? 'tabs' : _props$classPrefix,
108
+ _props$appearance = props.appearance,
109
+ appearance = _props$appearance === void 0 ? 'tabs' : _props$appearance,
110
+ className = props.className,
111
+ children = props.children,
112
+ activeKeyProp = props.activeKey,
113
+ defaultActiveKey = props.defaultActiveKey,
114
+ idProp = props.id,
115
+ reversed = props.reversed,
116
+ vertical = props.vertical,
117
+ onSelect = props.onSelect,
118
+ rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "appearance", "className", "children", "activeKey", "defaultActiveKey", "id", "reversed", "vertical", "onSelect"]);
119
+ var id = useUniqueId('tab-', idProp);
120
+ var _useCustom = useCustom(),
121
+ rtl = _useCustom.rtl;
122
+ var _useControlled = useControlled(activeKeyProp, defaultActiveKey),
123
+ activeKey = _useControlled[0],
124
+ setActiveKey = _useControlled[1];
125
+ var _useClassNames = useClassNames(classPrefix),
126
+ withClassPrefix = _useClassNames.withClassPrefix,
127
+ prefix = _useClassNames.prefix,
128
+ merge = _useClassNames.merge;
129
+ var tablistRef = React.useRef(null);
130
+ var handleSelect = useEventCallback(function (eventKey, event) {
131
+ setActiveKey(eventKey);
132
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(eventKey, event);
133
+ });
134
+ var handleKeyDown = useEventCallback(function (event) {
135
+ var _getFocusableTabs;
136
+ var target = event.target;
137
+ if (target.getAttribute('role') !== 'tab') {
138
+ return;
139
+ }
140
+ var previousItemKey = vertical ? 'ArrowUp' : 'ArrowLeft';
141
+ var nextItemKey = vertical ? 'ArrowDown' : 'ArrowRight';
142
+ if (!vertical && rtl) {
143
+ previousItemKey = 'ArrowRight';
144
+ nextItemKey = 'ArrowLeft';
145
+ }
146
+ var item = null;
147
+ switch (event.key) {
148
+ case previousItemKey:
149
+ item = previousItem(tablistRef.current);
150
+ event.preventDefault();
151
+ break;
152
+ case nextItemKey:
153
+ item = nextItem(tablistRef.current);
154
+ event.preventDefault();
155
+ break;
156
+ case 'Home':
157
+ item = (_getFocusableTabs = getFocusableTabs(tablistRef.current)) === null || _getFocusableTabs === void 0 ? void 0 : _getFocusableTabs[0];
158
+ event.preventDefault();
159
+ break;
160
+ case 'End':
161
+ var tabs = getFocusableTabs(tablistRef.current);
162
+ item = tabs[tabs.length - 1];
163
+ event.preventDefault();
164
+ break;
165
+ }
166
+ if (item) {
167
+ var _item;
168
+ var _item$dataset = (_item = item) === null || _item === void 0 ? void 0 : _item.dataset,
169
+ _eventKey = _item$dataset.eventKey;
170
+ handleSelect(_eventKey, event);
171
+ item.focus();
172
+ }
173
+ });
174
+ return /*#__PURE__*/React.createElement(Component, _extends({
175
+ className: merge(className, withClassPrefix({
176
+ reversed: reversed,
177
+ vertical: vertical
178
+ }))
179
+ }, rest, {
180
+ ref: ref
181
+ }), /*#__PURE__*/React.createElement(Nav, {
182
+ role: "tablist",
183
+ "aria-orientation": vertical ? 'vertical' : 'horizontal',
184
+ reversed: reversed,
185
+ vertical: vertical,
186
+ appearance: appearance,
187
+ activeKey: activeKey,
188
+ onSelect: handleSelect,
189
+ onKeyDown: handleKeyDown,
190
+ ref: tablistRef
191
+ }, renderTabs(children, {
192
+ id: id,
193
+ activeKey: activeKey
194
+ })), /*#__PURE__*/React.createElement("div", {
195
+ className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["content"])))
196
+ }, renderPanels(children, {
197
+ id: id,
198
+ activeKey: activeKey
199
+ })));
200
+ });
201
+ Tabs.Tab = Tab;
202
+ Tabs.displayName = 'Tabs';
203
+ Tabs.propTypes = {
204
+ appearance: PropTypes.oneOf(['tabs', 'subtle']),
205
+ activeKey: PropTypes.any,
206
+ defaultActiveKey: PropTypes.any,
207
+ reversed: PropTypes.bool,
208
+ vertical: PropTypes.bool,
209
+ id: PropTypes.string,
210
+ className: PropTypes.string,
211
+ classPrefix: PropTypes.string,
212
+ children: PropTypes.node,
213
+ onSelect: PropTypes.func
214
+ };
215
+ export default Tabs;
@@ -0,0 +1,3 @@
1
+ import Tabs from './Tabs';
2
+ export type { TabsProps } from './Tabs';
3
+ export default Tabs;
@@ -0,0 +1,3 @@
1
+ 'use client';
2
+ import Tabs from './Tabs';
3
+ export default Tabs;
@@ -28,7 +28,7 @@ var Timeline = /*#__PURE__*/React.forwardRef(function (props, ref) {
28
28
  var _useClassNames = useClassNames(classPrefix),
29
29
  merge = _useClassNames.merge,
30
30
  withClassPrefix = _useClassNames.withClassPrefix;
31
- var count = React.Children.count(children);
31
+ var count = ReactChildren.count(children);
32
32
  var withTime = some(React.Children.toArray(children), function (item) {
33
33
  var _item$props;
34
34
  return item === null || item === void 0 ? void 0 : (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.time;
package/esm/index.d.ts CHANGED
@@ -118,6 +118,8 @@ export { default as Accordion } from './Accordion';
118
118
  export type { AccordionProps } from './Accordion';
119
119
  export { default as PanelGroup } from './PanelGroup';
120
120
  export type { PanelGroupProps } from './PanelGroup';
121
+ export { default as Tabs } from './Tabs';
122
+ export type { TabsProps } from './Tabs';
121
123
  export { default as Table } from './Table';
122
124
  export type { TableProps, ColumnProps, ColumnGroupProps, CellProps, TableLocaleType } from './Table';
123
125
  export { default as Progress } from './Progress';
package/esm/index.js CHANGED
@@ -63,6 +63,7 @@ export { default as CheckTree } from './CheckTree';
63
63
  export { default as Panel } from './Panel';
64
64
  export { default as Accordion } from './Accordion';
65
65
  export { default as PanelGroup } from './PanelGroup';
66
+ export { default as Tabs } from './Tabs';
66
67
  export { default as Table } from './Table';
67
68
  export { default as Progress } from './Progress';
68
69
  export { default as Timeline } from './Timeline';
@@ -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,27 @@
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 flatChildren(children) {
13
+ return React.Children.toArray(React.Children.map(children, function (child) {
14
+ if (isFragment(child)) {
15
+ var _child$props;
16
+ return React.Children.toArray(((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children) || []);
17
+ }
18
+ return child;
19
+ }));
20
+ }
4
21
  export function find(children, func, context) {
5
22
  var index = 0;
6
23
  var result;
7
- React.Children.forEach(children, function (child) {
24
+ React.Children.forEach(flatChildren(children), function (child) {
8
25
  if (result) {
9
26
  return;
10
27
  }
@@ -17,7 +34,7 @@ export function find(children, func, context) {
17
34
  }
18
35
  export function map(children, func, context) {
19
36
  var index = 0;
20
- return React.Children.map(children, function (child) {
37
+ return React.Children.map(flatChildren(children), function (child) {
21
38
  if (! /*#__PURE__*/React.isValidElement(child)) {
22
39
  return child;
23
40
  }
@@ -26,35 +43,20 @@ export function map(children, func, context) {
26
43
  return handle;
27
44
  });
28
45
  }
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
46
  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) {
47
+ return map(children, function (child, index) {
44
48
  return /*#__PURE__*/React.cloneElement(child, _extends({
45
49
  key: index
46
50
  }, func(child, index)));
47
51
  }, context);
48
52
  }
49
53
  export function count(children) {
50
- return React.Children.count(Array.isArray(children) ? children.filter(function (child) {
51
- return child;
52
- }) : children);
54
+ return React.Children.count(flatChildren(children));
53
55
  }
54
56
  function some(children, func, context) {
55
57
  var index = 0;
56
58
  var result = false;
57
- React.Children.forEach(children, function (child) {
59
+ React.Children.forEach(flatChildren(children), function (child) {
58
60
  if (result) {
59
61
  return;
60
62
  }
@@ -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.1",
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;