rsuite 5.49.0 → 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 +13 -0
- package/Cascader/styles/index.less +4 -4
- package/DateRangePicker/styles/index.less +15 -5
- package/Dropdown/styles/index.less +5 -4
- package/Dropdown/styles/mixin.less +0 -11
- package/Picker/styles/index.less +31 -24
- package/Picker/styles/mixin.less +17 -13
- package/README.md +4 -4
- 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 +5 -1
- 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/DatePicker/DatePicker.d.ts +5 -1
- package/cjs/DatePicker/DatePicker.js +2 -4
- package/cjs/DatePicker/Toolbar.js +2 -1
- package/cjs/DateRangeInput/DateRangeInput.js +2 -2
- package/cjs/DateRangePicker/Calendar.js +24 -23
- package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/cjs/DateRangePicker/DateRangePicker.js +239 -201
- 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/InputPicker/InputPicker.js +62 -63
- package/cjs/MultiCascader/MultiCascader.js +40 -42
- package/cjs/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
- package/cjs/{DatePicker → Picker}/PickerIndicator.js +2 -1
- package/cjs/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
- 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 +3 -1
- package/cjs/Picker/usePickerRef.js +13 -7
- 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/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 +1 -0
- package/cjs/utils/index.js +4 -1
- package/dist/rsuite-no-reset-rtl.css +92 -69
- 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 +92 -69
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +92 -69
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +92 -69
- package/dist/rsuite.js +67 -46
- 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 +5 -1
- 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/DatePicker/DatePicker.d.ts +5 -1
- package/esm/DatePicker/DatePicker.js +1 -3
- package/esm/DatePicker/Toolbar.js +2 -1
- package/esm/DateRangeInput/DateRangeInput.js +2 -2
- package/esm/DateRangePicker/Calendar.js +25 -23
- package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/esm/DateRangePicker/DateRangePicker.js +241 -203
- 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/InputPicker/InputPicker.js +64 -65
- package/esm/MultiCascader/MultiCascader.js +43 -45
- package/esm/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
- package/esm/{DatePicker → Picker}/PickerIndicator.js +2 -1
- package/esm/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
- 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 +3 -1
- package/esm/Picker/usePickerRef.js +13 -8
- 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/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 +1 -0
- package/esm/utils/index.js +1 -0
- package/package.json +1 -1
- package/styles/mixins/combobox.less +10 -0
- /package/cjs/{DatePicker → Picker}/PickerLabel.js +0 -0
- /package/esm/{DatePicker → Picker}/PickerLabel.js +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import {
|
|
2
|
+
import { useImperativeHandle, useRef } from 'react';
|
|
3
|
+
import useEventCallback from '../utils/useEventCallback';
|
|
3
4
|
/**
|
|
4
5
|
* A hook of the exposed method of Picker
|
|
5
6
|
*/
|
|
@@ -9,20 +10,22 @@ function usePickerRef(ref, parmas) {
|
|
|
9
10
|
var target = useRef(null);
|
|
10
11
|
var overlay = useRef(null);
|
|
11
12
|
var list = useRef(null);
|
|
13
|
+
var searchInput = useRef(null);
|
|
14
|
+
var treeView = useRef(null);
|
|
12
15
|
var _ref = parmas || {},
|
|
13
16
|
inline = _ref.inline;
|
|
14
|
-
var handleOpen =
|
|
17
|
+
var handleOpen = useEventCallback(function () {
|
|
15
18
|
var _trigger$current;
|
|
16
19
|
trigger === null || trigger === void 0 ? void 0 : (_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.open();
|
|
17
|
-
}
|
|
18
|
-
var handleClose =
|
|
20
|
+
});
|
|
21
|
+
var handleClose = useEventCallback(function () {
|
|
19
22
|
var _trigger$current2;
|
|
20
23
|
trigger === null || trigger === void 0 ? void 0 : (_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.close();
|
|
21
|
-
}
|
|
22
|
-
var handleUpdatePosition =
|
|
24
|
+
});
|
|
25
|
+
var handleUpdatePosition = useEventCallback(function () {
|
|
23
26
|
var _trigger$current3;
|
|
24
27
|
trigger === null || trigger === void 0 ? void 0 : (_trigger$current3 = trigger.current) === null || _trigger$current3 === void 0 ? void 0 : _trigger$current3.updatePosition();
|
|
25
|
-
}
|
|
28
|
+
});
|
|
26
29
|
useImperativeHandle(ref, function () {
|
|
27
30
|
// Tree and CheckTree
|
|
28
31
|
if (inline) {
|
|
@@ -71,7 +74,9 @@ function usePickerRef(ref, parmas) {
|
|
|
71
74
|
root: root,
|
|
72
75
|
overlay: overlay,
|
|
73
76
|
target: target,
|
|
74
|
-
list: list
|
|
77
|
+
list: list,
|
|
78
|
+
searchInput: searchInput,
|
|
79
|
+
treeView: treeView
|
|
75
80
|
};
|
|
76
81
|
}
|
|
77
82
|
export default usePickerRef;
|
package/esm/Picker/utils.d.ts
CHANGED
|
@@ -68,10 +68,10 @@ export declare const useFocusItemValue: <T, D>(defaultFocusItemValue: T | null |
|
|
|
68
68
|
};
|
|
69
69
|
export interface ToggleKeyDownEventProps {
|
|
70
70
|
toggle?: boolean;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
trigger: React.RefObject<any>;
|
|
72
|
+
target: React.RefObject<any>;
|
|
73
|
+
overlay?: React.RefObject<any>;
|
|
74
|
+
searchInput?: React.RefObject<any>;
|
|
75
75
|
active?: boolean;
|
|
76
76
|
readOnly?: boolean;
|
|
77
77
|
disabled?: boolean;
|
|
@@ -88,7 +88,7 @@ export interface ToggleKeyDownEventProps {
|
|
|
88
88
|
* A hook to control the toggle keyboard operation
|
|
89
89
|
* @param props
|
|
90
90
|
*/
|
|
91
|
-
export declare const useToggleKeyDownEvent: (props: ToggleKeyDownEventProps) => (
|
|
91
|
+
export declare const useToggleKeyDownEvent: (props: ToggleKeyDownEventProps) => (...args: any[]) => any;
|
|
92
92
|
interface SearchOptions<T> {
|
|
93
93
|
labelKey: string;
|
|
94
94
|
searchBy?: (keyword: string, label: any, item: T) => boolean;
|
|
@@ -113,8 +113,4 @@ export interface PickerDependentParameters {
|
|
|
113
113
|
listRef?: React.RefObject<ListHandle>;
|
|
114
114
|
inline?: boolean;
|
|
115
115
|
}
|
|
116
|
-
/**
|
|
117
|
-
* A hook of the exposed method of Picker
|
|
118
|
-
*/
|
|
119
|
-
export declare function usePublicMethods(ref: any, parmas: PickerDependentParameters): void;
|
|
120
116
|
export {};
|
package/esm/Picker/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React, { useState,
|
|
3
|
+
import React, { useState, useCallback, useMemo } from 'react';
|
|
4
4
|
import kebabCase from 'lodash/kebabCase';
|
|
5
5
|
import trim from 'lodash/trim';
|
|
6
6
|
import isFunction from 'lodash/isFunction';
|
|
@@ -8,7 +8,7 @@ import isUndefined from 'lodash/isUndefined';
|
|
|
8
8
|
import omit from 'lodash/omit';
|
|
9
9
|
import find from 'lodash/find';
|
|
10
10
|
import { findNodeOfTree } from '../utils/treeUtils';
|
|
11
|
-
import { KEY_VALUES, useClassNames, shallowEqual, reactToString, placementPolyfill } from '../utils';
|
|
11
|
+
import { KEY_VALUES, useClassNames, shallowEqual, reactToString, placementPolyfill, useEventCallback } from '../utils';
|
|
12
12
|
import { getHeight } from 'dom-lib';
|
|
13
13
|
var defaultNodeKeys = {
|
|
14
14
|
valueKey: 'value',
|
|
@@ -353,10 +353,10 @@ export var useFocusItemValue = function useFocusItemValue(defaultFocusItemValue,
|
|
|
353
353
|
export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
354
354
|
var _props$toggle = props.toggle,
|
|
355
355
|
toggle = _props$toggle === void 0 ? true : _props$toggle,
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
356
|
+
trigger = props.trigger,
|
|
357
|
+
target = props.target,
|
|
358
|
+
overlay = props.overlay,
|
|
359
|
+
searchInput = props.searchInput,
|
|
360
360
|
active = props.active,
|
|
361
361
|
readOnly = props.readOnly,
|
|
362
362
|
disabled = props.disabled,
|
|
@@ -368,32 +368,32 @@ export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
368
368
|
onMenuKeyDown = props.onMenuKeyDown,
|
|
369
369
|
onMenuPressEnter = props.onMenuPressEnter,
|
|
370
370
|
onMenuPressBackspace = props.onMenuPressBackspace;
|
|
371
|
-
var handleClose =
|
|
372
|
-
var
|
|
373
|
-
(
|
|
371
|
+
var handleClose = useEventCallback(function () {
|
|
372
|
+
var _trigger$current, _trigger$current$clos, _trigger$current2, _trigger$current2$foc;
|
|
373
|
+
(_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : (_trigger$current$clos = _trigger$current.close) === null || _trigger$current$clos === void 0 ? void 0 : _trigger$current$clos.call(_trigger$current);
|
|
374
374
|
|
|
375
375
|
// The focus is on the trigger button after closing
|
|
376
|
-
(
|
|
376
|
+
(_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : (_trigger$current2$foc = _trigger$current2.focus) === null || _trigger$current2$foc === void 0 ? void 0 : _trigger$current2$foc.call(_trigger$current2);
|
|
377
377
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
378
|
-
}
|
|
379
|
-
var handleOpen =
|
|
380
|
-
var
|
|
381
|
-
(
|
|
378
|
+
});
|
|
379
|
+
var handleOpen = useEventCallback(function () {
|
|
380
|
+
var _trigger$current3, _trigger$current3$ope;
|
|
381
|
+
(_trigger$current3 = trigger.current) === null || _trigger$current3 === void 0 ? void 0 : (_trigger$current3$ope = _trigger$current3.open) === null || _trigger$current3$ope === void 0 ? void 0 : _trigger$current3$ope.call(_trigger$current3);
|
|
382
382
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
383
|
-
}
|
|
384
|
-
var handleToggleDropdown =
|
|
383
|
+
});
|
|
384
|
+
var handleToggleDropdown = useEventCallback(function () {
|
|
385
385
|
if (active) {
|
|
386
386
|
handleClose();
|
|
387
387
|
return;
|
|
388
388
|
}
|
|
389
389
|
handleOpen();
|
|
390
|
-
}
|
|
391
|
-
var onToggle =
|
|
390
|
+
});
|
|
391
|
+
var onToggle = useEventCallback(function (event) {
|
|
392
392
|
// Keyboard events should not be processed when readOnly and disabled are set.
|
|
393
393
|
if (readOnly || disabled || loading) {
|
|
394
394
|
return;
|
|
395
395
|
}
|
|
396
|
-
if (event.target === (
|
|
396
|
+
if (event.target === (target === null || target === void 0 ? void 0 : target.current)) {
|
|
397
397
|
// enter
|
|
398
398
|
if (toggle && event.key === KEY_VALUES.ENTER) {
|
|
399
399
|
handleToggleDropdown();
|
|
@@ -404,7 +404,7 @@ export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
404
404
|
onExit === null || onExit === void 0 ? void 0 : onExit(event);
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
|
-
if (
|
|
407
|
+
if (overlay !== null && overlay !== void 0 && overlay.current) {
|
|
408
408
|
// The keyboard operation callback on the menu.
|
|
409
409
|
onMenuKeyDown === null || onMenuKeyDown === void 0 ? void 0 : onMenuKeyDown(event);
|
|
410
410
|
if (event.key === KEY_VALUES.ENTER) {
|
|
@@ -415,7 +415,7 @@ export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
415
415
|
* There is no callback when typing the Backspace key in the search box.
|
|
416
416
|
* The default is to remove search keywords
|
|
417
417
|
*/
|
|
418
|
-
if (event.key === KEY_VALUES.BACKSPACE && event.target !== (
|
|
418
|
+
if (event.key === KEY_VALUES.BACKSPACE && event.target !== (searchInput === null || searchInput === void 0 ? void 0 : searchInput.current)) {
|
|
419
419
|
onMenuPressBackspace === null || onMenuPressBackspace === void 0 ? void 0 : onMenuPressBackspace(event);
|
|
420
420
|
}
|
|
421
421
|
|
|
@@ -425,8 +425,8 @@ export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
425
425
|
// Exclude Input
|
|
426
426
|
// eg: <SelectPicker renderExtraFooter={() => <Input />} />
|
|
427
427
|
if (((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) !== 'INPUT') {
|
|
428
|
-
var
|
|
429
|
-
|
|
428
|
+
var _searchInput$current;
|
|
429
|
+
searchInput === null || searchInput === void 0 ? void 0 : (_searchInput$current = searchInput.current) === null || _searchInput$current === void 0 ? void 0 : _searchInput$current.focus();
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
432
|
}
|
|
@@ -436,7 +436,7 @@ export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
436
436
|
|
|
437
437
|
// Native event callback
|
|
438
438
|
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
439
|
-
}
|
|
439
|
+
});
|
|
440
440
|
return onToggle;
|
|
441
441
|
};
|
|
442
442
|
/**
|
|
@@ -484,70 +484,4 @@ export function useSearch(data, props) {
|
|
|
484
484
|
handleSearch: handleSearch,
|
|
485
485
|
resetSearch: resetSearch
|
|
486
486
|
};
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* A hook of the exposed method of Picker
|
|
490
|
-
*/
|
|
491
|
-
export function usePublicMethods(ref, parmas) {
|
|
492
|
-
var triggerRef = parmas.triggerRef,
|
|
493
|
-
overlayRef = parmas.overlayRef,
|
|
494
|
-
targetRef = parmas.targetRef,
|
|
495
|
-
rootRef = parmas.rootRef,
|
|
496
|
-
listRef = parmas.listRef,
|
|
497
|
-
inline = parmas.inline;
|
|
498
|
-
var handleOpen = useCallback(function () {
|
|
499
|
-
var _triggerRef$current3;
|
|
500
|
-
triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : _triggerRef$current3.open();
|
|
501
|
-
}, [triggerRef]);
|
|
502
|
-
var handleClose = useCallback(function () {
|
|
503
|
-
var _triggerRef$current4;
|
|
504
|
-
triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current4 = triggerRef.current) === null || _triggerRef$current4 === void 0 ? void 0 : _triggerRef$current4.close();
|
|
505
|
-
}, [triggerRef]);
|
|
506
|
-
var handleUpdatePosition = useCallback(function () {
|
|
507
|
-
var _triggerRef$current5;
|
|
508
|
-
triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current5 = triggerRef.current) === null || _triggerRef$current5 === void 0 ? void 0 : _triggerRef$current5.updatePosition();
|
|
509
|
-
}, [triggerRef]);
|
|
510
|
-
useImperativeHandle(ref, function () {
|
|
511
|
-
// Tree and CheckTree
|
|
512
|
-
if (inline) {
|
|
513
|
-
return {
|
|
514
|
-
get root() {
|
|
515
|
-
var _triggerRef$current$r, _triggerRef$current6;
|
|
516
|
-
return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current$r = triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current6 = triggerRef.current) === null || _triggerRef$current6 === void 0 ? void 0 : _triggerRef$current6.root) !== null && _triggerRef$current$r !== void 0 ? _triggerRef$current$r : null;
|
|
517
|
-
},
|
|
518
|
-
get list() {
|
|
519
|
-
if (!(listRef !== null && listRef !== void 0 && listRef.current)) {
|
|
520
|
-
throw new Error('The list is not found, please set `virtualized` for the component.');
|
|
521
|
-
}
|
|
522
|
-
return listRef === null || listRef === void 0 ? void 0 : listRef.current;
|
|
523
|
-
}
|
|
524
|
-
};
|
|
525
|
-
}
|
|
526
|
-
return {
|
|
527
|
-
get root() {
|
|
528
|
-
var _ref, _triggerRef$current7;
|
|
529
|
-
return (_ref = (rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) || (triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current7 = triggerRef.current) === null || _triggerRef$current7 === void 0 ? void 0 : _triggerRef$current7.root)) !== null && _ref !== void 0 ? _ref : null;
|
|
530
|
-
},
|
|
531
|
-
get overlay() {
|
|
532
|
-
var _overlayRef$current;
|
|
533
|
-
if (!(overlayRef !== null && overlayRef !== void 0 && overlayRef.current)) {
|
|
534
|
-
throw new Error('The overlay is not found. Please confirm whether the picker is open.');
|
|
535
|
-
}
|
|
536
|
-
return (_overlayRef$current = overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) !== null && _overlayRef$current !== void 0 ? _overlayRef$current : null;
|
|
537
|
-
},
|
|
538
|
-
get target() {
|
|
539
|
-
var _targetRef$current2;
|
|
540
|
-
return (_targetRef$current2 = targetRef === null || targetRef === void 0 ? void 0 : targetRef.current) !== null && _targetRef$current2 !== void 0 ? _targetRef$current2 : null;
|
|
541
|
-
},
|
|
542
|
-
get list() {
|
|
543
|
-
if (!(listRef !== null && listRef !== void 0 && listRef.current)) {
|
|
544
|
-
throw new Error("\n The list is not found.\n 1.Please set virtualized for the component.\n 2.Please confirm whether the picker is open.\n ");
|
|
545
|
-
}
|
|
546
|
-
return listRef === null || listRef === void 0 ? void 0 : listRef.current;
|
|
547
|
-
},
|
|
548
|
-
updatePosition: handleUpdatePosition,
|
|
549
|
-
open: handleOpen,
|
|
550
|
-
close: handleClose
|
|
551
|
-
};
|
|
552
|
-
});
|
|
553
487
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { PickerLocale } from '../locales';
|
|
3
3
|
import { PickerHandle, PickerToggleProps } from '../Picker';
|
|
4
4
|
import { ListProps } from '../Windowing';
|
|
@@ -49,7 +49,7 @@ export interface SelectPickerProps<T> extends Omit<FormControlPickerProps<T, Pic
|
|
|
49
49
|
}
|
|
50
50
|
export interface SelectPickerComponent {
|
|
51
51
|
<T>(props: SelectPickerProps<T> & {
|
|
52
|
-
ref?: Ref<PickerHandle>;
|
|
52
|
+
ref?: React.Ref<PickerHandle>;
|
|
53
53
|
}): JSX.Element | null;
|
|
54
54
|
displayName?: string;
|
|
55
55
|
propTypes?: React.WeakValidationMap<SelectPickerProps<any>>;
|
|
@@ -3,16 +3,16 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
5
|
var _templateObject;
|
|
6
|
-
import React, {
|
|
6
|
+
import React, { useState } from 'react';
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import pick from 'lodash/pick';
|
|
9
9
|
import isUndefined from 'lodash/isUndefined';
|
|
10
10
|
import isNil from 'lodash/isNil';
|
|
11
11
|
import isFunction from 'lodash/isFunction';
|
|
12
12
|
import omit from 'lodash/omit';
|
|
13
|
-
import { createChainedFunction, useCustom, useClassNames, useControlled, mergeRefs, shallowEqual } from '../utils';
|
|
13
|
+
import { createChainedFunction, useCustom, useClassNames, useControlled, useEventCallback, mergeRefs, shallowEqual } from '../utils';
|
|
14
14
|
import { getDataGroupBy } from '../utils/getDataGroupBy';
|
|
15
|
-
import { DropdownMenu, DropdownMenuItem, PickerToggle, PickerToggleTrigger, PickerOverlay, SearchBar, useFocusItemValue, usePickerClassName, useSearch,
|
|
15
|
+
import { DropdownMenu, DropdownMenuItem, PickerToggle, PickerToggleTrigger, PickerOverlay, SearchBar, useFocusItemValue, usePickerClassName, useSearch, useToggleKeyDownEvent, usePickerRef, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
|
|
16
16
|
var emptyArray = [];
|
|
17
17
|
/**
|
|
18
18
|
* The `SelectPicker` component is used to select an item from a list of data.
|
|
@@ -73,11 +73,13 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
73
73
|
renderMenuItem = props.renderMenuItem,
|
|
74
74
|
renderExtraFooter = props.renderExtraFooter,
|
|
75
75
|
rest = _objectWithoutPropertiesLoose(props, ["as", "appearance", "data", "valueKey", "labelKey", "value", "classPrefix", "placeholder", "defaultValue", "disabled", "cleanable", "placement", "menuClassName", "menuAutoWidth", "menuMaxHeight", "menuStyle", "groupBy", "locale", "toggleAs", "style", "searchable", "disabledItemValues", "virtualized", "listProps", "id", "onGroupTitleClick", "searchBy", "onEntered", "onExited", "onClean", "onChange", "onSelect", "onSearch", "onClose", "onOpen", "sort", "renderValue", "renderMenu", "renderMenuGroup", "renderMenuItem", "renderExtraFooter"]);
|
|
76
|
-
var
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
var _usePickerRef = usePickerRef(ref),
|
|
77
|
+
trigger = _usePickerRef.trigger,
|
|
78
|
+
root = _usePickerRef.root,
|
|
79
|
+
target = _usePickerRef.target,
|
|
80
|
+
overlay = _usePickerRef.overlay,
|
|
81
|
+
list = _usePickerRef.list,
|
|
82
|
+
searchInput = _usePickerRef.searchInput;
|
|
81
83
|
var _useCustom = useCustom('Picker', overrideLocale),
|
|
82
84
|
locale = _useCustom.locale;
|
|
83
85
|
var _ref = useControlled(valueProp, defaultValue),
|
|
@@ -87,7 +89,7 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
87
89
|
data: data,
|
|
88
90
|
valueKey: valueKey,
|
|
89
91
|
target: function target() {
|
|
90
|
-
return
|
|
92
|
+
return overlay.current;
|
|
91
93
|
}
|
|
92
94
|
}),
|
|
93
95
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
@@ -110,19 +112,19 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
110
112
|
var _useState = useState(false),
|
|
111
113
|
active = _useState[0],
|
|
112
114
|
setActive = _useState[1];
|
|
113
|
-
var handleClose =
|
|
114
|
-
var
|
|
115
|
-
(
|
|
116
|
-
}
|
|
117
|
-
var handleSelect =
|
|
118
|
-
var
|
|
115
|
+
var handleClose = useEventCallback(function () {
|
|
116
|
+
var _trigger$current, _trigger$current$clos;
|
|
117
|
+
(_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : (_trigger$current$clos = _trigger$current.close) === null || _trigger$current$clos === void 0 ? void 0 : _trigger$current$clos.call(_trigger$current);
|
|
118
|
+
});
|
|
119
|
+
var handleSelect = useEventCallback(function (value, item, event) {
|
|
120
|
+
var _target$current;
|
|
119
121
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(value, item, event);
|
|
120
|
-
(
|
|
121
|
-
}
|
|
122
|
-
var handleChangeValue =
|
|
122
|
+
(_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
|
|
123
|
+
});
|
|
124
|
+
var handleChangeValue = useEventCallback(function (value, event) {
|
|
123
125
|
onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
|
|
124
|
-
}
|
|
125
|
-
var handleMenuPressEnter =
|
|
126
|
+
});
|
|
127
|
+
var handleMenuPressEnter = useEventCallback(function (event) {
|
|
126
128
|
if (!focusItemValue) {
|
|
127
129
|
return;
|
|
128
130
|
}
|
|
@@ -135,28 +137,28 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
135
137
|
handleSelect(focusItemValue, focusItem, event);
|
|
136
138
|
handleChangeValue(focusItemValue, event);
|
|
137
139
|
handleClose();
|
|
138
|
-
}
|
|
139
|
-
var handleItemSelect =
|
|
140
|
+
});
|
|
141
|
+
var handleItemSelect = useEventCallback(function (value, item, event) {
|
|
140
142
|
setValue(value);
|
|
141
143
|
setFocusItemValue(value);
|
|
142
144
|
handleSelect(value, item, event);
|
|
143
145
|
handleChangeValue(value, event);
|
|
144
146
|
handleClose();
|
|
145
|
-
}
|
|
146
|
-
var handleClean =
|
|
147
|
+
});
|
|
148
|
+
var handleClean = useEventCallback(function (event) {
|
|
147
149
|
if (disabled || !cleanable) {
|
|
148
150
|
return;
|
|
149
151
|
}
|
|
150
152
|
setValue(null);
|
|
151
153
|
setFocusItemValue(value);
|
|
152
154
|
handleChangeValue(null, event);
|
|
153
|
-
}
|
|
155
|
+
});
|
|
154
156
|
var onPickerKeyDown = useToggleKeyDownEvent(_extends({
|
|
155
157
|
toggle: !focusItemValue || !active,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
trigger: trigger,
|
|
159
|
+
target: target,
|
|
160
|
+
overlay: overlay,
|
|
161
|
+
searchInput: searchInput,
|
|
160
162
|
active: active,
|
|
161
163
|
onExit: handleClean,
|
|
162
164
|
onMenuKeyDown: onFocusItem,
|
|
@@ -165,22 +167,16 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
165
167
|
setFocusItemValue(null);
|
|
166
168
|
}
|
|
167
169
|
}, rest));
|
|
168
|
-
var handleExited =
|
|
170
|
+
var handleExited = useEventCallback(function () {
|
|
169
171
|
resetSearch();
|
|
170
172
|
setActive(false);
|
|
171
173
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch('');
|
|
172
174
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
173
|
-
}
|
|
174
|
-
var handleEntered =
|
|
175
|
+
});
|
|
176
|
+
var handleEntered = useEventCallback(function () {
|
|
175
177
|
setActive(true);
|
|
176
178
|
setFocusItemValue(value);
|
|
177
179
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
178
|
-
}, [onOpen, setFocusItemValue, value]);
|
|
179
|
-
usePublicMethods(ref, {
|
|
180
|
-
triggerRef: triggerRef,
|
|
181
|
-
overlayRef: overlayRef,
|
|
182
|
-
targetRef: targetRef,
|
|
183
|
-
listRef: listRef
|
|
184
180
|
});
|
|
185
181
|
|
|
186
182
|
// Find active `MenuItem` by `value`
|
|
@@ -227,7 +223,7 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
227
223
|
var menu = items.length ? /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
228
224
|
id: id ? id + "-listbox" : undefined,
|
|
229
225
|
listProps: listProps,
|
|
230
|
-
listRef:
|
|
226
|
+
listRef: list,
|
|
231
227
|
disabledItemValues: disabledItemValues,
|
|
232
228
|
valueKey: valueKey,
|
|
233
229
|
labelKey: labelKey,
|
|
@@ -252,17 +248,17 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
252
248
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["none"])))
|
|
253
249
|
}, locale === null || locale === void 0 ? void 0 : locale.noResultsText);
|
|
254
250
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
255
|
-
ref: mergeRefs(
|
|
251
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
256
252
|
autoWidth: menuAutoWidth,
|
|
257
253
|
className: classes,
|
|
258
254
|
style: styles,
|
|
259
255
|
onKeyDown: onPickerKeyDown,
|
|
260
|
-
target:
|
|
256
|
+
target: trigger
|
|
261
257
|
}, searchable && /*#__PURE__*/React.createElement(SearchBar, {
|
|
262
258
|
placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
|
|
263
259
|
onChange: handleSearch,
|
|
264
260
|
value: searchKeyword,
|
|
265
|
-
inputRef:
|
|
261
|
+
inputRef: searchInput
|
|
266
262
|
}), renderMenu ? renderMenu(menu) : menu, renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
|
|
267
263
|
};
|
|
268
264
|
var _usePickerClassName = usePickerClassName(_extends({}, props, {
|
|
@@ -276,17 +272,18 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
276
272
|
usedClassNamePropKeys = _usePickerClassName[1];
|
|
277
273
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
278
274
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
279
|
-
ref:
|
|
275
|
+
ref: trigger,
|
|
280
276
|
placement: placement,
|
|
281
277
|
onEntered: createChainedFunction(handleEntered, onEntered),
|
|
282
278
|
onExited: createChainedFunction(handleExited, onExited),
|
|
283
279
|
speaker: renderDropdownMenu
|
|
284
280
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
285
281
|
className: classes,
|
|
286
|
-
style: style
|
|
282
|
+
style: style,
|
|
283
|
+
ref: root
|
|
287
284
|
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
288
285
|
id: id,
|
|
289
|
-
ref:
|
|
286
|
+
ref: target,
|
|
290
287
|
appearance: appearance,
|
|
291
288
|
onClean: createChainedFunction(handleClean, onClean),
|
|
292
289
|
onKeyDown: onPickerKeyDown,
|