rsuite 5.23.2 → 5.24.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/ButtonToolbar/styles/index.less +0 -4
- package/CHANGELOG.md +18 -0
- package/Modal/styles/index.less +6 -6
- package/Sidenav/styles/index.less +7 -2
- package/cjs/AutoComplete/AutoComplete.d.ts +2 -0
- package/cjs/AutoComplete/AutoComplete.js +4 -1
- package/cjs/AutoComplete/utils.d.ts +3 -2
- package/cjs/AutoComplete/utils.js +1 -1
- package/cjs/ButtonToolbar/ButtonToolbar.d.ts +2 -1
- package/cjs/ButtonToolbar/ButtonToolbar.js +9 -2
- package/cjs/Calendar/MonthDropdown.d.ts +1 -0
- package/cjs/Calendar/MonthDropdown.js +14 -10
- package/cjs/Cascader/Cascader.js +2 -1
- package/cjs/Cascader/utils.d.ts +17 -12
- package/cjs/Cascader/utils.js +5 -5
- package/cjs/DatePicker/DatePicker.d.ts +5 -1
- package/cjs/DatePicker/DatePicker.js +17 -1
- package/cjs/Dropdown/Dropdown.d.ts +2 -0
- package/cjs/Dropdown/Dropdown.js +3 -0
- package/cjs/Dropdown/DropdownItem.d.ts +5 -1
- package/cjs/Dropdown/DropdownItem.js +7 -7
- package/cjs/Dropdown/DropdownSeparator.d.ts +14 -0
- package/cjs/Dropdown/DropdownSeparator.js +48 -0
- package/cjs/MultiCascader/utils.d.ts +14 -11
- package/cjs/Picker/utils.d.ts +15 -13
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +3 -2
- package/cjs/Stack/Stack.d.ts +4 -0
- package/cjs/Stack/Stack.js +10 -8
- package/cjs/utils/deprecatePropType.d.ts +9 -0
- package/cjs/utils/deprecatePropType.js +27 -0
- package/cjs/utils/treeUtils.d.ts +30 -22
- package/dist/rsuite-rtl.css +10 -9
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +10 -9
- package/dist/rsuite.js +24 -13
- 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.d.ts +2 -0
- package/esm/AutoComplete/AutoComplete.js +4 -1
- package/esm/AutoComplete/utils.d.ts +3 -2
- package/esm/AutoComplete/utils.js +1 -1
- package/esm/ButtonToolbar/ButtonToolbar.d.ts +2 -1
- package/esm/ButtonToolbar/ButtonToolbar.js +9 -2
- package/esm/Calendar/MonthDropdown.d.ts +1 -0
- package/esm/Calendar/MonthDropdown.js +12 -9
- package/esm/Cascader/Cascader.js +2 -1
- package/esm/Cascader/utils.d.ts +17 -12
- package/esm/Cascader/utils.js +5 -5
- package/esm/DatePicker/DatePicker.d.ts +5 -1
- package/esm/DatePicker/DatePicker.js +16 -1
- package/esm/Dropdown/Dropdown.d.ts +2 -0
- package/esm/Dropdown/Dropdown.js +2 -0
- package/esm/Dropdown/DropdownItem.d.ts +5 -1
- package/esm/Dropdown/DropdownItem.js +5 -7
- package/esm/Dropdown/DropdownSeparator.d.ts +14 -0
- package/esm/Dropdown/DropdownSeparator.js +35 -0
- package/esm/MultiCascader/utils.d.ts +14 -11
- package/esm/Picker/utils.d.ts +15 -13
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +3 -2
- package/esm/Stack/Stack.d.ts +4 -0
- package/esm/Stack/Stack.js +10 -8
- package/esm/utils/deprecatePropType.d.ts +9 -0
- package/esm/utils/deprecatePropType.js +25 -0
- package/esm/utils/treeUtils.d.ts +30 -22
- package/package.json +1 -1
- package/styles/variables.less +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
# [5.24.0](https://github.com/rsuite/rsuite/compare/v5.23.3...v5.24.0) (2022-12-30)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **AutoComplete:** fix AutoComplete size property not working ([#2990](https://github.com/rsuite/rsuite/issues/2990)) ([add665b](https://github.com/rsuite/rsuite/commit/add665b82b9d2cbd21e07576bf77f74e18991e21))
|
|
6
|
+
- **DatePicker:** fix inconsistency between month selectable state and ok button clickable state ([#2984](https://github.com/rsuite/rsuite/issues/2984)) ([70e6aba](https://github.com/rsuite/rsuite/commit/70e6aba0b7a3216c9f8b59b033826e55bebac1a1))
|
|
7
|
+
- **Sidenav:** fix Sidenav multilevel Nav.Menu arrow icon exception ([#2986](https://github.com/rsuite/rsuite/issues/2986)) ([87f6748](https://github.com/rsuite/rsuite/commit/87f67482b60eae4ed445246fe3e6ac9b0cad0385))
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- **Dropdown:** add Dropdown.Separator component ([#2979](https://github.com/rsuite/rsuite/issues/2979)) ([db6fcbb](https://github.com/rsuite/rsuite/commit/db6fcbbd88961e3506f6b2d2146cf43717d1e1db))
|
|
12
|
+
|
|
13
|
+
## [5.23.3](https://github.com/rsuite/rsuite/compare/v5.23.2...v5.23.3) (2022-12-16)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **Modal:** fix close button alignment and color ([#2973](https://github.com/rsuite/rsuite/issues/2973)) ([b1eb5b4](https://github.com/rsuite/rsuite/commit/b1eb5b406a29788290a704414cc5a19b115690c7))
|
|
18
|
+
|
|
1
19
|
## [5.23.2](https://github.com/rsuite/rsuite/compare/v5.23.1...v5.23.2) (2022-12-09)
|
|
2
20
|
|
|
3
21
|
### Bug Fixes
|
package/Modal/styles/index.less
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
//
|
|
5
5
|
// Modals
|
|
6
|
+
// Figma: https://www.figma.com/file/uEq9QBplcKUYZrcWWA3RK2/NXT-UI?node-id=0%3A1348&t=H5h3Dd3AnJVgbAbz-4
|
|
6
7
|
// --------------------------------------------------
|
|
7
8
|
|
|
8
9
|
// Modal background
|
|
@@ -100,17 +101,16 @@
|
|
|
100
101
|
padding-right: @line-height-computed;
|
|
101
102
|
|
|
102
103
|
.rs-modal-header-close {
|
|
103
|
-
// button width the same to height
|
|
104
|
-
@padding-right: 4px;
|
|
105
|
-
|
|
106
104
|
position: absolute;
|
|
107
105
|
right: @modal-content-padding;
|
|
108
106
|
top: @modal-content-padding;
|
|
109
107
|
font-size: @modal-close-btn-size;
|
|
110
|
-
line-height: @modal-close-btn-line-height;
|
|
111
108
|
color: @modal-close-btn-color;
|
|
112
|
-
|
|
113
|
-
|
|
109
|
+
padding: 0;
|
|
110
|
+
|
|
111
|
+
&:hover {
|
|
112
|
+
color: @modal-close-btn-hover-color;
|
|
113
|
+
}
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -76,14 +76,19 @@
|
|
|
76
76
|
top: @sidenav-children-padding-vertical;
|
|
77
77
|
// width: auto;
|
|
78
78
|
// height: @sidenav-dropdown-toggle-caret-width;
|
|
79
|
-
transform: rotate(90deg);
|
|
79
|
+
// transform: rotate(90deg);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
// Expanded submenu toggle icon
|
|
84
|
-
.rs-dropdown-item-expand
|
|
84
|
+
.rs-dropdown-item-expand-icon {
|
|
85
85
|
transform: rotate(270deg);
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
// Collapse submenu toggle icon
|
|
89
|
+
.rs-dropdown-item-collapse-icon {
|
|
90
|
+
transform: rotate(90deg);
|
|
91
|
+
}
|
|
87
92
|
}
|
|
88
93
|
|
|
89
94
|
.high-contrast-mode({
|
|
@@ -9,6 +9,8 @@ export interface AutoCompleteProps<T = ValueType> extends WithAsProps, FormContr
|
|
|
9
9
|
placement?: TypeAttributes.Placement;
|
|
10
10
|
/** When set to false, the Enter key selection function is invalid */
|
|
11
11
|
selectOnEnter?: boolean;
|
|
12
|
+
/** A component can have different sizes */
|
|
13
|
+
size?: TypeAttributes.Size;
|
|
12
14
|
/** Open the menu and control it */
|
|
13
15
|
open?: boolean;
|
|
14
16
|
/** Placeholder text */
|
|
@@ -52,6 +52,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
52
52
|
valueProp = props.value,
|
|
53
53
|
open = props.open,
|
|
54
54
|
style = props.style,
|
|
55
|
+
size = props.size,
|
|
55
56
|
menuClassName = props.menuClassName,
|
|
56
57
|
id = props.id,
|
|
57
58
|
renderMenu = props.renderMenu,
|
|
@@ -65,7 +66,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
65
66
|
onFocus = props.onFocus,
|
|
66
67
|
onBlur = props.onBlur,
|
|
67
68
|
onMenuFocus = props.onMenuFocus,
|
|
68
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "className", "placement", "selectOnEnter", "classPrefix", "defaultValue", "menuAutoWidth", "data", "value", "open", "style", "menuClassName", "id", "renderMenu", "renderMenuItem", "onSelect", "filterBy", "onKeyDown", "onChange", "onClose", "onOpen", "onFocus", "onBlur", "onMenuFocus"]);
|
|
69
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "className", "placement", "selectOnEnter", "classPrefix", "defaultValue", "menuAutoWidth", "data", "value", "open", "style", "size", "menuClassName", "id", "renderMenu", "renderMenuItem", "onSelect", "filterBy", "onKeyDown", "onChange", "onClose", "onOpen", "onFocus", "onBlur", "onMenuFocus"]);
|
|
69
70
|
var datalist = (0, _utils3.transformData)(data);
|
|
70
71
|
|
|
71
72
|
var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
|
|
@@ -231,6 +232,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
231
232
|
id: id,
|
|
232
233
|
disabled: disabled,
|
|
233
234
|
value: value,
|
|
235
|
+
size: size,
|
|
234
236
|
onBlur: handleInputBlur,
|
|
235
237
|
onFocus: handleInputFocus,
|
|
236
238
|
onChange: handleChange,
|
|
@@ -260,6 +262,7 @@ AutoComplete.propTypes = (0, _extends2.default)({}, _utils2.animationPropTypes,
|
|
|
260
262
|
renderMenu: _propTypes.default.func,
|
|
261
263
|
renderMenuItem: _propTypes.default.func,
|
|
262
264
|
style: _propTypes.default.object,
|
|
265
|
+
size: _propTypes.default.oneOf(['lg', 'md', 'sm', 'xs']),
|
|
263
266
|
open: _propTypes.default.bool,
|
|
264
267
|
selectOnEnter: _propTypes.default.bool,
|
|
265
268
|
filterBy: _propTypes.default.func
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { ItemDataType } from '../@types/common';
|
|
2
1
|
export declare function transformData(data: any[]): any[];
|
|
3
|
-
export declare const shouldDisplay:
|
|
2
|
+
export declare const shouldDisplay: <TItem extends {
|
|
3
|
+
label: string;
|
|
4
|
+
}>(filterBy: ((value: string, item: TItem) => boolean) | undefined, value: string) => (item: TItem) => boolean;
|
|
@@ -37,7 +37,7 @@ var shouldDisplay = function shouldDisplay(filterBy, value) {
|
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
var keyword =
|
|
40
|
+
var keyword = value.toLocaleLowerCase();
|
|
41
41
|
return ("" + item.label).toLocaleLowerCase().indexOf(keyword) >= 0;
|
|
42
42
|
};
|
|
43
43
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
2
|
+
import Stack from '../Stack';
|
|
2
3
|
export interface ButtonToolbarProps extends WithAsProps {
|
|
3
4
|
/**
|
|
4
5
|
* The ARIA role describing the button toolbar. Generally the default
|
|
@@ -7,5 +8,5 @@ export interface ButtonToolbarProps extends WithAsProps {
|
|
|
7
8
|
*/
|
|
8
9
|
role?: string;
|
|
9
10
|
}
|
|
10
|
-
declare const ButtonToolbar: RsRefForwardingComponent<
|
|
11
|
+
declare const ButtonToolbar: RsRefForwardingComponent<typeof Stack, ButtonToolbarProps>;
|
|
11
12
|
export default ButtonToolbar;
|
|
@@ -15,22 +15,29 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
15
15
|
|
|
16
16
|
var _utils = require("../utils");
|
|
17
17
|
|
|
18
|
+
var _Stack = _interopRequireDefault(require("../Stack"));
|
|
19
|
+
|
|
18
20
|
var ButtonToolbar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
19
21
|
var className = props.className,
|
|
20
22
|
_props$classPrefix = props.classPrefix,
|
|
21
23
|
classPrefix = _props$classPrefix === void 0 ? 'btn-toolbar' : _props$classPrefix,
|
|
22
24
|
_props$as = props.as,
|
|
23
|
-
Component = _props$as === void 0 ?
|
|
25
|
+
Component = _props$as === void 0 ? _Stack.default : _props$as,
|
|
24
26
|
_props$role = props.role,
|
|
25
27
|
role = _props$role === void 0 ? 'toolbar' : _props$role,
|
|
26
28
|
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "classPrefix", "as", "role"]);
|
|
29
|
+
var stackProps = Component === _Stack.default ? {
|
|
30
|
+
wrap: true,
|
|
31
|
+
spacing: 10,
|
|
32
|
+
childrenRenderMode: 'clone'
|
|
33
|
+
} : null;
|
|
27
34
|
|
|
28
35
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
29
36
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
30
37
|
merge = _useClassNames.merge;
|
|
31
38
|
|
|
32
39
|
var classes = merge(className, withClassPrefix());
|
|
33
|
-
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, stackProps, rest, {
|
|
34
41
|
role: role,
|
|
35
42
|
ref: ref,
|
|
36
43
|
className: classes
|
|
@@ -22,5 +22,6 @@ export interface RowProps {
|
|
|
22
22
|
/** Style object to be applied to row (to position it); */
|
|
23
23
|
style?: React.CSSProperties;
|
|
24
24
|
}
|
|
25
|
+
export declare function isEveryDateInMonth(year: number, month: number, predicate: (date: Date) => boolean): boolean;
|
|
25
26
|
declare const MonthDropdown: RsRefForwardingComponent<'div', MonthDropdownProps>;
|
|
26
27
|
export default MonthDropdown;
|
|
@@ -5,6 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
6
|
|
|
7
7
|
exports.__esModule = true;
|
|
8
|
+
exports.isEveryDateInMonth = isEveryDateInMonth;
|
|
8
9
|
exports.default = void 0;
|
|
9
10
|
|
|
10
11
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
@@ -25,6 +26,18 @@ var _CalendarContext = require("./CalendarContext");
|
|
|
25
26
|
|
|
26
27
|
var monthMap = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
|
|
27
28
|
|
|
29
|
+
function isEveryDateInMonth(year, month, predicate) {
|
|
30
|
+
var days = _utils.DateUtils.getDaysInMonth(new Date(year, month));
|
|
31
|
+
|
|
32
|
+
for (var i = 1; i <= days; i++) {
|
|
33
|
+
if (!predicate(new Date(year, month, i))) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
|
|
28
41
|
var MonthDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
29
42
|
var _props$as = props.as,
|
|
30
43
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -60,16 +73,7 @@ var MonthDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
60
73
|
}, [limitEndYear, startYear, thisYear]);
|
|
61
74
|
var isMonthDisabled = (0, _react.useCallback)(function (year, month) {
|
|
62
75
|
if (disabledMonth) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
for (var i = 1; i <= days; i++) {
|
|
67
|
-
if (!disabledMonth(new Date(year, month, i))) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return true;
|
|
76
|
+
return isEveryDateInMonth(year, month, disabledMonth);
|
|
73
77
|
}
|
|
74
78
|
|
|
75
79
|
return false;
|
package/cjs/Cascader/Cascader.js
CHANGED
|
@@ -454,7 +454,8 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
454
454
|
classPrefix: 'picker-cascader-menu',
|
|
455
455
|
cascadeData: columnData,
|
|
456
456
|
cascadePaths: selectedPaths,
|
|
457
|
-
activeItemValue: value
|
|
457
|
+
activeItemValue: value // FIXME make onSelect generic
|
|
458
|
+
,
|
|
458
459
|
onSelect: handleSelect,
|
|
459
460
|
renderMenu: renderMenu,
|
|
460
461
|
renderMenuItem: renderMenuItem
|
package/cjs/Cascader/utils.d.ts
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function getColumnsAndPaths<T extends ItemDataType>(data: T[], value: any, options: any): {
|
|
5
|
-
columns: ItemDataType<string | number>[][];
|
|
2
|
+
export declare function getColumnsAndPaths<T extends Record<string, unknown>>(data: T[], value: any, options: any): {
|
|
3
|
+
columns: T[][];
|
|
6
4
|
paths: T[];
|
|
7
5
|
};
|
|
8
|
-
|
|
6
|
+
declare type UsePathsParams<T> = {
|
|
7
|
+
data: T[];
|
|
8
|
+
valueKey: string;
|
|
9
|
+
childrenKey: string;
|
|
10
|
+
value: unknown;
|
|
11
|
+
};
|
|
12
|
+
export declare function usePaths<T extends Record<string, unknown>>(params: UsePathsParams<T>): {
|
|
9
13
|
enforceUpdate: (nextValue: any, isAttachChildren?: boolean) => void;
|
|
10
|
-
columnData:
|
|
11
|
-
valueToPaths:
|
|
12
|
-
selectedPaths:
|
|
13
|
-
setValueToPaths: import("react").Dispatch<import("react").SetStateAction<
|
|
14
|
-
setColumnData: import("react").Dispatch<import("react").SetStateAction<
|
|
15
|
-
setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<
|
|
16
|
-
addColumn: (column:
|
|
14
|
+
columnData: T[][];
|
|
15
|
+
valueToPaths: T[];
|
|
16
|
+
selectedPaths: T[];
|
|
17
|
+
setValueToPaths: import("react").Dispatch<import("react").SetStateAction<T[]>>;
|
|
18
|
+
setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
|
|
19
|
+
setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<T[]>>;
|
|
20
|
+
addColumn: (column: T[], index: number) => void;
|
|
17
21
|
romoveColumnByIndex: (index: number) => void;
|
|
18
22
|
};
|
|
23
|
+
export {};
|
package/cjs/Cascader/utils.js
CHANGED
|
@@ -86,11 +86,11 @@ function getColumnsAndPaths(data, value, options) {
|
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
function usePaths(
|
|
90
|
-
var data =
|
|
91
|
-
valueKey =
|
|
92
|
-
childrenKey =
|
|
93
|
-
value =
|
|
89
|
+
function usePaths(params) {
|
|
90
|
+
var data = params.data,
|
|
91
|
+
valueKey = params.valueKey,
|
|
92
|
+
childrenKey = params.childrenKey,
|
|
93
|
+
value = params.value;
|
|
94
94
|
|
|
95
95
|
var _useMemo = (0, _react.useMemo)(function () {
|
|
96
96
|
return getColumnsAndPaths(data, value, {
|
|
@@ -29,7 +29,11 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
|
|
|
29
29
|
showMeridian?: boolean;
|
|
30
30
|
/** one tap to select */
|
|
31
31
|
oneTap?: boolean;
|
|
32
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Whether to disable a date on the calendar view
|
|
34
|
+
*
|
|
35
|
+
* @returns date should be disabled (not selectable)
|
|
36
|
+
*/
|
|
33
37
|
disabledDate?: (date?: Date) => boolean;
|
|
34
38
|
/** Disabled hours */
|
|
35
39
|
disabledHours?: (hour: number, date: Date) => boolean;
|
|
@@ -29,6 +29,8 @@ var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarCon
|
|
|
29
29
|
|
|
30
30
|
var _useCalendarDate2 = _interopRequireDefault(require("../Calendar/useCalendarDate"));
|
|
31
31
|
|
|
32
|
+
var _MonthDropdown = require("../Calendar/MonthDropdown");
|
|
33
|
+
|
|
32
34
|
var _Toolbar = _interopRequireDefault(require("./Toolbar"));
|
|
33
35
|
|
|
34
36
|
var _Stack = _interopRequireDefault(require("../Stack"));
|
|
@@ -336,6 +338,20 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
336
338
|
|
|
337
339
|
return allowDate || allowTime;
|
|
338
340
|
}, [disabledDateProp, props]);
|
|
341
|
+
/**
|
|
342
|
+
* Whether "OK" button is disabled
|
|
343
|
+
*
|
|
344
|
+
* - If format is date, disable ok button if selected date is disabled
|
|
345
|
+
* - If format is month, disable ok button if all dates in the month of selected date are disabled
|
|
346
|
+
*/
|
|
347
|
+
|
|
348
|
+
var isOKButtonDisabled = (0, _react.useCallback)(function (selectedDate) {
|
|
349
|
+
if (_utils.DateUtils.shouldRenderMonth(formatStr) && !_utils.DateUtils.shouldRenderDate(formatStr)) {
|
|
350
|
+
return (0, _MonthDropdown.isEveryDateInMonth)(selectedDate.getFullYear(), selectedDate.getMonth(), disabledToolbarHandle);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
return disabledToolbarHandle(selectedDate);
|
|
354
|
+
}, [disabledToolbarHandle, formatStr]);
|
|
339
355
|
var calendarProps = (0, _react.useMemo)(function () {
|
|
340
356
|
return (0, _mapValues.default)((0, _pick.default)(props, _utils.DateUtils.calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
|
|
341
357
|
return function (next, date) {
|
|
@@ -406,7 +422,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
406
422
|
locale: locale,
|
|
407
423
|
ranges: bottomRanges,
|
|
408
424
|
calendarDate: calendarDate,
|
|
409
|
-
disabledOkBtn:
|
|
425
|
+
disabledOkBtn: isOKButtonDisabled,
|
|
410
426
|
disabledShortcut: disabledToolbarHandle,
|
|
411
427
|
onClickShortcut: handleShortcutPageDate,
|
|
412
428
|
onOk: handleOK,
|
|
@@ -4,6 +4,7 @@ import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types
|
|
|
4
4
|
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
5
5
|
import DropdownItem from './DropdownItem';
|
|
6
6
|
import Button from '../Button';
|
|
7
|
+
import DropdownSeparator from './DropdownSeparator';
|
|
7
8
|
export declare type DropdownTrigger = 'click' | 'hover' | 'contextMenu';
|
|
8
9
|
export interface DropdownProps<T = any> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect' | 'title'> {
|
|
9
10
|
/** Define the title as a submenu */
|
|
@@ -58,6 +59,7 @@ export interface DropdownComponent extends RsRefForwardingComponent<'div', Dropd
|
|
|
58
59
|
} & React.ComponentProps<ToggleAs>, context: any): JSX.Element | null;
|
|
59
60
|
Item: typeof DropdownItem;
|
|
60
61
|
Menu: typeof DropdownMenu;
|
|
62
|
+
Separator: typeof DropdownSeparator;
|
|
61
63
|
}
|
|
62
64
|
/**
|
|
63
65
|
* The <Dropdown> API
|
package/cjs/Dropdown/Dropdown.js
CHANGED
|
@@ -43,6 +43,8 @@ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
|
|
|
43
43
|
|
|
44
44
|
var _Nav = _interopRequireDefault(require("../Nav"));
|
|
45
45
|
|
|
46
|
+
var _DropdownSeparator = _interopRequireDefault(require("./DropdownSeparator"));
|
|
47
|
+
|
|
46
48
|
/**
|
|
47
49
|
* The <Dropdown> API
|
|
48
50
|
* When used inside <Sidenav>, renders a <TreeviewRootItem>;
|
|
@@ -186,6 +188,7 @@ var Dropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
186
188
|
|
|
187
189
|
Dropdown.Item = _DropdownItem.default;
|
|
188
190
|
Dropdown.Menu = _DropdownMenu.default;
|
|
191
|
+
Dropdown.Separator = _DropdownSeparator.default;
|
|
189
192
|
Dropdown.displayName = 'Dropdown';
|
|
190
193
|
Dropdown.propTypes = {
|
|
191
194
|
activeKey: _propTypes.default.any,
|
|
@@ -8,7 +8,11 @@ export interface DropdownMenuItemProps<T = any> extends WithAsProps, Omit<React.
|
|
|
8
8
|
children?: React.ReactNode;
|
|
9
9
|
/** You can use a custom element for this component */
|
|
10
10
|
as?: React.ElementType;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Whether to display the divider
|
|
13
|
+
*
|
|
14
|
+
* @deprecated Use dedicated <Dropdown.Separator> component instead
|
|
15
|
+
*/
|
|
12
16
|
divider?: boolean;
|
|
13
17
|
/** Disable the current option */
|
|
14
18
|
disabled?: boolean;
|
|
@@ -11,11 +11,13 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
13
13
|
|
|
14
|
+
var _pick2 = _interopRequireDefault(require("lodash/pick"));
|
|
15
|
+
|
|
14
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
17
|
|
|
16
18
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
19
|
|
|
18
|
-
var _deprecatePropType =
|
|
20
|
+
var _deprecatePropType = _interopRequireWildcard(require("../utils/deprecatePropType"));
|
|
19
21
|
|
|
20
22
|
var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
|
|
21
23
|
|
|
@@ -37,6 +39,8 @@ var _warnOnce = _interopRequireDefault(require("../utils/warnOnce"));
|
|
|
37
39
|
|
|
38
40
|
var _Nav = _interopRequireDefault(require("../Nav"));
|
|
39
41
|
|
|
42
|
+
var _DropdownSeparator = _interopRequireDefault(require("./DropdownSeparator"));
|
|
43
|
+
|
|
40
44
|
/**
|
|
41
45
|
* The <Dropdown.Item> API
|
|
42
46
|
* When used inside <Sidenav>, renders a <TreeviewItem>
|
|
@@ -106,11 +110,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
106
110
|
}
|
|
107
111
|
|
|
108
112
|
if (divider) {
|
|
109
|
-
return
|
|
110
|
-
ref: ref,
|
|
111
|
-
role: 'separator',
|
|
112
|
-
className: merge(prefix('divider'), className)
|
|
113
|
-
}, restProps));
|
|
113
|
+
return /*#__PURE__*/_react.default.createElement(_DropdownSeparator.default, (0, _pick2.default)(props, ['data-testid']));
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
if (panel) {
|
|
@@ -159,7 +159,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
159
159
|
DropdownItem.displayName = 'Dropdown.Item';
|
|
160
160
|
DropdownItem.propTypes = {
|
|
161
161
|
as: _propTypes.default.elementType,
|
|
162
|
-
divider: _propTypes.default.bool,
|
|
162
|
+
divider: (0, _deprecatePropType.deprecatePropTypeNew)(_propTypes.default.bool, 'Use Dropdown.Separator component instead.'),
|
|
163
163
|
panel: _propTypes.default.bool,
|
|
164
164
|
trigger: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.oneOf(['click', 'hover'])]),
|
|
165
165
|
open: (0, _deprecatePropType.default)(_propTypes.default.bool),
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
3
|
+
export interface DropdownSeparatorProps extends WithAsProps, React.HTMLAttributes<HTMLElement> {
|
|
4
|
+
/** You can use a custom element for this component */
|
|
5
|
+
as?: React.ElementType;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The <Dropdown.Separator> API
|
|
9
|
+
*
|
|
10
|
+
* Renders a non-focusable and non-interactive `separator`
|
|
11
|
+
* Per ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/menu/
|
|
12
|
+
*/
|
|
13
|
+
declare const DropdownSeparator: RsRefForwardingComponent<'li', DropdownSeparatorProps>;
|
|
14
|
+
export default DropdownSeparator;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _utils = require("../utils");
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The <Dropdown.Separator> API
|
|
20
|
+
*
|
|
21
|
+
* Renders a non-focusable and non-interactive `separator`
|
|
22
|
+
* Per ARIA APG https://www.w3.org/WAI/ARIA/apg/patterns/menu/
|
|
23
|
+
*/
|
|
24
|
+
var DropdownSeparator = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
25
|
+
var _props$classPrefix = props.classPrefix,
|
|
26
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown-item-divider' : _props$classPrefix,
|
|
27
|
+
className = props.className,
|
|
28
|
+
_props$as = props.as,
|
|
29
|
+
Component = _props$as === void 0 ? 'li' : _props$as,
|
|
30
|
+
restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "as"]);
|
|
31
|
+
|
|
32
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
33
|
+
merge = _useClassNames.merge,
|
|
34
|
+
withClassPrefix = _useClassNames.withClassPrefix;
|
|
35
|
+
|
|
36
|
+
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
37
|
+
ref: ref,
|
|
38
|
+
role: "separator",
|
|
39
|
+
className: merge(withClassPrefix(), className)
|
|
40
|
+
}, restProps));
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
DropdownSeparator.displayName = 'Dropdown.Separator';
|
|
44
|
+
DropdownSeparator.propTypes = {
|
|
45
|
+
as: _propTypes.default.elementType
|
|
46
|
+
};
|
|
47
|
+
var _default = DropdownSeparator;
|
|
48
|
+
exports.default = _default;
|
|
@@ -9,25 +9,28 @@ interface ItemKeys {
|
|
|
9
9
|
labelKey: string;
|
|
10
10
|
childrenKey: string;
|
|
11
11
|
}
|
|
12
|
+
declare type MayHasParent<T extends Record<string, unknown>> = T & {
|
|
13
|
+
parent?: MayHasParent<T>;
|
|
14
|
+
};
|
|
12
15
|
/**
|
|
13
16
|
* Get all parents of a node
|
|
14
17
|
* @param node
|
|
15
18
|
*/
|
|
16
|
-
export declare const getParents: (node:
|
|
19
|
+
export declare const getParents: <T extends Record<string, unknown>>(node: MayHasParent<T>) => MayHasParent<T>[];
|
|
17
20
|
/**
|
|
18
21
|
* Check if any child nodes are selected.
|
|
19
22
|
* @param node
|
|
20
23
|
* @param value
|
|
21
24
|
* @param itemKeys
|
|
22
25
|
*/
|
|
23
|
-
export declare const isSomeChildChecked: (node:
|
|
26
|
+
export declare const isSomeChildChecked: <T extends Record<string, unknown>>(node: T, value: ValueType, itemKeys: Omit<ItemKeys, 'labelKey'>) => any;
|
|
24
27
|
/**
|
|
25
28
|
* Check if the parent is selected.
|
|
26
29
|
* @param node
|
|
27
30
|
* @param value
|
|
28
31
|
* @param itemKeys
|
|
29
32
|
*/
|
|
30
|
-
export declare const isSomeParentChecked: (node:
|
|
33
|
+
export declare const isSomeParentChecked: <T extends Record<string, unknown>>(node: MayHasParent<T>, value: ValueType, itemKeys: Pick<ItemKeys, 'valueKey'>) => any;
|
|
31
34
|
export declare const getOtherItemValuesByUnselectChild: <T>(itemNode: ItemType, value: any, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[];
|
|
32
35
|
/**
|
|
33
36
|
* Remove the values of all children.
|
|
@@ -37,20 +40,20 @@ export declare const removeAllChildrenValue: <T>(value: T[], item: ItemType, ite
|
|
|
37
40
|
* A hook to flatten tree structure data
|
|
38
41
|
* @param data
|
|
39
42
|
*/
|
|
40
|
-
export declare function useFlattenData(data:
|
|
41
|
-
addFlattenData: (children:
|
|
42
|
-
flattenData:
|
|
43
|
+
export declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
|
|
44
|
+
addFlattenData: (children: T[], parent: T) => void;
|
|
45
|
+
flattenData: T[];
|
|
43
46
|
};
|
|
44
47
|
/**
|
|
45
48
|
* A hook for column data
|
|
46
49
|
* @param flattenData
|
|
47
50
|
*/
|
|
48
|
-
export declare function useColumnData(flattenData:
|
|
49
|
-
columnData:
|
|
50
|
-
addColumn: (column:
|
|
51
|
+
export declare function useColumnData<T extends MayHasParent<Record<string, unknown>>>(flattenData: T[]): {
|
|
52
|
+
columnData: T[][];
|
|
53
|
+
addColumn: (column: T[], index: number) => void;
|
|
51
54
|
romoveColumnByIndex: (index: number) => void;
|
|
52
|
-
setColumnData: import("react").Dispatch<import("react").SetStateAction<
|
|
53
|
-
enforceUpdateColumnData: (nextData:
|
|
55
|
+
setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
|
|
56
|
+
enforceUpdateColumnData: (nextData: T[]) => void;
|
|
54
57
|
};
|
|
55
58
|
/**
|
|
56
59
|
* A hook that converts the value into a cascading value
|
package/cjs/Picker/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { OverlayTriggerHandle } from './PickerToggleTrigger';
|
|
3
|
-
import { TypeAttributes
|
|
3
|
+
import { TypeAttributes } from '../@types/common';
|
|
4
4
|
import type { ListHandle } from '../Windowing';
|
|
5
5
|
export interface NodeKeys {
|
|
6
6
|
valueKey: string;
|
|
@@ -86,24 +86,25 @@ export interface ToggleKeyDownEventProps {
|
|
|
86
86
|
* @param props
|
|
87
87
|
*/
|
|
88
88
|
export declare const useToggleKeyDownEvent: (props: ToggleKeyDownEventProps) => (event: React.KeyboardEvent) => void;
|
|
89
|
-
export interface SearchProps {
|
|
89
|
+
export interface SearchProps<TItem extends Record<string, unknown>, TLabel> {
|
|
90
90
|
labelKey: string;
|
|
91
|
-
data:
|
|
92
|
-
searchBy?: (keyword:
|
|
93
|
-
callback?: (keyword: string, data:
|
|
91
|
+
data: TItem[];
|
|
92
|
+
searchBy?: (keyword: string, label: TLabel, item: TItem) => boolean;
|
|
93
|
+
callback?: (keyword: string, data: TItem[], event: React.SyntheticEvent) => void;
|
|
94
94
|
}
|
|
95
|
+
declare type UseSearchResult<TItem extends Record<string, unknown>> = {
|
|
96
|
+
searchKeyword: string;
|
|
97
|
+
filteredData: TItem[];
|
|
98
|
+
updateFilteredData: (nextData: TItem[]) => void;
|
|
99
|
+
setSearchKeyword: (value: string) => void;
|
|
100
|
+
checkShouldDisplay: (item: TItem, keyword?: string) => boolean;
|
|
101
|
+
handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
|
|
102
|
+
};
|
|
95
103
|
/**
|
|
96
104
|
* A hook that handles search filter options
|
|
97
105
|
* @param props
|
|
98
106
|
*/
|
|
99
|
-
export declare function useSearch(props: SearchProps):
|
|
100
|
-
searchKeyword: string;
|
|
101
|
-
filteredData: import("../CheckTreePicker/utils").TreeNodeType[];
|
|
102
|
-
updateFilteredData: (nextData: ItemDataType[]) => void;
|
|
103
|
-
setSearchKeyword: React.Dispatch<React.SetStateAction<string>>;
|
|
104
|
-
checkShouldDisplay: (item: ItemDataType, keyword?: string) => boolean;
|
|
105
|
-
handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
|
|
106
|
-
};
|
|
107
|
+
export declare function useSearch<TItem extends Record<string, unknown>, TLabel>(props: SearchProps<TItem, TLabel>): UseSearchResult<TItem>;
|
|
107
108
|
export interface PickerDependentParameters {
|
|
108
109
|
triggerRef?: React.RefObject<OverlayTriggerHandle>;
|
|
109
110
|
rootRef?: React.RefObject<HTMLElement>;
|
|
@@ -116,3 +117,4 @@ export interface PickerDependentParameters {
|
|
|
116
117
|
* A hook of the exposed method of Picker
|
|
117
118
|
*/
|
|
118
119
|
export declare function usePublicMethods(ref: any, parmas: PickerDependentParameters): void;
|
|
120
|
+
export {};
|