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,77 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useEventCallback, useUpdateEffect, useIsMounted } from '../../utils';
|
|
4
|
+
import useFlattenData from './useFlattenData';
|
|
5
|
+
import useColumnData from './useColumnData';
|
|
6
|
+
var useSelect = function useSelect(props) {
|
|
7
|
+
var data = props.data,
|
|
8
|
+
childrenKey = props.childrenKey,
|
|
9
|
+
labelKey = props.labelKey,
|
|
10
|
+
valueKey = props.valueKey,
|
|
11
|
+
onSelect = props.onSelect,
|
|
12
|
+
getChildren = props.getChildren;
|
|
13
|
+
var itemKeys = {
|
|
14
|
+
childrenKey: childrenKey,
|
|
15
|
+
labelKey: labelKey,
|
|
16
|
+
valueKey: valueKey
|
|
17
|
+
};
|
|
18
|
+
var _useFlattenData = useFlattenData(data, itemKeys),
|
|
19
|
+
flattenData = _useFlattenData.flattenData,
|
|
20
|
+
addFlattenData = _useFlattenData.addFlattenData; // The columns displayed in the cascading panel.
|
|
21
|
+
var _useColumnData = useColumnData(flattenData),
|
|
22
|
+
columnData = _useColumnData.columnData,
|
|
23
|
+
addColumn = _useColumnData.addColumn,
|
|
24
|
+
setColumnData = _useColumnData.setColumnData,
|
|
25
|
+
removeColumnByIndex = _useColumnData.removeColumnByIndex,
|
|
26
|
+
enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
|
|
27
|
+
useUpdateEffect(function () {
|
|
28
|
+
enforceUpdateColumnData(data);
|
|
29
|
+
}, [data]);
|
|
30
|
+
var isMounted = useIsMounted();
|
|
31
|
+
|
|
32
|
+
// The path after cascading data selection.
|
|
33
|
+
var _useState = useState(),
|
|
34
|
+
selectedPaths = _useState[0],
|
|
35
|
+
setSelectedPaths = _useState[1];
|
|
36
|
+
var handleSelect = useEventCallback(function (node, cascadePaths, event) {
|
|
37
|
+
var _node$childrenKey, _node$childrenKey2;
|
|
38
|
+
setSelectedPaths(cascadePaths);
|
|
39
|
+
var columnIndex = cascadePaths.length;
|
|
40
|
+
|
|
41
|
+
// Lazy load node's children
|
|
42
|
+
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
|
|
43
|
+
node.loading = true;
|
|
44
|
+
var children = getChildren(node);
|
|
45
|
+
if (children instanceof Promise) {
|
|
46
|
+
children.then(function (data) {
|
|
47
|
+
node.loading = false;
|
|
48
|
+
node[childrenKey] = data;
|
|
49
|
+
if (isMounted()) {
|
|
50
|
+
addFlattenData(data, node);
|
|
51
|
+
addColumn(data, columnIndex);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
} else {
|
|
55
|
+
node.loading = false;
|
|
56
|
+
node[childrenKey] = children;
|
|
57
|
+
addFlattenData(children, node);
|
|
58
|
+
addColumn(children, columnIndex);
|
|
59
|
+
}
|
|
60
|
+
} else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
|
|
61
|
+
addColumn(node[childrenKey], columnIndex);
|
|
62
|
+
} else {
|
|
63
|
+
// Removes subsequent columns of the current column when the clicked node is a leaf node.
|
|
64
|
+
removeColumnByIndex(columnIndex);
|
|
65
|
+
}
|
|
66
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
columnData: columnData,
|
|
70
|
+
setColumnData: setColumnData,
|
|
71
|
+
flattenData: flattenData,
|
|
72
|
+
selectedPaths: selectedPaths,
|
|
73
|
+
setSelectedPaths: setSelectedPaths,
|
|
74
|
+
handleSelect: handleSelect
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export default useSelect;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { CascadeTreeProps } from '../CascadeTree/types';
|
|
3
|
+
import type { ItemDataType, ToArray, WithAsProps } from '../@types/common';
|
|
4
|
+
export interface ItemKeys {
|
|
5
|
+
valueKey: string;
|
|
6
|
+
labelKey: string;
|
|
7
|
+
childrenKey: string;
|
|
8
|
+
}
|
|
9
|
+
export interface MultiCascadeTreeProps<T, V = T[]> extends WithAsProps, CascadeTreeProps<T, V> {
|
|
10
|
+
/**
|
|
11
|
+
* When set to true, selecting a child node will update the state of the parent node.
|
|
12
|
+
*/
|
|
13
|
+
cascade?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Disabled items
|
|
16
|
+
*/
|
|
17
|
+
disabledItemValues?: ToArray<NonNullable<T>>;
|
|
18
|
+
/**
|
|
19
|
+
* Set the option value for the check box not to be rendered
|
|
20
|
+
*/
|
|
21
|
+
uncheckableItemValues?: T[];
|
|
22
|
+
/**
|
|
23
|
+
* Called after the checkbox state changes.
|
|
24
|
+
*/
|
|
25
|
+
onCheck?: (value: T[], node: ItemDataType<T>, checked: boolean, event: React.SyntheticEvent) => void;
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use client';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ItemDataType } from '../@types/common';
|
|
2
|
+
export interface ItemType<T = any> extends ItemDataType<T> {
|
|
3
|
+
parent?: ItemType<T>;
|
|
4
|
+
}
|
|
5
|
+
interface ItemKeys {
|
|
6
|
+
valueKey: string;
|
|
7
|
+
labelKey: string;
|
|
8
|
+
childrenKey: string;
|
|
9
|
+
}
|
|
10
|
+
declare type MayHasParent<T extends Record<string, unknown>> = T & {
|
|
11
|
+
parent?: MayHasParent<T>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Get all parents of a node
|
|
15
|
+
* @param node
|
|
16
|
+
*/
|
|
17
|
+
export declare const getParents: <T extends Record<string, unknown>>(node: MayHasParent<T>) => MayHasParent<T>[];
|
|
18
|
+
/**
|
|
19
|
+
* Check if any child nodes are selected.
|
|
20
|
+
* @param node
|
|
21
|
+
* @param value
|
|
22
|
+
* @param itemKeys
|
|
23
|
+
*/
|
|
24
|
+
export declare const isSomeChildChecked: <T extends Record<string, unknown>>(node: T, value: T[], itemKeys: Omit<ItemKeys, 'labelKey'>) => any;
|
|
25
|
+
/**
|
|
26
|
+
* Check if the parent is selected.
|
|
27
|
+
* @param node
|
|
28
|
+
* @param value
|
|
29
|
+
* @param itemKeys
|
|
30
|
+
*/
|
|
31
|
+
export declare const isSomeParentChecked: <T extends Record<string, unknown>>(node: MayHasParent<T>, value: T[], itemKeys: Pick<ItemKeys, 'valueKey'>) => any;
|
|
32
|
+
export declare const getOtherItemValuesByUnselectChild: <T>(itemNode: ItemType, value: any, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[];
|
|
33
|
+
/**
|
|
34
|
+
* Remove the values of all children.
|
|
35
|
+
*/
|
|
36
|
+
export declare const removeAllChildrenValue: <T>(value: T[], item: ItemType, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[] | undefined;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import remove from 'lodash/remove';
|
|
3
|
+
/**
|
|
4
|
+
* Get all parents of a node
|
|
5
|
+
* @param node
|
|
6
|
+
*/
|
|
7
|
+
export var getParents = function getParents(node) {
|
|
8
|
+
var parents = [];
|
|
9
|
+
if (!node.parent) {
|
|
10
|
+
return parents;
|
|
11
|
+
}
|
|
12
|
+
parents.push(node.parent);
|
|
13
|
+
parents = parents.concat(getParents(node.parent));
|
|
14
|
+
return parents;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Check if any child nodes are selected.
|
|
19
|
+
* @param node
|
|
20
|
+
* @param value
|
|
21
|
+
* @param itemKeys
|
|
22
|
+
*/
|
|
23
|
+
export var isSomeChildChecked = function isSomeChildChecked(node, value, itemKeys) {
|
|
24
|
+
var childrenKey = itemKeys.childrenKey,
|
|
25
|
+
valueKey = itemKeys.valueKey;
|
|
26
|
+
if (!node[childrenKey] || !value) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return node[childrenKey].some(function (child) {
|
|
30
|
+
var _child$childrenKey;
|
|
31
|
+
if (value.some(function (n) {
|
|
32
|
+
return n === child[valueKey];
|
|
33
|
+
})) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if ((_child$childrenKey = child[childrenKey]) !== null && _child$childrenKey !== void 0 && _child$childrenKey.length) {
|
|
37
|
+
return isSomeChildChecked(child, value, itemKeys);
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Check if the parent is selected.
|
|
45
|
+
* @param node
|
|
46
|
+
* @param value
|
|
47
|
+
* @param itemKeys
|
|
48
|
+
*/
|
|
49
|
+
export var isSomeParentChecked = function isSomeParentChecked(node, value, itemKeys) {
|
|
50
|
+
var valueKey = itemKeys.valueKey;
|
|
51
|
+
if (!value) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
if (value.some(function (n) {
|
|
55
|
+
return n === node[valueKey];
|
|
56
|
+
})) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (node.parent) {
|
|
60
|
+
return isSomeParentChecked(node.parent, value, itemKeys);
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
};
|
|
64
|
+
export var getOtherItemValuesByUnselectChild = function getOtherItemValuesByUnselectChild(itemNode, value, itemKeys) {
|
|
65
|
+
var valueKey = itemKeys.valueKey,
|
|
66
|
+
childrenKey = itemKeys.childrenKey;
|
|
67
|
+
var parentValues = [];
|
|
68
|
+
var itemValues = [];
|
|
69
|
+
|
|
70
|
+
// Find the parent node of the current node by value
|
|
71
|
+
function findParent(item) {
|
|
72
|
+
parentValues.push(item[valueKey]);
|
|
73
|
+
if (value.some(function (v) {
|
|
74
|
+
return v === item[valueKey];
|
|
75
|
+
})) {
|
|
76
|
+
return item;
|
|
77
|
+
}
|
|
78
|
+
if (item.parent) {
|
|
79
|
+
var p = findParent(item.parent);
|
|
80
|
+
if (p) {
|
|
81
|
+
return p;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Get child nodes through parent node
|
|
88
|
+
function pushChildValue(item) {
|
|
89
|
+
if (!item[childrenKey]) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
item[childrenKey].forEach(function (n) {
|
|
93
|
+
// Determine whether it is a direct parent
|
|
94
|
+
if (parentValues.some(function (v) {
|
|
95
|
+
return v === n[valueKey];
|
|
96
|
+
}) && n[childrenKey]) {
|
|
97
|
+
pushChildValue(n);
|
|
98
|
+
} else if (n[valueKey] !== itemNode[valueKey]) {
|
|
99
|
+
itemValues.push(n[valueKey]);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
var parent = findParent(itemNode);
|
|
104
|
+
if (!parent) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
pushChildValue(parent);
|
|
108
|
+
return itemValues;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Remove the values of all children.
|
|
113
|
+
*/
|
|
114
|
+
export var removeAllChildrenValue = function removeAllChildrenValue(value, item, itemKeys) {
|
|
115
|
+
var valueKey = itemKeys.valueKey,
|
|
116
|
+
childrenKey = itemKeys.childrenKey;
|
|
117
|
+
var removedValue = [];
|
|
118
|
+
if (!item[childrenKey]) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
item[childrenKey].forEach(function (n) {
|
|
122
|
+
removedValue = removedValue.concat(remove(value, function (v) {
|
|
123
|
+
return v === n[valueKey];
|
|
124
|
+
}));
|
|
125
|
+
if (n[childrenKey]) {
|
|
126
|
+
removeAllChildrenValue(value, n, itemKeys);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return removedValue;
|
|
130
|
+
};
|
|
@@ -1,42 +1,70 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PickerLocale } from '../locales';
|
|
3
3
|
import { PickerComponent, PickerToggleProps } from '../internals/Picker';
|
|
4
|
-
import { FormControlPickerProps, ItemDataType } from '../@types/common';
|
|
5
|
-
|
|
6
|
-
export interface MultiCascaderProps<T
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { FormControlPickerProps, ItemDataType, DataItemValue } from '../@types/common';
|
|
5
|
+
import type { MultiCascadeTreeProps } from '../MultiCascadeTree';
|
|
6
|
+
export interface MultiCascaderProps<T extends DataItemValue> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>, T>, MultiCascadeTreeProps<T, T[]>, Pick<PickerToggleProps, 'loading'> {
|
|
7
|
+
/**
|
|
8
|
+
* A picker that can be counted
|
|
9
|
+
*/
|
|
9
10
|
countable?: boolean;
|
|
10
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Sets the width of the menu.
|
|
13
|
+
*
|
|
14
|
+
* @deprecated Use columnWidth instead
|
|
15
|
+
*/
|
|
11
16
|
menuWidth?: number;
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Sets the height of the menu
|
|
19
|
+
* @deprecated Use columnHeight instead
|
|
20
|
+
*/
|
|
21
|
+
menuHeight?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Custom menu class name
|
|
24
|
+
* @deprecated Use popupClassName instead
|
|
25
|
+
*/
|
|
26
|
+
menuClassName?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Custom menu style
|
|
29
|
+
* @deprecated Use popupStyle instead
|
|
30
|
+
*/
|
|
31
|
+
menuStyle?: React.CSSProperties;
|
|
32
|
+
/**
|
|
33
|
+
* Custom popup style
|
|
34
|
+
*/
|
|
35
|
+
popupStyle?: React.CSSProperties;
|
|
36
|
+
/**
|
|
37
|
+
* Custom popup style
|
|
38
|
+
*/
|
|
39
|
+
popupClassName?: string;
|
|
40
|
+
/**
|
|
41
|
+
* The panel is displayed directly when the component is initialized
|
|
42
|
+
* @deprecated Use MultiCascadeTree instead
|
|
43
|
+
* @see MultiCascadeTree https://rsuitejs.com/components/multi-cascade-tree
|
|
44
|
+
*/
|
|
19
45
|
inline?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Custom render menu
|
|
48
|
+
* @deprecated Use renderColumn instead
|
|
49
|
+
*/
|
|
50
|
+
renderMenu?: (items: readonly ItemDataType<T>[], menu: React.ReactNode, parentNode?: any, layer?: number) => React.ReactNode;
|
|
51
|
+
/**
|
|
52
|
+
* Custom render menu item
|
|
53
|
+
* @deprecated Use renderTreeNode instead
|
|
54
|
+
*/
|
|
55
|
+
renderMenuItem?: (node: React.ReactNode, item: ItemDataType<T>) => React.ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* Custom render selected items
|
|
58
|
+
*/
|
|
59
|
+
renderValue?: (value: T[], selectedItems: ItemDataType<T>[], selectedElement: React.ReactNode) => React.ReactNode;
|
|
60
|
+
/**
|
|
61
|
+
* Called when clean
|
|
62
|
+
*/
|
|
31
63
|
onClean?: (event: React.SyntheticEvent) => void;
|
|
32
|
-
/** Called when searching */
|
|
33
|
-
onSearch?: (searchKeyword: string, event: React.SyntheticEvent) => void;
|
|
34
|
-
/** Asynchronously load the children of the tree node. */
|
|
35
|
-
getChildren?: (node: ItemDataType) => ItemDataType[] | Promise<ItemDataType[]>;
|
|
36
64
|
}
|
|
37
65
|
/**
|
|
38
66
|
* The `MultiCascader` component is used to select multiple values from cascading options.
|
|
39
67
|
* @see https://rsuitejs.com/components/multi-cascader/
|
|
40
68
|
*/
|
|
41
|
-
declare const MultiCascader: PickerComponent<MultiCascaderProps
|
|
69
|
+
declare const MultiCascader: PickerComponent<MultiCascaderProps<DataItemValue>>;
|
|
42
70
|
export default MultiCascader;
|