rsuite 5.2.0 → 5.2.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [5.2.1](https://github.com/rsuite/rsuite/compare/v5.2.0...v5.2.1) (2021-11-12)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **CheckTree:** root node indeterminate state error ([#2124](https://github.com/rsuite/rsuite/issues/2124)) ([9dac0bc](https://github.com/rsuite/rsuite/commit/9dac0bc0e51b58b46aa85dac8a0348a9d73b2503))
6
+ - **Sidenav:** remove underline on hovered SidenavItem ([#2118](https://github.com/rsuite/rsuite/issues/2118)) ([56f7c3a](https://github.com/rsuite/rsuite/commit/56f7c3ad0f7ab31c7d5aef2fe2cde1661024f034))
7
+ - **Sidenav:** sidenav dropdown item accept as prop ([#2120](https://github.com/rsuite/rsuite/issues/2120)) ([5386999](https://github.com/rsuite/rsuite/commit/538699962dfd46faf41bb377833b0dcd06112039))
8
+
1
9
  # [5.2.0](https://github.com/rsuite/rsuite/compare/v5.1.0...v5.2.0) (2021-11-05)
2
10
 
3
11
  ### Bug Fixes
package/README.md CHANGED
@@ -78,7 +78,8 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
78
78
  - [Right-to-left][rsuite-doc-guide-rtl]
79
79
  - [Components][rsuite-components-overview]
80
80
 
81
- ### Examples
81
+ <details>
82
+ <summary>More examples</summary>
82
83
 
83
84
  - [Management system][demo-admin]
84
85
  - [Use modularized][demo-modular-import]
@@ -96,6 +97,7 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
96
97
  - [Use in UmiJS][demo-umi-app]
97
98
  - [Use in Snowpack][demo-snowpack]
98
99
  - [Use in Vite][demo-vite]
100
+ </details>
99
101
 
100
102
  ## Previous major versions
101
103
 
@@ -113,53 +115,10 @@ and security fixes are supported until 6.x is in progress.
113
115
 
114
116
  Detailed changes for each release are documented in the [release notes][release-notes].
115
117
 
116
- ## Development
117
-
118
- ### Test-Driven Development(TDD)
119
-
120
- 1. Fork `https://github.com/rsuite/rsuite` this repo.
121
-
122
- ```bash
123
- $ git clone git@github.com:<YOUR NAME>/rsuite.git
124
- $ cd rsuite
125
- ```
126
-
127
- 2. Install it and run
128
-
129
- ```bash
130
- $ npm i
131
- $ npm run tdd
132
- ```
133
-
134
- 3. Run a single component test case.
135
-
136
- ```bash
137
- $ M=Button npm run tdd
138
- ```
139
-
140
- ### UI-Driven Development
141
-
142
- 1. Fork `https://github.com/rsuite/rsuite` this repo.
143
-
144
- ```bash
145
- $ git clone git@github.com:<YOUR NAME>/rsuite.git
146
- ```
147
-
148
- 2. Install it and run
149
-
150
- ```bash
151
- $ npm i
152
- $ npm run dev
153
- ```
154
-
155
- 3. Your show time. Open url http://127.0.0.1:3000/ in browser.
156
-
157
118
  ## Contribution
158
119
 
159
120
  Make sure you've read the [guidelines][contributing] before you start contributing.
160
121
 
161
- Editor preferences are available in the [.prettierrc][prettierrc] for easy use in common code editors. Read more and download plugins at https://prettier.io/.
162
-
163
122
  ## Supporting React Suite
164
123
 
165
124
  If you like React Suite, you can show your support by either
@@ -139,6 +139,10 @@
139
139
  outline: 0;
140
140
  overflow: hidden;
141
141
 
142
+ &:hover {
143
+ text-decoration: none;
144
+ }
145
+
142
146
  &:focus-visible,
143
147
  &&-focus {
144
148
  .focus-ring(slim-inset);
@@ -19,7 +19,7 @@ export interface TreeNodesType {
19
19
  [key: string]: TreeNodeType;
20
20
  }
21
21
  export declare function isEveryChildChecked(nodes: TreeNodesType, parent: TreeNodeType): boolean;
22
- export declare function isSomeChildChecked(nodes: TreeNodesType, parent: TreeNodeType): boolean;
22
+ export declare function isSomeChildChecked(nodes: TreeNodesType, parent: TreeNodeType, childrenKey: string): boolean;
23
23
  export declare function isSomeNodeHasChildren(data: any[], childrenKey: string): boolean;
24
24
  /**
25
25
  * is all siblings nodes is uncheckable
@@ -41,18 +41,19 @@ function isEveryChildChecked(nodes, parent) {
41
41
  });
42
42
  }
43
43
 
44
- function isSomeChildChecked(nodes, parent) {
44
+ function isSomeChildChecked(nodes, parent, childrenKey) {
45
45
  if ((0, _isNil2.default)(nodes[parent.refKey])) {
46
46
  return false;
47
47
  }
48
48
 
49
49
  var children = (0, _treeUtils.getChildrenByFlattenNodes)(nodes, parent);
50
+ return children.some(function (child) {
51
+ var _child$childrenKey;
50
52
 
51
- if (!children.length) {
52
- return nodes[parent.refKey].check;
53
- }
53
+ if ((child === null || child === void 0 ? void 0 : (_child$childrenKey = child[childrenKey]) === null || _child$childrenKey === void 0 ? void 0 : _child$childrenKey.length) > 0) {
54
+ return isSomeChildChecked(nodes, child, childrenKey);
55
+ }
54
56
 
55
- return children.some(function (child) {
56
57
  return nodes[child.refKey].check;
57
58
  });
58
59
  }
@@ -215,7 +216,7 @@ function getNodeCheckState(_ref) {
215
216
  return _utils.CHECK_STATE.CHECK;
216
217
  }
217
218
 
218
- if (isSomeChildChecked(nodes, node)) {
219
+ if (isSomeChildChecked(nodes, node, childrenKey)) {
219
220
  nodes[node.refKey].checkAll = false;
220
221
  return _utils.CHECK_STATE.INDETERMINATE;
221
222
  }
@@ -41,6 +41,8 @@ var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
41
41
 
42
42
  var _DropdownState = require("./DropdownState");
43
43
 
44
+ var _useRenderDropdownItem = require("./useRenderDropdownItem");
45
+
44
46
  /**
45
47
  * The <Dropdown.Item> API
46
48
  * When used inside <Sidenav>, renders a <TreeviewItem>
@@ -112,15 +114,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
112
114
  };
113
115
  }
114
116
  }, [internalId, selected, dispatch]);
115
- var renderDropdownItem = (0, _react.useCallback)(function (ui) {
116
- if (Component === 'li') {
117
- return ui;
118
- }
119
-
120
- return /*#__PURE__*/_react.default.createElement("li", {
121
- role: "none presentation"
122
- }, ui);
123
- }, [Component]);
117
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
124
118
 
125
119
  if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
126
120
  return /*#__PURE__*/_react.default.createElement(_SidenavDropdownItem.default, (0, _extends2.default)({
@@ -129,18 +123,18 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
129
123
  }
130
124
 
131
125
  if (divider) {
132
- return renderDropdownItem( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
126
+ return renderDropdownItem((0, _extends2.default)({
133
127
  ref: ref,
134
- role: "separator",
128
+ role: 'separator',
135
129
  className: merge(prefix('divider'), className)
136
- }, restProps)));
130
+ }, restProps));
137
131
  }
138
132
 
139
133
  if (panel) {
140
- return renderDropdownItem( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
134
+ return renderDropdownItem((0, _extends2.default)({
141
135
  ref: ref,
142
136
  className: merge(prefix('panel'), className)
143
- }, restProps), children));
137
+ }, restProps));
144
138
  }
145
139
 
146
140
  if (navbar) {
@@ -195,12 +189,14 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
195
189
  dataAttributes['data-event-key-type'] = typeof eventKey;
196
190
  }
197
191
 
198
- return renderDropdownItem( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
192
+ return renderDropdownItem((0, _extends2.default)({
199
193
  ref: (0, _utils.mergeRefs)(ref, menuitemRef),
200
194
  className: classes
201
- }, menuitem, dataAttributes, restProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
202
- className: prefix('menu-icon')
203
- }), children));
195
+ }, menuitem, dataAttributes, restProps, {
196
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
197
+ className: prefix('menu-icon')
198
+ }), children)
199
+ }));
204
200
  });
205
201
  });
206
202
 
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare function useRenderDropdownItem(Component: React.ElementType): (props: any, OverrideComponent?: React.ElementType) => JSX.Element;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ exports.__esModule = true;
6
+ exports.useRenderDropdownItem = useRenderDropdownItem;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ function useRenderDropdownItem(Component) {
11
+ return (0, _react.useCallback)(function (props, OverrideComponent) {
12
+ if (Component === 'li') {
13
+ if (OverrideComponent) {
14
+ return /*#__PURE__*/_react.default.createElement("li", {
15
+ role: "none presentation"
16
+ }, /*#__PURE__*/_react.default.createElement(OverrideComponent, props));
17
+ }
18
+
19
+ return /*#__PURE__*/_react.default.createElement(Component, props);
20
+ }
21
+
22
+ return /*#__PURE__*/_react.default.createElement("li", {
23
+ role: "none presentation"
24
+ }, /*#__PURE__*/_react.default.createElement(Component, props));
25
+ }, [Component]);
26
+ }
@@ -29,6 +29,8 @@ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
29
29
 
30
30
  var _DropdownContext = _interopRequireDefault(require("../Dropdown/DropdownContext"));
31
31
 
32
+ var _useRenderDropdownItem = require("../Dropdown/useRenderDropdownItem");
33
+
32
34
  /**
33
35
  * Tree View Node
34
36
  * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
@@ -78,34 +80,39 @@ var SidenavDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props
78
80
  var menuitemEventHandlers = {
79
81
  onClick: (0, _utils.createChainedFunction)(handleClick, onClick)
80
82
  };
83
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
81
84
 
82
85
  if (divider) {
83
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
86
+ return renderDropdownItem((0, _extends2.default)({
84
87
  ref: ref,
85
- role: "separator",
88
+ role: 'separator',
86
89
  style: style,
87
90
  className: merge(prefix('divider'), className)
88
91
  }, rest));
89
92
  }
90
93
 
91
94
  if (panel) {
92
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
95
+ return renderDropdownItem((0, _extends2.default)({
93
96
  ref: ref,
94
- role: "none presentation",
97
+ role: 'none presentation',
95
98
  style: style,
96
99
  className: merge(prefix('panel'), className)
97
- }, rest), children);
100
+ }, rest, {
101
+ children: children
102
+ }));
98
103
  }
99
104
 
100
- return /*#__PURE__*/_react.default.createElement(_SafeAnchor.default, (0, _extends2.default)({
105
+ return renderDropdownItem((0, _extends2.default)({
101
106
  ref: ref
102
107
  }, rest, {
103
108
  style: style,
104
109
  className: classes,
105
- "aria-current": selected || undefined
106
- }, menuitemEventHandlers), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
107
- className: prefix('menu-icon')
108
- }), children, /*#__PURE__*/_react.default.createElement(_Ripple.default, null));
110
+ 'aria-current': selected || undefined
111
+ }, menuitemEventHandlers, {
112
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
113
+ className: prefix('menu-icon')
114
+ }), children, /*#__PURE__*/_react.default.createElement(_Ripple.default, null))
115
+ }), _SafeAnchor.default);
109
116
  });
110
117
 
111
118
  SidenavDropdownItem.displayName = 'Sidenav.Dropdown.Item';
@@ -12565,6 +12565,9 @@ textarea.rs-picker-menu .rs-picker-search-bar .rs-picker-search-bar-input {
12565
12565
  outline: 0;
12566
12566
  overflow: hidden;
12567
12567
  }
12568
+ .rs-sidenav-item:hover {
12569
+ text-decoration: none;
12570
+ }
12568
12571
  .rs-sidenav-item:focus-visible,
12569
12572
  .rs-sidenav-item.rs-sidenav-item-focus {
12570
12573
  -webkit-box-shadow: inset var(--rs-state-focus-shadow-slim);