rsuite 5.56.0 → 5.57.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.
- package/CHANGELOG.md +16 -0
- package/CascadeTree/package.json +7 -0
- package/CascadeTree/styles/index.css +273 -0
- package/CascadeTree/styles/index.less +77 -0
- package/CascadeTree/styles/search.less +45 -0
- package/Cascader/styles/index.css +187 -192
- package/Cascader/styles/index.less +1 -122
- package/MultiCascadeTree/package.json +7 -0
- package/MultiCascadeTree/styles/index.css +3701 -0
- package/MultiCascadeTree/styles/index.less +37 -0
- package/MultiCascader/styles/index.css +72 -69
- package/MultiCascader/styles/index.less +11 -31
- package/cjs/@types/common.d.ts +12 -14
- package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
- package/cjs/CascadeTree/CascadeTree.js +174 -0
- package/cjs/CascadeTree/SearchView.d.ts +17 -0
- package/cjs/CascadeTree/SearchView.js +106 -0
- package/cjs/CascadeTree/TreeView.d.ts +20 -0
- package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/cjs/CascadeTree/hooks/index.d.ts +3 -0
- package/cjs/CascadeTree/hooks/index.js +12 -0
- package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/cjs/CascadeTree/hooks/usePaths.js +42 -0
- package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/CascadeTree/hooks/useSearch.js +59 -0
- package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/cjs/CascadeTree/hooks/useSelect.js +64 -0
- package/cjs/CascadeTree/index.d.ts +4 -0
- package/cjs/CascadeTree/index.js +9 -0
- package/cjs/CascadeTree/types.d.ts +66 -0
- package/cjs/CascadeTree/types.js +2 -0
- package/cjs/CascadeTree/utils.d.ts +32 -0
- package/cjs/CascadeTree/utils.js +66 -0
- package/cjs/Cascader/Cascader.d.ts +57 -26
- package/cjs/Cascader/Cascader.js +180 -247
- package/cjs/Cascader/useActive.d.ts +15 -0
- package/cjs/Cascader/useActive.js +43 -0
- package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
- package/cjs/Loader/Loader.js +5 -4
- package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
- package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
- package/cjs/MultiCascadeTree/SearchView.js +117 -0
- package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
- package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
- package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/cjs/MultiCascadeTree/hooks/index.js +16 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
- package/cjs/MultiCascadeTree/index.d.ts +4 -0
- package/cjs/MultiCascadeTree/index.js +9 -0
- package/cjs/MultiCascadeTree/types.d.ts +26 -0
- package/cjs/MultiCascadeTree/types.js +2 -0
- package/cjs/MultiCascadeTree/utils.d.ts +37 -0
- package/cjs/MultiCascadeTree/utils.js +140 -0
- package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
- package/cjs/MultiCascader/MultiCascader.js +175 -287
- package/cjs/Tree/Tree.d.ts +4 -4
- package/cjs/index.d.ts +6 -1
- package/cjs/index.js +8 -3
- package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
- package/cjs/toaster/ToastContainer.d.ts +9 -2
- package/cjs/toaster/index.d.ts +0 -1
- package/cjs/toaster/index.js +1 -3
- package/cjs/useToaster/index.d.ts +2 -0
- package/cjs/useToaster/index.js +9 -0
- package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/cjs/{toaster → useToaster}/useToaster.js +4 -4
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +5 -2
- package/dist/rsuite-no-reset-rtl.css +64 -61
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +64 -61
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +64 -61
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +64 -61
- package/dist/rsuite.js +242 -44
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/@types/common.d.ts +12 -14
- package/esm/CascadeTree/CascadeTree.d.ts +16 -0
- package/esm/CascadeTree/CascadeTree.js +167 -0
- package/esm/CascadeTree/SearchView.d.ts +17 -0
- package/esm/CascadeTree/SearchView.js +100 -0
- package/esm/CascadeTree/TreeView.d.ts +20 -0
- package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
- package/esm/CascadeTree/hooks/index.d.ts +3 -0
- package/esm/CascadeTree/hooks/index.js +4 -0
- package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
- package/esm/CascadeTree/hooks/usePaths.js +36 -0
- package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/CascadeTree/hooks/useSearch.js +54 -0
- package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
- package/esm/CascadeTree/hooks/useSelect.js +59 -0
- package/esm/CascadeTree/index.d.ts +4 -0
- package/esm/CascadeTree/index.js +3 -0
- package/esm/CascadeTree/types.d.ts +66 -0
- package/esm/CascadeTree/types.js +1 -0
- package/esm/CascadeTree/utils.d.ts +32 -0
- package/esm/CascadeTree/utils.js +61 -0
- package/esm/Cascader/Cascader.d.ts +57 -26
- package/esm/Cascader/Cascader.js +167 -233
- package/esm/Cascader/useActive.d.ts +15 -0
- package/esm/Cascader/useActive.js +37 -0
- package/esm/InlineEdit/InlineEdit.d.ts +1 -1
- package/esm/Loader/Loader.js +6 -5
- package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
- package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
- package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
- package/esm/MultiCascadeTree/SearchView.js +111 -0
- package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
- package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +20 -20
- package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
- package/esm/MultiCascadeTree/hooks/index.js +6 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
- package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
- package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
- package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
- package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
- package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
- package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
- package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
- package/esm/MultiCascadeTree/index.d.ts +4 -0
- package/esm/MultiCascadeTree/index.js +3 -0
- package/esm/MultiCascadeTree/types.d.ts +26 -0
- package/esm/MultiCascadeTree/types.js +1 -0
- package/esm/MultiCascadeTree/utils.d.ts +37 -0
- package/esm/MultiCascadeTree/utils.js +130 -0
- package/esm/MultiCascader/MultiCascader.d.ts +57 -29
- package/esm/MultiCascader/MultiCascader.js +168 -279
- package/esm/Tree/Tree.d.ts +4 -4
- package/esm/index.d.ts +6 -1
- package/esm/index.js +5 -1
- package/esm/internals/Picker/PickerToggle.d.ts +4 -5
- package/esm/toaster/ToastContainer.d.ts +9 -2
- package/esm/toaster/index.d.ts +0 -1
- package/esm/toaster/index.js +0 -1
- package/esm/useToaster/index.d.ts +2 -0
- package/esm/useToaster/index.js +3 -0
- package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
- package/esm/{toaster → useToaster}/useToaster.js +4 -4
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +2 -1
- package/package.json +1 -1
- package/styles/index.less +2 -0
- package/useToaster/package.json +7 -0
- package/useToaster/styles/index.css +239 -0
- package/useToaster/styles/index.less +1 -0
- package/cjs/Cascader/DropdownMenu.d.ts +0 -24
- package/cjs/Cascader/DropdownMenu.js +0 -175
- package/cjs/Cascader/TreeView.d.ts +0 -24
- package/cjs/Cascader/utils.js +0 -79
- package/cjs/MultiCascader/TreeView.d.ts +0 -25
- package/cjs/MultiCascader/utils.d.ts +0 -71
- package/cjs/MultiCascader/utils.js +0 -382
- package/esm/Cascader/DropdownMenu.d.ts +0 -24
- package/esm/Cascader/DropdownMenu.js +0 -168
- package/esm/Cascader/TreeView.d.ts +0 -24
- package/esm/Cascader/utils.js +0 -74
- package/esm/MultiCascader/TreeView.d.ts +0 -25
- package/esm/MultiCascader/utils.d.ts +0 -71
- package/esm/MultiCascader/utils.js +0 -369
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
import React, { useEffect, useRef } from 'react';
|
|
5
|
-
import SpinnerIcon from '@rsuite/icons/legacy/Spinner';
|
|
6
|
-
import isUndefined from 'lodash/isUndefined';
|
|
7
|
-
import isNil from 'lodash/isNil';
|
|
8
|
-
import { shallowEqual, useClassNames, mergeRefs, useCustom, useEventCallback } from '../utils';
|
|
9
|
-
import { ListItem, useCombobox } from '../internals/Picker';
|
|
10
|
-
import AngleLeftIcon from '@rsuite/icons/legacy/AngleLeft';
|
|
11
|
-
import AngleRightIcon from '@rsuite/icons/legacy/AngleRight';
|
|
12
|
-
import getPosition from 'dom-lib/getPosition';
|
|
13
|
-
import scrollTop from 'dom-lib/scrollTop';
|
|
14
|
-
var emptyArray = [];
|
|
15
|
-
var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
16
|
-
var _props$as = props.as,
|
|
17
|
-
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
18
|
-
activeItemValue = props.activeItemValue,
|
|
19
|
-
classPrefix = props.classPrefix,
|
|
20
|
-
className = props.className,
|
|
21
|
-
_props$childrenKey = props.childrenKey,
|
|
22
|
-
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
23
|
-
_props$disabledItemVa = props.disabledItemValues,
|
|
24
|
-
disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
|
|
25
|
-
_props$menuWidth = props.menuWidth,
|
|
26
|
-
menuWidth = _props$menuWidth === void 0 ? 120 : _props$menuWidth,
|
|
27
|
-
_props$menuHeight = props.menuHeight,
|
|
28
|
-
menuHeight = _props$menuHeight === void 0 ? 200 : _props$menuHeight,
|
|
29
|
-
_props$valueKey = props.valueKey,
|
|
30
|
-
valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
|
|
31
|
-
_props$cascadeData = props.cascadeData,
|
|
32
|
-
cascadeData = _props$cascadeData === void 0 ? emptyArray : _props$cascadeData,
|
|
33
|
-
_props$cascadePaths = props.cascadePaths,
|
|
34
|
-
cascadePaths = _props$cascadePaths === void 0 ? emptyArray : _props$cascadePaths,
|
|
35
|
-
loadingItemsSet = props.loadingItemsSet,
|
|
36
|
-
_props$labelKey = props.labelKey,
|
|
37
|
-
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
38
|
-
style = props.style,
|
|
39
|
-
renderMenu = props.renderMenu,
|
|
40
|
-
renderMenuItem = props.renderMenuItem,
|
|
41
|
-
onSelect = props.onSelect,
|
|
42
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "menuWidth", "menuHeight", "valueKey", "cascadeData", "cascadePaths", "loadingItemsSet", "labelKey", "style", "renderMenu", "renderMenuItem", "onSelect"]);
|
|
43
|
-
var _useClassNames = useClassNames(classPrefix),
|
|
44
|
-
merge = _useClassNames.merge,
|
|
45
|
-
prefix = _useClassNames.prefix;
|
|
46
|
-
var classes = merge(className, prefix('items'));
|
|
47
|
-
var rootRef = useRef();
|
|
48
|
-
var _useCustom = useCustom(),
|
|
49
|
-
rtl = _useCustom.rtl;
|
|
50
|
-
var _useCombobox = useCombobox(),
|
|
51
|
-
id = _useCombobox.id,
|
|
52
|
-
labelId = _useCombobox.labelId,
|
|
53
|
-
popupType = _useCombobox.popupType;
|
|
54
|
-
useEffect(function () {
|
|
55
|
-
var _rootRef$current;
|
|
56
|
-
var columns = ((_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.querySelectorAll('[data-type="column"]')) || [];
|
|
57
|
-
columns.forEach(function (column) {
|
|
58
|
-
if (!column) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
var activeItem = column.querySelector("." + prefix('item-focus'));
|
|
62
|
-
if (!activeItem) {
|
|
63
|
-
activeItem = column.querySelector("." + prefix('item-active'));
|
|
64
|
-
}
|
|
65
|
-
if (activeItem) {
|
|
66
|
-
var position = getPosition(activeItem, column);
|
|
67
|
-
// Let the active option scroll into view.
|
|
68
|
-
if (position !== null && position !== void 0 && position.top) {
|
|
69
|
-
scrollTop(column, position === null || position === void 0 ? void 0 : position.top);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
}, [prefix]);
|
|
74
|
-
var getCascadePaths = function getCascadePaths(layer, node) {
|
|
75
|
-
var paths = [];
|
|
76
|
-
for (var i = 0; i < cascadeData.length && i < layer; i += 1) {
|
|
77
|
-
if (i < layer - 1 && cascadePaths) {
|
|
78
|
-
paths.push(cascadePaths[i]);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
paths.push(node);
|
|
82
|
-
return paths;
|
|
83
|
-
};
|
|
84
|
-
var handleSelect = useEventCallback(function (layer, node, event) {
|
|
85
|
-
var isLeafNode = isNil(node[childrenKey]);
|
|
86
|
-
var cascadePaths = getCascadePaths(layer + 1, node);
|
|
87
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, isLeafNode, event);
|
|
88
|
-
});
|
|
89
|
-
var renderCascadeNode = function renderCascadeNode(nodeProps) {
|
|
90
|
-
var _loadingItemsSet$has;
|
|
91
|
-
var node = nodeProps.node,
|
|
92
|
-
index = nodeProps.index,
|
|
93
|
-
layer = nodeProps.layer,
|
|
94
|
-
focus = nodeProps.focus,
|
|
95
|
-
size = nodeProps.size;
|
|
96
|
-
var children = node[childrenKey];
|
|
97
|
-
var value = node[valueKey];
|
|
98
|
-
var label = node[labelKey];
|
|
99
|
-
var disabled = disabledItemValues.some(function (disabledValue) {
|
|
100
|
-
return shallowEqual(disabledValue, value);
|
|
101
|
-
});
|
|
102
|
-
var loading = (_loadingItemsSet$has = loadingItemsSet === null || loadingItemsSet === void 0 ? void 0 : loadingItemsSet.has(node)) !== null && _loadingItemsSet$has !== void 0 ? _loadingItemsSet$has : false;
|
|
103
|
-
|
|
104
|
-
// Use `value` in keys when If `value` is string or number
|
|
105
|
-
var onlyKey = typeof value === 'number' || typeof value === 'string' ? value : index;
|
|
106
|
-
var Icon = loading ? SpinnerIcon : rtl ? AngleLeftIcon : AngleRightIcon;
|
|
107
|
-
return /*#__PURE__*/React.createElement(ListItem, {
|
|
108
|
-
as: 'li',
|
|
109
|
-
role: "treeitem",
|
|
110
|
-
"aria-level": layer + 1,
|
|
111
|
-
"aria-setsize": size,
|
|
112
|
-
"aria-posinset": index + 1,
|
|
113
|
-
"aria-label": typeof label === 'string' ? label : undefined,
|
|
114
|
-
classPrefix: "picker-cascader-menu-item",
|
|
115
|
-
key: layer + "-" + onlyKey,
|
|
116
|
-
disabled: disabled,
|
|
117
|
-
active: !isUndefined(activeItemValue) && shallowEqual(activeItemValue, value),
|
|
118
|
-
focus: focus,
|
|
119
|
-
value: value,
|
|
120
|
-
className: children ? prefix('has-children') : undefined,
|
|
121
|
-
onSelect: function onSelect(_value, event) {
|
|
122
|
-
return handleSelect(layer, node, event);
|
|
123
|
-
}
|
|
124
|
-
}, renderMenuItem ? renderMenuItem(label, node) : label, children ? /*#__PURE__*/React.createElement(Icon, {
|
|
125
|
-
className: prefix('caret'),
|
|
126
|
-
spin: loading
|
|
127
|
-
}) : null);
|
|
128
|
-
};
|
|
129
|
-
var cascadeNodes = cascadeData.map(function (children, layer) {
|
|
130
|
-
var onlyKey = layer + "_" + children.length;
|
|
131
|
-
var parentNode = cascadePaths[layer - 1];
|
|
132
|
-
var menu = /*#__PURE__*/React.createElement(React.Fragment, null, children.map(function (item, index) {
|
|
133
|
-
var focus = cascadePaths[layer] && shallowEqual(cascadePaths[layer][valueKey], item[valueKey]);
|
|
134
|
-
return renderCascadeNode({
|
|
135
|
-
node: item,
|
|
136
|
-
index: index,
|
|
137
|
-
layer: layer,
|
|
138
|
-
focus: focus,
|
|
139
|
-
size: children.length
|
|
140
|
-
});
|
|
141
|
-
}));
|
|
142
|
-
return /*#__PURE__*/React.createElement("ul", {
|
|
143
|
-
role: "group",
|
|
144
|
-
"data-layer": layer,
|
|
145
|
-
"data-type": 'column',
|
|
146
|
-
key: onlyKey,
|
|
147
|
-
className: prefix('column'),
|
|
148
|
-
style: {
|
|
149
|
-
height: menuHeight,
|
|
150
|
-
width: menuWidth
|
|
151
|
-
}
|
|
152
|
-
}, renderMenu ? renderMenu(children, menu, parentNode, layer) : menu);
|
|
153
|
-
});
|
|
154
|
-
var styles = _extends({}, style, {
|
|
155
|
-
width: cascadeData.length * menuWidth
|
|
156
|
-
});
|
|
157
|
-
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
158
|
-
role: "tree",
|
|
159
|
-
id: id + "-" + popupType,
|
|
160
|
-
"aria-labelledby": labelId
|
|
161
|
-
}, rest, {
|
|
162
|
-
ref: mergeRefs(rootRef, ref),
|
|
163
|
-
className: classes,
|
|
164
|
-
style: styles
|
|
165
|
-
}), cascadeNodes);
|
|
166
|
-
});
|
|
167
|
-
TreeView.displayName = 'TreeView';
|
|
168
|
-
export default TreeView;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import { ValueType } from './Cascader';
|
|
4
|
-
declare type SetLike<T = unknown> = {
|
|
5
|
-
has(value: T): boolean;
|
|
6
|
-
};
|
|
7
|
-
export interface TreeViewProps extends Omit<WithAsProps, 'classPrefix'> {
|
|
8
|
-
classPrefix: string;
|
|
9
|
-
disabledItemValues: ValueType[];
|
|
10
|
-
activeItemValue?: ValueType | null;
|
|
11
|
-
childrenKey: string;
|
|
12
|
-
cascadeData: (readonly ItemDataType[])[];
|
|
13
|
-
loadingItemsSet?: SetLike<ItemDataType>;
|
|
14
|
-
cascadePaths: ItemDataType[];
|
|
15
|
-
valueKey: string;
|
|
16
|
-
labelKey: string;
|
|
17
|
-
menuWidth?: number;
|
|
18
|
-
menuHeight?: number | string;
|
|
19
|
-
renderMenuItem?: (itemLabel: React.ReactNode, item: ItemDataType) => React.ReactNode;
|
|
20
|
-
renderMenu?: (items: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
|
|
21
|
-
onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], isLeafNode: boolean, event: React.MouseEvent) => void;
|
|
22
|
-
}
|
|
23
|
-
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
24
|
-
export default TreeView;
|
package/esm/Cascader/utils.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { useMemo } from 'react';
|
|
3
|
-
import { getPathTowardsItem } from '../utils/treeUtils';
|
|
4
|
-
/**
|
|
5
|
-
* Calculate columns to be displayed:
|
|
6
|
-
*
|
|
7
|
-
* - Every ancestor level of activeItem should be displayed
|
|
8
|
-
* - The level that activeItem is at should be displayed
|
|
9
|
-
* - If activeItem is a parent node, its child level should be displayed
|
|
10
|
-
*
|
|
11
|
-
* @param items
|
|
12
|
-
* @param value
|
|
13
|
-
* @param options
|
|
14
|
-
* @returns
|
|
15
|
-
*/
|
|
16
|
-
export function getColumnsAndPaths(items, pathTarget, options) {
|
|
17
|
-
var getParent = options.getParent,
|
|
18
|
-
getChildren = options.getChildren;
|
|
19
|
-
if (!pathTarget) {
|
|
20
|
-
return {
|
|
21
|
-
columns: [items],
|
|
22
|
-
path: []
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
var columns = [];
|
|
26
|
-
var path = [pathTarget];
|
|
27
|
-
var children = getChildren(pathTarget);
|
|
28
|
-
if (children && children.length > 0) {
|
|
29
|
-
columns.unshift(children);
|
|
30
|
-
}
|
|
31
|
-
for (var parent = getParent(pathTarget); !!parent; parent = getParent(parent)) {
|
|
32
|
-
var _getChildren;
|
|
33
|
-
columns.unshift((_getChildren = getChildren(parent)) !== null && _getChildren !== void 0 ? _getChildren : []);
|
|
34
|
-
path.unshift(parent);
|
|
35
|
-
}
|
|
36
|
-
columns.unshift(items);
|
|
37
|
-
return {
|
|
38
|
-
columns: columns,
|
|
39
|
-
path: path
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Caculate following 3 things
|
|
44
|
-
*
|
|
45
|
-
* - The columns of items to be displayed
|
|
46
|
-
* - The path towards the current focused item
|
|
47
|
-
* - The path towards the current selected item (referred to by Cascader's value)
|
|
48
|
-
*
|
|
49
|
-
* @param params
|
|
50
|
-
* @returns
|
|
51
|
-
*/
|
|
52
|
-
export function usePaths(_ref) {
|
|
53
|
-
var data = _ref.data,
|
|
54
|
-
activeItem = _ref.activeItem,
|
|
55
|
-
selectedItem = _ref.selectedItem,
|
|
56
|
-
getParent = _ref.getParent,
|
|
57
|
-
getChildren = _ref.getChildren;
|
|
58
|
-
var pathTowardsSelectedItem = useMemo(function () {
|
|
59
|
-
return getPathTowardsItem(selectedItem, getParent);
|
|
60
|
-
}, [getParent, selectedItem]);
|
|
61
|
-
var _useMemo = useMemo(function () {
|
|
62
|
-
return getColumnsAndPaths(data, activeItem, {
|
|
63
|
-
getParent: getParent,
|
|
64
|
-
getChildren: getChildren
|
|
65
|
-
});
|
|
66
|
-
}, [data, activeItem, getParent, getChildren]),
|
|
67
|
-
columnsToDisplay = _useMemo.columns,
|
|
68
|
-
pathTowardsActiveItem = _useMemo.path;
|
|
69
|
-
return {
|
|
70
|
-
columnsToDisplay: columnsToDisplay,
|
|
71
|
-
pathTowardsSelectedItem: pathTowardsSelectedItem,
|
|
72
|
-
pathTowardsActiveItem: pathTowardsActiveItem
|
|
73
|
-
};
|
|
74
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import { ValueType } from './MultiCascader';
|
|
4
|
-
export interface TreeViewProps extends WithAsProps {
|
|
5
|
-
disabledItemValues: ValueType;
|
|
6
|
-
value: ValueType;
|
|
7
|
-
childrenKey: string;
|
|
8
|
-
valueKey: string;
|
|
9
|
-
labelKey: string;
|
|
10
|
-
menuWidth?: number;
|
|
11
|
-
menuHeight?: number | string;
|
|
12
|
-
cascade?: boolean;
|
|
13
|
-
cascadeData: (readonly ItemDataType[])[];
|
|
14
|
-
cascadePaths?: ItemDataType[];
|
|
15
|
-
uncheckableItemValues: ValueType;
|
|
16
|
-
renderMenuItem?: (itemLabel: React.MouseEventHandler, item: ItemDataType) => React.ReactNode;
|
|
17
|
-
renderMenu?: (children: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
|
|
18
|
-
onCheck?: (node: ItemDataType, event: React.SyntheticEvent, checked: boolean) => void;
|
|
19
|
-
onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], event: React.SyntheticEvent) => void;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* TODO: reuse Menu from Cascader for consistent behavior
|
|
23
|
-
*/
|
|
24
|
-
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
25
|
-
export default TreeView;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { MultiCascaderProps, ValueType } from './MultiCascader';
|
|
3
|
-
import { ItemDataType } from '../@types/common';
|
|
4
|
-
export interface ItemType extends ItemDataType {
|
|
5
|
-
parent?: ItemType;
|
|
6
|
-
}
|
|
7
|
-
interface ItemKeys {
|
|
8
|
-
valueKey: string;
|
|
9
|
-
labelKey: string;
|
|
10
|
-
childrenKey: string;
|
|
11
|
-
}
|
|
12
|
-
declare type MayHasParent<T extends Record<string, unknown>> = T & {
|
|
13
|
-
parent?: MayHasParent<T>;
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Get all parents of a node
|
|
17
|
-
* @param node
|
|
18
|
-
*/
|
|
19
|
-
export declare const getParents: <T extends Record<string, unknown>>(node: MayHasParent<T>) => MayHasParent<T>[];
|
|
20
|
-
/**
|
|
21
|
-
* Check if any child nodes are selected.
|
|
22
|
-
* @param node
|
|
23
|
-
* @param value
|
|
24
|
-
* @param itemKeys
|
|
25
|
-
*/
|
|
26
|
-
export declare const isSomeChildChecked: <T extends Record<string, unknown>>(node: T, value: ValueType, itemKeys: Omit<ItemKeys, 'labelKey'>) => any;
|
|
27
|
-
/**
|
|
28
|
-
* Check if the parent is selected.
|
|
29
|
-
* @param node
|
|
30
|
-
* @param value
|
|
31
|
-
* @param itemKeys
|
|
32
|
-
*/
|
|
33
|
-
export declare const isSomeParentChecked: <T extends Record<string, unknown>>(node: MayHasParent<T>, value: ValueType, itemKeys: Pick<ItemKeys, 'valueKey'>) => any;
|
|
34
|
-
export declare const getOtherItemValuesByUnselectChild: <T>(itemNode: ItemType, value: any, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[];
|
|
35
|
-
/**
|
|
36
|
-
* Remove the values of all children.
|
|
37
|
-
*/
|
|
38
|
-
export declare const removeAllChildrenValue: <T>(value: T[], item: ItemType, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[] | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* A hook to flatten tree structure data
|
|
41
|
-
* @param data
|
|
42
|
-
*/
|
|
43
|
-
export declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
|
|
44
|
-
addFlattenData: (children: T[], parent: T) => void;
|
|
45
|
-
flattenData: T[];
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* A hook for column data
|
|
49
|
-
* @param flattenData
|
|
50
|
-
*/
|
|
51
|
-
export declare function useColumnData<T extends MayHasParent<Record<string, unknown>>>(flattenData: T[]): {
|
|
52
|
-
columnData: (readonly T[])[];
|
|
53
|
-
addColumn: (column: T[], index: number) => void;
|
|
54
|
-
removeColumnByIndex: (index: number) => void;
|
|
55
|
-
setColumnData: import("react").Dispatch<import("react").SetStateAction<(readonly T[])[]>>;
|
|
56
|
-
enforceUpdateColumnData: (nextData: T[]) => void;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* A hook that converts the value into a cascading value
|
|
60
|
-
* @param props
|
|
61
|
-
* @param flattenData
|
|
62
|
-
*/
|
|
63
|
-
export declare function useCascadeValue<T>(props: Partial<MultiCascaderProps<T[]>> & ItemKeys, flattenData: ItemType[]): {
|
|
64
|
-
value: T[];
|
|
65
|
-
setValue: import("react").Dispatch<import("react").SetStateAction<T[]>>;
|
|
66
|
-
splitValue: (item: ItemType, checked: boolean, value: T[]) => {
|
|
67
|
-
value: T[];
|
|
68
|
-
removedValue: T[];
|
|
69
|
-
};
|
|
70
|
-
};
|
|
71
|
-
export {};
|