@basic-ui/core 0.0.52 → 0.0.53

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 (408) hide show
  1. package/README.md +3 -3
  2. package/build/cjs/index.js +105 -89
  3. package/build/cjs/index.js.map +1 -1
  4. package/build/esm/Accordion/Accordion.d.ts +9 -9
  5. package/build/esm/Accordion/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/AccordionBody.d.ts +6 -6
  7. package/build/esm/Accordion/AccordionBody.js.map +1 -1
  8. package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
  9. package/build/esm/Accordion/AccordionHeader.js.map +1 -1
  10. package/build/esm/Accordion/AccordionItem.d.ts +9 -9
  11. package/build/esm/Accordion/AccordionItem.js.map +1 -1
  12. package/build/esm/Accordion/context.d.ts +19 -19
  13. package/build/esm/Accordion/context.js.map +1 -1
  14. package/build/esm/Accordion/index.d.ts +4 -4
  15. package/build/esm/Accordion/index.js.map +1 -1
  16. package/build/esm/Accordion/scopeQuery.d.ts +2 -2
  17. package/build/esm/Accordion/scopeQuery.js.map +1 -1
  18. package/build/esm/Carousel/Carousel.d.ts +9 -0
  19. package/build/esm/Carousel/Carousel.js +38 -0
  20. package/build/esm/Carousel/Carousel.js.map +1 -0
  21. package/build/esm/Carousel/Fader.d.ts +14 -0
  22. package/build/esm/Carousel/Fader.js +76 -0
  23. package/build/esm/Carousel/Fader.js.map +1 -0
  24. package/build/esm/Carousel/FaderItem.d.ts +5 -0
  25. package/build/esm/Carousel/FaderItem.js +16 -0
  26. package/build/esm/Carousel/FaderItem.js.map +1 -0
  27. package/build/esm/Carousel/Preloader.d.ts +7 -0
  28. package/build/esm/Carousel/Preloader.js +70 -0
  29. package/build/esm/Carousel/Preloader.js.map +1 -0
  30. package/build/esm/Carousel/Slider.d.ts +14 -0
  31. package/build/esm/Carousel/Slider.js +212 -0
  32. package/build/esm/Carousel/Slider.js.map +1 -0
  33. package/build/esm/Carousel/SliderItem.d.ts +12 -0
  34. package/build/esm/Carousel/SliderItem.js +41 -0
  35. package/build/esm/Carousel/SliderItem.js.map +1 -0
  36. package/build/esm/Carousel/context.d.ts +10 -0
  37. package/build/esm/Carousel/context.js +8 -0
  38. package/build/esm/Carousel/context.js.map +1 -0
  39. package/build/esm/Carousel/getSliderParams.d.ts +9 -0
  40. package/build/esm/Carousel/getSliderParams.js +85 -0
  41. package/build/esm/Carousel/getSliderParams.js.map +1 -0
  42. package/build/esm/Carousel/index.d.ts +7 -0
  43. package/build/esm/Carousel/index.js +8 -0
  44. package/build/esm/Carousel/index.js.map +1 -0
  45. package/build/esm/Carousel/useCarouselGestures.d.ts +30 -0
  46. package/build/esm/Carousel/useCarouselGestures.js +33 -0
  47. package/build/esm/Carousel/useCarouselGestures.js.map +1 -0
  48. package/build/esm/CheckBox/CheckBox.d.ts +7 -7
  49. package/build/esm/CheckBox/CheckBox.js.map +1 -1
  50. package/build/esm/CheckBox/index.d.ts +1 -1
  51. package/build/esm/CheckBox/index.js.map +1 -1
  52. package/build/esm/ComboBox/Combobox.d.ts +18 -18
  53. package/build/esm/ComboBox/Combobox.js.map +1 -1
  54. package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
  55. package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
  56. package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
  57. package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
  58. package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
  59. package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
  60. package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
  61. package/build/esm/ComboBox/ComboboxList.js.map +1 -1
  62. package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
  63. package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
  64. package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
  65. package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
  66. package/build/esm/ComboBox/cities.d.ts +5 -5
  67. package/build/esm/ComboBox/cities.js.map +1 -1
  68. package/build/esm/ComboBox/context.d.ts +30 -30
  69. package/build/esm/ComboBox/context.js.map +1 -1
  70. package/build/esm/ComboBox/hooks.d.ts +37 -37
  71. package/build/esm/ComboBox/hooks.js.map +1 -1
  72. package/build/esm/ComboBox/index.d.ts +8 -8
  73. package/build/esm/ComboBox/index.js.map +1 -1
  74. package/build/esm/ComboBox/makeHash.d.ts +1 -1
  75. package/build/esm/ComboBox/makeHash.js.map +1 -1
  76. package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
  77. package/build/esm/ComboBox/scopeQuery.js.map +1 -1
  78. package/build/esm/DatePicker/DatePicker.d.ts +24 -0
  79. package/build/esm/DatePicker/DatePicker.js +101 -0
  80. package/build/esm/DatePicker/DatePicker.js.map +1 -0
  81. package/build/esm/DatePicker/DatePickerSelect.d.ts +8 -0
  82. package/build/esm/DatePicker/DatePickerSelect.js +201 -0
  83. package/build/esm/DatePicker/DatePickerSelect.js.map +1 -0
  84. package/build/esm/DatePicker/RangeDatePicker.d.ts +28 -0
  85. package/build/esm/DatePicker/RangeDatePicker.js +94 -0
  86. package/build/esm/DatePicker/RangeDatePicker.js.map +1 -0
  87. package/build/esm/DatePicker/adjustDates.d.ts +4 -0
  88. package/build/esm/DatePicker/adjustDates.js +18 -0
  89. package/build/esm/DatePicker/adjustDates.js.map +1 -0
  90. package/build/esm/DatePicker/contexts.d.ts +31 -0
  91. package/build/esm/DatePicker/contexts.js +15 -0
  92. package/build/esm/DatePicker/contexts.js.map +1 -0
  93. package/build/esm/DatePicker/dateTypes.d.ts +2 -0
  94. package/build/esm/DatePicker/dateTypes.js +2 -0
  95. package/build/esm/DatePicker/dateTypes.js.map +1 -0
  96. package/build/esm/DatePicker/hooks.d.ts +36 -0
  97. package/build/esm/DatePicker/hooks.js +98 -0
  98. package/build/esm/DatePicker/hooks.js.map +1 -0
  99. package/build/esm/DatePicker/index.d.ts +5 -0
  100. package/build/esm/DatePicker/index.js +6 -0
  101. package/build/esm/DatePicker/index.js.map +1 -0
  102. package/build/esm/FocusLock/FocusLock.d.ts +9 -9
  103. package/build/esm/FocusLock/FocusLock.js.map +1 -1
  104. package/build/esm/FocusLock/index.d.ts +1 -1
  105. package/build/esm/FocusLock/index.js.map +1 -1
  106. package/build/esm/FocusLock/tabUtils.d.ts +3 -3
  107. package/build/esm/FocusLock/tabUtils.js.map +1 -1
  108. package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
  109. package/build/esm/FocusLock/useFocusLock.js.map +1 -1
  110. package/build/esm/List/List.d.ts +7 -7
  111. package/build/esm/List/List.js.map +1 -1
  112. package/build/esm/List/ListItem.d.ts +7 -7
  113. package/build/esm/List/ListItem.js.map +1 -1
  114. package/build/esm/List/context.d.ts +4 -4
  115. package/build/esm/List/context.js.map +1 -1
  116. package/build/esm/List/index.d.ts +2 -2
  117. package/build/esm/List/index.js.map +1 -1
  118. package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
  119. package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
  120. package/build/esm/Menu/Menu.d.ts +10 -10
  121. package/build/esm/Menu/Menu.js.map +1 -1
  122. package/build/esm/Menu/MenuButton.d.ts +11 -11
  123. package/build/esm/Menu/MenuButton.js.map +1 -1
  124. package/build/esm/Menu/MenuItem.d.ts +8 -8
  125. package/build/esm/Menu/MenuItem.js.map +1 -1
  126. package/build/esm/Menu/MenuList.d.ts +7 -7
  127. package/build/esm/Menu/MenuList.js.map +1 -1
  128. package/build/esm/Menu/MenuPopover.d.ts +8 -8
  129. package/build/esm/Menu/MenuPopover.js.map +1 -1
  130. package/build/esm/Menu/context.d.ts +25 -25
  131. package/build/esm/Menu/context.js.map +1 -1
  132. package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
  133. package/build/esm/Menu/fixtures/countryList.js.map +1 -1
  134. package/build/esm/Menu/index.d.ts +6 -6
  135. package/build/esm/Menu/index.js.map +1 -1
  136. package/build/esm/Menu/scope.d.ts +1 -1
  137. package/build/esm/Menu/scope.js.map +1 -1
  138. package/build/esm/Modal/Modal.d.ts +9 -9
  139. package/build/esm/Modal/Modal.js.map +1 -1
  140. package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
  141. package/build/esm/Modal/ModalBackdrop.js.map +1 -1
  142. package/build/esm/Modal/index.d.ts +2 -2
  143. package/build/esm/Modal/index.js.map +1 -1
  144. package/build/esm/Popper/Popper.d.ts +35 -35
  145. package/build/esm/Popper/Popper.js.map +1 -1
  146. package/build/esm/Popper/PopperArrow.d.ts +6 -6
  147. package/build/esm/Popper/PopperArrow.js.map +1 -1
  148. package/build/esm/Popper/context.d.ts +6 -6
  149. package/build/esm/Popper/context.js.map +1 -1
  150. package/build/esm/Popper/index.d.ts +3 -3
  151. package/build/esm/Popper/index.js.map +1 -1
  152. package/build/esm/Portal/Portal.d.ts +7 -6
  153. package/build/esm/Portal/Portal.js +6 -3
  154. package/build/esm/Portal/Portal.js.map +1 -1
  155. package/build/esm/Portal/PortalSelectorProvider.d.ts +8 -0
  156. package/build/esm/Portal/PortalSelectorProvider.js +13 -0
  157. package/build/esm/Portal/PortalSelectorProvider.js.map +1 -0
  158. package/build/esm/Portal/index.d.ts +2 -1
  159. package/build/esm/Portal/index.js +1 -0
  160. package/build/esm/Portal/index.js.map +1 -1
  161. package/build/esm/RadioButton/RadioButton.d.ts +10 -10
  162. package/build/esm/RadioButton/RadioButton.js.map +1 -1
  163. package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
  164. package/build/esm/RadioButton/RadioGroup.js.map +1 -1
  165. package/build/esm/RadioButton/context.d.ts +9 -9
  166. package/build/esm/RadioButton/context.js.map +1 -1
  167. package/build/esm/RadioButton/index.d.ts +2 -2
  168. package/build/esm/RadioButton/index.js.map +1 -1
  169. package/build/esm/SkipNav/SkipNav.d.ts +7 -7
  170. package/build/esm/SkipNav/SkipNav.js.map +1 -1
  171. package/build/esm/SkipNav/index.d.ts +1 -1
  172. package/build/esm/SkipNav/index.js.map +1 -1
  173. package/build/esm/Slider/Slider.d.ts +197 -197
  174. package/build/esm/Slider/Slider.js +82 -82
  175. package/build/esm/Slider/Slider.js.map +1 -1
  176. package/build/esm/Slider/index.d.ts +1 -1
  177. package/build/esm/Slider/index.js.map +1 -1
  178. package/build/esm/Spinner/Spinner.d.ts +12 -12
  179. package/build/esm/Spinner/Spinner.js.map +1 -1
  180. package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
  181. package/build/esm/Spinner/SpinnerButton.js.map +1 -1
  182. package/build/esm/Spinner/context.d.ts +12 -12
  183. package/build/esm/Spinner/context.js.map +1 -1
  184. package/build/esm/Spinner/index.d.ts +2 -2
  185. package/build/esm/Spinner/index.js.map +1 -1
  186. package/build/esm/Tabs/Tab.d.ts +7 -7
  187. package/build/esm/Tabs/Tab.js.map +1 -1
  188. package/build/esm/Tabs/TabList.d.ts +9 -9
  189. package/build/esm/Tabs/TabList.js.map +1 -1
  190. package/build/esm/Tabs/TabPanel.d.ts +8 -8
  191. package/build/esm/Tabs/TabPanel.js.map +1 -1
  192. package/build/esm/Tabs/TabPanels.d.ts +8 -8
  193. package/build/esm/Tabs/TabPanels.js.map +1 -1
  194. package/build/esm/Tabs/Tabs.d.ts +10 -10
  195. package/build/esm/Tabs/Tabs.js.map +1 -1
  196. package/build/esm/Tabs/context.d.ts +17 -17
  197. package/build/esm/Tabs/context.js.map +1 -1
  198. package/build/esm/Tabs/index.d.ts +5 -5
  199. package/build/esm/Tabs/index.js.map +1 -1
  200. package/build/esm/Tabs/scopeQuery.d.ts +1 -1
  201. package/build/esm/Tabs/scopeQuery.js.map +1 -1
  202. package/build/esm/Tooltip/Tooltip.d.ts +10 -10
  203. package/build/esm/Tooltip/Tooltip.js.map +1 -1
  204. package/build/esm/Tooltip/index.d.ts +1 -1
  205. package/build/esm/Tooltip/index.js.map +1 -1
  206. package/build/esm/Tooltip/stateMachine.d.ts +28 -28
  207. package/build/esm/Tooltip/stateMachine.js.map +1 -1
  208. package/build/esm/Tooltip/useTooltip.d.ts +10 -10
  209. package/build/esm/Tooltip/useTooltip.js.map +1 -1
  210. package/build/esm/hooks/index.d.ts +13 -13
  211. package/build/esm/hooks/index.js.map +1 -1
  212. package/build/esm/hooks/useAutoFocus.d.ts +2 -2
  213. package/build/esm/hooks/useAutoFocus.js.map +1 -1
  214. package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
  215. package/build/esm/hooks/useChildrenCounter.js.map +1 -1
  216. package/build/esm/hooks/useControlledState.d.ts +3 -3
  217. package/build/esm/hooks/useFocusReturn.d.ts +2 -2
  218. package/build/esm/hooks/useFocusReturn.js.map +1 -1
  219. package/build/esm/hooks/useFocusState.d.ts +11 -11
  220. package/build/esm/hooks/useFocusState.js.map +1 -1
  221. package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
  222. package/build/esm/hooks/useGestureHandlers.js.map +1 -1
  223. package/build/esm/hooks/useId.d.ts +1 -0
  224. package/build/esm/hooks/useId.js +25 -0
  225. package/build/esm/hooks/useId.js.map +1 -0
  226. package/build/esm/hooks/useMeasure.d.ts +7 -7
  227. package/build/esm/hooks/useMeasure.js.map +1 -1
  228. package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
  229. package/build/esm/hooks/useOnClickOutside.js.map +1 -1
  230. package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
  231. package/build/esm/hooks/useOnKeyDown.js.map +1 -1
  232. package/build/esm/hooks/useReducerMachine.d.ts +24 -24
  233. package/build/esm/hooks/useReducerMachine.js.map +1 -1
  234. package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
  235. package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
  236. package/build/esm/hooks/useScope.d.ts +11 -11
  237. package/build/esm/hooks/useScope.js.map +1 -1
  238. package/build/esm/hooks/useThrottle.d.ts +1 -1
  239. package/build/esm/hooks/useThrottle.js.map +1 -1
  240. package/build/esm/index.d.ts +15 -15
  241. package/build/esm/index.js.map +1 -1
  242. package/build/esm/utils/assign-ref.d.ts +3 -3
  243. package/build/esm/utils/assign-ref.js.map +1 -1
  244. package/build/esm/utils/assignRef.d.ts +3 -0
  245. package/build/esm/utils/assignRef.js +25 -0
  246. package/build/esm/utils/assignRef.js.map +1 -0
  247. package/build/esm/utils/can-use-dom.d.ts +1 -1
  248. package/build/esm/utils/can-use-dom.js.map +1 -1
  249. package/build/esm/utils/clamp.d.ts +1 -1
  250. package/build/esm/utils/clamp.js.map +1 -1
  251. package/build/esm/utils/context.d.ts +7 -7
  252. package/build/esm/utils/context.js.map +1 -1
  253. package/build/esm/utils/create-subscription.d.ts +4 -4
  254. package/build/esm/utils/create-subscription.js.map +1 -1
  255. package/build/esm/utils/get-circular-index.d.ts +1 -1
  256. package/build/esm/utils/get-circular-index.js.map +1 -1
  257. package/build/esm/utils/getCircularIndex.d.ts +1 -0
  258. package/build/esm/utils/getCircularIndex.js +8 -0
  259. package/build/esm/utils/getCircularIndex.js.map +1 -0
  260. package/build/esm/utils/index.d.ts +10 -10
  261. package/build/esm/utils/index.js.map +1 -1
  262. package/build/esm/utils/is-right-click.d.ts +6 -6
  263. package/build/esm/utils/is-right-click.js +4 -4
  264. package/build/esm/utils/is-right-click.js.map +1 -1
  265. package/build/esm/utils/owner-document.d.ts +7 -7
  266. package/build/esm/utils/owner-document.js +5 -5
  267. package/build/esm/utils/owner-document.js.map +1 -1
  268. package/build/esm/utils/polymorphic.d.ts +39 -39
  269. package/build/esm/utils/polymorphic.js.map +1 -1
  270. package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
  271. package/build/esm/utils/rubber-band-clamp.js.map +1 -1
  272. package/build/esm/utils/rubberBandClamp.d.ts +2 -0
  273. package/build/esm/utils/rubberBandClamp.js +20 -0
  274. package/build/esm/utils/rubberBandClamp.js.map +1 -0
  275. package/build/esm/utils/use-stable-callback.d.ts +16 -16
  276. package/build/esm/utils/use-stable-callback.js +16 -16
  277. package/build/esm/utils/use-stable-callback.js.map +1 -1
  278. package/build/esm/utils/wrap-event.d.ts +3 -3
  279. package/build/esm/utils/wrap-event.js.map +1 -1
  280. package/build/esm/utils/wrapEvent.d.ts +3 -0
  281. package/build/esm/utils/wrapEvent.js +16 -0
  282. package/build/esm/utils/wrapEvent.js.map +1 -0
  283. package/build/tsconfig-build.tsbuildinfo +1 -1
  284. package/build/tsconfig.tsbuildinfo +7270 -0
  285. package/package.json +2 -2
  286. package/src/Accordion/Accordion.story.tsx +74 -74
  287. package/src/Accordion/Accordion.tsx +59 -59
  288. package/src/Accordion/AccordionBody.tsx +52 -52
  289. package/src/Accordion/AccordionHeader.tsx +167 -167
  290. package/src/Accordion/AccordionItem.tsx +50 -50
  291. package/src/Accordion/context.ts +37 -37
  292. package/src/Accordion/index.ts +4 -4
  293. package/src/Accordion/scopeQuery.ts +7 -7
  294. package/src/Accordion/styles.css +21 -21
  295. package/src/CheckBox/CheckBox.tsx +41 -41
  296. package/src/CheckBox/index.ts +1 -1
  297. package/src/ComboBox/ComboBox.story.tsx +120 -120
  298. package/src/ComboBox/Combobox.tsx +148 -148
  299. package/src/ComboBox/ComboboxButton.tsx +61 -61
  300. package/src/ComboBox/ComboboxInput.tsx +187 -187
  301. package/src/ComboBox/ComboboxLabel.tsx +33 -33
  302. package/src/ComboBox/ComboboxList.tsx +47 -47
  303. package/src/ComboBox/ComboboxOption.tsx +111 -111
  304. package/src/ComboBox/ComboboxPopover.tsx +64 -64
  305. package/src/ComboBox/cities.ts +23194 -23194
  306. package/src/ComboBox/context.ts +35 -35
  307. package/src/ComboBox/hooks.tsx +451 -451
  308. package/src/ComboBox/index.ts +8 -8
  309. package/src/ComboBox/makeHash.ts +19 -19
  310. package/src/ComboBox/scopeQuery.ts +6 -6
  311. package/src/ComboBox/styles.css +32 -32
  312. package/src/FocusLock/FocusLock.tsx +66 -66
  313. package/src/FocusLock/index.ts +1 -1
  314. package/src/FocusLock/tabUtils.ts +40 -40
  315. package/src/FocusLock/useFocusLock.ts +56 -56
  316. package/src/List/List.story.tsx +18 -18
  317. package/src/List/List.tsx +17 -17
  318. package/src/List/ListItem.tsx +23 -23
  319. package/src/List/context.ts +19 -19
  320. package/src/List/index.ts +2 -2
  321. package/src/Menu/ContextMenu.story.tsx +73 -73
  322. package/src/Menu/ContextMenuTrigger.tsx +76 -76
  323. package/src/Menu/Menu.story.tsx +160 -160
  324. package/src/Menu/Menu.tsx +83 -83
  325. package/src/Menu/MenuButton.tsx +83 -83
  326. package/src/Menu/MenuComplex.story.tsx +58 -58
  327. package/src/Menu/MenuItem.tsx +88 -88
  328. package/src/Menu/MenuList.tsx +254 -254
  329. package/src/Menu/MenuPopover.tsx +35 -35
  330. package/src/Menu/context.ts +44 -44
  331. package/src/Menu/fixtures/countryList.ts +198 -198
  332. package/src/Menu/index.ts +6 -6
  333. package/src/Menu/scope.ts +7 -7
  334. package/src/Menu/styles.css +42 -42
  335. package/src/Modal/Modal.story.tsx +258 -258
  336. package/src/Modal/Modal.tsx +48 -48
  337. package/src/Modal/ModalBackdrop.tsx +78 -78
  338. package/src/Modal/NavDrawer.story.tsx +158 -158
  339. package/src/Modal/index.ts +2 -2
  340. package/src/Modal/styles.css +46 -46
  341. package/src/Popper/Popper.story.tsx +263 -263
  342. package/src/Popper/Popper.tsx +154 -154
  343. package/src/Popper/PopperArrow.tsx +35 -35
  344. package/src/Popper/context.ts +10 -10
  345. package/src/Popper/index.ts +3 -3
  346. package/src/Popper/styles.css +60 -60
  347. package/src/Portal/Portal.tsx +31 -20
  348. package/src/Portal/PortalSelectorProvider.tsx +24 -0
  349. package/src/Portal/index.ts +6 -1
  350. package/src/RadioButton/RadioButton.story.tsx +77 -77
  351. package/src/RadioButton/RadioButton.tsx +55 -55
  352. package/src/RadioButton/RadioGroup.tsx +60 -60
  353. package/src/RadioButton/context.ts +17 -17
  354. package/src/RadioButton/index.ts +2 -2
  355. package/src/SkipNav/SkipNav.tsx +16 -16
  356. package/src/SkipNav/index.tsx +1 -1
  357. package/src/Slider/Slider.story.tsx +45 -45
  358. package/src/Slider/Slider.tsx +1120 -1120
  359. package/src/Slider/index.ts +1 -1
  360. package/src/Slider/styles.css +131 -131
  361. package/src/Spinner/Spinner.story.tsx +31 -31
  362. package/src/Spinner/Spinner.tsx +117 -117
  363. package/src/Spinner/SpinnerButton.tsx +54 -54
  364. package/src/Spinner/context.ts +20 -20
  365. package/src/Spinner/index.ts +2 -2
  366. package/src/Spinner/styles.css +23 -23
  367. package/src/Tabs/Tab.story.tsx +80 -80
  368. package/src/Tabs/Tab.tsx +136 -136
  369. package/src/Tabs/TabList.tsx +71 -71
  370. package/src/Tabs/TabPanel.tsx +53 -53
  371. package/src/Tabs/TabPanels.tsx +30 -30
  372. package/src/Tabs/Tabs.tsx +46 -46
  373. package/src/Tabs/context.ts +30 -30
  374. package/src/Tabs/index.tsx +5 -5
  375. package/src/Tabs/scopeQuery.ts +6 -6
  376. package/src/Tooltip/Tooltip.story.tsx +61 -61
  377. package/src/Tooltip/Tooltip.tsx +50 -50
  378. package/src/Tooltip/index.ts +1 -1
  379. package/src/Tooltip/stateMachine.ts +192 -192
  380. package/src/Tooltip/styles.css +17 -17
  381. package/src/Tooltip/useTooltip.ts +136 -136
  382. package/src/hooks/index.ts +13 -13
  383. package/src/hooks/useAutoFocus.ts +22 -22
  384. package/src/hooks/useChildrenCounter.ts +51 -51
  385. package/src/hooks/useFocusReturn.ts +43 -43
  386. package/src/hooks/useFocusState.ts +30 -30
  387. package/src/hooks/useGestureHandlers.ts +286 -286
  388. package/src/hooks/useMeasure.ts +33 -33
  389. package/src/hooks/useOnClickOutside.ts +32 -32
  390. package/src/hooks/useOnKeyDown.ts +19 -19
  391. package/src/hooks/useReducerMachine.ts +60 -60
  392. package/src/hooks/useRemoveBodyScroll.ts +39 -39
  393. package/src/hooks/useScope.ts +52 -52
  394. package/src/hooks/useThrottle.ts +19 -19
  395. package/src/index.ts +20 -20
  396. package/src/utils/assign-ref.ts +27 -27
  397. package/src/utils/can-use-dom.ts +7 -7
  398. package/src/utils/clamp.ts +3 -3
  399. package/src/utils/context.tsx +48 -48
  400. package/src/utils/create-subscription.ts +16 -16
  401. package/src/utils/get-circular-index.ts +7 -7
  402. package/src/utils/index.ts +10 -10
  403. package/src/utils/is-right-click.ts +14 -14
  404. package/src/utils/owner-document.ts +13 -13
  405. package/src/utils/polymorphic.ts +78 -78
  406. package/src/utils/rubber-band-clamp.ts +25 -25
  407. package/src/utils/use-stable-callback.ts +58 -58
  408. package/src/utils/wrap-event.ts +22 -22
@@ -0,0 +1,201 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ import React, { forwardRef, memo } from 'react';
5
+ import { wrapEvent } from '../utils/wrapEvent';
6
+ import { useInnerFocus, SET_DATE } from './hooks';
7
+ import { useDatePickerContext } from './contexts';
8
+ import { NAVIGATE } from '../ComboBox/hooks';
9
+ import { differenceInCalendarMonths, addMonths, getDaysInMonth, setDate } from 'date-fns';
10
+ var MonthYearOptions = memo(function (_ref) {
11
+ var minDate = _ref.minDate,
12
+ maxDate = _ref.maxDate,
13
+ monthNames = _ref.monthNames,
14
+ emptyOption = _ref.emptyOption;
15
+ var ret = [/*#__PURE__*/React.createElement("option", {
16
+ key: 'empty',
17
+ value: "",
18
+ disabled: true
19
+ }, emptyOption)];
20
+ var diff = differenceInCalendarMonths(maxDate, minDate);
21
+
22
+ for (var i = 0; i <= diff; i++) {
23
+ var date = addMonths(minDate, i);
24
+ var year = date.getFullYear();
25
+ var month = date.getMonth();
26
+ ret.push( /*#__PURE__*/React.createElement("option", {
27
+ key: "".concat(year, "_").concat(month),
28
+ value: "".concat(year, "-").concat(month)
29
+ }, monthNames[month], " ", year));
30
+ }
31
+
32
+ return /*#__PURE__*/React.createElement(React.Fragment, null, ret);
33
+ });
34
+ var DayOptions = memo(function (_ref2) {
35
+ var _ref2$date = _ref2.date,
36
+ date = _ref2$date === void 0 ? new Date(0) : _ref2$date,
37
+ dayNames = _ref2.dayNames,
38
+ minDate = _ref2.minDate,
39
+ emptyOption = _ref2.emptyOption;
40
+
41
+ if (!date) {
42
+ return null;
43
+ }
44
+
45
+ var ret = [/*#__PURE__*/React.createElement("option", {
46
+ key: 'empty',
47
+ value: "",
48
+ disabled: true
49
+ }, emptyOption)];
50
+
51
+ for (var day = 1; day <= getDaysInMonth(date); day++) {
52
+ var newDate = setDate(date, day);
53
+ ret.push( /*#__PURE__*/React.createElement("option", {
54
+ key: "day_".concat(day),
55
+ value: "".concat(day),
56
+ disabled: newDate.valueOf() < minDate.valueOf()
57
+ }, (newDate.getDay(), dayNames[newDate.getDay()]), " ", day));
58
+ }
59
+
60
+ return /*#__PURE__*/React.createElement(React.Fragment, null, ret);
61
+ });
62
+ export var DatePickerSelect = forwardRef(function DatePicker(_ref3, ref) {
63
+ var _ref3$as = _ref3.as,
64
+ Comp = _ref3$as === void 0 ? 'select' : _ref3$as,
65
+ type = _ref3.type,
66
+ onFocus = _ref3.onFocus,
67
+ onBlur = _ref3.onBlur,
68
+ onChange = _ref3.onChange,
69
+ children = _ref3.children,
70
+ _ref3$emptyOption = _ref3.emptyOption,
71
+ emptyOption = _ref3$emptyOption === void 0 ? '' : _ref3$emptyOption,
72
+ rest = _objectWithoutProperties(_ref3, ["as", "type", "onFocus", "onBlur", "onChange", "children", "emptyOption"]);
73
+
74
+ var _useDatePickerContext = useDatePickerContext(),
75
+ minDate = _useDatePickerContext.minDate,
76
+ maxDate = _useDatePickerContext.maxDate,
77
+ monthNames = _useDatePickerContext.monthNames,
78
+ onChangeRef = _useDatePickerContext.onChangeRef,
79
+ dayNames = _useDatePickerContext.dayNames,
80
+ dispatch = _useDatePickerContext.dispatch,
81
+ controlledValueRef = _useDatePickerContext.controlledValueRef,
82
+ data = _useDatePickerContext.state;
83
+
84
+ var _useInnerFocus = useInnerFocus(),
85
+ handleFocus = _useInnerFocus.handleFocus,
86
+ handleBlur = _useInnerFocus.handleBlur;
87
+
88
+ var stateSelectedDate = data.selectedDate;
89
+ var year = data.navigationYear,
90
+ month = data.navigationMonth,
91
+ day = data.navigationDay;
92
+ var selectedDate = controlledValueRef.current !== undefined ? controlledValueRef.current : stateSelectedDate;
93
+
94
+ var handleChange = function handleChange(e) {
95
+ var nextState = {
96
+ year: year,
97
+ month: month,
98
+ day: day
99
+ };
100
+
101
+ switch (type) {
102
+ case 'month_year':
103
+ {
104
+ nextState.year = -1;
105
+ nextState.month = -1;
106
+ nextState.day = -1;
107
+
108
+ if (e.target.value) {
109
+ var _e$target$value$split = e.target.value.split('-'),
110
+ _e$target$value$split2 = _slicedToArray(_e$target$value$split, 2),
111
+ yearStr = _e$target$value$split2[0],
112
+ monthStr = _e$target$value$split2[1];
113
+
114
+ nextState.year = parseInt(yearStr, 10);
115
+ nextState.month = parseInt(monthStr, 10);
116
+ nextState.day = -1;
117
+ }
118
+
119
+ dispatch(_extends({
120
+ type: NAVIGATE
121
+ }, nextState));
122
+ break;
123
+ }
124
+
125
+ case 'day':
126
+ {
127
+ nextState.day = -1;
128
+
129
+ if (e.target.value) {
130
+ nextState.day = parseInt(e.target.value, 10);
131
+ }
132
+
133
+ var nextDate = undefined;
134
+
135
+ if (nextState.day !== -1) {
136
+ if (nextState.year >= 0 && nextState.month >= 0) {
137
+ nextDate = new Date(Date.UTC(nextState.year, nextState.month, nextState.day));
138
+ } else if (selectedDate !== null) {
139
+ nextDate = new Date(Date.UTC(selectedDate.getFullYear(), selectedDate.getMonth(), nextState.day));
140
+ }
141
+ }
142
+
143
+ if (nextDate !== undefined) {
144
+ onChangeRef.current && onChangeRef.current(nextDate);
145
+ dispatch({
146
+ type: SET_DATE,
147
+ selectedDate: nextDate
148
+ });
149
+ } else {
150
+ dispatch(_extends({
151
+ type: NAVIGATE
152
+ }, nextState));
153
+ }
154
+
155
+ break;
156
+ }
157
+ }
158
+ };
159
+
160
+ if (year < 0 && month < 0 && day <= 0 && selectedDate !== null) {
161
+ year = selectedDate.getFullYear();
162
+ month = selectedDate.getMonth();
163
+ day = selectedDate.getDate();
164
+ }
165
+
166
+ var value = '';
167
+ var disabled = false;
168
+
169
+ if (type === 'month_year') {
170
+ if (month >= 0 && year >= 0) {
171
+ value = "".concat(year, "-").concat(month);
172
+ }
173
+ } else if (type === 'day') {
174
+ disabled = month < 0 || year < 0;
175
+
176
+ if (day > 0) {
177
+ value = "".concat(day);
178
+ }
179
+ }
180
+
181
+ return /*#__PURE__*/React.createElement(Comp, _extends({
182
+ ref: ref,
183
+ onFocus: wrapEvent(onFocus, handleFocus),
184
+ onBlur: wrapEvent(onBlur, handleBlur),
185
+ onChange: wrapEvent(onChange, handleChange),
186
+ value: value,
187
+ disabled: disabled,
188
+ "data-has-selected": value !== '' ? '' : undefined
189
+ }, rest), type === 'month_year' ? /*#__PURE__*/React.createElement(MonthYearOptions, {
190
+ minDate: minDate,
191
+ maxDate: maxDate,
192
+ monthNames: monthNames,
193
+ emptyOption: emptyOption
194
+ }) : type === 'day' ? /*#__PURE__*/React.createElement(DayOptions, {
195
+ date: month >= 0 && year >= 0 ? new Date(Date.UTC(year, month, 15)) : undefined,
196
+ dayNames: dayNames,
197
+ minDate: minDate,
198
+ emptyOption: emptyOption
199
+ }) : null);
200
+ });
201
+ //# sourceMappingURL=DatePickerSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/DatePicker/DatePickerSelect.tsx"],"names":["React","forwardRef","memo","wrapEvent","useInnerFocus","SET_DATE","useDatePickerContext","NAVIGATE","differenceInCalendarMonths","addMonths","getDaysInMonth","setDate","MonthYearOptions","minDate","maxDate","monthNames","emptyOption","ret","diff","i","date","year","getFullYear","month","getMonth","push","DayOptions","Date","dayNames","day","newDate","valueOf","getDay","DatePickerSelect","DatePicker","ref","as","Comp","type","onFocus","onBlur","onChange","children","rest","onChangeRef","dispatch","controlledValueRef","data","state","handleFocus","handleBlur","stateSelectedDate","selectedDate","navigationYear","navigationMonth","navigationDay","current","undefined","handleChange","e","nextState","target","value","split","yearStr","monthStr","parseInt","nextDate","UTC","getDate","disabled"],"mappings":"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","sourcesContent":["import React, { forwardRef, memo } from 'react';\nimport { wrapEvent } from '../utils/wrapEvent';\nimport { useInnerFocus, SET_DATE } from './hooks';\nimport { DayNames, MonthNames } from './dateTypes';\nimport { useDatePickerContext } from './contexts';\nimport { NAVIGATE } from '../ComboBox/hooks';\nimport {\n differenceInCalendarMonths,\n addMonths,\n getDaysInMonth,\n setDate,\n} from 'date-fns';\n\nexport interface DatePickerSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement> {\n groupType?: 'from' | 'to';\n type: 'month_year' | 'day';\n emptyOption?: string;\n\n as?: React.ElementType<any>;\n}\n\nconst MonthYearOptions = memo(\n ({\n minDate,\n maxDate,\n monthNames,\n emptyOption,\n }: {\n minDate: Date;\n maxDate: Date;\n monthNames: MonthNames;\n emptyOption: string;\n }) => {\n const ret = [\n <option key={'empty'} value=\"\" disabled>\n {emptyOption}\n </option>,\n ];\n\n const diff = differenceInCalendarMonths(maxDate, minDate);\n for (let i = 0; i <= diff; i++) {\n const date = addMonths(minDate, i);\n const year = date.getFullYear();\n const month = date.getMonth();\n\n ret.push(\n <option key={`${year}_${month}`} value={`${year}-${month}`}>\n {monthNames[month]} {year}\n </option>\n );\n }\n\n return <>{ret}</>;\n }\n);\n\nconst DayOptions = memo(\n ({\n date = new Date(0),\n dayNames,\n minDate,\n emptyOption,\n }: {\n date: Date | undefined;\n dayNames: DayNames;\n minDate: Date;\n emptyOption: string;\n }) => {\n if (!date) {\n return null;\n }\n\n const ret = [\n <option key={'empty'} value=\"\" disabled>\n {emptyOption}\n </option>,\n ];\n\n for (let day = 1; day <= getDaysInMonth(date); day++) {\n const newDate = setDate(date, day);\n ret.push(\n <option\n key={`day_${day}`}\n value={`${day}`}\n disabled={newDate.valueOf() < minDate.valueOf()}\n >\n {(newDate.getDay(), dayNames[newDate.getDay()])} {day}\n </option>\n );\n }\n\n return <>{ret}</>;\n }\n);\n\nexport const DatePickerSelect = forwardRef(function DatePicker(\n {\n as: Comp = 'select',\n type,\n onFocus,\n onBlur,\n onChange,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n children,\n emptyOption = '',\n ...rest\n }: DatePickerSelectProps,\n ref\n) {\n const {\n minDate,\n maxDate,\n monthNames,\n onChangeRef,\n dayNames,\n dispatch,\n controlledValueRef,\n state: data,\n } = useDatePickerContext();\n const { handleFocus, handleBlur } = useInnerFocus();\n\n const { selectedDate: stateSelectedDate } = data;\n let {\n navigationYear: year,\n navigationMonth: month,\n navigationDay: day,\n } = data;\n\n const selectedDate =\n controlledValueRef.current !== undefined\n ? controlledValueRef.current\n : stateSelectedDate;\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n const nextState = {\n year,\n month,\n day,\n };\n\n switch (type) {\n case 'month_year': {\n nextState.year = -1;\n nextState.month = -1;\n nextState.day = -1;\n\n if (e.target.value) {\n const [yearStr, monthStr] = e.target.value.split('-');\n nextState.year = parseInt(yearStr, 10);\n nextState.month = parseInt(monthStr, 10);\n nextState.day = -1;\n }\n\n dispatch({ type: NAVIGATE, ...nextState });\n break;\n }\n case 'day': {\n nextState.day = -1;\n if (e.target.value) {\n nextState.day = parseInt(e.target.value, 10);\n }\n\n let nextDate: Date | undefined = undefined;\n if (nextState.day !== -1) {\n if (nextState.year >= 0 && nextState.month >= 0) {\n nextDate = new Date(\n Date.UTC(nextState.year, nextState.month, nextState.day)\n );\n } else if (selectedDate !== null) {\n nextDate = new Date(\n Date.UTC(\n selectedDate.getFullYear(),\n selectedDate.getMonth(),\n nextState.day\n )\n );\n }\n }\n\n if (nextDate !== undefined) {\n onChangeRef.current && onChangeRef.current(nextDate);\n dispatch({ type: SET_DATE, selectedDate: nextDate });\n } else {\n dispatch({ type: NAVIGATE, ...nextState });\n }\n break;\n }\n }\n };\n\n if (year < 0 && month < 0 && day <= 0 && selectedDate !== null) {\n year = selectedDate.getFullYear();\n month = selectedDate.getMonth();\n day = selectedDate.getDate();\n }\n\n let value = '';\n let disabled = false;\n if (type === 'month_year') {\n if (month >= 0 && year >= 0) {\n value = `${year}-${month}`;\n }\n } else if (type === 'day') {\n disabled = month < 0 || year < 0;\n if (day > 0) {\n value = `${day}`;\n }\n }\n\n return (\n <Comp\n ref={ref}\n onFocus={wrapEvent(onFocus, handleFocus)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n onChange={wrapEvent(onChange, handleChange)}\n value={value}\n disabled={disabled}\n data-has-selected={value !== '' ? '' : undefined}\n {...rest}\n >\n {type === 'month_year' ? (\n <MonthYearOptions\n minDate={minDate}\n maxDate={maxDate}\n monthNames={monthNames}\n emptyOption={emptyOption}\n />\n ) : type === 'day' ? (\n <DayOptions\n date={\n month >= 0 && year >= 0\n ? new Date(Date.UTC(year, month, 15))\n : undefined\n }\n dayNames={dayNames}\n minDate={minDate}\n emptyOption={emptyOption}\n />\n ) : null}\n </Comp>\n );\n});\n"],"file":"DatePickerSelect.js"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { MonthNames, DayNames } from './dateTypes';
3
+ export declare type RangeDatePickerProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & {
4
+ as?: React.ElementType<any>;
5
+ minDate?: Date;
6
+ maxDate?: Date;
7
+ dayNames: DayNames;
8
+ monthNames: MonthNames;
9
+ children?: React.ReactNode[];
10
+ onChange?: (from: Date | null, to: Date | null) => void;
11
+ from?: Date | null;
12
+ to?: Date | null;
13
+ defaultFrom?: Date | null;
14
+ defaultTo?: Date | null;
15
+ };
16
+ export declare const RangeDatePicker: React.ForwardRefExoticComponent<Pick<React.HTMLAttributes<HTMLDivElement>, "dir" | "slot" | "style" | "title" | "children" | "onFocus" | "onBlur" | "id" | "hidden" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "draggable" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture"> & {
17
+ as?: "symbol" | "object" | "a" | "abbr" | "address" | "area" | "article" | "aside" | "audio" | "b" | "base" | "bdi" | "bdo" | "blockquote" | "body" | "br" | "button" | "canvas" | "caption" | "cite" | "code" | "col" | "colgroup" | "data" | "datalist" | "dd" | "del" | "details" | "dfn" | "dialog" | "div" | "dl" | "dt" | "em" | "embed" | "fieldset" | "figcaption" | "figure" | "footer" | "form" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "head" | "header" | "hgroup" | "hr" | "html" | "i" | "iframe" | "img" | "input" | "ins" | "kbd" | "label" | "legend" | "li" | "link" | "main" | "map" | "mark" | "menu" | "meta" | "meter" | "nav" | "noscript" | "ol" | "optgroup" | "option" | "output" | "p" | "param" | "picture" | "pre" | "progress" | "q" | "rp" | "rt" | "ruby" | "s" | "samp" | "script" | "section" | "select" | "slot" | "small" | "source" | "span" | "strong" | "style" | "sub" | "summary" | "sup" | "table" | "tbody" | "td" | "template" | "textarea" | "tfoot" | "th" | "thead" | "time" | "title" | "tr" | "track" | "u" | "ul" | "var" | "video" | "wbr" | "circle" | "clipPath" | "defs" | "desc" | "ellipse" | "feBlend" | "feColorMatrix" | "feComponentTransfer" | "feComposite" | "feConvolveMatrix" | "feDiffuseLighting" | "feDisplacementMap" | "feDistantLight" | "feFlood" | "feFuncA" | "feFuncB" | "feFuncG" | "feFuncR" | "feGaussianBlur" | "feImage" | "feMerge" | "feMergeNode" | "feMorphology" | "feOffset" | "fePointLight" | "feSpecularLighting" | "feSpotLight" | "feTile" | "feTurbulence" | "filter" | "foreignObject" | "g" | "image" | "line" | "linearGradient" | "marker" | "mask" | "metadata" | "path" | "pattern" | "polygon" | "polyline" | "radialGradient" | "rect" | "stop" | "svg" | "switch" | "text" | "textPath" | "tspan" | "use" | "view" | "big" | "keygen" | "menuitem" | "noindex" | "webview" | "animate" | "animateMotion" | "animateTransform" | "feDropShadow" | "mpath" | React.ComponentClass<any, any> | React.FunctionComponent<any> | undefined;
18
+ minDate?: Date | undefined;
19
+ maxDate?: Date | undefined;
20
+ dayNames: DayNames;
21
+ monthNames: MonthNames;
22
+ children?: React.ReactNode[] | undefined;
23
+ onChange?: ((from: Date | null, to: Date | null) => void) | undefined;
24
+ from?: Date | null | undefined;
25
+ to?: Date | null | undefined;
26
+ defaultFrom?: Date | null | undefined;
27
+ defaultTo?: Date | null | undefined;
28
+ } & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,94 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ import React, { forwardRef, useRef, useState } from 'react';
5
+ import { assignMultipleRefs } from '../utils/assignRef';
6
+ import { adjustDates } from './adjustDates';
7
+ import { RangeDatePickerProvider } from './contexts';
8
+ export var RangeDatePicker = forwardRef(function RangeDatePicker(_ref, ref) {
9
+ var _ref$as = _ref.as,
10
+ Comp = _ref$as === void 0 ? 'div' : _ref$as,
11
+ _ref$minDate = _ref.minDate,
12
+ propMinDate = _ref$minDate === void 0 ? new Date(0) : _ref$minDate,
13
+ _ref$maxDate = _ref.maxDate,
14
+ propMaxDate = _ref$maxDate === void 0 ? new Date() : _ref$maxDate,
15
+ dayNames = _ref.dayNames,
16
+ monthNames = _ref.monthNames,
17
+ onChange = _ref.onChange,
18
+ controlledFrom = _ref.from,
19
+ controlledTo = _ref.to,
20
+ defaultFrom = _ref.defaultFrom,
21
+ defaultTo = _ref.defaultTo,
22
+ rest = _objectWithoutProperties(_ref, ["as", "minDate", "maxDate", "dayNames", "monthNames", "onChange", "from", "to", "defaultFrom", "defaultTo"]);
23
+
24
+ var isControlled = controlledFrom !== undefined && controlledTo !== undefined;
25
+ var minDate = propMinDate,
26
+ maxDate = propMaxDate;
27
+ var rangeDatePickerRef = useRef(null);
28
+
29
+ var _useState = useState({
30
+ from: defaultFrom || null,
31
+ to: defaultTo || null
32
+ }),
33
+ _useState2 = _slicedToArray(_useState, 2),
34
+ _useState2$ = _useState2[0],
35
+ stateFrom = _useState2$.from,
36
+ stateTo = _useState2$.to,
37
+ setDates = _useState2[1];
38
+
39
+ var _useState3 = useState(false),
40
+ _useState4 = _slicedToArray(_useState3, 2),
41
+ innerHasFocus = _useState4[0],
42
+ setInnerHasFocus = _useState4[1];
43
+
44
+ var onChangeFrom = function onChangeFrom(from) {
45
+ var to = stateTo;
46
+
47
+ var _adjustDates = adjustDates(from, to, 'from'),
48
+ nextFrom = _adjustDates.from,
49
+ nextTo = _adjustDates.to;
50
+
51
+ onChange && onChange(nextFrom, nextTo);
52
+ setDates({
53
+ from: nextFrom,
54
+ to: nextTo
55
+ });
56
+ };
57
+
58
+ var onChangeTo = function onChangeTo(to) {
59
+ var from = stateFrom;
60
+
61
+ var _adjustDates2 = adjustDates(from, to, 'to'),
62
+ nextFrom = _adjustDates2.from,
63
+ nextTo = _adjustDates2.to;
64
+
65
+ onChange && onChange(nextFrom, nextTo);
66
+ setDates({
67
+ from: nextFrom,
68
+ to: nextTo
69
+ });
70
+ };
71
+
72
+ var from = isControlled ? controlledFrom : stateFrom;
73
+ var to = isControlled ? controlledTo : stateTo;
74
+ var contextValue = {
75
+ rangeDatePickerRef: rangeDatePickerRef,
76
+ innerHasFocus: innerHasFocus,
77
+ setInnerHasFocus: setInnerHasFocus,
78
+ minDate: minDate,
79
+ maxDate: maxDate,
80
+ from: from,
81
+ to: to,
82
+ dayNames: dayNames,
83
+ monthNames: monthNames,
84
+ onChangeFrom: onChangeFrom,
85
+ onChangeTo: onChangeTo
86
+ };
87
+ return /*#__PURE__*/React.createElement(RangeDatePickerProvider, {
88
+ value: contextValue
89
+ }, /*#__PURE__*/React.createElement(Comp, _extends({
90
+ ref: assignMultipleRefs(ref, rangeDatePickerRef),
91
+ "data-has-focus": innerHasFocus ? '' : undefined
92
+ }, rest)));
93
+ });
94
+ //# sourceMappingURL=RangeDatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/DatePicker/RangeDatePicker.tsx"],"names":["React","forwardRef","useRef","useState","assignMultipleRefs","adjustDates","RangeDatePickerProvider","RangeDatePicker","ref","as","Comp","minDate","propMinDate","Date","maxDate","propMaxDate","dayNames","monthNames","onChange","controlledFrom","from","controlledTo","to","defaultFrom","defaultTo","rest","isControlled","undefined","rangeDatePickerRef","stateFrom","stateTo","setDates","innerHasFocus","setInnerHasFocus","onChangeFrom","nextFrom","nextTo","onChangeTo","contextValue"],"mappings":"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","sourcesContent":["import React, { forwardRef, useRef, useState } from 'react';\nimport { MonthNames, DayNames } from './dateTypes';\nimport { assignMultipleRefs } from '../utils/assignRef';\nimport { adjustDates } from './adjustDates';\nimport {\n RangeDatePickerProvider,\n RangeDatePickerContextProps,\n} from './contexts';\n\nexport type RangeDatePickerProps = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onChange'\n> & {\n as?: React.ElementType<any>;\n minDate?: Date;\n maxDate?: Date;\n dayNames: DayNames;\n monthNames: MonthNames;\n children?: React.ReactNode[];\n onChange?: (from: Date | null, to: Date | null) => void;\n from?: Date | null;\n to?: Date | null;\n defaultFrom?: Date | null;\n defaultTo?: Date | null;\n};\n\nexport const RangeDatePicker = forwardRef<HTMLDivElement, RangeDatePickerProps>(\n function RangeDatePicker(\n {\n as: Comp = 'div',\n minDate: propMinDate = new Date(0),\n maxDate: propMaxDate = new Date(),\n dayNames,\n monthNames,\n onChange,\n from: controlledFrom,\n to: controlledTo,\n defaultFrom,\n defaultTo,\n ...rest\n },\n ref\n ) {\n const isControlled =\n controlledFrom !== undefined && controlledTo !== undefined;\n\n const minDate = propMinDate,\n maxDate = propMaxDate;\n\n const rangeDatePickerRef = useRef<HTMLDivElement | null>(null);\n const [{ from: stateFrom, to: stateTo }, setDates] = useState({\n from: (defaultFrom || null) as Date | null,\n to: (defaultTo || null) as Date | null,\n });\n const [innerHasFocus, setInnerHasFocus] = useState(false);\n\n const onChangeFrom = (from: Date | null) => {\n const to = stateTo;\n const { from: nextFrom, to: nextTo } = adjustDates(from, to, 'from');\n\n onChange && onChange(nextFrom, nextTo);\n setDates({ from: nextFrom, to: nextTo });\n };\n\n const onChangeTo = (to: Date | null) => {\n const from = stateFrom;\n const { from: nextFrom, to: nextTo } = adjustDates(from, to, 'to');\n\n onChange && onChange(nextFrom, nextTo);\n setDates({ from: nextFrom, to: nextTo });\n };\n\n const from = isControlled ? controlledFrom : stateFrom;\n const to = isControlled ? controlledTo : stateTo;\n\n const contextValue: RangeDatePickerContextProps = {\n rangeDatePickerRef,\n innerHasFocus,\n setInnerHasFocus,\n minDate,\n maxDate,\n from,\n to,\n dayNames,\n monthNames,\n onChangeFrom,\n onChangeTo,\n };\n\n return (\n <RangeDatePickerProvider value={contextValue}>\n <Comp\n ref={assignMultipleRefs(ref, rangeDatePickerRef)}\n data-has-focus={innerHasFocus ? '' : undefined}\n {...rest}\n />\n </RangeDatePickerProvider>\n );\n }\n);\n"],"file":"RangeDatePicker.js"}
@@ -0,0 +1,4 @@
1
+ export declare function adjustDates(from: Date | null, to: Date | null, frozenParam: 'from' | 'to'): {
2
+ from: Date | null;
3
+ to: Date | null;
4
+ };
@@ -0,0 +1,18 @@
1
+ import { addDays, isValid, differenceInDays } from 'date-fns';
2
+ export function adjustDates(from, to, frozenParam) {
3
+ if (to && isValid(to) && from && isValid(from)) {
4
+ if (differenceInDays(to, from) < 1) {
5
+ if (frozenParam === 'from') {
6
+ to = addDays(from, 1); // add one day
7
+ } else {
8
+ from = addDays(from, -1); // remove one day
9
+ }
10
+ }
11
+ }
12
+
13
+ return {
14
+ from: from,
15
+ to: to
16
+ };
17
+ }
18
+ //# sourceMappingURL=adjustDates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/DatePicker/adjustDates.ts"],"names":["addDays","isValid","differenceInDays","adjustDates","from","to","frozenParam"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,OAAlB,EAA2BC,gBAA3B,QAAmD,UAAnD;AAEA,OAAO,SAASC,WAAT,CACLC,IADK,EAELC,EAFK,EAGLC,WAHK,EAIL;AACA,MAAID,EAAE,IAAIJ,OAAO,CAACI,EAAD,CAAb,IAAqBD,IAArB,IAA6BH,OAAO,CAACG,IAAD,CAAxC,EAAgD;AAC9C,QAAIF,gBAAgB,CAACG,EAAD,EAAKD,IAAL,CAAhB,GAA6B,CAAjC,EAAoC;AAClC,UAAIE,WAAW,KAAK,MAApB,EAA4B;AAC1BD,QAAAA,EAAE,GAAGL,OAAO,CAACI,IAAD,EAAO,CAAP,CAAZ,CAD0B,CACH;AACxB,OAFD,MAEO;AACLA,QAAAA,IAAI,GAAGJ,OAAO,CAACI,IAAD,EAAO,CAAC,CAAR,CAAd,CADK,CACqB;AAC3B;AACF;AACF;;AAED,SAAO;AAAEA,IAAAA,IAAI,EAAJA,IAAF;AAAQC,IAAAA,EAAE,EAAFA;AAAR,GAAP;AACD","sourcesContent":["import { addDays, isValid, differenceInDays } from 'date-fns';\n\nexport function adjustDates(\n from: Date | null,\n to: Date | null,\n frozenParam: 'from' | 'to'\n) {\n if (to && isValid(to) && from && isValid(from)) {\n if (differenceInDays(to, from) < 1) {\n if (frozenParam === 'from') {\n to = addDays(from, 1); // add one day\n } else {\n from = addDays(from, -1); // remove one day\n }\n }\n }\n\n return { from, to };\n}\n"],"file":"adjustDates.js"}
@@ -0,0 +1,31 @@
1
+ /// <reference types="react" />
2
+ import { MonthNames, DayNames } from './dateTypes';
3
+ import { ReducerState, ReducerActions } from './hooks';
4
+ export interface RangeDatePickerContextProps {
5
+ rangeDatePickerRef: React.MutableRefObject<HTMLDivElement | null>;
6
+ innerHasFocus: boolean;
7
+ setInnerHasFocus: (hasFocus: boolean) => void;
8
+ minDate: Date;
9
+ maxDate: Date;
10
+ from?: Date | null;
11
+ to?: Date | null;
12
+ onChangeFrom: (d: Date | null) => void;
13
+ onChangeTo: (d: Date | null) => void;
14
+ dayNames: DayNames;
15
+ monthNames: MonthNames;
16
+ }
17
+ export declare const RangeDatePickerProvider: import("react").Provider<RangeDatePickerContextProps | null>;
18
+ export declare const useRangeDatePickerContext: () => RangeDatePickerContextProps | null;
19
+ export interface DatePickerContextProps {
20
+ minDate: Date;
21
+ maxDate: Date;
22
+ dayNames: DayNames;
23
+ monthNames: MonthNames;
24
+ datePickerRef: React.MutableRefObject<HTMLDivElement | null>;
25
+ state: ReducerState;
26
+ dispatch: (value: ReducerActions) => void;
27
+ controlledValueRef: React.MutableRefObject<Date | null | undefined>;
28
+ onChangeRef: React.MutableRefObject<((from: Date | null) => void) | undefined>;
29
+ }
30
+ export declare const useDatePickerContext: () => DatePickerContextProps;
31
+ export declare const DatePickerProvider: import("react").Provider<DatePickerContextProps>;
@@ -0,0 +1,15 @@
1
+ import { createContext, useContext } from 'react';
2
+ var rangeContext = createContext(null);
3
+ var RangeDatePickerProvider = rangeContext.Provider;
4
+ export { RangeDatePickerProvider };
5
+ export var useRangeDatePickerContext = function useRangeDatePickerContext() {
6
+ return useContext(rangeContext);
7
+ }; // DatePicker
8
+
9
+ var datePickerContext = createContext(null);
10
+ export var useDatePickerContext = function useDatePickerContext() {
11
+ return useContext(datePickerContext);
12
+ };
13
+ var DatePickerProvider = datePickerContext.Provider;
14
+ export { DatePickerProvider };
15
+ //# sourceMappingURL=contexts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/DatePicker/contexts.ts"],"names":["createContext","useContext","rangeContext","RangeDatePickerProvider","Provider","useRangeDatePickerContext","datePickerContext","useDatePickerContext","DatePickerProvider"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,UAAxB,QAA0C,OAA1C;AAmBA,IAAMC,YAAY,GAAGF,aAAa,CAAqC,IAArC,CAAlC;IACyBG,uB,GAA4BD,Y,CAAtCE,Q;;AACf,OAAO,IAAMC,yBAAyB,GAAG,SAA5BA,yBAA4B;AAAA,SAAMJ,UAAU,CAACC,YAAD,CAAhB;AAAA,CAAlC,C,CAEP;;AAcA,IAAMI,iBAAiB,GAAGN,aAAa,CAAyB,IAAzB,CAAvC;AACA,OAAO,IAAMO,oBAAoB,GAAG,SAAvBA,oBAAuB;AAAA,SAAMN,UAAU,CAACK,iBAAD,CAAhB;AAAA,CAA7B;IACkBE,kB,GAAuBF,iB,CAAjCF,Q","sourcesContent":["import { createContext, useContext } from 'react';\nimport { MonthNames, DayNames } from './dateTypes';\nimport { ReducerState, ReducerActions } from './hooks';\n\n// RangeDatePicker\nexport interface RangeDatePickerContextProps {\n rangeDatePickerRef: React.MutableRefObject<HTMLDivElement | null>;\n innerHasFocus: boolean;\n setInnerHasFocus: (hasFocus: boolean) => void;\n minDate: Date;\n maxDate: Date;\n from?: Date | null;\n to?: Date | null;\n onChangeFrom: (d: Date | null) => void;\n onChangeTo: (d: Date | null) => void;\n dayNames: DayNames;\n monthNames: MonthNames;\n}\n\nconst rangeContext = createContext<RangeDatePickerContextProps | null>(null);\nexport const { Provider: RangeDatePickerProvider } = rangeContext;\nexport const useRangeDatePickerContext = () => useContext(rangeContext);\n\n// DatePicker\nexport interface DatePickerContextProps {\n minDate: Date;\n maxDate: Date;\n dayNames: DayNames;\n monthNames: MonthNames;\n datePickerRef: React.MutableRefObject<HTMLDivElement | null>;\n state: ReducerState;\n dispatch: (value: ReducerActions) => void;\n controlledValueRef: React.MutableRefObject<Date | null | undefined>;\n onChangeRef: React.MutableRefObject<\n ((from: Date | null) => void) | undefined\n >;\n}\nconst datePickerContext = createContext<DatePickerContextProps>(null as any);\nexport const useDatePickerContext = () => useContext(datePickerContext);\nexport const { Provider: DatePickerProvider } = datePickerContext;\n"],"file":"contexts.js"}
@@ -0,0 +1,2 @@
1
+ export declare type DayNames = [string, string, string, string, string, string, string];
2
+ export declare type MonthNames = [string, string, string, string, string, string, string, string, string, string, string, string];
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=dateTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"dateTypes.js"}
@@ -0,0 +1,36 @@
1
+ export declare const FOCUS = "FOCUS";
2
+ export declare const BLUR = "BLUR";
3
+ export declare const NAVIGATE = "NAVIGATE";
4
+ export declare const SET_DATE = "SET_DATE";
5
+ export declare type ActionTypes = typeof FOCUS | typeof BLUR | typeof NAVIGATE | typeof SET_DATE;
6
+ export interface ReducerState {
7
+ isFocused: boolean;
8
+ navigationYear: number;
9
+ navigationMonth: number;
10
+ navigationDay: number;
11
+ selectedDate: Date | null;
12
+ }
13
+ interface FocusAction {
14
+ type: typeof FOCUS;
15
+ }
16
+ interface NavigateAction {
17
+ type: typeof NAVIGATE;
18
+ year: number;
19
+ month: number;
20
+ day: number;
21
+ }
22
+ interface SetDateAction {
23
+ type: typeof SET_DATE;
24
+ selectedDate: Date | null;
25
+ }
26
+ interface BlurAction {
27
+ type: typeof BLUR;
28
+ selectedDate: Date | null;
29
+ }
30
+ export declare type ReducerActions = FocusAction | BlurAction | NavigateAction | SetDateAction;
31
+ export declare function reducer(currentState: Readonly<ReducerState>, action: ReducerActions): ReducerState;
32
+ export declare function useInnerFocus(): {
33
+ handleFocus: () => void;
34
+ handleBlur: () => void;
35
+ };
36
+ export {};
@@ -0,0 +1,98 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { useRangeDatePickerContext, useDatePickerContext } from './contexts'; ////////////////////////////////////////////////////////////////////////////////
3
+ // Actions
4
+
5
+ export var FOCUS = 'FOCUS';
6
+ export var BLUR = 'BLUR';
7
+ export var NAVIGATE = 'NAVIGATE';
8
+ export var SET_DATE = 'SET_DATE';
9
+ export function reducer(currentState, action) {
10
+ switch (action.type) {
11
+ case FOCUS:
12
+ return _extends(_extends({}, currentState), {}, {
13
+ isFocused: true
14
+ });
15
+
16
+ case BLUR:
17
+ return _extends(_extends({}, currentState), {}, {
18
+ navigationYear: -1,
19
+ navigationMonth: -1,
20
+ navigationDay: -1,
21
+ selectedDate: action.selectedDate,
22
+ isFocused: false
23
+ });
24
+
25
+ case NAVIGATE:
26
+ return _extends(_extends({}, currentState), {}, {
27
+ navigationYear: action.year,
28
+ navigationMonth: action.month,
29
+ navigationDay: action.day
30
+ });
31
+
32
+ case SET_DATE:
33
+ {
34
+ return _extends(_extends({}, currentState), {}, {
35
+ navigationYear: -1,
36
+ navigationMonth: -1,
37
+ navigationDay: -1,
38
+ selectedDate: action.selectedDate
39
+ });
40
+ }
41
+ }
42
+ } ////////////////////////////////////////////////////////////////////////////////
43
+ // Hooks
44
+
45
+ export function useInnerFocus() {
46
+ var _useDatePickerContext = useDatePickerContext(),
47
+ dispatch = _useDatePickerContext.dispatch,
48
+ onChangeRef = _useDatePickerContext.onChangeRef,
49
+ datePickerRef = _useDatePickerContext.datePickerRef,
50
+ _useDatePickerContext2 = _useDatePickerContext.state,
51
+ selectedDate = _useDatePickerContext2.selectedDate,
52
+ navigationMonth = _useDatePickerContext2.navigationMonth,
53
+ navigationYear = _useDatePickerContext2.navigationYear,
54
+ navigationDay = _useDatePickerContext2.navigationDay;
55
+
56
+ var rangeCtx = useRangeDatePickerContext();
57
+
58
+ var handleFocus = function handleFocus() {
59
+ dispatch({
60
+ type: FOCUS
61
+ });
62
+
63
+ if (rangeCtx) {
64
+ rangeCtx.setInnerHasFocus(true);
65
+ }
66
+ };
67
+
68
+ var handleBlur = function handleBlur() {
69
+ requestAnimationFrame(function () {
70
+ // we on want to close only if focus rests outside the datepicker
71
+ if (datePickerRef.current && !datePickerRef.current.contains(document.activeElement)) {
72
+ if (selectedDate && navigationYear >= 0 && navigationMonth >= 0 && navigationDay === -1) {
73
+ // user started picking a new day, but haven't finished :(
74
+ onChangeRef.current && onChangeRef.current(null);
75
+ dispatch({
76
+ type: BLUR,
77
+ selectedDate: null
78
+ });
79
+ } else {
80
+ dispatch({
81
+ type: BLUR,
82
+ selectedDate: selectedDate
83
+ });
84
+ }
85
+ }
86
+
87
+ if (rangeCtx && rangeCtx.rangeDatePickerRef.current && !rangeCtx.rangeDatePickerRef.current.contains(document.activeElement)) {
88
+ rangeCtx.setInnerHasFocus(false);
89
+ }
90
+ });
91
+ };
92
+
93
+ return {
94
+ handleFocus: handleFocus,
95
+ handleBlur: handleBlur
96
+ };
97
+ }
98
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/DatePicker/hooks.tsx"],"names":["useRangeDatePickerContext","useDatePickerContext","FOCUS","BLUR","NAVIGATE","SET_DATE","reducer","currentState","action","type","isFocused","navigationYear","navigationMonth","navigationDay","selectedDate","year","month","day","useInnerFocus","dispatch","onChangeRef","datePickerRef","state","rangeCtx","handleFocus","setInnerHasFocus","handleBlur","requestAnimationFrame","current","contains","document","activeElement","rangeDatePickerRef"],"mappings":"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","sourcesContent":["import { useRangeDatePickerContext, useDatePickerContext } from './contexts';\n\n////////////////////////////////////////////////////////////////////////////////\n// Actions\n\nexport const FOCUS = 'FOCUS';\n\nexport const BLUR = 'BLUR';\n\nexport const NAVIGATE = 'NAVIGATE';\n\nexport const SET_DATE = 'SET_DATE';\n\nexport type ActionTypes =\n | typeof FOCUS\n | typeof BLUR\n | typeof NAVIGATE\n | typeof SET_DATE;\n\n////////////////////////////////////////////////////////////////////////////////\n// Reducer\n\nexport interface ReducerState {\n isFocused: boolean;\n navigationYear: number;\n navigationMonth: number;\n navigationDay: number;\n selectedDate: Date | null;\n}\n\ninterface FocusAction {\n type: typeof FOCUS;\n}\n\ninterface NavigateAction {\n type: typeof NAVIGATE;\n year: number;\n month: number;\n day: number;\n}\ninterface SetDateAction {\n type: typeof SET_DATE;\n selectedDate: Date | null;\n}\n\ninterface BlurAction {\n type: typeof BLUR;\n selectedDate: Date | null;\n}\n\nexport type ReducerActions =\n | FocusAction\n | BlurAction\n | NavigateAction\n | SetDateAction;\n\nexport function reducer(\n currentState: Readonly<ReducerState>,\n action: ReducerActions\n): ReducerState {\n switch (action.type) {\n case FOCUS:\n return {\n ...currentState,\n isFocused: true,\n };\n case BLUR:\n return {\n ...currentState,\n navigationYear: -1,\n navigationMonth: -1,\n navigationDay: -1,\n selectedDate: action.selectedDate,\n isFocused: false,\n };\n case NAVIGATE:\n return {\n ...currentState,\n navigationYear: action.year,\n navigationMonth: action.month,\n navigationDay: action.day,\n };\n case SET_DATE: {\n return {\n ...currentState,\n navigationYear: -1,\n navigationMonth: -1,\n navigationDay: -1,\n selectedDate: action.selectedDate,\n };\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nexport function useInnerFocus() {\n const {\n dispatch,\n onChangeRef,\n datePickerRef,\n state: { selectedDate, navigationMonth, navigationYear, navigationDay },\n } = useDatePickerContext();\n const rangeCtx = useRangeDatePickerContext();\n\n const handleFocus = () => {\n dispatch({ type: FOCUS });\n if (rangeCtx) {\n rangeCtx.setInnerHasFocus(true);\n }\n };\n\n const handleBlur = () => {\n requestAnimationFrame(() => {\n // we on want to close only if focus rests outside the datepicker\n if (\n datePickerRef.current &&\n !datePickerRef.current.contains(document.activeElement)\n ) {\n if (\n selectedDate &&\n navigationYear >= 0 &&\n navigationMonth >= 0 &&\n navigationDay === -1\n ) {\n // user started picking a new day, but haven't finished :(\n onChangeRef.current && onChangeRef.current(null);\n dispatch({ type: BLUR, selectedDate: null });\n } else {\n dispatch({ type: BLUR, selectedDate });\n }\n }\n\n if (\n rangeCtx &&\n rangeCtx.rangeDatePickerRef.current &&\n !rangeCtx.rangeDatePickerRef.current.contains(document.activeElement)\n ) {\n rangeCtx.setInnerHasFocus(false);\n }\n });\n };\n\n return { handleFocus, handleBlur };\n}\n"],"file":"hooks.js"}
@@ -0,0 +1,5 @@
1
+ export * from './DatePicker';
2
+ export * from './RangeDatePicker';
3
+ export * from './DatePickerSelect';
4
+ export * from './dateTypes';
5
+ export * from './contexts';