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
|
@@ -1,10 +1,8 @@
|
|
|
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 _get from "lodash/get";
|
|
5
4
|
var _this = this;
|
|
6
|
-
import React, { useRef, useState, useEffect
|
|
7
|
-
import PropTypes from 'prop-types';
|
|
5
|
+
import React, { useRef, useState, useEffect } from 'react';
|
|
8
6
|
import isUndefined from 'lodash/isUndefined';
|
|
9
7
|
import isString from 'lodash/isString';
|
|
10
8
|
import isNumber from 'lodash/isNumber';
|
|
@@ -13,13 +11,15 @@ import pickBy from 'lodash/pickBy';
|
|
|
13
11
|
import getPosition from 'dom-lib/getPosition';
|
|
14
12
|
import scrollTop from 'dom-lib/scrollTop';
|
|
15
13
|
import getHeight from 'dom-lib/getHeight';
|
|
14
|
+
import get from 'lodash/get';
|
|
16
15
|
import classNames from 'classnames';
|
|
17
16
|
import { List, AutoSizer, VariableSizeList } from '../Windowing';
|
|
18
17
|
import shallowEqual from '../utils/shallowEqual';
|
|
19
|
-
import { mergeRefs, useClassNames, useMount } from '../utils';
|
|
20
|
-
import
|
|
18
|
+
import { mergeRefs, useClassNames, useMount, useEventCallback } from '../utils';
|
|
19
|
+
import ListItemGroup from './ListItemGroup';
|
|
21
20
|
import { KEY_GROUP, KEY_GROUP_TITLE } from '../utils/getDataGroupBy';
|
|
22
|
-
|
|
21
|
+
import useCombobox from './hooks/useCombobox';
|
|
22
|
+
var Listbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
23
23
|
var _props$data = props.data,
|
|
24
24
|
data = _props$data === void 0 ? [] : _props$data,
|
|
25
25
|
group = props.group,
|
|
@@ -42,9 +42,9 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
42
42
|
className = props.className,
|
|
43
43
|
style = props.style,
|
|
44
44
|
focusItemValue = props.focusItemValue,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
listItemClassPrefix = props.listItemClassPrefix,
|
|
46
|
+
ListItem = props.listItemAs,
|
|
47
|
+
listItemProps = props.listItemProps,
|
|
48
48
|
_props$rowHeight = props.rowHeight,
|
|
49
49
|
rowHeight = _props$rowHeight === void 0 ? 36 : _props$rowHeight,
|
|
50
50
|
_props$rowGroupHeight = props.rowGroupHeight,
|
|
@@ -53,7 +53,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
53
53
|
renderMenuItem = props.renderMenuItem,
|
|
54
54
|
onGroupTitleClick = props.onGroupTitleClick,
|
|
55
55
|
onSelect = props.onSelect,
|
|
56
|
-
rest = _objectWithoutPropertiesLoose(props, ["data", "group", "groupBy", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "
|
|
56
|
+
rest = _objectWithoutPropertiesLoose(props, ["data", "group", "groupBy", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "listItemClassPrefix", "listItemAs", "listItemProps", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
57
57
|
var _useClassNames = useClassNames(classPrefix),
|
|
58
58
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
59
59
|
prefix = _useClassNames.prefix,
|
|
@@ -61,12 +61,17 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
61
61
|
var classes = merge(className, withClassPrefix('items', {
|
|
62
62
|
grouped: group
|
|
63
63
|
}));
|
|
64
|
+
var _useCombobox = useCombobox(),
|
|
65
|
+
id = _useCombobox.id,
|
|
66
|
+
labelId = _useCombobox.labelId,
|
|
67
|
+
popupType = _useCombobox.popupType,
|
|
68
|
+
multiple = _useCombobox.multiple;
|
|
64
69
|
var menuBodyContainerRef = useRef(null);
|
|
65
70
|
var listRef = useRef(null);
|
|
66
71
|
var _useState = useState([]),
|
|
67
72
|
foldedGroupKeys = _useState[0],
|
|
68
73
|
setFoldedGroupKeys = _useState[1];
|
|
69
|
-
var handleGroupTitleClick =
|
|
74
|
+
var handleGroupTitleClick = useEventCallback(function (key, event) {
|
|
70
75
|
var nextGroupKeys = foldedGroupKeys.filter(function (item) {
|
|
71
76
|
return item !== key;
|
|
72
77
|
});
|
|
@@ -75,10 +80,10 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
75
80
|
}
|
|
76
81
|
setFoldedGroupKeys(nextGroupKeys);
|
|
77
82
|
onGroupTitleClick === null || onGroupTitleClick === void 0 ? void 0 : onGroupTitleClick(event);
|
|
78
|
-
}
|
|
79
|
-
var handleSelect =
|
|
83
|
+
});
|
|
84
|
+
var handleSelect = useEventCallback(function (item, value, event, checked) {
|
|
80
85
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(value, item, event, checked);
|
|
81
|
-
}
|
|
86
|
+
});
|
|
82
87
|
var getRowHeight = function getRowHeight(list, index) {
|
|
83
88
|
var item = list[index];
|
|
84
89
|
if (group && item[KEY_GROUP] && index !== 0) {
|
|
@@ -107,6 +112,24 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
107
112
|
scrollTop(container, Math.max(0, position.top - sHeight + 32));
|
|
108
113
|
}
|
|
109
114
|
}, [focusItemValue, menuBodyContainerRef, prefix]);
|
|
115
|
+
var filteredItems = group ? data.filter(function (item) {
|
|
116
|
+
var _item$parent;
|
|
117
|
+
// Display group title items
|
|
118
|
+
if (item[KEY_GROUP]) return true;
|
|
119
|
+
|
|
120
|
+
// Display items under the unfolded group
|
|
121
|
+
// FIXME-Doma
|
|
122
|
+
// `groupBy` is bound to be string when `group` is true
|
|
123
|
+
// because `group` is actually redundant as a prop
|
|
124
|
+
// It could simply be derived from `groupBy` value
|
|
125
|
+
var groupValue = get(item, groupBy, '') || ( // FIXME-Doma
|
|
126
|
+
// Usage of `item.parent` is strongly discouraged
|
|
127
|
+
// It's only here for legacy support
|
|
128
|
+
// Remove once `item.parent` is completely removed across related components
|
|
129
|
+
(_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent[KEY_GROUP_TITLE]);
|
|
130
|
+
return !foldedGroupKeys.includes(groupValue);
|
|
131
|
+
}) : data;
|
|
132
|
+
var rowCount = filteredItems.length;
|
|
110
133
|
var renderItem = function renderItem(_ref) {
|
|
111
134
|
var _ref$index = _ref.index,
|
|
112
135
|
index = _ref$index === void 0 ? 0 : _ref$index,
|
|
@@ -124,13 +147,13 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
124
147
|
var itemKey = isString(value) || isNumber(value) ? value : index;
|
|
125
148
|
|
|
126
149
|
/**
|
|
127
|
-
* Render <
|
|
150
|
+
* Render <ListboxGroup>
|
|
128
151
|
* when if `group` is enabled
|
|
129
152
|
*/
|
|
130
153
|
if (group && item[KEY_GROUP]) {
|
|
131
154
|
var groupValue = item[KEY_GROUP_TITLE];
|
|
132
155
|
// TODO: grouped options should be owned by group
|
|
133
|
-
return /*#__PURE__*/React.createElement(
|
|
156
|
+
return /*#__PURE__*/React.createElement(ListItemGroup, {
|
|
134
157
|
style: style,
|
|
135
158
|
classPrefix: 'picker-menu-group',
|
|
136
159
|
className: classNames({
|
|
@@ -151,37 +174,21 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
151
174
|
return shallowEqual(v, value);
|
|
152
175
|
});
|
|
153
176
|
var focus = !isUndefined(focusItemValue) && shallowEqual(focusItemValue, value);
|
|
154
|
-
return /*#__PURE__*/React.createElement(
|
|
177
|
+
return /*#__PURE__*/React.createElement(ListItem, _extends({
|
|
178
|
+
"aria-posinset": index + 1,
|
|
179
|
+
"aria-setsize": rowCount,
|
|
155
180
|
style: style,
|
|
156
181
|
key: itemKey,
|
|
157
182
|
disabled: disabled,
|
|
158
183
|
active: active,
|
|
159
184
|
focus: focus,
|
|
160
185
|
value: value,
|
|
161
|
-
classPrefix:
|
|
186
|
+
classPrefix: listItemClassPrefix,
|
|
162
187
|
onSelect: handleSelect.bind(null, item)
|
|
163
|
-
}, pickBy(
|
|
188
|
+
}, pickBy(listItemProps, function (v) {
|
|
164
189
|
return v !== undefined;
|
|
165
190
|
})), renderMenuItem ? renderMenuItem(label, item) : label);
|
|
166
191
|
};
|
|
167
|
-
var filteredItems = group ? data.filter(function (item) {
|
|
168
|
-
var _item$parent;
|
|
169
|
-
// Display group title items
|
|
170
|
-
if (item[KEY_GROUP]) return true;
|
|
171
|
-
|
|
172
|
-
// Display items under the unfolded group
|
|
173
|
-
// FIXME-Doma
|
|
174
|
-
// `groupBy` is bound to be string when `group` is true
|
|
175
|
-
// because `group` is actually redundant as a prop
|
|
176
|
-
// It could simply be derived from `groupBy` value
|
|
177
|
-
var groupValue = _get(item, groupBy, '') || ( // FIXME-Doma
|
|
178
|
-
// Usage of `item.parent` is strongly discouraged
|
|
179
|
-
// It's only here for legacy support
|
|
180
|
-
// Remove once `item.parent` is completely removed across related components
|
|
181
|
-
(_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent[KEY_GROUP_TITLE]);
|
|
182
|
-
return !foldedGroupKeys.includes(groupValue);
|
|
183
|
-
}) : data;
|
|
184
|
-
var rowCount = filteredItems.length;
|
|
185
192
|
useMount(function () {
|
|
186
193
|
var _listRef$current, _listRef$current$scro;
|
|
187
194
|
var itemIndex = findIndex(filteredItems, function (item) {
|
|
@@ -190,7 +197,10 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
190
197
|
(_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : (_listRef$current$scro = _listRef$current.scrollToItem) === null || _listRef$current$scro === void 0 ? void 0 : _listRef$current$scro.call(_listRef$current, itemIndex);
|
|
191
198
|
});
|
|
192
199
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
193
|
-
role: "listbox"
|
|
200
|
+
role: "listbox",
|
|
201
|
+
id: id + "-" + popupType,
|
|
202
|
+
"aria-labelledby": labelId,
|
|
203
|
+
"aria-multiselectable": multiple
|
|
194
204
|
}, rest, {
|
|
195
205
|
className: classes,
|
|
196
206
|
ref: mergeRefs(menuBodyContainerRef, ref),
|
|
@@ -220,29 +230,5 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
220
230
|
});
|
|
221
231
|
}));
|
|
222
232
|
});
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
className: PropTypes.string,
|
|
226
|
-
dropdownMenuItemAs: PropTypes.elementType.isRequired,
|
|
227
|
-
dropdownMenuItemClassPrefix: PropTypes.string,
|
|
228
|
-
data: PropTypes.array,
|
|
229
|
-
group: PropTypes.bool,
|
|
230
|
-
disabledItemValues: PropTypes.array,
|
|
231
|
-
activeItemValues: PropTypes.array,
|
|
232
|
-
focusItemValue: PropTypes.any,
|
|
233
|
-
maxHeight: PropTypes.number,
|
|
234
|
-
valueKey: PropTypes.string,
|
|
235
|
-
labelKey: PropTypes.string,
|
|
236
|
-
style: PropTypes.object,
|
|
237
|
-
renderMenuItem: PropTypes.func,
|
|
238
|
-
renderMenuGroup: PropTypes.func,
|
|
239
|
-
onSelect: PropTypes.func,
|
|
240
|
-
onGroupTitleClick: PropTypes.func,
|
|
241
|
-
virtualized: PropTypes.bool,
|
|
242
|
-
listProps: PropTypes.any,
|
|
243
|
-
rowHeight: PropTypes.number,
|
|
244
|
-
rowGroupHeight: PropTypes.number
|
|
245
|
-
};
|
|
246
|
-
DropdownMenu.displayName = 'DropdownMenu';
|
|
247
|
-
DropdownMenu.propTypes = dropdownMenuPropTypes;
|
|
248
|
-
export default DropdownMenu;
|
|
233
|
+
Listbox.displayName = 'Listbox';
|
|
234
|
+
export default Listbox;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
3
|
import { OverlayTriggerHandle } from '../Picker';
|
|
4
|
-
export interface
|
|
4
|
+
export interface PickerPopupProps extends WithAsProps {
|
|
5
5
|
placement?: string;
|
|
6
6
|
autoWidth?: boolean;
|
|
7
7
|
children?: React.ReactNode;
|
|
8
8
|
target?: React.RefObject<OverlayTriggerHandle>;
|
|
9
9
|
onKeyDown?: (event: React.KeyboardEvent) => void;
|
|
10
10
|
}
|
|
11
|
-
declare const
|
|
12
|
-
export default
|
|
11
|
+
declare const PickerPopup: RsRefForwardingComponent<'div', PickerPopupProps>;
|
|
12
|
+
export default PickerPopup;
|
|
@@ -5,14 +5,14 @@ import React, { useRef, useCallback, useEffect } from 'react';
|
|
|
5
5
|
import omit from 'lodash/omit';
|
|
6
6
|
import addStyle from 'dom-lib/addStyle';
|
|
7
7
|
import getWidth from 'dom-lib/getWidth';
|
|
8
|
-
import { getDOMNode, mergeRefs, useElementResize, useClassNames } from '../utils';
|
|
8
|
+
import { getDOMNode, mergeRefs, useElementResize, useClassNames, useEventCallback } from '../utils';
|
|
9
9
|
var omitProps = ['placement', 'arrowOffsetLeft', 'arrowOffsetTop', 'positionLeft', 'positionTop', 'getPositionInstance', 'getToggleInstance', 'autoWidth'];
|
|
10
10
|
var resizePlacement = ['topStart', 'topEnd', 'leftEnd', 'rightEnd', 'auto', 'autoVerticalStart', 'autoVerticalEnd', 'autoHorizontalEnd'];
|
|
11
|
-
var
|
|
11
|
+
var PickerPopup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
12
12
|
var _props$as = props.as,
|
|
13
13
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
14
14
|
_props$classPrefix = props.classPrefix,
|
|
15
|
-
classPrefix = _props$classPrefix === void 0 ? 'picker-
|
|
15
|
+
classPrefix = _props$classPrefix === void 0 ? 'picker-popup' : _props$classPrefix,
|
|
16
16
|
autoWidth = props.autoWidth,
|
|
17
17
|
className = props.className,
|
|
18
18
|
_props$placement = props.placement,
|
|
@@ -20,12 +20,12 @@ var PickerOverlay = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
20
20
|
target = props.target,
|
|
21
21
|
rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "autoWidth", "className", "placement", "target"]);
|
|
22
22
|
var overlayRef = useRef(null);
|
|
23
|
-
var handleResize =
|
|
23
|
+
var handleResize = useEventCallback(function () {
|
|
24
24
|
var instance = target === null || target === void 0 ? void 0 : target.current;
|
|
25
25
|
if (instance && resizePlacement.includes(placement)) {
|
|
26
26
|
instance.updatePosition();
|
|
27
27
|
}
|
|
28
|
-
}
|
|
28
|
+
});
|
|
29
29
|
useElementResize(useCallback(function () {
|
|
30
30
|
return overlayRef.current;
|
|
31
31
|
}, []), handleResize);
|
|
@@ -44,10 +44,12 @@ var PickerOverlay = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
44
44
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
45
45
|
merge = _useClassNames.merge;
|
|
46
46
|
var classes = merge(className, withClassPrefix());
|
|
47
|
-
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
47
|
+
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
48
|
+
"data-testid": "picker-popup"
|
|
49
|
+
}, omit(rest, omitProps), {
|
|
48
50
|
ref: mergeRefs(overlayRef, ref),
|
|
49
51
|
className: classes
|
|
50
52
|
}));
|
|
51
53
|
});
|
|
52
|
-
|
|
53
|
-
export default
|
|
54
|
+
PickerPopup.displayName = 'PickerPopup';
|
|
55
|
+
export default PickerPopup;
|
|
@@ -28,8 +28,8 @@ export interface PickerToggleProps extends ToggleButtonProps {
|
|
|
28
28
|
loading?: boolean;
|
|
29
29
|
label?: React.ReactNode;
|
|
30
30
|
name?: string;
|
|
31
|
-
id?: string;
|
|
32
31
|
inputValue?: ValueType | ValueType[];
|
|
32
|
+
focusItemValue?: ValueType | null;
|
|
33
33
|
onClean?: (event: React.MouseEvent) => void;
|
|
34
34
|
}
|
|
35
35
|
declare const PickerToggle: RsRefForwardingComponent<typeof ToggleButton, PickerToggleProps>;
|
|
@@ -11,6 +11,7 @@ import useToggleCaret from '../utils/useToggleCaret';
|
|
|
11
11
|
import Stack from '../Stack';
|
|
12
12
|
import PickerIndicator from './PickerIndicator';
|
|
13
13
|
import PickerLabel from './PickerLabel';
|
|
14
|
+
import useCombobox from './hooks/useCombobox';
|
|
14
15
|
var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
15
16
|
var active = props.active,
|
|
16
17
|
_props$as = props.as,
|
|
@@ -30,8 +31,8 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
30
31
|
cleanable = props.cleanable,
|
|
31
32
|
_props$tabIndex = props.tabIndex,
|
|
32
33
|
tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,
|
|
33
|
-
id = props.id,
|
|
34
34
|
inputValueProp = props.inputValue,
|
|
35
|
+
focusItemValue = props.focusItemValue,
|
|
35
36
|
onClean = props.onClean,
|
|
36
37
|
_props$placement = props.placement,
|
|
37
38
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
@@ -40,12 +41,16 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
40
41
|
caretAs = _props$caretAs === void 0 ? caretComponent : _props$caretAs,
|
|
41
42
|
label = props.label,
|
|
42
43
|
name = props.name,
|
|
43
|
-
rest = _objectWithoutPropertiesLoose(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "loading", "cleanable", "tabIndex", "
|
|
44
|
+
rest = _objectWithoutPropertiesLoose(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "loading", "cleanable", "tabIndex", "inputValue", "focusItemValue", "onClean", "placement", "caretComponent", "caretAs", "label", "name"]);
|
|
44
45
|
var combobox = useRef(null);
|
|
45
46
|
var _useClassNames = useClassNames(classPrefix),
|
|
46
47
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
47
48
|
merge = _useClassNames.merge,
|
|
48
49
|
prefix = _useClassNames.prefix;
|
|
50
|
+
var _useCombobox = useCombobox(),
|
|
51
|
+
id = _useCombobox.id,
|
|
52
|
+
labelId = _useCombobox.labelId,
|
|
53
|
+
popupType = _useCombobox.popupType;
|
|
49
54
|
var inputValue = useMemo(function () {
|
|
50
55
|
if (typeof inputValueProp === 'number' || typeof inputValueProp === 'string') {
|
|
51
56
|
return inputValueProp;
|
|
@@ -74,10 +79,14 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
74
79
|
var showCleanButton = cleanable && hasValue && !readOnly;
|
|
75
80
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
76
81
|
role: "combobox",
|
|
77
|
-
|
|
82
|
+
id: id,
|
|
83
|
+
"aria-haspopup": popupType,
|
|
78
84
|
"aria-expanded": active,
|
|
79
85
|
"aria-disabled": disabled,
|
|
80
|
-
"aria-
|
|
86
|
+
"aria-controls": id + "-" + popupType,
|
|
87
|
+
"aria-labelledby": labelId,
|
|
88
|
+
"aria-describedby": id + "-describe",
|
|
89
|
+
"aria-activedescendant": active && focusItemValue ? id + "-opt-" + focusItemValue : undefined
|
|
81
90
|
}, rest, {
|
|
82
91
|
ref: mergeRefs(combobox, ref),
|
|
83
92
|
disabled: disabled,
|
|
@@ -86,7 +95,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
86
95
|
}), /*#__PURE__*/React.createElement(Stack, null, label && /*#__PURE__*/React.createElement(Stack.Item, null, /*#__PURE__*/React.createElement(PickerLabel, {
|
|
87
96
|
as: "span",
|
|
88
97
|
className: prefix('label'),
|
|
89
|
-
id:
|
|
98
|
+
id: labelId
|
|
90
99
|
}, label)), /*#__PURE__*/React.createElement(Stack.Item, {
|
|
91
100
|
grow: 1,
|
|
92
101
|
style: {
|
|
@@ -95,20 +104,18 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
95
104
|
}, /*#__PURE__*/React.createElement("input", {
|
|
96
105
|
readOnly: true,
|
|
97
106
|
"aria-hidden": true,
|
|
98
|
-
"aria-controls": id ? id + "-listbox" : undefined,
|
|
99
|
-
"aria-labelledby": label ? id + "-label" : undefined,
|
|
100
107
|
tabIndex: -1,
|
|
101
108
|
"data-testid": "picker-toggle-input",
|
|
102
109
|
name: name,
|
|
103
110
|
value: inputValue,
|
|
104
|
-
id: id,
|
|
105
111
|
className: prefix('textbox', 'read-only'),
|
|
106
112
|
style: {
|
|
107
113
|
pointerEvents: 'none'
|
|
108
114
|
}
|
|
109
115
|
}), children ? /*#__PURE__*/React.createElement("span", {
|
|
110
116
|
className: prefix(hasValue ? 'value' : 'placeholder'),
|
|
111
|
-
|
|
117
|
+
id: id + "-describe",
|
|
118
|
+
"data-testid": "picker-describe"
|
|
112
119
|
}, children) : null), /*#__PURE__*/React.createElement(Stack.Item, {
|
|
113
120
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["indicator"])))
|
|
114
121
|
}, /*#__PURE__*/React.createElement(PickerIndicator, {
|
|
@@ -4,6 +4,14 @@ import { PositionChildProps } from '../Overlay/Position';
|
|
|
4
4
|
import { TypeAttributes, AnimationEventProps } from '../@types/common';
|
|
5
5
|
export type { OverlayTriggerHandle, PositionChildProps };
|
|
6
6
|
export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker' | 'onClose'> {
|
|
7
|
+
id?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Identifies the combobox has having a popout, and indicates the type.
|
|
10
|
+
*
|
|
11
|
+
* @see MDN https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup
|
|
12
|
+
*/
|
|
13
|
+
popupType?: 'listbox' | 'tree' | 'grid' | 'dialog' | 'menu';
|
|
14
|
+
multiple?: boolean;
|
|
7
15
|
placement?: TypeAttributes.Placement;
|
|
8
16
|
pickerProps: any;
|
|
9
17
|
open?: boolean;
|
|
@@ -12,5 +20,12 @@ export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onE
|
|
|
12
20
|
}
|
|
13
21
|
export declare const omitTriggerPropKeys: string[];
|
|
14
22
|
export declare const pickTriggerPropKeys: string[];
|
|
23
|
+
export interface ComboboxContextProps {
|
|
24
|
+
id?: string;
|
|
25
|
+
multiple?: boolean;
|
|
26
|
+
hasLabel?: boolean;
|
|
27
|
+
popupType?: 'listbox' | 'tree' | 'grid' | 'dialog' | 'menu';
|
|
28
|
+
}
|
|
29
|
+
export declare const ComboboxContextContext: React.Context<ComboboxContextProps>;
|
|
15
30
|
declare const PickerToggleTrigger: React.ForwardRefExoticComponent<PickerToggleTriggerProps & React.RefAttributes<any>>;
|
|
16
31
|
export default PickerToggleTrigger;
|
|
@@ -4,26 +4,41 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import pick from 'lodash/pick';
|
|
6
6
|
import OverlayTrigger from '../Overlay/OverlayTrigger';
|
|
7
|
-
import { placementPolyfill, useCustom } from '../utils';
|
|
7
|
+
import { placementPolyfill, useCustom, useUniqueId } from '../utils';
|
|
8
8
|
export var omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'defaultOpen', 'container', 'containerPadding', 'preventOverflow'];
|
|
9
|
-
export var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading']);
|
|
9
|
+
export var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading', 'label']);
|
|
10
|
+
export var ComboboxContextContext = /*#__PURE__*/React.createContext({
|
|
11
|
+
popupType: 'listbox'
|
|
12
|
+
});
|
|
10
13
|
var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
11
14
|
var pickerProps = props.pickerProps,
|
|
12
15
|
speaker = props.speaker,
|
|
13
16
|
placement = props.placement,
|
|
14
17
|
_props$trigger = props.trigger,
|
|
15
18
|
trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
|
|
16
|
-
|
|
19
|
+
id = props.id,
|
|
20
|
+
multiple = props.multiple,
|
|
21
|
+
_props$popupType = props.popupType,
|
|
22
|
+
popupType = _props$popupType === void 0 ? 'listbox' : _props$popupType,
|
|
23
|
+
rest = _objectWithoutPropertiesLoose(props, ["pickerProps", "speaker", "placement", "trigger", "id", "multiple", "popupType"]);
|
|
17
24
|
var pickerTriggerProps = pick(pickerProps, pickTriggerPropKeys);
|
|
25
|
+
var pickerId = useUniqueId('rs-', id);
|
|
18
26
|
var _useCustom = useCustom(),
|
|
19
27
|
rtl = _useCustom.rtl;
|
|
20
|
-
return /*#__PURE__*/React.createElement(
|
|
28
|
+
return /*#__PURE__*/React.createElement(ComboboxContextContext.Provider, {
|
|
29
|
+
value: {
|
|
30
|
+
id: pickerId,
|
|
31
|
+
hasLabel: typeof pickerTriggerProps.label !== 'undefined',
|
|
32
|
+
multiple: multiple,
|
|
33
|
+
popupType: popupType
|
|
34
|
+
}
|
|
35
|
+
}, /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, pickerTriggerProps, rest, {
|
|
21
36
|
disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
|
|
22
37
|
ref: ref,
|
|
23
38
|
trigger: trigger,
|
|
24
39
|
placement: placementPolyfill(placement, rtl),
|
|
25
40
|
speaker: speaker
|
|
26
|
-
}));
|
|
41
|
+
})));
|
|
27
42
|
});
|
|
28
43
|
PickerToggleTrigger.displayName = 'PickerToggleTrigger';
|
|
29
44
|
export default PickerToggleTrigger;
|
package/esm/Picker/SearchBar.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
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 get from 'lodash/get';
|
|
4
|
+
import React from 'react';
|
|
6
5
|
import PropTypes from 'prop-types';
|
|
7
6
|
import Search from '@rsuite/icons/legacy/Search';
|
|
8
|
-
import { useClassNames } from '../utils';
|
|
7
|
+
import { useClassNames, useEventCallback } from '../utils';
|
|
9
8
|
var SearchBar = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
10
9
|
var _props$as = props.as,
|
|
11
10
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -23,15 +22,15 @@ var SearchBar = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
23
22
|
merge = _useClassNames.merge,
|
|
24
23
|
prefix = _useClassNames.prefix;
|
|
25
24
|
var classes = merge(className, withClassPrefix());
|
|
26
|
-
var handleChange =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}, rest, {
|
|
25
|
+
var handleChange = useEventCallback(function (event) {
|
|
26
|
+
var _event$target;
|
|
27
|
+
onChange === null || onChange === void 0 ? void 0 : onChange((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value, event);
|
|
28
|
+
});
|
|
29
|
+
return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
32
30
|
ref: ref,
|
|
33
31
|
className: classes
|
|
34
32
|
}), /*#__PURE__*/React.createElement("input", {
|
|
33
|
+
role: "searchbox",
|
|
35
34
|
className: prefix('input'),
|
|
36
35
|
value: value,
|
|
37
36
|
onChange: handleChange,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface TreeViewProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
treeRootClassName: string;
|
|
4
|
+
multiselectable?: boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const TreeView: React.ForwardRefExoticComponent<TreeViewProps & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
export default TreeView;
|
|
@@ -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 './hooks/useCombobox';
|
|
6
|
+
var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
7
|
+
var children = props.children,
|
|
8
|
+
treeRootClassName = props.treeRootClassName,
|
|
9
|
+
multiselectable = props.multiselectable,
|
|
10
|
+
rest = _objectWithoutPropertiesLoose(props, ["children", "treeRootClassName", "multiselectable"]);
|
|
11
|
+
var _useCombobox = useCombobox(),
|
|
12
|
+
id = _useCombobox.id,
|
|
13
|
+
labelId = _useCombobox.labelId,
|
|
14
|
+
popupType = _useCombobox.popupType;
|
|
15
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
16
|
+
role: "tree",
|
|
17
|
+
id: id + "-" + popupType,
|
|
18
|
+
"aria-multiselectable": multiselectable,
|
|
19
|
+
"aria-labelledby": labelId,
|
|
20
|
+
ref: ref
|
|
21
|
+
}, rest), /*#__PURE__*/React.createElement("div", {
|
|
22
|
+
className: treeRootClassName
|
|
23
|
+
}, children));
|
|
24
|
+
});
|
|
25
|
+
export default TreeView;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { default as usePickerRef } from './usePickerRef';
|
|
2
|
+
export { default as useCombobox } from './useCombobox';
|
|
3
|
+
export { default as useFocusItemValue } from './useFocusItemValue';
|
|
4
|
+
export { default as useToggleKeyDownEvent } from './useToggleKeyDownEvent';
|
|
5
|
+
export { default as useSearch } from './useSearch';
|
|
6
|
+
export { default as usePickerClassName } from './usePickerClassName';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
export { default as usePickerRef } from './usePickerRef';
|
|
3
|
+
export { default as useCombobox } from './useCombobox';
|
|
4
|
+
export { default as useFocusItemValue } from './useFocusItemValue';
|
|
5
|
+
export { default as useToggleKeyDownEvent } from './useToggleKeyDownEvent';
|
|
6
|
+
export { default as useSearch } from './useSearch';
|
|
7
|
+
export { default as usePickerClassName } from './usePickerClassName';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { ComboboxContextContext } from '../PickerToggleTrigger';
|
|
4
|
+
function useCombobox() {
|
|
5
|
+
var _useContext = useContext(ComboboxContextContext),
|
|
6
|
+
id = _useContext.id,
|
|
7
|
+
hasLabel = _useContext.hasLabel,
|
|
8
|
+
popupType = _useContext.popupType,
|
|
9
|
+
multiple = _useContext.multiple;
|
|
10
|
+
return {
|
|
11
|
+
id: id,
|
|
12
|
+
popupType: popupType,
|
|
13
|
+
multiple: multiple,
|
|
14
|
+
labelId: hasLabel ? id + "-label" : undefined
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export default useCombobox;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface FocusItemValueProps<T = unknown> {
|
|
3
|
+
target: HTMLElement | null | (() => HTMLElement | null);
|
|
4
|
+
data?: T[];
|
|
5
|
+
/**
|
|
6
|
+
* When the down arrow key is pressed, whether to automatically focus on the option
|
|
7
|
+
*/
|
|
8
|
+
focusToOption?: boolean;
|
|
9
|
+
valueKey?: string;
|
|
10
|
+
focusableQueryKey?: string;
|
|
11
|
+
defaultLayer?: number;
|
|
12
|
+
rtl?: boolean;
|
|
13
|
+
callback?: (value: any, event: React.KeyboardEvent) => void;
|
|
14
|
+
getParent?: (node: T) => T | undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A hook that manages the focus state of the option.
|
|
18
|
+
* @param defaultFocusItemValue
|
|
19
|
+
* @param props
|
|
20
|
+
*/
|
|
21
|
+
declare const useFocusItemValue: <T, D>(defaultFocusItemValue: T | null | undefined, props: FocusItemValueProps<D>) => {
|
|
22
|
+
focusItemValue: T | null | undefined;
|
|
23
|
+
setFocusItemValue: import("react").Dispatch<import("react").SetStateAction<T | null | undefined>>;
|
|
24
|
+
layer: number;
|
|
25
|
+
setLayer: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
26
|
+
keys: any[];
|
|
27
|
+
setKeys: import("react").Dispatch<import("react").SetStateAction<any[]>>;
|
|
28
|
+
onKeyDown: (...args: any[]) => any;
|
|
29
|
+
};
|
|
30
|
+
export default useFocusItemValue;
|