@geneui/components 2.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/ActionableList.js +1761 -0
  2. package/AdvancedSearch.js +872 -0
  3. package/Alert.js +98 -0
  4. package/Avatar.js +77 -0
  5. package/Badge.js +76 -0
  6. package/Breadcrumb.js +128 -0
  7. package/BusyLoader.js +69 -0
  8. package/Button.js +130 -0
  9. package/CHANGELOG.md +424 -0
  10. package/Card.js +513 -0
  11. package/CardList.js +705 -0
  12. package/CellMeasurerCache-c11cec83.js +229 -0
  13. package/Charts.js +99 -0
  14. package/Checkbox.js +232 -0
  15. package/CheckboxGroup.js +206 -0
  16. package/CheckboxGroupWithSearch.js +279 -0
  17. package/Collapse.js +196 -0
  18. package/ColorPicker.js +210 -0
  19. package/ComboBox.js +99 -0
  20. package/Counter.js +99 -0
  21. package/DateFilter.js +179 -0
  22. package/DatePicker.js +1231 -0
  23. package/DatePickerInput.js +30 -0
  24. package/Divider.js +56 -0
  25. package/Drawer.js +264 -0
  26. package/Dropdown.js +99 -0
  27. package/Editor.js +22965 -0
  28. package/Empty.js +132 -0
  29. package/ExtendedInput.js +578 -0
  30. package/Form.js +116 -0
  31. package/FormContainer.js +189 -0
  32. package/FormableCheckbox.js +27 -0
  33. package/FormableDatePicker.js +39 -0
  34. package/FormableDropdown.js +105 -0
  35. package/FormableEditor.js +24 -0
  36. package/FormableHOC-21051057.js +83 -0
  37. package/FormableMultiSelectDropdown.js +105 -0
  38. package/FormableNumberInput.js +31 -0
  39. package/FormableRadio.js +23 -0
  40. package/FormableSwitcher.js +23 -0
  41. package/FormableTextInput.js +31 -0
  42. package/FormableUploader.js +40 -0
  43. package/GeneUIProvider.js +256 -0
  44. package/Grid.js +166 -0
  45. package/Holder.js +99 -0
  46. package/Icon.js +63 -0
  47. package/Image.js +130 -0
  48. package/ImagePreview.js +99 -0
  49. package/KeyValue.js +63 -0
  50. package/Label.js +58 -0
  51. package/LinkButton.js +104 -0
  52. package/Menu.js +277 -0
  53. package/MobileNavigation.js +95 -0
  54. package/MobilePopup.js +180 -0
  55. package/Modal.js +251 -0
  56. package/ModuleTitle.js +99 -0
  57. package/NavigationMenu.js +212 -0
  58. package/Notification.js +120 -0
  59. package/Option.js +186 -0
  60. package/Overlay.js +99 -0
  61. package/Overspread.js +343 -0
  62. package/Pagination.js +258 -0
  63. package/Paper.js +97 -0
  64. package/Popover-f4d1cac0.js +411 -0
  65. package/Popover.js +20 -0
  66. package/PopoverV2.js +19 -0
  67. package/Portal.js +58 -0
  68. package/Products.js +115 -0
  69. package/Profile.js +99 -0
  70. package/Progress.js +200 -0
  71. package/QRCode.js +816 -0
  72. package/README.md +90 -0
  73. package/Radio.js +152 -0
  74. package/RadioGroup.js +105 -0
  75. package/Range.js +14 -0
  76. package/RichEditor-b7928765.js +228 -0
  77. package/RichEditor.js +13 -0
  78. package/Scrollbar.js +1587 -0
  79. package/Search.js +72 -0
  80. package/SearchWithDropdown.js +195 -0
  81. package/Section.js +62 -0
  82. package/SkeletonLoader.js +82 -0
  83. package/Slider.js +256 -0
  84. package/Status.js +104 -0
  85. package/Steps.js +312 -0
  86. package/SuggestionList.js +15 -0
  87. package/Switcher.js +194 -0
  88. package/Table.js +102 -0
  89. package/TableCompositions.js +17028 -0
  90. package/Tabs.js +236 -0
  91. package/Tag.js +103 -0
  92. package/TextLink.js +22 -0
  93. package/Textarea.js +239 -0
  94. package/Time.js +63 -0
  95. package/TimePicker.js +99 -0
  96. package/Timeline.js +114 -0
  97. package/Title.js +66 -0
  98. package/Toaster.js +116 -0
  99. package/Tooltip.js +157 -0
  100. package/TransferList.js +502 -0
  101. package/Uploader.js +32 -0
  102. package/ValidatableCheckbox.js +126 -0
  103. package/ValidatableDatePicker.js +312 -0
  104. package/ValidatableDropdown.js +99 -0
  105. package/ValidatableElements.js +99 -0
  106. package/ValidatableMultiSelectDropdown.js +99 -0
  107. package/ValidatableNumberInput.js +194 -0
  108. package/ValidatableRadio.js +117 -0
  109. package/ValidatableSwitcher.js +94 -0
  110. package/ValidatableTextInput.js +164 -0
  111. package/ValidatableTimeInput.js +171 -0
  112. package/ValidatableUploader.js +94 -0
  113. package/Widget.js +99 -0
  114. package/_commonjsHelpers-24198af3.js +35 -0
  115. package/_rollupPluginBabelHelpers-e8fb2e5c.js +16 -0
  116. package/checkTimeValidation-e56771be.js +16 -0
  117. package/checkboxRadioSwitcher-5b69d7bd.js +4 -0
  118. package/clsx.m-2bb6df4b.js +3 -0
  119. package/configs-91c86664.js +96 -0
  120. package/configs.js +131 -0
  121. package/dateValidation-67caec66.js +225 -0
  122. package/debounce-4419bc2f.js +17 -0
  123. package/globalStyling-9c60a159.js +4 -0
  124. package/guid-8ddf77b3.js +16 -0
  125. package/index-00fe8887.js +193 -0
  126. package/index-0cf65939.js +30991 -0
  127. package/index-122432cd.js +270 -0
  128. package/index-262edd7a.js +77 -0
  129. package/index-5cea9a7d.js +407 -0
  130. package/index-5e722d91.js +867 -0
  131. package/index-67f4d4d1.js +6568 -0
  132. package/index-6ff23041.js +66 -0
  133. package/index-702bf24a.js +1938 -0
  134. package/index-a4635754.js +329 -0
  135. package/index-a59530cd.js +4 -0
  136. package/index-ac59cb10.js +169 -0
  137. package/index-b7a33c58.js +11 -0
  138. package/index-d9e8a888.js +987 -0
  139. package/index-e0af0caf.js +1182 -0
  140. package/index-e8776f3d.js +807 -0
  141. package/index.js +128 -0
  142. package/localization-4ba17032.js +46 -0
  143. package/objectWithoutPropertiesLoose-299691d8.js +78 -0
  144. package/package.json +190 -0
  145. package/rangeAndSlider-20599da4.js +8839 -0
  146. package/react-beautiful-dnd.esm-38c37304.js +10117 -0
  147. package/style-inject.es-746bb8ed.js +28 -0
  148. package/useClickOutside-5183e396.js +25 -0
  149. package/useDeviceType-dd51db38.js +15 -0
  150. package/useEllipsisDetection-ef536015.js +23 -0
  151. package/useKeyDown-38102ae7.js +21 -0
  152. package/useMount-6fef51a5.js +9 -0
  153. package/useWidth-9f4647f8.js +15 -0
  154. package/useWindowSize-80369d76.js +33 -0
package/DatePicker.js ADDED
@@ -0,0 +1,1231 @@
1
+ import { s as styleInject } from './style-inject.es-746bb8ed.js';
2
+ import './globalStyling-9c60a159.js';
3
+ import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
4
+ import React__default, { createContext, useState, useCallback, useContext, useMemo, useEffect, forwardRef } from 'react';
5
+ import { c as classnames } from './index-6ff23041.js';
6
+ import { p as propTypesExports } from './index-e0af0caf.js';
7
+ import { a as dayjs, i as isBetween, d as dayjsWithPlugins } from './dateValidation-67caec66.js';
8
+ import { r as chunk, n as noop } from './index-ac59cb10.js';
9
+ import { g as guid } from './guid-8ddf77b3.js';
10
+ import Button from './Button.js';
11
+ import Icon from './Icon.js';
12
+ import './configs-91c86664.js';
13
+ import './_commonjsHelpers-24198af3.js';
14
+ import 'react-dom';
15
+
16
+ var css_248z = "[data-gene-ui-version=\"2.11.0\"] .datepicker-holder{background:var(--background);display:inline-grid;font-weight:600;grid-template-areas:\"date-box-1\" \"date-actions\";grid-template-columns:auto;grid-template-rows:auto auto;min-width:20.8rem;padding:1rem 2rem 2rem;vertical-align:top}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder .not-clickable{opacity:.5;pointer-events:none}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder:not(.range-mode){padding-bottom:0}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder.range-mode{grid-template-areas:\"date-box-1 date-box-2 date-actions\";grid-template-columns:auto auto auto;grid-template-rows:auto}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder.range-mode:not(.simple-range-mode)>li+li{margin:0 0 0 3rem}html[dir=rtl] .datepicker-holder.range-mode:not(.simple-range-mode)>li+li{margin:0 3rem 0 0}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder.range-mode .date-box{display:grid;grid-template-rows:auto 1fr auto}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder.range-mode.simple-range-mode{grid-template-areas:\"date-box-1 date-box-2\" \"date-actions date-actions\";grid-template-columns:auto auto;grid-template-rows:auto auto}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder.range-mode.simple-range-mode .date-box-2{margin:0 0 0 3rem}html[dir=rtl] .datepicker-holder.range-mode.simple-range-mode .date-box-2{margin:0 3rem 0 0}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder.range-mode.simple-range-mode .date-actions{margin:.5rem 0 0}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder .date-box-1{grid-area:date-box-1}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder .date-box-2{grid-area:date-box-2}[data-gene-ui-version=\"2.11.0\"] .datepicker-holder .date-actions{grid-area:date-actions}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul{display:flex;margin:0 0 .5rem}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul+ul{margin:2px 0 0}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li{align-items:center;border:1px solid #0000;border-radius:100%;color:rgba(var(--background-sc-rgb),.8);cursor:pointer;display:flex;height:3.6rem;justify-content:center;position:relative;text-align:center;transition:color .3s,border-color .3s,background .3s;width:3.6rem}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li+li{margin:0 0 0 2px}html[dir=rtl] .calendar-days>ul>li+li{margin:0 2px 0 0}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li>span{display:block;z-index:0}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li>span:before{bottom:-1px;content:\"\";display:block;left:-2px;pointer-events:none;position:absolute;right:-2px;top:-1px;transition:background .3s;z-index:-1}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.heading{color:rgba(var(--background-sc-rgb),32);font-weight:700;pointer-events:none}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.heading>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.disabled{color:rgba(var(--background-sc-rgb),.3);font-weight:600;pointer-events:none}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.current{border-color:var(--hero);color:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.will-be-current{background:rgba(var(--hero-rgb),.15)}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li:hover{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.selected{background:var(--hero)!important;color:var(--hero-sc)!important}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.selected:hover{background:var(--hero-hover)!important}[data-gene-ui-version=\"2.11.0\"] .range-mode .calendar-days>ul>li:hover{background:rgba(var(--hero-rgb),.15)}html:not([dir=rtl]) .calendar-days>ul>li.range-start>span:before,html:not([dir=rtl]) .calendar-days>ul>li:first-child>span:before{border-top-left-radius:3.8rem}html[dir=rtl] .calendar-days>ul>li.range-start>span:before,html[dir=rtl] .calendar-days>ul>li:first-child>span:before{border-top-right-radius:3.8rem}html:not([dir=rtl]) .calendar-days>ul>li.range-start>span:before,html:not([dir=rtl]) .calendar-days>ul>li:first-child>span:before{border-bottom-left-radius:3.8rem}html[dir=rtl] .calendar-days>ul>li.range-start>span:before,html[dir=rtl] .calendar-days>ul>li:first-child>span:before{border-bottom-right-radius:3.8rem}html:not([dir=rtl]) .calendar-days>ul>li.range-end>span:before,html:not([dir=rtl]) .calendar-days>ul>li:last-child>span:before{border-top-right-radius:3.8rem}html[dir=rtl] .calendar-days>ul>li.range-end>span:before,html[dir=rtl] .calendar-days>ul>li:last-child>span:before{border-top-left-radius:3.8rem}html:not([dir=rtl]) .calendar-days>ul>li.range-end>span:before,html:not([dir=rtl]) .calendar-days>ul>li:last-child>span:before{border-bottom-right-radius:3.8rem}html[dir=rtl] .calendar-days>ul>li.range-end>span:before,html[dir=rtl] .calendar-days>ul>li:last-child>span:before{border-bottom-left-radius:3.8rem}[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul.hover-row:hover>li>span:before,[data-gene-ui-version=\"2.11.0\"] .calendar-days>ul>li.ranged>span:before{background:rgba(var(--hero-rgb),.15)}[data-gene-ui-version=\"2.11.0\"] .date-actions ul{display:flex;flex-direction:column}[data-gene-ui-version=\"2.11.0\"] .date-actions.horizontal li:only-child{border-top:1px solid rgba(var(--background-sc-rgb),.1);display:flex;justify-content:center;margin:.5rem 0 0;padding:.8rem 0}[data-gene-ui-version=\"2.11.0\"] .date-actions.horizontal li:only-child .btn{font-weight:700}[data-gene-ui-version=\"2.11.0\"] .date-actions.vertical .btn:not(.a-outline){margin:0 0 1.2rem}[data-gene-ui-version=\"2.11.0\"] .date-actions.vertical .btn.a-outline{margin:.8rem 0 0}[data-gene-ui-version=\"2.11.0\"] .simple-range-mode .date-actions ul{flex-direction:row}[data-gene-ui-version=\"2.11.0\"] .simple-range-mode .date-actions ul li{flex-shrink:0}[data-gene-ui-version=\"2.11.0\"] .simple-range-mode .date-actions ul li:first-child{flex:auto}[data-gene-ui-version=\"2.11.0\"] .date-heading{align-items:center;display:flex;font:700 1.6rem var(--font-family);margin:0 0 1.8rem;text-align:center}[data-gene-ui-version=\"2.11.0\"] .date-heading>li{flex-shrink:0}[data-gene-ui-version=\"2.11.0\"] .date-heading>li:not(.title){align-items:center;display:flex;flex:auto;justify-content:flex-start;width:50%}[data-gene-ui-version=\"2.11.0\"] .date-heading>li:not(.title)>*+*{margin:0 0 0 .4rem}html[dir=rtl] .date-heading>li:not(.title)>*+*{margin:0 .4rem 0 0}[data-gene-ui-version=\"2.11.0\"] .date-heading>li:not(.title):last-child{justify-content:flex-end}[data-gene-ui-version=\"2.11.0\"] .date-heading>li.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[data-gene-ui-version=\"2.11.0\"] .date-heading .clickable{cursor:pointer;transition:color .3s}[data-gene-ui-version=\"2.11.0\"] .date-heading .clickable.active,[data-gene-ui-version=\"2.11.0\"] .date-heading .clickable:hover{color:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .date-heading .icon{align-items:center;border-radius:100%;cursor:pointer;display:flex;height:3rem;justify-content:center;transition:background .3s;width:3rem}[data-gene-ui-version=\"2.11.0\"] .date-heading .icon:hover{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .month-years-select{min-height:22.9rem;width:26.4rem}[data-gene-ui-version=\"2.11.0\"] .month-years-select li{display:flex}[data-gene-ui-version=\"2.11.0\"] .month-years-select li+li{margin:3.6rem 0 0}[data-gene-ui-version=\"2.11.0\"] .month-years-select button{border-radius:3rem;cursor:pointer;display:block;font:600 1.6rem var(--font-family);height:3rem;overflow:hidden;text-overflow:ellipsis;transition:color .3s,background .3s;-webkit-user-select:none;user-select:none;white-space:nowrap;width:calc(33.33333% - 1.46667rem)}[data-gene-ui-version=\"2.11.0\"] .month-years-select button:nth-child(2){margin:0 2.2rem}[data-gene-ui-version=\"2.11.0\"] .month-years-select button:hover{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .month-years-select button.disabled{color:rgba(var(--background-sc-rgb),.3);pointer-events:none}[data-gene-ui-version=\"2.11.0\"] .month-years-select button.selected{background:var(--hero);color:var(--hero-sc)}[data-gene-ui-version=\"2.11.0\"] .month-years-select .disable{color:rgba(var(--background-sc-rgb),.3);pointer-events:none;-webkit-user-select:none;user-select:none}[data-gene-ui-version=\"2.11.0\"] .month-years-select-button{max-height:3rem;min-height:3rem}[data-gene-ui-version=\"2.11.0\"] .month-years-select-button.selected:hover{background:var(--hero)!important}[data-gene-ui-version=\"2.11.0\"] .month-years-select-button:active{background:none}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str{align-items:center;display:flex;font:600 1.6rem var(--font-family);justify-content:center;margin:1.2rem 0 0}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str li{align-items:center;display:flex;flex-direction:column;justify-content:center}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str li>:first-child{order:0}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str li>:nth-child(2){order:2}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str li>:nth-child(3){order:1}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str li>*+*{margin:.2rem 0 0}[data-gene-ui-version=\"2.11.0\"] .time-inputs-str li+li{margin:0 0 0 1rem}html[dir=rtl] .time-inputs-str li+li{margin:0 1rem 0 0}[data-gene-ui-version=\"2.11.0\"] .time-input-el{align-items:center;background:rgba(var(--background-sc-rgb),.03);border:1px solid rgba(var(--hero-rgb),0);border-radius:.3rem;cursor:default;display:flex;height:3.6rem;justify-content:center;text-align:center;transition:border-color .4s,background .4s;width:5.8rem}[data-gene-ui-version=\"2.11.0\"] button:active~.time-input-el{background:#0000;border-color:var(--hero)}[data-gene-ui-version=\"2.11.0\"] .week-picker:hover{background:rgba(var(--background-sc-rgb),.03)}";
17
+ styleInject(css_248z);
18
+
19
+ const configs = {
20
+ weekdays: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
21
+ months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
22
+ weekdaysSlice: 1,
23
+ monthsSlice: 3,
24
+ weekStart: 1,
25
+ buttons: {
26
+ today: 'Today',
27
+ apply: 'Apply',
28
+ thisMonth: 'This Month',
29
+ thisWeek: 'This Week'
30
+ },
31
+ actions: {
32
+ today: 'Today',
33
+ yesterday: 'Yesterday',
34
+ last7Days: 'Last 7 days',
35
+ last30Days: 'Last 30 days',
36
+ thisMonth: 'This Month',
37
+ custom: 'Custom'
38
+ }
39
+ };
40
+
41
+ const Context = /*#__PURE__*/createContext([configs]);
42
+ function Provider(_ref) {
43
+ let {
44
+ children
45
+ } = _ref;
46
+ const [state, setState] = useState(configs);
47
+ const setter = useCallback(next => {
48
+ setState({
49
+ ...configs,
50
+ ...next
51
+ });
52
+ }, []);
53
+ return /*#__PURE__*/React__default.createElement(Context.Provider, {
54
+ value: [state, setter]
55
+ }, children);
56
+ }
57
+ const useDatePickerContext = () => {
58
+ const [configs, setConfigs] = useContext(Context);
59
+ return [configs, setConfigs];
60
+ };
61
+
62
+ function Day(_ref) {
63
+ let {
64
+ value,
65
+ disabled,
66
+ isCurrent,
67
+ isSelected,
68
+ isRanged,
69
+ onClick,
70
+ onHover,
71
+ rangeStart,
72
+ isHoveredBefore,
73
+ startDate,
74
+ endDate,
75
+ isHovered,
76
+ rangeEnd,
77
+ hide,
78
+ max,
79
+ min
80
+ } = _ref;
81
+ const handleClick = useCallback(() => {
82
+ const checkedValue = disabled ? value.isBefore(min) ? min : max : value;
83
+ onClick && onClick(checkedValue);
84
+ }, [value, onClick, max, min, disabled]);
85
+ const handleMouseEnter = useCallback(() => onHover && onHover(value), [value, onHover]);
86
+ return /*#__PURE__*/React__default.createElement("li", {
87
+ className: classnames({
88
+ disabled,
89
+ selected: !disabled && isSelected,
90
+ current: isCurrent,
91
+ ranged: !disabled && isRanged,
92
+ 'range-start': endDate && value.isSame(startDate) || isHoveredBefore && isHovered || rangeStart && !isHoveredBefore,
93
+ 'range-end': endDate && value.isSame(startDate) ? false : rangeStart && isHoveredBefore || !isHoveredBefore && isHovered || rangeEnd
94
+ }),
95
+ onClick: handleClick,
96
+ onMouseEnter: handleMouseEnter
97
+ }, !hide && /*#__PURE__*/React__default.createElement("span", null, value.date()));
98
+ }
99
+ Day.propTypes = {
100
+ value: propTypesExports.instanceOf(dayjs).isRequired,
101
+ startDate: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
102
+ endDate: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
103
+ max: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
104
+ min: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
105
+ isHovered: propTypesExports.bool,
106
+ disabled: propTypesExports.bool,
107
+ isCurrent: propTypesExports.bool,
108
+ isSelected: propTypesExports.bool,
109
+ isRanged: propTypesExports.bool,
110
+ isHoveredBefore: propTypesExports.bool,
111
+ onClick: propTypesExports.func
112
+ };
113
+ Day.defaultProps = {
114
+ disabled: false,
115
+ isCurrent: false,
116
+ isSelected: false,
117
+ isRanged: false
118
+ };
119
+
120
+ function getRange(rangeStart, rangeEnd, selected) {
121
+ return !rangeStart || rangeEnd ? [selected, null] : selected.isBefore(rangeStart) ? [selected, rangeStart] : [rangeStart, selected];
122
+ }
123
+
124
+ const addTime = (date, _ref) => {
125
+ let [hour, minute, second] = _ref;
126
+ return date.hour(hour).minute(minute).second(second);
127
+ };
128
+
129
+ const DAYS_TO_SHOW = 6 * 7;
130
+ function getCalendarDays(startOfMonth) {
131
+ const firstWeekDay = startOfMonth.day();
132
+ // Because of using Monday as week start
133
+ const startDiff = firstWeekDay === 0 ? 6 : firstWeekDay - 1;
134
+ const first = startOfMonth.subtract(startDiff, 'days');
135
+ const days = Array(DAYS_TO_SHOW).fill().map((_, i) => first.add(i, 'd'));
136
+ return days;
137
+ }
138
+
139
+ function getCalendarMonths(startOfYear) {
140
+ const end = startOfYear.endOf('y');
141
+ let pointer = startOfYear;
142
+ const months = [];
143
+ while (pointer.isBefore(end)) {
144
+ months.push(pointer);
145
+ pointer = pointer.add(1, 'M');
146
+ }
147
+ return months;
148
+ }
149
+
150
+ const getCalendarYears = startYear => Array(12).fill(startYear - 1).map((item, i) => item + i);
151
+ const getStartOfDecade = year => Math.floor(year / 10) * 10;
152
+ const nextDecade = date => date.set('y', getStartOfDecade(date.year()) + 10).startOf('y');
153
+ const prevDecade = date => date.set('y', getStartOfDecade(date.year()) - 10).startOf('y');
154
+
155
+ const nextMonthAvailable = (date, max) => !max || date.add(1, 'M').isBefore(max, 'M');
156
+ const prevMonthAvailable = (date, min) => !min || date.subtract(1, 'M').isAfter(min, 'M');
157
+
158
+ dayjs.extend(isBetween);
159
+ dayjs.Ls.en.weekStart = 1;
160
+ function Days(_ref) {
161
+ let {
162
+ preview,
163
+ selected,
164
+ rangePicker,
165
+ weekPicker,
166
+ rangeStart,
167
+ rangeEnd,
168
+ onRangeChange,
169
+ onChange,
170
+ onPreviewChange,
171
+ hovered,
172
+ onHover,
173
+ maxPreview,
174
+ minPreview,
175
+ max,
176
+ min,
177
+ frozenDateRange,
178
+ markedDate
179
+ } = _ref;
180
+ const [contextConfigs] = useDatePickerContext();
181
+ const days = useMemo(() => chunk(getCalendarDays(preview.startOf('M')), 7), [preview]);
182
+ const handleRangeClick = useCallback(day => {
183
+ const range = getRange(rangeStart, rangeEnd, day);
184
+ onRangeChange && onRangeChange(range);
185
+ }, [rangeStart, rangeEnd, onRangeChange]);
186
+ const handleWeekClick = useCallback(day => {
187
+ const start = day.startOf('w');
188
+ const end = day.endOf('w');
189
+ onRangeChange && onRangeChange([start, end]);
190
+ }, [onRangeChange]);
191
+ const handleDiffMonthClick = useCallback(day => {
192
+ if (day.isBefore(preview) && !prevMonthAvailable(preview, minPreview)) return;
193
+ if (day.isAfter(preview) && !nextMonthAvailable(preview, maxPreview)) return;
194
+ onPreviewChange && onPreviewChange(day);
195
+ }, [preview, minPreview, maxPreview, onPreviewChange]);
196
+ const handleClick = useCallback(day => {
197
+ if (!day.isSame(preview, 'M')) {
198
+ handleDiffMonthClick(day);
199
+ // return; // TODO ::: check if this correct
200
+ }
201
+
202
+ rangePicker && handleRangeClick(day);
203
+ weekPicker && handleWeekClick(day);
204
+ !rangePicker && !weekPicker && onChange && onChange(day);
205
+ }, [handleRangeClick, handleWeekClick, handleDiffMonthClick, preview, rangePicker, weekPicker, onChange]);
206
+ const checkDayFrozenState = useCallback(item => {
207
+ const format = 'YYYY/MM/DD';
208
+ const formattedItem = dayjs(item.format(format));
209
+ return Array.isArray(frozenDateRange) && frozenDateRange.length && !!frozenDateRange.find(_ref2 => {
210
+ let {
211
+ from,
212
+ to
213
+ } = _ref2;
214
+ return from && to && formattedItem.isBetween(dayjs(from).format(format), dayjs(to).format(format), 'day', '[]');
215
+ });
216
+ }, [frozenDateRange]);
217
+ const checkDayDisabledState = useCallback(item => !item.isSame(preview, 'M') || min && item.endOf('day').isBefore(min) || max && item.isAfter(max), [min, max, preview]);
218
+ const checkDayHideState = useCallback(item => !item.isSame(preview, 'M'), [preview]);
219
+ const isHovered = useCallback(item => hovered && hovered.isSame(item) && !dayjs(hovered).isBetween(rangeStart, rangeEnd), [hovered, rangeStart, rangeEnd]);
220
+ const isSelected = useCallback(item => rangePicker || weekPicker ? item.isSame(rangeStart, 'd') || item.isSame(rangeEnd, 'd') : selected && selected.isSame(item, 'd') || false, [rangePicker, weekPicker, rangeStart, rangeEnd, selected]);
221
+ const isRanged = useCallback(item => Boolean((rangePicker || weekPicker) && rangeStart && dayjs(item).isBetween(rangeStart, rangeEnd || hovered, 'd', '[]')), [rangePicker, weekPicker, rangeStart, rangeEnd, hovered]);
222
+ return /*#__PURE__*/React__default.createElement("div", {
223
+ className: "calendar-days"
224
+ }, /*#__PURE__*/React__default.createElement("ul", null, contextConfigs.weekdays && contextConfigs.weekdays.map((item, i) => /*#__PURE__*/React__default.createElement("li", {
225
+ key: i,
226
+ className: "heading"
227
+ }, /*#__PURE__*/React__default.createElement("span", null, item.slice(0, contextConfigs.weekdaysSlice))))), days.map(items => /*#__PURE__*/React__default.createElement("ul", {
228
+ key: guid(),
229
+ className: classnames({
230
+ 'hover-row': weekPicker
231
+ })
232
+ }, items.map(item => /*#__PURE__*/React__default.createElement(Day, {
233
+ isCurrent: !checkDayDisabledState(item) && item.isSame(markedDate || dayjs(), 'd'),
234
+ rangeStart: rangePicker && rangeStart && item.isSame(rangeStart, 'd'),
235
+ disabled: checkDayDisabledState(item) || checkDayFrozenState(item),
236
+ rangeEnd: rangePicker && rangeEnd && item.isSame(rangeEnd, 'd'),
237
+ isHoveredBefore: !!(rangeStart && rangeStart.isAfter(hovered)),
238
+ hide: checkDayHideState(item),
239
+ isSelected: isSelected(item),
240
+ isHovered: isHovered(item),
241
+ isRanged: isRanged(item),
242
+ startDate: rangeStart,
243
+ onClick: handleClick,
244
+ endDate: rangeEnd,
245
+ onHover: onHover,
246
+ value: item,
247
+ key: guid(),
248
+ max: max,
249
+ min: min
250
+ })))));
251
+ }
252
+ Days.defaultProps = {
253
+ preview: dayjs().startOf('M'),
254
+ rangeStart: null,
255
+ rangeEnd: null
256
+ };
257
+
258
+ function Months(_ref) {
259
+ let {
260
+ year,
261
+ selected,
262
+ onChange,
263
+ max,
264
+ min,
265
+ setIsThisMonthAllowed
266
+ } = _ref;
267
+ const [contextConfigs] = useDatePickerContext();
268
+ const months = useMemo(() => chunk(getCalendarMonths(year.startOf('y')), 3), [year]);
269
+ const monthName = useCallback(date => {
270
+ const month = contextConfigs.months[date.get('month')];
271
+ return month ? month.slice(0, contextConfigs.monthsSlice) : date.format('MMM');
272
+ }, [contextConfigs]);
273
+ const isMonthMaxOrMinChecker = useCallback(month => {
274
+ if (month && (max || min)) {
275
+ return max && dayjs(month).isAfter(dayjs(max), 'month') || min && dayjs(month).isBefore(dayjs(min), 'month');
276
+ }
277
+ }, [max, min]);
278
+ useEffect(() => {
279
+ if (min && !max) {
280
+ setIsThisMonthAllowed(dayjs(min).isSameOrBefore(dayjs(new Date()), 'month'));
281
+ } else if (!min && max) {
282
+ setIsThisMonthAllowed(dayjs(max).isSameOrAfter(dayjs(new Date()), 'month'));
283
+ } else if (min && max) {
284
+ setIsThisMonthAllowed(dayjs(min).isSameOrBefore(dayjs(new Date()), 'month') && dayjs(max).isSameOrAfter(dayjs(new Date()), 'month'));
285
+ }
286
+ }, [max, min]);
287
+ return /*#__PURE__*/React__default.createElement("ul", {
288
+ className: "month-years-select"
289
+ }, months.map(row => /*#__PURE__*/React__default.createElement("li", {
290
+ key: guid()
291
+ }, row.map(month => /*#__PURE__*/React__default.createElement(Button, {
292
+ key: guid(),
293
+ className: classnames('month-years-select-button', {
294
+ selected: selected && selected.isSame(month, 'M'),
295
+ disable: isMonthMaxOrMinChecker(month)
296
+ }),
297
+ onClick: () => onChange && onChange(month),
298
+ color: isMonthMaxOrMinChecker(month) ? 'default' : 'default',
299
+ flexibility: "content-size",
300
+ appearance: "minimal"
301
+ }, monthName(month))))));
302
+ }
303
+ Months.defaultProps = {
304
+ year: dayjs().startOf('y')
305
+ };
306
+
307
+ function Years(_ref) {
308
+ let {
309
+ previewYear,
310
+ selected,
311
+ onChange,
312
+ onPreviewChange
313
+ } = _ref;
314
+ const startOfDecade = useMemo(() => getStartOfDecade(previewYear), [previewYear]);
315
+ const years = useMemo(() => chunk(getCalendarYears(startOfDecade), 3), [startOfDecade]);
316
+ const isFromDecade = useCallback(year => year > startOfDecade - 1 && year < startOfDecade + 10, [startOfDecade]);
317
+ const handleClick = useCallback(e => {
318
+ const {
319
+ year
320
+ } = e.target.dataset;
321
+ isFromDecade(year) ? onChange && onChange(year) : onPreviewChange && onPreviewChange(year);
322
+ }, [isFromDecade, onPreviewChange, onChange]);
323
+ return /*#__PURE__*/React__default.createElement("ul", {
324
+ className: "month-years-select"
325
+ }, years.map(row => /*#__PURE__*/React__default.createElement("li", {
326
+ key: row[0]
327
+ }, row.map(year =>
328
+ /*#__PURE__*/
329
+ // TODO ::: replace with Button atom
330
+ React__default.createElement("button", {
331
+ key: year,
332
+ "data-year": year,
333
+ className: classnames({
334
+ selected: selected && selected === year,
335
+ disabled: !isFromDecade(year)
336
+ }),
337
+ onClick: handleClick
338
+ }, year)))));
339
+ }
340
+ Years.defaultProps = {
341
+ date: dayjs().year()
342
+ };
343
+
344
+ function Body(_ref) {
345
+ let {
346
+ view,
347
+ onViewChange,
348
+ preview,
349
+ onPreviewChange,
350
+ selected,
351
+ onChange,
352
+ weekPicker,
353
+ rangeStart,
354
+ rangeEnd,
355
+ onRangeChange,
356
+ monthPicker,
357
+ rangePicker,
358
+ hovered,
359
+ onHover,
360
+ maxPreview,
361
+ minPreview,
362
+ max,
363
+ min,
364
+ markedDate,
365
+ setIsThisMonthAllowed,
366
+ frozenDateRange
367
+ } = _ref;
368
+ const isRange = weekPicker || monthPicker || rangePicker;
369
+ const handleMonthChange = useCallback(month => {
370
+ if (!monthPicker) {
371
+ onPreviewChange(month);
372
+ onViewChange('days');
373
+ } else {
374
+ const start = month.startOf('M');
375
+ const end = month.endOf('M');
376
+ onPreviewChange(month);
377
+ onRangeChange([start, end]);
378
+ }
379
+ }, [monthPicker, onPreviewChange, onViewChange, onRangeChange]);
380
+ const handleYearChange = useCallback(year => {
381
+ onPreviewChange(preview.set('y', year));
382
+ onViewChange('months');
383
+ }, [preview, onPreviewChange, onViewChange]);
384
+ const handleFooterPreviewChange = useCallback(year => onPreviewChange(preview.set('y', year)), [preview, onPreviewChange]);
385
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, view === 'days' && /*#__PURE__*/React__default.createElement(Days, {
386
+ weekPicker: weekPicker,
387
+ preview: preview,
388
+ selected: selected,
389
+ onChange: onChange,
390
+ onPreviewChange: onPreviewChange,
391
+ rangeStart: rangeStart,
392
+ rangeEnd: rangeEnd,
393
+ onRangeChange: onRangeChange,
394
+ rangePicker: rangePicker,
395
+ hovered: hovered,
396
+ onHover: onHover,
397
+ maxPreview: maxPreview,
398
+ minPreview: minPreview,
399
+ max: max,
400
+ min: min,
401
+ markedDate: markedDate,
402
+ frozenDateRange: frozenDateRange
403
+ }), view === 'months' && /*#__PURE__*/React__default.createElement(Months, {
404
+ selected: isRange ? rangeStart : selected,
405
+ onChange: handleMonthChange,
406
+ year: preview.startOf('y'),
407
+ max: max,
408
+ min: min,
409
+ setIsThisMonthAllowed: setIsThisMonthAllowed
410
+ }), view === 'years' && /*#__PURE__*/React__default.createElement(Years, {
411
+ selected: isRange ? rangeStart && rangeStart.year() : selected && selected.year(),
412
+ onChange: handleYearChange,
413
+ previewYear: preview.year(),
414
+ onPreviewChange: handleFooterPreviewChange
415
+ }));
416
+ }
417
+
418
+ function Header(_ref) {
419
+ let {
420
+ view,
421
+ months,
422
+ onViewChange,
423
+ preview,
424
+ onPreviewChange,
425
+ monthPicker,
426
+ rangePicker,
427
+ maxPreview,
428
+ minPreview
429
+ } = _ref;
430
+ const startOfDecade = useMemo(() => getStartOfDecade(preview.year()), [preview]);
431
+ const years = useMemo(() => "".concat(startOfDecade, " - ").concat(startOfDecade + 9), [startOfDecade]);
432
+ const month = useMemo(() => preview.get('month'), [preview]);
433
+ const prevYearVisible = !minPreview || preview.subtract(1, 'y').isAfter(minPreview, 'M');
434
+ const nextYearVisible = !maxPreview || preview.add(1, 'y').isBefore(maxPreview, 'M');
435
+ const prevMonthVisible = view === 'days' && prevMonthAvailable(preview, minPreview);
436
+ const nextMonthVisible = view === 'days' && nextMonthAvailable(preview, maxPreview);
437
+ const headerMonthsVisible = view === 'days';
438
+ const headerYearVisible = view !== 'years';
439
+ const headerYearsVisible = view === 'years';
440
+ const backButtonVisible = monthPicker ? view === 'years' : view !== 'days';
441
+ const handlePrevMonth = () => onPreviewChange(preview.subtract(1, 'M'));
442
+ const handleHeaderMonth = () => !rangePicker && onViewChange('months');
443
+ const handleHeaderYear = () => !rangePicker && onViewChange('years');
444
+ const handleNextMonth = () => onPreviewChange(preview.add(1, 'M'));
445
+ const handleBack = () => onViewChange(view === 'years' ? 'months' : 'days');
446
+ const handlePrevYear = useCallback(() => view !== 'years' ? onPreviewChange(preview.subtract(1, 'y')) : onPreviewChange(prevDecade(preview)), [view, onPreviewChange, preview]);
447
+ const handleNextYear = useCallback(() => view !== 'years' ? onPreviewChange(preview.add(1, 'y')) : onPreviewChange(nextDecade(preview)), [view, onPreviewChange, preview]);
448
+ return /*#__PURE__*/React__default.createElement("ul", {
449
+ className: "date-heading"
450
+ }, /*#__PURE__*/React__default.createElement("li", null, backButtonVisible && /*#__PURE__*/React__default.createElement(Icon, {
451
+ onClick: handleBack,
452
+ type: "bc-icon-arrow-back"
453
+ }), prevYearVisible && /*#__PURE__*/React__default.createElement(Icon, {
454
+ onClick: handlePrevYear,
455
+ type: "bc-icon-left-outline"
456
+ }), prevMonthVisible && /*#__PURE__*/React__default.createElement(Icon, {
457
+ onClick: handlePrevMonth,
458
+ type: "bc-icon-arrow-left-nav"
459
+ })), /*#__PURE__*/React__default.createElement("li", {
460
+ className: "title"
461
+ }, headerMonthsVisible && /*#__PURE__*/React__default.createElement("span", {
462
+ onClick: handleHeaderMonth,
463
+ className: classnames({
464
+ clickable: !rangePicker
465
+ })
466
+ }, months && months[month] || preview.format('MMMM'), "\xA0 \xA0"), headerYearVisible && /*#__PURE__*/React__default.createElement("span", {
467
+ onClick: handleHeaderYear,
468
+ className: classnames({
469
+ clickable: !rangePicker
470
+ })
471
+ }, preview.format('YYYY')), headerYearsVisible && /*#__PURE__*/React__default.createElement("span", null, years)), /*#__PURE__*/React__default.createElement("li", null, nextMonthVisible && /*#__PURE__*/React__default.createElement(Icon, {
472
+ onClick: handleNextMonth,
473
+ type: "bc-icon-arrow-right-nav"
474
+ }), nextYearVisible && /*#__PURE__*/React__default.createElement(Icon, {
475
+ onClick: handleNextYear,
476
+ type: "bc-icon-right-outline"
477
+ })));
478
+ }
479
+
480
+ function Footer(_ref) {
481
+ let {
482
+ onPreviewChange,
483
+ onSelect,
484
+ weekPicker,
485
+ monthPicker,
486
+ onRangeChange,
487
+ rangePicker,
488
+ todayText,
489
+ thisWeekText,
490
+ thisMonthText,
491
+ customOption,
492
+ isThisMonthAllowed
493
+ } = _ref;
494
+ const handleClick = useCallback(() => {
495
+ const today = customOption ? dayjs.isDayjs(customOption === null || customOption === void 0 ? void 0 : customOption.date) ? customOption === null || customOption === void 0 ? void 0 : customOption.date : dayjs(customOption === null || customOption === void 0 ? void 0 : customOption.date) : dayjs().startOf('d');
496
+ onPreviewChange && onPreviewChange(today);
497
+ if (!weekPicker && !monthPicker) {
498
+ onSelect && onSelect(today);
499
+ } else {
500
+ const unit = weekPicker ? 'w' : 'M';
501
+ onRangeChange && onRangeChange([today.startOf(unit), today.endOf(unit)]);
502
+ }
503
+ }, [weekPicker, monthPicker, onPreviewChange, onSelect, onRangeChange, customOption]);
504
+ return /*#__PURE__*/React__default.createElement("li", {
505
+ className: "date-actions horizontal"
506
+ }, !rangePicker && /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement(Button, {
507
+ color: "default",
508
+ appearance: "minimal",
509
+ flexibility: "default",
510
+ onClick: handleClick,
511
+ disabled: !isThisMonthAllowed
512
+ }, customOption ? customOption.label : weekPicker ? thisWeekText : monthPicker ? thisMonthText : todayText))));
513
+ }
514
+ Footer.defaultProps = {
515
+ todayText: 'Today',
516
+ thisWeekText: 'This Week',
517
+ thisMonthText: 'This Month'
518
+ };
519
+
520
+ const format = value => "".concat(String(value).length === 1 ? '0' : '').concat(value);
521
+ function TimeInput(_ref) {
522
+ let {
523
+ value,
524
+ onChange
525
+ } = _ref;
526
+ const handleChange = useCallback((val, unit) => {
527
+ if (val || val === 0) {
528
+ onChange && onChange(value.set(unit, value.get(unit) + val));
529
+ }
530
+ }, [value, onChange]);
531
+ return /*#__PURE__*/React__default.createElement("ul", {
532
+ className: "time-inputs-str"
533
+ }, /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement(Button, {
534
+ onClick: () => handleChange(1, 'h'),
535
+ color: "default",
536
+ appearance: "minimal",
537
+ icon: "bc-icon-arrow-up"
538
+ }), /*#__PURE__*/React__default.createElement(Button, {
539
+ onClick: () => handleChange(-1, 'h'),
540
+ color: "default",
541
+ appearance: "minimal",
542
+ icon: "bc-icon-arrow-down"
543
+ }), /*#__PURE__*/React__default.createElement("div", {
544
+ className: "time-input-el"
545
+ }, format(value.get('h')))), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("span", null, ":")), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement(Button, {
546
+ onClick: () => handleChange(1, 'm'),
547
+ color: "default",
548
+ appearance: "minimal",
549
+ icon: "bc-icon-arrow-up"
550
+ }), /*#__PURE__*/React__default.createElement(Button, {
551
+ onClick: () => handleChange(-1, 'm'),
552
+ color: "default",
553
+ appearance: "minimal",
554
+ icon: "bc-icon-arrow-down"
555
+ }), /*#__PURE__*/React__default.createElement("div", {
556
+ className: "time-input-el"
557
+ }, format(value.get('m')))), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement("span", null, ":")), /*#__PURE__*/React__default.createElement("li", null, /*#__PURE__*/React__default.createElement(Button, {
558
+ onClick: () => handleChange(1, 's'),
559
+ color: "default",
560
+ appearance: "minimal",
561
+ icon: "bc-icon-arrow-up"
562
+ }), /*#__PURE__*/React__default.createElement(Button, {
563
+ onClick: () => handleChange(-1, 's'),
564
+ color: "default",
565
+ appearance: "minimal",
566
+ icon: "bc-icon-arrow-down"
567
+ }), /*#__PURE__*/React__default.createElement("div", {
568
+ className: "time-input-el"
569
+ }, format(value.get('s')))));
570
+ }
571
+
572
+ const Calendar = /*#__PURE__*/forwardRef((props, ref) => {
573
+ const {
574
+ onChange,
575
+ defaultValue,
576
+ weekPicker,
577
+ monthPicker,
578
+ className,
579
+ rangePicker,
580
+ defaultPreview,
581
+ rangeStart,
582
+ rangeEnd,
583
+ onRangeChange,
584
+ defaultTimeValues,
585
+ hovered,
586
+ onHover,
587
+ onPreviewChange,
588
+ maxPreview,
589
+ minPreview,
590
+ max,
591
+ min,
592
+ withTime,
593
+ time,
594
+ onTimeChange,
595
+ todayText,
596
+ thisWeekText,
597
+ thisMonthText,
598
+ value,
599
+ markedDate,
600
+ customOption,
601
+ frozenDateRange
602
+ } = props;
603
+ const [contextConfigs] = useDatePickerContext();
604
+ const defaultView = monthPicker ? 'months' : 'days';
605
+ const [view, setView] = useState(defaultView);
606
+ const [isThisMonthAllowed, setIsThisMonthAllowed] = useState(true);
607
+ const [previewState, setPreviewState] = useState(() => defaultPreview || dayjs());
608
+ const [selected, setSelected] = useState(defaultValue);
609
+ const isControlled = ('preview' in props);
610
+ const preview = isControlled ? props.preview : previewState;
611
+ const handleSelect = useCallback(value => {
612
+ setSelected(value);
613
+ onChange && onChange(value);
614
+ }, [onChange]);
615
+ const handlePreviewChange = useCallback(preview => {
616
+ !isControlled && setPreviewState(preview);
617
+ onPreviewChange && onPreviewChange(preview);
618
+ }, [onPreviewChange, isControlled]);
619
+ const handleRangeChange = useCallback(_ref => {
620
+ let [start, end] = _ref;
621
+ const formattedStart = start ? addTime(start.startOf('d'), defaultTimeValues[0]) : start;
622
+ const formattedEnd = end ? addTime(end.startOf('d'), defaultTimeValues[1]) : end;
623
+ onRangeChange([formattedStart, formattedEnd]);
624
+ }, [withTime, defaultTimeValues, onRangeChange]);
625
+ useEffect(() => {
626
+ const date = dayjsWithPlugins(value);
627
+ if (date.isValid()) {
628
+ setSelected(date);
629
+ setPreviewState(date);
630
+ }
631
+ }, [value]);
632
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("li", {
633
+ className: classnames('date-box', className),
634
+ ref: ref
635
+ }, /*#__PURE__*/React__default.createElement(Header, {
636
+ rangePicker: rangePicker,
637
+ view: view,
638
+ onViewChange: setView,
639
+ preview: preview,
640
+ onPreviewChange: handlePreviewChange,
641
+ monthPicker: monthPicker,
642
+ maxPreview: maxPreview,
643
+ minPreview: minPreview,
644
+ months: contextConfigs.months
645
+ }), /*#__PURE__*/React__default.createElement(Body, {
646
+ view: view,
647
+ rangePicker: rangePicker,
648
+ onViewChange: setView,
649
+ preview: preview,
650
+ onPreviewChange: handlePreviewChange,
651
+ selected: selected,
652
+ onChange: handleSelect,
653
+ weekPicker: weekPicker,
654
+ monthPicker: monthPicker,
655
+ rangeStart: rangeStart,
656
+ rangeEnd: rangeEnd,
657
+ onRangeChange: handleRangeChange,
658
+ hovered: hovered,
659
+ onHover: onHover,
660
+ maxPreview: maxPreview,
661
+ minPreview: minPreview,
662
+ max: max,
663
+ min: min,
664
+ markedDate: markedDate,
665
+ frozenDateRange: frozenDateRange,
666
+ setIsThisMonthAllowed: setIsThisMonthAllowed
667
+ }), withTime && time && /*#__PURE__*/React__default.createElement(TimeInput, {
668
+ value: time,
669
+ onChange: onTimeChange
670
+ })), /*#__PURE__*/React__default.createElement(Footer, {
671
+ onSelect: handleSelect,
672
+ onPreviewChange: handlePreviewChange,
673
+ weekPicker: weekPicker,
674
+ monthPicker: monthPicker,
675
+ onRangeChange: handleRangeChange,
676
+ rangePicker: rangePicker,
677
+ todayText: todayText || contextConfigs.buttons.today,
678
+ thisWeekText: thisWeekText || contextConfigs.buttons.thisWeek,
679
+ thisMonthText: thisMonthText || contextConfigs.buttons.thisMonth,
680
+ customOption: customOption,
681
+ isThisMonthAllowed: isThisMonthAllowed
682
+ }));
683
+ });
684
+
685
+ const DatePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
686
+ let {
687
+ defaultValue,
688
+ onChange,
689
+ className,
690
+ todayText,
691
+ defaultPreview,
692
+ value,
693
+ min,
694
+ max,
695
+ format,
696
+ withTime,
697
+ onTimeChange,
698
+ markedDate,
699
+ customOption,
700
+ frozenDateRange,
701
+ ...restProps
702
+ } = _ref;
703
+ const date = useMemo(() => value && dayjs(value), [value]);
704
+ return /*#__PURE__*/React__default.createElement("ul", _extends({
705
+ ref: ref,
706
+ className: classnames(className, 'datepicker-holder')
707
+ }, restProps), /*#__PURE__*/React__default.createElement(Calendar, {
708
+ max: max,
709
+ min: min,
710
+ frozenDateRange: frozenDateRange,
711
+ defaultValue: defaultValue && dayjs(defaultValue),
712
+ defaultPreview: defaultPreview && dayjs(defaultPreview),
713
+ onChange: date => onChange(date.toDate()),
714
+ time: date,
715
+ value: date,
716
+ format: format,
717
+ withTime: withTime,
718
+ todayText: todayText,
719
+ onTimeChange: onTimeChange,
720
+ markedDate: markedDate,
721
+ customOption: customOption
722
+ }));
723
+ });
724
+ DatePicker.propTypes = {
725
+ /**
726
+ * Initial datepicker value.
727
+ */
728
+ defaultValue: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
729
+ /**
730
+ * Initial value for datepicker preview
731
+ */
732
+ defaultPreview: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
733
+ /**
734
+ * Max specifies the maximum value allowed for datepicker
735
+ */
736
+ max: propTypesExports.instanceOf(dayjs),
737
+ /**
738
+ * Min specifies the minimum value allowed for datepicker
739
+ */
740
+ min: propTypesExports.instanceOf(dayjs),
741
+ /**
742
+ * Fires event when user changes date[icker value
743
+ * (date: Date) => void
744
+ */
745
+ onChange: propTypesExports.func,
746
+ /**
747
+ * Additional classname which will apply to datepicker holder ul element
748
+ */
749
+ className: propTypesExports.string,
750
+ /**
751
+ * Custom text for today button inside footer.
752
+ * Default value is `Today`
753
+ */
754
+ todayText: propTypesExports.string,
755
+ /**
756
+ * MarkedDate specifies the default mark date
757
+ */
758
+ markedDate: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
759
+ /**
760
+ * CustomOption is an object that is used to add a custom button to set a custom date.
761
+ */
762
+ customOption: propTypesExports.shape({
763
+ /**
764
+ * Label of custom button
765
+ */
766
+ label: propTypesExports.string,
767
+ /**
768
+ * Date of custom button
769
+ */
770
+ date: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
771
+ })
772
+ };
773
+
774
+ function WeekPicker(_ref) {
775
+ let {
776
+ onChange,
777
+ rangeStartDefault,
778
+ rangeEndDefault,
779
+ className,
780
+ thisWeekText,
781
+ defaultTimeValues,
782
+ ...restProps
783
+ } = _ref;
784
+ const [rangeStart, setRangeStart] = useState(rangeStartDefault && dayjs(rangeStartDefault));
785
+ const [rangeEnd, setRangeEnd] = useState(rangeEndDefault && dayjs(rangeEndDefault));
786
+ const handleRangeChange = useCallback(_ref2 => {
787
+ let [start, end] = _ref2;
788
+ setRangeStart(start);
789
+ setRangeEnd(end);
790
+ onChange && onChange([start.toDate(), end.toDate()]);
791
+ }, [onChange]);
792
+ return /*#__PURE__*/React__default.createElement("ul", _extends({
793
+ className: classnames(className, 'datepicker-holder')
794
+ }, restProps), /*#__PURE__*/React__default.createElement(Calendar, {
795
+ weekPicker: true,
796
+ rangeStart: rangeStart,
797
+ rangeEnd: rangeEnd,
798
+ onRangeChange: handleRangeChange,
799
+ thisWeekText: thisWeekText,
800
+ defaultTimeValues: defaultTimeValues
801
+ }));
802
+ }
803
+ WeekPicker.propTypes = {
804
+ /**
805
+ * Fires event when user changes datepicker value
806
+ * ([startDate: Date, endDate: Date]) => void
807
+ */
808
+ onChange: propTypesExports.func,
809
+ /**
810
+ * Setting default time value when date range changed
811
+ */
812
+ defaultTimeValues: propTypesExports.arrayOf(propTypesExports.arrayOf(propTypesExports.oneOfType([propTypesExports.number, propTypesExports.string]))),
813
+ /**
814
+ * Initial value for start date
815
+ */
816
+ rangeStartDefault: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
817
+ /**
818
+ * Initial value for end date
819
+ */
820
+ rangeEndDefault: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
821
+ /**
822
+ * Additional classname which will apply to datepicker holder ul element
823
+ */
824
+ className: propTypesExports.string,
825
+ /**
826
+ * Custom text for this week button inside footer.
827
+ * Default value is `This Week`
828
+ */
829
+ thisWeekText: propTypesExports.string
830
+ };
831
+ WeekPicker.defaultProps = {
832
+ defaultTimeValues: [['00', '00', '00'], ['23', '59', '59']],
833
+ onChange: noop
834
+ };
835
+
836
+ function MonthPicker(_ref) {
837
+ let {
838
+ onChange,
839
+ rangeStartDefault,
840
+ rangeEndDefault,
841
+ className,
842
+ thisMonthText,
843
+ defaultTimeValues,
844
+ max,
845
+ min,
846
+ ...restProps
847
+ } = _ref;
848
+ const [rangeStart, setRangeStart] = useState(rangeStartDefault && dayjs(rangeStartDefault));
849
+ const [rangeEnd, setRangeEnd] = useState(rangeEndDefault && dayjs(rangeEndDefault));
850
+ const handleRangeChange = useCallback(_ref2 => {
851
+ let [start, end] = _ref2;
852
+ setRangeStart(start);
853
+ setRangeEnd(end);
854
+ onChange && onChange([start.toDate(), end.toDate()]);
855
+ }, [onChange]);
856
+ return /*#__PURE__*/React__default.createElement("ul", _extends({
857
+ className: classnames(className, 'datepicker-holder')
858
+ }, restProps), /*#__PURE__*/React__default.createElement(Calendar, {
859
+ max: max,
860
+ min: min,
861
+ monthPicker: true,
862
+ rangeStart: rangeStart,
863
+ rangeEnd: rangeEnd,
864
+ onRangeChange: handleRangeChange,
865
+ thisMonthText: thisMonthText,
866
+ defaultTimeValues: defaultTimeValues
867
+ }));
868
+ }
869
+ MonthPicker.propTypes = {
870
+ /**
871
+ * Fires event when user changes datepicker value
872
+ * ([startDate: date endDate: date]) => void
873
+ */
874
+ onChange: propTypesExports.func,
875
+ /**
876
+ * Setting default time value when date range changed
877
+ */
878
+ defaultTimeValues: propTypesExports.arrayOf(propTypesExports.arrayOf(propTypesExports.oneOfType([propTypesExports.number, propTypesExports.string]))),
879
+ /**
880
+ * Initial value for start date
881
+ */
882
+ rangeStartDefault: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
883
+ /**
884
+ * Initial value for end date
885
+ */
886
+ rangeEndDefault: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
887
+ /**
888
+ * Max specifies the maximum value allowed for monthPicker
889
+ */
890
+ max: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
891
+ /**
892
+ * Min specifies the minimum value allowed for monthPicker
893
+ */
894
+ min: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
895
+ /**
896
+ * Additional classname which will apply to datepicker holder ul element
897
+ */
898
+ className: propTypesExports.string,
899
+ /**
900
+ * Custom text for this month button inside footer.
901
+ * Default value is `This Month`
902
+ */
903
+ thisMonthText: propTypesExports.string
904
+ };
905
+ MonthPicker.defaultProps = {
906
+ defaultTimeValues: [['00', '00', '00'], ['23', '59', '59']],
907
+ onChange: noop
908
+ };
909
+
910
+ const getDefaultOptions = function (_ref) {
911
+ let [startTime, endTime] = _ref;
912
+ let actionsTextes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
913
+ return [{
914
+ name: actionsTextes.today,
915
+ start: addTime(dayjs().startOf('d'), startTime),
916
+ end: addTime(dayjs().add(1, 'd').startOf('d'), endTime)
917
+ }, {
918
+ name: actionsTextes.yesterday,
919
+ start: addTime(dayjs().subtract(1, 'd').startOf('d'), startTime),
920
+ end: addTime(dayjs().startOf('d'), endTime)
921
+ }, {
922
+ name: actionsTextes.last7Days,
923
+ start: addTime(dayjs().subtract(6, 'd').startOf('d'), startTime),
924
+ end: addTime(dayjs().endOf('d'), endTime)
925
+ }, {
926
+ name: actionsTextes.last30Days,
927
+ start: addTime(dayjs().subtract(29, 'd').startOf('d'), startTime),
928
+ end: addTime(dayjs().startOf('d'), endTime)
929
+ }, {
930
+ name: actionsTextes.thisMonth,
931
+ start: addTime(dayjs().startOf('M').startOf('d'), startTime),
932
+ end: addTime(dayjs().endOf('M').startOf('d'), endTime)
933
+ }];
934
+ };
935
+ const getOptionIndex = (rangeStart, rangeEnd, options) => options.findIndex(_ref2 => {
936
+ let {
937
+ start,
938
+ end
939
+ } = _ref2;
940
+ return rangeStart && rangeEnd && start.isSame(rangeStart, 'd') && end.isSame(rangeEnd, 'd');
941
+ });
942
+
943
+ function RangeOption(_ref) {
944
+ let {
945
+ start,
946
+ end,
947
+ selected,
948
+ children,
949
+ onClick,
950
+ ...restProps
951
+ } = _ref;
952
+ const handleClick = useCallback(() => onClick && onClick([start, end]), [onClick, start, end]);
953
+ return /*#__PURE__*/React__default.createElement(Button, _extends({
954
+ appearance: selected ? 'default' : 'minimal',
955
+ color: "default",
956
+ flexibility: "full-width",
957
+ onClick: handleClick
958
+ }, restProps), children);
959
+ }
960
+ function RangeOptions(_ref2) {
961
+ let {
962
+ rangeStart,
963
+ rangeEnd,
964
+ onClick,
965
+ customOptions,
966
+ defaultTimeValues,
967
+ customText
968
+ } = _ref2;
969
+ const [contextConfigs] = useDatePickerContext();
970
+ const options = useMemo(() => customOptions ? customOptions.map(_ref3 => {
971
+ let {
972
+ start,
973
+ end,
974
+ ...props
975
+ } = _ref3;
976
+ return {
977
+ ...props,
978
+ start: dayjs.isDayjs(start) ? start : dayjs(start),
979
+ end: dayjs.isDayjs(end) ? end : dayjs(end)
980
+ };
981
+ }) : getDefaultOptions(defaultTimeValues, contextConfigs.actions), [customOptions, contextConfigs]);
982
+ const selectedIndex = useMemo(() => getOptionIndex(rangeStart, rangeEnd, options), [rangeStart, rangeEnd, options]);
983
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, options.map((_ref4, i) => {
984
+ let {
985
+ start,
986
+ end,
987
+ name
988
+ } = _ref4;
989
+ return /*#__PURE__*/React__default.createElement(RangeOption, {
990
+ key: i,
991
+ start: start,
992
+ end: end,
993
+ selected: i === selectedIndex,
994
+ onClick: onClick
995
+ }, name);
996
+ }), /*#__PURE__*/React__default.createElement(RangeOption, {
997
+ className: "pointer-events-none",
998
+ selected: rangeStart && rangeEnd && selectedIndex === -1
999
+ }, customText || contextConfigs.actions.custom));
1000
+ }
1001
+
1002
+ const RangePicker = /*#__PURE__*/forwardRef((_ref, ref) => {
1003
+ let {
1004
+ onChange,
1005
+ onApply,
1006
+ rangeStartDefault,
1007
+ rangeEndDefault,
1008
+ withRangeOptions,
1009
+ withTime,
1010
+ defaultTimeValues,
1011
+ className,
1012
+ todayText,
1013
+ applyText,
1014
+ customText,
1015
+ rangeOptions,
1016
+ max,
1017
+ min,
1018
+ value,
1019
+ withApply,
1020
+ markedDate,
1021
+ frozenDateRange,
1022
+ ...restProps
1023
+ } = _ref;
1024
+ const [contextConfigs] = useDatePickerContext();
1025
+ const [hovered, setHovered] = useState();
1026
+ const [rangeStart, setRangeStart] = useState(() => rangeStartDefault && dayjs(rangeStartDefault));
1027
+ const [rangeEnd, setRangeEnd] = useState(() => rangeEndDefault && dayjs(rangeEndDefault));
1028
+ const [firstPreview, setFirstPreview] = useState(() => rangeStart || dayjs());
1029
+ const [secondPreview, setSecondPreview] = useState(() => rangeEnd ? rangeEnd.isSame(rangeStart, 'M') ? rangeEnd.add(1, 'M') : rangeEnd : dayjs().add(1, 'M'));
1030
+ const setPreviews = useCallback((start, end) => {
1031
+ setFirstPreview(start);
1032
+ setSecondPreview(start.isSame(end, 'M') ? end.add(1, 'M') : end);
1033
+ }, []);
1034
+ const handleRangeChange = useCallback(_ref2 => {
1035
+ let [startDate, endDate] = _ref2;
1036
+ const start = withTime ? startDate : startDate && startDate.startOf('d');
1037
+ const end = withTime ? endDate : endDate && endDate.endOf('d');
1038
+ setRangeStart(start);
1039
+ setRangeEnd(end);
1040
+ start && end && setPreviews(start, end);
1041
+ onChange([start, end]);
1042
+ }, [onChange, setPreviews, withTime]);
1043
+ const handleToday = useCallback(() => {
1044
+ const today = dayjs();
1045
+ handleRangeChange([today.startOf('d'), today.endOf('d')]);
1046
+ }, [handleRangeChange]);
1047
+ const handleApply = useCallback(() => {
1048
+ const diff = dayjsWithPlugins(rangeStart).diff(rangeEnd, 's');
1049
+ const endDate = diff > 0 ? rangeEnd.add(diff, 's') : rangeEnd;
1050
+ onApply && onApply([rangeStart.toDate(), endDate.toDate()]);
1051
+ }, [onApply, rangeStart, rangeEnd]);
1052
+ const handleFirstPreviewChange = useCallback(preview => {
1053
+ setFirstPreview(preview);
1054
+ if (!rangeEnd) {
1055
+ // We must check this after, maybe this will mote cover all cases.
1056
+ setSecondPreview(rangeStart && rangeStart.isAfter(preview) ? rangeStart : preview.add(1, 'M'));
1057
+ }
1058
+ }, [rangeStart, rangeEnd]);
1059
+ const handleSecondPreviewChange = useCallback(preview => {
1060
+ setSecondPreview(preview);
1061
+ if (!rangeEnd) {
1062
+ setFirstPreview(rangeStart || preview.subtract(1, 'M'));
1063
+ }
1064
+ }, [rangeStart, rangeEnd]);
1065
+ useEffect(() => {
1066
+ const startDate = dayjsWithPlugins(value && value[0] || null);
1067
+ const endDate = dayjsWithPlugins(value && value[1] || null);
1068
+ if (startDate.isValid() && endDate.isValid()) {
1069
+ setRangeStart(startDate);
1070
+ setRangeEnd(endDate);
1071
+ setFirstPreview(startDate);
1072
+ setSecondPreview(endDate.isSame(startDate, 'M') ? endDate.add(1, 'M') : endDate);
1073
+ }
1074
+ }, [value]);
1075
+ return /*#__PURE__*/React__default.createElement("ul", _extends({
1076
+ className: classnames('datepicker-holder', 'range-mode', {
1077
+ 'simple-range-mode': !withRangeOptions
1078
+ }),
1079
+ ref: ref
1080
+ }, restProps), /*#__PURE__*/React__default.createElement(Calendar, {
1081
+ onRangeChange: handleRangeChange,
1082
+ defaultTimeValues: defaultTimeValues,
1083
+ className: "date-box-1",
1084
+ rangePicker: true,
1085
+ rangeStart: rangeStart,
1086
+ rangeEnd: rangeEnd,
1087
+ hovered: hovered,
1088
+ onHover: rangeStart ? setHovered : null,
1089
+ onPreviewChange: handleFirstPreviewChange,
1090
+ preview: firstPreview,
1091
+ maxPreview: secondPreview,
1092
+ withTime: withTime,
1093
+ time: rangeStart || dayjs().startOf('d'),
1094
+ onTimeChange: start => handleRangeChange([start, rangeEnd]),
1095
+ max: max,
1096
+ min: min,
1097
+ value: value && value[0],
1098
+ markedDate: markedDate,
1099
+ frozenDateRange: frozenDateRange
1100
+ }), /*#__PURE__*/React__default.createElement(Calendar, {
1101
+ onRangeChange: handleRangeChange,
1102
+ defaultTimeValues: defaultTimeValues,
1103
+ className: "date-box-2",
1104
+ rangePicker: true,
1105
+ rangeStart: rangeStart,
1106
+ rangeEnd: rangeEnd,
1107
+ hovered: hovered,
1108
+ onHover: rangeStart ? setHovered : null,
1109
+ preview: secondPreview,
1110
+ onPreviewChange: handleSecondPreviewChange,
1111
+ minPreview: firstPreview,
1112
+ withTime: withTime,
1113
+ time: rangeEnd || dayjs().startOf('d'),
1114
+ onTimeChange: end => handleRangeChange([rangeStart, end]),
1115
+ max: max,
1116
+ min: min,
1117
+ value: value && value[1],
1118
+ markedDate: markedDate,
1119
+ frozenDateRange: frozenDateRange
1120
+ }), /*#__PURE__*/React__default.createElement("li", {
1121
+ className: classnames('date-actions', {
1122
+ vertical: withRangeOptions,
1123
+ horizontal: !withRangeOptions
1124
+ })
1125
+ }, /*#__PURE__*/React__default.createElement("ul", null, /*#__PURE__*/React__default.createElement("li", null, !withRangeOptions && /*#__PURE__*/React__default.createElement(Button, {
1126
+ color: "default",
1127
+ appearance: "minimal",
1128
+ flexibility: "default",
1129
+ onClick: handleToday
1130
+ }, todayText || contextConfigs.buttons.today), withRangeOptions && /*#__PURE__*/React__default.createElement(RangeOptions, {
1131
+ rangeStart: rangeStart,
1132
+ defaultTimeValues: defaultTimeValues,
1133
+ rangeEnd: rangeEnd,
1134
+ onClick: handleRangeChange,
1135
+ customText: customText,
1136
+ customOptions: rangeOptions
1137
+ })), /*#__PURE__*/React__default.createElement("li", null, withApply && /*#__PURE__*/React__default.createElement(Button, {
1138
+ disabled: !rangeStart || !rangeEnd || value && rangeStart.isSame(value[0]) && rangeEnd.isSame(value[1]),
1139
+ appearance: "outline",
1140
+ flexibility: withRangeOptions ? 'full-width' : 'default',
1141
+ onClick: handleApply
1142
+ }, applyText || contextConfigs.buttons.apply)))));
1143
+ });
1144
+ RangePicker.propTypes = {
1145
+ /**
1146
+ * Fires event when user changes date range picker value.
1147
+ * ([startDate: Date, EndDate: Date]) => void
1148
+ */
1149
+ onChange: propTypesExports.func,
1150
+ /**
1151
+ * Fires event when user clicks on apply button
1152
+ * ([startDate:Date, endDate: Date]) => void
1153
+ */
1154
+ onApply: propTypesExports.func,
1155
+ /**
1156
+ * Initial start date value
1157
+ */
1158
+ rangeStartDefault: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
1159
+ /**
1160
+ * Initial end date value
1161
+ */
1162
+ rangeEndDefault: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number]),
1163
+ /**
1164
+ * Max specifies the maximum value allowed for datepicker
1165
+ */
1166
+ max: propTypesExports.instanceOf(dayjs),
1167
+ /**
1168
+ * Min specifies the minimum value allowed for datepicker
1169
+ */
1170
+ min: propTypesExports.instanceOf(dayjs),
1171
+ /**
1172
+ * Removes Today button from left bottom corner, and
1173
+ * Displays buttons in the bottom of the calendar
1174
+ */
1175
+ withRangeOptions: propTypesExports.bool,
1176
+ withTime: propTypesExports.bool,
1177
+ /**
1178
+ * Additional className which will apply
1179
+ * To date range picker wrapper ul element
1180
+ */
1181
+ className: propTypesExports.string,
1182
+ /**
1183
+ * Custom today button text
1184
+ */
1185
+ todayText: propTypesExports.string,
1186
+ /**
1187
+ * Custom apply button text
1188
+ */
1189
+ applyText: propTypesExports.string,
1190
+ /**
1191
+ * Custom text for range options
1192
+ */
1193
+ customText: propTypesExports.string,
1194
+ /**
1195
+ * Setting default time value when date range changed
1196
+ */
1197
+ defaultTimeValues: propTypesExports.arrayOf(propTypesExports.arrayOf(propTypesExports.oneOfType([propTypesExports.number, propTypesExports.string]))),
1198
+ /**
1199
+ * RangeOption will render buttons with custom range options
1200
+ */
1201
+ rangeOptions: propTypesExports.arrayOf(propTypesExports.shape({
1202
+ name: propTypesExports.string,
1203
+ start: propTypesExports.instanceOf(dayjs),
1204
+ end: propTypesExports.instanceOf(dayjs)
1205
+ })),
1206
+ /**
1207
+ * Ability to show/hide the apply button
1208
+ * default: true
1209
+ */
1210
+ withApply: propTypesExports.bool,
1211
+ /**
1212
+ * MarkedDate specifies the default mark date
1213
+ */
1214
+ markedDate: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
1215
+ };
1216
+ RangePicker.defaultProps = {
1217
+ withRangeOptions: false,
1218
+ withTime: false,
1219
+ withApply: true,
1220
+ defaultTimeValues: [['00', '00', '00'], ['23', '59', '59']],
1221
+ onChange: noop
1222
+ };
1223
+
1224
+ DatePicker.WeekPicker = WeekPicker;
1225
+ DatePicker.MonthPicker = MonthPicker;
1226
+ DatePicker.RangePicker = RangePicker;
1227
+ DatePicker.Context = Context;
1228
+ DatePicker.Provider = Provider;
1229
+ DatePicker.useDatePickerContext = useDatePickerContext;
1230
+
1231
+ export { DatePicker as default };