rsuite 5.50.0 → 5.51.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 +11 -0
- package/CheckTreePicker/styles/index.less +3 -3
- package/DatePicker/styles/index.less +1 -1
- package/Form/styles/mixin.less +1 -2
- package/InputGroup/styles/index.less +0 -14
- package/InputPicker/styles/index.less +1 -1
- package/Picker/styles/index.less +2 -2
- package/Picker/styles/mixin.less +3 -3
- package/TagInput/styles/index.less +1 -1
- package/TagPicker/styles/index.less +5 -1
- package/TreePicker/styles/index.less +2 -2
- package/cjs/@types/common.d.ts +8 -0
- package/cjs/AutoComplete/AutoComplete.js +14 -11
- package/cjs/AutoComplete/Combobox.d.ts +8 -0
- package/cjs/AutoComplete/Combobox.js +31 -0
- package/cjs/Calendar/CalendarContainer.js +35 -37
- package/cjs/Cascader/Cascader.js +12 -11
- package/cjs/Cascader/DropdownMenu.d.ts +3 -20
- package/cjs/Cascader/DropdownMenu.js +48 -48
- package/cjs/Cascader/TreeView.d.ts +24 -0
- package/cjs/Cascader/TreeView.js +174 -0
- package/cjs/CheckPicker/CheckPicker.js +9 -8
- package/cjs/CheckTreePicker/CheckTreeNode.d.ts +2 -2
- package/cjs/CheckTreePicker/CheckTreeNode.js +31 -59
- package/cjs/CheckTreePicker/CheckTreePicker.js +20 -20
- package/cjs/DatePicker/DatePicker.js +5 -6
- package/cjs/DateRangePicker/DateRangePicker.js +3 -4
- package/cjs/Form/Form.d.ts +14 -0
- package/cjs/Form/Form.js +39 -30
- package/cjs/Form/FormContext.d.ts +1 -0
- package/cjs/FormControl/FormControl.js +40 -18
- package/cjs/FormGroup/FormGroup.js +2 -1
- package/cjs/InputPicker/InputPicker.js +46 -29
- package/cjs/InputPicker/InputSearch.js +3 -15
- package/cjs/InputPicker/TagList.d.ts +3 -0
- package/cjs/InputPicker/TagList.js +29 -0
- package/cjs/InputPicker/TextBox.d.ts +18 -0
- package/cjs/InputPicker/TextBox.js +48 -0
- package/cjs/MultiCascader/MultiCascader.js +13 -10
- package/cjs/MultiCascader/{DropdownMenu.d.ts → TreeView.d.ts} +3 -3
- package/cjs/MultiCascader/{DropdownMenu.js → TreeView.js} +77 -74
- package/{esm/Picker/DropdownMenuCheckItem.d.ts → cjs/Picker/ListCheckItem.d.ts} +3 -3
- package/cjs/Picker/{DropdownMenuCheckItem.js → ListCheckItem.js} +14 -30
- package/{esm/Picker/DropdownMenuItem.d.ts → cjs/Picker/ListItem.d.ts} +4 -4
- package/cjs/Picker/{DropdownMenuItem.js → ListItem.js} +15 -24
- package/cjs/Picker/ListItemGroup.d.ts +6 -0
- package/cjs/Picker/{DropdownMenuGroup.js → ListItemGroup.js} +3 -9
- package/cjs/Picker/Listbox.d.ts +35 -0
- package/cjs/Picker/{DropdownMenu.js → Listbox.js} +49 -64
- package/cjs/Picker/{PickerOverlay.d.ts → PickerPopup.d.ts} +3 -3
- package/cjs/Picker/{PickerOverlay.js → PickerPopup.js} +9 -7
- package/cjs/Picker/PickerToggle.d.ts +1 -1
- package/cjs/Picker/PickerToggle.js +16 -9
- package/cjs/Picker/PickerToggleTrigger.d.ts +15 -0
- package/cjs/Picker/PickerToggleTrigger.js +21 -5
- package/cjs/Picker/SearchBar.js +7 -9
- package/cjs/Picker/TreeView.d.ts +7 -0
- package/cjs/Picker/TreeView.js +31 -0
- package/cjs/Picker/hooks/index.d.ts +6 -0
- package/cjs/Picker/hooks/index.js +18 -0
- package/cjs/Picker/hooks/useCombobox.d.ts +7 -0
- package/cjs/Picker/hooks/useCombobox.js +22 -0
- package/cjs/Picker/hooks/useFocusItemValue.d.ts +30 -0
- package/cjs/Picker/hooks/useFocusItemValue.js +246 -0
- package/cjs/Picker/hooks/usePickerClassName.d.ts +21 -0
- package/cjs/Picker/hooks/usePickerClassName.js +39 -0
- package/cjs/Picker/{usePickerRef.d.ts → hooks/usePickerRef.d.ts} +2 -2
- package/cjs/Picker/{usePickerRef.js → hooks/usePickerRef.js} +1 -1
- package/cjs/Picker/hooks/useSearch.d.ts +18 -0
- package/cjs/Picker/hooks/useSearch.js +57 -0
- package/cjs/Picker/hooks/useToggleKeyDownEvent.d.ts +25 -0
- package/cjs/Picker/hooks/useToggleKeyDownEvent.js +101 -0
- package/cjs/Picker/index.d.ts +7 -6
- package/cjs/Picker/index.js +26 -19
- package/cjs/Picker/propTypes.d.ts +0 -6
- package/cjs/Picker/propTypes.js +0 -5
- package/cjs/Picker/utils.d.ts +2 -96
- package/cjs/Picker/utils.js +1 -406
- package/cjs/SelectPicker/SelectPicker.js +8 -8
- package/cjs/TagInput/index.js +4 -0
- package/cjs/TreePicker/TreeNode.d.ts +2 -2
- package/cjs/TreePicker/TreeNode.js +22 -56
- package/cjs/TreePicker/TreePicker.js +19 -20
- package/dist/rsuite-no-reset-rtl.css +109 -117
- 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 +109 -117
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +109 -117
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +109 -117
- package/dist/rsuite.js +184 -74
- 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 +8 -0
- package/esm/AutoComplete/AutoComplete.js +15 -12
- package/esm/AutoComplete/Combobox.d.ts +8 -0
- package/esm/AutoComplete/Combobox.js +25 -0
- package/esm/Calendar/CalendarContainer.js +37 -39
- package/esm/Cascader/Cascader.js +13 -12
- package/esm/Cascader/DropdownMenu.d.ts +3 -20
- package/esm/Cascader/DropdownMenu.js +50 -49
- package/esm/Cascader/TreeView.d.ts +24 -0
- package/esm/Cascader/TreeView.js +167 -0
- package/esm/CheckPicker/CheckPicker.js +10 -9
- package/esm/CheckTreePicker/CheckTreeNode.d.ts +2 -2
- package/esm/CheckTreePicker/CheckTreeNode.js +33 -61
- package/esm/CheckTreePicker/CheckTreePicker.js +21 -21
- package/esm/DatePicker/DatePicker.js +5 -6
- package/esm/DateRangePicker/DateRangePicker.js +3 -4
- package/esm/Form/Form.d.ts +14 -0
- package/esm/Form/Form.js +41 -32
- package/esm/Form/FormContext.d.ts +1 -0
- package/esm/FormControl/FormControl.js +39 -17
- package/esm/FormGroup/FormGroup.js +3 -2
- package/esm/InputPicker/InputPicker.js +47 -30
- package/esm/InputPicker/InputSearch.js +4 -15
- package/esm/InputPicker/TagList.d.ts +3 -0
- package/esm/InputPicker/TagList.js +23 -0
- package/esm/InputPicker/TextBox.d.ts +18 -0
- package/esm/InputPicker/TextBox.js +42 -0
- package/esm/MultiCascader/MultiCascader.js +14 -11
- package/esm/MultiCascader/{DropdownMenu.d.ts → TreeView.d.ts} +3 -3
- package/esm/MultiCascader/{DropdownMenu.js → TreeView.js} +79 -75
- package/{cjs/Picker/DropdownMenuCheckItem.d.ts → esm/Picker/ListCheckItem.d.ts} +3 -3
- package/esm/Picker/{DropdownMenuCheckItem.js → ListCheckItem.js} +15 -30
- package/{cjs/Picker/DropdownMenuItem.d.ts → esm/Picker/ListItem.d.ts} +4 -4
- package/esm/Picker/{DropdownMenuItem.js → ListItem.js} +16 -24
- package/esm/Picker/ListItemGroup.d.ts +6 -0
- package/esm/Picker/{DropdownMenuGroup.js → ListItemGroup.js} +3 -9
- package/esm/Picker/Listbox.d.ts +35 -0
- package/esm/Picker/{DropdownMenu.js → Listbox.js} +50 -64
- package/esm/Picker/{PickerOverlay.d.ts → PickerPopup.d.ts} +3 -3
- package/esm/Picker/{PickerOverlay.js → PickerPopup.js} +10 -8
- package/esm/Picker/PickerToggle.d.ts +1 -1
- package/esm/Picker/PickerToggle.js +16 -9
- package/esm/Picker/PickerToggleTrigger.d.ts +15 -0
- package/esm/Picker/PickerToggleTrigger.js +20 -5
- package/esm/Picker/SearchBar.js +8 -9
- package/esm/Picker/TreeView.d.ts +7 -0
- package/esm/Picker/TreeView.js +25 -0
- package/esm/Picker/hooks/index.d.ts +6 -0
- package/esm/Picker/hooks/index.js +7 -0
- package/esm/Picker/hooks/useCombobox.d.ts +7 -0
- package/esm/Picker/hooks/useCombobox.js +17 -0
- package/esm/Picker/hooks/useFocusItemValue.d.ts +30 -0
- package/esm/Picker/hooks/useFocusItemValue.js +240 -0
- package/esm/Picker/hooks/usePickerClassName.d.ts +21 -0
- package/esm/Picker/hooks/usePickerClassName.js +33 -0
- package/esm/Picker/{usePickerRef.d.ts → hooks/usePickerRef.d.ts} +2 -2
- package/esm/Picker/{usePickerRef.js → hooks/usePickerRef.js} +1 -1
- package/esm/Picker/hooks/useSearch.d.ts +18 -0
- package/esm/Picker/hooks/useSearch.js +51 -0
- package/esm/Picker/hooks/useToggleKeyDownEvent.d.ts +25 -0
- package/esm/Picker/hooks/useToggleKeyDownEvent.js +96 -0
- package/esm/Picker/index.d.ts +7 -6
- package/esm/Picker/index.js +7 -6
- package/esm/Picker/propTypes.d.ts +0 -6
- package/esm/Picker/propTypes.js +0 -5
- package/esm/Picker/utils.d.ts +2 -96
- package/esm/Picker/utils.js +2 -401
- package/esm/SelectPicker/SelectPicker.js +9 -9
- package/esm/TagInput/index.js +4 -0
- package/esm/TreePicker/TreeNode.d.ts +2 -2
- package/esm/TreePicker/TreeNode.js +24 -58
- package/esm/TreePicker/TreePicker.js +20 -21
- package/package.json +1 -1
- package/styles/variables.less +1 -3
- package/cjs/Picker/DropdownMenu.d.ts +0 -59
- package/cjs/Picker/DropdownMenuGroup.d.ts +0 -6
- package/esm/Picker/DropdownMenu.d.ts +0 -59
- package/esm/Picker/DropdownMenuGroup.d.ts +0 -6
package/esm/@types/common.d.ts
CHANGED
|
@@ -77,6 +77,14 @@ export interface PickerBaseProps<LocaleType = any> extends WithAsProps, Animatio
|
|
|
77
77
|
onOpen?: () => void;
|
|
78
78
|
/** Called when Modal is closed */
|
|
79
79
|
onClose?: () => void;
|
|
80
|
+
/**
|
|
81
|
+
* Called when the component is focused.
|
|
82
|
+
*/
|
|
83
|
+
onFocus?: React.FocusEventHandler<any>;
|
|
84
|
+
/**
|
|
85
|
+
* Called when the component is blurred.
|
|
86
|
+
*/
|
|
87
|
+
onBlur?: React.FocusEventHandler<any>;
|
|
80
88
|
/** Custom render extra footer */
|
|
81
89
|
renderExtraFooter?: () => React.ReactNode;
|
|
82
90
|
}
|
|
@@ -5,12 +5,12 @@ import React, { useState } from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import pick from 'lodash/pick';
|
|
7
7
|
import omit from 'lodash/omit';
|
|
8
|
-
import Input from '../Input';
|
|
9
8
|
import { useClassNames, useControlled, useIsMounted, useEventCallback, PLACEMENT, mergeRefs, partitionHTMLProps } from '../utils';
|
|
10
9
|
import { animationPropTypes } from '../Animation/utils';
|
|
11
|
-
import { PickerToggleTrigger, onMenuKeyDown,
|
|
10
|
+
import { PickerToggleTrigger, onMenuKeyDown, Listbox, ListItem, PickerPopup, useFocusItemValue, usePickerRef, pickTriggerPropKeys } from '../Picker';
|
|
12
11
|
import { transformData, shouldDisplay } from './utils';
|
|
13
12
|
import Plaintext from '../Plaintext';
|
|
13
|
+
import Combobox from './Combobox';
|
|
14
14
|
/**
|
|
15
15
|
* Autocomplete function of input field.
|
|
16
16
|
* @see https://rsuitejs.com/components/auto-complete
|
|
@@ -72,6 +72,7 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
72
72
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
73
73
|
var _useFocusItemValue = useFocusItemValue(value, {
|
|
74
74
|
data: datalist,
|
|
75
|
+
focusToOption: false,
|
|
75
76
|
callback: onMenuFocus,
|
|
76
77
|
target: function target() {
|
|
77
78
|
return overlay.current;
|
|
@@ -154,7 +155,7 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
154
155
|
var _partitionHTMLProps = partitionHTMLProps(omit(rest, pickTriggerPropKeys)),
|
|
155
156
|
htmlInputProps = _partitionHTMLProps[0],
|
|
156
157
|
restProps = _partitionHTMLProps[1];
|
|
157
|
-
var
|
|
158
|
+
var renderPopup = function renderPopup(positionProps, speakerRef) {
|
|
158
159
|
var left = positionProps.left,
|
|
159
160
|
top = positionProps.top,
|
|
160
161
|
className = positionProps.className;
|
|
@@ -162,18 +163,17 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
162
163
|
left: left,
|
|
163
164
|
top: top
|
|
164
165
|
};
|
|
165
|
-
var menu = /*#__PURE__*/React.createElement(
|
|
166
|
-
id: id ? id + "-listbox" : undefined,
|
|
166
|
+
var menu = /*#__PURE__*/React.createElement(Listbox, {
|
|
167
167
|
classPrefix: "auto-complete-menu",
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
listItemClassPrefix: "auto-complete-item",
|
|
169
|
+
listItemAs: ListItem,
|
|
170
170
|
focusItemValue: focusItemValue,
|
|
171
171
|
onSelect: handleItemSelect,
|
|
172
172
|
renderMenuItem: renderMenuItem,
|
|
173
173
|
data: items,
|
|
174
174
|
className: menuClassName
|
|
175
175
|
});
|
|
176
|
-
return /*#__PURE__*/React.createElement(
|
|
176
|
+
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
177
177
|
ref: mergeRefs(overlay, speakerRef),
|
|
178
178
|
style: styles,
|
|
179
179
|
className: className,
|
|
@@ -188,23 +188,26 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
188
188
|
localeKey: "unfilled"
|
|
189
189
|
}, typeof value === 'undefined' ? defaultValue : value);
|
|
190
190
|
}
|
|
191
|
+
var expanded = open || focus && hasItems;
|
|
191
192
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
193
|
+
id: id,
|
|
192
194
|
ref: trigger,
|
|
193
195
|
placement: placement,
|
|
194
196
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
195
197
|
trigger: ['click', 'focus'],
|
|
196
|
-
open:
|
|
197
|
-
speaker:
|
|
198
|
+
open: expanded,
|
|
199
|
+
speaker: renderPopup
|
|
198
200
|
}, /*#__PURE__*/React.createElement(Component, _extends({
|
|
199
201
|
className: classes,
|
|
200
202
|
style: style,
|
|
201
203
|
ref: root
|
|
202
|
-
}, restProps), /*#__PURE__*/React.createElement(
|
|
203
|
-
id: id,
|
|
204
|
+
}, restProps), /*#__PURE__*/React.createElement(Combobox, _extends({}, htmlInputProps, {
|
|
204
205
|
disabled: disabled,
|
|
205
206
|
value: value,
|
|
206
207
|
size: size,
|
|
207
208
|
readOnly: readOnly,
|
|
209
|
+
expanded: expanded,
|
|
210
|
+
focusItemValue: focusItemValue,
|
|
208
211
|
onBlur: handleInputBlur,
|
|
209
212
|
onFocus: handleInputFocus,
|
|
210
213
|
onChange: handleChange,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type InputProps } from '../Input';
|
|
3
|
+
interface ComboboxProps extends InputProps {
|
|
4
|
+
expanded?: boolean;
|
|
5
|
+
focusItemValue?: string | null;
|
|
6
|
+
}
|
|
7
|
+
declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
8
|
+
export default Combobox;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { useCombobox } from '../Picker';
|
|
6
|
+
import Input from '../Input';
|
|
7
|
+
var Combobox = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
8
|
+
var _useCombobox = useCombobox(),
|
|
9
|
+
id = _useCombobox.id,
|
|
10
|
+
popupType = _useCombobox.popupType;
|
|
11
|
+
var expanded = props.expanded,
|
|
12
|
+
focusItemValue = props.focusItemValue,
|
|
13
|
+
rest = _objectWithoutPropertiesLoose(props, ["expanded", "focusItemValue"]);
|
|
14
|
+
return /*#__PURE__*/React.createElement(Input, _extends({
|
|
15
|
+
role: "combobox",
|
|
16
|
+
"aria-autocomplete": "list",
|
|
17
|
+
"aria-haspopup": popupType,
|
|
18
|
+
"aria-expanded": expanded,
|
|
19
|
+
"aria-activedescendant": focusItemValue ? id + "-opt-" + focusItemValue : undefined,
|
|
20
|
+
autoComplete: "off",
|
|
21
|
+
id: id,
|
|
22
|
+
ref: ref
|
|
23
|
+
}, rest));
|
|
24
|
+
});
|
|
25
|
+
export default Combobox;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
import React, {
|
|
4
|
+
import React, { useMemo } from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import pick from 'lodash/pick';
|
|
7
7
|
import MonthDropdown from './MonthDropdown';
|
|
8
8
|
import TimeDropdown from './TimeDropdown';
|
|
9
9
|
import CalendarBody from './CalendarBody';
|
|
10
10
|
import CalendarHeader from './CalendarHeader';
|
|
11
|
-
import { useClassNames } from '../utils';
|
|
11
|
+
import { useClassNames, useEventCallback } from '../utils';
|
|
12
12
|
import { disabledTime, addMonths, shouldRenderDate, shouldRenderTime, shouldRenderMonth, isSameMonth, calendarOnlyProps, omitHideDisabledProps, isValid } from '../utils/dateUtils';
|
|
13
13
|
import { CalendarProvider } from './CalendarContext';
|
|
14
14
|
import useCalendarState, { CalendarState } from './useCalendarState';
|
|
@@ -62,42 +62,42 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
62
62
|
var calendarDate = useMemo(function () {
|
|
63
63
|
return isValid(calendarDateProp) ? calendarDateProp : new Date();
|
|
64
64
|
}, [calendarDateProp]);
|
|
65
|
-
var isDisabledDate =
|
|
65
|
+
var isDisabledDate = useEventCallback(function (date) {
|
|
66
66
|
var _disabledDate;
|
|
67
67
|
return (_disabledDate = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date)) !== null && _disabledDate !== void 0 ? _disabledDate : false;
|
|
68
|
-
}
|
|
68
|
+
});
|
|
69
69
|
var isTimeDisabled = function isTimeDisabled(date) {
|
|
70
70
|
return disabledTime(props, date);
|
|
71
71
|
};
|
|
72
|
-
var handleMoveForward =
|
|
72
|
+
var handleMoveForward = useEventCallback(function () {
|
|
73
73
|
onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward(addMonths(calendarDate, 1));
|
|
74
|
-
}
|
|
75
|
-
var handleMoveBackward =
|
|
74
|
+
});
|
|
75
|
+
var handleMoveBackward = useEventCallback(function () {
|
|
76
76
|
onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward(addMonths(calendarDate, -1));
|
|
77
|
-
}
|
|
77
|
+
});
|
|
78
78
|
|
|
79
79
|
// It is displayed as the month to be selected.
|
|
80
|
-
var toggleMonthView =
|
|
80
|
+
var toggleMonthView = useEventCallback(function () {
|
|
81
81
|
if (calendarState === CalendarState.MONTH) {
|
|
82
82
|
reset();
|
|
83
83
|
} else {
|
|
84
84
|
openMonth();
|
|
85
85
|
}
|
|
86
86
|
onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(calendarState !== CalendarState.MONTH);
|
|
87
|
-
}
|
|
87
|
+
});
|
|
88
88
|
|
|
89
89
|
// It is displayed as a time to be selected.
|
|
90
|
-
var toggleTimeView =
|
|
90
|
+
var toggleTimeView = useEventCallback(function () {
|
|
91
91
|
if (calendarState === CalendarState.TIME) {
|
|
92
92
|
reset();
|
|
93
93
|
} else {
|
|
94
94
|
openTime();
|
|
95
95
|
}
|
|
96
96
|
onToggleTimeDropdown === null || onToggleTimeDropdown === void 0 ? void 0 : onToggleTimeDropdown(calendarState !== CalendarState.TIME);
|
|
97
|
-
}
|
|
98
|
-
var handleCloseDropdown =
|
|
97
|
+
});
|
|
98
|
+
var handleCloseDropdown = useEventCallback(function () {
|
|
99
99
|
return reset();
|
|
100
|
-
}
|
|
100
|
+
});
|
|
101
101
|
var renderDate = shouldRenderDate(format);
|
|
102
102
|
var renderTime = shouldRenderTime(format);
|
|
103
103
|
var renderMonth = shouldRenderMonth(format);
|
|
@@ -105,40 +105,38 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
105
105
|
var onlyShowMonth = renderMonth && !renderDate && !renderTime;
|
|
106
106
|
var showTime = calendarState === CalendarState.TIME || onlyShowTime;
|
|
107
107
|
var showMonth = calendarState === CalendarState.MONTH || onlyShowMonth;
|
|
108
|
-
var inSameThisMonthDate =
|
|
108
|
+
var inSameThisMonthDate = useEventCallback(function (date) {
|
|
109
109
|
return isSameMonth(calendarDate, date);
|
|
110
|
-
}
|
|
110
|
+
});
|
|
111
111
|
var calendarClasses = merge(className, withClassPrefix({
|
|
112
112
|
'time-view': showTime,
|
|
113
113
|
'month-view': showMonth,
|
|
114
114
|
'show-week-numbers': showWeekNumbers
|
|
115
115
|
}));
|
|
116
116
|
var timeDropdownProps = pick(rest, calendarOnlyProps);
|
|
117
|
-
var handleChangeMonth =
|
|
117
|
+
var handleChangeMonth = useEventCallback(function (date, event) {
|
|
118
118
|
reset();
|
|
119
119
|
onChangeMonth === null || onChangeMonth === void 0 ? void 0 : onChangeMonth(date, event);
|
|
120
|
-
}
|
|
121
|
-
var contextValue =
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
};
|
|
141
|
-
}, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, targetId, locale, onChangeTime, onMouseMove, onSelect, cellClassName, renderCell, showWeekNumbers]);
|
|
120
|
+
});
|
|
121
|
+
var contextValue = {
|
|
122
|
+
date: calendarDate,
|
|
123
|
+
dateRange: dateRange,
|
|
124
|
+
disabledDate: isDisabledDate,
|
|
125
|
+
format: format,
|
|
126
|
+
hoverRangeValue: hoverRangeValue,
|
|
127
|
+
inSameMonth: inSameThisMonthDate,
|
|
128
|
+
isoWeek: isoWeek,
|
|
129
|
+
targetId: targetId,
|
|
130
|
+
locale: locale,
|
|
131
|
+
onChangeMonth: handleChangeMonth,
|
|
132
|
+
onChangeTime: onChangeTime,
|
|
133
|
+
onMouseMove: onMouseMove,
|
|
134
|
+
onSelect: onSelect,
|
|
135
|
+
cellClassName: cellClassName,
|
|
136
|
+
renderCell: renderCell,
|
|
137
|
+
showWeekNumbers: showWeekNumbers,
|
|
138
|
+
inline: inline
|
|
139
|
+
};
|
|
142
140
|
return /*#__PURE__*/React.createElement(CalendarProvider, {
|
|
143
141
|
value: contextValue
|
|
144
142
|
}, /*#__PURE__*/React.createElement(Component, _extends({
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -9,11 +9,11 @@ import pick from 'lodash/pick';
|
|
|
9
9
|
import isNil from 'lodash/isNil';
|
|
10
10
|
import isFunction from 'lodash/isFunction';
|
|
11
11
|
import shallowEqual from '../utils/shallowEqual';
|
|
12
|
-
import
|
|
12
|
+
import TreeView from './TreeView';
|
|
13
13
|
import { getParentMap, getPathTowardsItem, findNodeOfTree, flattenTree } from '../utils/treeUtils';
|
|
14
14
|
import { usePaths } from './utils';
|
|
15
15
|
import { getSafeRegExpString, createChainedFunction, mergeRefs, useControlled, useCustom, useClassNames, useIsMounted, useEventCallback } from '../utils';
|
|
16
|
-
import { PickerToggle,
|
|
16
|
+
import { PickerToggle, PickerPopup, SearchBar, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
17
17
|
import { useMap } from '../utils/useMap';
|
|
18
18
|
var emptyArray = [];
|
|
19
19
|
|
|
@@ -349,12 +349,12 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
349
349
|
}, node[labelKey]);
|
|
350
350
|
});
|
|
351
351
|
return /*#__PURE__*/React.createElement("div", {
|
|
352
|
+
role: "treeitem",
|
|
352
353
|
key: key,
|
|
353
354
|
"aria-disabled": disabled,
|
|
354
355
|
"data-key": item[valueKey],
|
|
355
356
|
className: itemClasses,
|
|
356
357
|
tabIndex: -1,
|
|
357
|
-
role: "option",
|
|
358
358
|
onClick: function onClick(event) {
|
|
359
359
|
if (!disabled) {
|
|
360
360
|
handleSearchRowSelect(item, nodes, event);
|
|
@@ -370,12 +370,12 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
370
370
|
return /*#__PURE__*/React.createElement("div", {
|
|
371
371
|
className: prefix('cascader-search-panel'),
|
|
372
372
|
"data-layer": 0,
|
|
373
|
-
role: "
|
|
373
|
+
role: "tree"
|
|
374
374
|
}, items.length ? items.map(renderSearchRow) : /*#__PURE__*/React.createElement("div", {
|
|
375
375
|
className: prefix('none')
|
|
376
376
|
}, locale.noResultsText));
|
|
377
377
|
};
|
|
378
|
-
var
|
|
378
|
+
var renderTreeView = function renderTreeView(positionProps, speakerRef) {
|
|
379
379
|
var _ref2 = positionProps || {},
|
|
380
380
|
left = _ref2.left,
|
|
381
381
|
top = _ref2.top,
|
|
@@ -387,7 +387,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
387
387
|
var classes = merge(className, menuClassName, prefix('cascader-menu', {
|
|
388
388
|
inline: inline
|
|
389
389
|
}));
|
|
390
|
-
return /*#__PURE__*/React.createElement(
|
|
390
|
+
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
391
391
|
ref: mergeRefs(overlay, speakerRef),
|
|
392
392
|
className: classes,
|
|
393
393
|
style: styles,
|
|
@@ -398,8 +398,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
398
398
|
onChange: handleSearch,
|
|
399
399
|
value: searchKeyword,
|
|
400
400
|
inputRef: searchInput
|
|
401
|
-
}), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/React.createElement(
|
|
402
|
-
id: id ? id + "-listbox" : undefined,
|
|
401
|
+
}), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/React.createElement(TreeView, {
|
|
403
402
|
menuWidth: menuWidth,
|
|
404
403
|
menuHeight: menuHeight,
|
|
405
404
|
disabledItemValues: disabledItemValues,
|
|
@@ -452,21 +451,22 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
452
451
|
usedClassNamePropKeys = _usePickerClassName[1]; // TODO: bad api design
|
|
453
452
|
// consider an isolated Menu component
|
|
454
453
|
if (inline) {
|
|
455
|
-
return
|
|
454
|
+
return renderTreeView();
|
|
456
455
|
}
|
|
457
456
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
457
|
+
id: id,
|
|
458
|
+
popupType: "tree",
|
|
458
459
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
459
460
|
ref: trigger,
|
|
460
461
|
placement: placement,
|
|
461
462
|
onEntered: createChainedFunction(handleEntered, onEnter),
|
|
462
463
|
onExited: createChainedFunction(handleExited, onExited),
|
|
463
|
-
speaker:
|
|
464
|
+
speaker: renderTreeView
|
|
464
465
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
465
466
|
className: classes,
|
|
466
467
|
style: style,
|
|
467
468
|
ref: root
|
|
468
469
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
469
|
-
id: id,
|
|
470
470
|
ref: target,
|
|
471
471
|
as: toggleAs,
|
|
472
472
|
appearance: appearance,
|
|
@@ -477,7 +477,8 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
477
477
|
hasValue: hasValue,
|
|
478
478
|
active: active,
|
|
479
479
|
placement: placement,
|
|
480
|
-
inputValue: value !== null && value !== void 0 ? value : ''
|
|
480
|
+
inputValue: value !== null && value !== void 0 ? value : '',
|
|
481
|
+
focusItemValue: focusItemValue
|
|
481
482
|
}), selectedElement || (locale === null || locale === void 0 ? void 0 : locale.placeholder))));
|
|
482
483
|
});
|
|
483
484
|
Cascader.displayName = 'Cascader';
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
4
3
|
import { ValueType } from './Cascader';
|
|
5
4
|
declare type SetLike<T = unknown> = {
|
|
6
5
|
has(value: T): boolean;
|
|
7
6
|
};
|
|
8
|
-
export interface
|
|
7
|
+
export interface TreeViewProps extends Omit<WithAsProps, 'classPrefix'> {
|
|
9
8
|
classPrefix: string;
|
|
10
9
|
disabledItemValues: ValueType[];
|
|
11
10
|
activeItemValue?: ValueType | null;
|
|
@@ -21,21 +20,5 @@ export interface DropdownMenuProps extends Omit<WithAsProps, 'classPrefix'> {
|
|
|
21
20
|
renderMenu?: (items: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
|
|
22
21
|
onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], isLeafNode: boolean, event: React.MouseEvent) => void;
|
|
23
22
|
}
|
|
24
|
-
declare const
|
|
25
|
-
export
|
|
26
|
-
classPrefix: PropTypes.Requireable<string>;
|
|
27
|
-
disabledItemValues: PropTypes.Requireable<any[]>;
|
|
28
|
-
activeItemValue: PropTypes.Requireable<any>;
|
|
29
|
-
childrenKey: PropTypes.Requireable<string>;
|
|
30
|
-
valueKey: PropTypes.Requireable<string>;
|
|
31
|
-
labelKey: PropTypes.Requireable<string>;
|
|
32
|
-
menuWidth: PropTypes.Requireable<number>;
|
|
33
|
-
menuHeight: PropTypes.Requireable<string | number>;
|
|
34
|
-
className: PropTypes.Requireable<string>;
|
|
35
|
-
renderMenuItem: PropTypes.Requireable<(...args: any[]) => any>;
|
|
36
|
-
renderMenu: PropTypes.Requireable<(...args: any[]) => any>;
|
|
37
|
-
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
|
|
38
|
-
cascadeData: PropTypes.Requireable<any[]>;
|
|
39
|
-
cascadePaths: PropTypes.Requireable<any[]>;
|
|
40
|
-
};
|
|
41
|
-
export default DropdownMenu;
|
|
23
|
+
declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
|
|
24
|
+
export default TreeView;
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
import React, {
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
4
|
+
import React, { useEffect, useRef } from 'react';
|
|
6
5
|
import SpinnerIcon from '@rsuite/icons/legacy/Spinner';
|
|
7
6
|
import isUndefined from 'lodash/isUndefined';
|
|
8
7
|
import isNil from 'lodash/isNil';
|
|
9
|
-
import { shallowEqual, useClassNames, mergeRefs, useCustom } from '../utils';
|
|
10
|
-
import {
|
|
8
|
+
import { shallowEqual, useClassNames, mergeRefs, useCustom, useEventCallback } from '../utils';
|
|
9
|
+
import { ListItem, useCombobox } from '../Picker';
|
|
11
10
|
import AngleLeftIcon from '@rsuite/icons/legacy/AngleLeft';
|
|
12
11
|
import AngleRightIcon from '@rsuite/icons/legacy/AngleRight';
|
|
13
12
|
import getPosition from 'dom-lib/getPosition';
|
|
14
13
|
import scrollTop from 'dom-lib/scrollTop';
|
|
15
14
|
var emptyArray = [];
|
|
16
|
-
var
|
|
15
|
+
var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
17
16
|
var _props$as = props.as,
|
|
18
17
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
19
18
|
activeItemValue = props.activeItemValue,
|
|
@@ -36,17 +35,22 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
36
35
|
loadingItemsSet = props.loadingItemsSet,
|
|
37
36
|
_props$labelKey = props.labelKey,
|
|
38
37
|
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
38
|
+
style = props.style,
|
|
39
39
|
renderMenu = props.renderMenu,
|
|
40
40
|
renderMenuItem = props.renderMenuItem,
|
|
41
41
|
onSelect = props.onSelect,
|
|
42
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "menuWidth", "menuHeight", "valueKey", "cascadeData", "cascadePaths", "loadingItemsSet", "labelKey", "renderMenu", "renderMenuItem", "onSelect"]);
|
|
42
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "menuWidth", "menuHeight", "valueKey", "cascadeData", "cascadePaths", "loadingItemsSet", "labelKey", "style", "renderMenu", "renderMenuItem", "onSelect"]);
|
|
43
43
|
var _useClassNames = useClassNames(classPrefix),
|
|
44
44
|
merge = _useClassNames.merge,
|
|
45
45
|
prefix = _useClassNames.prefix;
|
|
46
46
|
var classes = merge(className, prefix('items'));
|
|
47
47
|
var rootRef = useRef();
|
|
48
|
-
var _useCustom = useCustom(
|
|
48
|
+
var _useCustom = useCustom(),
|
|
49
49
|
rtl = _useCustom.rtl;
|
|
50
|
+
var _useCombobox = useCombobox(),
|
|
51
|
+
id = _useCombobox.id,
|
|
52
|
+
labelId = _useCombobox.labelId,
|
|
53
|
+
popupType = _useCombobox.popupType;
|
|
50
54
|
useEffect(function () {
|
|
51
55
|
var _rootRef$current;
|
|
52
56
|
var columns = ((_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.querySelectorAll('[data-type="column"]')) || [];
|
|
@@ -65,7 +69,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
65
69
|
}
|
|
66
70
|
});
|
|
67
71
|
}, [prefix]);
|
|
68
|
-
var getCascadePaths =
|
|
72
|
+
var getCascadePaths = function getCascadePaths(layer, node) {
|
|
69
73
|
var paths = [];
|
|
70
74
|
for (var i = 0; i < cascadeData.length && i < layer; i += 1) {
|
|
71
75
|
if (i < layer - 1 && cascadePaths) {
|
|
@@ -74,14 +78,19 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
74
78
|
}
|
|
75
79
|
paths.push(node);
|
|
76
80
|
return paths;
|
|
77
|
-
}
|
|
78
|
-
var handleSelect = function
|
|
81
|
+
};
|
|
82
|
+
var handleSelect = useEventCallback(function (layer, node, event) {
|
|
79
83
|
var isLeafNode = isNil(node[childrenKey]);
|
|
80
84
|
var cascadePaths = getCascadePaths(layer + 1, node);
|
|
81
85
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, isLeafNode, event);
|
|
82
|
-
};
|
|
83
|
-
var renderCascadeNode = function renderCascadeNode(
|
|
86
|
+
});
|
|
87
|
+
var renderCascadeNode = function renderCascadeNode(nodeProps) {
|
|
84
88
|
var _loadingItemsSet$has;
|
|
89
|
+
var node = nodeProps.node,
|
|
90
|
+
index = nodeProps.index,
|
|
91
|
+
layer = nodeProps.layer,
|
|
92
|
+
focus = nodeProps.focus,
|
|
93
|
+
size = nodeProps.size;
|
|
85
94
|
var children = node[childrenKey];
|
|
86
95
|
var value = node[valueKey];
|
|
87
96
|
var label = node[labelKey];
|
|
@@ -93,16 +102,19 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
93
102
|
// Use `value` in keys when If `value` is string or number
|
|
94
103
|
var onlyKey = typeof value === 'number' || typeof value === 'string' ? value : index;
|
|
95
104
|
var Icon = loading ? SpinnerIcon : rtl ? AngleLeftIcon : AngleRightIcon;
|
|
96
|
-
return /*#__PURE__*/React.createElement(
|
|
97
|
-
classPrefix: "picker-cascader-menu-item",
|
|
105
|
+
return /*#__PURE__*/React.createElement(ListItem, {
|
|
98
106
|
as: 'li',
|
|
99
107
|
role: "treeitem",
|
|
108
|
+
"aria-level": layer + 1,
|
|
109
|
+
"aria-setsize": size,
|
|
110
|
+
"aria-posinset": index + 1,
|
|
111
|
+
"aria-label": typeof label === 'string' ? label : undefined,
|
|
112
|
+
classPrefix: "picker-cascader-menu-item",
|
|
100
113
|
key: layer + "-" + onlyKey,
|
|
101
114
|
disabled: disabled,
|
|
102
115
|
active: !isUndefined(activeItemValue) && shallowEqual(activeItemValue, value),
|
|
103
116
|
focus: focus,
|
|
104
117
|
value: value,
|
|
105
|
-
"aria-owns": node.children ? 'treeitem-' + value + '-children' : undefined,
|
|
106
118
|
className: children ? prefix('has-children') : undefined,
|
|
107
119
|
onSelect: function onSelect(_value, event) {
|
|
108
120
|
return handleSelect(layer, node, event);
|
|
@@ -112,54 +124,43 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
112
124
|
spin: loading
|
|
113
125
|
}) : null);
|
|
114
126
|
};
|
|
115
|
-
var styles = {
|
|
116
|
-
width: cascadeData.length * menuWidth
|
|
117
|
-
};
|
|
118
127
|
var cascadeNodes = cascadeData.map(function (children, layer) {
|
|
119
128
|
var onlyKey = layer + "_" + children.length;
|
|
120
129
|
var parentNode = cascadePaths[layer - 1];
|
|
121
|
-
var menu = /*#__PURE__*/React.createElement(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
130
|
+
var menu = /*#__PURE__*/React.createElement(React.Fragment, null, children.map(function (item, index) {
|
|
131
|
+
var focus = cascadePaths[layer] && shallowEqual(cascadePaths[layer][valueKey], item[valueKey]);
|
|
132
|
+
return renderCascadeNode({
|
|
133
|
+
node: item,
|
|
134
|
+
index: index,
|
|
135
|
+
layer: layer,
|
|
136
|
+
focus: focus,
|
|
137
|
+
size: children.length
|
|
138
|
+
});
|
|
126
139
|
}));
|
|
127
|
-
return /*#__PURE__*/React.createElement("
|
|
128
|
-
|
|
129
|
-
className: prefix('column'),
|
|
140
|
+
return /*#__PURE__*/React.createElement("ul", {
|
|
141
|
+
role: "group",
|
|
130
142
|
"data-layer": layer,
|
|
131
143
|
"data-type": 'column',
|
|
144
|
+
key: onlyKey,
|
|
145
|
+
className: prefix('column'),
|
|
132
146
|
style: {
|
|
133
147
|
height: menuHeight,
|
|
134
148
|
width: menuWidth
|
|
135
149
|
}
|
|
136
150
|
}, renderMenu ? renderMenu(children, menu, parentNode, layer) : menu);
|
|
137
151
|
});
|
|
152
|
+
var styles = _extends({}, style, {
|
|
153
|
+
width: cascadeData.length * menuWidth
|
|
154
|
+
});
|
|
138
155
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
139
|
-
role: "tree"
|
|
156
|
+
role: "tree",
|
|
157
|
+
id: id + "-" + popupType,
|
|
158
|
+
"aria-labelledby": labelId
|
|
140
159
|
}, rest, {
|
|
141
160
|
ref: mergeRefs(rootRef, ref),
|
|
142
|
-
className: classes
|
|
143
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
161
|
+
className: classes,
|
|
144
162
|
style: styles
|
|
145
|
-
}, cascadeNodes)
|
|
163
|
+
}), cascadeNodes);
|
|
146
164
|
});
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
disabledItemValues: PropTypes.array,
|
|
150
|
-
activeItemValue: PropTypes.any,
|
|
151
|
-
childrenKey: PropTypes.string,
|
|
152
|
-
valueKey: PropTypes.string,
|
|
153
|
-
labelKey: PropTypes.string,
|
|
154
|
-
menuWidth: PropTypes.number,
|
|
155
|
-
menuHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
156
|
-
className: PropTypes.string,
|
|
157
|
-
renderMenuItem: PropTypes.func,
|
|
158
|
-
renderMenu: PropTypes.func,
|
|
159
|
-
onSelect: PropTypes.func,
|
|
160
|
-
cascadeData: PropTypes.array,
|
|
161
|
-
cascadePaths: PropTypes.array
|
|
162
|
-
};
|
|
163
|
-
DropdownMenu.displayName = 'DropdownMenu';
|
|
164
|
-
DropdownMenu.propTypes = dropdownMenuPropTypes;
|
|
165
|
-
export default DropdownMenu;
|
|
165
|
+
TreeView.displayName = 'TreeView';
|
|
166
|
+
export default TreeView;
|
|
@@ -0,0 +1,24 @@
|
|
|
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;
|