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
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
+
import React, { useEffect, useRef } from 'react';
|
|
5
|
+
import SpinnerIcon from '@rsuite/icons/legacy/Spinner';
|
|
6
|
+
import isUndefined from 'lodash/isUndefined';
|
|
7
|
+
import isNil from 'lodash/isNil';
|
|
8
|
+
import { shallowEqual, useClassNames, mergeRefs, useCustom, useEventCallback } from '../utils';
|
|
9
|
+
import { ListItem, useCombobox } from '../Picker';
|
|
10
|
+
import AngleLeftIcon from '@rsuite/icons/legacy/AngleLeft';
|
|
11
|
+
import AngleRightIcon from '@rsuite/icons/legacy/AngleRight';
|
|
12
|
+
import getPosition from 'dom-lib/getPosition';
|
|
13
|
+
import scrollTop from 'dom-lib/scrollTop';
|
|
14
|
+
var emptyArray = [];
|
|
15
|
+
var TreeView = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
16
|
+
var _props$as = props.as,
|
|
17
|
+
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
18
|
+
activeItemValue = props.activeItemValue,
|
|
19
|
+
classPrefix = props.classPrefix,
|
|
20
|
+
className = props.className,
|
|
21
|
+
_props$childrenKey = props.childrenKey,
|
|
22
|
+
childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
|
|
23
|
+
_props$disabledItemVa = props.disabledItemValues,
|
|
24
|
+
disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
|
|
25
|
+
_props$menuWidth = props.menuWidth,
|
|
26
|
+
menuWidth = _props$menuWidth === void 0 ? 120 : _props$menuWidth,
|
|
27
|
+
_props$menuHeight = props.menuHeight,
|
|
28
|
+
menuHeight = _props$menuHeight === void 0 ? 200 : _props$menuHeight,
|
|
29
|
+
_props$valueKey = props.valueKey,
|
|
30
|
+
valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
|
|
31
|
+
_props$cascadeData = props.cascadeData,
|
|
32
|
+
cascadeData = _props$cascadeData === void 0 ? emptyArray : _props$cascadeData,
|
|
33
|
+
_props$cascadePaths = props.cascadePaths,
|
|
34
|
+
cascadePaths = _props$cascadePaths === void 0 ? emptyArray : _props$cascadePaths,
|
|
35
|
+
loadingItemsSet = props.loadingItemsSet,
|
|
36
|
+
_props$labelKey = props.labelKey,
|
|
37
|
+
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
38
|
+
style = props.style,
|
|
39
|
+
renderMenu = props.renderMenu,
|
|
40
|
+
renderMenuItem = props.renderMenuItem,
|
|
41
|
+
onSelect = props.onSelect,
|
|
42
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "activeItemValue", "classPrefix", "className", "childrenKey", "disabledItemValues", "menuWidth", "menuHeight", "valueKey", "cascadeData", "cascadePaths", "loadingItemsSet", "labelKey", "style", "renderMenu", "renderMenuItem", "onSelect"]);
|
|
43
|
+
var _useClassNames = useClassNames(classPrefix),
|
|
44
|
+
merge = _useClassNames.merge,
|
|
45
|
+
prefix = _useClassNames.prefix;
|
|
46
|
+
var classes = merge(className, prefix('items'));
|
|
47
|
+
var rootRef = useRef();
|
|
48
|
+
var _useCustom = useCustom(),
|
|
49
|
+
rtl = _useCustom.rtl;
|
|
50
|
+
var _useCombobox = useCombobox(),
|
|
51
|
+
id = _useCombobox.id,
|
|
52
|
+
labelId = _useCombobox.labelId,
|
|
53
|
+
popupType = _useCombobox.popupType;
|
|
54
|
+
useEffect(function () {
|
|
55
|
+
var _rootRef$current;
|
|
56
|
+
var columns = ((_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.querySelectorAll('[data-type="column"]')) || [];
|
|
57
|
+
columns.forEach(function (column) {
|
|
58
|
+
if (!column) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
var activeItem = column.querySelector("." + prefix('item-focus'));
|
|
62
|
+
if (!activeItem) {
|
|
63
|
+
activeItem = column.querySelector("." + prefix('item-active'));
|
|
64
|
+
}
|
|
65
|
+
if (activeItem) {
|
|
66
|
+
var position = getPosition(activeItem, column);
|
|
67
|
+
// Let the active option scroll into view.
|
|
68
|
+
scrollTop(column, position === null || position === void 0 ? void 0 : position.top);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}, [prefix]);
|
|
72
|
+
var getCascadePaths = function getCascadePaths(layer, node) {
|
|
73
|
+
var paths = [];
|
|
74
|
+
for (var i = 0; i < cascadeData.length && i < layer; i += 1) {
|
|
75
|
+
if (i < layer - 1 && cascadePaths) {
|
|
76
|
+
paths.push(cascadePaths[i]);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
paths.push(node);
|
|
80
|
+
return paths;
|
|
81
|
+
};
|
|
82
|
+
var handleSelect = useEventCallback(function (layer, node, event) {
|
|
83
|
+
var isLeafNode = isNil(node[childrenKey]);
|
|
84
|
+
var cascadePaths = getCascadePaths(layer + 1, node);
|
|
85
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, isLeafNode, event);
|
|
86
|
+
});
|
|
87
|
+
var renderCascadeNode = function renderCascadeNode(nodeProps) {
|
|
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;
|
|
94
|
+
var children = node[childrenKey];
|
|
95
|
+
var value = node[valueKey];
|
|
96
|
+
var label = node[labelKey];
|
|
97
|
+
var disabled = disabledItemValues.some(function (disabledValue) {
|
|
98
|
+
return shallowEqual(disabledValue, value);
|
|
99
|
+
});
|
|
100
|
+
var loading = (_loadingItemsSet$has = loadingItemsSet === null || loadingItemsSet === void 0 ? void 0 : loadingItemsSet.has(node)) !== null && _loadingItemsSet$has !== void 0 ? _loadingItemsSet$has : false;
|
|
101
|
+
|
|
102
|
+
// Use `value` in keys when If `value` is string or number
|
|
103
|
+
var onlyKey = typeof value === 'number' || typeof value === 'string' ? value : index;
|
|
104
|
+
var Icon = loading ? SpinnerIcon : rtl ? AngleLeftIcon : AngleRightIcon;
|
|
105
|
+
return /*#__PURE__*/React.createElement(ListItem, {
|
|
106
|
+
as: 'li',
|
|
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",
|
|
113
|
+
key: layer + "-" + onlyKey,
|
|
114
|
+
disabled: disabled,
|
|
115
|
+
active: !isUndefined(activeItemValue) && shallowEqual(activeItemValue, value),
|
|
116
|
+
focus: focus,
|
|
117
|
+
value: value,
|
|
118
|
+
className: children ? prefix('has-children') : undefined,
|
|
119
|
+
onSelect: function onSelect(_value, event) {
|
|
120
|
+
return handleSelect(layer, node, event);
|
|
121
|
+
}
|
|
122
|
+
}, renderMenuItem ? renderMenuItem(label, node) : label, children ? /*#__PURE__*/React.createElement(Icon, {
|
|
123
|
+
className: prefix('caret'),
|
|
124
|
+
spin: loading,
|
|
125
|
+
"data-testid": "spinner"
|
|
126
|
+
}) : null);
|
|
127
|
+
};
|
|
128
|
+
var cascadeNodes = cascadeData.map(function (children, layer) {
|
|
129
|
+
var onlyKey = layer + "_" + children.length;
|
|
130
|
+
var parentNode = cascadePaths[layer - 1];
|
|
131
|
+
var menu = /*#__PURE__*/React.createElement(React.Fragment, null, children.map(function (item, index) {
|
|
132
|
+
var focus = cascadePaths[layer] && shallowEqual(cascadePaths[layer][valueKey], item[valueKey]);
|
|
133
|
+
return renderCascadeNode({
|
|
134
|
+
node: item,
|
|
135
|
+
index: index,
|
|
136
|
+
layer: layer,
|
|
137
|
+
focus: focus,
|
|
138
|
+
size: children.length
|
|
139
|
+
});
|
|
140
|
+
}));
|
|
141
|
+
return /*#__PURE__*/React.createElement("ul", {
|
|
142
|
+
role: "group",
|
|
143
|
+
"data-layer": layer,
|
|
144
|
+
"data-type": 'column',
|
|
145
|
+
key: onlyKey,
|
|
146
|
+
className: prefix('column'),
|
|
147
|
+
style: {
|
|
148
|
+
height: menuHeight,
|
|
149
|
+
width: menuWidth
|
|
150
|
+
}
|
|
151
|
+
}, renderMenu ? renderMenu(children, menu, parentNode, layer) : menu);
|
|
152
|
+
});
|
|
153
|
+
var styles = _extends({}, style, {
|
|
154
|
+
width: cascadeData.length * menuWidth
|
|
155
|
+
});
|
|
156
|
+
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
157
|
+
role: "tree",
|
|
158
|
+
id: id + "-" + popupType,
|
|
159
|
+
"aria-labelledby": labelId
|
|
160
|
+
}, rest, {
|
|
161
|
+
ref: mergeRefs(rootRef, ref),
|
|
162
|
+
className: classes,
|
|
163
|
+
style: styles
|
|
164
|
+
}), cascadeNodes);
|
|
165
|
+
});
|
|
166
|
+
TreeView.displayName = 'TreeView';
|
|
167
|
+
export default TreeView;
|
|
@@ -15,7 +15,7 @@ import isNil from 'lodash/isNil';
|
|
|
15
15
|
import { filterNodesOfTree } from '../utils/treeUtils';
|
|
16
16
|
import { createChainedFunction, useClassNames, shallowEqual, useCustom, useControlled, useEventCallback, mergeRefs } from '../utils';
|
|
17
17
|
import { getDataGroupBy } from '../utils/getDataGroupBy';
|
|
18
|
-
import {
|
|
18
|
+
import { Listbox, ListCheckItem, PickerToggle, PickerPopup, SearchBar, SelectedElement, PickerToggleTrigger, useFocusItemValue, usePickerClassName, useSearch, useToggleKeyDownEvent, usePickerRef, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
19
19
|
var emptyArray = [];
|
|
20
20
|
/**
|
|
21
21
|
* A component for selecting checkable items in a dropdown list.
|
|
@@ -246,7 +246,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
246
246
|
hasValue = false;
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
var
|
|
249
|
+
var renderPopup = function renderPopup(positionProps, speakerRef) {
|
|
250
250
|
var left = positionProps.left,
|
|
251
251
|
top = positionProps.top,
|
|
252
252
|
className = positionProps.className;
|
|
@@ -274,8 +274,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
274
274
|
} else if (typeof sort === 'function') {
|
|
275
275
|
items = items.sort(sort(false));
|
|
276
276
|
}
|
|
277
|
-
var menu = items.length || filteredStickyItems.length ? /*#__PURE__*/React.createElement(
|
|
278
|
-
id: id ? id + "-listbox" : undefined,
|
|
277
|
+
var menu = items.length || filteredStickyItems.length ? /*#__PURE__*/React.createElement(Listbox, {
|
|
279
278
|
listProps: listProps,
|
|
280
279
|
listRef: list,
|
|
281
280
|
disabledItemValues: disabledItemValues,
|
|
@@ -285,7 +284,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
285
284
|
renderMenuItem: renderMenuItem,
|
|
286
285
|
maxHeight: menuMaxHeight,
|
|
287
286
|
classPrefix: 'picker-check-menu',
|
|
288
|
-
|
|
287
|
+
listItemAs: ListCheckItem,
|
|
289
288
|
activeItemValues: value,
|
|
290
289
|
focusItemValue: focusItemValue,
|
|
291
290
|
data: [].concat(filteredStickyItems, items)
|
|
@@ -299,7 +298,7 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
299
298
|
}) : /*#__PURE__*/React.createElement("div", {
|
|
300
299
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["none"])))
|
|
301
300
|
}, locale === null || locale === void 0 ? void 0 : locale.noResultsText);
|
|
302
|
-
return /*#__PURE__*/React.createElement(
|
|
301
|
+
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
303
302
|
ref: mergeRefs(overlay, speakerRef),
|
|
304
303
|
autoWidth: menuAutoWidth,
|
|
305
304
|
className: classes,
|
|
@@ -324,19 +323,20 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
324
323
|
classes = _usePickerClassName[0],
|
|
325
324
|
usedClassNamePropKeys = _usePickerClassName[1];
|
|
326
325
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
326
|
+
id: id,
|
|
327
|
+
multiple: true,
|
|
327
328
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
328
329
|
ref: trigger,
|
|
329
330
|
placement: placement,
|
|
330
331
|
onEnter: createChainedFunction(initStickyItems, onEnter),
|
|
331
332
|
onEntered: createChainedFunction(handleEntered, onEntered),
|
|
332
333
|
onExited: createChainedFunction(handleExited, onExited),
|
|
333
|
-
speaker:
|
|
334
|
+
speaker: renderPopup
|
|
334
335
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
335
336
|
className: classes,
|
|
336
337
|
style: style,
|
|
337
338
|
ref: root
|
|
338
339
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
339
|
-
id: id,
|
|
340
340
|
ref: target,
|
|
341
341
|
appearance: appearance,
|
|
342
342
|
disabled: disabled,
|
|
@@ -347,7 +347,8 @@ var CheckPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
347
347
|
hasValue: hasValue,
|
|
348
348
|
active: active,
|
|
349
349
|
placement: placement,
|
|
350
|
-
inputValue: value
|
|
350
|
+
inputValue: value,
|
|
351
|
+
focusItemValue: focusItemValue
|
|
351
352
|
}), selectedElement || (locale === null || locale === void 0 ? void 0 : locale.placeholder))));
|
|
352
353
|
});
|
|
353
354
|
CheckPicker.displayName = 'CheckPicker';
|
|
@@ -21,8 +21,8 @@ export interface CheckTreeNodeProps extends WithAsProps {
|
|
|
21
21
|
allUncheckable?: boolean;
|
|
22
22
|
onExpand?: (nodeData: any) => void;
|
|
23
23
|
onSelect?: (nodeData: any, event: React.SyntheticEvent) => void;
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
renderTreeIcon?: (nodeData: any, expandIcon?: React.ReactNode) => React.ReactNode;
|
|
25
|
+
renderTreeNode?: (nodeData: any) => React.ReactNode;
|
|
26
26
|
}
|
|
27
27
|
declare const CheckTreeNode: RsRefForwardingComponent<'div', CheckTreeNodeProps>;
|
|
28
28
|
export default CheckTreeNode;
|
|
@@ -1,13 +1,12 @@
|
|
|
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, { forwardRef
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
4
|
+
import React, { forwardRef } from 'react';
|
|
6
5
|
import ArrowDown from '@rsuite/icons/legacy/ArrowDown';
|
|
7
6
|
import Spinner from '@rsuite/icons/legacy/Spinner';
|
|
8
|
-
import
|
|
7
|
+
import ListCheckItem from '../Picker/ListCheckItem';
|
|
9
8
|
import { getTreeNodeIndent } from '../utils/treeUtils';
|
|
10
|
-
import { useClassNames, CHECK_STATE, reactToString } from '../utils';
|
|
9
|
+
import { useClassNames, useEventCallback, CHECK_STATE, reactToString } from '../utils';
|
|
11
10
|
var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
12
11
|
var _ref$as = _ref.as,
|
|
13
12
|
Component = _ref$as === void 0 ? 'div' : _ref$as,
|
|
@@ -29,11 +28,12 @@ var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
29
28
|
label = _ref.label,
|
|
30
29
|
uncheckable = _ref.uncheckable,
|
|
31
30
|
checkState = _ref.checkState,
|
|
31
|
+
value = _ref.value,
|
|
32
32
|
onExpand = _ref.onExpand,
|
|
33
33
|
onSelect = _ref.onSelect,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
rest = _objectWithoutPropertiesLoose(_ref, ["as", "style", "className", "classPrefix", "visible", "layer", "disabled", "allUncheckable", "rtl", "loading", "expand", "hasChildren", "nodeData", "focus", "label", "uncheckable", "checkState", "onExpand", "onSelect", "
|
|
34
|
+
renderTreeIcon = _ref.renderTreeIcon,
|
|
35
|
+
renderTreeNode = _ref.renderTreeNode,
|
|
36
|
+
rest = _objectWithoutPropertiesLoose(_ref, ["as", "style", "className", "classPrefix", "visible", "layer", "disabled", "allUncheckable", "rtl", "loading", "expand", "hasChildren", "nodeData", "focus", "label", "uncheckable", "checkState", "value", "onExpand", "onSelect", "renderTreeIcon", "renderTreeNode"]);
|
|
37
37
|
var _useClassNames = useClassNames(classPrefix),
|
|
38
38
|
prefix = _useClassNames.prefix,
|
|
39
39
|
merge = _useClassNames.merge,
|
|
@@ -46,13 +46,13 @@ var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
46
46
|
return nodes.join('');
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
-
var handleExpand =
|
|
49
|
+
var handleExpand = useEventCallback(function (event) {
|
|
50
50
|
var _event$nativeEvent, _event$nativeEvent$st;
|
|
51
51
|
// stop propagation when using custom loading icon
|
|
52
52
|
event === null || event === void 0 ? void 0 : (_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : (_event$nativeEvent$st = _event$nativeEvent.stopImmediatePropagation) === null || _event$nativeEvent$st === void 0 ? void 0 : _event$nativeEvent$st.call(_event$nativeEvent);
|
|
53
53
|
onExpand === null || onExpand === void 0 ? void 0 : onExpand(nodeData);
|
|
54
|
-
}
|
|
55
|
-
var handleSelect =
|
|
54
|
+
});
|
|
55
|
+
var handleSelect = useEventCallback(function (_value, event) {
|
|
56
56
|
if (disabled || uncheckable) {
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
@@ -67,7 +67,7 @@ var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
67
67
|
check: isChecked
|
|
68
68
|
});
|
|
69
69
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextNodeData, event);
|
|
70
|
-
}
|
|
70
|
+
});
|
|
71
71
|
var renderIcon = function renderIcon() {
|
|
72
72
|
var expandIconClasses = prefix('expand-icon', 'icon', {
|
|
73
73
|
expanded: expand
|
|
@@ -82,8 +82,8 @@ var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
82
82
|
spin: true
|
|
83
83
|
}));
|
|
84
84
|
}
|
|
85
|
-
if (typeof
|
|
86
|
-
var customIcon =
|
|
85
|
+
if (typeof renderTreeIcon === 'function') {
|
|
86
|
+
var customIcon = renderTreeIcon(nodeData);
|
|
87
87
|
expandIcon = customIcon !== null ? /*#__PURE__*/React.createElement("div", {
|
|
88
88
|
className: prefix('custom-icon')
|
|
89
89
|
}, customIcon) : expandIcon;
|
|
@@ -96,23 +96,6 @@ var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
96
96
|
onClick: handleExpand
|
|
97
97
|
}, expandIcon) : null;
|
|
98
98
|
};
|
|
99
|
-
var renderLabel = function renderLabel() {
|
|
100
|
-
return /*#__PURE__*/React.createElement(DropdownMenuCheckItem, {
|
|
101
|
-
as: "div",
|
|
102
|
-
active: checkState === CHECK_STATE.CHECK,
|
|
103
|
-
indeterminate: checkState === CHECK_STATE.INDETERMINATE,
|
|
104
|
-
focus: focus,
|
|
105
|
-
checkable: !uncheckable,
|
|
106
|
-
disabled: disabled,
|
|
107
|
-
"data-layer": layer,
|
|
108
|
-
value: nodeData.refKey,
|
|
109
|
-
className: prefix('label'),
|
|
110
|
-
title: getTitle(),
|
|
111
|
-
onSelect: handleSelect
|
|
112
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
113
|
-
className: prefix('text-wrapper')
|
|
114
|
-
}, typeof onRenderTreeNode === 'function' ? onRenderTreeNode(nodeData) : label));
|
|
115
|
-
};
|
|
116
99
|
var classes = merge(className, withClassPrefix({
|
|
117
100
|
disabled: disabled,
|
|
118
101
|
'all-uncheckable': !!allUncheckable,
|
|
@@ -120,42 +103,31 @@ var CheckTreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
120
103
|
focus: focus
|
|
121
104
|
}));
|
|
122
105
|
var styles = _extends({}, style, getTreeNodeIndent(rtl, layer - 1));
|
|
123
|
-
return visible ? /*#__PURE__*/React.createElement(Component, _extends({
|
|
106
|
+
return visible ? /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
107
|
+
style: styles,
|
|
108
|
+
className: classes,
|
|
109
|
+
ref: ref
|
|
110
|
+
}), renderIcon(), /*#__PURE__*/React.createElement(ListCheckItem, {
|
|
111
|
+
as: "div",
|
|
124
112
|
role: "treeitem",
|
|
125
113
|
"aria-label": label,
|
|
126
114
|
"aria-expanded": expand,
|
|
127
115
|
"aria-selected": checkState === CHECK_STATE.CHECK,
|
|
128
116
|
"aria-disabled": disabled,
|
|
129
|
-
"aria-level": layer
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
117
|
+
"aria-level": layer,
|
|
118
|
+
active: checkState === CHECK_STATE.CHECK,
|
|
119
|
+
indeterminate: checkState === CHECK_STATE.INDETERMINATE,
|
|
120
|
+
focus: focus,
|
|
121
|
+
checkable: !uncheckable,
|
|
122
|
+
disabled: disabled,
|
|
123
|
+
"data-layer": layer,
|
|
124
|
+
value: nodeData.refKey || value,
|
|
125
|
+
className: prefix('label'),
|
|
126
|
+
title: getTitle(),
|
|
127
|
+
onSelect: handleSelect
|
|
128
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
129
|
+
className: prefix('text-wrapper')
|
|
130
|
+
}, typeof renderTreeNode === 'function' ? renderTreeNode(nodeData) : label))) : null;
|
|
135
131
|
});
|
|
136
132
|
CheckTreeNode.displayName = 'CheckTreeNode';
|
|
137
|
-
CheckTreeNode.propTypes = {
|
|
138
|
-
as: PropTypes.elementType,
|
|
139
|
-
rtl: PropTypes.bool,
|
|
140
|
-
classPrefix: PropTypes.string,
|
|
141
|
-
visible: PropTypes.bool,
|
|
142
|
-
style: PropTypes.object,
|
|
143
|
-
label: PropTypes.any,
|
|
144
|
-
layer: PropTypes.number,
|
|
145
|
-
loading: PropTypes.bool,
|
|
146
|
-
value: PropTypes.any,
|
|
147
|
-
focus: PropTypes.bool,
|
|
148
|
-
expand: PropTypes.bool,
|
|
149
|
-
nodeData: PropTypes.object,
|
|
150
|
-
disabled: PropTypes.bool,
|
|
151
|
-
className: PropTypes.string,
|
|
152
|
-
checkState: PropTypes.oneOf([CHECK_STATE.UNCHECK, CHECK_STATE.CHECK, CHECK_STATE.INDETERMINATE]),
|
|
153
|
-
hasChildren: PropTypes.bool,
|
|
154
|
-
uncheckable: PropTypes.bool,
|
|
155
|
-
allUncheckable: PropTypes.bool,
|
|
156
|
-
onExpand: PropTypes.func,
|
|
157
|
-
onSelect: PropTypes.func,
|
|
158
|
-
onRenderTreeIcon: PropTypes.func,
|
|
159
|
-
onRenderTreeNode: PropTypes.func
|
|
160
|
-
};
|
|
161
133
|
export default CheckTreeNode;
|
|
@@ -15,7 +15,7 @@ import CheckTreeNode from './CheckTreeNode';
|
|
|
15
15
|
import TreeContext from '../Tree/TreeContext';
|
|
16
16
|
import { getKeyParentMap, getPathTowardsItem, getTreeNodeIndent } from '../utils/treeUtils';
|
|
17
17
|
import { createChainedFunction, useCustom, useClassNames, useControlled, useEventCallback, KEY_VALUES, mergeRefs } from '../utils';
|
|
18
|
-
import { PickerToggle, onMenuKeyDown as _onMenuKeyDown,
|
|
18
|
+
import { PickerToggle, TreeView, onMenuKeyDown as _onMenuKeyDown, PickerPopup, SearchBar, SelectedElement, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, useToggleKeyDownEvent, usePickerRef, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
19
19
|
import { isEveryChildChecked, isSomeNodeHasChildren, isAllSiblingNodeUncheckable, isEveryFirstLevelNodeUncheckable, getFormattedTree, getDisabledState, getCheckTreePickerDefaultValue, getSelectedItems, isNodeUncheckable } from './utils';
|
|
20
20
|
import { hasVisibleChildren, getExpandWhenSearching, useTreeSearch, useTreeNodeRefs, getDefaultExpandItemValues, useFlattenTreeData, focusNextItem, getFocusableItems, focusPreviousItem, toggleExpand, getActiveItem, useGetTreeNodeChildren, focusToActiveTreeNode, focusTreeNode, leftArrowHandler, rightArrowHandler, isSearching } from '../utils/treeUtils';
|
|
21
21
|
var emptyArray = [];
|
|
@@ -238,8 +238,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
238
238
|
allUncheckable: isAllSiblingNodeUncheckable(node, flattenNodes, uncheckableItemValues, valueKey),
|
|
239
239
|
onSelect: handleSelect,
|
|
240
240
|
onExpand: handleExpand,
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
renderTreeNode: renderTreeNode,
|
|
242
|
+
renderTreeIcon: renderTreeIcon
|
|
243
243
|
};
|
|
244
244
|
};
|
|
245
245
|
var focusActiveNode = function focusActiveNode() {
|
|
@@ -402,8 +402,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
402
402
|
});
|
|
403
403
|
var handleClean = useEventCallback(function (event) {
|
|
404
404
|
var target = event.target;
|
|
405
|
-
// exclude
|
|
406
|
-
if (target.matches('
|
|
405
|
+
// exclude searchbox
|
|
406
|
+
if (target.matches('input[role="searchbox"]') || disabled || !cleanable) {
|
|
407
407
|
return;
|
|
408
408
|
}
|
|
409
409
|
setActiveNode(null);
|
|
@@ -557,7 +557,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
557
557
|
return saveTreeNodeRef(_ref, refKey);
|
|
558
558
|
}
|
|
559
559
|
})), /*#__PURE__*/React.createElement("div", {
|
|
560
|
-
className: checkTreePrefix('
|
|
560
|
+
className: checkTreePrefix('group'),
|
|
561
|
+
role: "group"
|
|
561
562
|
}, nodes.map(function (child) {
|
|
562
563
|
return renderNode(child, layer);
|
|
563
564
|
}), showIndentLine && /*#__PURE__*/React.createElement("span", {
|
|
@@ -609,21 +610,17 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
609
610
|
className: prefix('none')
|
|
610
611
|
}, locale.noResultsText);
|
|
611
612
|
}
|
|
612
|
-
var treeNodesClass = merge(checkTreePrefix('
|
|
613
|
-
|
|
614
|
-
height: height
|
|
615
|
-
}, style) : {};
|
|
616
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
617
|
-
id: id ? id + "-listbox" : undefined,
|
|
613
|
+
var treeNodesClass = merge(checkTreePrefix('root'), (_merge2 = {}, _merge2[checkTreePrefix('all-uncheckable')] = isEveryFirstLevelNodeUncheckable(flattenNodes, uncheckableItemValues, valueKey), _merge2));
|
|
614
|
+
return /*#__PURE__*/React.createElement(TreeView, {
|
|
618
615
|
ref: inline ? root : treeView,
|
|
619
|
-
|
|
620
|
-
|
|
616
|
+
multiselectable: true,
|
|
617
|
+
treeRootClassName: treeNodesClass,
|
|
621
618
|
className: classes,
|
|
622
|
-
style:
|
|
619
|
+
style: inline ? _extends({
|
|
620
|
+
height: height
|
|
621
|
+
}, style) : {},
|
|
623
622
|
onScroll: onScroll,
|
|
624
623
|
onKeyDown: inline ? handleTreeKeydown : undefined
|
|
625
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
626
|
-
className: treeNodesClass
|
|
627
624
|
}, virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
|
|
628
625
|
defaultHeight: inline ? height : menuMaxHeight,
|
|
629
626
|
style: {
|
|
@@ -639,7 +636,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
639
636
|
itemCount: formattedNodes.length,
|
|
640
637
|
itemData: formattedNodes
|
|
641
638
|
}, listProps), renderVirtualListNode);
|
|
642
|
-
}) : formattedNodes)
|
|
639
|
+
}) : formattedNodes);
|
|
643
640
|
};
|
|
644
641
|
var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
|
|
645
642
|
var left = positionProps.left,
|
|
@@ -650,7 +647,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
650
647
|
left: left,
|
|
651
648
|
top: top
|
|
652
649
|
});
|
|
653
|
-
return /*#__PURE__*/React.createElement(
|
|
650
|
+
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
654
651
|
autoWidth: menuAutoWidth,
|
|
655
652
|
className: classes,
|
|
656
653
|
style: mergedMenuStyle,
|
|
@@ -706,6 +703,9 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
706
703
|
return renderCheckTree();
|
|
707
704
|
}
|
|
708
705
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
706
|
+
id: id,
|
|
707
|
+
popupType: "tree",
|
|
708
|
+
multiple: true,
|
|
709
709
|
pickerProps: _pick(props, pickTriggerPropKeys),
|
|
710
710
|
ref: trigger,
|
|
711
711
|
placement: placement,
|
|
@@ -718,7 +718,6 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
718
718
|
style: style,
|
|
719
719
|
ref: root
|
|
720
720
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, _omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
721
|
-
id: id,
|
|
722
721
|
ref: target,
|
|
723
722
|
appearance: appearance,
|
|
724
723
|
onKeyDown: onPickerKeydown,
|
|
@@ -729,7 +728,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
729
728
|
hasValue: hasValidValue,
|
|
730
729
|
active: active,
|
|
731
730
|
placement: placement,
|
|
732
|
-
inputValue: value
|
|
731
|
+
inputValue: value,
|
|
732
|
+
focusItemValue: focusItemValue
|
|
733
733
|
}), selectedElement || locale.placeholder)));
|
|
734
734
|
});
|
|
735
735
|
CheckTreePicker.displayName = 'CheckTreePicker';
|
|
@@ -19,8 +19,7 @@ import Stack from '../Stack';
|
|
|
19
19
|
import PredefinedRanges from './PredefinedRanges';
|
|
20
20
|
import { createChainedFunction, mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEventCallback, partitionHTMLProps } from '../utils';
|
|
21
21
|
import { shouldRenderMonth, shouldRenderDate, shouldRenderTime, shouldOnlyRenderTime, setHours, getHours, addMonths, addDays, isValid, disabledTime, copyTime, calendarOnlyProps } from '../utils/dateUtils';
|
|
22
|
-
import {
|
|
23
|
-
import usePickerRef from '../Picker/usePickerRef';
|
|
22
|
+
import { PickerPopup, PickerLabel, PickerIndicator, PickerToggleTrigger, pickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../Picker';
|
|
24
23
|
import DateInput from '../DateInput';
|
|
25
24
|
import InputGroup from '../InputGroup';
|
|
26
25
|
import { OverlayCloseCause } from '../Overlay/OverlayTrigger';
|
|
@@ -97,7 +96,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
97
96
|
onToggleTimeDropdown = props.onToggleTimeDropdown,
|
|
98
97
|
onShortcutClick = props.onShortcutClick,
|
|
99
98
|
restProps = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick"]);
|
|
100
|
-
var id = useUniqueId(
|
|
99
|
+
var id = useUniqueId('rs-', idProp);
|
|
101
100
|
var _usePickerRef = usePickerRef(ref),
|
|
102
101
|
trigger = _usePickerRef.trigger,
|
|
103
102
|
root = _usePickerRef.root,
|
|
@@ -274,7 +273,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
274
273
|
onClean === null || onClean === void 0 ? void 0 : onClean(event);
|
|
275
274
|
event.stopPropagation();
|
|
276
275
|
});
|
|
277
|
-
var
|
|
276
|
+
var handlePickerPopupKeyDown = useEventCallback(function (event) {
|
|
278
277
|
var delta = 0;
|
|
279
278
|
var step = showMonth ? 6 : 7;
|
|
280
279
|
var changeDateFunc = showMonth ? addMonths : addDays;
|
|
@@ -418,7 +417,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
418
417
|
left: left,
|
|
419
418
|
top: top
|
|
420
419
|
});
|
|
421
|
-
return /*#__PURE__*/React.createElement(
|
|
420
|
+
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
422
421
|
role: "dialog",
|
|
423
422
|
"aria-labelledby": label ? id + "-label" : undefined,
|
|
424
423
|
tabIndex: -1,
|
|
@@ -426,7 +425,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
426
425
|
ref: mergeRefs(overlay, speakerRef),
|
|
427
426
|
style: styles,
|
|
428
427
|
target: trigger,
|
|
429
|
-
onKeyDown:
|
|
428
|
+
onKeyDown: handlePickerPopupKeyDown
|
|
430
429
|
}, /*#__PURE__*/React.createElement(Stack, {
|
|
431
430
|
alignItems: "flex-start"
|
|
432
431
|
}, sideRanges.length > 0 && /*#__PURE__*/React.createElement(PredefinedRanges, {
|
|
@@ -15,7 +15,7 @@ import { FormattedDate } from '../CustomProvider';
|
|
|
15
15
|
import Toolbar from '../DatePicker/Toolbar';
|
|
16
16
|
import PredefinedRanges from '../DatePicker/PredefinedRanges';
|
|
17
17
|
import Stack from '../Stack';
|
|
18
|
-
import { omitTriggerPropKeys,
|
|
18
|
+
import { omitTriggerPropKeys, PickerPopup, pickerPropTypes, PickerToggleTrigger, PickerIndicator, PickerLabel, pickTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../Picker';
|
|
19
19
|
import { createChainedFunction, DATERANGE_DISABLED_TARGET, mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEventCallback, partitionHTMLProps, getStringLength } from '../utils';
|
|
20
20
|
import { addMonths, compareAsc, isValid, isBefore, isSameDay, addDays, startOfDay, endOfDay, shouldRenderTime, isAfter, copyTime, isSameMonth, shouldRenderMonth, shouldRenderDate, reverseDateRangeOmitTime, getReversedTimeMeridian, calendarOnlyProps, shouldOnlyRenderTime } from '../utils/dateUtils';
|
|
21
21
|
import Calendar from './Calendar';
|
|
@@ -25,7 +25,6 @@ import { deprecatePropTypeNew } from '../utils/deprecatePropType';
|
|
|
25
25
|
import DateRangePickerContext from './DateRangePickerContext';
|
|
26
26
|
import DateRangeInput from '../DateRangeInput';
|
|
27
27
|
import InputGroup from '../InputGroup';
|
|
28
|
-
import usePickerRef from '../Picker/usePickerRef';
|
|
29
28
|
/**
|
|
30
29
|
* A date range picker allows you to select a date range from a calendar.
|
|
31
30
|
*
|
|
@@ -93,7 +92,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
93
92
|
onShortcutClick = props.onShortcutClick,
|
|
94
93
|
renderTitle = props.renderTitle,
|
|
95
94
|
restProps = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "defaultCalendarValue", "defaultValue", "plaintext", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "readOnly", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "size", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect", "onShortcutClick", "renderTitle"]);
|
|
96
|
-
var id = useUniqueId(
|
|
95
|
+
var id = useUniqueId('rs-', idProp);
|
|
97
96
|
var _usePickerRef = usePickerRef(ref),
|
|
98
97
|
trigger = _usePickerRef.trigger,
|
|
99
98
|
root = _usePickerRef.root,
|
|
@@ -598,7 +597,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
598
597
|
var bottomRanges = ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
599
598
|
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
600
599
|
});
|
|
601
|
-
return /*#__PURE__*/React.createElement(
|
|
600
|
+
return /*#__PURE__*/React.createElement(PickerPopup, {
|
|
602
601
|
role: "dialog",
|
|
603
602
|
"aria-labelledby": label ? id + "-label" : undefined,
|
|
604
603
|
tabIndex: -1,
|
package/esm/Form/Form.d.ts
CHANGED
|
@@ -32,6 +32,20 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
|
|
|
32
32
|
disabled?: boolean;
|
|
33
33
|
/** The error message comes from context */
|
|
34
34
|
errorFromContext?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* The form data is nested.
|
|
37
|
+
* You may now nest fields with "dot syntax" (e.g. address.city).
|
|
38
|
+
*
|
|
39
|
+
* @default false
|
|
40
|
+
* @version v5.51.0
|
|
41
|
+
* @example
|
|
42
|
+
* ```jsx
|
|
43
|
+
* <Form formValue={{ address: { city: 'Shanghai' } }} nestedField>
|
|
44
|
+
* <FormControl name="address.city" />
|
|
45
|
+
* </Form>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
nestedField?: boolean;
|
|
35
49
|
/** Callback fired when data changing */
|
|
36
50
|
onChange?: (formValue: T, event?: React.SyntheticEvent) => void;
|
|
37
51
|
/** Callback fired when error checking */
|