@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.
- package/README.md +3 -3
- package/build/cjs/index.js +105 -89
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/Accordion.d.ts +9 -9
- package/build/esm/Accordion/Accordion.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.d.ts +6 -6
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.d.ts +7 -7
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.d.ts +9 -9
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.d.ts +19 -19
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/index.d.ts +4 -4
- package/build/esm/Accordion/index.js.map +1 -1
- package/build/esm/Accordion/scopeQuery.d.ts +2 -2
- package/build/esm/Accordion/scopeQuery.js.map +1 -1
- package/build/esm/Carousel/Carousel.d.ts +9 -0
- package/build/esm/Carousel/Carousel.js +38 -0
- package/build/esm/Carousel/Carousel.js.map +1 -0
- package/build/esm/Carousel/Fader.d.ts +14 -0
- package/build/esm/Carousel/Fader.js +76 -0
- package/build/esm/Carousel/Fader.js.map +1 -0
- package/build/esm/Carousel/FaderItem.d.ts +5 -0
- package/build/esm/Carousel/FaderItem.js +16 -0
- package/build/esm/Carousel/FaderItem.js.map +1 -0
- package/build/esm/Carousel/Preloader.d.ts +7 -0
- package/build/esm/Carousel/Preloader.js +70 -0
- package/build/esm/Carousel/Preloader.js.map +1 -0
- package/build/esm/Carousel/Slider.d.ts +14 -0
- package/build/esm/Carousel/Slider.js +212 -0
- package/build/esm/Carousel/Slider.js.map +1 -0
- package/build/esm/Carousel/SliderItem.d.ts +12 -0
- package/build/esm/Carousel/SliderItem.js +41 -0
- package/build/esm/Carousel/SliderItem.js.map +1 -0
- package/build/esm/Carousel/context.d.ts +10 -0
- package/build/esm/Carousel/context.js +8 -0
- package/build/esm/Carousel/context.js.map +1 -0
- package/build/esm/Carousel/getSliderParams.d.ts +9 -0
- package/build/esm/Carousel/getSliderParams.js +85 -0
- package/build/esm/Carousel/getSliderParams.js.map +1 -0
- package/build/esm/Carousel/index.d.ts +7 -0
- package/build/esm/Carousel/index.js +8 -0
- package/build/esm/Carousel/index.js.map +1 -0
- package/build/esm/Carousel/useCarouselGestures.d.ts +30 -0
- package/build/esm/Carousel/useCarouselGestures.js +33 -0
- package/build/esm/Carousel/useCarouselGestures.js.map +1 -0
- package/build/esm/CheckBox/CheckBox.d.ts +7 -7
- package/build/esm/CheckBox/CheckBox.js.map +1 -1
- package/build/esm/CheckBox/index.d.ts +1 -1
- package/build/esm/CheckBox/index.js.map +1 -1
- package/build/esm/ComboBox/Combobox.d.ts +18 -18
- package/build/esm/ComboBox/Combobox.js.map +1 -1
- package/build/esm/ComboBox/ComboboxButton.d.ts +9 -9
- package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
- package/build/esm/ComboBox/ComboboxInput.d.ts +17 -17
- package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
- package/build/esm/ComboBox/ComboboxLabel.d.ts +7 -7
- package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
- package/build/esm/ComboBox/ComboboxList.d.ts +8 -8
- package/build/esm/ComboBox/ComboboxList.js.map +1 -1
- package/build/esm/ComboBox/ComboboxOption.d.ts +11 -11
- package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
- package/build/esm/ComboBox/ComboboxPopover.d.ts +9 -9
- package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
- package/build/esm/ComboBox/cities.d.ts +5 -5
- package/build/esm/ComboBox/cities.js.map +1 -1
- package/build/esm/ComboBox/context.d.ts +30 -30
- package/build/esm/ComboBox/context.js.map +1 -1
- package/build/esm/ComboBox/hooks.d.ts +37 -37
- package/build/esm/ComboBox/hooks.js.map +1 -1
- package/build/esm/ComboBox/index.d.ts +8 -8
- package/build/esm/ComboBox/index.js.map +1 -1
- package/build/esm/ComboBox/makeHash.d.ts +1 -1
- package/build/esm/ComboBox/makeHash.js.map +1 -1
- package/build/esm/ComboBox/scopeQuery.d.ts +1 -1
- package/build/esm/ComboBox/scopeQuery.js.map +1 -1
- package/build/esm/DatePicker/DatePicker.d.ts +24 -0
- package/build/esm/DatePicker/DatePicker.js +101 -0
- package/build/esm/DatePicker/DatePicker.js.map +1 -0
- package/build/esm/DatePicker/DatePickerSelect.d.ts +8 -0
- package/build/esm/DatePicker/DatePickerSelect.js +201 -0
- package/build/esm/DatePicker/DatePickerSelect.js.map +1 -0
- package/build/esm/DatePicker/RangeDatePicker.d.ts +28 -0
- package/build/esm/DatePicker/RangeDatePicker.js +94 -0
- package/build/esm/DatePicker/RangeDatePicker.js.map +1 -0
- package/build/esm/DatePicker/adjustDates.d.ts +4 -0
- package/build/esm/DatePicker/adjustDates.js +18 -0
- package/build/esm/DatePicker/adjustDates.js.map +1 -0
- package/build/esm/DatePicker/contexts.d.ts +31 -0
- package/build/esm/DatePicker/contexts.js +15 -0
- package/build/esm/DatePicker/contexts.js.map +1 -0
- package/build/esm/DatePicker/dateTypes.d.ts +2 -0
- package/build/esm/DatePicker/dateTypes.js +2 -0
- package/build/esm/DatePicker/dateTypes.js.map +1 -0
- package/build/esm/DatePicker/hooks.d.ts +36 -0
- package/build/esm/DatePicker/hooks.js +98 -0
- package/build/esm/DatePicker/hooks.js.map +1 -0
- package/build/esm/DatePicker/index.d.ts +5 -0
- package/build/esm/DatePicker/index.js +6 -0
- package/build/esm/DatePicker/index.js.map +1 -0
- package/build/esm/FocusLock/FocusLock.d.ts +9 -9
- package/build/esm/FocusLock/FocusLock.js.map +1 -1
- package/build/esm/FocusLock/index.d.ts +1 -1
- package/build/esm/FocusLock/index.js.map +1 -1
- package/build/esm/FocusLock/tabUtils.d.ts +3 -3
- package/build/esm/FocusLock/tabUtils.js.map +1 -1
- package/build/esm/FocusLock/useFocusLock.d.ts +7 -7
- package/build/esm/FocusLock/useFocusLock.js.map +1 -1
- package/build/esm/List/List.d.ts +7 -7
- package/build/esm/List/List.js.map +1 -1
- package/build/esm/List/ListItem.d.ts +7 -7
- package/build/esm/List/ListItem.js.map +1 -1
- package/build/esm/List/context.d.ts +4 -4
- package/build/esm/List/context.js.map +1 -1
- package/build/esm/List/index.d.ts +2 -2
- package/build/esm/List/index.js.map +1 -1
- package/build/esm/Menu/ContextMenuTrigger.d.ts +11 -11
- package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
- package/build/esm/Menu/Menu.d.ts +10 -10
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts +11 -11
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.d.ts +8 -8
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.d.ts +7 -7
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.d.ts +8 -8
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/context.d.ts +25 -25
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/fixtures/countryList.d.ts +1 -1
- package/build/esm/Menu/fixtures/countryList.js.map +1 -1
- package/build/esm/Menu/index.d.ts +6 -6
- package/build/esm/Menu/index.js.map +1 -1
- package/build/esm/Menu/scope.d.ts +1 -1
- package/build/esm/Menu/scope.js.map +1 -1
- package/build/esm/Modal/Modal.d.ts +9 -9
- package/build/esm/Modal/Modal.js.map +1 -1
- package/build/esm/Modal/ModalBackdrop.d.ts +10 -10
- package/build/esm/Modal/ModalBackdrop.js.map +1 -1
- package/build/esm/Modal/index.d.ts +2 -2
- package/build/esm/Modal/index.js.map +1 -1
- package/build/esm/Popper/Popper.d.ts +35 -35
- package/build/esm/Popper/Popper.js.map +1 -1
- package/build/esm/Popper/PopperArrow.d.ts +6 -6
- package/build/esm/Popper/PopperArrow.js.map +1 -1
- package/build/esm/Popper/context.d.ts +6 -6
- package/build/esm/Popper/context.js.map +1 -1
- package/build/esm/Popper/index.d.ts +3 -3
- package/build/esm/Popper/index.js.map +1 -1
- package/build/esm/Portal/Portal.d.ts +7 -6
- package/build/esm/Portal/Portal.js +6 -3
- package/build/esm/Portal/Portal.js.map +1 -1
- package/build/esm/Portal/PortalSelectorProvider.d.ts +8 -0
- package/build/esm/Portal/PortalSelectorProvider.js +13 -0
- package/build/esm/Portal/PortalSelectorProvider.js.map +1 -0
- package/build/esm/Portal/index.d.ts +2 -1
- package/build/esm/Portal/index.js +1 -0
- package/build/esm/Portal/index.js.map +1 -1
- package/build/esm/RadioButton/RadioButton.d.ts +10 -10
- package/build/esm/RadioButton/RadioButton.js.map +1 -1
- package/build/esm/RadioButton/RadioGroup.d.ts +12 -12
- package/build/esm/RadioButton/RadioGroup.js.map +1 -1
- package/build/esm/RadioButton/context.d.ts +9 -9
- package/build/esm/RadioButton/context.js.map +1 -1
- package/build/esm/RadioButton/index.d.ts +2 -2
- package/build/esm/RadioButton/index.js.map +1 -1
- package/build/esm/SkipNav/SkipNav.d.ts +7 -7
- package/build/esm/SkipNav/SkipNav.js.map +1 -1
- package/build/esm/SkipNav/index.d.ts +1 -1
- package/build/esm/SkipNav/index.js.map +1 -1
- package/build/esm/Slider/Slider.d.ts +197 -197
- package/build/esm/Slider/Slider.js +82 -82
- package/build/esm/Slider/Slider.js.map +1 -1
- package/build/esm/Slider/index.d.ts +1 -1
- package/build/esm/Slider/index.js.map +1 -1
- package/build/esm/Spinner/Spinner.d.ts +12 -12
- package/build/esm/Spinner/Spinner.js.map +1 -1
- package/build/esm/Spinner/SpinnerButton.d.ts +8 -8
- package/build/esm/Spinner/SpinnerButton.js.map +1 -1
- package/build/esm/Spinner/context.d.ts +12 -12
- package/build/esm/Spinner/context.js.map +1 -1
- package/build/esm/Spinner/index.d.ts +2 -2
- package/build/esm/Spinner/index.js.map +1 -1
- package/build/esm/Tabs/Tab.d.ts +7 -7
- package/build/esm/Tabs/Tab.js.map +1 -1
- package/build/esm/Tabs/TabList.d.ts +9 -9
- package/build/esm/Tabs/TabList.js.map +1 -1
- package/build/esm/Tabs/TabPanel.d.ts +8 -8
- package/build/esm/Tabs/TabPanel.js.map +1 -1
- package/build/esm/Tabs/TabPanels.d.ts +8 -8
- package/build/esm/Tabs/TabPanels.js.map +1 -1
- package/build/esm/Tabs/Tabs.d.ts +10 -10
- package/build/esm/Tabs/Tabs.js.map +1 -1
- package/build/esm/Tabs/context.d.ts +17 -17
- package/build/esm/Tabs/context.js.map +1 -1
- package/build/esm/Tabs/index.d.ts +5 -5
- package/build/esm/Tabs/index.js.map +1 -1
- package/build/esm/Tabs/scopeQuery.d.ts +1 -1
- package/build/esm/Tabs/scopeQuery.js.map +1 -1
- package/build/esm/Tooltip/Tooltip.d.ts +10 -10
- package/build/esm/Tooltip/Tooltip.js.map +1 -1
- package/build/esm/Tooltip/index.d.ts +1 -1
- package/build/esm/Tooltip/index.js.map +1 -1
- package/build/esm/Tooltip/stateMachine.d.ts +28 -28
- package/build/esm/Tooltip/stateMachine.js.map +1 -1
- package/build/esm/Tooltip/useTooltip.d.ts +10 -10
- package/build/esm/Tooltip/useTooltip.js.map +1 -1
- package/build/esm/hooks/index.d.ts +13 -13
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useAutoFocus.d.ts +2 -2
- package/build/esm/hooks/useAutoFocus.js.map +1 -1
- package/build/esm/hooks/useChildrenCounter.d.ts +7 -7
- package/build/esm/hooks/useChildrenCounter.js.map +1 -1
- package/build/esm/hooks/useControlledState.d.ts +3 -3
- package/build/esm/hooks/useFocusReturn.d.ts +2 -2
- package/build/esm/hooks/useFocusReturn.js.map +1 -1
- package/build/esm/hooks/useFocusState.d.ts +11 -11
- package/build/esm/hooks/useFocusState.js.map +1 -1
- package/build/esm/hooks/useGestureHandlers.d.ts +52 -52
- package/build/esm/hooks/useGestureHandlers.js.map +1 -1
- package/build/esm/hooks/useId.d.ts +1 -0
- package/build/esm/hooks/useId.js +25 -0
- package/build/esm/hooks/useId.js.map +1 -0
- package/build/esm/hooks/useMeasure.d.ts +7 -7
- package/build/esm/hooks/useMeasure.js.map +1 -1
- package/build/esm/hooks/useOnClickOutside.d.ts +2 -2
- package/build/esm/hooks/useOnClickOutside.js.map +1 -1
- package/build/esm/hooks/useOnKeyDown.d.ts +1 -1
- package/build/esm/hooks/useOnKeyDown.js.map +1 -1
- package/build/esm/hooks/useReducerMachine.d.ts +24 -24
- package/build/esm/hooks/useReducerMachine.js.map +1 -1
- package/build/esm/hooks/useRemoveBodyScroll.d.ts +2 -2
- package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
- package/build/esm/hooks/useScope.d.ts +11 -11
- package/build/esm/hooks/useScope.js.map +1 -1
- package/build/esm/hooks/useThrottle.d.ts +1 -1
- package/build/esm/hooks/useThrottle.js.map +1 -1
- package/build/esm/index.d.ts +15 -15
- package/build/esm/index.js.map +1 -1
- package/build/esm/utils/assign-ref.d.ts +3 -3
- package/build/esm/utils/assign-ref.js.map +1 -1
- package/build/esm/utils/assignRef.d.ts +3 -0
- package/build/esm/utils/assignRef.js +25 -0
- package/build/esm/utils/assignRef.js.map +1 -0
- package/build/esm/utils/can-use-dom.d.ts +1 -1
- package/build/esm/utils/can-use-dom.js.map +1 -1
- package/build/esm/utils/clamp.d.ts +1 -1
- package/build/esm/utils/clamp.js.map +1 -1
- package/build/esm/utils/context.d.ts +7 -7
- package/build/esm/utils/context.js.map +1 -1
- package/build/esm/utils/create-subscription.d.ts +4 -4
- package/build/esm/utils/create-subscription.js.map +1 -1
- package/build/esm/utils/get-circular-index.d.ts +1 -1
- package/build/esm/utils/get-circular-index.js.map +1 -1
- package/build/esm/utils/getCircularIndex.d.ts +1 -0
- package/build/esm/utils/getCircularIndex.js +8 -0
- package/build/esm/utils/getCircularIndex.js.map +1 -0
- package/build/esm/utils/index.d.ts +10 -10
- package/build/esm/utils/index.js.map +1 -1
- package/build/esm/utils/is-right-click.d.ts +6 -6
- package/build/esm/utils/is-right-click.js +4 -4
- package/build/esm/utils/is-right-click.js.map +1 -1
- package/build/esm/utils/owner-document.d.ts +7 -7
- package/build/esm/utils/owner-document.js +5 -5
- package/build/esm/utils/owner-document.js.map +1 -1
- package/build/esm/utils/polymorphic.d.ts +39 -39
- package/build/esm/utils/polymorphic.js.map +1 -1
- package/build/esm/utils/rubber-band-clamp.d.ts +2 -2
- package/build/esm/utils/rubber-band-clamp.js.map +1 -1
- package/build/esm/utils/rubberBandClamp.d.ts +2 -0
- package/build/esm/utils/rubberBandClamp.js +20 -0
- package/build/esm/utils/rubberBandClamp.js.map +1 -0
- package/build/esm/utils/use-stable-callback.d.ts +16 -16
- package/build/esm/utils/use-stable-callback.js +16 -16
- package/build/esm/utils/use-stable-callback.js.map +1 -1
- package/build/esm/utils/wrap-event.d.ts +3 -3
- package/build/esm/utils/wrap-event.js.map +1 -1
- package/build/esm/utils/wrapEvent.d.ts +3 -0
- package/build/esm/utils/wrapEvent.js +16 -0
- package/build/esm/utils/wrapEvent.js.map +1 -0
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +7270 -0
- package/package.json +2 -2
- package/src/Accordion/Accordion.story.tsx +74 -74
- package/src/Accordion/Accordion.tsx +59 -59
- package/src/Accordion/AccordionBody.tsx +52 -52
- package/src/Accordion/AccordionHeader.tsx +167 -167
- package/src/Accordion/AccordionItem.tsx +50 -50
- package/src/Accordion/context.ts +37 -37
- package/src/Accordion/index.ts +4 -4
- package/src/Accordion/scopeQuery.ts +7 -7
- package/src/Accordion/styles.css +21 -21
- package/src/CheckBox/CheckBox.tsx +41 -41
- package/src/CheckBox/index.ts +1 -1
- package/src/ComboBox/ComboBox.story.tsx +120 -120
- package/src/ComboBox/Combobox.tsx +148 -148
- package/src/ComboBox/ComboboxButton.tsx +61 -61
- package/src/ComboBox/ComboboxInput.tsx +187 -187
- package/src/ComboBox/ComboboxLabel.tsx +33 -33
- package/src/ComboBox/ComboboxList.tsx +47 -47
- package/src/ComboBox/ComboboxOption.tsx +111 -111
- package/src/ComboBox/ComboboxPopover.tsx +64 -64
- package/src/ComboBox/cities.ts +23194 -23194
- package/src/ComboBox/context.ts +35 -35
- package/src/ComboBox/hooks.tsx +451 -451
- package/src/ComboBox/index.ts +8 -8
- package/src/ComboBox/makeHash.ts +19 -19
- package/src/ComboBox/scopeQuery.ts +6 -6
- package/src/ComboBox/styles.css +32 -32
- package/src/FocusLock/FocusLock.tsx +66 -66
- package/src/FocusLock/index.ts +1 -1
- package/src/FocusLock/tabUtils.ts +40 -40
- package/src/FocusLock/useFocusLock.ts +56 -56
- package/src/List/List.story.tsx +18 -18
- package/src/List/List.tsx +17 -17
- package/src/List/ListItem.tsx +23 -23
- package/src/List/context.ts +19 -19
- package/src/List/index.ts +2 -2
- package/src/Menu/ContextMenu.story.tsx +73 -73
- package/src/Menu/ContextMenuTrigger.tsx +76 -76
- package/src/Menu/Menu.story.tsx +160 -160
- package/src/Menu/Menu.tsx +83 -83
- package/src/Menu/MenuButton.tsx +83 -83
- package/src/Menu/MenuComplex.story.tsx +58 -58
- package/src/Menu/MenuItem.tsx +88 -88
- package/src/Menu/MenuList.tsx +254 -254
- package/src/Menu/MenuPopover.tsx +35 -35
- package/src/Menu/context.ts +44 -44
- package/src/Menu/fixtures/countryList.ts +198 -198
- package/src/Menu/index.ts +6 -6
- package/src/Menu/scope.ts +7 -7
- package/src/Menu/styles.css +42 -42
- package/src/Modal/Modal.story.tsx +258 -258
- package/src/Modal/Modal.tsx +48 -48
- package/src/Modal/ModalBackdrop.tsx +78 -78
- package/src/Modal/NavDrawer.story.tsx +158 -158
- package/src/Modal/index.ts +2 -2
- package/src/Modal/styles.css +46 -46
- package/src/Popper/Popper.story.tsx +263 -263
- package/src/Popper/Popper.tsx +154 -154
- package/src/Popper/PopperArrow.tsx +35 -35
- package/src/Popper/context.ts +10 -10
- package/src/Popper/index.ts +3 -3
- package/src/Popper/styles.css +60 -60
- package/src/Portal/Portal.tsx +31 -20
- package/src/Portal/PortalSelectorProvider.tsx +24 -0
- package/src/Portal/index.ts +6 -1
- package/src/RadioButton/RadioButton.story.tsx +77 -77
- package/src/RadioButton/RadioButton.tsx +55 -55
- package/src/RadioButton/RadioGroup.tsx +60 -60
- package/src/RadioButton/context.ts +17 -17
- package/src/RadioButton/index.ts +2 -2
- package/src/SkipNav/SkipNav.tsx +16 -16
- package/src/SkipNav/index.tsx +1 -1
- package/src/Slider/Slider.story.tsx +45 -45
- package/src/Slider/Slider.tsx +1120 -1120
- package/src/Slider/index.ts +1 -1
- package/src/Slider/styles.css +131 -131
- package/src/Spinner/Spinner.story.tsx +31 -31
- package/src/Spinner/Spinner.tsx +117 -117
- package/src/Spinner/SpinnerButton.tsx +54 -54
- package/src/Spinner/context.ts +20 -20
- package/src/Spinner/index.ts +2 -2
- package/src/Spinner/styles.css +23 -23
- package/src/Tabs/Tab.story.tsx +80 -80
- package/src/Tabs/Tab.tsx +136 -136
- package/src/Tabs/TabList.tsx +71 -71
- package/src/Tabs/TabPanel.tsx +53 -53
- package/src/Tabs/TabPanels.tsx +30 -30
- package/src/Tabs/Tabs.tsx +46 -46
- package/src/Tabs/context.ts +30 -30
- package/src/Tabs/index.tsx +5 -5
- package/src/Tabs/scopeQuery.ts +6 -6
- package/src/Tooltip/Tooltip.story.tsx +61 -61
- package/src/Tooltip/Tooltip.tsx +50 -50
- package/src/Tooltip/index.ts +1 -1
- package/src/Tooltip/stateMachine.ts +192 -192
- package/src/Tooltip/styles.css +17 -17
- package/src/Tooltip/useTooltip.ts +136 -136
- package/src/hooks/index.ts +13 -13
- package/src/hooks/useAutoFocus.ts +22 -22
- package/src/hooks/useChildrenCounter.ts +51 -51
- package/src/hooks/useFocusReturn.ts +43 -43
- package/src/hooks/useFocusState.ts +30 -30
- package/src/hooks/useGestureHandlers.ts +286 -286
- package/src/hooks/useMeasure.ts +33 -33
- package/src/hooks/useOnClickOutside.ts +32 -32
- package/src/hooks/useOnKeyDown.ts +19 -19
- package/src/hooks/useReducerMachine.ts +60 -60
- package/src/hooks/useRemoveBodyScroll.ts +39 -39
- package/src/hooks/useScope.ts +52 -52
- package/src/hooks/useThrottle.ts +19 -19
- package/src/index.ts +20 -20
- package/src/utils/assign-ref.ts +27 -27
- package/src/utils/can-use-dom.ts +7 -7
- package/src/utils/clamp.ts +3 -3
- package/src/utils/context.tsx +48 -48
- package/src/utils/create-subscription.ts +16 -16
- package/src/utils/get-circular-index.ts +7 -7
- package/src/utils/index.ts +10 -10
- package/src/utils/is-right-click.ts +14 -14
- package/src/utils/owner-document.ts +13 -13
- package/src/utils/polymorphic.ts +78 -78
- package/src/utils/rubber-band-clamp.ts +25 -25
- package/src/utils/use-stable-callback.ts +58 -58
- 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,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 @@
|
|
|
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"}
|