rsuite 5.48.1 → 5.50.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 +27 -0
- package/Cascader/styles/index.less +5 -4
- package/DatePicker/styles/index.less +18 -11
- package/DateRangeInput/package.json +7 -0
- package/DateRangePicker/styles/index.less +20 -0
- package/Dropdown/styles/index.less +5 -4
- package/Dropdown/styles/mixin.less +0 -11
- package/InputGroup/styles/index.less +1 -0
- package/Picker/styles/index.less +51 -24
- package/Picker/styles/mixin.less +17 -13
- package/README.md +34 -24
- package/Sidenav/styles/index.less +2 -0
- package/TagInput/styles/index.less +1 -1
- package/cjs/AutoComplete/AutoComplete.js +25 -26
- package/cjs/Calendar/Calendar.d.ts +5 -1
- package/cjs/Calendar/CalendarContainer.d.ts +7 -1
- package/cjs/Calendar/CalendarContainer.js +11 -4
- package/cjs/Calendar/CalendarHeader.js +2 -0
- package/cjs/Calendar/MonthDropdown.js +7 -2
- package/cjs/Calendar/MonthDropdownItem.js +2 -2
- package/cjs/Calendar/Table.js +6 -1
- package/cjs/Calendar/TimeDropdown.js +17 -10
- package/cjs/Calendar/types.d.ts +1 -0
- package/cjs/Cascader/Cascader.js +46 -48
- package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
- package/cjs/CheckPicker/CheckPicker.js +33 -36
- package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
- package/cjs/CustomProvider/CustomProvider.d.ts +13 -0
- package/cjs/CustomProvider/CustomProvider.js +2 -2
- package/cjs/DateInput/DateField.d.ts +9 -31
- package/cjs/DateInput/DateField.js +61 -12
- package/cjs/DateInput/DateInput.d.ts +7 -2
- package/cjs/DateInput/DateInput.js +74 -92
- package/cjs/DateInput/index.d.ts +4 -0
- package/cjs/DateInput/index.js +19 -1
- package/cjs/DateInput/useDateInputState.d.ts +7 -31
- package/cjs/DateInput/useDateInputState.js +39 -15
- package/cjs/DateInput/useIsFocused.d.ts +7 -0
- package/cjs/DateInput/useIsFocused.js +28 -0
- package/cjs/DateInput/useKeyboardInputEvent.d.ts +10 -0
- package/cjs/DateInput/useKeyboardInputEvent.js +44 -0
- package/cjs/DateInput/utils.d.ts +23 -1
- package/cjs/DateInput/utils.js +155 -51
- package/cjs/DatePicker/DatePicker.d.ts +25 -8
- package/cjs/DatePicker/DatePicker.js +208 -241
- package/cjs/DatePicker/Toolbar.js +5 -22
- package/cjs/DatePicker/utils.d.ts +5 -1
- package/cjs/DatePicker/utils.js +17 -1
- package/cjs/DateRangeInput/DateRangeInput.d.ts +29 -0
- package/cjs/DateRangeInput/DateRangeInput.js +244 -0
- package/cjs/DateRangeInput/index.d.ts +3 -0
- package/cjs/DateRangeInput/index.js +9 -0
- package/cjs/DateRangeInput/utils.d.ts +61 -0
- package/cjs/DateRangeInput/utils.js +146 -0
- package/cjs/DateRangePicker/Calendar.js +24 -23
- package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/cjs/DateRangePicker/DateRangePicker.js +251 -203
- package/cjs/DateRangePicker/types.d.ts +11 -3
- package/cjs/DateRangePicker/utils.d.ts +2 -1
- package/cjs/DateRangePicker/utils.js +7 -5
- package/cjs/FormControl/FormControl.d.ts +11 -1
- package/cjs/FormControl/FormControl.js +6 -5
- package/cjs/Input/Input.d.ts +11 -0
- package/cjs/Input/Input.js +11 -8
- package/cjs/InputPicker/InputPicker.js +62 -63
- package/cjs/MultiCascader/MultiCascader.js +40 -42
- package/cjs/Overlay/OverlayTrigger.d.ts +3 -0
- package/cjs/Overlay/OverlayTrigger.js +5 -0
- package/cjs/Picker/PickerIndicator.d.ts +10 -0
- package/cjs/Picker/PickerIndicator.js +49 -0
- package/cjs/Picker/PickerLabel.d.ts +9 -0
- package/cjs/Picker/PickerLabel.js +23 -0
- package/cjs/Picker/PickerToggle.d.ts +17 -22
- package/cjs/Picker/PickerToggle.js +52 -177
- package/cjs/Picker/index.d.ts +3 -0
- package/cjs/Picker/index.js +10 -1
- package/cjs/Picker/usePickerRef.d.ts +19 -0
- package/cjs/Picker/usePickerRef.js +88 -0
- package/cjs/Picker/utils.d.ts +5 -9
- package/cjs/Picker/utils.js +22 -89
- package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
- package/cjs/SelectPicker/SelectPicker.js +39 -42
- package/cjs/TreePicker/TreePicker.js +72 -75
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +3 -1
- package/cjs/locales/index.d.ts +2 -2
- package/cjs/utils/constants.d.ts +2 -1
- package/cjs/utils/constants.js +1 -0
- package/cjs/utils/dateUtils.d.ts +0 -1
- package/cjs/utils/dateUtils.js +0 -6
- package/cjs/utils/getStringLength.d.ts +2 -0
- package/cjs/utils/getStringLength.js +18 -0
- package/cjs/utils/index.d.ts +3 -0
- package/cjs/utils/index.js +11 -2
- package/cjs/utils/useCustom.js +1 -1
- package/cjs/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/cjs/utils/useIsomorphicLayoutEffect.js +9 -0
- package/dist/rsuite-no-reset-rtl.css +140 -207
- 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 +140 -207
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +140 -75
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +140 -75
- package/dist/rsuite.js +4833 -258
- 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/AutoComplete/AutoComplete.js +28 -29
- package/esm/Calendar/Calendar.d.ts +5 -1
- package/esm/Calendar/CalendarContainer.d.ts +7 -1
- package/esm/Calendar/CalendarContainer.js +12 -5
- package/esm/Calendar/CalendarHeader.js +2 -0
- package/esm/Calendar/MonthDropdown.js +7 -2
- package/esm/Calendar/MonthDropdownItem.js +2 -2
- package/esm/Calendar/Table.js +6 -1
- package/esm/Calendar/TimeDropdown.js +17 -10
- package/esm/Calendar/types.d.ts +1 -0
- package/esm/Cascader/Cascader.js +49 -51
- package/esm/CheckPicker/CheckPicker.d.ts +2 -2
- package/esm/CheckPicker/CheckPicker.js +36 -39
- package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
- package/esm/CustomProvider/CustomProvider.d.ts +13 -0
- package/esm/CustomProvider/CustomProvider.js +3 -3
- package/esm/DateInput/DateField.d.ts +9 -31
- package/esm/DateInput/DateField.js +61 -12
- package/esm/DateInput/DateInput.d.ts +7 -2
- package/esm/DateInput/DateInput.js +77 -95
- package/esm/DateInput/index.d.ts +4 -0
- package/esm/DateInput/index.js +4 -0
- package/esm/DateInput/useDateInputState.d.ts +7 -31
- package/esm/DateInput/useDateInputState.js +41 -18
- package/esm/DateInput/useIsFocused.d.ts +7 -0
- package/esm/DateInput/useIsFocused.js +22 -0
- package/esm/DateInput/useKeyboardInputEvent.d.ts +10 -0
- package/esm/DateInput/useKeyboardInputEvent.js +38 -0
- package/esm/DateInput/utils.d.ts +23 -1
- package/esm/DateInput/utils.js +150 -51
- package/esm/DatePicker/DatePicker.d.ts +25 -8
- package/esm/DatePicker/DatePicker.js +211 -244
- package/esm/DatePicker/Toolbar.js +5 -22
- package/esm/DatePicker/utils.d.ts +5 -1
- package/esm/DatePicker/utils.js +16 -1
- package/esm/DateRangeInput/DateRangeInput.d.ts +29 -0
- package/esm/DateRangeInput/DateRangeInput.js +237 -0
- package/esm/DateRangeInput/index.d.ts +3 -0
- package/esm/DateRangeInput/index.js +3 -0
- package/esm/DateRangeInput/utils.d.ts +61 -0
- package/esm/DateRangeInput/utils.js +137 -0
- package/esm/DateRangePicker/Calendar.js +25 -23
- package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/esm/DateRangePicker/DateRangePicker.js +253 -205
- package/esm/DateRangePicker/types.d.ts +11 -3
- package/esm/DateRangePicker/utils.d.ts +2 -1
- package/esm/DateRangePicker/utils.js +7 -5
- package/esm/FormControl/FormControl.d.ts +11 -1
- package/esm/FormControl/FormControl.js +4 -3
- package/esm/Input/Input.d.ts +11 -0
- package/esm/Input/Input.js +12 -9
- package/esm/InputPicker/InputPicker.js +64 -65
- package/esm/MultiCascader/MultiCascader.js +43 -45
- package/esm/Overlay/OverlayTrigger.d.ts +3 -0
- package/esm/Overlay/OverlayTrigger.js +5 -0
- package/esm/Picker/PickerIndicator.d.ts +10 -0
- package/esm/Picker/PickerIndicator.js +43 -0
- package/esm/Picker/PickerLabel.d.ts +9 -0
- package/esm/Picker/PickerLabel.js +17 -0
- package/esm/Picker/PickerToggle.d.ts +17 -22
- package/esm/Picker/PickerToggle.js +54 -179
- package/esm/Picker/index.d.ts +3 -0
- package/esm/Picker/index.js +3 -0
- package/esm/Picker/usePickerRef.d.ts +19 -0
- package/esm/Picker/usePickerRef.js +82 -0
- package/esm/Picker/utils.d.ts +5 -9
- package/esm/Picker/utils.js +24 -90
- package/esm/SelectPicker/SelectPicker.d.ts +2 -2
- package/esm/SelectPicker/SelectPicker.js +42 -45
- package/esm/TreePicker/TreePicker.js +75 -78
- package/esm/index.d.ts +2 -0
- package/esm/index.js +1 -0
- package/esm/locales/index.d.ts +2 -2
- package/esm/utils/constants.d.ts +2 -1
- package/esm/utils/constants.js +1 -0
- package/esm/utils/dateUtils.d.ts +0 -1
- package/esm/utils/dateUtils.js +0 -5
- package/esm/utils/getStringLength.d.ts +2 -0
- package/esm/utils/getStringLength.js +13 -0
- package/esm/utils/index.d.ts +3 -0
- package/esm/utils/index.js +4 -1
- package/esm/utils/useCustom.js +2 -2
- package/esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/esm/utils/useIsomorphicLayoutEffect.js +4 -0
- package/package.json +1 -1
- package/styles/color-modes/dark.less +1 -0
- package/styles/color-modes/high-contrast.less +1 -0
- package/styles/color-modes/light.less +1 -0
- package/styles/mixins/combobox.less +10 -0
- package/styles/normalize.less +230 -231
|
@@ -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, { useState
|
|
4
|
+
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
8
|
import Input from '../Input';
|
|
9
|
-
import { useClassNames, useControlled, PLACEMENT, mergeRefs,
|
|
9
|
+
import { useClassNames, useControlled, useIsMounted, useEventCallback, PLACEMENT, mergeRefs, partitionHTMLProps } from '../utils';
|
|
10
10
|
import { animationPropTypes } from '../Animation/utils';
|
|
11
|
-
import { PickerToggleTrigger, onMenuKeyDown, DropdownMenu, DropdownMenuItem, PickerOverlay, useFocusItemValue,
|
|
11
|
+
import { PickerToggleTrigger, onMenuKeyDown, DropdownMenu, DropdownMenuItem, PickerOverlay, useFocusItemValue, usePickerRef, pickTriggerPropKeys } from '../Picker';
|
|
12
12
|
import { transformData, shouldDisplay } from './utils';
|
|
13
13
|
import Plaintext from '../Plaintext';
|
|
14
14
|
/**
|
|
@@ -63,7 +63,10 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
63
63
|
setFocus = _useState[1];
|
|
64
64
|
var items = (datalist === null || datalist === void 0 ? void 0 : datalist.filter(shouldDisplay(filterBy, value))) || [];
|
|
65
65
|
var hasItems = items.length > 0;
|
|
66
|
-
var
|
|
66
|
+
var _usePickerRef = usePickerRef(ref),
|
|
67
|
+
trigger = _usePickerRef.trigger,
|
|
68
|
+
overlay = _usePickerRef.overlay,
|
|
69
|
+
root = _usePickerRef.root;
|
|
67
70
|
var isMounted = useIsMounted();
|
|
68
71
|
|
|
69
72
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
@@ -71,14 +74,14 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
71
74
|
data: datalist,
|
|
72
75
|
callback: onMenuFocus,
|
|
73
76
|
target: function target() {
|
|
74
|
-
return
|
|
77
|
+
return overlay.current;
|
|
75
78
|
}
|
|
76
79
|
}),
|
|
77
80
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
78
81
|
setFocusItemValue = _useFocusItemValue.setFocusItemValue,
|
|
79
82
|
handleKeyDown = _useFocusItemValue.onKeyDown;
|
|
80
83
|
var handleKeyDownEvent = function handleKeyDownEvent(event) {
|
|
81
|
-
if (!
|
|
84
|
+
if (!overlay.current) {
|
|
82
85
|
return;
|
|
83
86
|
}
|
|
84
87
|
onMenuKeyDown(event, {
|
|
@@ -103,29 +106,29 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
103
106
|
}
|
|
104
107
|
handleClose();
|
|
105
108
|
};
|
|
106
|
-
var handleSelect =
|
|
109
|
+
var handleSelect = useEventCallback(function (item, event) {
|
|
107
110
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.value, item, event);
|
|
108
|
-
}
|
|
109
|
-
var handleChangeValue =
|
|
111
|
+
});
|
|
112
|
+
var handleChangeValue = useEventCallback(function (value, event) {
|
|
110
113
|
onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
|
|
111
|
-
}
|
|
114
|
+
});
|
|
112
115
|
var handleChange = function handleChange(value, event) {
|
|
113
116
|
setFocusItemValue('');
|
|
114
117
|
setValue(value);
|
|
115
118
|
setFocus(true);
|
|
116
119
|
handleChangeValue(value, event);
|
|
117
120
|
};
|
|
118
|
-
var handleClose =
|
|
121
|
+
var handleClose = useEventCallback(function () {
|
|
119
122
|
if (isMounted()) {
|
|
120
123
|
setFocus(false);
|
|
121
124
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
122
125
|
}
|
|
123
|
-
}
|
|
124
|
-
var handleOpen =
|
|
126
|
+
});
|
|
127
|
+
var handleOpen = useEventCallback(function () {
|
|
125
128
|
setFocus(true);
|
|
126
129
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
127
|
-
}
|
|
128
|
-
var handleItemSelect =
|
|
130
|
+
});
|
|
131
|
+
var handleItemSelect = useEventCallback(function (nextItemValue, item, event) {
|
|
129
132
|
setValue(nextItemValue);
|
|
130
133
|
setFocusItemValue(nextItemValue);
|
|
131
134
|
handleSelect(item, event);
|
|
@@ -133,29 +136,24 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
133
136
|
handleChangeValue(nextItemValue, event);
|
|
134
137
|
}
|
|
135
138
|
handleClose();
|
|
136
|
-
}
|
|
137
|
-
var handleInputFocus =
|
|
139
|
+
});
|
|
140
|
+
var handleInputFocus = useEventCallback(function (event) {
|
|
138
141
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
139
142
|
handleOpen();
|
|
140
|
-
}
|
|
141
|
-
var handleInputBlur =
|
|
143
|
+
});
|
|
144
|
+
var handleInputBlur = useEventCallback(function (event) {
|
|
142
145
|
setTimeout(handleClose, 300);
|
|
143
146
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
144
|
-
}
|
|
147
|
+
});
|
|
145
148
|
var _useClassNames = useClassNames(classPrefix),
|
|
146
149
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
147
150
|
merge = _useClassNames.merge;
|
|
148
151
|
var classes = merge(className, withClassPrefix({
|
|
149
152
|
disabled: disabled
|
|
150
153
|
}));
|
|
151
|
-
var triggerRef = useRef(null);
|
|
152
154
|
var _partitionHTMLProps = partitionHTMLProps(omit(rest, pickTriggerPropKeys)),
|
|
153
155
|
htmlInputProps = _partitionHTMLProps[0],
|
|
154
156
|
restProps = _partitionHTMLProps[1];
|
|
155
|
-
usePublicMethods(ref, {
|
|
156
|
-
triggerRef: triggerRef,
|
|
157
|
-
overlayRef: overlayRef
|
|
158
|
-
});
|
|
159
157
|
var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
|
|
160
158
|
var left = positionProps.left,
|
|
161
159
|
top = positionProps.top,
|
|
@@ -176,11 +174,11 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
176
174
|
className: menuClassName
|
|
177
175
|
});
|
|
178
176
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
179
|
-
ref: mergeRefs(
|
|
177
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
180
178
|
style: styles,
|
|
181
179
|
className: className,
|
|
182
180
|
onKeyDown: handleKeyDownEvent,
|
|
183
|
-
target:
|
|
181
|
+
target: trigger,
|
|
184
182
|
autoWidth: menuAutoWidth
|
|
185
183
|
}, renderMenu ? renderMenu(menu) : menu);
|
|
186
184
|
};
|
|
@@ -191,7 +189,7 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
191
189
|
}, typeof value === 'undefined' ? defaultValue : value);
|
|
192
190
|
}
|
|
193
191
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
194
|
-
ref:
|
|
192
|
+
ref: trigger,
|
|
195
193
|
placement: placement,
|
|
196
194
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
197
195
|
trigger: ['click', 'focus'],
|
|
@@ -199,7 +197,8 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
199
197
|
speaker: renderDropdownMenu
|
|
200
198
|
}, /*#__PURE__*/React.createElement(Component, _extends({
|
|
201
199
|
className: classes,
|
|
202
|
-
style: style
|
|
200
|
+
style: style,
|
|
201
|
+
ref: root
|
|
203
202
|
}, restProps), /*#__PURE__*/React.createElement(Input, _extends({}, htmlInputProps, {
|
|
204
203
|
id: id,
|
|
205
204
|
disabled: disabled,
|
|
@@ -7,7 +7,11 @@ export interface CalendarProps extends WithAsProps {
|
|
|
7
7
|
value?: Date;
|
|
8
8
|
/** Default value */
|
|
9
9
|
defaultValue?: Date;
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
|
|
12
|
+
*
|
|
13
|
+
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
|
14
|
+
*/
|
|
11
15
|
isoWeek?: boolean;
|
|
12
16
|
/** Display a compact calendar */
|
|
13
17
|
compact?: boolean;
|
|
@@ -6,6 +6,8 @@ import { CalendarState } from './useCalendarState';
|
|
|
6
6
|
export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onChange' | 'onMouseMove'>, CalendarHeaderProps {
|
|
7
7
|
/** The panel render based on date range */
|
|
8
8
|
dateRange?: Date[];
|
|
9
|
+
/** The Id of the target element that triggers the opening of the calendar */
|
|
10
|
+
targetId?: string;
|
|
9
11
|
/** Date displayed on the current page */
|
|
10
12
|
calendarDate: Date;
|
|
11
13
|
/** Whether to show week numbers */
|
|
@@ -30,7 +32,11 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
|
|
|
30
32
|
hideSeconds?: (second: number, date: Date) => boolean;
|
|
31
33
|
/** The value that mouse hover on in range selection */
|
|
32
34
|
hoverRangeValue?: [Date, Date];
|
|
33
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
|
|
37
|
+
*
|
|
38
|
+
* @see https://en.wikipedia.org/wiki/ISO_week_date
|
|
39
|
+
*/
|
|
34
40
|
isoWeek?: boolean;
|
|
35
41
|
/** Limit showing how many years in the future */
|
|
36
42
|
limitEndYear?: number;
|
|
@@ -9,7 +9,7 @@ import TimeDropdown from './TimeDropdown';
|
|
|
9
9
|
import CalendarBody from './CalendarBody';
|
|
10
10
|
import CalendarHeader from './CalendarHeader';
|
|
11
11
|
import { useClassNames } from '../utils';
|
|
12
|
-
import { disabledTime, addMonths, shouldRenderDate, shouldRenderTime, shouldRenderMonth, isSameMonth, calendarOnlyProps, omitHideDisabledProps } from '../utils/dateUtils';
|
|
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';
|
|
15
15
|
import AngleUpIcon from '@rsuite/icons/legacy/AngleUp';
|
|
@@ -28,6 +28,7 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
28
28
|
hoverRangeValue = props.hoverRangeValue,
|
|
29
29
|
_props$isoWeek = props.isoWeek,
|
|
30
30
|
isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
|
|
31
|
+
targetId = props.targetId,
|
|
31
32
|
limitEndYear = props.limitEndYear,
|
|
32
33
|
limitStartYear = props.limitStartYear,
|
|
33
34
|
locale = props.locale,
|
|
@@ -40,7 +41,7 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
40
41
|
onToggleMeridian = props.onToggleMeridian,
|
|
41
42
|
onToggleMonthDropdown = props.onToggleMonthDropdown,
|
|
42
43
|
onToggleTimeDropdown = props.onToggleTimeDropdown,
|
|
43
|
-
|
|
44
|
+
calendarDateProp = props.calendarDate,
|
|
44
45
|
cellClassName = props.cellClassName,
|
|
45
46
|
renderCell = props.renderCell,
|
|
46
47
|
renderTitle = props.renderTitle,
|
|
@@ -48,7 +49,7 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
48
49
|
showMeridian = props.showMeridian,
|
|
49
50
|
showWeekNumbers = props.showWeekNumbers,
|
|
50
51
|
inline = props.inline,
|
|
51
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "cellClassName", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
|
|
52
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "isoWeek", "targetId", "limitEndYear", "limitStartYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "cellClassName", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
|
|
52
53
|
var _useClassNames = useClassNames(classPrefix),
|
|
53
54
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
54
55
|
merge = _useClassNames.merge,
|
|
@@ -58,6 +59,9 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
58
59
|
reset = _useCalendarState.reset,
|
|
59
60
|
openMonth = _useCalendarState.openMonth,
|
|
60
61
|
openTime = _useCalendarState.openTime;
|
|
62
|
+
var calendarDate = useMemo(function () {
|
|
63
|
+
return isValid(calendarDateProp) ? calendarDateProp : new Date();
|
|
64
|
+
}, [calendarDateProp]);
|
|
61
65
|
var isDisabledDate = useCallback(function (date) {
|
|
62
66
|
var _disabledDate;
|
|
63
67
|
return (_disabledDate = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date)) !== null && _disabledDate !== void 0 ? _disabledDate : false;
|
|
@@ -123,6 +127,7 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
123
127
|
hoverRangeValue: hoverRangeValue,
|
|
124
128
|
inSameMonth: inSameThisMonthDate,
|
|
125
129
|
isoWeek: isoWeek,
|
|
130
|
+
targetId: targetId,
|
|
126
131
|
locale: locale,
|
|
127
132
|
onChangeMonth: handleChangeMonth,
|
|
128
133
|
onChangeTime: onChangeTime,
|
|
@@ -133,10 +138,12 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
133
138
|
showWeekNumbers: showWeekNumbers,
|
|
134
139
|
inline: inline
|
|
135
140
|
};
|
|
136
|
-
}, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangeTime, onMouseMove, onSelect, cellClassName, renderCell, showWeekNumbers]);
|
|
141
|
+
}, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, targetId, locale, onChangeTime, onMouseMove, onSelect, cellClassName, renderCell, showWeekNumbers]);
|
|
137
142
|
return /*#__PURE__*/React.createElement(CalendarProvider, {
|
|
138
143
|
value: contextValue
|
|
139
|
-
}, /*#__PURE__*/React.createElement(Component, _extends({
|
|
144
|
+
}, /*#__PURE__*/React.createElement(Component, _extends({
|
|
145
|
+
"data-testid": "calendar"
|
|
146
|
+
}, omitHideDisabledProps(rest), {
|
|
140
147
|
className: calendarClasses,
|
|
141
148
|
ref: ref
|
|
142
149
|
}), /*#__PURE__*/React.createElement(CalendarHeader, {
|
|
@@ -122,6 +122,7 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
122
122
|
}), hasMonth && monthToolbar, showTime && /*#__PURE__*/React.createElement("div", {
|
|
123
123
|
className: prefix('time-toolbar')
|
|
124
124
|
}, /*#__PURE__*/React.createElement(Button, _extends({}, btnProps, {
|
|
125
|
+
"aria-label": "Select time",
|
|
125
126
|
className: timeTitleClasses,
|
|
126
127
|
onClick: onToggleTimeDropdown,
|
|
127
128
|
disabled: disableSelectTime
|
|
@@ -129,6 +130,7 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
129
130
|
date: date,
|
|
130
131
|
formatStr: getTimeFormat()
|
|
131
132
|
})), showMeridian && /*#__PURE__*/React.createElement(Button, _extends({}, btnProps, {
|
|
133
|
+
"aria-label": "Toggle meridian",
|
|
132
134
|
className: prefix('meridian'),
|
|
133
135
|
onClick: onToggleMeridian,
|
|
134
136
|
disabled: disableSelectTime
|
|
@@ -35,7 +35,8 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
35
35
|
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "limitStartYear", "limitEndYear", "show", "height", "width", "disabledMonth"]);
|
|
36
36
|
var _useCalendarContext = useCalendarContext(),
|
|
37
37
|
_useCalendarContext$d = _useCalendarContext.date,
|
|
38
|
-
date = _useCalendarContext$d === void 0 ? new Date() : _useCalendarContext$d
|
|
38
|
+
date = _useCalendarContext$d === void 0 ? new Date() : _useCalendarContext$d,
|
|
39
|
+
targetId = _useCalendarContext.targetId;
|
|
39
40
|
var _useClassNames = useClassNames(classPrefix),
|
|
40
41
|
prefix = _useClassNames.prefix,
|
|
41
42
|
merge = _useClassNames.merge,
|
|
@@ -69,6 +70,7 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
69
70
|
return /*#__PURE__*/React.createElement("div", {
|
|
70
71
|
className: rowClassName,
|
|
71
72
|
role: "row",
|
|
73
|
+
"aria-label": "" + year,
|
|
72
74
|
style: style
|
|
73
75
|
}, /*#__PURE__*/React.createElement("div", {
|
|
74
76
|
className: titleClassName,
|
|
@@ -92,7 +94,10 @@ var MonthDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
92
94
|
var initialItemIndex = DateUtils.getYear(date) - startYear;
|
|
93
95
|
var initialScrollOffset = itemSize * initialItemIndex;
|
|
94
96
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
95
|
-
role: "
|
|
97
|
+
role: "grid",
|
|
98
|
+
"aria-label": "Select month",
|
|
99
|
+
tabIndex: -1,
|
|
100
|
+
id: targetId ? targetId + "-" + classPrefix : undefined
|
|
96
101
|
}, rest, {
|
|
97
102
|
ref: ref,
|
|
98
103
|
className: classes
|
|
@@ -55,8 +55,8 @@ var MonthDropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
55
55
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
56
56
|
key: month,
|
|
57
57
|
role: "gridcell",
|
|
58
|
-
"aria-selected": active
|
|
59
|
-
"aria-disabled": disabled
|
|
58
|
+
"aria-selected": active,
|
|
59
|
+
"aria-disabled": disabled,
|
|
60
60
|
"aria-label": ariaLabel,
|
|
61
61
|
tabIndex: active ? 0 : -1,
|
|
62
62
|
ref: ref,
|
package/esm/Calendar/Table.js
CHANGED
|
@@ -6,6 +6,7 @@ import PropTypes from 'prop-types';
|
|
|
6
6
|
import TableRow from './TableRow';
|
|
7
7
|
import TableHeaderRow from './TableHeaderRow';
|
|
8
8
|
import { useClassNames } from '../utils';
|
|
9
|
+
import { useCalendarContext } from './CalendarContext';
|
|
9
10
|
var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
10
11
|
var _props$as = props.as,
|
|
11
12
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -19,8 +20,12 @@ var Table = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
19
20
|
merge = _useClassNames.merge,
|
|
20
21
|
withClassPrefix = _useClassNames.withClassPrefix;
|
|
21
22
|
var classes = merge(className, withClassPrefix());
|
|
23
|
+
var _useCalendarContext = useCalendarContext(),
|
|
24
|
+
targetId = _useCalendarContext.targetId;
|
|
22
25
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
23
|
-
role: "grid"
|
|
26
|
+
role: "grid",
|
|
27
|
+
tabIndex: -1,
|
|
28
|
+
id: targetId ? targetId + "-" + classPrefix : undefined
|
|
24
29
|
}, rest, {
|
|
25
30
|
ref: ref,
|
|
26
31
|
className: classes
|
|
@@ -90,7 +90,8 @@ var TimeDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
90
90
|
locale = _useCalendarContext.locale,
|
|
91
91
|
format = _useCalendarContext.format,
|
|
92
92
|
date = _useCalendarContext.date,
|
|
93
|
-
onSelect = _useCalendarContext.onChangeTime
|
|
93
|
+
onSelect = _useCalendarContext.onChangeTime,
|
|
94
|
+
targetId = _useCalendarContext.targetId;
|
|
94
95
|
var rowRef = useRef(null);
|
|
95
96
|
useEffect(function () {
|
|
96
97
|
var time = getTime({
|
|
@@ -141,24 +142,26 @@ var TimeDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
141
142
|
});
|
|
142
143
|
items.push( /*#__PURE__*/React.createElement("li", {
|
|
143
144
|
key: i,
|
|
144
|
-
role: "
|
|
145
|
-
}, /*#__PURE__*/React.createElement("a", {
|
|
146
|
-
role: "button",
|
|
147
|
-
className: itemClasses,
|
|
145
|
+
role: "option",
|
|
148
146
|
tabIndex: -1,
|
|
147
|
+
"aria-label": i + " " + type,
|
|
148
|
+
"aria-selected": active === i,
|
|
149
|
+
"aria-disabled": disabled,
|
|
149
150
|
"data-key": type + "-" + i,
|
|
150
151
|
onClick: !disabled ? partial(handleClick, type, i) : undefined
|
|
152
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
153
|
+
className: itemClasses
|
|
151
154
|
}, showMeridian && type === 'hours' && i === 0 ? '12' : i)));
|
|
152
155
|
}
|
|
153
156
|
}
|
|
154
157
|
return /*#__PURE__*/React.createElement("div", {
|
|
155
|
-
className: prefix('column')
|
|
156
|
-
role: "listitem"
|
|
158
|
+
className: prefix('column')
|
|
157
159
|
}, /*#__PURE__*/React.createElement("div", {
|
|
158
160
|
className: prefix('column-title')
|
|
159
161
|
}, locale === null || locale === void 0 ? void 0 : locale[type]), /*#__PURE__*/React.createElement("ul", {
|
|
160
162
|
"data-type": type,
|
|
161
|
-
role: "
|
|
163
|
+
role: "listbox",
|
|
164
|
+
"aria-label": "Select " + type
|
|
162
165
|
}, items));
|
|
163
166
|
};
|
|
164
167
|
var time = getTime({
|
|
@@ -166,9 +169,13 @@ var TimeDropdown = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
166
169
|
date: date,
|
|
167
170
|
showMeridian: showMeridian
|
|
168
171
|
});
|
|
169
|
-
var classes = merge(className, rootPrefix(classPrefix)
|
|
172
|
+
var classes = merge(className, rootPrefix(classPrefix), {
|
|
173
|
+
show: show
|
|
174
|
+
});
|
|
170
175
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
171
|
-
role: "
|
|
176
|
+
role: "group",
|
|
177
|
+
tabIndex: -1,
|
|
178
|
+
id: targetId ? targetId + "-" + classPrefix : undefined
|
|
172
179
|
}, DateUtils.omitHideDisabledProps(rest), {
|
|
173
180
|
ref: ref,
|
|
174
181
|
className: classes
|
package/esm/Calendar/types.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface CalendarInnerContextValue {
|
|
|
16
16
|
cellClassName?: (date: Date) => string | undefined;
|
|
17
17
|
showWeekNumbers?: boolean;
|
|
18
18
|
inline?: boolean;
|
|
19
|
+
targetId?: string;
|
|
19
20
|
}
|
|
20
21
|
export interface CalendarContextValue extends CalendarInnerContextValue {
|
|
21
22
|
locale: CalendarLocale;
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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, { useState, useCallback, useMemo } from 'react';
|
|
5
5
|
import { useSet } from 'react-use-set';
|
|
6
6
|
import PropTypes from 'prop-types';
|
|
7
7
|
import omit from 'lodash/omit';
|
|
@@ -12,8 +12,8 @@ import shallowEqual from '../utils/shallowEqual';
|
|
|
12
12
|
import DropdownMenu from './DropdownMenu';
|
|
13
13
|
import { getParentMap, getPathTowardsItem, findNodeOfTree, flattenTree } from '../utils/treeUtils';
|
|
14
14
|
import { usePaths } from './utils';
|
|
15
|
-
import { getSafeRegExpString, createChainedFunction, mergeRefs, useControlled, useCustom, useClassNames, useIsMounted } from '../utils';
|
|
16
|
-
import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, usePickerClassName,
|
|
15
|
+
import { getSafeRegExpString, createChainedFunction, mergeRefs, useControlled, useCustom, useClassNames, useIsMounted, useEventCallback } from '../utils';
|
|
16
|
+
import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
17
17
|
import { useMap } from '../utils/useMap';
|
|
18
18
|
var emptyArray = [];
|
|
19
19
|
|
|
@@ -76,10 +76,12 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
76
76
|
var _useState = useState(false),
|
|
77
77
|
active = _useState[0],
|
|
78
78
|
setActive = _useState[1];
|
|
79
|
-
var
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
var _usePickerRef = usePickerRef(ref),
|
|
80
|
+
trigger = _usePickerRef.trigger,
|
|
81
|
+
root = _usePickerRef.root,
|
|
82
|
+
target = _usePickerRef.target,
|
|
83
|
+
overlay = _usePickerRef.overlay,
|
|
84
|
+
searchInput = _usePickerRef.searchInput;
|
|
83
85
|
var _ref = useControlled(valueProp, defaultValue),
|
|
84
86
|
value = _ref[0],
|
|
85
87
|
setValue = _ref[1];
|
|
@@ -120,11 +122,6 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
120
122
|
columnsToDisplay = _usePaths.columnsToDisplay,
|
|
121
123
|
pathTowardsActiveItem = _usePaths.pathTowardsActiveItem,
|
|
122
124
|
pathTowardsSelectedItem = _usePaths.pathTowardsSelectedItem;
|
|
123
|
-
usePublicMethods(ref, {
|
|
124
|
-
triggerRef: triggerRef,
|
|
125
|
-
overlayRef: overlayRef,
|
|
126
|
-
targetRef: targetRef
|
|
127
|
-
});
|
|
128
125
|
var _useCustom = useCustom('Picker', overrideLocale),
|
|
129
126
|
locale = _useCustom.locale,
|
|
130
127
|
rtl = _useCustom.rtl;
|
|
@@ -139,7 +136,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
139
136
|
var _useState3 = useState(''),
|
|
140
137
|
searchKeyword = _useState3[0],
|
|
141
138
|
setSearchKeyword = _useState3[1];
|
|
142
|
-
var someKeyword =
|
|
139
|
+
var someKeyword = function someKeyword(item, keyword) {
|
|
143
140
|
if (item[labelKey].match(new RegExp(getSafeRegExpString(keyword || searchKeyword), 'i'))) {
|
|
144
141
|
return true;
|
|
145
142
|
}
|
|
@@ -148,8 +145,8 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
148
145
|
return true;
|
|
149
146
|
}
|
|
150
147
|
return false;
|
|
151
|
-
}
|
|
152
|
-
var getSearchResult =
|
|
148
|
+
};
|
|
149
|
+
var getSearchResult = function getSearchResult(keyword) {
|
|
153
150
|
var items = [];
|
|
154
151
|
var result = flattenedData.filter(function (item) {
|
|
155
152
|
if (!parentSelectable && item[childrenKey]) {
|
|
@@ -166,7 +163,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
166
163
|
}
|
|
167
164
|
}
|
|
168
165
|
return items;
|
|
169
|
-
}
|
|
166
|
+
};
|
|
170
167
|
|
|
171
168
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
172
169
|
var _useFocusItemValue = useFocusItemValue(value, {
|
|
@@ -175,7 +172,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
175
172
|
valueKey: valueKey,
|
|
176
173
|
defaultLayer: pathTowardsSelectedItem !== null && pathTowardsSelectedItem !== void 0 && pathTowardsSelectedItem.length ? pathTowardsSelectedItem.length - 1 : 0,
|
|
177
174
|
target: function target() {
|
|
178
|
-
return
|
|
175
|
+
return overlay.current;
|
|
179
176
|
},
|
|
180
177
|
getParent: function getParent(item) {
|
|
181
178
|
return parentMap.get(item);
|
|
@@ -191,7 +188,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
191
188
|
setLayer = _useFocusItemValue.setLayer,
|
|
192
189
|
setKeys = _useFocusItemValue.setKeys,
|
|
193
190
|
onFocusItem = _useFocusItemValue.onKeyDown;
|
|
194
|
-
var handleSearch =
|
|
191
|
+
var handleSearch = useEventCallback(function (value, event) {
|
|
195
192
|
var items = getSearchResult(value);
|
|
196
193
|
setSearchKeyword(value);
|
|
197
194
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
|
|
@@ -204,37 +201,37 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
204
201
|
setLayer(0);
|
|
205
202
|
setKeys([]);
|
|
206
203
|
}
|
|
207
|
-
}
|
|
208
|
-
var handleEntered =
|
|
209
|
-
if (!
|
|
204
|
+
});
|
|
205
|
+
var handleEntered = useEventCallback(function () {
|
|
206
|
+
if (!target.current) {
|
|
210
207
|
return;
|
|
211
208
|
}
|
|
212
209
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
213
210
|
setActive(true);
|
|
214
|
-
}
|
|
215
|
-
var handleExited =
|
|
216
|
-
if (!
|
|
211
|
+
});
|
|
212
|
+
var handleExited = useEventCallback(function () {
|
|
213
|
+
if (!target.current) {
|
|
217
214
|
return;
|
|
218
215
|
}
|
|
219
216
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
220
217
|
setActive(false);
|
|
221
218
|
setSearchKeyword('');
|
|
222
|
-
}
|
|
223
|
-
var handleClose =
|
|
224
|
-
var
|
|
225
|
-
(
|
|
219
|
+
});
|
|
220
|
+
var handleClose = useEventCallback(function () {
|
|
221
|
+
var _trigger$current, _target$current, _target$current$focus;
|
|
222
|
+
(_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.close();
|
|
226
223
|
|
|
227
224
|
// The focus is on the trigger button after closing
|
|
228
|
-
(
|
|
229
|
-
}
|
|
230
|
-
var handleClean =
|
|
231
|
-
if (disabled || !
|
|
225
|
+
(_target$current = target.current) === null || _target$current === void 0 ? void 0 : (_target$current$focus = _target$current.focus) === null || _target$current$focus === void 0 ? void 0 : _target$current$focus.call(_target$current);
|
|
226
|
+
});
|
|
227
|
+
var handleClean = useEventCallback(function (event) {
|
|
228
|
+
if (disabled || !target.current) {
|
|
232
229
|
return;
|
|
233
230
|
}
|
|
234
231
|
setValue(null);
|
|
235
232
|
onChange === null || onChange === void 0 ? void 0 : onChange(null, event);
|
|
236
|
-
}
|
|
237
|
-
var handleMenuPressEnter =
|
|
233
|
+
});
|
|
234
|
+
var handleMenuPressEnter = useEventCallback(function (event) {
|
|
238
235
|
var focusItem = findNodeOfTree(data, function (item) {
|
|
239
236
|
return item[valueKey] === focusItemValue;
|
|
240
237
|
});
|
|
@@ -250,20 +247,20 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
250
247
|
}
|
|
251
248
|
handleClose();
|
|
252
249
|
}
|
|
253
|
-
}
|
|
250
|
+
});
|
|
254
251
|
var onPickerKeyDown = useToggleKeyDownEvent(_extends({
|
|
255
252
|
toggle: !focusItemValue || !active,
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
253
|
+
trigger: trigger,
|
|
254
|
+
target: target,
|
|
255
|
+
overlay: overlay,
|
|
256
|
+
searchInput: searchInput,
|
|
260
257
|
active: active,
|
|
261
258
|
onExit: handleClean,
|
|
262
259
|
onMenuKeyDown: onFocusItem,
|
|
263
260
|
onMenuPressEnter: handleMenuPressEnter
|
|
264
261
|
}, rest));
|
|
265
|
-
var handleSelect = function
|
|
266
|
-
var _node$childrenKey,
|
|
262
|
+
var handleSelect = useEventCallback(function (node, cascadePaths, isLeafNode, event) {
|
|
263
|
+
var _node$childrenKey, _trigger$current2;
|
|
267
264
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
268
265
|
setActiveItem(node);
|
|
269
266
|
var nextValue = node[valueKey];
|
|
@@ -301,20 +298,20 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
301
298
|
}
|
|
302
299
|
|
|
303
300
|
// Update menu position
|
|
304
|
-
(
|
|
305
|
-
};
|
|
301
|
+
(_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.updatePosition();
|
|
302
|
+
});
|
|
306
303
|
|
|
307
304
|
/**
|
|
308
305
|
* The search structure option is processed after being selected.
|
|
309
306
|
*/
|
|
310
|
-
var handleSearchRowSelect = function
|
|
307
|
+
var handleSearchRowSelect = useEventCallback(function (node, nodes, event) {
|
|
311
308
|
var nextValue = node[valueKey];
|
|
312
309
|
handleClose();
|
|
313
310
|
setSearchKeyword('');
|
|
314
311
|
setValue(nextValue);
|
|
315
312
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, nodes, event);
|
|
316
313
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
317
|
-
};
|
|
314
|
+
});
|
|
318
315
|
var renderSearchRow = function renderSearchRow(item, key) {
|
|
319
316
|
var regx = new RegExp(getSafeRegExpString(searchKeyword), 'ig');
|
|
320
317
|
var nodes = getPathTowardsItem(item, function (item) {
|
|
@@ -391,16 +388,16 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
391
388
|
inline: inline
|
|
392
389
|
}));
|
|
393
390
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
394
|
-
ref: mergeRefs(
|
|
391
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
395
392
|
className: classes,
|
|
396
393
|
style: styles,
|
|
397
|
-
target:
|
|
394
|
+
target: trigger,
|
|
398
395
|
onKeyDown: onPickerKeyDown
|
|
399
396
|
}, searchable && /*#__PURE__*/React.createElement(SearchBar, {
|
|
400
397
|
placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
|
|
401
398
|
onChange: handleSearch,
|
|
402
399
|
value: searchKeyword,
|
|
403
|
-
inputRef:
|
|
400
|
+
inputRef: searchInput
|
|
404
401
|
}), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
405
402
|
id: id ? id + "-listbox" : undefined,
|
|
406
403
|
menuWidth: menuWidth,
|
|
@@ -459,17 +456,18 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
459
456
|
}
|
|
460
457
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
461
458
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
462
|
-
ref:
|
|
459
|
+
ref: trigger,
|
|
463
460
|
placement: placement,
|
|
464
461
|
onEntered: createChainedFunction(handleEntered, onEnter),
|
|
465
462
|
onExited: createChainedFunction(handleExited, onExited),
|
|
466
463
|
speaker: renderDropdownMenu
|
|
467
464
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
468
465
|
className: classes,
|
|
469
|
-
style: style
|
|
466
|
+
style: style,
|
|
467
|
+
ref: root
|
|
470
468
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
471
469
|
id: id,
|
|
472
|
-
ref:
|
|
470
|
+
ref: target,
|
|
473
471
|
as: toggleAs,
|
|
474
472
|
appearance: appearance,
|
|
475
473
|
disabled: disabled,
|