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.
Files changed (80) hide show
  1. package/Button/styles/index.less +6 -0
  2. package/CHANGELOG.md +42 -0
  3. package/PanelGroup/styles/index.less +12 -12
  4. package/README.md +3 -44
  5. package/Sidenav/styles/index.less +4 -0
  6. package/Table/styles/index.less +0 -4
  7. package/cjs/Carousel/Carousel.d.ts +1 -1
  8. package/cjs/CheckTreePicker/CheckTreePicker.js +6 -3
  9. package/cjs/CheckTreePicker/utils.d.ts +1 -1
  10. package/cjs/CheckTreePicker/utils.js +7 -6
  11. package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
  12. package/cjs/DateRangePicker/Calendar.d.ts +2 -1
  13. package/cjs/DateRangePicker/Calendar.js +26 -5
  14. package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -0
  15. package/cjs/DateRangePicker/DateRangePicker.js +25 -3
  16. package/cjs/Dropdown/DropdownItem.js +16 -19
  17. package/cjs/Dropdown/useRenderDropdownItem.d.ts +2 -0
  18. package/cjs/Dropdown/useRenderDropdownItem.js +26 -0
  19. package/cjs/InputPicker/InputPicker.js +1 -1
  20. package/cjs/MaskedInput/MaskedInput.d.ts +5 -42
  21. package/cjs/MaskedInput/MaskedInput.js +9 -63
  22. package/cjs/MaskedInput/TextMask.d.ts +43 -0
  23. package/cjs/MaskedInput/TextMask.js +80 -0
  24. package/cjs/Menu/Menu.js +46 -34
  25. package/cjs/Menu/MenuItem.js +16 -12
  26. package/cjs/Modal/utils.js +9 -10
  27. package/cjs/Overlay/Position.js +7 -4
  28. package/cjs/Picker/PickerToggle.js +7 -5
  29. package/cjs/Picker/VirtualizedList.d.ts +29 -2
  30. package/cjs/Picker/utils.d.ts +6 -14
  31. package/cjs/Picker/utils.js +54 -33
  32. package/cjs/RadioGroup/RadioGroup.js +2 -2
  33. package/cjs/Rate/Rate.js +3 -1
  34. package/cjs/Sidenav/SidenavDropdownItem.js +17 -10
  35. package/cjs/TreePicker/TreePicker.js +6 -3
  36. package/cjs/utils/useElementResize.d.ts +1 -1
  37. package/cjs/utils/useElementResize.js +11 -6
  38. package/dist/rsuite-rtl.css +48 -6
  39. package/dist/rsuite-rtl.min.css +1 -1
  40. package/dist/rsuite-rtl.min.css.map +1 -1
  41. package/dist/rsuite.css +48 -6
  42. package/dist/rsuite.js +349 -359
  43. package/dist/rsuite.js.map +1 -1
  44. package/dist/rsuite.min.css +1 -1
  45. package/dist/rsuite.min.css.map +1 -1
  46. package/dist/rsuite.min.js +1 -1
  47. package/dist/rsuite.min.js.LICENSE.txt +9 -0
  48. package/dist/rsuite.min.js.map +1 -1
  49. package/esm/Carousel/Carousel.d.ts +1 -1
  50. package/esm/CheckTreePicker/CheckTreePicker.js +6 -3
  51. package/esm/CheckTreePicker/utils.d.ts +1 -1
  52. package/esm/CheckTreePicker/utils.js +7 -6
  53. package/esm/CheckboxGroup/CheckboxGroup.js +2 -2
  54. package/esm/DateRangePicker/Calendar.d.ts +2 -1
  55. package/esm/DateRangePicker/Calendar.js +27 -5
  56. package/esm/DateRangePicker/DateRangePicker.d.ts +2 -0
  57. package/esm/DateRangePicker/DateRangePicker.js +23 -3
  58. package/esm/Dropdown/DropdownItem.js +15 -19
  59. package/esm/Dropdown/useRenderDropdownItem.d.ts +2 -0
  60. package/esm/Dropdown/useRenderDropdownItem.js +18 -0
  61. package/esm/InputPicker/InputPicker.js +1 -1
  62. package/esm/MaskedInput/MaskedInput.d.ts +5 -42
  63. package/esm/MaskedInput/MaskedInput.js +9 -63
  64. package/esm/MaskedInput/TextMask.d.ts +43 -0
  65. package/esm/MaskedInput/TextMask.js +67 -0
  66. package/esm/Menu/Menu.js +46 -36
  67. package/esm/Menu/MenuItem.js +16 -12
  68. package/esm/Modal/utils.js +8 -7
  69. package/esm/Overlay/Position.js +6 -3
  70. package/esm/Picker/PickerToggle.js +7 -5
  71. package/esm/Picker/VirtualizedList.d.ts +29 -2
  72. package/esm/Picker/utils.d.ts +6 -14
  73. package/esm/Picker/utils.js +54 -33
  74. package/esm/RadioGroup/RadioGroup.js +2 -2
  75. package/esm/Rate/Rate.js +2 -1
  76. package/esm/Sidenav/SidenavDropdownItem.js +16 -10
  77. package/esm/TreePicker/TreePicker.js +6 -3
  78. package/esm/utils/useElementResize.d.ts +1 -1
  79. package/esm/utils/useElementResize.js +12 -5
  80. package/package.json +3 -3
@@ -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
- // Draw a split line for panel
22
- .rs-panel + .rs-panel {
23
- position: relative;
20
+ // Draw a split line for panel
21
+ & + .rs-panel {
22
+ position: relative;
24
23
 
25
- &::before {
26
- content: '';
27
- position: absolute;
28
- top: 0;
29
- border-top: 1px solid var(--rs-border-primary);
30
- left: 20px;
31
- right: 20px;
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
- ### Examples
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
@@ -139,6 +139,10 @@
139
139
  outline: 0;
140
140
  overflow: hidden;
141
141
 
142
+ &:hover {
143
+ text-decoration: none;
144
+ }
145
+
142
146
  &:focus-visible,
143
147
  &&-focus {
144
148
  .focus-ring(slim-inset);
@@ -342,10 +342,6 @@
342
342
  &-cell {
343
343
  position: absolute;
344
344
  border-right: 1px solid var(--rs-border-secondary);
345
-
346
- &-content {
347
- display: table-cell;
348
- }
349
345
  }
350
346
  }
351
347
  }
@@ -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: (index: number, event: React.ChangeEvent<HTMLInputElement>) => void;
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
- }, inline);
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: inline ? (0, _utils.mergeRefs)(treeViewRef, ref) : treeViewRef,
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
- if (!children.length) {
52
- return nodes[parent.refKey].check;
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
- var after = (0, _dateUtils.isAfter)((0, _dateUtils.setDate)(calendarDate[1], 1), (0, _dateUtils.setDate)((0, _dateUtils.addMonths)(calendarDate[0], 1), 1));
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
- if (showOneCalendar) return false;
88
- var after = (0, _dateUtils.isAfter)((0, _dateUtils.setDate)(calendarDate[1], 1), (0, _dateUtils.setDate)((0, _dateUtils.addMonths)(calendarDate[0], 1), 1));
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, _react.useCallback)(function (ui) {
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( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
126
+ return renderDropdownItem((0, _extends2.default)({
133
127
  ref: ref,
134
- role: "separator",
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( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
134
+ return renderDropdownItem((0, _extends2.default)({
141
135
  ref: ref,
142
- className: merge(prefix('panel'), className)
143
- }, restProps), children));
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( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
193
+ return renderDropdownItem((0, _extends2.default)({
199
194
  ref: (0, _utils.mergeRefs)(ref, menuitemRef),
200
195
  className: classes
201
- }, menuitem, dataAttributes, restProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
202
- className: prefix('menu-icon')
203
- }), children));
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,2 @@
1
+ import React from 'react';
2
+ export declare function useRenderDropdownItem(Component: React.ElementType): (props: any, OverrideComponent?: React.ElementType) => JSX.Element;
@@ -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 React from 'react';
2
- import { MaskType, MaskFunctionType, ConfigType } from './types';
3
- /**
4
- * https://github.com/text-mask/text-mask/blob/master/componentDocumentation.md#guide
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;