@veracity/vui 2.13.6 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/calendar/calendar.d.ts +5 -0
- package/dist/cjs/calendar/calendar.d.ts.map +1 -0
- package/dist/cjs/calendar/calendar.js +130 -0
- package/dist/cjs/calendar/calendar.styles.d.ts +14 -0
- package/dist/cjs/calendar/calendar.styles.d.ts.map +1 -0
- package/dist/cjs/calendar/calendar.styles.js +71 -0
- package/dist/cjs/calendar/calendar.types.d.ts +81 -0
- package/dist/cjs/calendar/calendar.types.d.ts.map +1 -0
- package/dist/cjs/calendar/calendar.types.js +2 -0
- package/dist/cjs/calendar/components/calendarHeader.d.ts +16 -0
- package/dist/cjs/calendar/components/calendarHeader.d.ts.map +1 -0
- package/dist/cjs/calendar/components/calendarHeader.js +22 -0
- package/dist/cjs/calendar/components/dayPicker.d.ts +9 -0
- package/dist/cjs/calendar/components/dayPicker.d.ts.map +1 -0
- package/dist/cjs/calendar/components/dayPicker.js +29 -0
- package/dist/cjs/calendar/components/index.d.ts +6 -0
- package/dist/cjs/calendar/components/index.d.ts.map +1 -0
- package/dist/cjs/calendar/components/index.js +21 -0
- package/dist/cjs/calendar/components/monthPicker.d.ts +9 -0
- package/dist/cjs/calendar/components/monthPicker.d.ts.map +1 -0
- package/dist/cjs/calendar/components/monthPicker.js +12 -0
- package/dist/cjs/calendar/components/timeUnitHeader.d.ts +13 -0
- package/dist/cjs/calendar/components/timeUnitHeader.d.ts.map +1 -0
- package/dist/cjs/calendar/components/timeUnitHeader.js +26 -0
- package/dist/cjs/calendar/components/yearPicker.d.ts +9 -0
- package/dist/cjs/calendar/components/yearPicker.d.ts.map +1 -0
- package/dist/cjs/calendar/components/yearPicker.js +10 -0
- package/dist/cjs/calendar/consts.d.ts +7 -0
- package/dist/cjs/calendar/consts.d.ts.map +1 -0
- package/dist/cjs/calendar/consts.js +22 -0
- package/dist/cjs/calendar/hooks/index.d.ts +5 -0
- package/dist/cjs/calendar/hooks/index.d.ts.map +1 -0
- package/dist/cjs/calendar/hooks/index.js +20 -0
- package/dist/cjs/calendar/hooks/useBoundaries.d.ts +12 -0
- package/dist/cjs/calendar/hooks/useBoundaries.d.ts.map +1 -0
- package/dist/cjs/calendar/hooks/useBoundaries.js +16 -0
- package/dist/cjs/calendar/hooks/useCalendar.d.ts +8 -0
- package/dist/cjs/calendar/hooks/useCalendar.d.ts.map +1 -0
- package/dist/cjs/calendar/hooks/useCalendar.js +143 -0
- package/dist/cjs/calendar/hooks/useDefaultViewMonth.d.ts +8 -0
- package/dist/cjs/calendar/hooks/useDefaultViewMonth.d.ts.map +1 -0
- package/dist/cjs/calendar/hooks/useDefaultViewMonth.js +21 -0
- package/dist/cjs/calendar/hooks/useSelectedDate.d.ts +15 -0
- package/dist/cjs/calendar/hooks/useSelectedDate.d.ts.map +1 -0
- package/dist/cjs/calendar/hooks/useSelectedDate.js +20 -0
- package/dist/cjs/calendar/index.d.ts +5 -0
- package/dist/cjs/calendar/index.d.ts.map +1 -0
- package/dist/cjs/calendar/index.js +25 -0
- package/dist/cjs/calendar/theme.d.ts +8 -0
- package/dist/cjs/calendar/theme.d.ts.map +1 -0
- package/dist/cjs/calendar/theme.js +12 -0
- package/dist/cjs/calendar/utils.d.ts +26 -0
- package/dist/cjs/calendar/utils.d.ts.map +1 -0
- package/dist/cjs/calendar/utils.js +95 -0
- package/dist/cjs/core/theme.d.ts.map +1 -1
- package/dist/cjs/core/theme.js +2 -4
- package/dist/cjs/datePicker/components/pickerPanel.d.ts +6 -0
- package/dist/cjs/datePicker/components/pickerPanel.d.ts.map +1 -0
- package/dist/cjs/datePicker/components/pickerPanel.js +25 -0
- package/dist/cjs/datePicker/dateInput.d.ts +11 -0
- package/dist/cjs/datePicker/dateInput.d.ts.map +1 -0
- package/dist/cjs/datePicker/dateInput.js +92 -0
- package/dist/cjs/datePicker/datePicker.d.ts +5 -0
- package/dist/cjs/datePicker/datePicker.d.ts.map +1 -0
- package/dist/cjs/datePicker/datePicker.js +138 -0
- package/dist/cjs/datePicker/datePicker.types.d.ts +22 -0
- package/dist/cjs/datePicker/datePicker.types.d.ts.map +1 -0
- package/dist/cjs/datePicker/datePicker.types.js +2 -0
- package/dist/cjs/datePicker/index.d.ts +4 -0
- package/dist/cjs/datePicker/index.d.ts.map +1 -0
- package/dist/cjs/datePicker/index.js +24 -0
- package/dist/cjs/datePicker/theme.d.ts +8 -0
- package/dist/cjs/datePicker/theme.d.ts.map +1 -0
- package/dist/cjs/datePicker/theme.js +12 -0
- package/dist/cjs/header/loggedInHeader.d.ts.map +1 -1
- package/dist/cjs/icons/baseIcons/conc/conAnalytics.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conAnalytics.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conAnalytics.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conCircularEconomy.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conCircularEconomy.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conCircularEconomy.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conCleanAir.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conCleanAir.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conCleanAir.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conCleanWater.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conCleanWater.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conCleanWater.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conDataFabric.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conDataFabric.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conDataFabric.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conDeepSearch.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conDeepSearch.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conDeepSearch.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conElectricCar.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conElectricCar.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conElectricCar.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conEnergyEfficiency.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conEnergyEfficiency.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conEnergyEfficiency.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conIdentitySafe.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conIdentitySafe.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conIdentitySafe.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conMarketplace.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conMarketplace.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conMarketplace.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conNetwork.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conNetwork.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conNetwork.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conNotifications.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conNotifications.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conNotifications.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conNotifications2.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conNotifications2.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conNotifications2.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conRecycling.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conRecycling.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conRecycling.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWater.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWater.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWater.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWind.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWind.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conRenewableCertificateWind.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conServices.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conServices.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conServices.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conSmartPowerGrid.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conSmartPowerGrid.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conSmartPowerGrid.js +8 -0
- package/dist/cjs/icons/baseIcons/conc/conSustainableForestry.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conSustainableForestry.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conSustainableForestry.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conVeracityAdapter.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conVeracityAdapter.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conVeracityAdapter.js +7 -0
- package/dist/cjs/icons/baseIcons/conc/conWindmill.d.ts +4 -0
- package/dist/cjs/icons/baseIcons/conc/conWindmill.d.ts.map +1 -0
- package/dist/cjs/icons/baseIcons/conc/conWindmill.js +8 -0
- package/dist/cjs/icons/baseIcons/icons.d.ts +24 -3
- package/dist/cjs/icons/baseIcons/icons.d.ts.map +1 -1
- package/dist/cjs/icons/baseIcons/icons.js +57 -14
- package/dist/cjs/icons/baseIcons/types.d.ts +1 -1
- package/dist/cjs/icons/baseIcons/types.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/input/helpText.d.ts.map +1 -1
- package/dist/cjs/input/helpText.js +1 -1
- package/dist/cjs/tabs/tabs.d.ts.map +1 -1
- package/dist/cjs/tabs/tabs.js +8 -5
- package/dist/cjs/tabs/tabsNavBar.d.ts.map +1 -1
- package/dist/cjs/tabs/tabsNavBar.js +1 -1
- package/dist/cjs/tabs/theme.d.ts.map +1 -1
- package/dist/cjs/tabs/theme.js +0 -1
- package/dist/cjs/theme/components.d.ts +12 -0
- package/dist/cjs/theme/components.d.ts.map +1 -1
- package/dist/cjs/theme/components.js +78 -74
- package/dist/cjs/theme/defaultTheme.d.ts +12 -0
- package/dist/cjs/theme/defaultTheme.d.ts.map +1 -1
- package/dist/cjs/utils/dates.d.ts +20 -0
- package/dist/cjs/utils/dates.d.ts.map +1 -1
- package/dist/cjs/utils/dates.js +60 -1
- package/dist/cjs/utils/formatDate.d.ts +15 -0
- package/dist/cjs/utils/formatDate.d.ts.map +1 -0
- package/dist/cjs/utils/formatDate.js +51 -0
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -0
- package/dist/esm/calendar/calendar.d.ts +5 -0
- package/dist/esm/calendar/calendar.d.ts.map +1 -0
- package/dist/esm/calendar/calendar.js +89 -0
- package/dist/esm/calendar/calendar.styles.d.ts +14 -0
- package/dist/esm/calendar/calendar.styles.d.ts.map +1 -0
- package/dist/esm/calendar/calendar.styles.js +65 -0
- package/dist/esm/calendar/calendar.types.d.ts +81 -0
- package/dist/esm/calendar/calendar.types.d.ts.map +1 -0
- package/dist/esm/calendar/calendar.types.js +1 -0
- package/dist/esm/calendar/components/calendarHeader.d.ts +16 -0
- package/dist/esm/calendar/components/calendarHeader.d.ts.map +1 -0
- package/dist/esm/calendar/components/calendarHeader.js +15 -0
- package/dist/esm/calendar/components/dayPicker.d.ts +9 -0
- package/dist/esm/calendar/components/dayPicker.d.ts.map +1 -0
- package/dist/esm/calendar/components/dayPicker.js +22 -0
- package/dist/esm/calendar/components/index.d.ts +6 -0
- package/dist/esm/calendar/components/index.d.ts.map +1 -0
- package/dist/esm/calendar/components/index.js +5 -0
- package/dist/esm/calendar/components/monthPicker.d.ts +9 -0
- package/dist/esm/calendar/components/monthPicker.d.ts.map +1 -0
- package/dist/esm/calendar/components/monthPicker.js +5 -0
- package/dist/esm/calendar/components/timeUnitHeader.d.ts +13 -0
- package/dist/esm/calendar/components/timeUnitHeader.d.ts.map +1 -0
- package/dist/esm/calendar/components/timeUnitHeader.js +19 -0
- package/dist/esm/calendar/components/yearPicker.d.ts +9 -0
- package/dist/esm/calendar/components/yearPicker.d.ts.map +1 -0
- package/dist/esm/calendar/components/yearPicker.js +3 -0
- package/dist/esm/calendar/consts.d.ts +7 -0
- package/dist/esm/calendar/consts.d.ts.map +1 -0
- package/dist/esm/calendar/consts.js +19 -0
- package/dist/esm/calendar/hooks/index.d.ts +5 -0
- package/dist/esm/calendar/hooks/index.d.ts.map +1 -0
- package/dist/esm/calendar/hooks/index.js +4 -0
- package/dist/esm/calendar/hooks/useBoundaries.d.ts +12 -0
- package/dist/esm/calendar/hooks/useBoundaries.d.ts.map +1 -0
- package/dist/esm/calendar/hooks/useBoundaries.js +12 -0
- package/dist/esm/calendar/hooks/useCalendar.d.ts +8 -0
- package/dist/esm/calendar/hooks/useCalendar.d.ts.map +1 -0
- package/dist/esm/calendar/hooks/useCalendar.js +139 -0
- package/dist/esm/calendar/hooks/useDefaultViewMonth.d.ts +8 -0
- package/dist/esm/calendar/hooks/useDefaultViewMonth.d.ts.map +1 -0
- package/dist/esm/calendar/hooks/useDefaultViewMonth.js +17 -0
- package/dist/esm/calendar/hooks/useSelectedDate.d.ts +15 -0
- package/dist/esm/calendar/hooks/useSelectedDate.d.ts.map +1 -0
- package/dist/esm/calendar/hooks/useSelectedDate.js +16 -0
- package/dist/esm/calendar/index.d.ts +5 -0
- package/dist/esm/calendar/index.d.ts.map +1 -0
- package/dist/esm/calendar/index.js +4 -0
- package/dist/esm/calendar/theme.d.ts +8 -0
- package/dist/esm/calendar/theme.d.ts.map +1 -0
- package/dist/esm/calendar/theme.js +10 -0
- package/dist/esm/calendar/utils.d.ts +26 -0
- package/dist/esm/calendar/utils.d.ts.map +1 -0
- package/dist/esm/calendar/utils.js +81 -0
- package/dist/esm/core/theme.d.ts.map +1 -1
- package/dist/esm/core/theme.js +2 -4
- package/dist/esm/datePicker/components/pickerPanel.d.ts +6 -0
- package/dist/esm/datePicker/components/pickerPanel.d.ts.map +1 -0
- package/dist/esm/datePicker/components/pickerPanel.js +19 -0
- package/dist/esm/datePicker/dateInput.d.ts +11 -0
- package/dist/esm/datePicker/dateInput.d.ts.map +1 -0
- package/dist/esm/datePicker/dateInput.js +53 -0
- package/dist/esm/datePicker/datePicker.d.ts +5 -0
- package/dist/esm/datePicker/datePicker.d.ts.map +1 -0
- package/dist/esm/datePicker/datePicker.js +98 -0
- package/dist/esm/datePicker/datePicker.types.d.ts +22 -0
- package/dist/esm/datePicker/datePicker.types.d.ts.map +1 -0
- package/dist/esm/datePicker/datePicker.types.js +1 -0
- package/dist/esm/datePicker/index.d.ts +4 -0
- package/dist/esm/datePicker/index.d.ts.map +1 -0
- package/dist/esm/datePicker/index.js +3 -0
- package/dist/esm/datePicker/theme.d.ts +8 -0
- package/dist/esm/datePicker/theme.d.ts.map +1 -0
- package/dist/esm/datePicker/theme.js +10 -0
- package/dist/esm/header/loggedInHeader.d.ts.map +1 -1
- package/dist/esm/icons/baseIcons/conc/conAnalytics.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conAnalytics.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conAnalytics.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conCircularEconomy.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conCircularEconomy.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conCircularEconomy.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conCleanAir.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conCleanAir.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conCleanAir.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conCleanWater.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conCleanWater.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conCleanWater.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conDataFabric.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conDataFabric.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conDataFabric.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conDeepSearch.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conDeepSearch.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conDeepSearch.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conElectricCar.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conElectricCar.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conElectricCar.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conEnergyEfficiency.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conEnergyEfficiency.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conEnergyEfficiency.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conIdentitySafe.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conIdentitySafe.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conIdentitySafe.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conMarketplace.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conMarketplace.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conMarketplace.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conNetwork.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conNetwork.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conNetwork.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conNotifications.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conNotifications.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conNotifications.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conNotifications2.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conNotifications2.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conNotifications2.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conRecycling.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conRecycling.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conRecycling.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWater.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWater.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWater.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWind.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWind.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conRenewableCertificateWind.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conServices.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conServices.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conServices.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conSmartPowerGrid.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conSmartPowerGrid.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conSmartPowerGrid.js +6 -0
- package/dist/esm/icons/baseIcons/conc/conSustainableForestry.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conSustainableForestry.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conSustainableForestry.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conVeracityAdapter.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conVeracityAdapter.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conVeracityAdapter.js +5 -0
- package/dist/esm/icons/baseIcons/conc/conWindmill.d.ts +4 -0
- package/dist/esm/icons/baseIcons/conc/conWindmill.d.ts.map +1 -0
- package/dist/esm/icons/baseIcons/conc/conWindmill.js +6 -0
- package/dist/esm/icons/baseIcons/icons.d.ts +24 -3
- package/dist/esm/icons/baseIcons/icons.d.ts.map +1 -1
- package/dist/esm/icons/baseIcons/icons.js +24 -3
- package/dist/esm/icons/baseIcons/types.d.ts +1 -1
- package/dist/esm/icons/baseIcons/types.d.ts.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/input/helpText.d.ts.map +1 -1
- package/dist/esm/input/helpText.js +1 -1
- package/dist/esm/tabs/tabs.d.ts.map +1 -1
- package/dist/esm/tabs/tabs.js +7 -4
- package/dist/esm/tabs/tabsNavBar.d.ts.map +1 -1
- package/dist/esm/tabs/tabsNavBar.js +1 -1
- package/dist/esm/tabs/theme.d.ts.map +1 -1
- package/dist/esm/tabs/theme.js +0 -1
- package/dist/esm/theme/components.d.ts +12 -0
- package/dist/esm/theme/components.d.ts.map +1 -1
- package/dist/esm/theme/components.js +4 -0
- package/dist/esm/theme/defaultTheme.d.ts +12 -0
- package/dist/esm/theme/defaultTheme.d.ts.map +1 -1
- package/dist/esm/utils/dates.d.ts +20 -0
- package/dist/esm/utils/dates.d.ts.map +1 -1
- package/dist/esm/utils/dates.js +51 -0
- package/dist/esm/utils/formatDate.d.ts +15 -0
- package/dist/esm/utils/formatDate.d.ts.map +1 -0
- package/dist/esm/utils/formatDate.js +36 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/package.json +1 -1
- package/src/calendar/calendar.styles.ts +75 -0
- package/src/calendar/calendar.tsx +145 -0
- package/src/calendar/calendar.types.ts +91 -0
- package/src/calendar/components/calendarHeader.tsx +56 -0
- package/src/calendar/components/dayPicker.tsx +55 -0
- package/src/calendar/components/index.ts +5 -0
- package/src/calendar/components/monthPicker.tsx +26 -0
- package/src/calendar/components/timeUnitHeader.tsx +47 -0
- package/src/calendar/components/yearPicker.tsx +24 -0
- package/src/calendar/consts.ts +24 -0
- package/src/calendar/hooks/index.ts +4 -0
- package/src/calendar/hooks/useBoundaries.ts +16 -0
- package/src/calendar/hooks/useCalendar.ts +181 -0
- package/src/calendar/hooks/useDefaultViewMonth.ts +18 -0
- package/src/calendar/hooks/useSelectedDate.ts +20 -0
- package/src/calendar/index.ts +4 -0
- package/src/calendar/theme.ts +14 -0
- package/src/calendar/utils.ts +100 -0
- package/src/core/theme.ts +2 -4
- package/src/datePicker/components/pickerPanel.tsx +22 -0
- package/src/datePicker/dateInput.tsx +77 -0
- package/src/datePicker/datePicker.tsx +172 -0
- package/src/datePicker/datePicker.types.ts +25 -0
- package/src/datePicker/index.ts +3 -0
- package/src/datePicker/theme.ts +14 -0
- package/src/header/loggedInHeader.tsx +0 -1
- package/src/icons/baseIcons/conc/conAnalytics.ts +9 -0
- package/src/icons/baseIcons/conc/conCircularEconomy.ts +9 -0
- package/src/icons/baseIcons/conc/conCleanAir.ts +8 -0
- package/src/icons/baseIcons/conc/conCleanWater.ts +8 -0
- package/src/icons/baseIcons/conc/conDataFabric.ts +8 -0
- package/src/icons/baseIcons/conc/conDeepSearch.ts +9 -0
- package/src/icons/baseIcons/conc/conElectricCar.ts +9 -0
- package/src/icons/baseIcons/conc/conEnergyEfficiency.ts +8 -0
- package/src/icons/baseIcons/conc/conIdentitySafe.ts +8 -0
- package/src/icons/baseIcons/conc/conMarketplace.ts +8 -0
- package/src/icons/baseIcons/conc/conNetwork.ts +8 -0
- package/src/icons/baseIcons/conc/conNotifications.ts +8 -0
- package/src/icons/baseIcons/conc/conNotifications2.ts +8 -0
- package/src/icons/baseIcons/conc/conRecycling.ts +9 -0
- package/src/icons/baseIcons/conc/conRenewableCertificateWater.ts +9 -0
- package/src/icons/baseIcons/conc/conRenewableCertificateWind.ts +9 -0
- package/src/icons/baseIcons/conc/conServices.ts +8 -0
- package/src/icons/baseIcons/conc/conSmartPowerGrid.ts +9 -0
- package/src/icons/baseIcons/conc/conSustainableForestry.ts +8 -0
- package/src/icons/baseIcons/conc/conVeracityAdapter.ts +8 -0
- package/src/icons/baseIcons/conc/conWindmill.ts +9 -0
- package/src/icons/baseIcons/icons.ts +24 -3
- package/src/icons/baseIcons/types.ts +24 -3
- package/src/index.ts +2 -0
- package/src/input/helpText.tsx +1 -0
- package/src/tabs/tabs.tsx +7 -4
- package/src/tabs/tabsNavBar.tsx +3 -1
- package/src/tabs/theme.ts +0 -1
- package/src/theme/components.ts +4 -0
- package/src/utils/dates.ts +60 -0
- package/src/utils/formatDate.ts +63 -0
- package/src/utils/index.ts +1 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { BoxProps } from '../box'
|
|
2
|
+
import { ThemingProps } from '../theme'
|
|
3
|
+
|
|
4
|
+
export interface DateRange {
|
|
5
|
+
startDate?: Date
|
|
6
|
+
endDate?: Date
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type FlowDirection = 'next' | 'prev'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Mode for this calendar
|
|
13
|
+
* Should it handle from date, to date or single date mode
|
|
14
|
+
*/
|
|
15
|
+
export type CalendarMode = 'exact' | 'from' | 'to' | 'range'
|
|
16
|
+
|
|
17
|
+
export interface DefaultViewMonthProps {
|
|
18
|
+
boundaries?: DateRange
|
|
19
|
+
isStartDate?: boolean
|
|
20
|
+
selectedDate?: Date
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface MonthProps {
|
|
24
|
+
boundaries?: DateRange
|
|
25
|
+
fixedNumberOfWeeks?: boolean
|
|
26
|
+
mode: CalendarMode
|
|
27
|
+
selectedDates?: DateRange
|
|
28
|
+
timeUnitMode?: TimeUnitMode
|
|
29
|
+
viewDate: Date
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type ItemProps = {
|
|
33
|
+
boundary?: boolean
|
|
34
|
+
current?: boolean
|
|
35
|
+
isDisabled?: boolean
|
|
36
|
+
isHidden?: boolean
|
|
37
|
+
isToday?: boolean
|
|
38
|
+
isSelected?: boolean
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Single time item like day in a month, month in a year and year in multiple years
|
|
43
|
+
*/
|
|
44
|
+
export interface TimeItem {
|
|
45
|
+
/** item is at the edge for a range, marking either start or end of it */
|
|
46
|
+
boundary: boolean
|
|
47
|
+
/** item is clicked and selected by the user */
|
|
48
|
+
current: boolean
|
|
49
|
+
/** the actual time item */
|
|
50
|
+
date: Date
|
|
51
|
+
/** disabled because out of bounds */
|
|
52
|
+
isDisabled: boolean
|
|
53
|
+
/** item should be hidden, for days we hide days that are not in the current month,
|
|
54
|
+
* but still are rendered due to weekDays */
|
|
55
|
+
isHidden: boolean
|
|
56
|
+
/** item is in the selected range between two dates */
|
|
57
|
+
isSelected: boolean
|
|
58
|
+
/** the date is today*/
|
|
59
|
+
isToday: boolean
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* All the date items in a view and whether next/prev button should be disabled
|
|
64
|
+
*/
|
|
65
|
+
export interface TimeResult {
|
|
66
|
+
items: TimeItem[]
|
|
67
|
+
nextDisabled: boolean
|
|
68
|
+
prevDisabled: boolean
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Time mode for calendar, display days in month, months in year or years in multiple years
|
|
73
|
+
*/
|
|
74
|
+
export type TimeUnitMode = 'day' | 'month' | 'year'
|
|
75
|
+
|
|
76
|
+
export type CalendarProps = Omit<BoxProps, 'size' | 'variant'> &
|
|
77
|
+
ThemingProps<'Calendar'> & {
|
|
78
|
+
/** Allowed range to select from */
|
|
79
|
+
boundaries?: DateRange
|
|
80
|
+
className?: string
|
|
81
|
+
disabled?: boolean
|
|
82
|
+
/** Including always 6 weeks into a month (used to have stable height in the calendar) */
|
|
83
|
+
fixedNumberOfWeeks?: boolean
|
|
84
|
+
isStartDate?: boolean
|
|
85
|
+
/** Calendar select mode: 'exact' | 'from' | 'to' | 'range' @default 'exact' */
|
|
86
|
+
mode: CalendarMode
|
|
87
|
+
/** On selecting a day */
|
|
88
|
+
onSelectDates?: (value: DateRange) => void
|
|
89
|
+
/** Selected date */
|
|
90
|
+
selectedDates?: DateRange
|
|
91
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React, { FC } from 'react'
|
|
2
|
+
|
|
3
|
+
import Box from '../../box'
|
|
4
|
+
import { IconButton } from '../../button'
|
|
5
|
+
import { cs } from '../../utils'
|
|
6
|
+
import { FlowDirection, TimeUnitMode } from '../calendar.types'
|
|
7
|
+
import { TimeUnitHeader } from './timeUnitHeader'
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
nextDisabled?: boolean
|
|
11
|
+
onChangeViewItem: (direction: FlowDirection) => void
|
|
12
|
+
onSetTimeUnitMode: (mode: TimeUnitMode) => void
|
|
13
|
+
prevDisabled?: boolean
|
|
14
|
+
timeUnitMode: TimeUnitMode
|
|
15
|
+
viewMonth: Date
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const size = 40
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Header for the calendar
|
|
22
|
+
*/
|
|
23
|
+
export const CalendarHeader: FC<Props> = ({
|
|
24
|
+
nextDisabled,
|
|
25
|
+
onChangeViewItem,
|
|
26
|
+
onSetTimeUnitMode,
|
|
27
|
+
prevDisabled,
|
|
28
|
+
timeUnitMode,
|
|
29
|
+
viewMonth
|
|
30
|
+
}) => (
|
|
31
|
+
<Box borderBottom="1px solid lightgray" centerV className={cs('vui-calendar-header')}>
|
|
32
|
+
<Box className="vui-calendar-header-left">
|
|
33
|
+
<TimeUnitHeader onSetTimeUnitMode={onSetTimeUnitMode} timeUnitMode={timeUnitMode} viewMonth={viewMonth} />
|
|
34
|
+
</Box>
|
|
35
|
+
<Box className="vui-calendar-header-right" flex="1" justify="flex-end">
|
|
36
|
+
<IconButton
|
|
37
|
+
className="icon"
|
|
38
|
+
disabled={prevDisabled}
|
|
39
|
+
h={size}
|
|
40
|
+
icon="falChevronLeft"
|
|
41
|
+
onClick={() => onChangeViewItem('prev')}
|
|
42
|
+
size="sm"
|
|
43
|
+
w={size}
|
|
44
|
+
/>
|
|
45
|
+
<IconButton
|
|
46
|
+
className="icon"
|
|
47
|
+
disabled={nextDisabled}
|
|
48
|
+
h={size}
|
|
49
|
+
icon="falChevronRight"
|
|
50
|
+
onClick={() => onChangeViewItem('next')}
|
|
51
|
+
size="sm"
|
|
52
|
+
w={size}
|
|
53
|
+
/>
|
|
54
|
+
</Box>
|
|
55
|
+
</Box>
|
|
56
|
+
)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import Box from '../../box'
|
|
4
|
+
import { styled, th } from '../../core'
|
|
5
|
+
import { cs } from '../../utils'
|
|
6
|
+
import { CalendarItem, CalendarItemsContainer } from '../calendar.styles'
|
|
7
|
+
import { ItemProps, TimeResult } from '../calendar.types'
|
|
8
|
+
import { weekDays } from '../consts'
|
|
9
|
+
|
|
10
|
+
type DayPickerProps = {
|
|
11
|
+
calendar: TimeResult
|
|
12
|
+
onSelectDay?: (date: Date) => void
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const DayItem = styled(CalendarItem)<ItemProps>`
|
|
16
|
+
aspect-ratio: 1;
|
|
17
|
+
position: relative;
|
|
18
|
+
font-size: 14px;
|
|
19
|
+
font-weight: 500;
|
|
20
|
+
width: 40px;
|
|
21
|
+
height: 40px;
|
|
22
|
+
color: ${th.color('seaBlue.main')};
|
|
23
|
+
`
|
|
24
|
+
|
|
25
|
+
const DaysContainer = styled(CalendarItemsContainer)`
|
|
26
|
+
grid-template-columns: repeat(7, 1fr);
|
|
27
|
+
grid-template-rows: auto;
|
|
28
|
+
`
|
|
29
|
+
|
|
30
|
+
export const DayPicker = ({ calendar, onSelectDay }: DayPickerProps) => (
|
|
31
|
+
<DaysContainer className={cs('vui-day-picker')} mt={1} wrap>
|
|
32
|
+
{weekDays.map((day, index) => (
|
|
33
|
+
<Box
|
|
34
|
+
border={0}
|
|
35
|
+
className="dayHeader"
|
|
36
|
+
color="seaBlue.main"
|
|
37
|
+
fontSize={16}
|
|
38
|
+
fontWeight={500}
|
|
39
|
+
key={`week-day-${index}`}
|
|
40
|
+
>
|
|
41
|
+
{day}
|
|
42
|
+
</Box>
|
|
43
|
+
))}
|
|
44
|
+
{calendar.items.map(item => (
|
|
45
|
+
<DayItem
|
|
46
|
+
className={cs('vui-day-item')}
|
|
47
|
+
key={item.date.getTime()}
|
|
48
|
+
onClick={(!item.isDisabled && onSelectDay?.(item.date)) || undefined}
|
|
49
|
+
{...item}
|
|
50
|
+
>
|
|
51
|
+
{item.date.getUTCDate()}
|
|
52
|
+
</DayItem>
|
|
53
|
+
))}
|
|
54
|
+
</DaysContainer>
|
|
55
|
+
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { cs } from '../../utils'
|
|
4
|
+
import { CalendarItem as MonthItem, CalendarItemsContainer } from '../calendar.styles'
|
|
5
|
+
import { TimeResult } from '../calendar.types'
|
|
6
|
+
import { monthsShort } from '../consts'
|
|
7
|
+
|
|
8
|
+
type MonthPickerProps = {
|
|
9
|
+
calendar: TimeResult
|
|
10
|
+
onSelectMonth?: (date: Date) => void
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const MonthPicker = ({ calendar, onSelectMonth }: MonthPickerProps) => (
|
|
14
|
+
<CalendarItemsContainer className={cs('vui-month-picker')} gridTemplateRows="repeat(4, 65px)">
|
|
15
|
+
{calendar.items.map(item => (
|
|
16
|
+
<MonthItem
|
|
17
|
+
fontWeight={500}
|
|
18
|
+
key={item.date.getTime()}
|
|
19
|
+
onClick={(!item.isDisabled && onSelectMonth && onSelectMonth(item.date)) || undefined}
|
|
20
|
+
{...item}
|
|
21
|
+
>
|
|
22
|
+
{monthsShort[item.date.getUTCMonth()]}
|
|
23
|
+
</MonthItem>
|
|
24
|
+
))}
|
|
25
|
+
</CalendarItemsContainer>
|
|
26
|
+
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React, { FC } from 'react'
|
|
2
|
+
|
|
3
|
+
import { Box } from '../../box'
|
|
4
|
+
import { Button } from '../../button'
|
|
5
|
+
import { cs } from '../../utils'
|
|
6
|
+
import { TimeUnitMode } from '../calendar.types'
|
|
7
|
+
import { months } from '../consts'
|
|
8
|
+
import { isDay, isMonth, isYear } from '../utils'
|
|
9
|
+
|
|
10
|
+
const h = 40
|
|
11
|
+
const fontSize = 16
|
|
12
|
+
|
|
13
|
+
type TimeUnitHeaderProps = {
|
|
14
|
+
onSetTimeUnitMode: (mode: TimeUnitMode) => void
|
|
15
|
+
timeUnitMode: TimeUnitMode
|
|
16
|
+
viewMonth: Date
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Displays the header title with the month and year being viewed
|
|
21
|
+
*/
|
|
22
|
+
export const TimeUnitHeader: FC<TimeUnitHeaderProps> = ({ onSetTimeUnitMode, timeUnitMode, viewMonth }) => {
|
|
23
|
+
return (
|
|
24
|
+
<Box center className={cs('vui-time-unit-header')} cursor="pointer" flex="1" justify="start">
|
|
25
|
+
{isDay(timeUnitMode) && (
|
|
26
|
+
<>
|
|
27
|
+
<Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('month')} variant="tertiaryDark">
|
|
28
|
+
{months[viewMonth.getUTCMonth()]}
|
|
29
|
+
</Button>
|
|
30
|
+
<Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('year')} variant="tertiaryDark">
|
|
31
|
+
{viewMonth.getUTCFullYear()}
|
|
32
|
+
</Button>
|
|
33
|
+
</>
|
|
34
|
+
)}
|
|
35
|
+
{isMonth(timeUnitMode) && (
|
|
36
|
+
<Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('year')} variant="tertiaryDark">
|
|
37
|
+
{viewMonth.getUTCFullYear()}
|
|
38
|
+
</Button>
|
|
39
|
+
)}
|
|
40
|
+
{isYear(timeUnitMode) && (
|
|
41
|
+
<Button fontSize={fontSize} h={h} onClick={() => onSetTimeUnitMode('day')} variant="tertiaryDark">
|
|
42
|
+
Year
|
|
43
|
+
</Button>
|
|
44
|
+
)}
|
|
45
|
+
</Box>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
|
|
3
|
+
import { CalendarItem as YearItem, CalendarItemsContainer } from '../calendar.styles'
|
|
4
|
+
import { TimeResult } from '../calendar.types'
|
|
5
|
+
|
|
6
|
+
type YearPickerProps = {
|
|
7
|
+
calendar: TimeResult
|
|
8
|
+
onSelectYear?: (date: Date) => void
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const YearPicker = ({ calendar, onSelectYear }: YearPickerProps) => (
|
|
12
|
+
<CalendarItemsContainer className="vui-year-picker">
|
|
13
|
+
{calendar.items.map(item => (
|
|
14
|
+
<YearItem
|
|
15
|
+
fontWeight={500}
|
|
16
|
+
key={item.date.getTime()}
|
|
17
|
+
onClick={(!item.isDisabled && onSelectYear?.(item.date)) || undefined}
|
|
18
|
+
{...item}
|
|
19
|
+
>
|
|
20
|
+
{item.date.getUTCFullYear()}
|
|
21
|
+
</YearItem>
|
|
22
|
+
))}
|
|
23
|
+
</CalendarItemsContainer>
|
|
24
|
+
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const viewYears = 12
|
|
2
|
+
|
|
3
|
+
export const maxDateTimestamp = '9000-12-31T23:59:59Z'
|
|
4
|
+
|
|
5
|
+
export const minDateTimestamp = '1753-01-02T00:00:00Z'
|
|
6
|
+
|
|
7
|
+
export const months = [
|
|
8
|
+
'January',
|
|
9
|
+
'February',
|
|
10
|
+
'March',
|
|
11
|
+
'April',
|
|
12
|
+
'May',
|
|
13
|
+
'June',
|
|
14
|
+
'July',
|
|
15
|
+
'August',
|
|
16
|
+
'September',
|
|
17
|
+
'October',
|
|
18
|
+
'November',
|
|
19
|
+
'December'
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
export const monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
|
|
23
|
+
|
|
24
|
+
export const weekDays = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DateRange } from '../calendar.types'
|
|
2
|
+
import { maxDateTimestamp, minDateTimestamp } from '../consts'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Calculates boundaries for max/min dates allowed
|
|
6
|
+
* Memoized so it will only recalculate when the boundaries changes
|
|
7
|
+
*/
|
|
8
|
+
export const useBoundaries = ({ boundaries }: { boundaries?: DateRange }) => {
|
|
9
|
+
const min = new Date(minDateTimestamp)
|
|
10
|
+
const max = new Date(maxDateTimestamp)
|
|
11
|
+
|
|
12
|
+
const minDateTime = boundaries?.startDate || min
|
|
13
|
+
const maxDateTime = boundaries?.endDate || max
|
|
14
|
+
|
|
15
|
+
return { maxDateTime, minDateTime }
|
|
16
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { useMemo } from 'react'
|
|
2
|
+
|
|
3
|
+
import { generateDateByUTCValue, getDateUTCValue, sameDate, sameYear, sameYearSameMonth } from '../../utils'
|
|
4
|
+
import { MonthProps, TimeItem, TimeResult } from '../calendar.types'
|
|
5
|
+
import { viewYears } from '../consts'
|
|
6
|
+
import { getNextDate, isDay, isExact, isFrom, isMonth, isRange, isTo, isYear } from '../utils'
|
|
7
|
+
import { useBoundaries } from './useBoundaries'
|
|
8
|
+
import { useSelectedDate } from './useSelectedDate'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Main hook for doing calendar calculations
|
|
12
|
+
* Calculates for all time unit modes: day, month and year
|
|
13
|
+
* Depends on useBoundaries and useSelectedDate to do initial setup
|
|
14
|
+
*/
|
|
15
|
+
export const useCalendar = ({
|
|
16
|
+
boundaries,
|
|
17
|
+
selectedDates,
|
|
18
|
+
mode = 'exact',
|
|
19
|
+
timeUnitMode,
|
|
20
|
+
viewDate,
|
|
21
|
+
fixedNumberOfWeeks
|
|
22
|
+
}: MonthProps) => {
|
|
23
|
+
const boundariesProcessed = useBoundaries({ boundaries })
|
|
24
|
+
const selectedProcessed = useSelectedDate({ selectedDates, mode })
|
|
25
|
+
|
|
26
|
+
return useMemo(() => {
|
|
27
|
+
const { maxDateTime, minDateTime } = boundariesProcessed
|
|
28
|
+
const { currentDateTime, maxSelectedDateTime, minSelectedDateTime } = selectedProcessed
|
|
29
|
+
const { utcYear: viewDateYear, utcMonth: viewDateMonth } = getDateUTCValue(viewDate)
|
|
30
|
+
|
|
31
|
+
let calendarFirstDay: Date
|
|
32
|
+
let calendarLastDay: Date
|
|
33
|
+
let nextFirstDay: Date
|
|
34
|
+
let prevLastDay: Date
|
|
35
|
+
let firstDay: Date
|
|
36
|
+
let lastDay: Date
|
|
37
|
+
|
|
38
|
+
if (isDay(timeUnitMode)) {
|
|
39
|
+
firstDay = generateDateByUTCValue(viewDateYear, viewDateMonth, 1)
|
|
40
|
+
lastDay = generateDateByUTCValue(viewDateYear, viewDateMonth + 1, 0) // lastDay
|
|
41
|
+
|
|
42
|
+
nextFirstDay = generateDateByUTCValue(viewDateYear, viewDateMonth + 1, 1)
|
|
43
|
+
prevLastDay = generateDateByUTCValue(viewDateYear, viewDateMonth, 0)
|
|
44
|
+
|
|
45
|
+
const weekdayFirst = firstDay.getUTCDay()
|
|
46
|
+
const weekdayLast = lastDay.getUTCDay()
|
|
47
|
+
|
|
48
|
+
// Monday preceding the month (or first day of the month if it's on a Monday)
|
|
49
|
+
calendarFirstDay =
|
|
50
|
+
weekdayFirst === 0
|
|
51
|
+
? new Date(Date.UTC(viewDateYear, viewDateMonth, 2 - 7))
|
|
52
|
+
: new Date(Date.UTC(viewDateYear, viewDateMonth, 2 - weekdayFirst))
|
|
53
|
+
|
|
54
|
+
// Sunday after the month (or last day of the month if it's on a Sunday)
|
|
55
|
+
calendarLastDay =
|
|
56
|
+
weekdayLast === 0
|
|
57
|
+
? new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 0))
|
|
58
|
+
: new Date(Date.UTC(viewDateYear, viewDateMonth + 1, 8 - weekdayLast))
|
|
59
|
+
|
|
60
|
+
// If calendar must contain constant number of weeks (6 weeks)
|
|
61
|
+
// Missing weeks will be added to the end of the month
|
|
62
|
+
const numberOfWeeks = Math.round((+calendarLastDay - +calendarFirstDay) / (7 * 24 * 60 * 60 * 1000))
|
|
63
|
+
if (fixedNumberOfWeeks) {
|
|
64
|
+
for (let week = numberOfWeeks; week < 6; week++) {
|
|
65
|
+
calendarLastDay = generateDateByUTCValue(
|
|
66
|
+
calendarLastDay.getUTCFullYear(),
|
|
67
|
+
calendarLastDay.getUTCMonth(),
|
|
68
|
+
calendarLastDay.getUTCDate() + 7
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} else if (isMonth(timeUnitMode)) {
|
|
73
|
+
calendarFirstDay = firstDay = generateDateByUTCValue(viewDateYear, 0, 1)
|
|
74
|
+
calendarLastDay = lastDay = generateDateByUTCValue(viewDateYear, 11, 31)
|
|
75
|
+
nextFirstDay = generateDateByUTCValue(viewDateYear + 1, 0, 1)
|
|
76
|
+
prevLastDay = generateDateByUTCValue(viewDateYear - 1, 11, 31)
|
|
77
|
+
} else {
|
|
78
|
+
const calendarStartYear = new Date().getUTCFullYear() - viewYears / 2
|
|
79
|
+
const diffYears = calendarStartYear - viewDateYear
|
|
80
|
+
|
|
81
|
+
const startYear = calendarStartYear - Math.ceil(diffYears / viewYears) * viewYears
|
|
82
|
+
const endYear = startYear + viewYears - 1
|
|
83
|
+
|
|
84
|
+
if (startYear === 1753) calendarFirstDay = firstDay = generateDateByUTCValue(startYear, 0, 2)
|
|
85
|
+
else calendarFirstDay = firstDay = generateDateByUTCValue(startYear, 0, 1)
|
|
86
|
+
|
|
87
|
+
calendarLastDay = lastDay = generateDateByUTCValue(endYear, 11, 31)
|
|
88
|
+
nextFirstDay = generateDateByUTCValue(endYear + 1, 0, 1)
|
|
89
|
+
prevLastDay = generateDateByUTCValue(startYear - 1, 11, 31)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const items: TimeItem[] = []
|
|
93
|
+
|
|
94
|
+
// Loops between first and last date
|
|
95
|
+
let dateItem = calendarFirstDay
|
|
96
|
+
do {
|
|
97
|
+
const isHidden = dateItem < firstDay || dateItem >= lastDay
|
|
98
|
+
const isToday = sameDate(dateItem, new Date())
|
|
99
|
+
const { utcYear: minDateYear, utcMonth: minDateMonth } = getDateUTCValue(minDateTime)
|
|
100
|
+
|
|
101
|
+
let minUnitModeDate = minDateTime
|
|
102
|
+
if (isMonth(timeUnitMode))
|
|
103
|
+
// Need to compare with the first day of the month to decide if the month is disabled in the month overview
|
|
104
|
+
minUnitModeDate = generateDateByUTCValue(minDateYear, minDateMonth, 1)
|
|
105
|
+
else if (isYear(timeUnitMode))
|
|
106
|
+
// Need to compare with the first day of the year to decide if the year is disabled in the year overview
|
|
107
|
+
minUnitModeDate = generateDateByUTCValue(minDateYear, 0, 1)
|
|
108
|
+
|
|
109
|
+
const isDisabled = dateItem < minUnitModeDate || dateItem > maxDateTime ? true : false
|
|
110
|
+
|
|
111
|
+
// The calendar only select a single date
|
|
112
|
+
const isExactSelected = isExact(mode) && minSelectedDateTime && +dateItem === +minSelectedDateTime
|
|
113
|
+
|
|
114
|
+
// The calendar selects a range
|
|
115
|
+
const inRangeLow = minSelectedDateTime && dateItem >= minSelectedDateTime
|
|
116
|
+
const inRangeHigh = maxSelectedDateTime && dateItem <= maxSelectedDateTime
|
|
117
|
+
|
|
118
|
+
const inRange =
|
|
119
|
+
!isExact(mode) &&
|
|
120
|
+
((!isDisabled && inRangeLow && (!maxSelectedDateTime || inRangeHigh)) ||
|
|
121
|
+
(inRangeHigh && (!minSelectedDateTime || inRangeLow)))
|
|
122
|
+
|
|
123
|
+
const isRangeSelected = isRange(mode) && inRange
|
|
124
|
+
const isFromSelected = isFrom(mode) && inRangeLow
|
|
125
|
+
const isToSelected = isTo(mode) && inRangeHigh
|
|
126
|
+
|
|
127
|
+
const isSelected = !!(isExactSelected || isFromSelected || isToSelected || isRangeSelected)
|
|
128
|
+
|
|
129
|
+
let maxSelectedCheck = maxSelectedDateTime
|
|
130
|
+
let minSelectedCheck = minSelectedDateTime
|
|
131
|
+
|
|
132
|
+
if (isYear(timeUnitMode)) {
|
|
133
|
+
if (maxSelectedCheck) maxSelectedCheck = generateDateByUTCValue(maxSelectedCheck.getUTCFullYear(), 0, 1)
|
|
134
|
+
if (minSelectedCheck) minSelectedCheck = generateDateByUTCValue(minSelectedCheck.getUTCFullYear(), 0, 1)
|
|
135
|
+
}
|
|
136
|
+
if (isMonth(timeUnitMode)) {
|
|
137
|
+
if (maxSelectedCheck)
|
|
138
|
+
maxSelectedCheck = generateDateByUTCValue(
|
|
139
|
+
maxSelectedCheck.getUTCFullYear(),
|
|
140
|
+
maxSelectedCheck.getUTCMonth(),
|
|
141
|
+
1
|
|
142
|
+
)
|
|
143
|
+
if (minSelectedCheck)
|
|
144
|
+
minSelectedCheck = generateDateByUTCValue(
|
|
145
|
+
minSelectedCheck.getUTCFullYear(),
|
|
146
|
+
minSelectedCheck.getUTCMonth(),
|
|
147
|
+
1
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const boundary = !isTo(mode) && sameDate(dateItem, minSelectedCheck)
|
|
152
|
+
|
|
153
|
+
let current: boolean
|
|
154
|
+
if (isDay(timeUnitMode)) current = sameDate(dateItem, currentDateTime)
|
|
155
|
+
else if (isMonth(timeUnitMode)) current = sameYearSameMonth(dateItem, currentDateTime)
|
|
156
|
+
else current = sameYear(dateItem, currentDateTime)
|
|
157
|
+
|
|
158
|
+
items.push({
|
|
159
|
+
date: dateItem,
|
|
160
|
+
isHidden,
|
|
161
|
+
isToday,
|
|
162
|
+
isDisabled: boundary ? false : isDisabled,
|
|
163
|
+
isSelected,
|
|
164
|
+
boundary,
|
|
165
|
+
current
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
dateItem = getNextDate(dateItem, timeUnitMode)
|
|
169
|
+
} while (dateItem <= calendarLastDay)
|
|
170
|
+
|
|
171
|
+
// Disables next/prev buttons
|
|
172
|
+
const prevDisabled = minDateTime > prevLastDay
|
|
173
|
+
const nextDisabled = maxDateTime < nextFirstDay
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
items,
|
|
177
|
+
prevDisabled,
|
|
178
|
+
nextDisabled
|
|
179
|
+
} as TimeResult
|
|
180
|
+
}, [boundaries, selectedDates, mode, timeUnitMode, viewDate])
|
|
181
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DefaultViewMonthProps } from '../calendar.types'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the default view date, either using selected date, current date or boundaries
|
|
5
|
+
* Used when initializing, after that viewDate will be set
|
|
6
|
+
* Memoized so will only recalculate when boundaries or selectedDate changes
|
|
7
|
+
*/
|
|
8
|
+
export const useDefaultViewMonth = ({ boundaries, selectedDate, isStartDate }: DefaultViewMonthProps) => {
|
|
9
|
+
if (selectedDate) return selectedDate
|
|
10
|
+
|
|
11
|
+
const currentDate = new Date()
|
|
12
|
+
if (!boundaries) return currentDate
|
|
13
|
+
|
|
14
|
+
if (boundaries.endDate && currentDate > boundaries.endDate && !isStartDate) return boundaries.endDate
|
|
15
|
+
if (boundaries.startDate && currentDate > boundaries.startDate && isStartDate) return boundaries.startDate
|
|
16
|
+
|
|
17
|
+
return currentDate
|
|
18
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CalendarMode, DateRange } from '../calendar.types'
|
|
2
|
+
import { isExact, isFrom } from '../utils'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Calculate the selected dates
|
|
6
|
+
* If we are in single calendar mode, will use the startDate as selected date
|
|
7
|
+
* Memoized so will only recalculate when selectedDates or mode changes
|
|
8
|
+
*/
|
|
9
|
+
export const useSelectedDate = ({ selectedDates, mode }: { mode: CalendarMode; selectedDates?: DateRange }) => {
|
|
10
|
+
const currentDateTime = isFrom(mode) || isExact(mode) ? selectedDates?.startDate : selectedDates?.endDate
|
|
11
|
+
|
|
12
|
+
const minSelectedDateTime = selectedDates?.startDate || undefined
|
|
13
|
+
const maxSelectedDateTime = selectedDates?.endDate || undefined
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
currentDateTime,
|
|
17
|
+
maxSelectedDateTime,
|
|
18
|
+
minSelectedDateTime
|
|
19
|
+
}
|
|
20
|
+
}
|