rsuite 5.4.4 → 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/CHANGELOG.md +18 -0
- package/CheckTreePicker/styles/index.less +48 -47
- package/Picker/styles/mixin.less +3 -2
- package/Sidenav/styles/index.less +52 -57
- package/TreePicker/styles/index.less +3 -3
- package/cjs/Dropdown/Dropdown.d.ts +5 -0
- 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/MultiCascader/MultiCascader.js +1 -0
- package/cjs/RangeSlider/RangeSlider.d.ts +12 -2
- package/cjs/RangeSlider/RangeSlider.js +35 -12
- package/cjs/utils/treeUtils.js +4 -3
- package/dist/rsuite-rtl.css +91 -107
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +91 -107
- package/dist/rsuite.js +6 -6
- 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/Dropdown/Dropdown.d.ts +5 -0
- 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/MultiCascader/MultiCascader.js +1 -0
- package/esm/RangeSlider/RangeSlider.d.ts +12 -2
- package/esm/RangeSlider/RangeSlider.js +35 -12
- package/esm/utils/treeUtils.js +6 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
# [5.5.0](https://github.com/rsuite/rsuite/compare/v5.4.4...v5.5.0) (2022-01-13)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **Dropdown:** infer toggleAs component props ([#2299](https://github.com/rsuite/rsuite/issues/2299)) ([84611cc](https://github.com/rsuite/rsuite/commit/84611cc6f88e1d9cd712bc3f08be559d0a146ba0))
|
|
6
|
+
- **InputNumber:** inherit html input attributes ([#2298](https://github.com/rsuite/rsuite/issues/2298)) ([d7622ee](https://github.com/rsuite/rsuite/commit/d7622eed72b36ed15e91f606027d2e540391bdc7))
|
|
7
|
+
- **MultiCascader:** fix not rendering the count of selected values ([#2289](https://github.com/rsuite/rsuite/issues/2289)) ([324e90c](https://github.com/rsuite/rsuite/commit/324e90c8499adf58cb25083fd5c99fe98eb9ecba))
|
|
8
|
+
- **Tree:** fix dragNode has cyclic object ([#2281](https://github.com/rsuite/rsuite/issues/2281)) ([26cbaf2](https://github.com/rsuite/rsuite/commit/26cbaf2fd92ab562174e19cf55388c01fe22143a)), closes [#2268](https://github.com/rsuite/rsuite/issues/2268)
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
- **InputNumber:** support keyboard interaction ([#2294](https://github.com/rsuite/rsuite/issues/2294)) ([46993e2](https://github.com/rsuite/rsuite/commit/46993e235ca3d3ee8b6faa16a5fa11a8ed544e3b))
|
|
13
|
+
- **RangeSlider:** add `constraint` prop ([#2291](https://github.com/rsuite/rsuite/issues/2291)) ([a2d38a8](https://github.com/rsuite/rsuite/commit/a2d38a8efe4f85c28ce1f4ee79a89eda1e1cf7b0))
|
|
14
|
+
|
|
15
|
+
### Performance Improvements
|
|
16
|
+
|
|
17
|
+
- **styles:** simplify compound selectors over 4 levels ([#2282](https://github.com/rsuite/rsuite/issues/2282)) ([304e8da](https://github.com/rsuite/rsuite/commit/304e8da0c2057d148bbad36674aba33382439949))
|
|
18
|
+
|
|
1
19
|
## [5.4.4](https://github.com/rsuite/rsuite/compare/v5.4.3...v5.4.4) (2022-01-06)
|
|
2
20
|
|
|
3
21
|
### Bug Fixes
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
@import '../../styles/common';
|
|
2
|
-
@import '../../Picker/styles/
|
|
2
|
+
@import '../../Picker/styles/index';
|
|
3
3
|
@import '../../TreePicker/styles/mixin';
|
|
4
|
+
@import '../../Checkbox/styles/index';
|
|
4
5
|
|
|
5
6
|
// **Check Tree Picker
|
|
6
7
|
// **----------------------
|
|
@@ -23,31 +24,9 @@
|
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.rs-check-tree-node {
|
|
29
|
-
position: relative;
|
|
30
|
-
font-size: @picker-tree-node-font-size;
|
|
31
|
-
line-height: @picker-tree-node-line-height;
|
|
32
|
-
|
|
33
|
-
&-label {
|
|
34
|
-
.rs-check-item {
|
|
35
|
-
display: inline-block;
|
|
36
|
-
|
|
37
|
-
.rs-picker-menu & {
|
|
38
|
-
display: block;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
27
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.rs-check-item.rs-checkbox-checked .rs-checkbox-checker > label {
|
|
47
|
-
.picker-item-active();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.rs-check-item .rs-checkbox-checker > label {
|
|
28
|
+
.rs-check-item .rs-checkbox-checker {
|
|
29
|
+
> label {
|
|
51
30
|
text-align: left;
|
|
52
31
|
position: relative;
|
|
53
32
|
margin: 0;
|
|
@@ -67,37 +46,59 @@
|
|
|
67
46
|
top: 0;
|
|
68
47
|
margin-left: -58px; // 10px + 36px + 12px
|
|
69
48
|
}
|
|
49
|
+
}
|
|
70
50
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
51
|
+
.rs-checkbox-wrapper {
|
|
52
|
+
left: (@checkbox-sense-width + 10px);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
74
56
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
57
|
+
// Only has the first level
|
|
58
|
+
.rs-check-tree-without-children .rs-check-item .rs-checkbox-checker {
|
|
59
|
+
> label {
|
|
60
|
+
padding-left: 34px; //text gap + checkbox space
|
|
78
61
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
62
|
+
&::before {
|
|
63
|
+
width: 28px;
|
|
64
|
+
margin-left: -36px;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
83
67
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
68
|
+
.rs-checkbox-wrapper {
|
|
69
|
+
left: 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.rs-check-tree-node {
|
|
74
|
+
position: relative;
|
|
75
|
+
font-size: @picker-tree-node-font-size;
|
|
76
|
+
line-height: @picker-tree-node-line-height;
|
|
77
|
+
|
|
78
|
+
.rs-check-item {
|
|
79
|
+
display: inline-block;
|
|
80
|
+
|
|
81
|
+
.rs-picker-menu & {
|
|
82
|
+
display: block;
|
|
88
83
|
}
|
|
89
84
|
}
|
|
90
85
|
|
|
86
|
+
&:focus .rs-check-item .rs-checkbox-checker > label {
|
|
87
|
+
.picker-item-hover();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.rs-check-item.rs-checkbox-checked .rs-checkbox-checker > label {
|
|
91
|
+
.picker-item-active();
|
|
92
|
+
}
|
|
93
|
+
|
|
91
94
|
// Uncheckable state
|
|
92
|
-
&-all-uncheckable > .rs-check-
|
|
93
|
-
|
|
94
|
-
padding-left: 22px; // 10px + 12px
|
|
95
|
+
&-all-uncheckable > .rs-check-item .rs-checkbox-checker > label {
|
|
96
|
+
padding-left: 22px; // 10px + 12px
|
|
95
97
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
98
|
+
&::before {
|
|
99
|
+
width: 14px;
|
|
100
|
+
margin-left: 0;
|
|
101
|
+
left: 0;
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
}
|
package/Picker/styles/mixin.less
CHANGED
|
@@ -265,7 +265,8 @@
|
|
|
265
265
|
line-height: @line-height;
|
|
266
266
|
}
|
|
267
267
|
|
|
268
|
-
.
|
|
268
|
+
// FIXME Bad design. Should not set search input styles in a mixin that is used in picker buttons.
|
|
269
|
+
.rs-picker-tag & ~ .rs-picker-tag-wrapper {
|
|
269
270
|
padding-bottom: @padding-vertical - 3px;
|
|
270
271
|
|
|
271
272
|
.rs-tag {
|
|
@@ -278,7 +279,7 @@
|
|
|
278
279
|
font-size: @font-size;
|
|
279
280
|
}
|
|
280
281
|
|
|
281
|
-
|
|
282
|
+
input {
|
|
282
283
|
height: @line-height * @font-size - 2px;
|
|
283
284
|
}
|
|
284
285
|
}
|
|
@@ -37,34 +37,59 @@
|
|
|
37
37
|
margin: 0 !important;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
// <Dropdown> within <Sidenav>
|
|
41
|
+
> .rs-dropdown {
|
|
42
|
+
// Submenu toggle
|
|
43
|
+
.rs-dropdown-item-toggle {
|
|
44
|
+
display: block;
|
|
45
|
+
width: 100%;
|
|
46
|
+
text-align: start;
|
|
47
|
+
background: none;
|
|
48
|
+
padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
|
|
49
|
+
position: relative;
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
text-align: start;
|
|
51
|
-
background: none;
|
|
51
|
+
.rs-sidenav-collapse-in & {
|
|
52
|
+
padding-left: @sidenav-level2-retract;
|
|
53
|
+
}
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
&:focus {
|
|
56
|
+
outline: 0;
|
|
57
|
+
}
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
&:focus-visible {
|
|
60
|
+
.focus-ring(inset);
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
.high-contrast-mode({
|
|
63
|
+
.focus-ring(slim-inset);
|
|
64
|
+
});
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
z-index: 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Submenu toggle icon
|
|
70
|
+
&-icon {
|
|
71
|
+
position: absolute;
|
|
72
|
+
right: @sidenav-padding-horizontal;
|
|
73
|
+
top: @sidenav-children-padding-vertical;
|
|
74
|
+
width: auto;
|
|
75
|
+
height: @sidenav-dropdown-toggle-caret-width;
|
|
76
|
+
transform: rotate(90deg);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Expanded submenu toggle icon
|
|
81
|
+
.rs-dropdown-item-expand .rs-dropdown-item-toggle-icon {
|
|
82
|
+
transform: rotate(270deg);
|
|
65
83
|
}
|
|
66
84
|
}
|
|
67
85
|
|
|
86
|
+
.high-contrast-mode({
|
|
87
|
+
.rs-dropdown-toggle,
|
|
88
|
+
.rs-dropdown-menu {
|
|
89
|
+
border: none;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
|
|
68
93
|
.rs-sidenav-item:focus-visible {
|
|
69
94
|
.focus-ring(inset);
|
|
70
95
|
|
|
@@ -225,32 +250,17 @@
|
|
|
225
250
|
transform: rotate(180deg);
|
|
226
251
|
}
|
|
227
252
|
|
|
228
|
-
.rs-dropdown-item.rs-dropdown-item-expand
|
|
229
|
-
> .rs-dropdown-item-toggle
|
|
230
|
-
> .rs-dropdown-item-toggle-icon {
|
|
231
|
-
transform: rotate(270deg);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
253
|
// Dropdown menu
|
|
235
|
-
|
|
254
|
+
.rs-dropdown-menu {
|
|
236
255
|
.reset-sidenav-dropdown-menu();
|
|
256
|
+
}
|
|
237
257
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
> .rs-dropdown-menu-toggle {
|
|
243
|
-
display: block;
|
|
244
|
-
padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
> .rs-dropdown-menu {
|
|
248
|
-
.reset-sidenav-dropdown-menu();
|
|
249
|
-
}
|
|
258
|
+
// Submenu
|
|
259
|
+
.rs-dropdown-item-submenu {
|
|
260
|
+
padding: 0;
|
|
250
261
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}
|
|
262
|
+
&:hover {
|
|
263
|
+
background-color: transparent;
|
|
254
264
|
}
|
|
255
265
|
}
|
|
256
266
|
}
|
|
@@ -283,21 +293,6 @@
|
|
|
283
293
|
// @warn Here we can only use absolute positioning because of the limitations of using <Dropdown/> component.
|
|
284
294
|
|
|
285
295
|
.rs-dropdown-item-submenu {
|
|
286
|
-
> .rs-dropdown-item-toggle {
|
|
287
|
-
padding-left: @sidenav-level2-retract;
|
|
288
|
-
padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
|
|
289
|
-
position: relative;
|
|
290
|
-
|
|
291
|
-
> .rs-dropdown-item-toggle-icon {
|
|
292
|
-
position: absolute;
|
|
293
|
-
right: @sidenav-padding-horizontal;
|
|
294
|
-
top: @sidenav-children-padding-vertical;
|
|
295
|
-
width: auto;
|
|
296
|
-
height: @sidenav-dropdown-toggle-caret-width;
|
|
297
|
-
transform: rotate(90deg);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
296
|
> .rs-dropdown-item-menu-icon {
|
|
302
297
|
padding-top: @sidenav-children-padding-vertical;
|
|
303
298
|
padding-bottom: @sidenav-children-padding-vertical;
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
text-align: left;
|
|
35
35
|
margin: 0 0 4px 0;
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
&-label {
|
|
38
38
|
position: relative;
|
|
39
39
|
margin: 0;
|
|
40
40
|
//text gap
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
font-size: @picker-tree-node-font-size;
|
|
45
45
|
line-height: @picker-tree-node-line-height;
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
&-content {
|
|
48
48
|
padding: @custom-picker-tree-node-padding-vertical @picker-tree-node-padding-horizontal
|
|
49
49
|
@custom-picker-tree-node-padding-vertical @picker-tree-arrow-down-gap;
|
|
50
50
|
display: inline-block;
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
&-active &-label-content {
|
|
63
63
|
.picker-item-active();
|
|
64
64
|
|
|
65
65
|
color: var(--rs-text-link);
|
|
@@ -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
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _Dropdown = _interopRequireDefault(require("../Dropdown"));
|
|
8
|
+
|
|
9
|
+
var ref = /*#__PURE__*/_react.default.createRef(); // Infer `toggleAs` props (defaults to Button)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
/*#__PURE__*/
|
|
13
|
+
_react.default.createElement(_Dropdown.default, {
|
|
14
|
+
ref: ref,
|
|
15
|
+
appearance: "subtle",
|
|
16
|
+
size: "sm"
|
|
17
|
+
});
|
|
18
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var CustomToggle = function CustomToggle(_props) {
|
|
22
|
+
return null;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/*#__PURE__*/
|
|
26
|
+
_react.default.createElement(_Dropdown.default, {
|
|
27
|
+
ref: ref,
|
|
28
|
+
toggleAs: CustomToggle,
|
|
29
|
+
myProp: "myValue"
|
|
30
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { WithAsProps, TypeAttributes, FormControlBaseProps } from '../@types/common';
|
|
3
|
-
export interface InputNumberProps<T = number | string> extends WithAsProps, FormControlBaseProps<T> {
|
|
3
|
+
export interface InputNumberProps<T = number | string> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size' | 'prefix'>, WithAsProps, FormControlBaseProps<T> {
|
|
4
4
|
/** Button can have different appearances */
|
|
5
5
|
buttonAppearance?: TypeAttributes.Appearance;
|
|
6
6
|
/** An input can show that it is disabled */
|
|
@@ -114,15 +114,15 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
114
114
|
step = _props$step === void 0 ? 1 : _props$step,
|
|
115
115
|
_props$buttonAppearan = props.buttonAppearance,
|
|
116
116
|
buttonAppearance = _props$buttonAppearan === void 0 ? 'subtle' : _props$buttonAppearan,
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
_props$max = props.max,
|
|
120
|
-
max = _props$max === void 0 ? Infinity : _props$max,
|
|
117
|
+
minProp = props.min,
|
|
118
|
+
maxProp = props.max,
|
|
121
119
|
_props$scrollable = props.scrollable,
|
|
122
120
|
scrollable = _props$scrollable === void 0 ? true : _props$scrollable,
|
|
123
121
|
onChange = props.onChange,
|
|
124
122
|
onWheel = props.onWheel,
|
|
125
123
|
restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "disabled", "readOnly", "plaintext", "value", "defaultValue", "size", "prefix", "postfix", "step", "buttonAppearance", "min", "max", "scrollable", "onChange", "onWheel"]);
|
|
124
|
+
var min = minProp !== null && minProp !== void 0 ? minProp : -Infinity;
|
|
125
|
+
var max = maxProp !== null && maxProp !== void 0 ? maxProp : Infinity;
|
|
126
126
|
|
|
127
127
|
var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
|
|
128
128
|
value = _useControlled[0],
|
|
@@ -187,6 +187,35 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
187
187
|
var bit = decimals(val, step);
|
|
188
188
|
handleChangeValue(getSafeValue((val - step).toFixed(bit)), event);
|
|
189
189
|
}, [getSafeValue, handleChangeValue, step, value]);
|
|
190
|
+
var handleKeyDown = (0, _react.useCallback)(function (event) {
|
|
191
|
+
switch (event.key) {
|
|
192
|
+
case _utils.KEY_VALUES.UP:
|
|
193
|
+
event.preventDefault();
|
|
194
|
+
handlePlus(event);
|
|
195
|
+
break;
|
|
196
|
+
|
|
197
|
+
case _utils.KEY_VALUES.DOWN:
|
|
198
|
+
event.preventDefault();
|
|
199
|
+
handleMinus(event);
|
|
200
|
+
break;
|
|
201
|
+
|
|
202
|
+
case _utils.KEY_VALUES.HOME:
|
|
203
|
+
if (typeof minProp !== 'undefined') {
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
handleChangeValue(getSafeValue(minProp), event);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
break;
|
|
209
|
+
|
|
210
|
+
case _utils.KEY_VALUES.END:
|
|
211
|
+
if (typeof maxProp !== 'undefined') {
|
|
212
|
+
event.preventDefault();
|
|
213
|
+
handleChangeValue(getSafeValue(maxProp), event);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}, [handlePlus, handleMinus, minProp, maxProp, handleChangeValue, getSafeValue]);
|
|
190
219
|
var handleWheel = (0, _react.useCallback)(function (event) {
|
|
191
220
|
if (!disabled && !readOnly && event.target === document.activeElement) {
|
|
192
221
|
event.preventDefault();
|
|
@@ -233,7 +262,7 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
233
262
|
}, [handleWheel, scrollable]);
|
|
234
263
|
|
|
235
264
|
var input = /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
|
|
236
|
-
type: "
|
|
265
|
+
type: "number",
|
|
237
266
|
autoComplete: "off",
|
|
238
267
|
step: step,
|
|
239
268
|
inputRef: inputRef,
|
|
@@ -243,7 +272,8 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
243
272
|
disabled: disabled,
|
|
244
273
|
readOnly: readOnly,
|
|
245
274
|
plaintext: plaintext,
|
|
246
|
-
ref: plaintext ? ref : undefined
|
|
275
|
+
ref: plaintext ? ref : undefined,
|
|
276
|
+
onKeyDown: handleKeyDown
|
|
247
277
|
}));
|
|
248
278
|
|
|
249
279
|
if (plaintext) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _InputNumber = _interopRequireDefault(require("../InputNumber"));
|
|
8
|
+
|
|
9
|
+
// Inherits <input type="number" /> attributes
|
|
10
|
+
|
|
11
|
+
/*#__PURE__*/
|
|
12
|
+
_react.default.createElement(_InputNumber.default, {
|
|
13
|
+
placeholder: "Enter number"
|
|
14
|
+
});
|
|
@@ -482,6 +482,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
482
482
|
var _usePickerClassName = (0, _Picker.usePickerClassName)((0, _extends3.default)({}, props, {
|
|
483
483
|
classPrefix: classPrefix,
|
|
484
484
|
hasValue: hasValue,
|
|
485
|
+
countable: countable,
|
|
485
486
|
name: 'cascader',
|
|
486
487
|
appearance: appearance,
|
|
487
488
|
cleanable: cleanable
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { SliderProps } from '../Slider';
|
|
3
3
|
export declare type Range = [number, number];
|
|
4
|
-
export declare type RangeSliderProps = SliderProps<Range
|
|
5
|
-
|
|
4
|
+
export declare type RangeSliderProps = SliderProps<Range> & {
|
|
5
|
+
/**
|
|
6
|
+
* Add constraint to validate before onChange is dispatched
|
|
7
|
+
*/
|
|
8
|
+
constraint?: (range: Range) => boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const RangeSlider: React.ForwardRefExoticComponent<SliderProps<Range> & {
|
|
11
|
+
/**
|
|
12
|
+
* Add constraint to validate before onChange is dispatched
|
|
13
|
+
*/
|
|
14
|
+
constraint?: ((range: Range) => boolean) | undefined;
|
|
15
|
+
} & React.RefAttributes<unknown>>;
|
|
6
16
|
export default RangeSlider;
|
|
@@ -45,6 +45,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
45
45
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
46
46
|
barClassName = props.barClassName,
|
|
47
47
|
className = props.className,
|
|
48
|
+
constraint = props.constraint,
|
|
48
49
|
_props$defaultValue = props.defaultValue,
|
|
49
50
|
defaultValue = _props$defaultValue === void 0 ? defaultDefaultValue : _props$defaultValue,
|
|
50
51
|
graduated = props.graduated,
|
|
@@ -71,7 +72,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
71
72
|
renderMark = props.renderMark,
|
|
72
73
|
onChange = props.onChange,
|
|
73
74
|
onChangeCommitted = props.onChangeCommitted,
|
|
74
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "defaultValue", "graduated", "progress", "vertical", "disabled", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
|
|
75
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "constraint", "defaultValue", "graduated", "progress", "vertical", "disabled", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
|
|
75
76
|
var barRef = (0, _react.useRef)(null); // Define the parameter position of the handle
|
|
76
77
|
|
|
77
78
|
var handleIndexs = (0, _react.useRef)([0, 1]);
|
|
@@ -180,14 +181,27 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
180
181
|
|
|
181
182
|
return nextValue;
|
|
182
183
|
}, [getRangeValue, getValidValue]);
|
|
184
|
+
/**
|
|
185
|
+
* Whether a range is valid against given constraint (if any)
|
|
186
|
+
* Should check before every `setValue` calls
|
|
187
|
+
*/
|
|
188
|
+
|
|
189
|
+
var isRangeMatchingConstraint = (0, _react.useCallback)(function (range) {
|
|
190
|
+
// If no constraint is defined, any range is valid
|
|
191
|
+
if (!constraint) return true;
|
|
192
|
+
return constraint(range);
|
|
193
|
+
}, [constraint]);
|
|
183
194
|
/**
|
|
184
195
|
* Callback function that is fired when the mousemove is triggered
|
|
185
196
|
*/
|
|
186
197
|
|
|
187
198
|
var handleDragMove = (0, _utils.useEventCallback)(function (event, dataset) {
|
|
188
199
|
var nextValue = getNextValue(event, dataset);
|
|
189
|
-
|
|
190
|
-
|
|
200
|
+
|
|
201
|
+
if (isRangeMatchingConstraint(nextValue)) {
|
|
202
|
+
setValue(nextValue);
|
|
203
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
204
|
+
}
|
|
191
205
|
});
|
|
192
206
|
/**
|
|
193
207
|
* Callback function that is fired when the mouseup is triggered
|
|
@@ -195,9 +209,12 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
195
209
|
|
|
196
210
|
var handleChangeCommitted = (0, _react.useCallback)(function (event, dataset) {
|
|
197
211
|
var nextValue = getNextValue(event, dataset);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
212
|
+
|
|
213
|
+
if (isRangeMatchingConstraint(nextValue)) {
|
|
214
|
+
setValue(nextValue);
|
|
215
|
+
onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
|
|
216
|
+
}
|
|
217
|
+
}, [getNextValue, onChangeCommitted, isRangeMatchingConstraint, setValue]);
|
|
201
218
|
var handleKeyDown = (0, _react.useCallback)(function (event) {
|
|
202
219
|
var _event$target;
|
|
203
220
|
|
|
@@ -240,9 +257,12 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
240
257
|
|
|
241
258
|
|
|
242
259
|
event.preventDefault();
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
260
|
+
|
|
261
|
+
if (isRangeMatchingConstraint(nextValue)) {
|
|
262
|
+
setValue(nextValue);
|
|
263
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
264
|
+
}
|
|
265
|
+
}, [max, min, onChange, rtl, isRangeMatchingConstraint, setValue, step, value]);
|
|
246
266
|
var handleClick = (0, _react.useCallback)(function (event) {
|
|
247
267
|
if (disabled) {
|
|
248
268
|
return;
|
|
@@ -259,9 +279,12 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
259
279
|
}
|
|
260
280
|
|
|
261
281
|
var nextValue = getValidValue([start, end].sort());
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
282
|
+
|
|
283
|
+
if (isRangeMatchingConstraint(nextValue)) {
|
|
284
|
+
setValue(nextValue);
|
|
285
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
286
|
+
}
|
|
287
|
+
}, [disabled, getValidValue, getValueByPosition, isRangeMatchingConstraint, onChange, setValue, value]);
|
|
265
288
|
var handleProps = (0, _react.useMemo)(function () {
|
|
266
289
|
return [{
|
|
267
290
|
value: value[0],
|
package/cjs/utils/treeUtils.js
CHANGED
|
@@ -322,6 +322,7 @@ function createUpdateTreeDataFunction(params, _ref2) {
|
|
|
322
322
|
var dragNode = params.dragNode,
|
|
323
323
|
dropNode = params.dropNode,
|
|
324
324
|
dropNodePosition = params.dropNodePosition;
|
|
325
|
+
var cloneDragNode = (0, _extends3.default)({}, dragNode);
|
|
325
326
|
removeDragNode(data, params, {
|
|
326
327
|
valueKey: valueKey,
|
|
327
328
|
childrenKey: childrenKey
|
|
@@ -336,16 +337,16 @@ function createUpdateTreeDataFunction(params, _ref2) {
|
|
|
336
337
|
if (dropNodePosition === _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER) {
|
|
337
338
|
_item2[childrenKey] = (0, _isNil2.default)(_item2[childrenKey]) ? [] : _item2[childrenKey];
|
|
338
339
|
|
|
339
|
-
_item2[childrenKey].push(
|
|
340
|
+
_item2[childrenKey].push(cloneDragNode);
|
|
340
341
|
|
|
341
342
|
break;
|
|
342
343
|
} else if (dropNodePosition === _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER_TOP) {
|
|
343
344
|
// drag to top of node
|
|
344
|
-
items.splice(_index2, 0,
|
|
345
|
+
items.splice(_index2, 0, cloneDragNode);
|
|
345
346
|
break;
|
|
346
347
|
} else if (dropNodePosition === _utils2.TREE_NODE_DROP_POSITION.DRAG_OVER_BOTTOM) {
|
|
347
348
|
// drag to bottom of node
|
|
348
|
-
items.splice(_index2 + 1, 0,
|
|
349
|
+
items.splice(_index2 + 1, 0, cloneDragNode);
|
|
349
350
|
break;
|
|
350
351
|
}
|
|
351
352
|
}
|