@geneui/components 3.0.0-next-06dadf3-29102024 → 3.0.0-next-48d0ef7-31102024

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