rsuite 5.2.0 → 5.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Button/styles/index.less +6 -0
- package/CHANGELOG.md +42 -0
- package/PanelGroup/styles/index.less +12 -12
- package/README.md +3 -44
- package/Sidenav/styles/index.less +4 -0
- package/Table/styles/index.less +0 -4
- package/cjs/Carousel/Carousel.d.ts +1 -1
- package/cjs/CheckTreePicker/CheckTreePicker.js +6 -3
- package/cjs/CheckTreePicker/utils.d.ts +1 -1
- package/cjs/CheckTreePicker/utils.js +7 -6
- package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
- package/cjs/DateRangePicker/Calendar.d.ts +2 -1
- package/cjs/DateRangePicker/Calendar.js +26 -5
- package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/cjs/DateRangePicker/DateRangePicker.js +25 -3
- package/cjs/Dropdown/DropdownItem.js +16 -19
- package/cjs/Dropdown/useRenderDropdownItem.d.ts +2 -0
- package/cjs/Dropdown/useRenderDropdownItem.js +26 -0
- package/cjs/InputPicker/InputPicker.js +1 -1
- package/cjs/MaskedInput/MaskedInput.d.ts +5 -42
- package/cjs/MaskedInput/MaskedInput.js +9 -63
- package/cjs/MaskedInput/TextMask.d.ts +43 -0
- package/cjs/MaskedInput/TextMask.js +80 -0
- package/cjs/Menu/Menu.js +46 -34
- package/cjs/Menu/MenuItem.js +16 -12
- package/cjs/Modal/utils.js +9 -10
- package/cjs/Overlay/Position.js +7 -4
- package/cjs/Picker/PickerToggle.js +7 -5
- package/cjs/Picker/VirtualizedList.d.ts +29 -2
- package/cjs/Picker/utils.d.ts +6 -14
- package/cjs/Picker/utils.js +54 -33
- package/cjs/RadioGroup/RadioGroup.js +2 -2
- package/cjs/Rate/Rate.js +3 -1
- package/cjs/Sidenav/SidenavDropdownItem.js +17 -10
- package/cjs/TreePicker/TreePicker.js +6 -3
- package/cjs/utils/useElementResize.d.ts +1 -1
- package/cjs/utils/useElementResize.js +11 -6
- package/dist/rsuite-rtl.css +48 -6
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +48 -6
- package/dist/rsuite.js +349 -359
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.LICENSE.txt +9 -0
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Carousel/Carousel.d.ts +1 -1
- package/esm/CheckTreePicker/CheckTreePicker.js +6 -3
- package/esm/CheckTreePicker/utils.d.ts +1 -1
- package/esm/CheckTreePicker/utils.js +7 -6
- package/esm/CheckboxGroup/CheckboxGroup.js +2 -2
- package/esm/DateRangePicker/Calendar.d.ts +2 -1
- package/esm/DateRangePicker/Calendar.js +27 -5
- package/esm/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/esm/DateRangePicker/DateRangePicker.js +23 -3
- package/esm/Dropdown/DropdownItem.js +15 -19
- package/esm/Dropdown/useRenderDropdownItem.d.ts +2 -0
- package/esm/Dropdown/useRenderDropdownItem.js +18 -0
- package/esm/InputPicker/InputPicker.js +1 -1
- package/esm/MaskedInput/MaskedInput.d.ts +5 -42
- package/esm/MaskedInput/MaskedInput.js +9 -63
- package/esm/MaskedInput/TextMask.d.ts +43 -0
- package/esm/MaskedInput/TextMask.js +67 -0
- package/esm/Menu/Menu.js +46 -36
- package/esm/Menu/MenuItem.js +16 -12
- package/esm/Modal/utils.js +8 -7
- package/esm/Overlay/Position.js +6 -3
- package/esm/Picker/PickerToggle.js +7 -5
- package/esm/Picker/VirtualizedList.d.ts +29 -2
- package/esm/Picker/utils.d.ts +6 -14
- package/esm/Picker/utils.js +54 -33
- package/esm/RadioGroup/RadioGroup.js +2 -2
- package/esm/Rate/Rate.js +2 -1
- package/esm/Sidenav/SidenavDropdownItem.js +16 -10
- package/esm/TreePicker/TreePicker.js +6 -3
- package/esm/utils/useElementResize.d.ts +1 -1
- package/esm/utils/useElementResize.js +12 -5
- package/package.json +3 -3
package/Button/styles/index.less
CHANGED
|
@@ -180,6 +180,9 @@ each(@spectrum, .(@color) {
|
|
|
180
180
|
--rs-btn-link-text: @C700;
|
|
181
181
|
--rs-btn-link-hover-text: @C800;
|
|
182
182
|
--rs-btn-link-active-text: @C900;
|
|
183
|
+
--rs-iconbtn-primary-addon: @C600;
|
|
184
|
+
--rs-iconbtn-primary-activated-addon: @C700;
|
|
185
|
+
--rs-iconbtn-primary-pressed-addon: @C800;
|
|
183
186
|
|
|
184
187
|
.dark-mode({
|
|
185
188
|
--rs-btn-primary-bg: @C700;
|
|
@@ -198,6 +201,9 @@ each(@spectrum, .(@color) {
|
|
|
198
201
|
--rs-btn-link-text: @C500;
|
|
199
202
|
--rs-btn-link-hover-text: @C400;
|
|
200
203
|
--rs-btn-link-active-text: @C200;
|
|
204
|
+
--rs-iconbtn-primary-addon: @C600;
|
|
205
|
+
--rs-iconbtn-primary-activated-addon: @C500;
|
|
206
|
+
--rs-iconbtn-primary-pressed-addon: @C400;
|
|
201
207
|
});
|
|
202
208
|
|
|
203
209
|
.high-contrast-mode({
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,45 @@
|
|
|
1
|
+
## [5.2.4](https://github.com/rsuite/rsuite/compare/v5.2.3...v5.2.4) (2021-12-03)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **Carousel:** make onSelect prop optional ([#2170](https://github.com/rsuite/rsuite/issues/2170)) ([c4d7a63](https://github.com/rsuite/rsuite/commit/c4d7a63f4ec71ebb05d92b04bd26ebe547609dd0))
|
|
6
|
+
- **DateRangePicker:** fix DateRangePicker cannot switch am/pm ([#2171](https://github.com/rsuite/rsuite/issues/2171)) ([4c55db9](https://github.com/rsuite/rsuite/commit/4c55db9a3a96927589d4366ece1f329c011ccb0f))
|
|
7
|
+
- **pickers:** fix custom input in Picker cannot be focused ([#2176](https://github.com/rsuite/rsuite/issues/2176)) ([8a94bd6](https://github.com/rsuite/rsuite/commit/8a94bd6f9640995e017716fe69b68912c55e4c86))
|
|
8
|
+
- **Table:** fix the column of grouping cannot be centered ([#2168](https://github.com/rsuite/rsuite/issues/2168)) ([4fbe460](https://github.com/rsuite/rsuite/commit/4fbe460da4e9744eee8589233b305b7e15295e41))
|
|
9
|
+
- **tree:** expose methods for tree that can scroll the list ([#2178](https://github.com/rsuite/rsuite/issues/2178)) ([0a6f9ee](https://github.com/rsuite/rsuite/commit/0a6f9ee57ed33477472f2ad41c06d5242d3d62d5))
|
|
10
|
+
|
|
11
|
+
## [5.2.3](https://github.com/rsuite/rsuite/compare/v5.2.2...v5.2.3) (2021-11-26)
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- **useElementResize:** fix ResizeObserver being created repeatedly ([#2161](https://github.com/rsuite/rsuite/issues/2161)) ([32e2fa7](https://github.com/rsuite/rsuite/commit/32e2fa76a396945498f198d176b630ac09a4e20d))
|
|
16
|
+
- focus handler ([#2154](https://github.com/rsuite/rsuite/issues/2154)) ([3b17fbc](https://github.com/rsuite/rsuite/commit/3b17fbcae6da59ca58788c6b3aa60d79692dffa1))
|
|
17
|
+
- **TagPicker:** fix tag misplacement in plaintext mode ([#2152](https://github.com/rsuite/rsuite/issues/2152)) ([6d32c71](https://github.com/rsuite/rsuite/commit/6d32c714e1b9be743d57b3ae4f1622d006e0f52c))
|
|
18
|
+
|
|
19
|
+
### Performance Improvements
|
|
20
|
+
|
|
21
|
+
- **Menu:** prevent uneccesary re-render when mouseove on menuitems ([#2148](https://github.com/rsuite/rsuite/issues/2148)) ([dc06498](https://github.com/rsuite/rsuite/commit/dc0649822fd68964281f44c4ec2daf84953edc63))
|
|
22
|
+
|
|
23
|
+
## [5.2.2](https://github.com/rsuite/rsuite/compare/v5.2.1...v5.2.2) (2021-11-19)
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- **Dropdown:** dropdown item panel not rendering content ([#2128](https://github.com/rsuite/rsuite/issues/2128)) ([6631500](https://github.com/rsuite/rsuite/commit/6631500c74b0305026931a6379980fda9b587c6e))
|
|
28
|
+
- **IconButton:** primary icon button with text wrong bg ([#2141](https://github.com/rsuite/rsuite/issues/2141)) ([fde0cd4](https://github.com/rsuite/rsuite/commit/fde0cd4bce84c8f5d054d1722e9dfa61de49a7fa))
|
|
29
|
+
- **PanelGroup:** missing border for nested panels ([#2142](https://github.com/rsuite/rsuite/issues/2142)) ([225821f](https://github.com/rsuite/rsuite/commit/225821f2cdeba8637d70f4626f02ae1acd93eb24))
|
|
30
|
+
|
|
31
|
+
### Performance Improvements
|
|
32
|
+
|
|
33
|
+
- **resize:** improve the rerender performance of components after resize ([#2135](https://github.com/rsuite/rsuite/issues/2135)) ([71648ab](https://github.com/rsuite/rsuite/commit/71648ab061f7b4057675de2d0a6e08f2f8a70a61))
|
|
34
|
+
|
|
35
|
+
## [5.2.1](https://github.com/rsuite/rsuite/compare/v5.2.0...v5.2.1) (2021-11-12)
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
- **CheckTree:** root node indeterminate state error ([#2124](https://github.com/rsuite/rsuite/issues/2124)) ([9dac0bc](https://github.com/rsuite/rsuite/commit/9dac0bc0e51b58b46aa85dac8a0348a9d73b2503))
|
|
40
|
+
- **Sidenav:** remove underline on hovered SidenavItem ([#2118](https://github.com/rsuite/rsuite/issues/2118)) ([56f7c3a](https://github.com/rsuite/rsuite/commit/56f7c3ad0f7ab31c7d5aef2fe2cde1661024f034))
|
|
41
|
+
- **Sidenav:** sidenav dropdown item accept as prop ([#2120](https://github.com/rsuite/rsuite/issues/2120)) ([5386999](https://github.com/rsuite/rsuite/commit/538699962dfd46faf41bb377833b0dcd06112039))
|
|
42
|
+
|
|
1
43
|
# [5.2.0](https://github.com/rsuite/rsuite/compare/v5.1.0...v5.2.0) (2021-11-05)
|
|
2
44
|
|
|
3
45
|
### Bug Fixes
|
|
@@ -14,21 +14,21 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// Panel in Panel group haven't border.
|
|
17
|
-
.rs-panel {
|
|
17
|
+
> .rs-panel {
|
|
18
18
|
border: none;
|
|
19
|
-
}
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
// Draw a split line for panel
|
|
21
|
+
& + .rs-panel {
|
|
22
|
+
position: relative;
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
&::before {
|
|
25
|
+
content: '';
|
|
26
|
+
position: absolute;
|
|
27
|
+
top: 0;
|
|
28
|
+
border-top: 1px solid var(--rs-border-primary);
|
|
29
|
+
left: 20px;
|
|
30
|
+
right: 20px;
|
|
31
|
+
}
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}
|
package/README.md
CHANGED
|
@@ -78,7 +78,8 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
|
|
|
78
78
|
- [Right-to-left][rsuite-doc-guide-rtl]
|
|
79
79
|
- [Components][rsuite-components-overview]
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
<details>
|
|
82
|
+
<summary>More examples</summary>
|
|
82
83
|
|
|
83
84
|
- [Management system][demo-admin]
|
|
84
85
|
- [Use modularized][demo-modular-import]
|
|
@@ -96,6 +97,7 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
|
|
|
96
97
|
- [Use in UmiJS][demo-umi-app]
|
|
97
98
|
- [Use in Snowpack][demo-snowpack]
|
|
98
99
|
- [Use in Vite][demo-vite]
|
|
100
|
+
</details>
|
|
99
101
|
|
|
100
102
|
## Previous major versions
|
|
101
103
|
|
|
@@ -113,53 +115,10 @@ and security fixes are supported until 6.x is in progress.
|
|
|
113
115
|
|
|
114
116
|
Detailed changes for each release are documented in the [release notes][release-notes].
|
|
115
117
|
|
|
116
|
-
## Development
|
|
117
|
-
|
|
118
|
-
### Test-Driven Development(TDD)
|
|
119
|
-
|
|
120
|
-
1. Fork `https://github.com/rsuite/rsuite` this repo.
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
$ git clone git@github.com:<YOUR NAME>/rsuite.git
|
|
124
|
-
$ cd rsuite
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
2. Install it and run
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
$ npm i
|
|
131
|
-
$ npm run tdd
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
3. Run a single component test case.
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
$ M=Button npm run tdd
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### UI-Driven Development
|
|
141
|
-
|
|
142
|
-
1. Fork `https://github.com/rsuite/rsuite` this repo.
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
$ git clone git@github.com:<YOUR NAME>/rsuite.git
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
2. Install it and run
|
|
149
|
-
|
|
150
|
-
```bash
|
|
151
|
-
$ npm i
|
|
152
|
-
$ npm run dev
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
3. Your show time. Open url http://127.0.0.1:3000/ in browser.
|
|
156
|
-
|
|
157
118
|
## Contribution
|
|
158
119
|
|
|
159
120
|
Make sure you've read the [guidelines][contributing] before you start contributing.
|
|
160
121
|
|
|
161
|
-
Editor preferences are available in the [.prettierrc][prettierrc] for easy use in common code editors. Read more and download plugins at https://prettier.io/.
|
|
162
|
-
|
|
163
122
|
## Supporting React Suite
|
|
164
123
|
|
|
165
124
|
If you like React Suite, you can show your support by either
|
package/Table/styles/index.less
CHANGED
|
@@ -10,7 +10,7 @@ export interface CarouselProps extends WithAsProps {
|
|
|
10
10
|
/** Button shape */
|
|
11
11
|
shape?: 'dot' | 'bar';
|
|
12
12
|
/** Callback fired when the active item changes */
|
|
13
|
-
onSelect
|
|
13
|
+
onSelect?: (index: number, event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
14
14
|
/** Callback fired when a slide transition starts */
|
|
15
15
|
onSlideStart?: (index: number, event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
16
16
|
/** Callback fired when a slide transition ends */
|
|
@@ -434,10 +434,13 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
434
434
|
}
|
|
435
435
|
}, [childrenKey, expandItemValues, getChildren, loadChildren, onExpand, setExpandItemValues, valueKey]);
|
|
436
436
|
(0, _Picker.usePublicMethods)(ref, {
|
|
437
|
+
rootRef: inline ? treeViewRef : null,
|
|
437
438
|
triggerRef: triggerRef,
|
|
438
439
|
overlayRef: overlayRef,
|
|
439
|
-
targetRef: targetRef
|
|
440
|
-
|
|
440
|
+
targetRef: targetRef,
|
|
441
|
+
listRef: listRef,
|
|
442
|
+
inline: inline
|
|
443
|
+
});
|
|
441
444
|
var handleClean = (0, _react.useCallback)(function (event) {
|
|
442
445
|
var target = event.target; // exclude searchBar
|
|
443
446
|
|
|
@@ -655,7 +658,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
655
658
|
}, style) : {};
|
|
656
659
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
657
660
|
id: id ? id + "-listbox" : undefined,
|
|
658
|
-
ref:
|
|
661
|
+
ref: treeViewRef,
|
|
659
662
|
role: "tree",
|
|
660
663
|
"aria-multiselectable": true,
|
|
661
664
|
className: classes,
|
|
@@ -19,7 +19,7 @@ export interface TreeNodesType {
|
|
|
19
19
|
[key: string]: TreeNodeType;
|
|
20
20
|
}
|
|
21
21
|
export declare function isEveryChildChecked(nodes: TreeNodesType, parent: TreeNodeType): boolean;
|
|
22
|
-
export declare function isSomeChildChecked(nodes: TreeNodesType, parent: TreeNodeType): boolean;
|
|
22
|
+
export declare function isSomeChildChecked(nodes: TreeNodesType, parent: TreeNodeType, childrenKey: string): boolean;
|
|
23
23
|
export declare function isSomeNodeHasChildren(data: any[], childrenKey: string): boolean;
|
|
24
24
|
/**
|
|
25
25
|
* is all siblings nodes is uncheckable
|
|
@@ -41,18 +41,19 @@ function isEveryChildChecked(nodes, parent) {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
function isSomeChildChecked(nodes, parent) {
|
|
44
|
+
function isSomeChildChecked(nodes, parent, childrenKey) {
|
|
45
45
|
if ((0, _isNil2.default)(nodes[parent.refKey])) {
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
var children = (0, _treeUtils.getChildrenByFlattenNodes)(nodes, parent);
|
|
50
|
+
return children.some(function (child) {
|
|
51
|
+
var _child$childrenKey;
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
if ((child === null || child === void 0 ? void 0 : (_child$childrenKey = child[childrenKey]) === null || _child$childrenKey === void 0 ? void 0 : _child$childrenKey.length) > 0) {
|
|
54
|
+
return isSomeChildChecked(nodes, child, childrenKey);
|
|
55
|
+
}
|
|
54
56
|
|
|
55
|
-
return children.some(function (child) {
|
|
56
57
|
return nodes[child.refKey].check;
|
|
57
58
|
});
|
|
58
59
|
}
|
|
@@ -215,7 +216,7 @@ function getNodeCheckState(_ref) {
|
|
|
215
216
|
return _utils.CHECK_STATE.CHECK;
|
|
216
217
|
}
|
|
217
218
|
|
|
218
|
-
if (isSomeChildChecked(nodes, node)) {
|
|
219
|
+
if (isSomeChildChecked(nodes, node, childrenKey)) {
|
|
219
220
|
nodes[node.refKey].checkAll = false;
|
|
220
221
|
return _utils.CHECK_STATE.INDETERMINATE;
|
|
221
222
|
}
|
|
@@ -83,10 +83,10 @@ var CheckboxGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
83
83
|
}, [disabled, handleChange, inline, isControlled, name, plaintext, readOnly, value]);
|
|
84
84
|
return /*#__PURE__*/_react.default.createElement(_CheckboxGroupContext.CheckboxGroupContext.Provider, {
|
|
85
85
|
value: contextValue
|
|
86
|
-
}, plaintext ? /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
|
|
86
|
+
}, plaintext ? /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({
|
|
87
87
|
ref: ref,
|
|
88
88
|
localeKey: "notSelected"
|
|
89
|
-
}, value !== null && value !== void 0 && value.length ? children : null) : /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
89
|
+
}, rest), value !== null && value !== void 0 && value.length ? children : null) : /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
90
90
|
ref: ref,
|
|
91
91
|
role: "group",
|
|
92
92
|
className: classes
|
|
@@ -3,7 +3,7 @@ import { CalendarProps as CalendarCoreProps } from '../Calendar/Calendar';
|
|
|
3
3
|
import { ValueType } from './types';
|
|
4
4
|
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
5
5
|
import { DatePickerLocale } from '../locales';
|
|
6
|
-
declare type OmitCalendarCoreTypes = 'disabledDate' | 'onSelect' | 'onMouseMove' | 'calendarDate';
|
|
6
|
+
declare type OmitCalendarCoreTypes = 'disabledDate' | 'onSelect' | 'onMouseMove' | 'calendarDate' | 'onToggleMeridian';
|
|
7
7
|
export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, OmitCalendarCoreTypes> {
|
|
8
8
|
calendarDate?: ValueType;
|
|
9
9
|
disabledDate?: (date: Date, selectValue: ValueType, type: string) => boolean;
|
|
@@ -15,6 +15,7 @@ export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, Omit
|
|
|
15
15
|
locale?: DatePickerLocale;
|
|
16
16
|
onChangeCalendarDate?: (index: number, date: Date) => void;
|
|
17
17
|
onChangeCalendarTime?: (index: number, date: Date) => void;
|
|
18
|
+
onToggleMeridian: (index: number, event: React.MouseEvent) => void;
|
|
18
19
|
onMouseMove?: (date: Date) => void;
|
|
19
20
|
onSelect?: (date: Date, event?: React.SyntheticEvent) => void;
|
|
20
21
|
showOneCalendar?: boolean;
|
|
@@ -21,6 +21,14 @@ var _Calendar = _interopRequireWildcard(require("../Calendar/Calendar"));
|
|
|
21
21
|
|
|
22
22
|
var _utils = require("../utils");
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Omit the time in the date, which is used to compare and judge the date.
|
|
26
|
+
* eg: isAfter/isBefore
|
|
27
|
+
*/
|
|
28
|
+
function omitTime(date) {
|
|
29
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
30
|
+
}
|
|
31
|
+
|
|
24
32
|
var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
25
33
|
var _props$as = props.as,
|
|
26
34
|
Component = _props$as === void 0 ? _Calendar.default : _props$as,
|
|
@@ -34,10 +42,11 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
34
42
|
limitEndYear = props.limitEndYear,
|
|
35
43
|
onChangeCalendarDate = props.onChangeCalendarDate,
|
|
36
44
|
onChangeCalendarTime = props.onChangeCalendarTime,
|
|
45
|
+
onToggleMeridian = props.onToggleMeridian,
|
|
37
46
|
showOneCalendar = props.showOneCalendar,
|
|
38
47
|
_props$value = props.value,
|
|
39
48
|
value = _props$value === void 0 ? [] : _props$value,
|
|
40
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "onChangeCalendarDate", "onChangeCalendarTime", "showOneCalendar", "value"]);
|
|
49
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "onChangeCalendarDate", "onChangeCalendarTime", "onToggleMeridian", "showOneCalendar", "value"]);
|
|
41
50
|
|
|
42
51
|
var _useState = (0, _react.useState)(),
|
|
43
52
|
calendarState = _useState[0],
|
|
@@ -56,6 +65,9 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
56
65
|
var handleChangePageTime = (0, _react.useCallback)(function (nextPageDate) {
|
|
57
66
|
onChangeCalendarTime(index, nextPageDate);
|
|
58
67
|
}, [index, onChangeCalendarTime]);
|
|
68
|
+
var handleToggleMeridian = (0, _react.useCallback)(function (event) {
|
|
69
|
+
onToggleMeridian(index, event);
|
|
70
|
+
}, [index, onToggleMeridian]);
|
|
59
71
|
var toggleMonthDropdown = (0, _react.useCallback)(function () {
|
|
60
72
|
setCalendarState(calendarState === _Calendar.CalendarState.DROP_MONTH ? undefined : _Calendar.CalendarState.DROP_MONTH);
|
|
61
73
|
}, [calendarState]);
|
|
@@ -75,22 +87,30 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
75
87
|
onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward((0, _dateUtils.addMonths)(getCalendarDate(), -1));
|
|
76
88
|
}, [getCalendarDate, onMoveBackward]);
|
|
77
89
|
var disabledBackward = (0, _react.useCallback)(function () {
|
|
78
|
-
|
|
79
|
-
|
|
90
|
+
// Do not disable the Backward button on the first calendar.
|
|
80
91
|
if (index === 0) {
|
|
81
92
|
return false;
|
|
82
93
|
}
|
|
83
94
|
|
|
95
|
+
var startDate = (0, _dateUtils.setDate)((0, _dateUtils.addMonths)(calendarDate[0], 1), 1);
|
|
96
|
+
var endDate = (0, _dateUtils.setDate)(omitTime(calendarDate[1]), 1);
|
|
97
|
+
var after = (0, _dateUtils.isAfter)(endDate, startDate);
|
|
84
98
|
return !after;
|
|
85
99
|
}, [calendarDate, index]);
|
|
86
100
|
var disabledForward = (0, _react.useCallback)(function () {
|
|
87
|
-
|
|
88
|
-
|
|
101
|
+
// If only one calendar is displayed, do not disable
|
|
102
|
+
if (showOneCalendar) {
|
|
103
|
+
return false;
|
|
104
|
+
} // Do not disable the Forward button on the second calendar.
|
|
105
|
+
|
|
89
106
|
|
|
90
107
|
if (index === 1) {
|
|
91
108
|
return false;
|
|
92
109
|
}
|
|
93
110
|
|
|
111
|
+
var startDate = (0, _dateUtils.setDate)((0, _dateUtils.addMonths)(omitTime(calendarDate[0]), 1), 1);
|
|
112
|
+
var endDate = (0, _dateUtils.setDate)(omitTime(calendarDate[1]), 1);
|
|
113
|
+
var after = (0, _dateUtils.isAfter)(endDate, startDate);
|
|
94
114
|
return !after;
|
|
95
115
|
}, [calendarDate, index, showOneCalendar]);
|
|
96
116
|
var disabledMonth = (0, _react.useCallback)(function (date) {
|
|
@@ -126,6 +146,7 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
126
146
|
onMoveForward: handleMoveForward,
|
|
127
147
|
onToggleMonthDropdown: toggleMonthDropdown,
|
|
128
148
|
onToggleTimeDropdown: toggleTimeDropdown,
|
|
149
|
+
onToggleMeridian: handleToggleMeridian,
|
|
129
150
|
calendarDate: getCalendarDate(),
|
|
130
151
|
ref: ref
|
|
131
152
|
}));
|
|
@@ -19,6 +19,8 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
|
|
|
19
19
|
showWeekNumbers?: boolean;
|
|
20
20
|
/** Show only one calendar select */
|
|
21
21
|
showOneCalendar?: boolean;
|
|
22
|
+
/** Meridian format */
|
|
23
|
+
showMeridian?: boolean;
|
|
22
24
|
/** Set default date for calendar */
|
|
23
25
|
defaultCalendarValue?: ValueType;
|
|
24
26
|
/** The character that separates two dates */
|
|
@@ -78,6 +78,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
78
78
|
_props$showOneCalenda = props.showOneCalendar,
|
|
79
79
|
showOneCalendar = _props$showOneCalenda === void 0 ? false : _props$showOneCalenda,
|
|
80
80
|
showWeekNumbers = props.showWeekNumbers,
|
|
81
|
+
showMeridian = props.showMeridian,
|
|
81
82
|
style = props.style,
|
|
82
83
|
toggleAs = props.toggleAs,
|
|
83
84
|
valueProp = props.value,
|
|
@@ -90,7 +91,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
90
91
|
onOk = props.onOk,
|
|
91
92
|
onOpen = props.onOpen,
|
|
92
93
|
onSelect = props.onSelect,
|
|
93
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "style", "toggleAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect"]);
|
|
94
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect"]);
|
|
94
95
|
|
|
95
96
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
96
97
|
merge = _useClassNames.merge,
|
|
@@ -370,6 +371,24 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
370
371
|
});
|
|
371
372
|
handleChangeCalendarDate(index, date);
|
|
372
373
|
}, [handleChangeCalendarDate]);
|
|
374
|
+
/**
|
|
375
|
+
* The callback triggered when PM/AM is switched.
|
|
376
|
+
*/
|
|
377
|
+
|
|
378
|
+
var handleToggleMeridian = (0, _react.useCallback)(function (index) {
|
|
379
|
+
var next = Array.from(calendarDate);
|
|
380
|
+
var clonedDate = new Date(next[index].valueOf());
|
|
381
|
+
|
|
382
|
+
var hours = _utils.DateUtils.getHours(clonedDate);
|
|
383
|
+
|
|
384
|
+
var nextHours = hours >= 12 ? hours - 12 : hours + 12;
|
|
385
|
+
next[index] = _utils.DateUtils.setHours(clonedDate, nextHours);
|
|
386
|
+
setCalendarDate(next); // If the value already exists, update the value again.
|
|
387
|
+
|
|
388
|
+
if (selectValue.length === 2) {
|
|
389
|
+
setSelectValue(next);
|
|
390
|
+
}
|
|
391
|
+
}, [calendarDate, selectValue]);
|
|
373
392
|
/**
|
|
374
393
|
* Toolbar operation callback function
|
|
375
394
|
*/
|
|
@@ -535,10 +554,12 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
535
554
|
showOneCalendar: showOneCalendar,
|
|
536
555
|
showWeekNumbers: showWeekNumbers,
|
|
537
556
|
value: selectValue,
|
|
557
|
+
showMeridian: showMeridian,
|
|
538
558
|
onChangeCalendarDate: handleChangeCalendarDate,
|
|
539
559
|
onChangeCalendarTime: handleChangeCalendarTime,
|
|
540
560
|
onMouseMove: handleMouseMove,
|
|
541
|
-
onSelect: handleSelectValueChange
|
|
561
|
+
onSelect: handleSelectValueChange,
|
|
562
|
+
onToggleMeridian: handleToggleMeridian
|
|
542
563
|
};
|
|
543
564
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
544
565
|
className: classes,
|
|
@@ -634,11 +655,12 @@ DateRangePicker.propTypes = (0, _extends2.default)({}, _Picker.pickerPropTypes,
|
|
|
634
655
|
isoWeek: _propTypes.default.bool,
|
|
635
656
|
oneTap: _propTypes.default.bool,
|
|
636
657
|
limitEndYear: _propTypes.default.number,
|
|
637
|
-
showWeekNumbers: _propTypes.default.bool,
|
|
638
658
|
onChange: _propTypes.default.func,
|
|
639
659
|
onOk: _propTypes.default.func,
|
|
640
660
|
disabledDate: _propTypes.default.func,
|
|
641
661
|
onSelect: _propTypes.default.func,
|
|
662
|
+
showWeekNumbers: _propTypes.default.bool,
|
|
663
|
+
showMeridian: _propTypes.default.bool,
|
|
642
664
|
showOneCalendar: _propTypes.default.bool
|
|
643
665
|
});
|
|
644
666
|
var _default = DateRangePicker;
|
|
@@ -41,6 +41,8 @@ var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
|
|
|
41
41
|
|
|
42
42
|
var _DropdownState = require("./DropdownState");
|
|
43
43
|
|
|
44
|
+
var _useRenderDropdownItem = require("./useRenderDropdownItem");
|
|
45
|
+
|
|
44
46
|
/**
|
|
45
47
|
* The <Dropdown.Item> API
|
|
46
48
|
* When used inside <Sidenav>, renders a <TreeviewItem>
|
|
@@ -112,15 +114,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
112
114
|
};
|
|
113
115
|
}
|
|
114
116
|
}, [internalId, selected, dispatch]);
|
|
115
|
-
var renderDropdownItem = (0,
|
|
116
|
-
if (Component === 'li') {
|
|
117
|
-
return ui;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return /*#__PURE__*/_react.default.createElement("li", {
|
|
121
|
-
role: "none presentation"
|
|
122
|
-
}, ui);
|
|
123
|
-
}, [Component]);
|
|
117
|
+
var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
|
|
124
118
|
|
|
125
119
|
if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
|
|
126
120
|
return /*#__PURE__*/_react.default.createElement(_SidenavDropdownItem.default, (0, _extends2.default)({
|
|
@@ -129,18 +123,19 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
129
123
|
}
|
|
130
124
|
|
|
131
125
|
if (divider) {
|
|
132
|
-
return renderDropdownItem(
|
|
126
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
133
127
|
ref: ref,
|
|
134
|
-
role:
|
|
128
|
+
role: 'separator',
|
|
135
129
|
className: merge(prefix('divider'), className)
|
|
136
|
-
}, restProps))
|
|
130
|
+
}, restProps));
|
|
137
131
|
}
|
|
138
132
|
|
|
139
133
|
if (panel) {
|
|
140
|
-
return renderDropdownItem(
|
|
134
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
141
135
|
ref: ref,
|
|
142
|
-
className: merge(prefix('panel'), className)
|
|
143
|
-
|
|
136
|
+
className: merge(prefix('panel'), className),
|
|
137
|
+
children: children
|
|
138
|
+
}, restProps));
|
|
144
139
|
}
|
|
145
140
|
|
|
146
141
|
if (navbar) {
|
|
@@ -195,12 +190,14 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
195
190
|
dataAttributes['data-event-key-type'] = typeof eventKey;
|
|
196
191
|
}
|
|
197
192
|
|
|
198
|
-
return renderDropdownItem(
|
|
193
|
+
return renderDropdownItem((0, _extends2.default)({
|
|
199
194
|
ref: (0, _utils.mergeRefs)(ref, menuitemRef),
|
|
200
195
|
className: classes
|
|
201
|
-
}, menuitem, dataAttributes, restProps
|
|
202
|
-
|
|
203
|
-
|
|
196
|
+
}, menuitem, dataAttributes, restProps, {
|
|
197
|
+
children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
198
|
+
className: prefix('menu-icon')
|
|
199
|
+
}), children)
|
|
200
|
+
}));
|
|
204
201
|
});
|
|
205
202
|
});
|
|
206
203
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.useRenderDropdownItem = useRenderDropdownItem;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
function useRenderDropdownItem(Component) {
|
|
11
|
+
return (0, _react.useCallback)(function (props, OverrideComponent) {
|
|
12
|
+
if (Component === 'li') {
|
|
13
|
+
if (OverrideComponent) {
|
|
14
|
+
return /*#__PURE__*/_react.default.createElement("li", {
|
|
15
|
+
role: "none presentation"
|
|
16
|
+
}, /*#__PURE__*/_react.default.createElement(OverrideComponent, props));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return /*#__PURE__*/_react.default.createElement(Component, props);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return /*#__PURE__*/_react.default.createElement("li", {
|
|
23
|
+
role: "none presentation"
|
|
24
|
+
}, /*#__PURE__*/_react.default.createElement(Component, props));
|
|
25
|
+
}, [Component]);
|
|
26
|
+
}
|
|
@@ -696,7 +696,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
696
696
|
var plaintextProps = {}; // TagPicker has -6px margin-left on the plaintext wrapper
|
|
697
697
|
// for fixing margin-left on tags from 2nd line on
|
|
698
698
|
|
|
699
|
-
if (multi) {
|
|
699
|
+
if (multi && hasValue) {
|
|
700
700
|
plaintextProps.style = {
|
|
701
701
|
marginLeft: -6
|
|
702
702
|
};
|
|
@@ -1,43 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
interface TextMaskProps {
|
|
7
|
-
/**
|
|
8
|
-
* `guide` is a boolean that tells the component whether to be in guide or no guide mode.
|
|
9
|
-
*/
|
|
10
|
-
guide?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* `mask` is an array or a function that defines how the user input is going to be masked.
|
|
13
|
-
*/
|
|
14
|
-
mask?: MaskType | MaskFunctionType | boolean;
|
|
15
|
-
/**
|
|
16
|
-
* `showMask` is a boolean that tells the Text Mask component to display the mask as a placeholder
|
|
17
|
-
* in place of the regular placeholder when the input element value is empty.
|
|
18
|
-
*/
|
|
19
|
-
showMask?: boolean;
|
|
20
|
-
/** The placeholder character represents the fillable spot in the mask. The default placeholder character is underscore, _. */
|
|
21
|
-
placeholderChar?: string;
|
|
22
|
-
/** `keepCharPositions` changes the general behavior of the Text Mask component. */
|
|
23
|
-
keepCharPositions?: boolean;
|
|
24
|
-
/** You can provide a `pipe` function that will give you the opportunity to modify the conformed value before it is displayed on the screen. */
|
|
25
|
-
pipe?: (conformedValue: string, config: ConfigType) => string;
|
|
26
|
-
}
|
|
27
|
-
export declare type MaskedInputProps = TextMaskProps & React.HTMLAttributes<HTMLInputElement> & {
|
|
28
|
-
/** Custom rendering DOM */
|
|
29
|
-
render?: (ref: React.Ref<HTMLInputElement>, props: React.HTMLAttributes<HTMLInputElement>) => any;
|
|
30
|
-
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
31
|
-
value?: string | number;
|
|
32
|
-
readOnly?: boolean;
|
|
33
|
-
disabled?: boolean;
|
|
34
|
-
};
|
|
35
|
-
declare const MaskedInput: React.ForwardRefExoticComponent<TextMaskProps & React.HTMLAttributes<HTMLInputElement> & {
|
|
36
|
-
/** Custom rendering DOM */
|
|
37
|
-
render?: (ref: React.Ref<HTMLInputElement>, props: React.HTMLAttributes<HTMLInputElement>) => any;
|
|
38
|
-
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
39
|
-
value?: string | number;
|
|
40
|
-
readOnly?: boolean;
|
|
41
|
-
disabled?: boolean;
|
|
42
|
-
} & React.RefAttributes<HTMLInputElement>>;
|
|
1
|
+
import { InputProps } from '../Input';
|
|
2
|
+
import type { TextMaskProps } from './TextMask';
|
|
3
|
+
import { RsRefForwardingComponent } from '../@types/common';
|
|
4
|
+
export declare type MaskedInputProps = Omit<TextMaskProps, 'onChange'> & Omit<InputProps, 'type'>;
|
|
5
|
+
declare const MaskedInput: RsRefForwardingComponent<'input', MaskedInputProps>;
|
|
43
6
|
export default MaskedInput;
|