rsuite 5.20.0 → 5.22.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 +25 -973
- package/CheckTreePicker/styles/index.less +0 -25
- package/DatePicker/styles/index.less +11 -0
- package/Picker/styles/index.less +0 -10
- package/Picker/styles/mixin.less +0 -5
- package/README.md +4 -2
- package/Table/styles/index.less +12 -7
- package/TreePicker/styles/index.less +0 -19
- package/Windowing/package.json +7 -0
- package/cjs/Calendar/MonthDropdown.d.ts +1 -0
- package/cjs/Calendar/MonthDropdown.js +27 -40
- package/cjs/Cascader/Cascader.d.ts +2 -2
- package/cjs/Cascader/DropdownMenu.js +5 -2
- package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
- package/cjs/CheckPicker/CheckPicker.js +4 -1
- package/cjs/CheckTreePicker/CheckTreePicker.js +37 -39
- package/cjs/CustomProvider/CustomProvider.d.ts +1 -108
- package/cjs/CustomProvider/CustomProvider.js +2 -5
- package/cjs/CustomProvider/index.d.ts +2 -2
- package/cjs/CustomProvider/index.js +0 -1
- package/cjs/DatePicker/DatePicker.js +25 -3
- package/cjs/DatePicker/types.d.ts +1 -0
- package/cjs/DateRangePicker/DateRangePicker.js +39 -20
- package/cjs/Disclosure/Disclosure.d.ts +2 -2
- package/cjs/Disclosure/Disclosure.js +6 -6
- package/cjs/InputPicker/InputPicker.js +4 -1
- package/cjs/Modal/ModalBody.js +18 -17
- package/cjs/MultiCascader/DropdownMenu.js +5 -2
- package/cjs/Navbar/NavbarDropdownMenu.js +16 -10
- package/cjs/Overlay/OverlayTrigger.d.ts +2 -2
- package/cjs/Picker/DropdownMenu.d.ts +2 -1
- package/cjs/Picker/DropdownMenu.js +38 -34
- package/cjs/Picker/PickerOverlay.d.ts +2 -2
- package/cjs/Picker/PickerToggle.js +4 -1
- package/cjs/Picker/PickerToggleTrigger.d.ts +2 -2
- package/cjs/Picker/PickerToggleTrigger.js +11 -10
- package/cjs/Picker/index.d.ts +3 -3
- package/cjs/Picker/types.d.ts +7 -5
- package/cjs/Picker/utils.d.ts +11 -12
- package/cjs/Picker/utils.js +4 -0
- package/cjs/SelectPicker/SelectPicker.d.ts +4 -5
- package/cjs/SelectPicker/SelectPicker.js +4 -1
- package/cjs/Tree/Tree.d.ts +2 -5
- package/cjs/TreePicker/TreePicker.js +35 -37
- package/cjs/TreePicker/test/TreePicker.test.js +14 -0
- package/cjs/Whisper/Whisper.d.ts +3 -3
- package/cjs/Whisper/Whisper.js +11 -10
- package/cjs/Windowing/AutoSizer.d.ts +25 -0
- package/cjs/Windowing/AutoSizer.js +103 -0
- package/cjs/Windowing/List.d.ts +45 -0
- package/cjs/Windowing/List.js +72 -0
- package/cjs/Windowing/index.d.ts +5 -0
- package/cjs/Windowing/index.js +19 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/toaster/ToastContainer.d.ts +2 -1
- package/cjs/toaster/ToastContainer.js +27 -26
- package/cjs/toaster/toaster.d.ts +1 -1
- package/cjs/toaster/toaster.js +43 -13
- package/cjs/toaster/useToaster.d.ts +1 -1
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +6 -1
- package/cjs/utils/render.d.ts +3 -0
- package/cjs/utils/render.js +49 -0
- package/cjs/utils/treeUtils.d.ts +2 -2
- package/cjs/utils/useUniqueId.js +10 -2
- package/dist/rsuite-rtl.css +20 -73
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +20 -73
- package/dist/rsuite.js +118 -377
- 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.LICENSE.txt +2 -0
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/MonthDropdown.d.ts +1 -0
- package/esm/Calendar/MonthDropdown.js +26 -41
- package/esm/Cascader/Cascader.d.ts +2 -2
- package/esm/Cascader/DropdownMenu.js +5 -2
- package/esm/CheckPicker/CheckPicker.d.ts +2 -2
- package/esm/CheckPicker/CheckPicker.js +4 -1
- package/esm/CheckTreePicker/CheckTreePicker.js +37 -38
- package/esm/CustomProvider/CustomProvider.d.ts +1 -108
- package/esm/CustomProvider/CustomProvider.js +2 -4
- package/esm/CustomProvider/index.d.ts +2 -2
- package/esm/CustomProvider/index.js +2 -2
- package/esm/DatePicker/DatePicker.js +22 -3
- package/esm/DatePicker/types.d.ts +1 -0
- package/esm/DateRangePicker/DateRangePicker.js +39 -20
- package/esm/Disclosure/Disclosure.d.ts +2 -2
- package/esm/Disclosure/Disclosure.js +6 -6
- package/esm/InputPicker/InputPicker.js +4 -1
- package/esm/Modal/ModalBody.js +16 -17
- package/esm/MultiCascader/DropdownMenu.js +5 -2
- package/esm/Navbar/NavbarDropdownMenu.js +14 -8
- package/esm/Overlay/OverlayTrigger.d.ts +2 -2
- package/esm/Picker/DropdownMenu.d.ts +2 -1
- package/esm/Picker/DropdownMenu.js +38 -36
- package/esm/Picker/PickerOverlay.d.ts +2 -2
- package/esm/Picker/PickerToggle.js +4 -1
- package/esm/Picker/PickerToggleTrigger.d.ts +2 -2
- package/esm/Picker/PickerToggleTrigger.js +10 -11
- package/esm/Picker/index.d.ts +3 -3
- package/esm/Picker/types.d.ts +7 -5
- package/esm/Picker/utils.d.ts +11 -12
- package/esm/Picker/utils.js +4 -0
- package/esm/SelectPicker/SelectPicker.d.ts +4 -5
- package/esm/SelectPicker/SelectPicker.js +4 -1
- package/esm/Tree/Tree.d.ts +2 -5
- package/esm/TreePicker/TreePicker.js +34 -35
- package/esm/TreePicker/test/TreePicker.test.js +14 -0
- package/esm/Whisper/Whisper.d.ts +3 -3
- package/esm/Whisper/Whisper.js +10 -11
- package/esm/Windowing/AutoSizer.d.ts +25 -0
- package/esm/Windowing/AutoSizer.js +88 -0
- package/esm/Windowing/List.d.ts +45 -0
- package/esm/Windowing/List.js +58 -0
- package/esm/Windowing/index.d.ts +5 -0
- package/esm/Windowing/index.js +3 -0
- package/esm/index.d.ts +1 -0
- package/esm/toaster/ToastContainer.d.ts +2 -1
- package/esm/toaster/ToastContainer.js +28 -26
- package/esm/toaster/toaster.d.ts +1 -1
- package/esm/toaster/toaster.js +41 -13
- package/esm/toaster/useToaster.d.ts +1 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +1 -0
- package/esm/utils/render.d.ts +3 -0
- package/esm/utils/render.js +37 -0
- package/esm/utils/treeUtils.d.ts +2 -2
- package/esm/utils/useUniqueId.js +7 -2
- package/package.json +5 -5
- package/styles/mixins/listbox.less +0 -5
- package/styles/variables.less +1 -0
- package/cjs/Picker/VirtualizedList.d.ts +0 -37
- package/cjs/Picker/VirtualizedList.js +0 -15
- package/esm/Picker/VirtualizedList.d.ts +0 -37
- package/esm/Picker/VirtualizedList.js +0 -4
|
@@ -59,7 +59,7 @@ var Disclosure = /*#__PURE__*/React.memo(function (props) {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
});
|
|
62
|
-
var
|
|
62
|
+
var onMouseEnter = useCallback(function (event) {
|
|
63
63
|
if (!open) {
|
|
64
64
|
dispatch({
|
|
65
65
|
type: DisclosureActionTypes.Show
|
|
@@ -67,7 +67,7 @@ var Disclosure = /*#__PURE__*/React.memo(function (props) {
|
|
|
67
67
|
onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
|
|
68
68
|
}
|
|
69
69
|
}, [open, dispatch, onToggle]);
|
|
70
|
-
var
|
|
70
|
+
var onMouseLeave = useCallback(function (event) {
|
|
71
71
|
if (open) {
|
|
72
72
|
dispatch({
|
|
73
73
|
type: DisclosureActionTypes.Hide
|
|
@@ -98,13 +98,13 @@ var Disclosure = /*#__PURE__*/React.memo(function (props) {
|
|
|
98
98
|
open: open
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
if (trigger.includes('
|
|
102
|
-
renderProps.
|
|
103
|
-
renderProps.
|
|
101
|
+
if (trigger.includes('hover')) {
|
|
102
|
+
renderProps.onMouseEnter = onMouseEnter;
|
|
103
|
+
renderProps.onMouseLeave = onMouseLeave;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
return renderProps;
|
|
107
|
-
}, [open, trigger,
|
|
107
|
+
}, [open, trigger, onMouseEnter, onMouseLeave]);
|
|
108
108
|
return /*#__PURE__*/React.createElement(DisclosureContext.Provider, {
|
|
109
109
|
value: contextValue
|
|
110
110
|
}, children(renderProps, containerElementRef));
|
|
@@ -112,6 +112,7 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
112
112
|
var targetRef = useRef(null);
|
|
113
113
|
var triggerRef = useRef(null);
|
|
114
114
|
var inputRef = useRef();
|
|
115
|
+
var listRef = useRef(null);
|
|
115
116
|
|
|
116
117
|
var _useCustom = useCustom(['Picker', 'InputPicker'], overrideLocale),
|
|
117
118
|
locale = _useCustom.locale;
|
|
@@ -403,7 +404,8 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
403
404
|
usePublicMethods(ref, {
|
|
404
405
|
triggerRef: triggerRef,
|
|
405
406
|
overlayRef: overlayRef,
|
|
406
|
-
targetRef: targetRef
|
|
407
|
+
targetRef: targetRef,
|
|
408
|
+
listRef: listRef
|
|
407
409
|
});
|
|
408
410
|
/**
|
|
409
411
|
* Remove the last item, after pressing the back key on the keyboard.
|
|
@@ -605,6 +607,7 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
605
607
|
var menu = items.length ? /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
606
608
|
id: id ? id + "-listbox" : undefined,
|
|
607
609
|
listProps: listProps,
|
|
610
|
+
listRef: listRef,
|
|
608
611
|
disabledItemValues: disabledItemValues,
|
|
609
612
|
valueKey: valueKey,
|
|
610
613
|
labelKey: labelKey,
|
package/esm/Modal/ModalBody.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useContext } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { useClassNames } from '../utils';
|
|
6
6
|
import { ModalContext } from './ModalContext';
|
|
7
7
|
import IconButton from '../IconButton';
|
|
8
8
|
import Close from '@rsuite/icons/Close';
|
|
9
9
|
var ModalBody = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
10
|
+
var _context$getBodyStyle;
|
|
11
|
+
|
|
10
12
|
var _props$as = props.as,
|
|
11
13
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
12
14
|
_props$classPrefix = props.classPrefix,
|
|
@@ -22,22 +24,19 @@ var ModalBody = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
22
24
|
prefix = _useClassNames.prefix;
|
|
23
25
|
|
|
24
26
|
var classes = merge(className, withClassPrefix());
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
onClick: context === null || context === void 0 ? void 0 : context.onModalClose
|
|
39
|
-
}), children);
|
|
40
|
-
});
|
|
27
|
+
var context = useContext(ModalContext);
|
|
28
|
+
var bodyStyles = context === null || context === void 0 ? void 0 : (_context$getBodyStyle = context.getBodyStyles) === null || _context$getBodyStyle === void 0 ? void 0 : _context$getBodyStyle.call(context);
|
|
29
|
+
return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
30
|
+
ref: ref,
|
|
31
|
+
style: _extends({}, bodyStyles, style),
|
|
32
|
+
className: classes
|
|
33
|
+
}), (context === null || context === void 0 ? void 0 : context.isDrawer) && /*#__PURE__*/React.createElement(IconButton, {
|
|
34
|
+
icon: /*#__PURE__*/React.createElement(Close, null),
|
|
35
|
+
appearance: "subtle",
|
|
36
|
+
size: "sm",
|
|
37
|
+
className: prefix('close'),
|
|
38
|
+
onClick: context === null || context === void 0 ? void 0 : context.onModalClose
|
|
39
|
+
}), children);
|
|
41
40
|
});
|
|
42
41
|
ModalBody.displayName = 'ModalBody';
|
|
43
42
|
ModalBody.propTypes = {
|
|
@@ -50,7 +50,10 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
50
50
|
prefix = _useClassNames.prefix;
|
|
51
51
|
|
|
52
52
|
var classes = merge(className, prefix('items'));
|
|
53
|
-
|
|
53
|
+
|
|
54
|
+
var _useCustom = useCustom('DropdownMenu'),
|
|
55
|
+
rtl = _useCustom.rtl;
|
|
56
|
+
|
|
54
57
|
var getCascadePaths = useCallback(function (layer, node) {
|
|
55
58
|
var paths = [];
|
|
56
59
|
|
|
@@ -77,7 +80,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
77
80
|
}); // Use `value` in keys when If `value` is string or number
|
|
78
81
|
|
|
79
82
|
var onlyKey = typeof value === 'number' || typeof value === 'string' ? value : index;
|
|
80
|
-
var Icon = node.loading ? SpinnerIcon : rtl ?
|
|
83
|
+
var Icon = node.loading ? SpinnerIcon : rtl ? AngleLeftIcon : AngleRightIcon;
|
|
81
84
|
var active = value.some(function (v) {
|
|
82
85
|
return v === nodeValue;
|
|
83
86
|
});
|
|
@@ -5,12 +5,12 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
5
5
|
var _templateObject, _templateObject2;
|
|
6
6
|
|
|
7
7
|
import React, { useContext } from 'react';
|
|
8
|
-
import omit from 'lodash/omit';
|
|
9
|
-
import { mergeRefs, useClassNames } from '../utils';
|
|
10
8
|
import PropTypes from 'prop-types';
|
|
9
|
+
import omit from 'lodash/omit';
|
|
10
|
+
import isNil from 'lodash/isNil';
|
|
11
11
|
import AngleLeft from '@rsuite/icons/legacy/AngleLeft';
|
|
12
12
|
import AngleRight from '@rsuite/icons/legacy/AngleRight';
|
|
13
|
-
import useCustom from '../utils
|
|
13
|
+
import { mergeRefs, useClassNames, useCustom } from '../utils';
|
|
14
14
|
import { NavbarContext } from '.';
|
|
15
15
|
import Disclosure from '../Disclosure';
|
|
16
16
|
import NavContext from '../Nav/NavContext';
|
|
@@ -73,7 +73,7 @@ var NavbarDropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
73
73
|
var Icon = rtl ? AngleLeft : AngleRight;
|
|
74
74
|
return /*#__PURE__*/React.createElement(Disclosure, {
|
|
75
75
|
hideOnClickOutside: true,
|
|
76
|
-
trigger: ['click', '
|
|
76
|
+
trigger: ['click', 'hover'],
|
|
77
77
|
onToggle: function onToggle(open, event) {
|
|
78
78
|
return _onToggle === null || _onToggle === void 0 ? void 0 : _onToggle(open, undefined, event);
|
|
79
79
|
}
|
|
@@ -98,12 +98,18 @@ var NavbarDropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
98
98
|
open: open,
|
|
99
99
|
disabled: disabled
|
|
100
100
|
}));
|
|
101
|
+
var dataAttributes = {
|
|
102
|
+
'data-event-key': eventKey
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
if (!isNil(eventKey) && typeof eventKey !== 'string') {
|
|
106
|
+
dataAttributes['data-event-key-type'] = typeof eventKey;
|
|
107
|
+
}
|
|
108
|
+
|
|
101
109
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
102
110
|
ref: mergeRefs(buttonRef, buttonRef),
|
|
103
|
-
className: classes
|
|
104
|
-
|
|
105
|
-
"data-event-key-type": typeof eventKey
|
|
106
|
-
}, buttonProps), icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
111
|
+
className: classes
|
|
112
|
+
}, dataAttributes, buttonProps), icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
107
113
|
className: prefix('menu-icon')
|
|
108
114
|
}), title, /*#__PURE__*/React.createElement(Icon, {
|
|
109
115
|
className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
|
|
@@ -72,11 +72,11 @@ export declare enum OverlayCloseCause {
|
|
|
72
72
|
ClickOutside = 0,
|
|
73
73
|
ImperativeHandle = 1
|
|
74
74
|
}
|
|
75
|
-
export interface
|
|
75
|
+
export interface OverlayTriggerHandle {
|
|
76
76
|
root: HTMLElement | undefined;
|
|
77
77
|
updatePosition: () => void;
|
|
78
78
|
open: (delay?: number) => void;
|
|
79
79
|
close: (delay?: number) => void;
|
|
80
80
|
}
|
|
81
|
-
declare const OverlayTrigger: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<
|
|
81
|
+
declare const OverlayTrigger: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<OverlayTriggerHandle>>;
|
|
82
82
|
export default OverlayTrigger;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { ListProps } from '
|
|
3
|
+
import { ListProps, ListHandle } from '../Windowing';
|
|
4
4
|
import { StandardProps, ItemDataType } from '../@types/common';
|
|
5
5
|
export interface DropdownMenuProps<Multiple = false> extends StandardProps, Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
6
6
|
classPrefix: string;
|
|
@@ -20,6 +20,7 @@ export interface DropdownMenuProps<Multiple = false> extends StandardProps, Omit
|
|
|
20
20
|
rowGroupHeight?: number;
|
|
21
21
|
virtualized?: boolean;
|
|
22
22
|
listProps?: Partial<ListProps>;
|
|
23
|
+
listRef?: React.Ref<ListHandle>;
|
|
23
24
|
/** Custom selected option */
|
|
24
25
|
renderMenuItem?: (itemLabel: React.ReactNode, item: any) => React.ReactNode;
|
|
25
26
|
renderMenuGroup?: (title: React.ReactNode, item: any) => React.ReactNode;
|
|
@@ -13,9 +13,9 @@ import getPosition from 'dom-lib/getPosition';
|
|
|
13
13
|
import scrollTop from 'dom-lib/scrollTop';
|
|
14
14
|
import getHeight from 'dom-lib/getHeight';
|
|
15
15
|
import classNames from 'classnames';
|
|
16
|
-
import { List, AutoSizer } from '
|
|
16
|
+
import { List, AutoSizer, VariableSizeList } from '../Windowing';
|
|
17
17
|
import shallowEqual from '../utils/shallowEqual';
|
|
18
|
-
import { mergeRefs, useClassNames } from '../utils';
|
|
18
|
+
import { mergeRefs, useClassNames, useMount } from '../utils';
|
|
19
19
|
import DropdownMenuGroup from './DropdownMenuGroup';
|
|
20
20
|
import { KEY_GROUP, KEY_GROUP_TITLE } from '../utils/getDataGroupBy';
|
|
21
21
|
var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
@@ -36,6 +36,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
36
36
|
labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
|
|
37
37
|
virtualized = props.virtualized,
|
|
38
38
|
listProps = props.listProps,
|
|
39
|
+
virtualizedListRef = props.listRef,
|
|
39
40
|
className = props.className,
|
|
40
41
|
style = props.style,
|
|
41
42
|
focusItemValue = props.focusItemValue,
|
|
@@ -49,7 +50,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
49
50
|
renderMenuItem = props.renderMenuItem,
|
|
50
51
|
onGroupTitleClick = props.onGroupTitleClick,
|
|
51
52
|
onSelect = props.onSelect,
|
|
52
|
-
rest = _objectWithoutPropertiesLoose(props, ["data", "group", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "className", "style", "focusItemValue", "dropdownMenuItemClassPrefix", "dropdownMenuItemAs", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
53
|
+
rest = _objectWithoutPropertiesLoose(props, ["data", "group", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "dropdownMenuItemClassPrefix", "dropdownMenuItemAs", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
53
54
|
|
|
54
55
|
var _useClassNames = useClassNames(classPrefix),
|
|
55
56
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
@@ -59,12 +60,8 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
59
60
|
var classes = merge(className, withClassPrefix('items', {
|
|
60
61
|
grouped: group
|
|
61
62
|
}));
|
|
62
|
-
|
|
63
|
-
var styles = _extends({}, style, {
|
|
64
|
-
maxHeight: maxHeight
|
|
65
|
-
});
|
|
66
|
-
|
|
67
63
|
var menuBodyContainerRef = useRef(null);
|
|
64
|
+
var listRef = useRef(null);
|
|
68
65
|
|
|
69
66
|
var _useState = useState([]),
|
|
70
67
|
foldedGroupKeys = _useState[0],
|
|
@@ -86,8 +83,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
86
83
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(value, item, event, checked);
|
|
87
84
|
}, [onSelect]);
|
|
88
85
|
|
|
89
|
-
var getRowHeight = function getRowHeight(list,
|
|
90
|
-
var index = _ref.index;
|
|
86
|
+
var getRowHeight = function getRowHeight(list, index) {
|
|
91
87
|
var item = list[index];
|
|
92
88
|
|
|
93
89
|
if (group && item[KEY_GROUP] && index !== 0) {
|
|
@@ -125,10 +121,13 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
125
121
|
}
|
|
126
122
|
}, [focusItemValue, menuBodyContainerRef, prefix]);
|
|
127
123
|
|
|
128
|
-
var renderItem = function renderItem(
|
|
129
|
-
var index =
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
var renderItem = function renderItem(_ref) {
|
|
125
|
+
var _ref$index = _ref.index,
|
|
126
|
+
index = _ref$index === void 0 ? 0 : _ref$index,
|
|
127
|
+
style = _ref.style,
|
|
128
|
+
data = _ref.data,
|
|
129
|
+
itemData = _ref.item;
|
|
130
|
+
var item = itemData || data[index];
|
|
132
131
|
var value = item[valueKey];
|
|
133
132
|
var label = item[labelKey];
|
|
134
133
|
|
|
@@ -187,40 +186,43 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
187
186
|
return key === ((_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent[KEY_GROUP_TITLE]);
|
|
188
187
|
}));
|
|
189
188
|
}) : data;
|
|
190
|
-
var rowCount = filteredItems.length;
|
|
189
|
+
var rowCount = filteredItems.length;
|
|
190
|
+
useMount(function () {
|
|
191
|
+
var _listRef$current, _listRef$current$scro;
|
|
191
192
|
|
|
192
|
-
|
|
193
|
+
var itemIndex = findIndex(filteredItems, function (item) {
|
|
194
|
+
return item[valueKey] === (activeItemValues === null || activeItemValues === void 0 ? void 0 : activeItemValues[0]);
|
|
195
|
+
});
|
|
196
|
+
(_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : (_listRef$current$scro = _listRef$current.scrollToItem) === null || _listRef$current$scro === void 0 ? void 0 : _listRef$current$scro.call(_listRef$current, itemIndex);
|
|
197
|
+
});
|
|
193
198
|
return /*#__PURE__*/React.createElement("div", _extends({
|
|
194
|
-
role:
|
|
199
|
+
role: "listbox"
|
|
195
200
|
}, rest, {
|
|
196
201
|
className: classes,
|
|
197
202
|
ref: mergeRefs(menuBodyContainerRef, ref),
|
|
198
|
-
style:
|
|
199
|
-
|
|
203
|
+
style: _extends({}, style, {
|
|
204
|
+
maxHeight: maxHeight
|
|
205
|
+
})
|
|
206
|
+
}), virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
|
|
200
207
|
defaultHeight: maxHeight,
|
|
201
208
|
style: {
|
|
202
209
|
width: 'auto',
|
|
203
210
|
height: 'auto'
|
|
204
211
|
}
|
|
205
|
-
}, function (
|
|
206
|
-
var height =
|
|
207
|
-
width = _ref3.width;
|
|
212
|
+
}, function (_ref2) {
|
|
213
|
+
var height = _ref2.height;
|
|
208
214
|
return /*#__PURE__*/React.createElement(List, _extends({
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
"aria-readonly": undefined,
|
|
212
|
-
width: width,
|
|
215
|
+
as: VariableSizeList,
|
|
216
|
+
ref: mergeRefs(listRef, virtualizedListRef),
|
|
213
217
|
height: height || maxHeight,
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
return renderItem(filteredItems, {
|
|
223
|
-
index: index
|
|
218
|
+
itemCount: rowCount,
|
|
219
|
+
itemData: filteredItems,
|
|
220
|
+
itemSize: getRowHeight.bind(_this, filteredItems)
|
|
221
|
+
}, listProps), renderItem);
|
|
222
|
+
}) : filteredItems.map(function (item, index) {
|
|
223
|
+
return renderItem({
|
|
224
|
+
index: index,
|
|
225
|
+
item: item
|
|
224
226
|
});
|
|
225
227
|
}));
|
|
226
228
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import {
|
|
3
|
+
import { OverlayTriggerHandle } from '../Picker';
|
|
4
4
|
export interface PickerOverlayProps extends WithAsProps {
|
|
5
5
|
placement?: string;
|
|
6
6
|
autoWidth?: boolean;
|
|
7
7
|
children?: React.ReactNode;
|
|
8
|
-
target?: React.RefObject<
|
|
8
|
+
target?: React.RefObject<OverlayTriggerHandle>;
|
|
9
9
|
onKeyDown?: (event: React.KeyboardEvent) => void;
|
|
10
10
|
}
|
|
11
11
|
declare const PickerOverlay: RsRefForwardingComponent<'div', PickerOverlayProps>;
|
|
@@ -186,7 +186,10 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
186
186
|
}), /*#__PURE__*/React.createElement(Stack, null, label && /*#__PURE__*/React.createElement(Stack.Item, null, /*#__PURE__*/React.createElement("span", {
|
|
187
187
|
className: prefix('label')
|
|
188
188
|
}, label)), /*#__PURE__*/React.createElement(Stack.Item, {
|
|
189
|
-
grow: 1
|
|
189
|
+
grow: 1,
|
|
190
|
+
style: {
|
|
191
|
+
overflow: 'hidden'
|
|
192
|
+
}
|
|
190
193
|
}, loading ? /*#__PURE__*/React.createElement(Loader, {
|
|
191
194
|
style: {
|
|
192
195
|
display: 'block',
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { OverlayTriggerHandle, OverlayTriggerProps, OverlayTriggerType } from '../Overlay/OverlayTrigger';
|
|
3
3
|
import { PositionChildProps } from '../Overlay/Position';
|
|
4
4
|
import { TypeAttributes, AnimationEventProps } from '../@types/common';
|
|
5
|
-
export type {
|
|
5
|
+
export type { OverlayTriggerHandle, PositionChildProps };
|
|
6
6
|
export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker' | 'onClose'> {
|
|
7
7
|
placement?: TypeAttributes.Placement;
|
|
8
8
|
pickerProps: any;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useContext } from 'react';
|
|
4
4
|
import pick from 'lodash/pick';
|
|
5
5
|
import OverlayTrigger from '../Overlay/OverlayTrigger';
|
|
6
6
|
import { placementPolyfill } from '../utils';
|
|
7
|
-
import {
|
|
7
|
+
import { CustomContext } from '../CustomProvider';
|
|
8
8
|
export var omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'defaultOpen', 'onHide', 'container', 'containerPadding', 'preventOverflow'];
|
|
9
9
|
export var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading']);
|
|
10
10
|
var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
@@ -16,15 +16,14 @@ var PickerToggleTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
16
16
|
rest = _objectWithoutPropertiesLoose(props, ["pickerProps", "speaker", "placement", "trigger"]);
|
|
17
17
|
|
|
18
18
|
var pickerTriggerProps = pick(pickerProps, pickTriggerPropKeys);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
});
|
|
19
|
+
var context = useContext(CustomContext);
|
|
20
|
+
return /*#__PURE__*/React.createElement(OverlayTrigger, _extends({}, rest, pickerTriggerProps, {
|
|
21
|
+
disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
|
|
22
|
+
ref: ref,
|
|
23
|
+
trigger: trigger,
|
|
24
|
+
placement: placementPolyfill(placement, context === null || context === void 0 ? void 0 : context.rtl),
|
|
25
|
+
speaker: speaker
|
|
26
|
+
}));
|
|
28
27
|
});
|
|
29
28
|
PickerToggleTrigger.displayName = 'PickerToggleTrigger';
|
|
30
29
|
export default PickerToggleTrigger;
|
package/esm/Picker/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { pickTriggerPropKeys, omitTriggerPropKeys,
|
|
1
|
+
import { pickTriggerPropKeys, omitTriggerPropKeys, OverlayTriggerHandle, PositionChildProps } from './PickerToggleTrigger';
|
|
2
2
|
import { PickerToggleProps } from './PickerToggle';
|
|
3
|
-
import {
|
|
3
|
+
import { PickerHandle, PickerComponent } from './types';
|
|
4
4
|
export { default as DropdownMenu } from './DropdownMenu';
|
|
5
5
|
export { default as DropdownMenuCheckItem } from './DropdownMenuCheckItem';
|
|
6
6
|
export { default as DropdownMenuGroup } from './DropdownMenuGroup';
|
|
@@ -11,6 +11,6 @@ export { default as PickerToggleTrigger } from './PickerToggleTrigger';
|
|
|
11
11
|
export { default as SearchBar } from './SearchBar';
|
|
12
12
|
export { default as SelectedElement } from './SelectedElement';
|
|
13
13
|
export { pickTriggerPropKeys, omitTriggerPropKeys };
|
|
14
|
-
export type {
|
|
14
|
+
export type { OverlayTriggerHandle, PositionChildProps, PickerHandle, PickerComponent, PickerToggleProps };
|
|
15
15
|
export * from './utils';
|
|
16
16
|
export * from './propTypes';
|
package/esm/Picker/types.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import type { ListHandle } from '../Windowing';
|
|
4
|
+
export interface PickerHandle {
|
|
5
|
+
root: HTMLElement | null;
|
|
6
|
+
list?: ListHandle;
|
|
7
|
+
overlay?: HTMLElement | null;
|
|
8
|
+
target?: HTMLElement | null;
|
|
7
9
|
updatePosition?: () => void;
|
|
8
10
|
open?: () => void;
|
|
9
11
|
close?: () => void;
|
|
10
12
|
}
|
|
11
13
|
export declare type PickerComponent<P> = RsRefForwardingComponent<'div', P & {
|
|
12
|
-
ref?: React.Ref<
|
|
14
|
+
ref?: React.Ref<PickerHandle>;
|
|
13
15
|
}>;
|
package/esm/Picker/utils.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { OverlayTriggerHandle } from './PickerToggleTrigger';
|
|
3
3
|
import { TypeAttributes, ItemDataType } from '../@types/common';
|
|
4
|
-
import {
|
|
5
|
-
interface NodeKeys {
|
|
4
|
+
import type { ListHandle } from '../Windowing';
|
|
5
|
+
export interface NodeKeys {
|
|
6
6
|
valueKey: string;
|
|
7
7
|
childrenKey: string;
|
|
8
8
|
}
|
|
9
9
|
export declare function createConcatChildrenFunction<T = any>(node: any, nodeValue?: any, nodeKeys?: NodeKeys): (data: T[], children: T[]) => T[];
|
|
10
10
|
export declare function shouldDisplay(label: React.ReactNode, searchKeyword: string): boolean;
|
|
11
|
-
interface PickerClassNameProps {
|
|
11
|
+
export interface PickerClassNameProps {
|
|
12
12
|
name?: string;
|
|
13
13
|
classPrefix: string;
|
|
14
14
|
className?: string;
|
|
@@ -27,7 +27,7 @@ interface PickerClassNameProps {
|
|
|
27
27
|
* The className of the assembled Toggle is on the Picker.
|
|
28
28
|
*/
|
|
29
29
|
export declare function usePickerClassName(props: PickerClassNameProps): [string, string[]];
|
|
30
|
-
interface EventsProps {
|
|
30
|
+
export interface EventsProps {
|
|
31
31
|
down?: React.KeyboardEventHandler;
|
|
32
32
|
up?: React.KeyboardEventHandler;
|
|
33
33
|
enter?: React.KeyboardEventHandler;
|
|
@@ -42,7 +42,7 @@ interface EventsProps {
|
|
|
42
42
|
* @param events Event callback functions
|
|
43
43
|
*/
|
|
44
44
|
export declare function onMenuKeyDown(event: React.KeyboardEvent, events: EventsProps): void;
|
|
45
|
-
interface FocusItemValueProps {
|
|
45
|
+
export interface FocusItemValueProps {
|
|
46
46
|
target: HTMLElement | null | (() => HTMLElement | null);
|
|
47
47
|
data?: any[];
|
|
48
48
|
valueKey?: string;
|
|
@@ -65,7 +65,7 @@ export declare const useFocusItemValue: <T>(defaultFocusItemValue: T | null | un
|
|
|
65
65
|
setKeys: React.Dispatch<React.SetStateAction<any[]>>;
|
|
66
66
|
onKeyDown: (event: any) => void;
|
|
67
67
|
};
|
|
68
|
-
interface ToggleKeyDownEventProps {
|
|
68
|
+
export interface ToggleKeyDownEventProps {
|
|
69
69
|
toggle?: boolean;
|
|
70
70
|
triggerRef: React.RefObject<any>;
|
|
71
71
|
targetRef: React.RefObject<any>;
|
|
@@ -86,7 +86,7 @@ interface ToggleKeyDownEventProps {
|
|
|
86
86
|
* @param props
|
|
87
87
|
*/
|
|
88
88
|
export declare const useToggleKeyDownEvent: (props: ToggleKeyDownEventProps) => (event: React.KeyboardEvent) => void;
|
|
89
|
-
interface SearchProps {
|
|
89
|
+
export interface SearchProps {
|
|
90
90
|
labelKey: string;
|
|
91
91
|
data: ItemDataType[];
|
|
92
92
|
searchBy?: (keyword: any, label: any, item: any) => boolean;
|
|
@@ -104,16 +104,15 @@ export declare function useSearch(props: SearchProps): {
|
|
|
104
104
|
checkShouldDisplay: (item: ItemDataType, keyword?: string) => boolean;
|
|
105
105
|
handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
|
|
106
106
|
};
|
|
107
|
-
interface PickerDependentParameters {
|
|
108
|
-
triggerRef?: React.RefObject<
|
|
107
|
+
export interface PickerDependentParameters {
|
|
108
|
+
triggerRef?: React.RefObject<OverlayTriggerHandle>;
|
|
109
109
|
rootRef?: React.RefObject<HTMLElement>;
|
|
110
110
|
overlayRef?: React.RefObject<HTMLElement>;
|
|
111
111
|
targetRef?: React.RefObject<HTMLElement>;
|
|
112
|
-
listRef?: React.RefObject<
|
|
112
|
+
listRef?: React.RefObject<ListHandle>;
|
|
113
113
|
inline?: boolean;
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
116
116
|
* A hook of the exposed method of Picker
|
|
117
117
|
*/
|
|
118
118
|
export declare function usePublicMethods(ref: any, parmas: PickerDependentParameters): void;
|
|
119
|
-
export {};
|
package/esm/Picker/utils.js
CHANGED
|
@@ -522,6 +522,10 @@ export function usePublicMethods(ref, parmas) {
|
|
|
522
522
|
get overlay() {
|
|
523
523
|
var _overlayRef$current;
|
|
524
524
|
|
|
525
|
+
if (!(overlayRef !== null && overlayRef !== void 0 && overlayRef.current)) {
|
|
526
|
+
throw new Error('The overlay is not found. Please confirm whether the picker is open.');
|
|
527
|
+
}
|
|
528
|
+
|
|
525
529
|
return (_overlayRef$current = overlayRef === null || overlayRef === void 0 ? void 0 : overlayRef.current) !== null && _overlayRef$current !== void 0 ? _overlayRef$current : null;
|
|
526
530
|
},
|
|
527
531
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { Ref } from 'react';
|
|
2
2
|
import { PickerLocale } from '../locales';
|
|
3
|
-
import {
|
|
4
|
-
import { ListProps } from '../
|
|
3
|
+
import { PickerHandle, PickerToggleProps } from '../Picker';
|
|
4
|
+
import { ListProps } from '../Windowing';
|
|
5
5
|
import { FormControlPickerProps, ItemDataType } from '../@types/common';
|
|
6
6
|
export interface SelectProps<T> {
|
|
7
7
|
/** Set group condition key in data */
|
|
@@ -13,8 +13,7 @@ export interface SelectProps<T> {
|
|
|
13
13
|
/** Whether using virtualized list */
|
|
14
14
|
virtualized?: boolean;
|
|
15
15
|
/**
|
|
16
|
-
* List
|
|
17
|
-
* https://github.com/bvaughn/react-virtualized/blob/master/docs/List.md#prop-types
|
|
16
|
+
* Virtualized List Props
|
|
18
17
|
*/
|
|
19
18
|
listProps?: Partial<ListProps>;
|
|
20
19
|
/** Custom search rules. */
|
|
@@ -52,7 +51,7 @@ export interface SelectPickerProps<T> extends Omit<FormControlPickerProps<T, Pic
|
|
|
52
51
|
}
|
|
53
52
|
export interface SelectPickerComponent {
|
|
54
53
|
<T>(props: SelectPickerProps<T> & {
|
|
55
|
-
ref?: Ref<
|
|
54
|
+
ref?: Ref<PickerHandle>;
|
|
56
55
|
}): JSX.Element | null;
|
|
57
56
|
displayName?: string;
|
|
58
57
|
propTypes?: React.WeakValidationMap<SelectPickerProps<any>>;
|
|
@@ -74,6 +74,7 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
74
74
|
var targetRef = useRef(null);
|
|
75
75
|
var overlayRef = useRef(null);
|
|
76
76
|
var searchInputRef = useRef(null);
|
|
77
|
+
var listRef = useRef(null);
|
|
77
78
|
|
|
78
79
|
var _useCustom = useCustom('Picker', overrideLocale),
|
|
79
80
|
locale = _useCustom.locale;
|
|
@@ -193,7 +194,8 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
193
194
|
usePublicMethods(ref, {
|
|
194
195
|
triggerRef: triggerRef,
|
|
195
196
|
overlayRef: overlayRef,
|
|
196
|
-
targetRef: targetRef
|
|
197
|
+
targetRef: targetRef,
|
|
198
|
+
listRef: listRef
|
|
197
199
|
}); // Find active `MenuItem` by `value`
|
|
198
200
|
|
|
199
201
|
var activeItem = data.find(function (item) {
|
|
@@ -246,6 +248,7 @@ var SelectPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
246
248
|
var menu = items.length ? /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
247
249
|
id: id ? id + "-listbox" : undefined,
|
|
248
250
|
listProps: listProps,
|
|
251
|
+
listRef: listRef,
|
|
249
252
|
disabledItemValues: disabledItemValues,
|
|
250
253
|
valueKey: valueKey,
|
|
251
254
|
labelKey: labelKey,
|
package/esm/Tree/Tree.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { StandardProps, ItemDataType, RsRefForwardingComponent } from '../@types/common';
|
|
3
|
-
import { ListProps } from '../
|
|
3
|
+
import { ListProps } from '../Windowing';
|
|
4
4
|
/**
|
|
5
5
|
* Tree Node Drag Type
|
|
6
6
|
*/
|
|
@@ -46,10 +46,7 @@ export interface TreeBaseProps<ValueType = string | number, ItemDataType = Recor
|
|
|
46
46
|
showIndentLine?: boolean;
|
|
47
47
|
/** Whether using virtualized list */
|
|
48
48
|
virtualized?: boolean;
|
|
49
|
-
/**
|
|
50
|
-
* List-related properties in `react-virtualized`
|
|
51
|
-
* https://github.com/bvaughn/react-virtualized/blob/master/docs/List.md#prop-types
|
|
52
|
-
*/
|
|
49
|
+
/** Virtualized List props */
|
|
53
50
|
listProps?: Partial<ListProps>;
|
|
54
51
|
/** Expand all nodes By default */
|
|
55
52
|
defaultExpandAll?: boolean;
|