rsuite 5.59.3-alpha.1 → 5.60.1
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/Animation/styles/fade.less +1 -1
- package/Animation/styles/index.css +1 -1
- package/CHANGELOG.md +27 -0
- package/DateRangePicker/styles/index.css +2 -3
- package/DateRangePicker/styles/index.less +6 -5
- package/TagInput/styles/index.css +24 -24
- package/TagPicker/styles/index.css +24 -24
- package/TagPicker/styles/index.less +11 -10
- package/Toggle/styles/index.css +2 -1
- package/Toggle/styles/index.less +2 -1
- package/cjs/DateRangePicker/DateRangePicker.js +17 -9
- package/cjs/DateRangePicker/utils.d.ts +2 -2
- package/cjs/DateRangePicker/utils.js +2 -2
- package/cjs/Form/Form.d.ts +13 -9
- package/cjs/Form/Form.js +55 -11
- package/cjs/Form/FormContext.d.ts +2 -2
- package/cjs/Form/hooks/useFormRef.d.ts +9 -7
- package/cjs/Form/hooks/useFormRef.js +5 -32
- package/cjs/Form/hooks/useFormValidate.d.ts +6 -4
- package/cjs/Form/hooks/useFormValidate.js +18 -12
- package/cjs/Form/hooks/useFormValue.d.ts +8 -1
- package/cjs/Form/hooks/useFormValue.js +7 -1
- package/cjs/InputPicker/InputAutosize.js +2 -2
- package/cjs/InputPicker/InputPicker.d.ts +5 -7
- package/cjs/InputPicker/InputPicker.js +119 -151
- package/cjs/InputPicker/InputPickerContext.d.ts +11 -3
- package/cjs/InputPicker/InputPickerContext.js +7 -1
- package/cjs/InputPicker/hooks/useData.d.ts +17 -0
- package/cjs/InputPicker/hooks/useData.js +44 -0
- package/cjs/InputPicker/hooks/useInput.d.ts +21 -0
- package/cjs/InputPicker/hooks/useInput.js +46 -0
- package/cjs/InputPicker/hooks/useMaxWidth.d.ts +4 -0
- package/cjs/InputPicker/hooks/useMaxWidth.js +25 -0
- package/cjs/InputPicker/index.d.ts +2 -1
- package/cjs/InputPicker/utils.d.ts +1 -0
- package/cjs/InputPicker/utils.js +17 -0
- package/cjs/TagInput/index.js +2 -2
- package/cjs/TagPicker/index.js +2 -2
- package/dist/rsuite-no-reset-rtl.css +29 -29
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +29 -29
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +29 -29
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +29 -29
- package/dist/rsuite.js +55 -11
- 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/DateRangePicker/DateRangePicker.js +17 -9
- package/esm/DateRangePicker/utils.d.ts +2 -2
- package/esm/DateRangePicker/utils.js +2 -2
- package/esm/Form/Form.d.ts +13 -9
- package/esm/Form/Form.js +55 -11
- package/esm/Form/FormContext.d.ts +2 -2
- package/esm/Form/hooks/useFormRef.d.ts +9 -7
- package/esm/Form/hooks/useFormRef.js +5 -32
- package/esm/Form/hooks/useFormValidate.d.ts +6 -4
- package/esm/Form/hooks/useFormValidate.js +18 -12
- package/esm/Form/hooks/useFormValue.d.ts +8 -1
- package/esm/Form/hooks/useFormValue.js +7 -1
- package/esm/InputPicker/InputAutosize.js +2 -2
- package/esm/InputPicker/InputPicker.d.ts +5 -7
- package/esm/InputPicker/InputPicker.js +111 -143
- package/esm/InputPicker/InputPickerContext.d.ts +11 -3
- package/esm/InputPicker/InputPickerContext.js +4 -0
- package/esm/InputPicker/hooks/useData.d.ts +17 -0
- package/esm/InputPicker/hooks/useData.js +38 -0
- package/esm/InputPicker/hooks/useInput.d.ts +21 -0
- package/esm/InputPicker/hooks/useInput.js +40 -0
- package/esm/InputPicker/hooks/useMaxWidth.d.ts +4 -0
- package/esm/InputPicker/hooks/useMaxWidth.js +19 -0
- package/esm/InputPicker/index.d.ts +2 -1
- package/esm/InputPicker/utils.d.ts +1 -0
- package/esm/InputPicker/utils.js +12 -0
- package/esm/TagInput/index.js +2 -2
- package/esm/TagPicker/index.js +2 -2
- package/package.json +1 -1
- package/styles/variables.less +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
## [5.60.1](https://github.com/rsuite/rsuite/compare/v5.60.0...v5.60.1) (2024-05-03)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **DateRangePicker:** fix not auto switching to the end calendar when only one calendar is displayed ([#3781](https://github.com/rsuite/rsuite/issues/3781)) ([5322f9c](https://github.com/rsuite/rsuite/commit/5322f9cc747750b865e8184dcab36609e906b274))
|
|
7
|
+
* **DateRangePicker:** fix not updating time on calendar when typing to change time ([#3777](https://github.com/rsuite/rsuite/issues/3777)) ([d1a7350](https://github.com/rsuite/rsuite/commit/d1a73502908026ceb20b5f2f49709b4dd03f334a))
|
|
8
|
+
* **toggle:** block pointer events when disabled ([#3774](https://github.com/rsuite/rsuite/issues/3774)) ([d833a0a](https://github.com/rsuite/rsuite/commit/d833a0ab1c759b568bba6d87d697687e3ca7cbed))
|
|
9
|
+
* **Toggle:** fix the height problem of the switch element ([#3780](https://github.com/rsuite/rsuite/issues/3780)) ([ff1570c](https://github.com/rsuite/rsuite/commit/ff1570c7d8776f2a120f1c048237725597157143))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# [5.60.0](https://github.com/rsuite/rsuite/compare/v5.59.2...v5.60.0) (2024-04-26)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **Fade:** fix Picker not working in Drawer without backdrop ([#3759](https://github.com/rsuite/rsuite/issues/3759)) ([930a321](https://github.com/rsuite/rsuite/commit/930a3212b58202f4d0bf05a8bb191195944d589c))
|
|
19
|
+
* **TagPicker:** fix misalignment of large size tag with textbox ([#3755](https://github.com/rsuite/rsuite/issues/3755)) ([2bcd793](https://github.com/rsuite/rsuite/commit/2bcd793cd7cf1b181643125fe92f4ffb0e18f771))
|
|
20
|
+
* **TagPicker:** fix text flicker when entering ([#3758](https://github.com/rsuite/rsuite/issues/3758)) ([f7058d1](https://github.com/rsuite/rsuite/commit/f7058d1e9234e43c9f8d7884636a09d83f40fcb9))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Features
|
|
24
|
+
|
|
25
|
+
* **Form:** add support for onSubmit and onReset ([#3750](https://github.com/rsuite/rsuite/issues/3750)) ([d9b747e](https://github.com/rsuite/rsuite/commit/d9b747e97f3aaaa1d0b047ab81150d2a01764ed1))
|
|
26
|
+
|
|
27
|
+
|
|
1
28
|
## [5.59.2](https://github.com/rsuite/rsuite/compare/v5.59.1...v5.59.2) (2024-04-19)
|
|
2
29
|
|
|
3
30
|
|
|
@@ -4017,9 +4017,6 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
|
|
|
4017
4017
|
.rs-picker-popup .rs-calendar-month-dropdown-list {
|
|
4018
4018
|
width: 185px;
|
|
4019
4019
|
}
|
|
4020
|
-
.rs-picker-popup .rs-picker-daterange-panel-show-one-calendar .rs-picker-toolbar {
|
|
4021
|
-
max-width: 255px;
|
|
4022
|
-
}
|
|
4023
4020
|
.rs-picker-popup .rs-picker-daterange-panel-show-one-calendar .rs-picker-toolbar-ranges {
|
|
4024
4021
|
width: 190px;
|
|
4025
4022
|
}
|
|
@@ -4058,6 +4055,8 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
|
|
|
4058
4055
|
bottom: -1px;
|
|
4059
4056
|
border-bottom: 2px solid #3498ff;
|
|
4060
4057
|
left: 0;
|
|
4058
|
+
-webkit-transition: left 0.3s;
|
|
4059
|
+
transition: left 0.3s;
|
|
4061
4060
|
}
|
|
4062
4061
|
.rs-picker-daterange-header.rs-picker-tab-active-end::after {
|
|
4063
4062
|
left: 50%;
|
|
@@ -62,11 +62,11 @@
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
.rs-picker-daterange-panel-show-one-calendar
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
.rs-picker-daterange-panel-show-one-calendar {
|
|
66
|
+
.rs-picker-toolbar {
|
|
67
|
+
&-ranges {
|
|
68
|
+
width: 190px;
|
|
69
|
+
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -105,6 +105,7 @@
|
|
|
105
105
|
bottom: -1px;
|
|
106
106
|
border-bottom: 2px solid #3498ff;
|
|
107
107
|
left: 0;
|
|
108
|
+
transition: left 0.3s;
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
111
|
|
|
@@ -3610,30 +3610,6 @@ textarea.rs-picker-search-input {
|
|
|
3610
3610
|
.rs-plaintext .rs-tag {
|
|
3611
3611
|
margin: 0;
|
|
3612
3612
|
}
|
|
3613
|
-
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3614
|
-
padding-bottom: 6px;
|
|
3615
|
-
}
|
|
3616
|
-
.rs-picker-tag-lg .rs-picker-textbox .rs-picker-search-input {
|
|
3617
|
-
padding-left: 16px;
|
|
3618
|
-
margin-top: 6px;
|
|
3619
|
-
font-size: 16px;
|
|
3620
|
-
}
|
|
3621
|
-
.rs-picker-tag-lg .rs-picker-textbox input {
|
|
3622
|
-
height: 20px;
|
|
3623
|
-
}
|
|
3624
|
-
.rs-picker-tag-lg .rs-picker-toggle {
|
|
3625
|
-
padding-top: 8px;
|
|
3626
|
-
padding-bottom: 8px;
|
|
3627
|
-
-webkit-box-shadow: none;
|
|
3628
|
-
box-shadow: none;
|
|
3629
|
-
}
|
|
3630
|
-
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3631
|
-
min-height: 40px;
|
|
3632
|
-
}
|
|
3633
|
-
.rs-picker-tag-lg .rs-picker-tag-list .rs-tag-lg {
|
|
3634
|
-
margin-top: 6px;
|
|
3635
|
-
margin-left: 6px;
|
|
3636
|
-
}
|
|
3637
3613
|
.rs-picker-tag .rs-picker-textbox,
|
|
3638
3614
|
.rs-picker-tag-md .rs-picker-textbox {
|
|
3639
3615
|
padding-bottom: 5px;
|
|
@@ -3660,6 +3636,30 @@ textarea.rs-picker-search-input {
|
|
|
3660
3636
|
margin-top: 5px;
|
|
3661
3637
|
margin-left: 5px;
|
|
3662
3638
|
}
|
|
3639
|
+
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3640
|
+
padding-bottom: 7px;
|
|
3641
|
+
}
|
|
3642
|
+
.rs-picker-tag-lg .rs-picker-textbox .rs-picker-search-input {
|
|
3643
|
+
padding-left: 16px;
|
|
3644
|
+
margin-top: 7px;
|
|
3645
|
+
font-size: 16px;
|
|
3646
|
+
}
|
|
3647
|
+
.rs-picker-tag-lg .rs-picker-textbox input {
|
|
3648
|
+
height: 20px;
|
|
3649
|
+
}
|
|
3650
|
+
.rs-picker-tag-lg .rs-picker-toggle {
|
|
3651
|
+
padding-top: 9px;
|
|
3652
|
+
padding-bottom: 9px;
|
|
3653
|
+
-webkit-box-shadow: none;
|
|
3654
|
+
box-shadow: none;
|
|
3655
|
+
}
|
|
3656
|
+
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3657
|
+
min-height: 40px;
|
|
3658
|
+
}
|
|
3659
|
+
.rs-picker-tag-lg .rs-picker-tag-list .rs-tag-lg {
|
|
3660
|
+
margin-top: 6px;
|
|
3661
|
+
margin-left: 6px;
|
|
3662
|
+
}
|
|
3663
3663
|
.rs-picker-tag-sm .rs-picker-textbox {
|
|
3664
3664
|
padding-bottom: 2px;
|
|
3665
3665
|
}
|
|
@@ -3610,30 +3610,6 @@ textarea.rs-picker-search-input {
|
|
|
3610
3610
|
.rs-plaintext .rs-tag {
|
|
3611
3611
|
margin: 0;
|
|
3612
3612
|
}
|
|
3613
|
-
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3614
|
-
padding-bottom: 6px;
|
|
3615
|
-
}
|
|
3616
|
-
.rs-picker-tag-lg .rs-picker-textbox .rs-picker-search-input {
|
|
3617
|
-
padding-left: 16px;
|
|
3618
|
-
margin-top: 6px;
|
|
3619
|
-
font-size: 16px;
|
|
3620
|
-
}
|
|
3621
|
-
.rs-picker-tag-lg .rs-picker-textbox input {
|
|
3622
|
-
height: 20px;
|
|
3623
|
-
}
|
|
3624
|
-
.rs-picker-tag-lg .rs-picker-toggle {
|
|
3625
|
-
padding-top: 8px;
|
|
3626
|
-
padding-bottom: 8px;
|
|
3627
|
-
-webkit-box-shadow: none;
|
|
3628
|
-
box-shadow: none;
|
|
3629
|
-
}
|
|
3630
|
-
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3631
|
-
min-height: 40px;
|
|
3632
|
-
}
|
|
3633
|
-
.rs-picker-tag-lg .rs-picker-tag-list .rs-tag-lg {
|
|
3634
|
-
margin-top: 6px;
|
|
3635
|
-
margin-left: 6px;
|
|
3636
|
-
}
|
|
3637
3613
|
.rs-picker-tag .rs-picker-textbox,
|
|
3638
3614
|
.rs-picker-tag-md .rs-picker-textbox {
|
|
3639
3615
|
padding-bottom: 5px;
|
|
@@ -3660,6 +3636,30 @@ textarea.rs-picker-search-input {
|
|
|
3660
3636
|
margin-top: 5px;
|
|
3661
3637
|
margin-left: 5px;
|
|
3662
3638
|
}
|
|
3639
|
+
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3640
|
+
padding-bottom: 7px;
|
|
3641
|
+
}
|
|
3642
|
+
.rs-picker-tag-lg .rs-picker-textbox .rs-picker-search-input {
|
|
3643
|
+
padding-left: 16px;
|
|
3644
|
+
margin-top: 7px;
|
|
3645
|
+
font-size: 16px;
|
|
3646
|
+
}
|
|
3647
|
+
.rs-picker-tag-lg .rs-picker-textbox input {
|
|
3648
|
+
height: 20px;
|
|
3649
|
+
}
|
|
3650
|
+
.rs-picker-tag-lg .rs-picker-toggle {
|
|
3651
|
+
padding-top: 9px;
|
|
3652
|
+
padding-bottom: 9px;
|
|
3653
|
+
-webkit-box-shadow: none;
|
|
3654
|
+
box-shadow: none;
|
|
3655
|
+
}
|
|
3656
|
+
.rs-picker-tag-lg .rs-picker-textbox {
|
|
3657
|
+
min-height: 40px;
|
|
3658
|
+
}
|
|
3659
|
+
.rs-picker-tag-lg .rs-picker-tag-list .rs-tag-lg {
|
|
3660
|
+
margin-top: 6px;
|
|
3661
|
+
margin-left: 6px;
|
|
3662
|
+
}
|
|
3663
3663
|
.rs-picker-tag-sm .rs-picker-textbox {
|
|
3664
3664
|
padding-bottom: 2px;
|
|
3665
3665
|
}
|
|
@@ -67,16 +67,6 @@
|
|
|
67
67
|
|
|
68
68
|
// Tag Picker Size
|
|
69
69
|
// --------------------------------------------------
|
|
70
|
-
.rs-picker-tag-lg {
|
|
71
|
-
.rs-tag-picker-size(@padding-y-lg - 1; @padding-x-lg; @font-size-large; @line-height-large);
|
|
72
|
-
.rs-picker-textbox {
|
|
73
|
-
min-height: 40px;
|
|
74
|
-
}
|
|
75
|
-
.rs-picker-tag-list .rs-tag-lg {
|
|
76
|
-
margin-top: 6px;
|
|
77
|
-
margin-left: 6px;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
70
|
|
|
81
71
|
// Default size
|
|
82
72
|
.rs-picker-tag,
|
|
@@ -88,6 +78,17 @@
|
|
|
88
78
|
}
|
|
89
79
|
}
|
|
90
80
|
|
|
81
|
+
.rs-picker-tag-lg {
|
|
82
|
+
.rs-tag-picker-size(@padding-y-lg; @padding-x-lg; @font-size-large; @line-height-large);
|
|
83
|
+
.rs-picker-textbox {
|
|
84
|
+
min-height: 40px;
|
|
85
|
+
}
|
|
86
|
+
.rs-picker-tag-list .rs-tag-lg {
|
|
87
|
+
margin-top: 6px;
|
|
88
|
+
margin-left: 6px;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
91
92
|
.rs-picker-tag-sm {
|
|
92
93
|
.rs-tag-picker-size(@padding-y-sm; @padding-x-sm; @font-size-base; @line-height-base);
|
|
93
94
|
.rs-picker-textbox {
|
package/Toggle/styles/index.css
CHANGED
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
}
|
|
115
115
|
.rs-toggle {
|
|
116
116
|
position: relative;
|
|
117
|
+
display: inline-block;
|
|
117
118
|
}
|
|
118
119
|
.rs-toggle .rs-toggle-loader {
|
|
119
120
|
width: 18px;
|
|
@@ -239,7 +240,7 @@
|
|
|
239
240
|
-webkit-box-shadow: inset 0 0 0 1px var(--rs-toggle-disabled-thumb);
|
|
240
241
|
box-shadow: inset 0 0 0 1px #fff;
|
|
241
242
|
box-shadow: inset 0 0 0 1px var(--rs-toggle-disabled-thumb);
|
|
242
|
-
|
|
243
|
+
pointer-events: none;
|
|
243
244
|
}
|
|
244
245
|
.rs-toggle-checked .rs-toggle-presentation {
|
|
245
246
|
background-color: #3498ff;
|
package/Toggle/styles/index.less
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// todo: Consider renaming as .rs-toggle
|
|
11
11
|
.rs-toggle {
|
|
12
12
|
position: relative;
|
|
13
|
+
display: inline-block;
|
|
13
14
|
|
|
14
15
|
// Default size is middle.
|
|
15
16
|
.toggle(md);
|
|
@@ -70,7 +71,7 @@
|
|
|
70
71
|
background-color: var(--rs-toggle-disabled-bg);
|
|
71
72
|
color: var(--rs-toggle-disabled-thumb);
|
|
72
73
|
box-shadow: inset 0 0 0 1px var(--rs-toggle-disabled-thumb);
|
|
73
|
-
|
|
74
|
+
pointer-events: none;
|
|
74
75
|
}
|
|
75
76
|
|
|
76
77
|
// checked state
|
|
@@ -108,7 +108,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
108
108
|
prefix = _useClassNames.prefix;
|
|
109
109
|
var _useCustom = (0, _utils.useCustom)('DateRangePicker', overrideLocale),
|
|
110
110
|
locale = _useCustom.locale,
|
|
111
|
-
formatDate = _useCustom.formatDate;
|
|
111
|
+
formatDate = _useCustom.formatDate; // Default gap between two calendars, if `showOneCalendar` is set, the gap is 0
|
|
112
|
+
var calendarGap = showOneCalendar ? 0 : 1;
|
|
112
113
|
var rangeFormatStr = "" + formatStr + character + formatStr;
|
|
113
114
|
var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null),
|
|
114
115
|
value = _useControlled[0],
|
|
@@ -135,7 +136,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
135
136
|
var _useState2 = (0, _react.useState)((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
|
|
136
137
|
selectedDates = _useState2[0],
|
|
137
138
|
setSelectedDates = _useState2[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
|
|
138
|
-
var _useState3 = (0, _react.useState)(
|
|
139
|
+
var _useState3 = (0, _react.useState)(value),
|
|
139
140
|
hoverDateRange = _useState3[0],
|
|
140
141
|
setHoverDateRange = _useState3[1]; // The displayed calendar panel is rendered based on this value.
|
|
141
142
|
var _useState4 = (0, _react.useState)((0, _utils2.getSafeCalendarDate)({
|
|
@@ -171,14 +172,14 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
171
172
|
var nextValue = dateRange;
|
|
172
173
|
|
|
173
174
|
// The time should remain the same when the dates in the date range are changed.
|
|
174
|
-
if ((0, _dateUtils.shouldRenderTime)(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && eventName
|
|
175
|
+
if ((0, _dateUtils.shouldRenderTime)(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && (eventName === 'changeDate' || eventName === 'changeMonth')) {
|
|
175
176
|
var _startDate = (0, _dateUtils.copyTime)({
|
|
176
177
|
from: getCalendarDatetime('start'),
|
|
177
178
|
to: dateRange[0]
|
|
178
179
|
});
|
|
179
180
|
var _endDate = (0, _dateUtils.copyTime)({
|
|
180
181
|
from: getCalendarDatetime('end'),
|
|
181
|
-
to: dateRange.length === 1 ? (0, _dateUtils.addMonths)(_startDate,
|
|
182
|
+
to: dateRange.length === 1 ? (0, _dateUtils.addMonths)(_startDate, calendarGap) : dateRange[1]
|
|
182
183
|
});
|
|
183
184
|
nextValue = [_startDate, _endDate];
|
|
184
185
|
} else if (dateRange === null && typeof defaultCalendarValue !== 'undefined') {
|
|
@@ -188,7 +189,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
188
189
|
var nextCalendarDate = (0, _utils2.getSafeCalendarDate)({
|
|
189
190
|
value: nextValue,
|
|
190
191
|
calendarKey: calendarKey,
|
|
191
|
-
|
|
192
|
+
// When only the month is displayed and only one calendar is displayed,
|
|
193
|
+
// there is no need to add a month and two calendar panels are allowed to display the same month
|
|
194
|
+
allowSameMonth: onlyShowMonth || showOneCalendar
|
|
192
195
|
});
|
|
193
196
|
setCalendarDate(nextCalendarDate);
|
|
194
197
|
if (onlyShowMonth && eventName === 'changeMonth') {
|
|
@@ -337,6 +340,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
337
340
|
} else {
|
|
338
341
|
setHoverDateRange([nextSelectDates[0], nextSelectDates[0]]);
|
|
339
342
|
}
|
|
343
|
+
if (isSelectedIdle) {
|
|
344
|
+
setActiveCalendarKey('end');
|
|
345
|
+
} else {
|
|
346
|
+
setActiveCalendarKey('start');
|
|
347
|
+
}
|
|
340
348
|
setSelectedDates(nextSelectDates);
|
|
341
349
|
setCalendarDateRange({
|
|
342
350
|
dateRange: nextSelectDates,
|
|
@@ -408,7 +416,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
408
416
|
if (value && value.length) {
|
|
409
417
|
var _startDate3 = value[0],
|
|
410
418
|
endData = value[1];
|
|
411
|
-
nextCalendarDate = [_startDate3, (0, _dateUtils.isSameMonth)(_startDate3, endData) ? (0, _dateUtils.addMonths)(endData,
|
|
419
|
+
nextCalendarDate = [_startDate3, (0, _dateUtils.isSameMonth)(_startDate3, endData) ? (0, _dateUtils.addMonths)(endData, calendarGap) : endData];
|
|
412
420
|
} else {
|
|
413
421
|
// Reset the date on the calendar to the default date
|
|
414
422
|
nextCalendarDate = (0, _utils2.getSafeCalendarDate)({
|
|
@@ -737,11 +745,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
737
745
|
format: formatStr,
|
|
738
746
|
placeholder: placeholder ? placeholder : rangeFormatStr,
|
|
739
747
|
disabled: disabled,
|
|
740
|
-
onChange: handleInputChange,
|
|
741
748
|
readOnly: readOnly || !editable || loading,
|
|
742
749
|
plaintext: plaintext,
|
|
743
|
-
|
|
744
|
-
|
|
750
|
+
htmlSize: getInputHtmlSize(),
|
|
751
|
+
onChange: handleInputChange,
|
|
752
|
+
onKeyDown: handleInputKeyDown
|
|
745
753
|
})), /*#__PURE__*/_react.default.createElement(_Picker.PickerIndicator, {
|
|
746
754
|
loading: loading,
|
|
747
755
|
caretAs: caretAs,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DateRange } from './types';
|
|
2
|
-
export declare function getSafeCalendarDate({ value, calendarKey,
|
|
2
|
+
export declare function getSafeCalendarDate({ value, calendarKey, allowSameMonth }: {
|
|
3
3
|
value: [] | [Date] | [Date, Date] | null;
|
|
4
4
|
calendarKey?: 'start' | 'end';
|
|
5
|
-
|
|
5
|
+
allowSameMonth?: boolean;
|
|
6
6
|
}): DateRange;
|
|
7
7
|
export declare const isSameRange: (source: DateRange | null, dest: DateRange | null, format: string) => boolean;
|
|
8
8
|
export declare const getMonthHoverRange: (date: Date) => DateRange;
|
|
@@ -10,10 +10,10 @@ function getSafeCalendarDate(_ref) {
|
|
|
10
10
|
var value = _ref.value,
|
|
11
11
|
_ref$calendarKey = _ref.calendarKey,
|
|
12
12
|
calendarKey = _ref$calendarKey === void 0 ? 'start' : _ref$calendarKey,
|
|
13
|
-
|
|
13
|
+
allowSameMonth = _ref.allowSameMonth;
|
|
14
14
|
// Update calendarDate if the value is not null
|
|
15
15
|
value = (_value = value) !== null && _value !== void 0 ? _value : [];
|
|
16
|
-
var gap =
|
|
16
|
+
var gap = allowSameMonth ? 0 : 1;
|
|
17
17
|
if (value[0] && value[1]) {
|
|
18
18
|
var diffMonth = (0, _dateUtils.differenceInCalendarMonths)(value[1], value[0]);
|
|
19
19
|
if (calendarKey === 'start') {
|
package/cjs/Form/Form.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { FormHTMLAttributes } from 'react';
|
|
2
2
|
import { Schema } from 'schema-typed';
|
|
3
3
|
import FormControl from '../FormControl';
|
|
4
4
|
import FormControlLabel from '../FormControlLabel';
|
|
@@ -7,9 +7,9 @@ import FormGroup from '../FormGroup';
|
|
|
7
7
|
import FormHelpText from '../FormHelpText';
|
|
8
8
|
import { WithAsProps, TypeAttributes, RsRefForwardingComponent } from '../@types/common';
|
|
9
9
|
import { FormInstance } from './hooks/useFormRef';
|
|
10
|
-
export interface FormProps<
|
|
11
|
-
[P in keyof
|
|
12
|
-
}> extends WithAsProps, Omit<
|
|
10
|
+
export interface FormProps<V = Record<string, any>, M = any, E = {
|
|
11
|
+
[P in keyof V]?: M;
|
|
12
|
+
}> extends WithAsProps, Omit<FormHTMLAttributes<HTMLFormElement>, 'onChange' | 'onSubmit' | 'onError' | 'onReset'> {
|
|
13
13
|
/**
|
|
14
14
|
* Set the left and right columns of the layout of the elements within the form。
|
|
15
15
|
*
|
|
@@ -23,11 +23,11 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
|
|
|
23
23
|
/**
|
|
24
24
|
* Current value of the input. Creates a controlled component
|
|
25
25
|
*/
|
|
26
|
-
formValue?:
|
|
26
|
+
formValue?: V | null;
|
|
27
27
|
/**
|
|
28
28
|
* Initial value
|
|
29
29
|
*/
|
|
30
|
-
formDefaultValue?:
|
|
30
|
+
formDefaultValue?: V | null;
|
|
31
31
|
/**
|
|
32
32
|
* Error message of form
|
|
33
33
|
*/
|
|
@@ -77,7 +77,7 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
|
|
|
77
77
|
/**
|
|
78
78
|
* Callback fired when data changing
|
|
79
79
|
*/
|
|
80
|
-
onChange?: (formValue:
|
|
80
|
+
onChange?: (formValue: V, event?: React.SyntheticEvent) => void;
|
|
81
81
|
/**
|
|
82
82
|
* Callback fired when error checking
|
|
83
83
|
*/
|
|
@@ -87,9 +87,13 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
|
|
|
87
87
|
*/
|
|
88
88
|
onCheck?: (formError: E) => void;
|
|
89
89
|
/**
|
|
90
|
-
* Callback fired when form submit
|
|
90
|
+
* Callback fired when form submit,only when the form data is validated will trigger
|
|
91
91
|
*/
|
|
92
|
-
onSubmit?: (
|
|
92
|
+
onSubmit?: (formValue: V | null, event?: React.FormEvent<HTMLFormElement>) => void;
|
|
93
|
+
/**
|
|
94
|
+
* Callback fired when form reset
|
|
95
|
+
*/
|
|
96
|
+
onReset?: (formValue: V | null, event?: React.FormEvent<HTMLFormElement>) => void;
|
|
93
97
|
}
|
|
94
98
|
export interface FormComponent extends RsRefForwardingComponent<'form', FormProps & {
|
|
95
99
|
ref?: React.Ref<FormInstance>;
|
package/cjs/Form/Form.js
CHANGED
|
@@ -21,6 +21,7 @@ var _useSchemaModel2 = _interopRequireDefault(require("./hooks/useSchemaModel"))
|
|
|
21
21
|
var _useFormValidate2 = _interopRequireDefault(require("./hooks/useFormValidate"));
|
|
22
22
|
var _useFormValue2 = _interopRequireDefault(require("./hooks/useFormValue"));
|
|
23
23
|
var _useFormClassNames = _interopRequireDefault(require("./hooks/useFormClassNames"));
|
|
24
|
+
var _useFormRef = _interopRequireDefault(require("./hooks/useFormRef"));
|
|
24
25
|
var defaultSchema = (0, _schemaTyped.SchemaModel)({});
|
|
25
26
|
|
|
26
27
|
/**
|
|
@@ -51,10 +52,11 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
51
52
|
children = props.children,
|
|
52
53
|
disabled = props.disabled,
|
|
53
54
|
onSubmit = props.onSubmit,
|
|
55
|
+
onReset = props.onReset,
|
|
54
56
|
onCheck = props.onCheck,
|
|
55
57
|
onError = props.onError,
|
|
56
58
|
onChange = props.onChange,
|
|
57
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["checkTrigger", "classPrefix", "errorFromContext", "formDefaultValue", "formValue", "formError", "fluid", "nestedField", "layout", "model", "readOnly", "plaintext", "className", "children", "disabled", "onSubmit", "onCheck", "onError", "onChange"]);
|
|
59
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["checkTrigger", "classPrefix", "errorFromContext", "formDefaultValue", "formValue", "formError", "fluid", "nestedField", "layout", "model", "readOnly", "plaintext", "className", "children", "disabled", "onSubmit", "onReset", "onCheck", "onError", "onChange"]);
|
|
58
60
|
var _useSchemaModel = (0, _useSchemaModel2.default)(formModel),
|
|
59
61
|
getCombinedModel = _useSchemaModel.getCombinedModel,
|
|
60
62
|
pushFieldRule = _useSchemaModel.pushFieldRule,
|
|
@@ -65,9 +67,9 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
65
67
|
}),
|
|
66
68
|
formValue = _useFormValue.formValue,
|
|
67
69
|
onRemoveValue = _useFormValue.onRemoveValue,
|
|
68
|
-
setFieldValue = _useFormValue.setFieldValue
|
|
70
|
+
setFieldValue = _useFormValue.setFieldValue,
|
|
71
|
+
resetFormValue = _useFormValue.resetFormValue;
|
|
69
72
|
var formValidateProps = {
|
|
70
|
-
ref: ref,
|
|
71
73
|
formValue: formValue,
|
|
72
74
|
getCombinedModel: getCombinedModel,
|
|
73
75
|
onCheck: onCheck,
|
|
@@ -79,7 +81,12 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
79
81
|
setFieldError = _useFormValidate.setFieldError,
|
|
80
82
|
onRemoveError = _useFormValidate.onRemoveError,
|
|
81
83
|
check = _useFormValidate.check,
|
|
82
|
-
|
|
84
|
+
checkAsync = _useFormValidate.checkAsync,
|
|
85
|
+
checkForField = _useFormValidate.checkForField,
|
|
86
|
+
checkForFieldAsync = _useFormValidate.checkForFieldAsync,
|
|
87
|
+
cleanErrors = _useFormValidate.cleanErrors,
|
|
88
|
+
resetErrors = _useFormValidate.resetErrors,
|
|
89
|
+
cleanErrorForField = _useFormValidate.cleanErrorForField;
|
|
83
90
|
var classes = (0, _useFormClassNames.default)({
|
|
84
91
|
classPrefix: classPrefix,
|
|
85
92
|
className: className,
|
|
@@ -89,22 +96,58 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
89
96
|
plaintext: plaintext,
|
|
90
97
|
disabled: disabled
|
|
91
98
|
});
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
|
|
99
|
+
var submit = (0, _utils.useEventCallback)(function (event) {
|
|
100
|
+
// Check the form before submitting
|
|
101
|
+
if (check()) {
|
|
102
|
+
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(formValue, event);
|
|
103
|
+
}
|
|
95
104
|
});
|
|
96
|
-
var
|
|
97
|
-
|
|
105
|
+
var reset = (0, _utils.useEventCallback)(function (event) {
|
|
106
|
+
resetErrors();
|
|
107
|
+
onReset === null || onReset === void 0 ? void 0 : onReset(resetFormValue(), event);
|
|
98
108
|
});
|
|
99
109
|
var handleSubmit = (0, _utils.useEventCallback)(function (event) {
|
|
100
110
|
var _event$preventDefault, _event$stopPropagatio;
|
|
101
111
|
event === null || event === void 0 ? void 0 : (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 ? void 0 : _event$preventDefault.call(event);
|
|
102
112
|
event === null || event === void 0 ? void 0 : (_event$stopPropagatio = event.stopPropagation) === null || _event$stopPropagatio === void 0 ? void 0 : _event$stopPropagatio.call(event);
|
|
113
|
+
|
|
114
|
+
// Prevent submission when the form is disabled, readOnly, or plaintext
|
|
103
115
|
if (disabled || readOnly || plaintext) {
|
|
104
116
|
return;
|
|
105
117
|
}
|
|
106
|
-
|
|
107
|
-
|
|
118
|
+
submit();
|
|
119
|
+
});
|
|
120
|
+
var handleReset = (0, _utils.useEventCallback)(function (event) {
|
|
121
|
+
var _event$preventDefault2, _event$stopPropagatio2;
|
|
122
|
+
event === null || event === void 0 ? void 0 : (_event$preventDefault2 = event.preventDefault) === null || _event$preventDefault2 === void 0 ? void 0 : _event$preventDefault2.call(event);
|
|
123
|
+
event === null || event === void 0 ? void 0 : (_event$stopPropagatio2 = event.stopPropagation) === null || _event$stopPropagatio2 === void 0 ? void 0 : _event$stopPropagatio2.call(event);
|
|
124
|
+
|
|
125
|
+
// Prevent reset when the form is disabled, readOnly, or plaintext
|
|
126
|
+
if (disabled || readOnly || plaintext) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
reset(event);
|
|
130
|
+
});
|
|
131
|
+
var imperativeMethods = {
|
|
132
|
+
check: check,
|
|
133
|
+
checkForField: checkForField,
|
|
134
|
+
checkAsync: checkAsync,
|
|
135
|
+
checkForFieldAsync: checkForFieldAsync,
|
|
136
|
+
cleanErrors: cleanErrors,
|
|
137
|
+
cleanErrorForField: cleanErrorForField,
|
|
138
|
+
reset: reset,
|
|
139
|
+
resetErrors: resetErrors,
|
|
140
|
+
submit: submit
|
|
141
|
+
};
|
|
142
|
+
var formRef = (0, _useFormRef.default)(ref, {
|
|
143
|
+
imperativeMethods: imperativeMethods
|
|
144
|
+
});
|
|
145
|
+
var removeFieldValue = (0, _utils.useEventCallback)(function (name) {
|
|
146
|
+
var formValue = onRemoveValue(name);
|
|
147
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(formValue);
|
|
148
|
+
});
|
|
149
|
+
var removeFieldError = (0, _utils.useEventCallback)(function (name) {
|
|
150
|
+
onRemoveError(name);
|
|
108
151
|
});
|
|
109
152
|
var onFieldError = (0, _utils.useEventCallback)(function (name, checkResult) {
|
|
110
153
|
setFieldError(name, checkResult);
|
|
@@ -136,6 +179,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
136
179
|
return /*#__PURE__*/_react.default.createElement("form", (0, _extends2.default)({}, rest, {
|
|
137
180
|
ref: formRef,
|
|
138
181
|
onSubmit: handleSubmit,
|
|
182
|
+
onReset: handleReset,
|
|
139
183
|
className: classes
|
|
140
184
|
}), /*#__PURE__*/_react.default.createElement(_FormContext.FormProvider, {
|
|
141
185
|
value: formContextValue
|
|
@@ -3,8 +3,8 @@ import { TypeAttributes } from '../@types/common';
|
|
|
3
3
|
import type { Schema, CheckResult } from 'schema-typed';
|
|
4
4
|
import type { FieldRuleType } from './hooks/useSchemaModel';
|
|
5
5
|
declare type RecordAny = Record<string, any>;
|
|
6
|
-
interface TrulyFormContextValue<T = RecordAny,
|
|
7
|
-
[P in keyof T]?:
|
|
6
|
+
interface TrulyFormContextValue<T = RecordAny, M = any, E = {
|
|
7
|
+
[P in keyof T]?: M;
|
|
8
8
|
}> {
|
|
9
9
|
formError: E;
|
|
10
10
|
nestedField: boolean;
|
|
@@ -31,6 +31,14 @@ export interface FormImperativeMethods<T = Record<string, any>, M = string, E =
|
|
|
31
31
|
* All error messages are reset, and an initial value can be set
|
|
32
32
|
*/
|
|
33
33
|
resetErrors: (formError?: E) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Reset form data to initial value and clear all error messages
|
|
36
|
+
*/
|
|
37
|
+
reset: () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Submit form data and verify
|
|
40
|
+
*/
|
|
41
|
+
submit: () => void;
|
|
34
42
|
}
|
|
35
43
|
export interface FormInstance<T = Record<string, any>, M = string, E = {
|
|
36
44
|
[P in keyof T]?: M;
|
|
@@ -43,13 +51,7 @@ export interface FormInstance<T = Record<string, any>, M = string, E = {
|
|
|
43
51
|
interface FormRefProps<T = Record<string, any>, M = string, E = {
|
|
44
52
|
[P in keyof T]?: M;
|
|
45
53
|
}> {
|
|
46
|
-
|
|
47
|
-
nestedField?: boolean;
|
|
48
|
-
setFormError: (formError: E) => void;
|
|
49
|
-
check: (callback?: (formError: E) => void) => boolean;
|
|
50
|
-
checkForField: (fieldName: keyof T, callback?: (checkResult: CheckResult<M>) => void) => boolean;
|
|
51
|
-
checkAsync: () => Promise<any>;
|
|
52
|
-
checkForFieldAsync: (fieldName: keyof T) => Promise<CheckResult>;
|
|
54
|
+
imperativeMethods: FormImperativeMethods<T, M, E>;
|
|
53
55
|
}
|
|
54
56
|
export default function useFormRef(ref: React.Ref<FormInstance>, props: FormRefProps): import("react").RefObject<HTMLFormElement>;
|
|
55
57
|
export {};
|
|
@@ -4,42 +4,15 @@
|
|
|
4
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
exports.default = useFormRef;
|
|
7
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
7
8
|
var _react = require("react");
|
|
8
|
-
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
9
|
-
var _useEventCallback = _interopRequireDefault(require("../../utils/useEventCallback"));
|
|
10
|
-
var _utils = require("../../FormControl/utils");
|
|
11
9
|
function useFormRef(ref, props) {
|
|
12
10
|
var rootRef = (0, _react.useRef)(null);
|
|
13
|
-
var
|
|
14
|
-
setFormError = props.setFormError,
|
|
15
|
-
nestedField = props.nestedField,
|
|
16
|
-
check = props.check,
|
|
17
|
-
checkForField = props.checkForField,
|
|
18
|
-
checkAsync = props.checkAsync,
|
|
19
|
-
checkForFieldAsync = props.checkForFieldAsync;
|
|
20
|
-
var cleanErrors = (0, _useEventCallback.default)(function () {
|
|
21
|
-
setFormError({});
|
|
22
|
-
});
|
|
23
|
-
var resetErrors = (0, _useEventCallback.default)(function (formError) {
|
|
24
|
-
if (formError === void 0) {
|
|
25
|
-
formError = {};
|
|
26
|
-
}
|
|
27
|
-
setFormError(formError);
|
|
28
|
-
});
|
|
29
|
-
var cleanErrorForField = (0, _useEventCallback.default)(function (fieldName) {
|
|
30
|
-
setFormError((0, _omit.default)(formError, [nestedField ? (0, _utils.nameToPath)(fieldName) : fieldName]));
|
|
31
|
-
});
|
|
11
|
+
var imperativeMethods = props.imperativeMethods;
|
|
32
12
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
33
|
-
return {
|
|
34
|
-
root: rootRef.current
|
|
35
|
-
|
|
36
|
-
checkForField: checkForField,
|
|
37
|
-
checkAsync: checkAsync,
|
|
38
|
-
checkForFieldAsync: checkForFieldAsync,
|
|
39
|
-
cleanErrors: cleanErrors,
|
|
40
|
-
cleanErrorForField: cleanErrorForField,
|
|
41
|
-
resetErrors: resetErrors
|
|
42
|
-
};
|
|
13
|
+
return (0, _extends2.default)({
|
|
14
|
+
root: rootRef.current
|
|
15
|
+
}, imperativeMethods);
|
|
43
16
|
});
|
|
44
17
|
return rootRef;
|
|
45
18
|
}
|