rsuite 5.0.0-beta.8 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +4 -4
  2. package/Sidenav/styles/index.less +99 -37
  3. package/cjs/@types/common.d.ts +2 -0
  4. package/cjs/DateRangePicker/Calendar.d.ts +2 -1
  5. package/cjs/DateRangePicker/Calendar.js +4 -3
  6. package/cjs/DateRangePicker/DateRangePicker.d.ts +1 -1
  7. package/cjs/DateRangePicker/DateRangePicker.js +58 -43
  8. package/cjs/DateRangePicker/utils.d.ts +1 -1
  9. package/cjs/DateRangePicker/utils.js +9 -5
  10. package/cjs/Dropdown/Dropdown.js +31 -18
  11. package/cjs/Dropdown/DropdownContext.d.ts +4 -1
  12. package/cjs/Dropdown/DropdownItem.js +31 -4
  13. package/cjs/Dropdown/DropdownState.d.ts +37 -0
  14. package/cjs/Dropdown/DropdownState.js +66 -0
  15. package/cjs/SelectPicker/SelectPicker.d.ts +1 -3
  16. package/cjs/Sidenav/SidenavDropdown.js +6 -1
  17. package/cjs/Sidenav/SidenavItem.js +4 -12
  18. package/cjs/utils/dateUtils.d.ts +1 -0
  19. package/cjs/utils/dateUtils.js +5 -1
  20. package/cjs/utils/useInternalId.d.ts +4 -0
  21. package/cjs/utils/useInternalId.js +24 -0
  22. package/cjs/utils/useUniqueId.d.ts +1 -1
  23. package/cjs/utils/useUniqueId.js +1 -1
  24. package/dist/rsuite-rtl.css +142 -72
  25. package/dist/rsuite-rtl.min.css +1 -1
  26. package/dist/rsuite-rtl.min.css.map +1 -1
  27. package/dist/rsuite.css +142 -72
  28. package/dist/rsuite.js +54 -10
  29. package/dist/rsuite.js.map +1 -1
  30. package/dist/rsuite.min.css +1 -1
  31. package/dist/rsuite.min.css.map +1 -1
  32. package/dist/rsuite.min.js +1 -1
  33. package/dist/rsuite.min.js.map +1 -1
  34. package/esm/@types/common.d.ts +2 -0
  35. package/esm/DateRangePicker/Calendar.d.ts +2 -1
  36. package/esm/DateRangePicker/Calendar.js +4 -3
  37. package/esm/DateRangePicker/DateRangePicker.d.ts +1 -1
  38. package/esm/DateRangePicker/DateRangePicker.js +27 -12
  39. package/esm/DateRangePicker/utils.d.ts +1 -1
  40. package/esm/DateRangePicker/utils.js +7 -3
  41. package/esm/Dropdown/Dropdown.js +30 -19
  42. package/esm/Dropdown/DropdownContext.d.ts +4 -1
  43. package/esm/Dropdown/DropdownItem.js +30 -6
  44. package/esm/Dropdown/DropdownState.d.ts +37 -0
  45. package/esm/Dropdown/DropdownState.js +55 -0
  46. package/esm/SelectPicker/SelectPicker.d.ts +1 -3
  47. package/esm/Sidenav/SidenavDropdown.js +5 -1
  48. package/esm/Sidenav/SidenavItem.js +4 -10
  49. package/esm/utils/dateUtils.d.ts +1 -0
  50. package/esm/utils/dateUtils.js +1 -0
  51. package/esm/utils/useInternalId.d.ts +4 -0
  52. package/esm/utils/useInternalId.js +16 -0
  53. package/esm/utils/useUniqueId.d.ts +1 -1
  54. package/esm/utils/useUniqueId.js +1 -1
  55. package/package.json +2 -2
  56. package/styles/color-modes/dark.less +16 -0
  57. package/styles/color-modes/high-contrast.less +17 -0
  58. package/styles/color-modes/light.less +16 -0
package/README.md CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  <p align="center">
3
2
  <a href="https://rsuitejs.com" target="_blank" rel="noopener noreferrer">
4
3
  <img src="https://user-images.githubusercontent.com/1203827/65102389-7be3f100-d9fd-11e9-859e-ae9617ed2f91.png" alt="React Suite logo">
@@ -47,13 +46,13 @@ React Suite supports server side rendering. Support [Next.js](https://github.com
47
46
  React Suite is available as an [npm package][npm-home].
48
47
 
49
48
  ```bash
50
- npm i rsuite@next --save
49
+ npm i rsuite --save
51
50
  ```
52
51
 
53
52
  or if you prefer Yarn
54
53
 
55
54
  ```bash
56
- yarn add rsuite@next
55
+ yarn add rsuite
57
56
  ```
58
57
 
59
58
  ## Usage
@@ -79,8 +78,9 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
79
78
  - [Right-to-left][rsuite-doc-guide-rtl]
80
79
  - [Components][rsuite-components-overview]
81
80
 
82
- **Previous old version**
81
+ **Historic version**
83
82
 
83
+ - [Version 4.\*](https://v3.rsuitejs.com/)
84
84
  - [Version 3.\*](https://v3.rsuitejs.com/)
85
85
  - [Version 2.\*](https://v2.rsuitejs.com/)
86
86
 
@@ -1,6 +1,6 @@
1
1
  @import '../../styles/common';
2
+ @import '../../styles//mixins/menu';
2
3
  @import '../../Ripple/styles/mixins';
3
- @import '../../Navbar/styles/index';
4
4
  @import 'mixin';
5
5
 
6
6
  //
@@ -20,11 +20,16 @@
20
20
 
21
21
  > .rs-sidenav-item,
22
22
  > .rs-dropdown .rs-dropdown-toggle,
23
- .rs-dropdown-item {
23
+ .rs-dropdown-item,
24
+ .rs-dropdown-item-toggle {
24
25
  padding: @sidenav-padding-vertical @sidenav-padding-horizontal;
25
26
  transition: @nav-item-transition;
26
27
  border-radius: 0;
27
28
  color: inherit;
29
+
30
+ .high-contrast-mode({
31
+ transition: none;
32
+ });
28
33
  }
29
34
 
30
35
  > .rs-sidenav-item,
@@ -396,7 +401,33 @@
396
401
 
397
402
  // Default Sidenav
398
403
  .rs-sidenav-default {
399
- .rs-navbar-default();
404
+ background-color: var(--rs-sidenav-default-bg);
405
+ color: var(--rs-sidenav-default-text);
406
+
407
+ .rs-sidenav-item,
408
+ .rs-dropdown-toggle {
409
+ background-color: var(--rs-sidenav-default-bg);
410
+ }
411
+
412
+ .rs-sidenav-item:hover,
413
+ .rs-dropdown .rs-dropdown-toggle:hover,
414
+ .rs-dropdown.rs-dropdown-open .rs-dropdown-toggle {
415
+ background-color: var(--rs-sidenav-default-hover-bg);
416
+ color: var(--rs-sidenav-default-hover-text);
417
+ }
418
+
419
+ .rs-sidenav-item.rs-sidenav-item-active,
420
+ .rs-dropdown-item.rs-dropdown-item-active,
421
+ .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle-icon {
422
+ color: var(--rs-sidenav-default-selected-text);
423
+ }
424
+
425
+ // Collapsed
426
+ &.rs-sidenav-collapse-out {
427
+ .rs-dropdown-item.rs-dropdown-item-active {
428
+ .menuitem-active();
429
+ }
430
+ }
400
431
  }
401
432
 
402
433
  .rs-sidenav-default.rs-sidenav-collapse-in,
@@ -404,20 +435,20 @@
404
435
  .rs-dropdown-item:not(.rs-dropdown-item-submenu),
405
436
  .rs-dropdown-item > .rs-dropdown-menu-toggle,
406
437
  .rs-dropdown-item > .rs-dropdown-item-toggle {
407
- color: var(--rs-navbar-default-text);
438
+ color: var(--rs-sidenav-default-text);
408
439
 
409
440
  &:hover,
410
441
  &:focus,
411
442
  &.rs-dropdown-item-focus {
412
- background-color: var(--rs-navbar-default-hover-bg);
413
- color: var(--rs-navbar-default-hover-text);
443
+ background-color: var(--rs-sidenav-default-hover-bg);
444
+ color: var(--rs-sidenav-default-hover-text);
414
445
  }
415
446
  }
416
447
 
417
448
  // Reset active dropdown-item style
418
449
  .rs-sidenav-item.rs-sidenav-item-active,
419
450
  .rs-dropdown-menu > .rs-dropdown-item.rs-dropdown-item-active {
420
- color: var(--rs-navbar-default-selected-text);
451
+ color: var(--rs-sidenav-default-selected-text);
421
452
 
422
453
  .high-contrast-mode({
423
454
  text-decoration: underline;
@@ -429,33 +460,51 @@
429
460
  .rs-sidenav-default.rs-sidenav-collapsing,
430
461
  .rs-sidenav-default.rs-sidenav-collapse-out {
431
462
  // Set active Level1 style
432
- .rs-dropdown-menu.rs-dropdown-menu-active ~ .rs-dropdown-toggle {
433
- > .rs-icon {
434
- color: var(--rs-navbar-default-selected-text);
435
- }
463
+ .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle-icon {
464
+ color: var(--rs-sidenav-default-selected-text);
436
465
  }
437
466
  }
438
467
 
439
468
  // Inverse Sidenav
440
469
  .rs-sidenav-inverse {
441
- .rs-navbar-inverse();
470
+ background-color: var(--rs-sidenav-inverse-bg);
471
+ color: var(--rs-sidenav-inverse-text);
472
+
473
+ .rs-sidenav-item,
474
+ .rs-dropdown .rs-dropdown-toggle,
475
+ .rs-dropdown-item-submenu:hover > .rs-dropdown-item-toggle {
476
+ background-color: var(--rs-sidenav-inverse-bg);
477
+
478
+ &:hover,
479
+ &:focus {
480
+ background-color: var(--rs-sidenav-inverse-hover-bg);
481
+ }
482
+ }
483
+
484
+ // Active
485
+ .rs-sidenav-item.rs-sidenav-item-active,
486
+ .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle {
487
+ .high-contrast-mode({
488
+ color: var(--rs-sidenav-inverse-selected-text);
489
+ });
490
+ }
442
491
 
443
492
  // Active
444
- .rs-dropdown .rs-dropdown-menu-active ~ .rs-dropdown-toggle,
493
+ .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle,
445
494
  .rs-sidenav-item,
446
495
  .rs-dropdown .rs-dropdown-toggle {
447
- color: var(--rs-navbar-inverse-text);
496
+ color: var(--rs-sidenav-inverse-text);
448
497
 
449
498
  &:hover,
450
499
  &:focus,
451
500
  &.rs-dropdown-item-focus {
452
- color: var(--rs-navbar-inverse-text);
501
+ color: var(--rs-sidenav-inverse-text);
453
502
  }
454
503
  }
455
504
 
456
- .rs-dropdown .rs-dropdown-menu-active ~ .rs-dropdown-toggle,
457
- .rs-sidenav-item.rs-sidenav-item-active {
458
- background-color: var(--rs-navbar-inverse-selected-bg);
505
+ .rs-sidenav-item.rs-sidenav-item-active,
506
+ .rs-dropdown-item.rs-dropdown-item-active {
507
+ background-color: var(--rs-sidenav-inverse-selected-bg);
459
508
  }
460
509
  }
461
510
 
@@ -464,32 +513,45 @@
464
513
  .rs-dropdown-item:not(.rs-dropdown-item-submenu),
465
514
  .rs-dropdown-item > .rs-dropdown-menu-toggle,
466
515
  .rs-dropdown-item > .rs-dropdown-item-toggle {
467
- color: var(--rs-navbar-inverse-text);
516
+ color: var(--rs-sidenav-inverse-text);
468
517
 
469
518
  &:hover,
470
519
  &:focus,
471
520
  &.rs-dropdown-item-focus {
472
- background-color: var(--rs-navbar-inverse-hover-bg);
473
- color: var(--rs-navbar-inverse-text);
521
+ background-color: var(--rs-sidenav-inverse-hover-bg);
522
+ color: var(--rs-sidenav-inverse-text);
474
523
  }
475
524
  }
476
-
477
- // Reset active dropdown-item style
478
- .rs-dropdown-menu > .rs-dropdown-item.rs-dropdown-item-active:not(.rs-dropdown-item-submenu) {
479
- background-color: var(--rs-navbar-inverse-hover-bg);
480
- }
481
525
  }
482
526
 
483
527
  // Subtle Sidenav
484
528
  .rs-sidenav-subtle {
485
- .rs-navbar-subtle();
529
+ background-color: transparent;
530
+ color: var(--rs-sidenav-subtle-text);
531
+
532
+ .rs-sidenav-item,
533
+ .rs-dropdown .rs-dropdown-toggle {
534
+ background-color: transparent;
535
+
536
+ &:hover,
537
+ &:focus {
538
+ background-color: transparent;
539
+ color: var(--rs-sidenav-subtle-hover-text);
540
+ }
541
+ }
542
+
543
+ // Active
544
+ .rs-sidenav-item.rs-sidenav-item-active,
545
+ .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle {
546
+ color: var(--rs-sidenav-subtle-selected-text);
547
+ }
486
548
 
487
549
  .rs-dropdown-open > .rs-dropdown-toggle.btn {
488
550
  background-color: transparent;
489
551
 
490
552
  &:hover,
491
553
  &:focus {
492
- background-color: var(--rs-navbar-subtle-hover-bg);
554
+ background-color: var(--rs-sidenav-subtle-hover-bg);
493
555
  }
494
556
  }
495
557
  }
@@ -499,18 +561,18 @@
499
561
  .rs-dropdown-item:not(.rs-dropdown-item-submenu),
500
562
  .rs-dropdown-item > .rs-dropdown-menu-toggle,
501
563
  .rs-dropdown-item > .rs-dropdown-item-toggle {
502
- color: var(--rs-navbar-subtle-text);
564
+ color: var(--rs-sidenav-subtle-text);
503
565
 
504
566
  &:hover,
505
567
  &:focus {
506
- background-color: var(--rs-navbar-subtle-hover-bg);
507
- color: var(--rs-navbar-subtle-hover-text);
568
+ background-color: var(--rs-sidenav-subtle-hover-bg);
569
+ color: var(--rs-sidenav-subtle-hover-text);
508
570
  }
509
571
  }
510
572
 
511
573
  // Reset active dropdown-item style
512
574
  .rs-dropdown-menu > .rs-dropdown-item.rs-dropdown-item-active {
513
- color: var(--rs-navbar-subtle-selected-text);
575
+ color: var(--rs-sidenav-subtle-selected-text);
514
576
  }
515
577
  }
516
578
 
@@ -518,15 +580,15 @@
518
580
  .rs-sidenav-subtle.rs-sidenav-collapsing,
519
581
  .rs-sidenav-subtle.rs-sidenav-collapse-out {
520
582
  // Set active Level1 style
521
- .rs-dropdown-menu.rs-dropdown-menu-active ~ .rs-dropdown-toggle {
522
- color: var(--rs-navbar-subtle-text);
583
+ .rs-dropdown.rs-dropdown-selected-within .rs-dropdown-toggle {
584
+ color: var(--rs-sidenav-subtle-text);
523
585
 
524
586
  &:hover {
525
- background-color: var(--rs-navbar-subtle-hover-bg);
587
+ background-color: var(--rs-sidenav-subtle-hover-bg);
526
588
  }
527
589
 
528
- > .rs-icon {
529
- color: var(--rs-navbar-subtle-selected-text);
590
+ &-icon {
591
+ color: var(--rs-sidenav-subtle-selected-text);
530
592
  }
531
593
  }
532
594
  }
@@ -72,6 +72,8 @@ export interface PickerBaseProps<LocaleType = any> extends WithAsProps, Animatio
72
72
  defaultOpen?: boolean;
73
73
  /** A picker that can clear values */
74
74
  cleanable?: boolean;
75
+ /** A picker can have different sizes */
76
+ size?: TypeAttributes.Size;
75
77
  /** Called when Modal is displayed */
76
78
  onOpen?: () => void;
77
79
  /** Called when Modal is closed */
@@ -13,7 +13,8 @@ export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, Omit
13
13
  isoWeek?: boolean;
14
14
  limitEndYear?: number;
15
15
  locale?: DatePickerLocale;
16
- onChangeCalendarDate?: (index: number, nextPageDate: Date) => void;
16
+ onChangeCalendarDate?: (index: number, date: Date) => void;
17
+ onChangeCalendarTime?: (index: number, date: Date) => void;
17
18
  onMouseMove?: (date: Date) => void;
18
19
  onSelect?: (date: Date, event?: React.SyntheticEvent<any>) => void;
19
20
  showOneCalendar?: boolean;
@@ -36,9 +36,10 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
36
  index = props.index,
37
37
  limitEndYear = props.limitEndYear,
38
38
  onChangeCalendarDate = props.onChangeCalendarDate,
39
+ onChangeCalendarTime = props.onChangeCalendarTime,
39
40
  showOneCalendar = props.showOneCalendar,
40
41
  value = props.value,
41
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "disabledDate", "index", "limitEndYear", "onChangeCalendarDate", "showOneCalendar", "value"]);
42
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "disabledDate", "index", "limitEndYear", "onChangeCalendarDate", "onChangeCalendarTime", "showOneCalendar", "value"]);
42
43
 
43
44
  var _useState = (0, _react.useState)(),
44
45
  calendarState = _useState[0],
@@ -55,8 +56,8 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
55
56
  setCalendarState(undefined);
56
57
  }, [index, onChangeCalendarDate]);
57
58
  var handleChangePageTime = (0, _react.useCallback)(function (nextPageDate) {
58
- onChangeCalendarDate(index, nextPageDate);
59
- }, [index, onChangeCalendarDate]);
59
+ onChangeCalendarTime(index, nextPageDate);
60
+ }, [index, onChangeCalendarTime]);
60
61
  var toggleMonthDropdown = (0, _react.useCallback)(function () {
61
62
  setCalendarState(calendarState === _Calendar.CalendarState.DROP_MONTH ? undefined : _Calendar.CalendarState.DROP_MONTH);
62
63
  }, [calendarState]);
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { PickerComponent } from '../Picker';
3
2
  import { FormControlBaseProps, PickerBaseProps } from '../@types/common';
3
+ import { PickerComponent } from '../Picker';
4
4
  import { DisabledDateFunction, RangeType, ValueType } from './types';
5
5
  export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<ValueType> {
6
6
  /** Configure shortcut options */
@@ -11,35 +11,35 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var _react = _interopRequireWildcard(require("react"));
14
+ var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"));
15
15
 
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
16
+ var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
17
17
 
18
18
  var _omit = _interopRequireDefault(require("lodash/omit"));
19
19
 
20
- var _pick = _interopRequireDefault(require("lodash/pick"));
20
+ var _partial = _interopRequireDefault(require("lodash/partial"));
21
21
 
22
- var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
22
+ var _pick = _interopRequireDefault(require("lodash/pick"));
23
23
 
24
- var _dateUtils = require("../utils/dateUtils");
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
25
 
26
- var disabledDateUtils = _interopRequireWildcard(require("./disabledDateUtils"));
26
+ var _react = _interopRequireWildcard(require("react"));
27
27
 
28
28
  var _CustomProvider = require("../CustomProvider");
29
29
 
30
30
  var _Toolbar = _interopRequireDefault(require("../DatePicker/Toolbar"));
31
31
 
32
- var _Calendar = _interopRequireDefault(require("./Calendar"));
32
+ var _Picker = require("../Picker");
33
33
 
34
- var _utils = require("./utils");
34
+ var _utils = require("../utils");
35
35
 
36
- var _utils2 = require("../utils");
36
+ var _dateUtils = require("../utils/dateUtils");
37
37
 
38
- var _Picker = require("../Picker");
38
+ var _Calendar2 = _interopRequireDefault(require("./Calendar"));
39
39
 
40
- var _partial = _interopRequireDefault(require("lodash/partial"));
40
+ var disabledDateUtils = _interopRequireWildcard(require("./disabledDateUtils"));
41
41
 
42
- var _Calendar2 = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"));
42
+ var _utils2 = require("./utils");
43
43
 
44
44
  var defaultProps = (0, _extends2.default)({}, _Picker.pickerDefaultProps, {
45
45
  as: 'div',
@@ -94,17 +94,17 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
94
94
  onSelect = props.onSelect,
95
95
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "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"]);
96
96
 
97
- var _useClassNames = (0, _utils2.useClassNames)(classPrefix),
97
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
98
98
  merge = _useClassNames.merge,
99
99
  prefix = _useClassNames.prefix;
100
100
 
101
- var _useCustom = (0, _utils2.useCustom)('DateRangePicker', overrideLocale),
101
+ var _useCustom = (0, _utils.useCustom)('DateRangePicker', overrideLocale),
102
102
  locale = _useCustom.locale,
103
103
  formatDate = _useCustom.formatDate;
104
104
 
105
105
  var rangeFormatStr = "" + formatStr + character + formatStr;
106
106
 
107
- var _useControlled = (0, _utils2.useControlled)(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : []),
107
+ var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : []),
108
108
  value = _useControlled[0],
109
109
  setValue = _useControlled[1];
110
110
  /**
@@ -135,7 +135,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
135
135
  setHoverValue = _useState2[1]; // The displayed calendar panel is rendered based on this value.
136
136
 
137
137
 
138
- var _useState3 = (0, _react.useState)((0, _utils.getCalendarDate)({
138
+ var _useState3 = (0, _react.useState)((0, _utils2.getCalendarDate)({
139
139
  value: valueProp !== null && valueProp !== void 0 ? valueProp : defaultCalendarValue
140
140
  })),
141
141
  calendarDate = _useState3[0],
@@ -158,7 +158,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
158
158
  */
159
159
 
160
160
  var updateCalendarDate = (0, _react.useCallback)(function (value) {
161
- setCalendarDate((0, _utils.getCalendarDate)({
161
+ setCalendarDate((0, _utils2.getCalendarDate)({
162
162
  value: value
163
163
  }));
164
164
  }, []); // if valueProp changed then update selectValue/hoverValue
@@ -227,11 +227,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
227
227
  var hoverRangeFunc = hoverRange;
228
228
 
229
229
  if (hoverRange === 'week') {
230
- hoverRangeFunc = (0, _partial.default)(_utils.getWeekHoverRange, isoWeek);
230
+ hoverRangeFunc = (0, _partial.default)(_utils2.getWeekHoverRange, isoWeek);
231
231
  }
232
232
 
233
233
  if (hoverRangeFunc === 'month') {
234
- hoverRangeFunc = _utils.getMonthHoverRange;
234
+ hoverRangeFunc = _utils2.getMonthHoverRange;
235
235
  }
236
236
 
237
237
  if (typeof hoverRangeFunc !== 'function') {
@@ -245,7 +245,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
245
245
  return [];
246
246
  }
247
247
 
248
- if (_utils2.DateUtils.isAfter(hoverValues[0], hoverValues[1])) {
248
+ if (_utils.DateUtils.isAfter(hoverValues[0], hoverValues[1])) {
249
249
  hoverValues.reverse();
250
250
  }
251
251
 
@@ -259,7 +259,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
259
259
  var nextValue = !(0, _isUndefined.default)(nextSelectValue) ? nextSelectValue : selectValue;
260
260
  setSelectValue(nextValue || []);
261
261
 
262
- if (!(0, _dateUtils.isSameDay)(nextValue[0], value[0]) || !(0, _dateUtils.isSameDay)(nextValue[1], value[1])) {
262
+ if (!(0, _utils2.isSameRange)(nextValue, value, formatStr)) {
263
263
  setValue(nextValue);
264
264
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
265
265
  } // `closeOverlay` default value is `true`
@@ -268,7 +268,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
268
268
  if (closeOverlay !== false) {
269
269
  handleCloseDropdown();
270
270
  }
271
- }, [handleCloseDropdown, onChange, selectValue, setSelectValue, setValue, value]);
271
+ }, [formatStr, handleCloseDropdown, onChange, selectValue, setValue, value]);
272
272
  /**
273
273
  * Select the date range. If oneTap is not set, you need to click twice to select the start time and end time.
274
274
  * The MouseMove event is called between the first click and the second click to update the selection state.
@@ -282,7 +282,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
282
282
  if (hoverRange) {
283
283
  var nextHoverValue = [selectRangeValueRef.current[0], hoverRangeValue[1]];
284
284
 
285
- if (_utils2.DateUtils.isBefore(hoverRangeValue[0], selectRangeValueRef.current[0])) {
285
+ if (_utils.DateUtils.isBefore(hoverRangeValue[0], selectRangeValueRef.current[0])) {
286
286
  nextHoverValue[0] = hoverRangeValue[0];
287
287
  nextHoverValue[1] = selectRangeValueRef.current[1];
288
288
  }
@@ -304,7 +304,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
304
304
  var noHoverRangeValid = hoverRangeValue.length !== 2; // in `oneTap` mode
305
305
 
306
306
  if (hasDoneSelect.current && oneTap) {
307
- handleValueUpdate(event, noHoverRangeValid ? [(0, _utils.setTimingMargin)(date), (0, _utils.setTimingMargin)(date, 'right')] : hoverRangeValue);
307
+ handleValueUpdate(event, noHoverRangeValid ? [(0, _utils2.setTimingMargin)(date), (0, _utils2.setTimingMargin)(date, 'right')] : hoverRangeValue);
308
308
  hasDoneSelect.current = false;
309
309
  return;
310
310
  } // no preset hover range can use
@@ -329,7 +329,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
329
329
  } // If user have completed the selection, then sort
330
330
 
331
331
 
332
- if (nextSelectValue.length === 2 && _utils2.DateUtils.isAfter(nextSelectValue[0], nextSelectValue[1])) {
332
+ if (nextSelectValue.length === 2 && _utils.DateUtils.isAfter(nextSelectValue[0], nextSelectValue[1])) {
333
333
  nextSelectValue.reverse();
334
334
  }
335
335
 
@@ -357,6 +357,20 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
357
357
  nextCalendarDate[index] = date;
358
358
  updateCalendarDate(nextCalendarDate);
359
359
  }, [calendarDate, updateCalendarDate]);
360
+ var handleChangeCalendarTime = (0, _react.useCallback)(function (index, date) {
361
+ setSelectValue(function (prev) {
362
+ var next = [].concat(prev);
363
+ var clonedDate = new Date(date.valueOf()); // if next[index] is not empty, only update the time after aligning the year, month and day
364
+
365
+ if (next[index]) {
366
+ clonedDate.setFullYear(next[index].getFullYear(), next[index].getMonth(), next[index].getDate());
367
+ }
368
+
369
+ next[index] = clonedDate;
370
+ return next;
371
+ });
372
+ handleChangeCalendarDate(index, date);
373
+ }, [handleChangeCalendarDate]);
360
374
  /**
361
375
  * Toolbar operation callback function
362
376
  */
@@ -381,7 +395,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
381
395
  var rangeValue = value.split(character); // isMatch('01/11/2020', 'MM/dd/yyyy') ==> true
382
396
  // isMatch('2020-11-01', 'MM/dd/yyyy') ==> false
383
397
 
384
- if (!_utils2.DateUtils.isMatch(rangeValue[0], formatStr) || !_utils2.DateUtils.isMatch(rangeValue[1], formatStr)) {
398
+ if (!_utils.DateUtils.isMatch(rangeValue[0], formatStr) || !_utils.DateUtils.isMatch(rangeValue[1], formatStr)) {
385
399
  setInputState('Error');
386
400
  return;
387
401
  }
@@ -390,12 +404,12 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
390
404
  var endDate = new Date(rangeValue[1]);
391
405
  var selectValue = [startDate, endDate];
392
406
 
393
- if (!_utils2.DateUtils.isValid(startDate) || !_utils2.DateUtils.isValid(endDate)) {
407
+ if (!_utils.DateUtils.isValid(startDate) || !_utils.DateUtils.isValid(endDate)) {
394
408
  setInputState('Error');
395
409
  return;
396
410
  }
397
411
 
398
- if (disabledDate(startDate, selectValue, true, _utils2.DATERANGE_DISABLED_TARGET.CALENDAR)) {
412
+ if (disabledDate(startDate, selectValue, true, _utils.DATERANGE_DISABLED_TARGET.CALENDAR)) {
399
413
  setInputState('Error');
400
414
  return;
401
415
  }
@@ -424,7 +438,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
424
438
  endData = value[1];
425
439
  nextCalendarDate = [_startDate, (0, _dateUtils.isSameMonth)(_startDate, endData) ? (0, _dateUtils.addMonths)(endData, 1) : endData];
426
440
  } else {
427
- nextCalendarDate = (0, _utils.getCalendarDate)({
441
+ nextCalendarDate = (0, _utils2.getCalendarDate)({
428
442
  value: defaultCalendarValue
429
443
  });
430
444
  }
@@ -450,12 +464,12 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
450
464
  var nextSelectValue = [selectStartDate, selectEndDate]; // If the date is between the start and the end
451
465
  // the button is disabled
452
466
 
453
- while (_utils2.DateUtils.isBefore(start, end) || _utils2.DateUtils.isSameDay(start, end)) {
467
+ while (_utils.DateUtils.isBefore(start, end) || _utils.DateUtils.isSameDay(start, end)) {
454
468
  if (disabledDate(start, nextSelectValue, hasDoneSelect.current, type)) {
455
469
  return true;
456
470
  }
457
471
 
458
- start = _utils2.DateUtils.addDays(start, 1);
472
+ start = _utils.DateUtils.addDays(start, 1);
459
473
  }
460
474
 
461
475
  return false;
@@ -468,7 +482,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
468
482
  return true;
469
483
  }
470
484
 
471
- return disabledByBetween(start, end, _utils2.DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
485
+ return disabledByBetween(start, end, _utils.DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
472
486
  }, [disabledByBetween, selectValue]);
473
487
  var disabledShortcutButton = (0, _react.useCallback)(function (value) {
474
488
  if (value === void 0) {
@@ -483,7 +497,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
483
497
  return true;
484
498
  }
485
499
 
486
- return disabledByBetween(start, end, _utils2.DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
500
+ return disabledByBetween(start, end, _utils.DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
487
501
  }, [disabledByBetween]);
488
502
  var handleDisabledDate = (0, _react.useCallback)(function (date, values, type) {
489
503
  return disabledDate(date, values, hasDoneSelect.current, type);
@@ -519,12 +533,13 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
519
533
  showWeekNumbers: showWeekNumbers,
520
534
  value: selectValue,
521
535
  onChangeCalendarDate: handleChangeCalendarDate,
536
+ onChangeCalendarTime: handleChangeCalendarTime,
522
537
  onMouseMove: handleMouseMove,
523
538
  onSelect: handleSelectValueChange
524
539
  };
525
540
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
526
541
  className: classes,
527
- ref: (0, _utils2.mergeRefs)(overlayRef, speakerRef),
542
+ ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
528
543
  target: triggerRef,
529
544
  style: styles
530
545
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -535,9 +550,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
535
550
  className: prefix('daterange-header')
536
551
  }, getDisplayString(selectValue)), /*#__PURE__*/_react.default.createElement("div", {
537
552
  className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
538
- }, /*#__PURE__*/_react.default.createElement(_Calendar.default, (0, _extends2.default)({
553
+ }, /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
539
554
  index: 0
540
- }, panelProps)), !showOneCalendar && /*#__PURE__*/_react.default.createElement(_Calendar.default, (0, _extends2.default)({
555
+ }, panelProps)), !showOneCalendar && /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
541
556
  index: 1
542
557
  }, panelProps)))), /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
543
558
  locale: locale,
@@ -564,30 +579,30 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
564
579
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
565
580
  ref: triggerRef,
566
581
  placement: placement,
567
- onEnter: (0, _utils2.createChainedFunction)(handleEnter, onEnter),
568
- onEntered: (0, _utils2.createChainedFunction)(handleEntered, onEntered),
569
- onExited: (0, _utils2.createChainedFunction)(handleExited, onExited),
582
+ onEnter: (0, _utils.createChainedFunction)(handleEnter, onEnter),
583
+ onEntered: (0, _utils.createChainedFunction)(handleEntered, onEntered),
584
+ onExited: (0, _utils.createChainedFunction)(handleExited, onExited),
570
585
  speaker: renderDropdownMenu
571
586
  }, /*#__PURE__*/_react.default.createElement(Component, {
572
587
  ref: rootRef,
573
588
  className: merge(className, classes, (_merge = {}, _merge[prefix('error')] = inputState === 'Error', _merge)),
574
589
  style: style
575
- }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _utils2.DateUtils.calendarOnlyProps)), {
590
+ }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _utils.DateUtils.calendarOnlyProps)), {
576
591
  as: toggleAs,
577
592
  ref: targetRef,
578
593
  input: true,
579
- inputMask: _utils2.DateUtils.getDateMask(rangeFormatStr),
594
+ inputMask: _utils.DateUtils.getDateMask(rangeFormatStr),
580
595
  inputValue: value ? getDisplayString(value, true) : '',
581
596
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : rangeFormatStr,
582
597
  onInputChange: handleInputChange,
583
598
  onInputBlur: handleInputBlur,
584
599
  onKeyDown: onPickerKeyDown,
585
- onClean: (0, _utils2.createChainedFunction)(handleClean, onClean),
600
+ onClean: (0, _utils.createChainedFunction)(handleClean, onClean),
586
601
  cleanable: cleanable && !disabled,
587
602
  hasValue: hasValue,
588
603
  active: isPickerToggleActive,
589
604
  placement: placement,
590
- caretComponent: _Calendar2.default,
605
+ caretComponent: _Calendar.default,
591
606
  disabled: disabled
592
607
  }), getDisplayString())));
593
608
  });
@@ -4,6 +4,6 @@ export declare function getCalendarDate({ value }: {
4
4
  value?: ValueType;
5
5
  }): ValueType;
6
6
  export declare const getDefaultRanges: () => RangeType[];
7
- export declare const isSameValueType: (source: ValueType, dest: ValueType) => boolean;
7
+ export declare const isSameRange: (source: ValueType, dest: ValueType, format: string) => boolean;
8
8
  export declare const getMonthHoverRange: (date: Date) => ValueType;
9
9
  export declare const getWeekHoverRange: (isoWeek: boolean, date: Date) => ValueType;