rsuite 5.23.2 → 5.24.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 (70) hide show
  1. package/ButtonToolbar/styles/index.less +0 -4
  2. package/CHANGELOG.md +18 -0
  3. package/Modal/styles/index.less +6 -6
  4. package/Sidenav/styles/index.less +7 -2
  5. package/cjs/AutoComplete/AutoComplete.d.ts +2 -0
  6. package/cjs/AutoComplete/AutoComplete.js +4 -1
  7. package/cjs/AutoComplete/utils.d.ts +3 -2
  8. package/cjs/AutoComplete/utils.js +1 -1
  9. package/cjs/ButtonToolbar/ButtonToolbar.d.ts +2 -1
  10. package/cjs/ButtonToolbar/ButtonToolbar.js +9 -2
  11. package/cjs/Calendar/MonthDropdown.d.ts +1 -0
  12. package/cjs/Calendar/MonthDropdown.js +14 -10
  13. package/cjs/Cascader/Cascader.js +2 -1
  14. package/cjs/Cascader/utils.d.ts +17 -12
  15. package/cjs/Cascader/utils.js +5 -5
  16. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  17. package/cjs/DatePicker/DatePicker.js +17 -1
  18. package/cjs/Dropdown/Dropdown.d.ts +2 -0
  19. package/cjs/Dropdown/Dropdown.js +3 -0
  20. package/cjs/Dropdown/DropdownItem.d.ts +5 -1
  21. package/cjs/Dropdown/DropdownItem.js +7 -7
  22. package/cjs/Dropdown/DropdownSeparator.d.ts +14 -0
  23. package/cjs/Dropdown/DropdownSeparator.js +48 -0
  24. package/cjs/MultiCascader/utils.d.ts +14 -11
  25. package/cjs/Picker/utils.d.ts +15 -13
  26. package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +3 -2
  27. package/cjs/Stack/Stack.d.ts +4 -0
  28. package/cjs/Stack/Stack.js +10 -8
  29. package/cjs/utils/deprecatePropType.d.ts +9 -0
  30. package/cjs/utils/deprecatePropType.js +27 -0
  31. package/cjs/utils/treeUtils.d.ts +30 -22
  32. package/dist/rsuite-rtl.css +10 -9
  33. package/dist/rsuite-rtl.min.css +1 -1
  34. package/dist/rsuite-rtl.min.css.map +1 -1
  35. package/dist/rsuite.css +10 -9
  36. package/dist/rsuite.js +24 -13
  37. package/dist/rsuite.js.map +1 -1
  38. package/dist/rsuite.min.css +1 -1
  39. package/dist/rsuite.min.css.map +1 -1
  40. package/dist/rsuite.min.js +1 -1
  41. package/dist/rsuite.min.js.map +1 -1
  42. package/esm/AutoComplete/AutoComplete.d.ts +2 -0
  43. package/esm/AutoComplete/AutoComplete.js +4 -1
  44. package/esm/AutoComplete/utils.d.ts +3 -2
  45. package/esm/AutoComplete/utils.js +1 -1
  46. package/esm/ButtonToolbar/ButtonToolbar.d.ts +2 -1
  47. package/esm/ButtonToolbar/ButtonToolbar.js +9 -2
  48. package/esm/Calendar/MonthDropdown.d.ts +1 -0
  49. package/esm/Calendar/MonthDropdown.js +12 -9
  50. package/esm/Cascader/Cascader.js +2 -1
  51. package/esm/Cascader/utils.d.ts +17 -12
  52. package/esm/Cascader/utils.js +5 -5
  53. package/esm/DatePicker/DatePicker.d.ts +5 -1
  54. package/esm/DatePicker/DatePicker.js +16 -1
  55. package/esm/Dropdown/Dropdown.d.ts +2 -0
  56. package/esm/Dropdown/Dropdown.js +2 -0
  57. package/esm/Dropdown/DropdownItem.d.ts +5 -1
  58. package/esm/Dropdown/DropdownItem.js +5 -7
  59. package/esm/Dropdown/DropdownSeparator.d.ts +14 -0
  60. package/esm/Dropdown/DropdownSeparator.js +35 -0
  61. package/esm/MultiCascader/utils.d.ts +14 -11
  62. package/esm/Picker/utils.d.ts +15 -13
  63. package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +3 -2
  64. package/esm/Stack/Stack.d.ts +4 -0
  65. package/esm/Stack/Stack.js +10 -8
  66. package/esm/utils/deprecatePropType.d.ts +9 -0
  67. package/esm/utils/deprecatePropType.js +25 -0
  68. package/esm/utils/treeUtils.d.ts +30 -22
  69. package/package.json +1 -1
  70. package/styles/variables.less +3 -2
@@ -37,7 +37,7 @@ var _Ripple = _interopRequireDefault(require("../Ripple"));
37
37
 
38
38
  var _Disclosure = _interopRequireDefault(require("../Disclosure/Disclosure"));
39
39
 
40
- var _templateObject, _templateObject2;
40
+ var _templateObject;
41
41
 
42
42
  /**
43
43
  * Tree View Node
@@ -99,6 +99,7 @@ var ExpandedSidenavDropdownMenu = /*#__PURE__*/_react.default.forwardRef(functio
99
99
  // open,
100
100
  disabled: disabled
101
101
  }));
102
+ var iconClasses = merge(className, prefix('toggle-icon'), prefix((open ? 'expand' : 'collapse') + "-icon"));
102
103
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
103
104
  ref: ref
104
105
  }, rest, {
@@ -112,7 +113,7 @@ var ExpandedSidenavDropdownMenu = /*#__PURE__*/_react.default.forwardRef(functio
112
113
  }, (0, _omit.default)(buttonProps, ['open'])), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
113
114
  className: prefix('menu-icon')
114
115
  }), title, /*#__PURE__*/_react.default.createElement(Icon, {
115
- className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
116
+ className: iconClasses
116
117
  }), /*#__PURE__*/_react.default.createElement(_Ripple.default, null));
117
118
  }), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref2) {
118
119
  var open = _ref2.open;
@@ -22,6 +22,10 @@ export interface StackProps extends WithAsProps {
22
22
  * Define whether the children in the stack are forced onto one line or can wrap onto multiple lines
23
23
  */
24
24
  wrap?: boolean;
25
+ /**
26
+ * The render mode of the children.
27
+ */
28
+ childrenRenderMode?: 'clone' | 'wrap';
25
29
  }
26
30
  export interface StackComponent extends RsRefForwardingComponent<'div', StackProps> {
27
31
  Item: typeof StackItem;
@@ -26,6 +26,8 @@ var Stack = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
26
26
  alignItems = _props$alignItems === void 0 ? 'center' : _props$alignItems,
27
27
  _props$classPrefix = props.classPrefix,
28
28
  classPrefix = _props$classPrefix === void 0 ? 'stack' : _props$classPrefix,
29
+ _props$childrenRender = props.childrenRenderMode,
30
+ childrenRenderMode = _props$childrenRender === void 0 ? 'wrap' : _props$childrenRender,
29
31
  className = props.className,
30
32
  children = props.children,
31
33
  direction = props.direction,
@@ -34,7 +36,7 @@ var Stack = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
34
36
  divider = props.divider,
35
37
  style = props.style,
36
38
  wrap = props.wrap,
37
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "alignItems", "classPrefix", "className", "children", "direction", "justifyContent", "spacing", "divider", "style", "wrap"]);
39
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "alignItems", "classPrefix", "childrenRenderMode", "className", "children", "direction", "justifyContent", "spacing", "divider", "style", "wrap"]);
38
40
 
39
41
  var _useCustom = (0, _utils.useCustom)('Stack'),
40
42
  rtl = _useCustom.rtl;
@@ -45,15 +47,15 @@ var Stack = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
45
47
  prefix = _useClassNames.prefix;
46
48
 
47
49
  var classes = merge(className, withClassPrefix());
48
- var isSupportGridGap = (0, _utils.isSupportFlexGap)();
49
- var gridGap = Array.isArray(spacing) ? spacing : [spacing, 0];
50
- var itemStyles = (_itemStyles = {}, _itemStyles[rtl ? 'marginLeft' : 'marginRight'] = gridGap[0], _itemStyles.marginBottom = gridGap[1], _itemStyles);
50
+ var isSupportGap = (0, _utils.isSupportFlexGap)();
51
+ var flexGap = Array.isArray(spacing) ? spacing : [spacing, spacing];
52
+ var itemStyles = (_itemStyles = {}, _itemStyles[rtl ? 'marginLeft' : 'marginRight'] = flexGap[0], _itemStyles.marginBottom = flexGap[1], _itemStyles);
51
53
  var styles = (0, _extends2.default)({
52
54
  alignItems: alignItems,
53
55
  justifyContent: justifyContent,
54
56
  flexDirection: direction,
55
57
  flexWrap: wrap ? 'wrap' : undefined,
56
- gap: isSupportGridGap ? spacing : undefined
58
+ gap: isSupportGap ? spacing : undefined
57
59
  }, style);
58
60
  /*
59
61
  * toArray remove undefined, null and boolean
@@ -67,13 +69,13 @@ var Stack = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
67
69
  className: classes,
68
70
  style: styles
69
71
  }), _react.default.Children.map(filterChildren, function (child, index) {
70
- var childNode = child.type !== _StackItem.default ? /*#__PURE__*/_react.default.createElement(_StackItem.default, {
72
+ var childNode = childrenRenderMode === 'wrap' && child.type !== _StackItem.default ? /*#__PURE__*/_react.default.createElement(_StackItem.default, {
71
73
  key: index,
72
74
  className: prefix('item'),
73
- style: !isSupportGridGap ? itemStyles : undefined
75
+ style: !isSupportGap ? itemStyles : undefined
74
76
  }, child) : /*#__PURE__*/_react.default.cloneElement(child, {
75
77
  className: merge(prefix('item'), child.props.className),
76
- style: !isSupportGridGap ? (0, _extends2.default)({}, itemStyles, child.props.style) : child.props.style
78
+ style: !isSupportGap ? (0, _extends2.default)({}, itemStyles, child.props.style) : child.props.style
77
79
  });
78
80
  return [childNode, index < count - 1 ? divider : null];
79
81
  }));
@@ -1,2 +1,11 @@
1
1
  import * as PropTypes from 'prop-types';
2
+ /**
3
+ * Prints deprecation message when user uses a deprecated prop
4
+ *
5
+ * @deprecated Use {@link deprecatePropTypeNew} which prints clearer messages.
6
+ */
2
7
  export default function deprecatePropType<T extends PropTypes.Validator<any>>(propType: T, explanation?: string): typeof propType;
8
+ /**
9
+ * Prints deprecation message when user uses a deprecated prop
10
+ */
11
+ export declare function deprecatePropTypeNew<T extends PropTypes.Validator<any>>(propType: T, explanation?: string): typeof propType;
@@ -4,10 +4,17 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  exports.__esModule = true;
6
6
  exports.default = deprecatePropType;
7
+ exports.deprecatePropTypeNew = deprecatePropTypeNew;
7
8
 
8
9
  var _warnOnce = _interopRequireDefault(require("./warnOnce"));
9
10
 
10
11
  // Ref: https://github.com/thefrontside/deprecated-prop-type/blob/master/deprecated.js
12
+
13
+ /**
14
+ * Prints deprecation message when user uses a deprecated prop
15
+ *
16
+ * @deprecated Use {@link deprecatePropTypeNew} which prints clearer messages.
17
+ */
11
18
  function deprecatePropType(propType, explanation) {
12
19
  return function validate(props, propName, componentName) {
13
20
  // Note ...rest here
@@ -20,6 +27,26 @@ function deprecatePropType(propType, explanation) {
20
27
  rest[_key - 3] = arguments[_key];
21
28
  }
22
29
 
30
+ return propType.apply(void 0, [props, propName, componentName].concat(rest)); // and here
31
+ };
32
+ }
33
+ /**
34
+ * Prints deprecation message when user uses a deprecated prop
35
+ */
36
+
37
+
38
+ function deprecatePropTypeNew(propType, explanation) {
39
+ return function validate(props, propName, componentName) {
40
+ // Note ...rest here
41
+ if (props[propName] != null) {
42
+ var message = "[rsuite] \"" + propName + "\" property of " + componentName + " component has been deprecated.\n" + explanation;
43
+ (0, _warnOnce.default)(message);
44
+ }
45
+
46
+ for (var _len2 = arguments.length, rest = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {
47
+ rest[_key2 - 3] = arguments[_key2];
48
+ }
49
+
23
50
  return propType.apply(void 0, [props, propName, componentName].concat(rest)); // and here
24
51
  };
25
52
  }
@@ -2,7 +2,6 @@ import React from 'react';
2
2
  import { TreeNodeType, TreeNodesType } from '../CheckTreePicker/utils';
3
3
  import { TREE_NODE_DROP_POSITION } from '../utils';
4
4
  import { CheckTreePickerProps } from '../CheckTreePicker/CheckTreePicker';
5
- import { ItemDataType } from '../@types/common';
6
5
  import { TreePickerProps } from '../TreePicker/TreePicker';
7
6
  import { ListHandle } from '../Windowing';
8
7
  declare type PartialTreeProps = Partial<TreePickerProps | CheckTreePickerProps>;
@@ -11,14 +10,14 @@ declare type PartialTreeProps = Partial<TreePickerProps | CheckTreePickerProps>;
11
10
  * @param {*} expandItemValues
12
11
  * @param {*} parentKeys
13
12
  */
14
- export declare function shouldShowNodeByParentExpanded(expandItemValues?: any[], parentKeys?: any[]): boolean;
13
+ export declare function shouldShowNodeByParentExpanded<T>(expandItemValues?: T[], parentKeys?: T[]): boolean;
15
14
  /**
16
15
  * flatten tree structure to array
17
16
  * @param {*} tree
18
17
  * @param {*} childrenKey
19
18
  * @param {*} executor
20
19
  */
21
- export declare function flattenTree(tree: any[], childrenKey?: string, executor?: (node: any, index: number) => any): any[];
20
+ export declare function flattenTree<TItem>(tree: TItem[], childrenKey?: string, executor?: (node: any, index: number) => any): TItem[];
22
21
  /**
23
22
  * get all ancestor nodes of given node
24
23
  * @param {*} node
@@ -30,7 +29,7 @@ export declare function getNodeParents(node: any, parentKey?: string, valueKey?:
30
29
  * @param node
31
30
  * @param valueKey
32
31
  */
33
- export declare function getNodeParentKeys(nodes: TreeNodesType, node: TreeNodeType, valueKey: string): TreeNodeType[];
32
+ export declare function getNodeParentKeys<T>(nodes: TreeNodesType, node: TreeNodeType, valueKey: string): T[];
34
33
  export declare function hasVisibleChildren(node: TreeNodeType, childrenKey: string): any;
35
34
  /**
36
35
  * shallow equal array
@@ -38,7 +37,7 @@ export declare function hasVisibleChildren(node: TreeNodeType, childrenKey: stri
38
37
  * @param b
39
38
  */
40
39
  export declare function compareArray(a: any[], b: any[]): boolean;
41
- export declare function getDefaultExpandItemValues(data: ItemDataType[], props: Required<Pick<TreePickerProps, 'defaultExpandAll' | 'valueKey' | 'childrenKey' | 'defaultExpandItemValues'>>): any[];
40
+ export declare function getDefaultExpandItemValues<TItem>(data: TItem[], props: Required<Pick<TreePickerProps, 'defaultExpandAll' | 'valueKey' | 'childrenKey' | 'defaultExpandItemValues'>>): any[];
42
41
  /**
43
42
  * 获取 expandItemValues 的 value
44
43
  * @param props
@@ -61,7 +60,10 @@ export declare function createUpdateTreeDataFunction(params: any, { valueKey, ch
61
60
  childrenKey: any;
62
61
  }): (tree: any[]) => any[];
63
62
  export declare function findNodeOfTree(data: any, check: any): any;
64
- export declare function filterNodesOfTree(data: any, check: any): TreeNodeType[];
63
+ declare type HasChildren<T extends Record<string, unknown>> = T & {
64
+ children?: readonly HasChildren<T>[];
65
+ };
66
+ export declare function filterNodesOfTree<TItem extends HasChildren<Record<string, unknown>>>(data: readonly TItem[], check: (item: TItem) => boolean): TItem[];
65
67
  /**
66
68
  * get all focusable items
67
69
  * exclude not visible and disabled node
@@ -70,7 +72,7 @@ export declare function filterNodesOfTree(data: any, check: any): TreeNodeType[]
70
72
  * @param isSearching - component is in Searching
71
73
  * @returns
72
74
  */
73
- export declare const getFocusableItems: (filteredData: ItemDataType[], props: Required<Pick<PartialTreeProps, 'disabledItemValues' | 'valueKey' | 'childrenKey' | 'expandItemValues'>>, isSearching?: boolean) => TreeNodeType[];
75
+ export declare const getFocusableItems: <TItem extends TreeNodeType>(filteredData: TItem[], props: Required<Pick<PartialTreeProps, 'disabledItemValues' | 'valueKey' | 'childrenKey' | 'expandItemValues'>>, isSearching?: boolean) => TItem[];
74
76
  /**
75
77
  * return all focusable Item and active Element index
76
78
  * @param focusItemValue
@@ -150,7 +152,13 @@ export { getTreeActiveNode };
150
152
  * toggle tree node
151
153
  * @param param0
152
154
  */
153
- export declare function toggleExpand({ node, isExpand, expandItemValues, valueKey }: any): ItemDataType<string | number>[];
155
+ export declare function toggleExpand<T>({ node, isExpand, expandItemValues, valueKey }: ToggleExpandOptions<T>): T[];
156
+ declare type ToggleExpandOptions<T> = {
157
+ node: Record<string, unknown>;
158
+ isExpand: boolean;
159
+ expandItemValues: T[];
160
+ valueKey: string;
161
+ };
154
162
  export declare function getTreeNodeTitle(label: any): string | undefined;
155
163
  /**
156
164
  * get all children from flattenNodes object by given parent node
@@ -158,12 +166,12 @@ export declare function getTreeNodeTitle(label: any): string | undefined;
158
166
  * @param parent
159
167
  */
160
168
  export declare function getChildrenByFlattenNodes(nodes: TreeNodesType, parent: TreeNodeType): TreeNodeType[];
161
- export declare function useTreeDrag(): {
162
- dragNode: ItemDataType<string | number> | null;
169
+ export declare function useTreeDrag<T>(): {
170
+ dragNode: T | null;
163
171
  dragOverNodeKey: null;
164
172
  dragNodeKeys: (string | number)[];
165
173
  dropNodePosition: TREE_NODE_DROP_POSITION | null;
166
- setDragNode: (node: ItemDataType | null) => void;
174
+ setDragNode: (node: T | null) => void;
167
175
  setDragOverNodeKey: React.Dispatch<React.SetStateAction<null>>;
168
176
  setDragNodeKeys: React.Dispatch<React.SetStateAction<(string | number)[]>>;
169
177
  setDropNodePosition: React.Dispatch<React.SetStateAction<TREE_NODE_DROP_POSITION | null>>;
@@ -193,7 +201,7 @@ export declare function useFlattenTreeData({ data, labelKey, valueKey, childrenK
193
201
  flattenTreeData: (treeData: TreeNodeType[], parent?: TreeNodeType, layer?: any) => never[] | undefined;
194
202
  serializeListOnlyParent: (nodes: TreeNodesType, key: string) => (string | number)[];
195
203
  unSerializeList: ({ nodes, key, value, cascade, uncheckableItemValues }: UnSerializeListProps) => void;
196
- formatVirtualizedTreeData: (nodes: TreeNodesType, data: any[], expandItemValues: ItemDataType[], options: {
204
+ formatVirtualizedTreeData: (nodes: TreeNodesType, data: any[], expandItemValues: unknown[], options: {
197
205
  cascade?: boolean;
198
206
  searchKeyword?: string;
199
207
  }) => TreeNodeType[];
@@ -205,28 +213,28 @@ export declare function useTreeNodeRefs(): {
205
213
  treeNodesRefs: {};
206
214
  saveTreeNodeRef: (ref: React.Ref<any>, refKey?: string) => void;
207
215
  };
208
- interface TreeSearchProps {
216
+ interface TreeSearchProps<T> {
209
217
  labelKey: string;
210
218
  childrenKey: string;
211
219
  searchKeyword?: string;
212
- data: ItemDataType[];
220
+ data: T[];
213
221
  searchBy?: (keyword: any, label: any, item: any) => boolean;
214
- callback?: (keyword: string, data: ItemDataType[], event: React.SyntheticEvent) => void;
222
+ callback?: (keyword: string, data: T[], event: React.SyntheticEvent) => void;
215
223
  }
216
224
  /**
217
225
  * A hook that handles tree search filter options
218
226
  * @param props
219
227
  */
220
- export declare function useTreeSearch<T extends HTMLElement = HTMLInputElement>(props: TreeSearchProps): {
228
+ export declare function useTreeSearch<T>(props: TreeSearchProps<T>): {
221
229
  searchKeywordState: string;
222
- filteredData: ItemDataType<string | number>[];
223
- setFilteredData: (data: ItemDataType[], searchKeyword: string) => void;
230
+ filteredData: T[];
231
+ setFilteredData: (data: T[], searchKeyword: string) => void;
224
232
  setSearchKeyword: React.Dispatch<React.SetStateAction<string>>;
225
- handleSearch: (searchKeyword: string, event: React.ChangeEvent<T>) => void;
233
+ handleSearch: (searchKeyword: string, event: React.ChangeEvent) => void;
226
234
  };
227
- export declare function useGetTreeNodeChildren(treeData: ItemDataType[], valueKey: string, childrenKey: string): {
228
- data: ItemDataType<string | number>[];
229
- setData: React.Dispatch<React.SetStateAction<ItemDataType<string | number>[]>>;
235
+ export declare function useGetTreeNodeChildren<T extends Record<string, unknown>>(treeData: T[], valueKey: string, childrenKey: string): {
236
+ data: T[];
237
+ setData: React.Dispatch<React.SetStateAction<T[]>>;
230
238
  loadingNodeValues: never[];
231
239
  loadChildren: (node: any, getChildren: any) => void;
232
240
  };
@@ -2785,9 +2785,6 @@ tbody.rs-anim-collapse.rs-anim-in {
2785
2785
  .rs-btn-toolbar {
2786
2786
  line-height: 0;
2787
2787
  }
2788
- .rs-btn-toolbar > :not(:first-child):not(.rs-btn-block) {
2789
- margin-right: 10px;
2790
- }
2791
2788
  .rs-picker-subtle .picker-subtle-toggle {
2792
2789
  position: relative;
2793
2790
  z-index: 5;
@@ -9428,11 +9425,13 @@ textarea.rs-picker-search-input {
9428
9425
  left: 20px;
9429
9426
  top: 20px;
9430
9427
  font-size: 12px;
9431
- line-height: 1.66666667;
9428
+ color: #8e8e93;
9429
+ color: var(--rs-text-secondary);
9430
+ padding: 0;
9431
+ }
9432
+ .rs-modal-header .rs-modal-header-close:hover {
9432
9433
  color: #575757;
9433
9434
  color: var(--rs-text-primary);
9434
- width: 20px;
9435
- padding: 0 4px;
9436
9435
  }
9437
9436
  .rs-modal-title {
9438
9437
  font-weight: normal;
@@ -13185,13 +13184,15 @@ textarea.rs-picker-menu .rs-picker-search-bar .rs-picker-search-bar-input {
13185
13184
  position: absolute;
13186
13185
  left: 20px;
13187
13186
  top: 11px;
13188
- -webkit-transform: rotate(-90deg);
13189
- transform: rotate(-90deg);
13190
13187
  }
13191
- .rs-sidenav-nav > .rs-dropdown .rs-dropdown-item-expand .rs-dropdown-item-toggle-icon {
13188
+ .rs-sidenav-nav > .rs-dropdown .rs-dropdown-item-expand-icon {
13192
13189
  -webkit-transform: rotate(-270deg);
13193
13190
  transform: rotate(-270deg);
13194
13191
  }
13192
+ .rs-sidenav-nav > .rs-dropdown .rs-dropdown-item-collapse-icon {
13193
+ -webkit-transform: rotate(-90deg);
13194
+ transform: rotate(-90deg);
13195
+ }
13195
13196
  .rs-theme-high-contrast .rs-sidenav-nav .rs-dropdown-toggle,
13196
13197
  .rs-theme-high-contrast .rs-sidenav-nav .rs-dropdown-menu {
13197
13198
  border: none;