rsuite 5.4.1 → 5.5.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/Button/styles/index.less +1 -5
- package/CHANGELOG.md +42 -0
- package/CheckTreePicker/styles/index.less +48 -47
- package/Drawer/styles/index.less +3 -0
- package/Dropdown/styles/index.less +3 -19
- package/Dropdown/styles/mixin.less +0 -2
- package/Modal/styles/index.less +23 -22
- package/Navbar/styles/index.less +20 -8
- package/Picker/styles/mixin.less +3 -2
- package/README.md +1 -1
- package/Sidenav/styles/index.less +58 -57
- package/TreePicker/styles/index.less +3 -3
- package/cjs/Affix/Affix.js +3 -1
- package/cjs/Calendar/useCalendarDate.d.ts +1 -1
- package/cjs/Calendar/useCalendarDate.js +1 -1
- package/cjs/Carousel/Carousel.js +7 -1
- package/cjs/Cascader/Cascader.js +13 -2
- package/cjs/CheckPicker/CheckPicker.d.ts +5 -2
- package/cjs/CheckPicker/test/CheckPicker.test.js +8 -0
- package/cjs/CheckTreePicker/CheckTreePicker.js +1 -1
- package/cjs/CheckTreePicker/utils.js +1 -1
- package/cjs/CustomProvider/CustomProvider.d.ts +14 -14
- package/cjs/CustomProvider/CustomProvider.js +4 -3
- package/cjs/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/DatePicker/DatePicker.js +2 -4
- package/cjs/Disclosure/Disclosure.d.ts +8 -5
- package/cjs/Disclosure/Disclosure.js +49 -9
- package/cjs/Disclosure/DisclosureButton.d.ts +2 -2
- package/cjs/Disclosure/DisclosureContext.d.ts +6 -1
- package/cjs/Dropdown/Dropdown.d.ts +5 -0
- package/cjs/Dropdown/Dropdown.js +1 -1
- package/cjs/Dropdown/DropdownItem.js +9 -10
- package/cjs/Dropdown/DropdownMenu.js +69 -20
- package/cjs/Dropdown/test/Dropdown.test.d.ts +1 -0
- package/cjs/Dropdown/test/Dropdown.test.js +30 -0
- package/cjs/InputNumber/InputNumber.d.ts +1 -1
- package/cjs/InputNumber/InputNumber.js +36 -6
- package/cjs/InputNumber/test/InputNumber.test.d.ts +1 -0
- package/cjs/InputNumber/test/InputNumber.test.js +14 -0
- package/cjs/Modal/Modal.js +34 -22
- package/cjs/Modal/utils.js +16 -8
- package/cjs/MultiCascader/MultiCascader.js +7 -3
- package/cjs/Nav/NavItem.js +3 -1
- package/cjs/Navbar/index.d.ts +1 -0
- package/cjs/Navbar/index.js +4 -3
- package/cjs/Overlay/Modal.js +10 -27
- package/cjs/Picker/DropdownMenu.js +5 -0
- package/cjs/Picker/PickerToggle.js +2 -4
- package/cjs/RangeSlider/RangeSlider.d.ts +12 -2
- package/cjs/RangeSlider/RangeSlider.js +35 -12
- package/cjs/SelectPicker/SelectPicker.d.ts +5 -2
- package/cjs/SelectPicker/test/SelectPicker.test.js +8 -0
- package/cjs/Uploader/UploadFileItem.d.ts +1 -1
- package/cjs/Uploader/UploadFileItem.js +1 -1
- package/cjs/Uploader/Uploader.js +3 -0
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +7 -2
- package/cjs/utils/propTypeChecker.d.ts +2 -6
- package/cjs/utils/propTypeChecker.js +7 -59
- package/cjs/utils/treeUtils.js +4 -3
- package/cjs/utils/useClickOutside.js +6 -2
- package/cjs/utils/useMount.d.ts +2 -0
- package/cjs/utils/useMount.js +19 -0
- package/dist/rsuite-rtl.css +416 -264
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +416 -264
- package/dist/rsuite.js +55 -33
- 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/Affix/Affix.js +4 -2
- package/esm/Calendar/useCalendarDate.d.ts +1 -1
- package/esm/Calendar/useCalendarDate.js +1 -1
- package/esm/Carousel/Carousel.js +9 -3
- package/esm/Cascader/Cascader.js +13 -2
- package/esm/CheckPicker/CheckPicker.d.ts +5 -2
- package/esm/CheckPicker/test/CheckPicker.test.js +7 -0
- package/esm/CheckTreePicker/CheckTreePicker.js +1 -1
- package/esm/CheckTreePicker/utils.js +1 -1
- package/esm/CustomProvider/CustomProvider.d.ts +14 -14
- package/esm/CustomProvider/CustomProvider.js +2 -2
- package/esm/DatePicker/DatePicker.d.ts +1 -1
- package/esm/DatePicker/DatePicker.js +2 -3
- package/esm/Disclosure/Disclosure.d.ts +8 -5
- package/esm/Disclosure/Disclosure.js +50 -11
- package/esm/Disclosure/DisclosureButton.d.ts +2 -2
- package/esm/Disclosure/DisclosureContext.d.ts +6 -1
- package/esm/Dropdown/Dropdown.d.ts +5 -0
- package/esm/Dropdown/Dropdown.js +1 -1
- package/esm/Dropdown/DropdownItem.js +9 -9
- package/esm/Dropdown/DropdownMenu.js +69 -20
- package/esm/Dropdown/test/Dropdown.test.d.ts +1 -0
- package/esm/Dropdown/test/Dropdown.test.js +22 -0
- package/esm/InputNumber/InputNumber.d.ts +1 -1
- package/esm/InputNumber/InputNumber.js +38 -7
- package/esm/InputNumber/test/InputNumber.test.d.ts +1 -0
- package/esm/InputNumber/test/InputNumber.test.js +7 -0
- package/esm/Modal/Modal.js +36 -24
- package/esm/Modal/utils.js +16 -8
- package/esm/MultiCascader/MultiCascader.js +7 -3
- package/esm/Nav/NavItem.js +3 -1
- package/esm/Navbar/index.d.ts +1 -0
- package/esm/Navbar/index.js +1 -0
- package/esm/Overlay/Modal.js +10 -27
- package/esm/Picker/DropdownMenu.js +5 -0
- package/esm/Picker/PickerToggle.js +2 -4
- package/esm/RangeSlider/RangeSlider.d.ts +12 -2
- package/esm/RangeSlider/RangeSlider.js +35 -12
- package/esm/SelectPicker/SelectPicker.d.ts +5 -2
- package/esm/SelectPicker/test/SelectPicker.test.js +7 -0
- package/esm/Uploader/UploadFileItem.d.ts +1 -1
- package/esm/Uploader/UploadFileItem.js +1 -1
- package/esm/Uploader/Uploader.js +4 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +2 -1
- package/esm/utils/propTypeChecker.d.ts +2 -6
- package/esm/utils/propTypeChecker.js +7 -59
- package/esm/utils/treeUtils.js +6 -3
- package/esm/utils/useClickOutside.js +6 -2
- package/esm/utils/useMount.d.ts +2 -0
- package/esm/utils/useMount.js +13 -0
- package/package.json +2 -2
- 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/utilities.less +17 -5
package/esm/Affix/Affix.js
CHANGED
|
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import getOffset from 'dom-lib/getOffset';
|
|
6
|
-
import { mergeRefs, useClassNames, useElementResize, useEventListener } from '../utils';
|
|
6
|
+
import { mergeRefs, useClassNames, useElementResize, useEventListener, useMount } from '../utils';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Get the layout size and offset of the mount element
|
|
@@ -21,7 +21,9 @@ function useOffset(mountRef) {
|
|
|
21
21
|
return mountRef.current;
|
|
22
22
|
}, updateOffset); // Initialize after the first render
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
useMount(updateOffset); // Update after window size changes
|
|
25
|
+
|
|
26
|
+
useEventListener(window, 'resize', updateOffset, false);
|
|
25
27
|
return offset;
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const useCalendarDate: (value: Date | undefined, defaultDate: Date | undefined) => {
|
|
1
|
+
declare const useCalendarDate: (value: Date | null | undefined, defaultDate: Date | undefined) => {
|
|
2
2
|
calendarDate: Date;
|
|
3
3
|
setCalendarDate: (date: Date | undefined) => void;
|
|
4
4
|
};
|
|
@@ -19,7 +19,7 @@ var useCalendarDate = function useCalendarDate(value, defaultDate) {
|
|
|
19
19
|
var _valueRef$current;
|
|
20
20
|
|
|
21
21
|
if ((value === null || value === void 0 ? void 0 : value.valueOf()) !== ((_valueRef$current = valueRef.current) === null || _valueRef$current === void 0 ? void 0 : _valueRef$current.valueOf())) {
|
|
22
|
-
setCalendarDate(value);
|
|
22
|
+
setCalendarDate(value !== null && value !== void 0 ? value : new Date());
|
|
23
23
|
valueRef.current = value;
|
|
24
24
|
}
|
|
25
25
|
}, [value]);
|
package/esm/Carousel/Carousel.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React, { useState, useMemo, useCallback } from 'react';
|
|
3
|
+
import React, { useState, useMemo, useCallback, useRef } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import classNames from 'classnames';
|
|
6
|
-
import { useClassNames, useCustom, guid, ReactChildren, useTimeout } from '../utils';
|
|
6
|
+
import { useClassNames, useCustom, guid, ReactChildren, useTimeout, mergeRefs } from '../utils';
|
|
7
7
|
var Carousel = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
8
8
|
var _sliderStyles, _ref;
|
|
9
9
|
|
|
@@ -46,7 +46,13 @@ var Carousel = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
46
46
|
lastIndex = _useState2[0],
|
|
47
47
|
setLastIndex = _useState2[1];
|
|
48
48
|
|
|
49
|
+
var rootRef = useRef(null);
|
|
50
|
+
|
|
49
51
|
var handleSlide = function handleSlide(nextActiveIndex, event) {
|
|
52
|
+
if (!rootRef.current) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
50
56
|
clear();
|
|
51
57
|
var index = nextActiveIndex !== null && nextActiveIndex !== void 0 ? nextActiveIndex : activeIndex + 1; // When index is greater than count, start from 1 again.
|
|
52
58
|
|
|
@@ -111,7 +117,7 @@ var Carousel = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
111
117
|
var sliderStyles = (_sliderStyles = {}, _sliderStyles[lengthKey] = count * 100 + "%", _sliderStyles.transform = vertical ? "translate3d(0, " + activeRatio + " ,0)" : "translate3d(" + activeRatio + ", 0 ,0)", _sliderStyles);
|
|
112
118
|
var showMask = count > 1 && activeIndex === 0 && activeIndex !== lastIndex;
|
|
113
119
|
return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
114
|
-
ref: ref,
|
|
120
|
+
ref: mergeRefs(ref, rootRef),
|
|
115
121
|
className: classes
|
|
116
122
|
}), /*#__PURE__*/React.createElement("div", {
|
|
117
123
|
className: prefix('content')
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -188,10 +188,18 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
188
188
|
}
|
|
189
189
|
}, [getSearchResult, onSearch, setFocusItemValue, setKeys, setLayer, valueKey]);
|
|
190
190
|
var handleEntered = useCallback(function () {
|
|
191
|
+
if (!targetRef.current) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
191
195
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
192
196
|
setActive(true);
|
|
193
197
|
}, [onOpen]);
|
|
194
198
|
var handleExited = useCallback(function () {
|
|
199
|
+
if (!targetRef.current) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
|
|
195
203
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
196
204
|
setActive(false);
|
|
197
205
|
setSearchKeyword('');
|
|
@@ -202,7 +210,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
202
210
|
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
|
|
203
211
|
}, [triggerRef]);
|
|
204
212
|
var handleClean = useCallback(function (event) {
|
|
205
|
-
if (disabled) {
|
|
213
|
+
if (disabled || !targetRef.current) {
|
|
206
214
|
return;
|
|
207
215
|
}
|
|
208
216
|
|
|
@@ -260,7 +268,10 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
260
268
|
children.then(function (data) {
|
|
261
269
|
node.loading = false;
|
|
262
270
|
node[childrenKey] = data;
|
|
263
|
-
|
|
271
|
+
|
|
272
|
+
if (targetRef.current) {
|
|
273
|
+
addColumn(data, cascadePaths.length);
|
|
274
|
+
}
|
|
264
275
|
});
|
|
265
276
|
} else {
|
|
266
277
|
node.loading = false;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { Ref } from 'react';
|
|
2
2
|
import { PickerLocale } from '../locales';
|
|
3
|
+
import { PickerInstance } from '../Picker';
|
|
3
4
|
import { ItemDataType, FormControlPickerProps } from '../@types/common';
|
|
4
5
|
import type { MultipleSelectProps } from '../SelectPicker';
|
|
5
6
|
export declare type ValueType = (number | string)[];
|
|
@@ -10,7 +11,9 @@ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerL
|
|
|
10
11
|
countable?: boolean;
|
|
11
12
|
}
|
|
12
13
|
export interface CheckPickerComponent {
|
|
13
|
-
<T>(props: CheckPickerProps<T>
|
|
14
|
+
<T>(props: CheckPickerProps<T> & {
|
|
15
|
+
ref?: Ref<PickerInstance>;
|
|
16
|
+
}): JSX.Element | null;
|
|
14
17
|
displayName?: string;
|
|
15
18
|
propTypes?: React.WeakValidationMap<CheckPickerProps<any>>;
|
|
16
19
|
}
|
|
@@ -61,4 +61,11 @@ React.createElement(CheckPicker, {
|
|
|
61
61
|
onChange: function onChange(newValue) {
|
|
62
62
|
expectType(newValue);
|
|
63
63
|
}
|
|
64
|
+
});
|
|
65
|
+
var pickerRef = /*#__PURE__*/React.createRef();
|
|
66
|
+
|
|
67
|
+
/*#__PURE__*/
|
|
68
|
+
React.createElement(CheckPicker, {
|
|
69
|
+
ref: pickerRef,
|
|
70
|
+
data: []
|
|
64
71
|
});
|
|
@@ -621,7 +621,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
621
621
|
var renderCheckTree = function renderCheckTree() {
|
|
622
622
|
var _withCheckTreeClassPr, _merge2;
|
|
623
623
|
|
|
624
|
-
var classes = withCheckTreeClassPrefix((_withCheckTreeClassPr = {}, _withCheckTreeClassPr[className !== null && className !== void 0 ? className : ''] = inline, _withCheckTreeClassPr['without-children'] = !isSomeNodeHasChildren, _withCheckTreeClassPr.virtualized = virtualized, _withCheckTreeClassPr));
|
|
624
|
+
var classes = withCheckTreeClassPrefix((_withCheckTreeClassPr = {}, _withCheckTreeClassPr[className !== null && className !== void 0 ? className : ''] = inline, _withCheckTreeClassPr['without-children'] = !isSomeNodeHasChildren(data, childrenKey), _withCheckTreeClassPr.virtualized = virtualized, _withCheckTreeClassPr));
|
|
625
625
|
var formattedNodes = getFormattedNodes(renderNode);
|
|
626
626
|
|
|
627
627
|
if (!formattedNodes.some(function (v) {
|
|
@@ -38,7 +38,7 @@ export function isSomeChildChecked(nodes, parent, childrenKey) {
|
|
|
38
38
|
}
|
|
39
39
|
export function isSomeNodeHasChildren(data, childrenKey) {
|
|
40
40
|
return data.some(function (node) {
|
|
41
|
-
return node[childrenKey];
|
|
41
|
+
return Array.isArray(node[childrenKey]);
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
@@ -72,10 +72,10 @@ declare const CustomContext: React.Context<CustomProviderProps<{
|
|
|
72
72
|
saturday: string;
|
|
73
73
|
ok: string;
|
|
74
74
|
today: string;
|
|
75
|
-
yesterday: string;
|
|
75
|
+
yesterday: string;
|
|
76
76
|
hours: string;
|
|
77
77
|
minutes: string;
|
|
78
|
-
seconds: string;
|
|
78
|
+
seconds: string; /** Support right-to-left */
|
|
79
79
|
formattedMonthPattern: string;
|
|
80
80
|
formattedDayPattern: string;
|
|
81
81
|
dateLocale: any;
|
|
@@ -90,10 +90,10 @@ declare const CustomContext: React.Context<CustomProviderProps<{
|
|
|
90
90
|
saturday: string;
|
|
91
91
|
ok: string;
|
|
92
92
|
today: string;
|
|
93
|
-
yesterday: string;
|
|
93
|
+
yesterday: string;
|
|
94
94
|
hours: string;
|
|
95
95
|
minutes: string;
|
|
96
|
-
seconds: string;
|
|
96
|
+
seconds: string; /** Support right-to-left */
|
|
97
97
|
formattedMonthPattern: string;
|
|
98
98
|
formattedDayPattern: string;
|
|
99
99
|
dateLocale: any;
|
|
@@ -109,10 +109,10 @@ declare const CustomContext: React.Context<CustomProviderProps<{
|
|
|
109
109
|
saturday: string;
|
|
110
110
|
ok: string;
|
|
111
111
|
today: string;
|
|
112
|
-
yesterday: string;
|
|
112
|
+
yesterday: string;
|
|
113
113
|
hours: string;
|
|
114
114
|
minutes: string;
|
|
115
|
-
seconds: string;
|
|
115
|
+
seconds: string; /** Support right-to-left */
|
|
116
116
|
formattedMonthPattern: string;
|
|
117
117
|
formattedDayPattern: string;
|
|
118
118
|
dateLocale: any;
|
|
@@ -120,7 +120,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
|
|
|
120
120
|
Picker?: {
|
|
121
121
|
noResultsText: string;
|
|
122
122
|
placeholder: string;
|
|
123
|
-
searchPlaceholder: string;
|
|
123
|
+
searchPlaceholder: string;
|
|
124
124
|
checkAll: string;
|
|
125
125
|
} | undefined;
|
|
126
126
|
InputPicker?: {
|
|
@@ -176,10 +176,10 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
|
|
|
176
176
|
saturday: string;
|
|
177
177
|
ok: string;
|
|
178
178
|
today: string;
|
|
179
|
-
yesterday: string;
|
|
179
|
+
yesterday: string;
|
|
180
180
|
hours: string;
|
|
181
181
|
minutes: string;
|
|
182
|
-
seconds: string;
|
|
182
|
+
seconds: string; /** Support right-to-left */
|
|
183
183
|
formattedMonthPattern: string;
|
|
184
184
|
formattedDayPattern: string;
|
|
185
185
|
dateLocale: any;
|
|
@@ -194,10 +194,10 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
|
|
|
194
194
|
saturday: string;
|
|
195
195
|
ok: string;
|
|
196
196
|
today: string;
|
|
197
|
-
yesterday: string;
|
|
197
|
+
yesterday: string;
|
|
198
198
|
hours: string;
|
|
199
199
|
minutes: string;
|
|
200
|
-
seconds: string;
|
|
200
|
+
seconds: string; /** Support right-to-left */
|
|
201
201
|
formattedMonthPattern: string;
|
|
202
202
|
formattedDayPattern: string;
|
|
203
203
|
dateLocale: any;
|
|
@@ -213,10 +213,10 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
|
|
|
213
213
|
saturday: string;
|
|
214
214
|
ok: string;
|
|
215
215
|
today: string;
|
|
216
|
-
yesterday: string;
|
|
216
|
+
yesterday: string;
|
|
217
217
|
hours: string;
|
|
218
218
|
minutes: string;
|
|
219
|
-
seconds: string;
|
|
219
|
+
seconds: string; /** Support right-to-left */
|
|
220
220
|
formattedMonthPattern: string;
|
|
221
221
|
formattedDayPattern: string;
|
|
222
222
|
dateLocale: any;
|
|
@@ -224,7 +224,7 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
|
|
|
224
224
|
Picker?: {
|
|
225
225
|
noResultsText: string;
|
|
226
226
|
placeholder: string;
|
|
227
|
-
searchPlaceholder: string;
|
|
227
|
+
searchPlaceholder: string;
|
|
228
228
|
checkAll: string;
|
|
229
229
|
} | undefined;
|
|
230
230
|
InputPicker?: {
|
|
@@ -1,6 +1,6 @@
|
|
|
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, { useEffect } from 'react';
|
|
4
4
|
import { getClassNamePrefix, prefix } from '../utils/prefix';
|
|
5
5
|
import { addClass, removeClass, canUseDOM } from '../DOMHelper';
|
|
6
6
|
var CustomContext = /*#__PURE__*/React.createContext({});
|
|
@@ -21,7 +21,7 @@ var CustomProvider = function CustomProvider(props) {
|
|
|
21
21
|
theme: theme
|
|
22
22
|
}, rest);
|
|
23
23
|
}, [classPrefix, theme, rest]);
|
|
24
|
-
|
|
24
|
+
useEffect(function () {
|
|
25
25
|
if (canUseDOM && theme) {
|
|
26
26
|
addClass(document.body, prefix(classPrefix, "theme-" + theme)); // Remove the className that will cause style conflicts
|
|
27
27
|
|
|
@@ -3,7 +3,7 @@ import { RangeType } from './Toolbar';
|
|
|
3
3
|
import { DatePickerLocale } from '../locales';
|
|
4
4
|
import { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
|
|
5
5
|
export type { RangeType } from './Toolbar';
|
|
6
|
-
export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date> {
|
|
6
|
+
export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null> {
|
|
7
7
|
/** Configure shortcut options */
|
|
8
8
|
ranges?: RangeType<Date>[];
|
|
9
9
|
/** Calendar panel default presentation date and time */
|
|
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
-
import isNil from 'lodash/isNil';
|
|
6
5
|
import mapValues from 'lodash/mapValues';
|
|
7
6
|
import pick from 'lodash/pick';
|
|
8
7
|
import omit from 'lodash/omit';
|
|
@@ -166,11 +165,11 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
166
165
|
closeOverlay = true;
|
|
167
166
|
}
|
|
168
167
|
|
|
169
|
-
var nextValue =
|
|
168
|
+
var nextValue = typeof nextPageDate !== 'undefined' ? nextPageDate : calendarDate;
|
|
170
169
|
setCalendarDate(nextValue || new Date());
|
|
171
170
|
setValue(nextValue);
|
|
172
171
|
|
|
173
|
-
if (nextValue !== value
|
|
172
|
+
if (nextValue !== value) {
|
|
174
173
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
175
174
|
} // `closeOverlay` default value is `true`
|
|
176
175
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import DisclosureButton from './DisclosureButton';
|
|
3
3
|
import DisclosureContent from './DisclosureContent';
|
|
4
|
-
export
|
|
4
|
+
export declare type DisclosureTrigger = 'click' | 'mouseover';
|
|
5
|
+
export interface DisclosureRenderProps extends Pick<React.HTMLAttributes<HTMLElement>, 'onMouseOver' | 'onMouseOut'> {
|
|
5
6
|
open: boolean;
|
|
6
7
|
}
|
|
7
8
|
export interface DisclosureProps {
|
|
@@ -13,10 +14,12 @@ export interface DisclosureProps {
|
|
|
13
14
|
hideOnClickOutside?: boolean;
|
|
14
15
|
/** Callback when disclosure button is being activated to update the open state */
|
|
15
16
|
onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
|
|
17
|
+
/** What mouse events should disclosure reacts to */
|
|
18
|
+
trigger?: DisclosureTrigger[];
|
|
16
19
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var Content: typeof DisclosureContent;
|
|
20
|
+
export interface DisclosureComponent extends React.FC<DisclosureProps> {
|
|
21
|
+
Button: typeof DisclosureButton;
|
|
22
|
+
Content: typeof DisclosureContent;
|
|
21
23
|
}
|
|
24
|
+
declare const Disclosure: DisclosureComponent;
|
|
22
25
|
export default Disclosure;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
// Headless Disclosure
|
|
3
3
|
// Ref: https://w3c.github.io/aria-practices/#disclosure
|
|
4
|
-
import React, { useMemo, useReducer, useRef } from 'react';
|
|
4
|
+
import React, { useMemo, useReducer, useRef, useCallback, useContext } from 'react';
|
|
5
5
|
import DisclosureContext, { DisclosureActionTypes } from './DisclosureContext';
|
|
6
6
|
import DisclosureButton from './DisclosureButton';
|
|
7
7
|
import DisclosureContent from './DisclosureContent';
|
|
@@ -26,14 +26,17 @@ function disclosureReducer(state, action) {
|
|
|
26
26
|
return state;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
var Disclosure = /*#__PURE__*/React.memo(function (props) {
|
|
30
30
|
var children = props.children,
|
|
31
31
|
openProp = props.open,
|
|
32
32
|
_props$defaultOpen = props.defaultOpen,
|
|
33
33
|
defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,
|
|
34
34
|
_props$hideOnClickOut = props.hideOnClickOutside,
|
|
35
35
|
hideOnClickOutside = _props$hideOnClickOut === void 0 ? false : _props$hideOnClickOut,
|
|
36
|
-
onToggle = props.onToggle
|
|
36
|
+
onToggle = props.onToggle,
|
|
37
|
+
_props$trigger = props.trigger,
|
|
38
|
+
trigger = _props$trigger === void 0 ? ['click'] : _props$trigger;
|
|
39
|
+
var parentDisclosure = useContext(DisclosureContext);
|
|
37
40
|
|
|
38
41
|
var _useReducer = useReducer(disclosureReducer, _extends({}, initialDisclosureState, {
|
|
39
42
|
open: defaultOpen
|
|
@@ -56,20 +59,56 @@ function Disclosure(props) {
|
|
|
56
59
|
});
|
|
57
60
|
}
|
|
58
61
|
});
|
|
62
|
+
var onMouseOver = useCallback(function (event) {
|
|
63
|
+
if (!open) {
|
|
64
|
+
dispatch({
|
|
65
|
+
type: DisclosureActionTypes.Show
|
|
66
|
+
});
|
|
67
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
|
|
68
|
+
}
|
|
69
|
+
}, [open, dispatch, onToggle]);
|
|
70
|
+
var onMouseOut = useCallback(function (event) {
|
|
71
|
+
if (open) {
|
|
72
|
+
dispatch({
|
|
73
|
+
type: DisclosureActionTypes.Hide
|
|
74
|
+
});
|
|
75
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
|
|
76
|
+
}
|
|
77
|
+
}, [open, dispatch, onToggle]);
|
|
59
78
|
var contextValue = useMemo(function () {
|
|
79
|
+
var cascadeDispatch = function cascadeDispatch(action) {
|
|
80
|
+
var result = dispatch(action);
|
|
81
|
+
|
|
82
|
+
if ('cascade' in action) {
|
|
83
|
+
parentDisclosure === null || parentDisclosure === void 0 ? void 0 : parentDisclosure[1](action);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return result;
|
|
87
|
+
};
|
|
88
|
+
|
|
60
89
|
return [{
|
|
61
90
|
open: open
|
|
62
|
-
},
|
|
63
|
-
onToggle: onToggle
|
|
91
|
+
}, cascadeDispatch, {
|
|
92
|
+
onToggle: onToggle,
|
|
93
|
+
trigger: trigger
|
|
64
94
|
}];
|
|
65
|
-
}, [open, dispatch, onToggle]);
|
|
95
|
+
}, [parentDisclosure, open, dispatch, onToggle, trigger]);
|
|
96
|
+
var renderProps = useMemo(function () {
|
|
97
|
+
var renderProps = {
|
|
98
|
+
open: open
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
if (trigger.includes('mouseover')) {
|
|
102
|
+
renderProps.onMouseOver = onMouseOver;
|
|
103
|
+
renderProps.onMouseOut = onMouseOut;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return renderProps;
|
|
107
|
+
}, [open, trigger, onMouseOver, onMouseOut]);
|
|
66
108
|
return /*#__PURE__*/React.createElement(DisclosureContext.Provider, {
|
|
67
109
|
value: contextValue
|
|
68
|
-
}, children(
|
|
69
|
-
|
|
70
|
-
}, containerElementRef));
|
|
71
|
-
}
|
|
72
|
-
|
|
110
|
+
}, children(renderProps, containerElementRef));
|
|
111
|
+
});
|
|
73
112
|
Disclosure.Button = DisclosureButton;
|
|
74
113
|
Disclosure.Content = DisclosureContent;
|
|
75
114
|
export default Disclosure;
|
|
@@ -3,9 +3,9 @@ export interface DisclosureButtonRenderProps {
|
|
|
3
3
|
open: boolean;
|
|
4
4
|
}
|
|
5
5
|
export interface DisclosureButtonProps {
|
|
6
|
-
children: (props: React.
|
|
6
|
+
children: (props: React.HTMLAttributes<HTMLElement> & DisclosureButtonRenderProps, ref: React.Ref<HTMLElement>) => React.ReactElement<React.HTMLAttributes<HTMLElement>>;
|
|
7
7
|
}
|
|
8
|
-
declare function DisclosureButton(props: DisclosureButtonProps): React.ReactElement<React.HTMLAttributes<
|
|
8
|
+
declare function DisclosureButton(props: DisclosureButtonProps): React.ReactElement<React.HTMLAttributes<HTMLElement>, string | React.JSXElementConstructor<any>>;
|
|
9
9
|
declare namespace DisclosureButton {
|
|
10
10
|
var displayName: string;
|
|
11
11
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { Dispatch } from 'react';
|
|
2
|
+
import type { DisclosureTrigger } from './Disclosure';
|
|
2
3
|
export interface DisclosureState {
|
|
3
4
|
open: boolean;
|
|
4
5
|
}
|
|
@@ -7,12 +8,16 @@ export declare enum DisclosureActionTypes {
|
|
|
7
8
|
Hide = 1
|
|
8
9
|
}
|
|
9
10
|
export declare type DisclosureAction = {
|
|
10
|
-
type: DisclosureActionTypes;
|
|
11
|
+
type: DisclosureActionTypes.Show;
|
|
12
|
+
} | {
|
|
13
|
+
type: DisclosureActionTypes.Hide;
|
|
14
|
+
cascade?: boolean;
|
|
11
15
|
};
|
|
12
16
|
export declare type DisclosureContextProps = [
|
|
13
17
|
DisclosureState,
|
|
14
18
|
Dispatch<DisclosureAction>,
|
|
15
19
|
{
|
|
20
|
+
trigger: DisclosureTrigger[];
|
|
16
21
|
onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
|
|
17
22
|
}
|
|
18
23
|
];
|
|
@@ -3,6 +3,7 @@ import DropdownMenu from './DropdownMenu';
|
|
|
3
3
|
import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
4
4
|
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
5
5
|
import DropdownItem from './DropdownItem';
|
|
6
|
+
import Button from '../Button';
|
|
6
7
|
export declare type DropdownTrigger = 'click' | 'hover' | 'contextMenu';
|
|
7
8
|
export interface DropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect' | 'title'> {
|
|
8
9
|
/** Define the title as a submenu */
|
|
@@ -48,6 +49,10 @@ export interface DropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttr
|
|
|
48
49
|
onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
|
|
49
50
|
}
|
|
50
51
|
export interface DropdownComponent extends RsRefForwardingComponent<'div', DropdownProps> {
|
|
52
|
+
<ToggleAs extends React.ElementType = typeof Button>(props: DropdownProps & {
|
|
53
|
+
ref?: React.Ref<any>;
|
|
54
|
+
toggleAs?: ToggleAs;
|
|
55
|
+
} & React.ComponentProps<ToggleAs>, context: any): JSX.Element | null;
|
|
51
56
|
Item: typeof DropdownItem;
|
|
52
57
|
Menu: typeof DropdownMenu;
|
|
53
58
|
}
|
package/esm/Dropdown/Dropdown.js
CHANGED
|
@@ -15,7 +15,7 @@ import DropdownToggle from './DropdownToggle';
|
|
|
15
15
|
import MenuContext from '../Menu/MenuContext';
|
|
16
16
|
import MenuItem from '../Menu/MenuItem';
|
|
17
17
|
import kebabCase from 'lodash/kebabCase';
|
|
18
|
-
import { NavbarContext } from '../Navbar
|
|
18
|
+
import { NavbarContext } from '../Navbar';
|
|
19
19
|
import Disclosure from '../Disclosure/Disclosure';
|
|
20
20
|
import SidenavDropdown from '../Sidenav/SidenavDropdown';
|
|
21
21
|
import NavContext from '../Nav/NavContext';
|
|
@@ -11,7 +11,6 @@ import { createChainedFunction, mergeRefs, shallowEqual, useClassNames } from '.
|
|
|
11
11
|
import { NavbarContext } from '../Navbar/Navbar';
|
|
12
12
|
import SidenavDropdownItem from '../Sidenav/SidenavDropdownItem';
|
|
13
13
|
import DisclosureContext, { DisclosureActionTypes } from '../Disclosure/DisclosureContext';
|
|
14
|
-
import SafeAnchor from '../SafeAnchor';
|
|
15
14
|
import NavContext from '../Nav/NavContext';
|
|
16
15
|
import useInternalId from '../utils/useInternalId';
|
|
17
16
|
import { DropdownActionType } from './DropdownState';
|
|
@@ -62,7 +61,8 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
62
61
|
|
|
63
62
|
var handleClickNavbarDropdownItem = useCallback(function (event) {
|
|
64
63
|
dispatchDisclosure === null || dispatchDisclosure === void 0 ? void 0 : dispatchDisclosure({
|
|
65
|
-
type: DisclosureActionTypes.Hide
|
|
64
|
+
type: DisclosureActionTypes.Hide,
|
|
65
|
+
cascade: true
|
|
66
66
|
});
|
|
67
67
|
handleSelectItem === null || handleSelectItem === void 0 ? void 0 : handleSelectItem(event);
|
|
68
68
|
}, [dispatchDisclosure, handleSelectItem]);
|
|
@@ -129,16 +129,16 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
129
129
|
dataAttributes['data-event-key-type'] = typeof eventKey;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
return
|
|
132
|
+
return renderDropdownItem(_extends({
|
|
133
133
|
ref: ref,
|
|
134
134
|
className: classes,
|
|
135
|
-
|
|
135
|
+
'aria-current': selected || undefined
|
|
136
136
|
}, dataAttributes, restProps, {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
})
|
|
137
|
+
onClick: createChainedFunction(handleClickNavbarDropdownItem, restProps.onClick),
|
|
138
|
+
children: /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
139
|
+
className: prefix('menu-icon')
|
|
140
|
+
}), children)
|
|
141
|
+
}));
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
return /*#__PURE__*/React.createElement(MenuItem, {
|