rsuite 5.56.0 → 5.58.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/Accordion/styles/index.css +30 -0
- package/AutoComplete/styles/index.css +0 -137
- package/CHANGELOG.md +32 -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 -329
- package/Cascader/styles/index.less +1 -122
- package/CheckPicker/styles/index.css +0 -137
- package/CheckTree/styles/index.css +0 -137
- package/CheckTreePicker/styles/index.css +0 -137
- package/DatePicker/styles/index.css +0 -137
- package/DateRangePicker/styles/index.css +0 -137
- package/Dropdown/styles/index.css +35 -8
- package/Dropdown/styles/index.less +24 -13
- package/Heading/package.json +7 -0
- package/Heading/styles/index.css +42 -0
- package/Heading/styles/index.less +41 -0
- package/HeadingGroup/package.json +7 -0
- package/HeadingGroup/styles/index.css +5 -0
- package/HeadingGroup/styles/index.less +3 -0
- package/InputPicker/styles/index.css +29 -146
- package/InputPicker/styles/index.less +28 -12
- package/InputPicker/styles/mixin.less +7 -0
- package/MultiCascadeTree/package.json +7 -0
- package/MultiCascadeTree/styles/index.css +3564 -0
- package/MultiCascadeTree/styles/index.less +37 -0
- package/MultiCascader/styles/index.css +72 -206
- package/MultiCascader/styles/index.less +11 -31
- package/Nav/styles/index.css +35 -8
- package/Navbar/styles/index.css +35 -8
- package/Pagination/styles/index.css +0 -137
- package/Panel/styles/index.css +30 -0
- package/Panel/styles/index.less +1 -0
- package/Popover/styles/index.css +30 -0
- package/Popover/styles/index.less +3 -2
- package/SelectPicker/styles/index.css +0 -137
- package/Tabs/styles/index.css +35 -8
- package/TagInput/styles/index.css +132 -150
- package/TagPicker/styles/index.css +132 -150
- package/TagPicker/styles/index.less +57 -5
- package/TagPicker/styles/mixin.less +21 -0
- package/Text/package.json +7 -0
- package/Text/styles/index.css +192 -0
- package/Text/styles/index.less +117 -0
- 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 +178 -249
- package/cjs/Cascader/useActive.d.ts +15 -0
- package/cjs/Cascader/useActive.js +43 -0
- package/cjs/CheckPicker/CheckPicker.js +2 -9
- package/cjs/CheckTreePicker/CheckTreePicker.js +2 -10
- package/cjs/DatePicker/DatePicker.js +5 -5
- package/cjs/DateRangePicker/DateRangePicker.js +3 -5
- package/cjs/Dropdown/DropdownItem.d.ts +10 -2
- package/cjs/Dropdown/DropdownItem.js +12 -3
- package/cjs/Heading/Heading.d.ts +16 -0
- package/cjs/Heading/Heading.js +44 -0
- package/cjs/Heading/index.d.ts +3 -0
- package/cjs/Heading/index.js +10 -0
- package/cjs/HeadingGroup/HeadingGroup.d.ts +8 -0
- package/cjs/HeadingGroup/HeadingGroup.js +17 -0
- package/cjs/HeadingGroup/index.d.ts +3 -0
- package/cjs/HeadingGroup/index.js +9 -0
- package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
- package/cjs/InputPicker/InputPicker.js +7 -8
- 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 +173 -289
- package/cjs/Panel/Panel.js +3 -1
- package/cjs/Popover/Popover.js +3 -1
- package/cjs/SelectPicker/SelectPicker.js +3 -9
- package/cjs/Text/Text.d.ts +47 -0
- package/cjs/Text/Text.js +72 -0
- package/cjs/Text/index.d.ts +3 -0
- package/cjs/Text/index.js +10 -0
- package/cjs/Tree/Tree.d.ts +4 -4
- package/cjs/TreePicker/TreePicker.js +3 -10
- package/cjs/index.d.ts +27 -16
- package/cjs/index.js +30 -19
- package/cjs/internals/Overlay/OverlayTrigger.js +24 -17
- package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
- package/cjs/internals/Picker/PickerToggleTrigger.d.ts +1 -1
- package/cjs/internals/Picker/PickerToggleTrigger.js +1 -1
- package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -2
- package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.js +0 -4
- 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 +393 -219
- 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 +393 -219
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +393 -219
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +393 -219
- package/dist/rsuite.js +321 -57
- 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 +165 -235
- package/esm/Cascader/useActive.d.ts +15 -0
- package/esm/Cascader/useActive.js +37 -0
- package/esm/CheckPicker/CheckPicker.js +2 -9
- package/esm/CheckTreePicker/CheckTreePicker.js +2 -10
- package/esm/DatePicker/DatePicker.js +6 -6
- package/esm/DateRangePicker/DateRangePicker.js +3 -5
- package/esm/Dropdown/DropdownItem.d.ts +10 -2
- package/esm/Dropdown/DropdownItem.js +12 -3
- package/esm/Heading/Heading.d.ts +16 -0
- package/esm/Heading/Heading.js +38 -0
- package/esm/Heading/index.d.ts +3 -0
- package/esm/Heading/index.js +4 -0
- package/esm/HeadingGroup/HeadingGroup.d.ts +8 -0
- package/esm/HeadingGroup/HeadingGroup.js +11 -0
- package/esm/HeadingGroup/index.d.ts +3 -0
- package/esm/HeadingGroup/index.js +3 -0
- package/esm/InlineEdit/InlineEdit.d.ts +1 -1
- package/esm/InputPicker/InputPicker.js +7 -8
- 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 +166 -281
- package/esm/Panel/Panel.js +3 -1
- package/esm/Popover/Popover.js +3 -1
- package/esm/SelectPicker/SelectPicker.js +3 -9
- package/esm/Text/Text.d.ts +47 -0
- package/esm/Text/Text.js +66 -0
- package/esm/Text/index.d.ts +3 -0
- package/esm/Text/index.js +4 -0
- package/esm/Tree/Tree.d.ts +4 -4
- package/esm/TreePicker/TreePicker.js +3 -10
- package/esm/index.d.ts +27 -16
- package/esm/index.js +38 -15
- package/esm/internals/Overlay/OverlayTrigger.js +24 -17
- package/esm/internals/Picker/PickerToggle.d.ts +4 -5
- package/esm/internals/Picker/PickerToggleTrigger.d.ts +1 -1
- package/esm/internals/Picker/PickerToggleTrigger.js +1 -1
- package/esm/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -2
- package/esm/internals/Picker/hooks/useToggleKeyDownEvent.js +0 -4
- 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/internals/Picker/styles/index.less +0 -5
- package/internals/Picker/styles/mixin.less +0 -73
- package/package.json +1 -1
- package/styles/color-modes/light.less +7 -0
- package/styles/index.less +5 -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
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _utils = require("../utils");
|
|
11
|
+
var _treeUtils = require("../utils/treeUtils");
|
|
12
|
+
var _utils2 = require("./utils");
|
|
13
|
+
var _SearchBox = _interopRequireDefault(require("../internals/SearchBox"));
|
|
14
|
+
function SearchView(props) {
|
|
15
|
+
var _props$as = props.as,
|
|
16
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
17
|
+
_props$classPrefix = props.classPrefix,
|
|
18
|
+
classPrefix = _props$classPrefix === void 0 ? 'cascade-search-view' : _props$classPrefix,
|
|
19
|
+
className = props.className,
|
|
20
|
+
searchKeyword = props.searchKeyword,
|
|
21
|
+
labelKey = props.labelKey,
|
|
22
|
+
valueKey = props.valueKey,
|
|
23
|
+
parentMap = props.parentMap,
|
|
24
|
+
data = props.data,
|
|
25
|
+
focusItemValue = props.focusItemValue,
|
|
26
|
+
disabledItemValues = props.disabledItemValues,
|
|
27
|
+
inputRef = props.inputRef,
|
|
28
|
+
renderSearchItem = props.renderSearchItem,
|
|
29
|
+
onSearch = props.onSearch,
|
|
30
|
+
onSelect = props.onSelect,
|
|
31
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "searchKeyword", "labelKey", "valueKey", "parentMap", "data", "focusItemValue", "disabledItemValues", "inputRef", "renderSearchItem", "onSearch", "onSelect"]);
|
|
32
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
33
|
+
merge = _useClassNames.merge,
|
|
34
|
+
prefix = _useClassNames.prefix,
|
|
35
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
36
|
+
rootPrefix = _useClassNames.rootPrefix;
|
|
37
|
+
var classes = merge(className, withClassPrefix());
|
|
38
|
+
var _useCustom = (0, _utils.useCustom)('Picker'),
|
|
39
|
+
locale = _useCustom.locale;
|
|
40
|
+
var renderSearchRow = function renderSearchRow(item, key) {
|
|
41
|
+
var items = (0, _treeUtils.getPathTowardsItem)(item, function (item) {
|
|
42
|
+
return parentMap.get(item);
|
|
43
|
+
});
|
|
44
|
+
var formattedNodes = items.map(function (itemData) {
|
|
45
|
+
var _extends2;
|
|
46
|
+
var label = (0, _utils2.highlightLabel)({
|
|
47
|
+
item: itemData,
|
|
48
|
+
labelKey: labelKey,
|
|
49
|
+
searchKeyword: searchKeyword,
|
|
50
|
+
render: function render(patch, index) {
|
|
51
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
52
|
+
key: index,
|
|
53
|
+
className: prefix('match')
|
|
54
|
+
}, patch);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return (0, _extends3.default)({}, itemData, (_extends2 = {}, _extends2[labelKey] = label, _extends2));
|
|
58
|
+
});
|
|
59
|
+
var disabled = disabledItemValues.some(function (value) {
|
|
60
|
+
return formattedNodes.some(function (itemData) {
|
|
61
|
+
return itemData[valueKey] === value;
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
var itemClasses = prefix('row', {
|
|
65
|
+
'row-disabled': disabled,
|
|
66
|
+
'row-focus': item[valueKey] === focusItemValue
|
|
67
|
+
});
|
|
68
|
+
var label = formattedNodes.map(function (itemData, index) {
|
|
69
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
|
70
|
+
key: "col-" + index,
|
|
71
|
+
className: prefix('col')
|
|
72
|
+
}, itemData[labelKey]);
|
|
73
|
+
});
|
|
74
|
+
var handleCheck = function handleCheck(event) {
|
|
75
|
+
if (!disabled) {
|
|
76
|
+
onSelect(item, items, event);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
80
|
+
role: "treeitem",
|
|
81
|
+
"aria-disabled": disabled,
|
|
82
|
+
"aria-label": item[labelKey],
|
|
83
|
+
key: key,
|
|
84
|
+
"data-key": item[valueKey],
|
|
85
|
+
className: itemClasses,
|
|
86
|
+
tabIndex: -1,
|
|
87
|
+
onClick: handleCheck
|
|
88
|
+
}, renderSearchItem ? renderSearchItem(label, items) : label);
|
|
89
|
+
};
|
|
90
|
+
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends3.default)({
|
|
91
|
+
className: classes
|
|
92
|
+
}, rest), /*#__PURE__*/_react.default.createElement(_SearchBox.default, {
|
|
93
|
+
placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
|
|
94
|
+
onChange: onSearch,
|
|
95
|
+
value: searchKeyword,
|
|
96
|
+
inputRef: inputRef
|
|
97
|
+
}), searchKeyword !== '' && /*#__PURE__*/_react.default.createElement("div", {
|
|
98
|
+
className: prefix('panel'),
|
|
99
|
+
"data-layer": 0,
|
|
100
|
+
role: "tree"
|
|
101
|
+
}, data.length ? data.map(renderSearchRow) : /*#__PURE__*/_react.default.createElement("div", {
|
|
102
|
+
className: merge(prefix('none'), rootPrefix('picker-none'))
|
|
103
|
+
}, locale.noResultsText)));
|
|
104
|
+
}
|
|
105
|
+
var _default = SearchView;
|
|
106
|
+
exports.default = _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ItemDataType, WithAsProps, RsRefForwardingComponent, DataProps, ToArray } from '../@types/common';
|
|
3
|
+
import { SelectNode, CascadeColumn } from './types';
|
|
4
|
+
declare type SetLike<T = unknown> = {
|
|
5
|
+
has(value: T): boolean;
|
|
6
|
+
};
|
|
7
|
+
export interface TreeViewProps<T = any> extends WithAsProps, Omit<DataProps<ItemDataType<T>>, 'data'> {
|
|
8
|
+
data?: (readonly ItemDataType<T>[])[];
|
|
9
|
+
disabledItemValues?: ToArray<NonNullable<T>>;
|
|
10
|
+
activeItemValue?: T | null;
|
|
11
|
+
loadingItemsSet?: SetLike<ItemDataType<T>>;
|
|
12
|
+
cascadePaths?: ItemDataType<T>[];
|
|
13
|
+
columnWidth?: number;
|
|
14
|
+
columnHeight?: number | string;
|
|
15
|
+
renderTreeNode?: (node: React.ReactNode, itemData: ItemDataType<T>) => React.ReactNode;
|
|
16
|
+
renderColumn?: (childNodes: React.ReactNode, column: CascadeColumn<T>) => React.ReactNode;
|
|
17
|
+
onSelect?: (node: SelectNode<T>, event: React.MouseEvent) => void;
|
|
18
|
+
}
|
|
19
|
+
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
20
|
+
export default TreeView;
|
|
@@ -22,30 +22,31 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
22
22
|
var _props$as = props.as,
|
|
23
23
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
24
24
|
activeItemValue = props.activeItemValue,
|
|
25
|
-
classPrefix = props.classPrefix,
|
|
25
|
+
_props$classPrefix = props.classPrefix,
|
|
26
|
+
classPrefix = _props$classPrefix === void 0 ? 'tree' : _props$classPrefix,
|
|
26
27
|
className = props.className,
|
|
27
28
|
_props$childrenKey = props.childrenKey,
|
|
28
29
|
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
29
30
|
_props$disabledItemVa = props.disabledItemValues,
|
|
30
31
|
disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
|
|
31
|
-
_props$
|
|
32
|
-
|
|
33
|
-
_props$
|
|
34
|
-
|
|
32
|
+
_props$columnWidth = props.columnWidth,
|
|
33
|
+
columnWidth = _props$columnWidth === void 0 ? 140 : _props$columnWidth,
|
|
34
|
+
_props$columnHeight = props.columnHeight,
|
|
35
|
+
columnHeight = _props$columnHeight === void 0 ? 200 : _props$columnHeight,
|
|
35
36
|
_props$valueKey = props.valueKey,
|
|
36
37
|
valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
|
|
37
|
-
_props$
|
|
38
|
-
|
|
38
|
+
_props$data = props.data,
|
|
39
|
+
data = _props$data === void 0 ? emptyArray : _props$data,
|
|
39
40
|
_props$cascadePaths = props.cascadePaths,
|
|
40
41
|
cascadePaths = _props$cascadePaths === void 0 ? emptyArray : _props$cascadePaths,
|
|
41
42
|
loadingItemsSet = props.loadingItemsSet,
|
|
42
43
|
_props$labelKey = props.labelKey,
|
|
43
44
|
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
44
45
|
style = props.style,
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
renderColumn = props.renderColumn,
|
|
47
|
+
renderTreeNode = props.renderTreeNode,
|
|
47
48
|
onSelect = props.onSelect,
|
|
48
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "
|
|
49
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "columnWidth", "columnHeight", "valueKey", "data", "cascadePaths", "loadingItemsSet", "labelKey", "style", "renderColumn", "renderTreeNode", "onSelect"]);
|
|
49
50
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
50
51
|
merge = _useClassNames.merge,
|
|
51
52
|
prefix = _useClassNames.prefix;
|
|
@@ -79,7 +80,7 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
79
80
|
}, [prefix]);
|
|
80
81
|
var getCascadePaths = function getCascadePaths(layer, node) {
|
|
81
82
|
var paths = [];
|
|
82
|
-
for (var i = 0; i <
|
|
83
|
+
for (var i = 0; i < data.length && i < layer; i += 1) {
|
|
83
84
|
if (i < layer - 1 && cascadePaths) {
|
|
84
85
|
paths.push(cascadePaths[i]);
|
|
85
86
|
}
|
|
@@ -87,25 +88,29 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
87
88
|
paths.push(node);
|
|
88
89
|
return paths;
|
|
89
90
|
};
|
|
90
|
-
var handleSelect = (0, _utils.useEventCallback)(function (layer,
|
|
91
|
-
var isLeafNode = (0, _isNil.default)(
|
|
92
|
-
var cascadePaths = getCascadePaths(layer + 1,
|
|
93
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(
|
|
91
|
+
var handleSelect = (0, _utils.useEventCallback)(function (layer, itemData, event) {
|
|
92
|
+
var isLeafNode = (0, _isNil.default)(itemData[childrenKey]);
|
|
93
|
+
var cascadePaths = getCascadePaths(layer + 1, itemData);
|
|
94
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect({
|
|
95
|
+
itemData: itemData,
|
|
96
|
+
cascadePaths: cascadePaths,
|
|
97
|
+
isLeafNode: isLeafNode
|
|
98
|
+
}, event);
|
|
94
99
|
});
|
|
95
100
|
var renderCascadeNode = function renderCascadeNode(nodeProps) {
|
|
96
101
|
var _loadingItemsSet$has;
|
|
97
|
-
var
|
|
102
|
+
var itemData = nodeProps.itemData,
|
|
98
103
|
index = nodeProps.index,
|
|
99
104
|
layer = nodeProps.layer,
|
|
100
105
|
focus = nodeProps.focus,
|
|
101
106
|
size = nodeProps.size;
|
|
102
|
-
var children =
|
|
103
|
-
var value =
|
|
104
|
-
var label =
|
|
107
|
+
var children = itemData[childrenKey];
|
|
108
|
+
var value = itemData[valueKey];
|
|
109
|
+
var label = itemData[labelKey];
|
|
105
110
|
var disabled = disabledItemValues.some(function (disabledValue) {
|
|
106
111
|
return (0, _utils.shallowEqual)(disabledValue, value);
|
|
107
112
|
});
|
|
108
|
-
var loading = (_loadingItemsSet$has = loadingItemsSet === null || loadingItemsSet === void 0 ? void 0 : loadingItemsSet.has(
|
|
113
|
+
var loading = (_loadingItemsSet$has = loadingItemsSet === null || loadingItemsSet === void 0 ? void 0 : loadingItemsSet.has(itemData)) !== null && _loadingItemsSet$has !== void 0 ? _loadingItemsSet$has : false;
|
|
109
114
|
|
|
110
115
|
// Use `value` in keys when If `value` is string or number
|
|
111
116
|
var onlyKey = typeof value === 'number' || typeof value === 'string' ? value : index;
|
|
@@ -117,7 +122,7 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
117
122
|
"aria-setsize": size,
|
|
118
123
|
"aria-posinset": index + 1,
|
|
119
124
|
"aria-label": typeof label === 'string' ? label : undefined,
|
|
120
|
-
classPrefix: "
|
|
125
|
+
classPrefix: "cascade-tree-item",
|
|
121
126
|
key: layer + "-" + onlyKey,
|
|
122
127
|
disabled: disabled,
|
|
123
128
|
active: !(0, _isUndefined.default)(activeItemValue) && (0, _utils.shallowEqual)(activeItemValue, value),
|
|
@@ -125,21 +130,21 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
125
130
|
value: value,
|
|
126
131
|
className: children ? prefix('has-children') : undefined,
|
|
127
132
|
onSelect: function onSelect(_value, event) {
|
|
128
|
-
return handleSelect(layer,
|
|
133
|
+
return handleSelect(layer, itemData, event);
|
|
129
134
|
}
|
|
130
|
-
},
|
|
135
|
+
}, renderTreeNode ? renderTreeNode(label, itemData) : label, children ? /*#__PURE__*/_react.default.createElement(Icon, {
|
|
131
136
|
className: prefix('caret'),
|
|
132
137
|
spin: loading,
|
|
133
138
|
"data-testid": "spinner"
|
|
134
139
|
}) : null);
|
|
135
140
|
};
|
|
136
|
-
var cascadeNodes =
|
|
141
|
+
var cascadeNodes = data.map(function (children, layer) {
|
|
137
142
|
var onlyKey = layer + "_" + children.length;
|
|
138
|
-
var
|
|
139
|
-
var
|
|
140
|
-
var focus = cascadePaths[layer] && (0, _utils.shallowEqual)(cascadePaths[layer][valueKey],
|
|
143
|
+
var parentItem = cascadePaths[layer - 1];
|
|
144
|
+
var childNodes = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children.map(function (itemData, index) {
|
|
145
|
+
var focus = cascadePaths[layer] && (0, _utils.shallowEqual)(cascadePaths[layer][valueKey], itemData[valueKey]);
|
|
141
146
|
return renderCascadeNode({
|
|
142
|
-
|
|
147
|
+
itemData: itemData,
|
|
143
148
|
index: index,
|
|
144
149
|
layer: layer,
|
|
145
150
|
focus: focus,
|
|
@@ -153,17 +158,21 @@ var TreeView = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
153
158
|
key: onlyKey,
|
|
154
159
|
className: prefix('column'),
|
|
155
160
|
style: {
|
|
156
|
-
height:
|
|
157
|
-
width:
|
|
161
|
+
height: columnHeight,
|
|
162
|
+
width: columnWidth
|
|
158
163
|
}
|
|
159
|
-
},
|
|
164
|
+
}, renderColumn ? renderColumn(childNodes, {
|
|
165
|
+
items: children,
|
|
166
|
+
parentItem: parentItem,
|
|
167
|
+
layer: layer
|
|
168
|
+
}) : childNodes);
|
|
160
169
|
});
|
|
161
170
|
var styles = (0, _extends2.default)({}, style, {
|
|
162
|
-
width:
|
|
171
|
+
width: data.length * columnWidth
|
|
163
172
|
});
|
|
164
173
|
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
165
174
|
role: "tree",
|
|
166
|
-
id: id + "-" + popupType,
|
|
175
|
+
id: id ? id + "-" + popupType : undefined,
|
|
167
176
|
"aria-labelledby": labelId
|
|
168
177
|
}, rest, {
|
|
169
178
|
ref: (0, _utils.mergeRefs)(rootRef, ref),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.useSearch = exports.useSelect = exports.usePaths = void 0;
|
|
7
|
+
var _usePaths = _interopRequireDefault(require("./usePaths"));
|
|
8
|
+
exports.usePaths = _usePaths.default;
|
|
9
|
+
var _useSelect = _interopRequireDefault(require("./useSelect"));
|
|
10
|
+
exports.useSelect = _useSelect.default;
|
|
11
|
+
var _useSearch = _interopRequireDefault(require("./useSearch"));
|
|
12
|
+
exports.useSearch = _useSearch.default;
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
declare type GetColumnsAndPathsOptions<T> = {
|
|
2
|
-
getParent: (item: T) => T | undefined;
|
|
3
|
-
getChildren: (item: T) => readonly T[] | undefined;
|
|
4
|
-
};
|
|
5
|
-
/**
|
|
6
|
-
* Calculate columns to be displayed:
|
|
7
|
-
*
|
|
8
|
-
* - Every ancestor level of activeItem should be displayed
|
|
9
|
-
* - The level that activeItem is at should be displayed
|
|
10
|
-
* - If activeItem is a parent node, its child level should be displayed
|
|
11
|
-
*
|
|
12
|
-
* @param items
|
|
13
|
-
* @param value
|
|
14
|
-
* @param options
|
|
15
|
-
* @returns
|
|
16
|
-
*/
|
|
17
|
-
export declare function getColumnsAndPaths<T extends Record<string, unknown>>(items: readonly T[], pathTarget: T | undefined, options: GetColumnsAndPathsOptions<T>): {
|
|
18
|
-
columns: (readonly T[])[];
|
|
19
|
-
path: T[];
|
|
20
|
-
};
|
|
21
1
|
declare type UsePathsParams<T> = {
|
|
22
2
|
data: T[];
|
|
23
3
|
/**
|
|
@@ -32,18 +12,16 @@ declare type UsePathsParams<T> = {
|
|
|
32
12
|
getChildren: (item: T) => readonly T[] | undefined;
|
|
33
13
|
};
|
|
34
14
|
/**
|
|
35
|
-
*
|
|
15
|
+
* A Hook to get the selected path of Tree.
|
|
36
16
|
*
|
|
37
17
|
* - The columns of items to be displayed
|
|
38
18
|
* - The path towards the current focused item
|
|
39
19
|
* - The path towards the current selected item (referred to by Cascader's value)
|
|
40
20
|
*
|
|
41
|
-
* @param params
|
|
42
|
-
* @returns
|
|
43
21
|
*/
|
|
44
22
|
export declare function usePaths<T extends Record<string, unknown>>({ data, activeItem, selectedItem, getParent, getChildren }: UsePathsParams<T>): {
|
|
45
|
-
|
|
23
|
+
columns: (readonly T[])[];
|
|
46
24
|
pathTowardsSelectedItem: T[];
|
|
47
25
|
pathTowardsActiveItem: T[];
|
|
48
26
|
};
|
|
49
|
-
export
|
|
27
|
+
export default usePaths;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.usePaths = usePaths;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _treeUtils = require("../../utils/treeUtils");
|
|
9
|
+
var _utils = require("../utils");
|
|
10
|
+
/**
|
|
11
|
+
* A Hook to get the selected path of Tree.
|
|
12
|
+
*
|
|
13
|
+
* - The columns of items to be displayed
|
|
14
|
+
* - The path towards the current focused item
|
|
15
|
+
* - The path towards the current selected item (referred to by Cascader's value)
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
function usePaths(_ref) {
|
|
19
|
+
var data = _ref.data,
|
|
20
|
+
activeItem = _ref.activeItem,
|
|
21
|
+
selectedItem = _ref.selectedItem,
|
|
22
|
+
getParent = _ref.getParent,
|
|
23
|
+
getChildren = _ref.getChildren;
|
|
24
|
+
var pathTowardsSelectedItem = (0, _react.useMemo)(function () {
|
|
25
|
+
return (0, _treeUtils.getPathTowardsItem)(selectedItem, getParent);
|
|
26
|
+
}, [getParent, selectedItem]);
|
|
27
|
+
var _useMemo = (0, _react.useMemo)(function () {
|
|
28
|
+
return (0, _utils.getColumnsAndPaths)(data, activeItem, {
|
|
29
|
+
getParent: getParent,
|
|
30
|
+
getChildren: getChildren
|
|
31
|
+
});
|
|
32
|
+
}, [data, activeItem, getParent, getChildren]),
|
|
33
|
+
columns = _useMemo.columns,
|
|
34
|
+
pathTowardsActiveItem = _useMemo.path;
|
|
35
|
+
return {
|
|
36
|
+
columns: columns,
|
|
37
|
+
pathTowardsSelectedItem: pathTowardsSelectedItem,
|
|
38
|
+
pathTowardsActiveItem: pathTowardsActiveItem
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
var _default = usePaths;
|
|
42
|
+
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ItemDataType } from '../../@types/common';
|
|
3
|
+
interface SearchPanelProps<T> {
|
|
4
|
+
labelKey: string;
|
|
5
|
+
childrenKey: string;
|
|
6
|
+
parentMap: WeakMap<ItemDataType<T>, ItemDataType<T>>;
|
|
7
|
+
flattenedData: ItemDataType<T>[];
|
|
8
|
+
parentSelectable?: boolean;
|
|
9
|
+
onSearch: (value: string, items: ItemDataType<T>[], event: React.SyntheticEvent) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function useSearch<T>(props: SearchPanelProps<T>): {
|
|
12
|
+
searchKeyword: string;
|
|
13
|
+
setSearchKeyword: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
14
|
+
items: ItemDataType<T>[];
|
|
15
|
+
handleSearch: (...args: any[]) => any;
|
|
16
|
+
};
|
|
17
|
+
export default useSearch;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _react = require("react");
|
|
7
|
+
var _utils = require("../../utils");
|
|
8
|
+
function useSearch(props) {
|
|
9
|
+
var _useState = (0, _react.useState)(''),
|
|
10
|
+
searchKeyword = _useState[0],
|
|
11
|
+
setSearchKeyword = _useState[1];
|
|
12
|
+
var labelKey = props.labelKey,
|
|
13
|
+
childrenKey = props.childrenKey,
|
|
14
|
+
parentMap = props.parentMap,
|
|
15
|
+
flattenedData = props.flattenedData,
|
|
16
|
+
parentSelectable = props.parentSelectable,
|
|
17
|
+
onSearch = props.onSearch;
|
|
18
|
+
var someKeyword = function someKeyword(item, keyword) {
|
|
19
|
+
if (item[labelKey].match(new RegExp((0, _utils.getSafeRegExpString)(keyword || searchKeyword), 'i'))) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
var parent = parentMap.get(item);
|
|
23
|
+
if (parent && someKeyword(parent)) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
};
|
|
28
|
+
var getSearchResult = function getSearchResult(keyword) {
|
|
29
|
+
var items = [];
|
|
30
|
+
var result = flattenedData.filter(function (item) {
|
|
31
|
+
if (!parentSelectable && item[childrenKey]) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return someKeyword(item, keyword);
|
|
35
|
+
});
|
|
36
|
+
for (var i = 0; i < result.length; i++) {
|
|
37
|
+
items.push(result[i]);
|
|
38
|
+
|
|
39
|
+
// A maximum of 100 search results are returned.
|
|
40
|
+
if (i === 99) {
|
|
41
|
+
return items;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return items;
|
|
45
|
+
};
|
|
46
|
+
var handleSearch = (0, _utils.useEventCallback)(function (value, event) {
|
|
47
|
+
var items = getSearchResult(value);
|
|
48
|
+
setSearchKeyword(value);
|
|
49
|
+
onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, items, event);
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
searchKeyword: searchKeyword,
|
|
53
|
+
setSearchKeyword: setSearchKeyword,
|
|
54
|
+
items: getSearchResult(),
|
|
55
|
+
handleSearch: handleSearch
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
var _default = useSearch;
|
|
59
|
+
exports.default = _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { type ItemDataType } from '../../@types/common';
|
|
3
|
+
import { type SelectNode } from '../types';
|
|
4
|
+
export interface UseSelectProps<T> {
|
|
5
|
+
value?: T | null;
|
|
6
|
+
valueKey: string;
|
|
7
|
+
childrenKey: string;
|
|
8
|
+
selectedItem?: ItemDataType<T>;
|
|
9
|
+
childrenMap: any;
|
|
10
|
+
onSelect?: (node: SelectNode<T>, event: React.SyntheticEvent) => void;
|
|
11
|
+
onChange?: (value: T, event: React.SyntheticEvent) => void;
|
|
12
|
+
getChildren?: (node: ItemDataType<T>) => readonly ItemDataType<T>[] | Promise<readonly ItemDataType<T>[]>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Hook for handling the state after the option is selected
|
|
16
|
+
*/
|
|
17
|
+
declare const useSelect: <T>(props: UseSelectProps<T>) => {
|
|
18
|
+
loadingItemsSet: any;
|
|
19
|
+
activeItem: ItemDataType<T> | undefined;
|
|
20
|
+
setActiveItem: import("react").Dispatch<import("react").SetStateAction<ItemDataType<T> | undefined>>;
|
|
21
|
+
handleSelect: (...args: any[]) => any;
|
|
22
|
+
};
|
|
23
|
+
export default useSelect;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _react = require("react");
|
|
7
|
+
var _reactUseSet = require("react-use-set");
|
|
8
|
+
var _utils = require("../../utils");
|
|
9
|
+
/**
|
|
10
|
+
* Hook for handling the state after the option is selected
|
|
11
|
+
*/
|
|
12
|
+
var useSelect = function useSelect(props) {
|
|
13
|
+
var value = props.value,
|
|
14
|
+
onSelect = props.onSelect,
|
|
15
|
+
getChildren = props.getChildren,
|
|
16
|
+
valueKey = props.valueKey,
|
|
17
|
+
onChange = props.onChange,
|
|
18
|
+
childrenKey = props.childrenKey,
|
|
19
|
+
selectedItem = props.selectedItem,
|
|
20
|
+
childrenMap = props.childrenMap; // The item that focus is on
|
|
21
|
+
var _useState = (0, _react.useState)(selectedItem),
|
|
22
|
+
activeItem = _useState[0],
|
|
23
|
+
setActiveItem = _useState[1];
|
|
24
|
+
var isMounted = (0, _utils.useIsMounted)();
|
|
25
|
+
var loadingItemsSet = (0, _reactUseSet.useSet)();
|
|
26
|
+
var handleSelect = (0, _utils.useEventCallback)(function (node, event) {
|
|
27
|
+
var _itemData$childrenKey;
|
|
28
|
+
var itemData = node.itemData,
|
|
29
|
+
isLeafNode = node.isLeafNode;
|
|
30
|
+
setActiveItem(itemData);
|
|
31
|
+
|
|
32
|
+
// Lazy load node's children
|
|
33
|
+
if (typeof getChildren === 'function' && ((_itemData$childrenKey = itemData[childrenKey]) === null || _itemData$childrenKey === void 0 ? void 0 : _itemData$childrenKey.length) === 0 && !childrenMap.has(itemData)) {
|
|
34
|
+
loadingItemsSet.add(itemData);
|
|
35
|
+
var children = getChildren(itemData);
|
|
36
|
+
if (children instanceof Promise) {
|
|
37
|
+
children.then(function (data) {
|
|
38
|
+
if (isMounted()) {
|
|
39
|
+
loadingItemsSet.delete(itemData);
|
|
40
|
+
childrenMap.set(itemData, data);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
} else {
|
|
44
|
+
loadingItemsSet.delete(itemData);
|
|
45
|
+
childrenMap.set(itemData, children);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (isLeafNode) {
|
|
49
|
+
var nextValue = itemData[valueKey];
|
|
50
|
+
if (!(0, _utils.shallowEqual)(value, nextValue)) {
|
|
51
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, event);
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
loadingItemsSet: loadingItemsSet,
|
|
58
|
+
activeItem: activeItem,
|
|
59
|
+
setActiveItem: setActiveItem,
|
|
60
|
+
handleSelect: handleSelect
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
var _default = useSelect;
|
|
64
|
+
exports.default = _default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _CascadeTree = _interopRequireDefault(require("./CascadeTree"));
|
|
8
|
+
var _default = _CascadeTree.default;
|
|
9
|
+
exports.default = _default;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ItemDataType, DataProps, WithAsProps, ToArray } from '../@types/common';
|
|
3
|
+
export interface SelectNode<T> {
|
|
4
|
+
itemData: ItemDataType<T>;
|
|
5
|
+
cascadePaths: ItemDataType<T>[];
|
|
6
|
+
isLeafNode: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface CascadeColumn<T> {
|
|
9
|
+
items: readonly ItemDataType<T>[];
|
|
10
|
+
parentItem?: ItemDataType<T>;
|
|
11
|
+
layer?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CascadeTreeProps<T, V = T> extends WithAsProps, DataProps<ItemDataType<T>> {
|
|
14
|
+
/**
|
|
15
|
+
* Initial value
|
|
16
|
+
*/
|
|
17
|
+
defaultValue?: V;
|
|
18
|
+
/**
|
|
19
|
+
* Selected value
|
|
20
|
+
*/
|
|
21
|
+
value?: V;
|
|
22
|
+
/**
|
|
23
|
+
* Sets the width of the menu
|
|
24
|
+
*/
|
|
25
|
+
columnWidth?: number;
|
|
26
|
+
/**
|
|
27
|
+
* Sets the height of the menu
|
|
28
|
+
*/
|
|
29
|
+
columnHeight?: number;
|
|
30
|
+
/**
|
|
31
|
+
* Disabled items
|
|
32
|
+
*/
|
|
33
|
+
disabledItemValues?: ToArray<NonNullable<T>>;
|
|
34
|
+
/**
|
|
35
|
+
* Whether dispaly search input box
|
|
36
|
+
*/
|
|
37
|
+
searchable?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Custom render columns
|
|
40
|
+
*/
|
|
41
|
+
renderColumn?: (childNodes: React.ReactNode, column: CascadeColumn<T>) => React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Custom render tree node
|
|
44
|
+
*/
|
|
45
|
+
renderTreeNode?: (node: React.ReactNode, itemData: ItemDataType<T>) => React.ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* Custom render search items
|
|
48
|
+
*/
|
|
49
|
+
renderSearchItem?: (node: React.ReactNode, items: ItemDataType<T>[]) => React.ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* Called when the option is selected
|
|
52
|
+
*/
|
|
53
|
+
onSelect?: (value: ItemDataType<T>, selectedPaths: ItemDataType<T>[], event: React.SyntheticEvent) => void;
|
|
54
|
+
/**
|
|
55
|
+
* Called after the value has been changed
|
|
56
|
+
*/
|
|
57
|
+
onChange?: (value: V, event: React.SyntheticEvent) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Called when searching
|
|
60
|
+
*/
|
|
61
|
+
onSearch?: (value: string, event: React.SyntheticEvent) => void;
|
|
62
|
+
/**
|
|
63
|
+
* Asynchronously load the children of the tree node.
|
|
64
|
+
*/
|
|
65
|
+
getChildren?: (childNodes: ItemDataType<T>) => ItemDataType<T>[] | Promise<ItemDataType<T>[]>;
|
|
66
|
+
}
|