@salt-ds/lab 1.0.0-alpha.89 → 1.0.0-alpha.90
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/CHANGELOG.md +103 -0
- package/css/salt-lab.css +120 -643
- package/dist-cjs/calendar/index.js +61 -0
- package/dist-cjs/calendar/index.js.map +1 -0
- package/dist-cjs/content-status/ContentStatus.js +1 -1
- package/dist-cjs/content-status/ContentStatus.js.map +1 -1
- package/dist-cjs/date-input/index.js +23 -0
- package/dist-cjs/date-input/index.js.map +1 -0
- package/dist-cjs/date-picker/index.js +106 -0
- package/dist-cjs/date-picker/index.js.map +1 -0
- package/dist-cjs/index.js +58 -56
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/localization-provider/index.js +26 -0
- package/dist-cjs/localization-provider/index.js.map +1 -0
- package/dist-cjs/rating/Rating.css.js +1 -1
- package/dist-cjs/rating/Rating.js +11 -16
- package/dist-cjs/rating/Rating.js.map +1 -1
- package/dist-cjs/side-panel/SidePanel.css.js +6 -0
- package/dist-cjs/side-panel/SidePanel.css.js.map +1 -0
- package/dist-cjs/side-panel/SidePanel.js +156 -0
- package/dist-cjs/side-panel/SidePanel.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelContent.css.js +6 -0
- package/dist-cjs/side-panel/SidePanelContent.css.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelContent.js +86 -0
- package/dist-cjs/side-panel/SidePanelContent.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelHeader.css.js +6 -0
- package/dist-cjs/side-panel/SidePanelHeader.css.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelHeader.js +26 -0
- package/dist-cjs/side-panel/SidePanelHeader.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelProvider.js +71 -0
- package/dist-cjs/side-panel/SidePanelProvider.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelTitle.css.js +6 -0
- package/dist-cjs/side-panel/SidePanelTitle.css.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelTitle.js +47 -0
- package/dist-cjs/side-panel/SidePanelTitle.js.map +1 -0
- package/dist-cjs/side-panel/SidePanelTrigger.js +37 -0
- package/dist-cjs/side-panel/SidePanelTrigger.js.map +1 -0
- package/dist-cjs/side-panel/internal/SidePanelContext.js +31 -0
- package/dist-cjs/side-panel/internal/SidePanelContext.js.map +1 -0
- package/dist-cjs/side-panel/useSidePanel.js +41 -0
- package/dist-cjs/side-panel/useSidePanel.js.map +1 -0
- package/dist-cjs/utils/deprecatedExport.js +30 -0
- package/dist-cjs/utils/deprecatedExport.js.map +1 -0
- package/dist-es/calendar/index.js +50 -0
- package/dist-es/calendar/index.js.map +1 -0
- package/dist-es/content-status/ContentStatus.js +1 -1
- package/dist-es/content-status/ContentStatus.js.map +1 -1
- package/dist-es/date-input/index.js +20 -0
- package/dist-es/date-input/index.js.map +1 -0
- package/dist-es/date-picker/index.js +85 -0
- package/dist-es/date-picker/index.js.map +1 -0
- package/dist-es/index.js +12 -23
- package/dist-es/index.js.map +1 -1
- package/dist-es/localization-provider/index.js +20 -0
- package/dist-es/localization-provider/index.js.map +1 -0
- package/dist-es/rating/Rating.css.js +1 -1
- package/dist-es/rating/Rating.js +13 -18
- package/dist-es/rating/Rating.js.map +1 -1
- package/dist-es/side-panel/SidePanel.css.js +4 -0
- package/dist-es/side-panel/SidePanel.css.js.map +1 -0
- package/dist-es/side-panel/SidePanel.js +154 -0
- package/dist-es/side-panel/SidePanel.js.map +1 -0
- package/dist-es/side-panel/SidePanelContent.css.js +4 -0
- package/dist-es/side-panel/SidePanelContent.css.js.map +1 -0
- package/dist-es/side-panel/SidePanelContent.js +84 -0
- package/dist-es/side-panel/SidePanelContent.js.map +1 -0
- package/dist-es/side-panel/SidePanelHeader.css.js +4 -0
- package/dist-es/side-panel/SidePanelHeader.css.js.map +1 -0
- package/dist-es/side-panel/SidePanelHeader.js +24 -0
- package/dist-es/side-panel/SidePanelHeader.js.map +1 -0
- package/dist-es/side-panel/SidePanelProvider.js +69 -0
- package/dist-es/side-panel/SidePanelProvider.js.map +1 -0
- package/dist-es/side-panel/SidePanelTitle.css.js +4 -0
- package/dist-es/side-panel/SidePanelTitle.css.js.map +1 -0
- package/dist-es/side-panel/SidePanelTitle.js +45 -0
- package/dist-es/side-panel/SidePanelTitle.js.map +1 -0
- package/dist-es/side-panel/SidePanelTrigger.js +35 -0
- package/dist-es/side-panel/SidePanelTrigger.js.map +1 -0
- package/dist-es/side-panel/internal/SidePanelContext.js +28 -0
- package/dist-es/side-panel/internal/SidePanelContext.js.map +1 -0
- package/dist-es/side-panel/useSidePanel.js +39 -0
- package/dist-es/side-panel/useSidePanel.js.map +1 -0
- package/dist-es/utils/deprecatedExport.js +27 -0
- package/dist-es/utils/deprecatedExport.js.map +1 -0
- package/dist-types/calendar/index.d.ts +13 -8
- package/dist-types/date-input/index.d.ts +3 -2
- package/dist-types/index.d.ts +1 -0
- package/dist-types/localization-provider/index.d.ts +9 -1
- package/dist-types/rating/Rating.d.ts +1 -2
- package/dist-types/side-panel/SidePanel.d.ts +27 -0
- package/dist-types/side-panel/SidePanelContent.d.ts +4 -0
- package/dist-types/side-panel/SidePanelHeader.d.ts +4 -0
- package/dist-types/side-panel/SidePanelProvider.d.ts +20 -0
- package/dist-types/side-panel/SidePanelTitle.d.ts +4 -0
- package/dist-types/side-panel/SidePanelTrigger.d.ts +5 -0
- package/dist-types/side-panel/index.d.ts +7 -0
- package/dist-types/side-panel/internal/SidePanelContext.d.ts +48 -0
- package/dist-types/side-panel/internal/index.d.ts +1 -0
- package/dist-types/side-panel/useSidePanel.d.ts +32 -0
- package/dist-types/utils/deprecatedExport.d.ts +11 -0
- package/package.json +5 -12
- package/dist-cjs/calendar/Calendar.css.js +0 -6
- package/dist-cjs/calendar/Calendar.css.js.map +0 -1
- package/dist-cjs/calendar/Calendar.js +0 -152
- package/dist-cjs/calendar/Calendar.js.map +0 -1
- package/dist-cjs/calendar/CalendarGrid.js +0 -85
- package/dist-cjs/calendar/CalendarGrid.js.map +0 -1
- package/dist-cjs/calendar/CalendarMonthHeader.css.js +0 -6
- package/dist-cjs/calendar/CalendarMonthHeader.css.js.map +0 -1
- package/dist-cjs/calendar/CalendarMonthHeader.js +0 -48
- package/dist-cjs/calendar/CalendarMonthHeader.js.map +0 -1
- package/dist-cjs/calendar/CalendarNavigation.css.js +0 -6
- package/dist-cjs/calendar/CalendarNavigation.css.js.map +0 -1
- package/dist-cjs/calendar/CalendarNavigation.js +0 -337
- package/dist-cjs/calendar/CalendarNavigation.js.map +0 -1
- package/dist-cjs/calendar/CalendarWeekHeader.css.js +0 -6
- package/dist-cjs/calendar/CalendarWeekHeader.css.js.map +0 -1
- package/dist-cjs/calendar/CalendarWeekHeader.js +0 -46
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarContext.js +0 -25
- package/dist-cjs/calendar/internal/CalendarContext.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarDay.css.js +0 -6
- package/dist-cjs/calendar/internal/CalendarDay.css.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarDay.js +0 -97
- package/dist-cjs/calendar/internal/CalendarDay.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarMonth.css.js +0 -6
- package/dist-cjs/calendar/internal/CalendarMonth.css.js.map +0 -1
- package/dist-cjs/calendar/internal/CalendarMonth.js +0 -76
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +0 -1
- package/dist-cjs/calendar/internal/useFocusManagement.js +0 -68
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +0 -1
- package/dist-cjs/calendar/internal/utils.js +0 -50
- package/dist-cjs/calendar/internal/utils.js.map +0 -1
- package/dist-cjs/calendar/useCalendar.js +0 -183
- package/dist-cjs/calendar/useCalendar.js.map +0 -1
- package/dist-cjs/calendar/useCalendarDay.js +0 -85
- package/dist-cjs/calendar/useCalendarDay.js.map +0 -1
- package/dist-cjs/calendar/useCalendarSelection.js +0 -604
- package/dist-cjs/calendar/useCalendarSelection.js.map +0 -1
- package/dist-cjs/date-input/DateInput.css.js +0 -6
- package/dist-cjs/date-input/DateInput.css.js.map +0 -1
- package/dist-cjs/date-input/DateInputRange.js +0 -352
- package/dist-cjs/date-input/DateInputRange.js.map +0 -1
- package/dist-cjs/date-input/DateInputSingle.js +0 -234
- package/dist-cjs/date-input/DateInputSingle.js.map +0 -1
- package/dist-cjs/date-picker/DatePicker.js +0 -75
- package/dist-cjs/date-picker/DatePicker.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerActions.css.js +0 -6
- package/dist-cjs/date-picker/DatePickerActions.css.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerActions.js +0 -91
- package/dist-cjs/date-picker/DatePickerActions.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerContext.js +0 -36
- package/dist-cjs/date-picker/DatePickerContext.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerHelperText.css.js +0 -6
- package/dist-cjs/date-picker/DatePickerHelperText.css.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerHelperText.js +0 -36
- package/dist-cjs/date-picker/DatePickerHelperText.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerOverlay.css.js +0 -6
- package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerOverlay.js +0 -48
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +0 -166
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerPanel.css.js +0 -6
- package/dist-cjs/date-picker/DatePickerPanel.css.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js +0 -246
- package/dist-cjs/date-picker/DatePickerRangeGridPanel.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +0 -202
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerRangePanel.js +0 -355
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js +0 -253
- package/dist-cjs/date-picker/DatePickerSingleGridPanel.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerSingleInput.js +0 -148
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +0 -20
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +0 -1
- package/dist-cjs/date-picker/DatePickerTrigger.js +0 -32
- package/dist-cjs/date-picker/DatePickerTrigger.js.map +0 -1
- package/dist-cjs/date-picker/useDatePicker.js +0 -201
- package/dist-cjs/date-picker/useDatePicker.js.map +0 -1
- package/dist-cjs/date-picker/useFocusOut.js +0 -43
- package/dist-cjs/date-picker/useFocusOut.js.map +0 -1
- package/dist-cjs/date-picker/useKeyboard.js +0 -22
- package/dist-cjs/date-picker/useKeyboard.js.map +0 -1
- package/dist-cjs/localization-provider/LocalizationProvider.js +0 -51
- package/dist-cjs/localization-provider/LocalizationProvider.js.map +0 -1
- package/dist-es/calendar/Calendar.css.js +0 -4
- package/dist-es/calendar/Calendar.css.js.map +0 -1
- package/dist-es/calendar/Calendar.js +0 -150
- package/dist-es/calendar/Calendar.js.map +0 -1
- package/dist-es/calendar/CalendarGrid.js +0 -83
- package/dist-es/calendar/CalendarGrid.js.map +0 -1
- package/dist-es/calendar/CalendarMonthHeader.css.js +0 -4
- package/dist-es/calendar/CalendarMonthHeader.css.js.map +0 -1
- package/dist-es/calendar/CalendarMonthHeader.js +0 -46
- package/dist-es/calendar/CalendarMonthHeader.js.map +0 -1
- package/dist-es/calendar/CalendarNavigation.css.js +0 -4
- package/dist-es/calendar/CalendarNavigation.css.js.map +0 -1
- package/dist-es/calendar/CalendarNavigation.js +0 -335
- package/dist-es/calendar/CalendarNavigation.js.map +0 -1
- package/dist-es/calendar/CalendarWeekHeader.css.js +0 -4
- package/dist-es/calendar/CalendarWeekHeader.css.js.map +0 -1
- package/dist-es/calendar/CalendarWeekHeader.js +0 -44
- package/dist-es/calendar/CalendarWeekHeader.js.map +0 -1
- package/dist-es/calendar/internal/CalendarContext.js +0 -22
- package/dist-es/calendar/internal/CalendarContext.js.map +0 -1
- package/dist-es/calendar/internal/CalendarDay.css.js +0 -4
- package/dist-es/calendar/internal/CalendarDay.css.js.map +0 -1
- package/dist-es/calendar/internal/CalendarDay.js +0 -95
- package/dist-es/calendar/internal/CalendarDay.js.map +0 -1
- package/dist-es/calendar/internal/CalendarMonth.css.js +0 -4
- package/dist-es/calendar/internal/CalendarMonth.css.js.map +0 -1
- package/dist-es/calendar/internal/CalendarMonth.js +0 -74
- package/dist-es/calendar/internal/CalendarMonth.js.map +0 -1
- package/dist-es/calendar/internal/useFocusManagement.js +0 -66
- package/dist-es/calendar/internal/useFocusManagement.js.map +0 -1
- package/dist-es/calendar/internal/utils.js +0 -44
- package/dist-es/calendar/internal/utils.js.map +0 -1
- package/dist-es/calendar/useCalendar.js +0 -181
- package/dist-es/calendar/useCalendar.js.map +0 -1
- package/dist-es/calendar/useCalendarDay.js +0 -83
- package/dist-es/calendar/useCalendarDay.js.map +0 -1
- package/dist-es/calendar/useCalendarSelection.js +0 -600
- package/dist-es/calendar/useCalendarSelection.js.map +0 -1
- package/dist-es/date-input/DateInput.css.js +0 -4
- package/dist-es/date-input/DateInput.css.js.map +0 -1
- package/dist-es/date-input/DateInputRange.js +0 -349
- package/dist-es/date-input/DateInputRange.js.map +0 -1
- package/dist-es/date-input/DateInputSingle.js +0 -232
- package/dist-es/date-input/DateInputSingle.js.map +0 -1
- package/dist-es/date-picker/DatePicker.js +0 -72
- package/dist-es/date-picker/DatePicker.js.map +0 -1
- package/dist-es/date-picker/DatePickerActions.css.js +0 -4
- package/dist-es/date-picker/DatePickerActions.css.js.map +0 -1
- package/dist-es/date-picker/DatePickerActions.js +0 -89
- package/dist-es/date-picker/DatePickerActions.js.map +0 -1
- package/dist-es/date-picker/DatePickerContext.js +0 -32
- package/dist-es/date-picker/DatePickerContext.js.map +0 -1
- package/dist-es/date-picker/DatePickerHelperText.css.js +0 -4
- package/dist-es/date-picker/DatePickerHelperText.css.js.map +0 -1
- package/dist-es/date-picker/DatePickerHelperText.js +0 -34
- package/dist-es/date-picker/DatePickerHelperText.js.map +0 -1
- package/dist-es/date-picker/DatePickerOverlay.css.js +0 -4
- package/dist-es/date-picker/DatePickerOverlay.css.js.map +0 -1
- package/dist-es/date-picker/DatePickerOverlay.js +0 -46
- package/dist-es/date-picker/DatePickerOverlay.js.map +0 -1
- package/dist-es/date-picker/DatePickerOverlayProvider.js +0 -163
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +0 -1
- package/dist-es/date-picker/DatePickerPanel.css.js +0 -4
- package/dist-es/date-picker/DatePickerPanel.css.js.map +0 -1
- package/dist-es/date-picker/DatePickerRangeGridPanel.js +0 -244
- package/dist-es/date-picker/DatePickerRangeGridPanel.js.map +0 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +0 -199
- package/dist-es/date-picker/DatePickerRangeInput.js.map +0 -1
- package/dist-es/date-picker/DatePickerRangePanel.js +0 -353
- package/dist-es/date-picker/DatePickerRangePanel.js.map +0 -1
- package/dist-es/date-picker/DatePickerSingleGridPanel.js +0 -251
- package/dist-es/date-picker/DatePickerSingleGridPanel.js.map +0 -1
- package/dist-es/date-picker/DatePickerSingleInput.js +0 -146
- package/dist-es/date-picker/DatePickerSingleInput.js.map +0 -1
- package/dist-es/date-picker/DatePickerSinglePanel.js +0 -18
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +0 -1
- package/dist-es/date-picker/DatePickerTrigger.js +0 -30
- package/dist-es/date-picker/DatePickerTrigger.js.map +0 -1
- package/dist-es/date-picker/useDatePicker.js +0 -199
- package/dist-es/date-picker/useDatePicker.js.map +0 -1
- package/dist-es/date-picker/useFocusOut.js +0 -41
- package/dist-es/date-picker/useFocusOut.js.map +0 -1
- package/dist-es/date-picker/useKeyboard.js +0 -20
- package/dist-es/date-picker/useKeyboard.js.map +0 -1
- package/dist-es/localization-provider/LocalizationProvider.js +0 -47
- package/dist-es/localization-provider/LocalizationProvider.js.map +0 -1
- package/dist-types/calendar/Calendar.d.ts +0 -116
- package/dist-types/calendar/CalendarGrid.d.ts +0 -29
- package/dist-types/calendar/CalendarMonthHeader.d.ts +0 -18
- package/dist-types/calendar/CalendarNavigation.d.ts +0 -64
- package/dist-types/calendar/CalendarWeekHeader.d.ts +0 -6
- package/dist-types/calendar/internal/CalendarContext.d.ts +0 -7
- package/dist-types/calendar/internal/CalendarDay.d.ts +0 -32
- package/dist-types/calendar/internal/CalendarMonth.d.ts +0 -13
- package/dist-types/calendar/internal/useFocusManagement.d.ts +0 -9
- package/dist-types/calendar/internal/utils.d.ts +0 -6
- package/dist-types/calendar/useCalendar.d.ts +0 -294
- package/dist-types/calendar/useCalendarDay.d.ts +0 -56
- package/dist-types/calendar/useCalendarSelection.d.ts +0 -365
- package/dist-types/date-input/DateInputRange.d.ts +0 -136
- package/dist-types/date-input/DateInputSingle.d.ts +0 -104
- package/dist-types/date-picker/DatePicker.d.ts +0 -55
- package/dist-types/date-picker/DatePickerActions.d.ts +0 -81
- package/dist-types/date-picker/DatePickerContext.d.ts +0 -188
- package/dist-types/date-picker/DatePickerHelperText.d.ts +0 -4
- package/dist-types/date-picker/DatePickerOverlay.d.ts +0 -11
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +0 -102
- package/dist-types/date-picker/DatePickerRangeGridPanel.d.ts +0 -16
- package/dist-types/date-picker/DatePickerRangeInput.d.ts +0 -18
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +0 -84
- package/dist-types/date-picker/DatePickerSingleGridPanel.d.ts +0 -64
- package/dist-types/date-picker/DatePickerSingleInput.d.ts +0 -17
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +0 -8
- package/dist-types/date-picker/DatePickerTrigger.d.ts +0 -9
- package/dist-types/date-picker/index.d.ts +0 -13
- package/dist-types/date-picker/useDatePicker.d.ts +0 -119
- package/dist-types/date-picker/useFocusOut.d.ts +0 -9
- package/dist-types/date-picker/useKeyboard.d.ts +0 -20
- package/dist-types/localization-provider/LocalizationProvider.d.ts +0 -62
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
1
|
+
import type { DateFrameworkType } from "@salt-ds/date-adapters";
|
|
2
|
+
import { useCalendar as _useCalendar, useCalendarDay as _useCalendarDay, useCalendarSelection as _useCalendarSelection, useCalendarSelectionDay as _useCalendarSelectionDay, useDateSelectionAnnouncer as _useDateSelectionAnnouncer, type DateRangeSelection } from "@salt-ds/date-components";
|
|
3
|
+
export declare const Calendar: import("react").ComponentType<import("@salt-ds/date-components").CalendarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export declare const CalendarGrid: import("react").ComponentType<import("@salt-ds/date-components").CalendarGridProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
|
+
export declare const CalendarNavigation: import("react").ComponentType<Omit<import("@salt-ds/date-components").CalendarNavigationProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export declare const CalendarWeekHeader: import("react").ComponentType<Omit<import("@salt-ds/date-components").CalendarWeekHeaderProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
export declare const useCalendar: typeof _useCalendar;
|
|
8
|
+
export declare const useCalendarDay: typeof _useCalendarDay;
|
|
9
|
+
export declare const useCalendarSelection: typeof _useCalendarSelection;
|
|
10
|
+
export declare const useCalendarSelectionDay: typeof _useCalendarSelectionDay;
|
|
11
|
+
export declare const useDateSelectionAnnouncer: typeof _useDateSelectionAnnouncer;
|
|
12
|
+
export declare function isDateRangeSelection<TDate extends DateFrameworkType = DateFrameworkType>(value: unknown): value is DateRangeSelection<TDate>;
|
|
13
|
+
export type { CalendarBaseProps, CalendarDayProps, CalendarGridProps, CalendarMultiselectOffsetProps, CalendarMultiselectRangeProps, CalendarMultiselectSingleProps, CalendarNavigationProps, CalendarOffsetProps, CalendarProps, CalendarRangeProps, CalendarSingleProps, CalendarWeekHeaderProps, CreateAnnouncement, DateRangeSelection, DayStatus, renderCalendarDayProps, SelectionVariant, SingleDateSelection, UseCalendarMultiselectOffsetProps, UseCalendarMultiselectRangeProps, UseCalendarMultiselectSingleProps, UseCalendarOffsetProps, UseCalendarProps, UseCalendarRangeProps, UseCalendarReturn, UseCalendarSelectionBaseProps, UseCalendarSelectionMultiselectOffsetProps, UseCalendarSelectionMultiselectRangeProps, UseCalendarSelectionMultiselectSingleProps, UseCalendarSelectionOffsetProps, UseCalendarSelectionProps, UseCalendarSelectionRangeProps, UseCalendarSelectionSingleProps, UseCalendarSingleProps, useCalendarDayProps, } from "@salt-ds/date-components";
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export declare const DateInputRange: import("react").ComponentType<import("@salt-ds/date-components").DateInputRangeProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
2
|
+
export declare const DateInputSingle: import("react").ComponentType<import("@salt-ds/date-components").DateInputSingleProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
3
|
+
export type { DateInputRangeDetails, DateInputRangeProps, DateInputRangeValue, DateInputSingleDetails, DateInputSingleProps, DateParserField, } from "@salt-ds/date-components";
|
package/dist-types/index.d.ts
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DateFrameworkType } from "@salt-ds/date-adapters";
|
|
2
|
+
import { type LocalizationProviderProps, type LocalizationProviderValue } from "@salt-ds/date-components";
|
|
3
|
+
export declare function LocalizationProvider<TDate extends DateFrameworkType = DateFrameworkType, TLocale = undefined>(props: LocalizationProviderProps<TDate, TLocale>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare namespace LocalizationProvider {
|
|
5
|
+
var displayName: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function useLocalization<TDate extends DateFrameworkType = DateFrameworkType>(): LocalizationProviderValue<TDate>;
|
|
8
|
+
export type { LocalizationProviderContext as LocalizationProviderContextType, LocalizationProviderProps, LocalizationProviderValue, } from "@salt-ds/date-components";
|
|
9
|
+
export { LocalizationProviderContext } from "@salt-ds/date-components";
|
|
@@ -37,10 +37,9 @@ export interface RatingProps extends Omit<ComponentPropsWithoutRef<"div">, "onCh
|
|
|
37
37
|
getVisibleLabel?: (value: number, max: number) => string;
|
|
38
38
|
/**
|
|
39
39
|
* Position of the label relative to the rating component.
|
|
40
|
-
* Can be "top", "right", "bottom", or "left".
|
|
41
40
|
* @default "right"
|
|
42
41
|
*/
|
|
43
|
-
labelPlacement?: "
|
|
42
|
+
labelPlacement?: "right" | "bottom";
|
|
44
43
|
/**
|
|
45
44
|
* The name to be set on each radio button within the group. If not set, then one will be generated for you.
|
|
46
45
|
*/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { FloatingFocusManager } from "@floating-ui/react";
|
|
2
|
+
import { type ComponentProps, type ComponentPropsWithRef } from "react";
|
|
3
|
+
export interface SidePanelProps extends ComponentPropsWithRef<"div"> {
|
|
4
|
+
/**
|
|
5
|
+
* Disable the panel's own open/close animation.
|
|
6
|
+
* Set to `true` when the parent controls sizing and animation (e.g. inside a splitter).
|
|
7
|
+
* @default false
|
|
8
|
+
*/
|
|
9
|
+
disableAnimation?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Edge the panel is anchored to; controls animation direction and divider side.
|
|
12
|
+
* @default "right"
|
|
13
|
+
*/
|
|
14
|
+
position?: "right" | "left";
|
|
15
|
+
/**
|
|
16
|
+
* Which element receives focus when the panel opens.
|
|
17
|
+
* Pass a number for the tabbable element index (0 = first), or a ref to a specific element.
|
|
18
|
+
* Defaults to the side panel close button.
|
|
19
|
+
*/
|
|
20
|
+
initialFocus?: ComponentProps<typeof FloatingFocusManager>["initialFocus"];
|
|
21
|
+
/**
|
|
22
|
+
* The background color palette. Options are 'primary', 'secondary', 'tertiary' and 'none'.
|
|
23
|
+
* @default "primary"
|
|
24
|
+
*/
|
|
25
|
+
variant?: "primary" | "secondary" | "tertiary" | "none";
|
|
26
|
+
}
|
|
27
|
+
export declare const SidePanel: import("react").ForwardRefExoticComponent<Omit<SidePanelProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef } from "react";
|
|
2
|
+
export interface SidePanelContentProps extends ComponentPropsWithRef<"div"> {
|
|
3
|
+
}
|
|
4
|
+
export declare const SidePanelContent: import("react").ForwardRefExoticComponent<Omit<SidePanelContentProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type ComponentPropsWithRef } from "react";
|
|
2
|
+
export interface SidePanelHeaderProps extends ComponentPropsWithRef<"div"> {
|
|
3
|
+
}
|
|
4
|
+
export declare const SidePanelHeader: import("react").ForwardRefExoticComponent<Omit<SidePanelHeaderProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface SidePanelProviderProps {
|
|
3
|
+
/**
|
|
4
|
+
* Whether the panel is open.
|
|
5
|
+
*/
|
|
6
|
+
open?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Default open state when initially rendered.
|
|
9
|
+
*/
|
|
10
|
+
defaultOpen?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Callback when open state changes.
|
|
13
|
+
*/
|
|
14
|
+
onOpenChange?: (open: boolean) => void;
|
|
15
|
+
/**
|
|
16
|
+
* SidePanelProvider children, should include SidePanel and SidePanelTrigger.
|
|
17
|
+
*/
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
export declare function SidePanelProvider(props: SidePanelProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type TextProps } from "@salt-ds/core";
|
|
2
|
+
export interface SidePanelTitleProps extends TextProps<"div"> {
|
|
3
|
+
}
|
|
4
|
+
export declare const SidePanelTitle: import("react").ForwardRefExoticComponent<Omit<SidePanelTitleProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type ReactNode } from "react";
|
|
2
|
+
export interface SidePanelTriggerProps extends ComponentPropsWithoutRef<"button"> {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
export declare const SidePanelTrigger: import("react").ForwardRefExoticComponent<SidePanelTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { FloatingRootContext } from "@floating-ui/react";
|
|
2
|
+
import { type Dispatch, type SetStateAction } from "react";
|
|
3
|
+
export interface SidePanelContextValue {
|
|
4
|
+
/**
|
|
5
|
+
* Whether the side panel is currently open.
|
|
6
|
+
*/
|
|
7
|
+
openState: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The floating-ui root context shared between the trigger and the panel.
|
|
10
|
+
* Coordinates interactions (click, dismiss, role) across both elements.
|
|
11
|
+
*/
|
|
12
|
+
floatingRootContext: FloatingRootContext;
|
|
13
|
+
/**
|
|
14
|
+
* Ref setter for the panel element.
|
|
15
|
+
* Registers the panel DOM node with floating-ui.
|
|
16
|
+
*/
|
|
17
|
+
setFloating: Dispatch<SetStateAction<HTMLDivElement | null>>;
|
|
18
|
+
/**
|
|
19
|
+
* Ref setter for the reference (trigger) element.
|
|
20
|
+
* Registers the trigger DOM node with floating-ui for focus return.
|
|
21
|
+
*/
|
|
22
|
+
setReference: Dispatch<SetStateAction<HTMLElement | null>>;
|
|
23
|
+
/**
|
|
24
|
+
* Sets the open state of the panel.
|
|
25
|
+
* Called by the close button in SidePanelHeader, or any consumer that needs to close the panel.
|
|
26
|
+
*/
|
|
27
|
+
setOpen: (open: boolean) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Side panel id used for aria-controls on the trigger.
|
|
30
|
+
*/
|
|
31
|
+
panelId?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Registers or clears the side panel id used for aria-controls/id linkage.
|
|
34
|
+
*/
|
|
35
|
+
setPanelId: Dispatch<SetStateAction<string | undefined>>;
|
|
36
|
+
/**
|
|
37
|
+
* The auto-generated id placed on SidePanelTitle.
|
|
38
|
+
* Used for aria-labelledby on the panel region and the scrollable body.
|
|
39
|
+
*/
|
|
40
|
+
titleId?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Registers the title id from SidePanelTitle back to the context
|
|
43
|
+
* so that SidePanel and SidePanelContent can use it for aria-labelledby.
|
|
44
|
+
*/
|
|
45
|
+
setTitleId: Dispatch<SetStateAction<string | undefined>>;
|
|
46
|
+
}
|
|
47
|
+
export declare const SidePanelContext: import("react").Context<SidePanelContextValue>;
|
|
48
|
+
export declare function useSidePanelContext(): SidePanelContextValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SidePanelContext, type SidePanelContextValue, useSidePanelContext, } from "./SidePanelContext";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface SidePanelValue {
|
|
2
|
+
/**
|
|
3
|
+
* Whether the side panel is currently open.
|
|
4
|
+
*/
|
|
5
|
+
openState: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Sets the open state of the panel.
|
|
8
|
+
*/
|
|
9
|
+
setOpen: (open: boolean) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Props getter for a single trigger element.
|
|
12
|
+
* Merges `aria-expanded`, `aria-controls`, a `ref` callback (to register
|
|
13
|
+
* the trigger for focus-return), and user-provided props.
|
|
14
|
+
* Best for the common case where one button toggles one panel.
|
|
15
|
+
*
|
|
16
|
+
* For multi-trigger scenarios (e.g. table rows), use `setTriggerRef` and
|
|
17
|
+
* manage ARIA attributes yourself instead.
|
|
18
|
+
*/
|
|
19
|
+
getTriggerProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* Registers the element that should receive focus when the panel closes.
|
|
22
|
+
* Use this in multi-trigger scenarios (e.g. table rows) where each trigger
|
|
23
|
+
* needs explicit control over which element is the reference.
|
|
24
|
+
*/
|
|
25
|
+
setTriggerRef: (element: HTMLElement | null) => void;
|
|
26
|
+
/**
|
|
27
|
+
* The panel's DOM id. Use this for `aria-controls` in multi-trigger
|
|
28
|
+
* scenarios where you manage ARIA attributes yourself.
|
|
29
|
+
*/
|
|
30
|
+
panelId: string | undefined;
|
|
31
|
+
}
|
|
32
|
+
export declare function useSidePanel(): SidePanelValue;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ComponentType } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a component so that a deprecation warning is logged on first render
|
|
4
|
+
* instead of at import time.
|
|
5
|
+
*/
|
|
6
|
+
export declare function deprecatedComponent<P extends object>(Component: ComponentType<P>, displayName: string, deprecationKey: string, message: string): typeof Component;
|
|
7
|
+
/**
|
|
8
|
+
* Wrap a hook or plain function so that a deprecation warning is logged on
|
|
9
|
+
* first call instead of at import time.
|
|
10
|
+
*/
|
|
11
|
+
export declare function deprecatedFunction<T extends (...args: any[]) => any>(hook: T, deprecationKey: string, message: string): T;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salt-ds/lab",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.90",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@floating-ui/react": "^0.26.28",
|
|
24
|
-
"@salt-ds/core": "^1.
|
|
25
|
-
"@salt-ds/date-
|
|
24
|
+
"@salt-ds/core": "^1.60.0",
|
|
25
|
+
"@salt-ds/date-components": "0.1.0",
|
|
26
26
|
"@salt-ds/icons": "^1.18.0",
|
|
27
27
|
"@salt-ds/styles": "0.3.0",
|
|
28
28
|
"@salt-ds/window": "0.1.1",
|
|
@@ -31,22 +31,15 @@
|
|
|
31
31
|
"clsx": "^2.0.0",
|
|
32
32
|
"compute-scroll-into-view": "^3.0.0",
|
|
33
33
|
"deepmerge": "^4.2.2",
|
|
34
|
+
"dom-accessibility-api": "^0.7.1",
|
|
34
35
|
"react-color": "^2.19.3",
|
|
35
36
|
"react-window": "^1.8.6",
|
|
36
37
|
"rifm": "^0.12.0",
|
|
37
38
|
"tabbable": "^6.0.0",
|
|
38
39
|
"tinycolor2": "^1.4.2"
|
|
39
40
|
},
|
|
40
|
-
"devDependencies": {
|
|
41
|
-
"@date-fns/tz": "^1.2.0",
|
|
42
|
-
"@types/luxon": "^3.6.2",
|
|
43
|
-
"date-fns": "^4.1.0",
|
|
44
|
-
"dayjs": "^1.11.13",
|
|
45
|
-
"luxon": "^3.6.1",
|
|
46
|
-
"moment": "^2.30.1",
|
|
47
|
-
"moment-timezone": "^0.5.46"
|
|
48
|
-
},
|
|
49
41
|
"peerDependencies": {
|
|
42
|
+
"@salt-ds/date-adapters": ">=0.1.0-alpha.7",
|
|
50
43
|
"@types/react": ">=16.14.0",
|
|
51
44
|
"react": ">=16.14.0",
|
|
52
45
|
"react-dom": ">=16.14.0"
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var css_248z = ".saltCalendar {\n --calendar-gap: var(--salt-spacing-fixed-100);\n --calendar-day-size: var(--salt-size-base);\n\n background: var(--salt-container-primary-background);\n padding: var(--salt-spacing-100);\n}\n";
|
|
4
|
-
|
|
5
|
-
module.exports = css_248z;
|
|
6
|
-
//# sourceMappingURL=Calendar.css.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@salt-ds/core');
|
|
5
|
-
var styles = require('@salt-ds/styles');
|
|
6
|
-
var window = require('@salt-ds/window');
|
|
7
|
-
var clsx = require('clsx');
|
|
8
|
-
var react = require('react');
|
|
9
|
-
var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
|
|
10
|
-
var Calendar$1 = require('./Calendar.css.js');
|
|
11
|
-
var CalendarContext = require('./internal/CalendarContext.js');
|
|
12
|
-
var useCalendar = require('./useCalendar.js');
|
|
13
|
-
|
|
14
|
-
const withBaseName = core.makePrefixer("saltCalendar");
|
|
15
|
-
function isMultiselect(props) {
|
|
16
|
-
return props.multiselect === true;
|
|
17
|
-
}
|
|
18
|
-
function getStartOrEndDate(dateRange, isMultiselect2) {
|
|
19
|
-
var _a, _b;
|
|
20
|
-
if (isMultiselect2) {
|
|
21
|
-
const rangeArray = dateRange;
|
|
22
|
-
return ((_a = rangeArray == null ? void 0 : rangeArray[0]) == null ? void 0 : _a.startDate) ?? ((_b = rangeArray == null ? void 0 : rangeArray[0]) == null ? void 0 : _b.endDate);
|
|
23
|
-
}
|
|
24
|
-
const range = dateRange;
|
|
25
|
-
return (range == null ? void 0 : range.startDate) ?? (range == null ? void 0 : range.endDate);
|
|
26
|
-
}
|
|
27
|
-
let warnedOnce = false;
|
|
28
|
-
const Calendar = react.forwardRef(
|
|
29
|
-
(props, ref) => {
|
|
30
|
-
const targetWindow = window.useWindow();
|
|
31
|
-
const { dateAdapter } = LocalizationProvider.useLocalization();
|
|
32
|
-
styles.useComponentCssInjection({
|
|
33
|
-
testId: "salt-calendar",
|
|
34
|
-
css: Calendar$1,
|
|
35
|
-
window: targetWindow
|
|
36
|
-
});
|
|
37
|
-
const {
|
|
38
|
-
children,
|
|
39
|
-
className,
|
|
40
|
-
selectedDate,
|
|
41
|
-
defaultSelectedDate,
|
|
42
|
-
visibleMonth: visibleMonthProp,
|
|
43
|
-
defaultVisibleMonth,
|
|
44
|
-
onFocusedDateChange,
|
|
45
|
-
onSelectionChange,
|
|
46
|
-
onVisibleMonthChange,
|
|
47
|
-
hideOutOfRangeDates,
|
|
48
|
-
focusedDate,
|
|
49
|
-
focusedDateRef,
|
|
50
|
-
isDayUnselectable,
|
|
51
|
-
isDayHighlighted,
|
|
52
|
-
minDate,
|
|
53
|
-
maxDate,
|
|
54
|
-
multiselect,
|
|
55
|
-
numberOfVisibleMonths = 1,
|
|
56
|
-
select,
|
|
57
|
-
selectionVariant,
|
|
58
|
-
onHoveredDateChange,
|
|
59
|
-
hoveredDate,
|
|
60
|
-
timezone: timezoneProp,
|
|
61
|
-
...propsRest
|
|
62
|
-
} = props;
|
|
63
|
-
react.useEffect(() => {
|
|
64
|
-
if (process.env.NODE_ENV !== "production") {
|
|
65
|
-
if (!warnedOnce && multiselect && selectionVariant !== "single") {
|
|
66
|
-
console.warn(
|
|
67
|
-
`'multiselect' with selection variant '${selectionVariant}' is experimental and not for production use.`
|
|
68
|
-
);
|
|
69
|
-
warnedOnce = true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}, [multiselect, warnedOnce, selectionVariant]);
|
|
73
|
-
let timezone = "default";
|
|
74
|
-
if (timezoneProp) {
|
|
75
|
-
timezone = timezoneProp;
|
|
76
|
-
} else {
|
|
77
|
-
let defaultTimezoneDate;
|
|
78
|
-
if (selectionVariant === "range" || selectionVariant === "offset") {
|
|
79
|
-
const shouldExtractFromList = isMultiselect(props);
|
|
80
|
-
defaultTimezoneDate = getStartOrEndDate(selectedDate, shouldExtractFromList) ?? getStartOrEndDate(defaultSelectedDate, shouldExtractFromList);
|
|
81
|
-
} else if (selectionVariant === "single") {
|
|
82
|
-
if (isMultiselect(props)) {
|
|
83
|
-
defaultTimezoneDate = (defaultSelectedDate == null ? void 0 : defaultSelectedDate[0]) ?? void 0;
|
|
84
|
-
} else {
|
|
85
|
-
defaultTimezoneDate = selectedDate ?? defaultSelectedDate;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (defaultTimezoneDate) {
|
|
89
|
-
timezone = dateAdapter.getTimezone(defaultTimezoneDate);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
let startDateOffset;
|
|
93
|
-
let endDateOffset;
|
|
94
|
-
let rest;
|
|
95
|
-
if (selectionVariant === "offset") {
|
|
96
|
-
({ startDateOffset, endDateOffset, ...rest } = propsRest);
|
|
97
|
-
} else {
|
|
98
|
-
rest = propsRest;
|
|
99
|
-
}
|
|
100
|
-
const defaultFocusedDateRef = react.useRef(null);
|
|
101
|
-
const useCalendarProps = {
|
|
102
|
-
selectedDate,
|
|
103
|
-
defaultSelectedDate,
|
|
104
|
-
visibleMonth: visibleMonthProp,
|
|
105
|
-
defaultVisibleMonth,
|
|
106
|
-
onSelectionChange,
|
|
107
|
-
onVisibleMonthChange,
|
|
108
|
-
focusedDate,
|
|
109
|
-
focusedDateRef: focusedDateRef !== void 0 ? focusedDateRef : defaultFocusedDateRef,
|
|
110
|
-
isDayUnselectable,
|
|
111
|
-
isDayHighlighted,
|
|
112
|
-
multiselect,
|
|
113
|
-
minDate,
|
|
114
|
-
maxDate,
|
|
115
|
-
numberOfVisibleMonths,
|
|
116
|
-
select,
|
|
117
|
-
selectionVariant,
|
|
118
|
-
onFocusedDateChange,
|
|
119
|
-
onHoveredDateChange,
|
|
120
|
-
hideOutOfRangeDates,
|
|
121
|
-
hoveredDate,
|
|
122
|
-
startDateOffset,
|
|
123
|
-
endDateOffset,
|
|
124
|
-
timezone
|
|
125
|
-
};
|
|
126
|
-
const { state, helpers } = useCalendar.useCalendar(useCalendarProps);
|
|
127
|
-
const calendarLabel = dateAdapter.format(state.visibleMonth, "MMMM YYYY");
|
|
128
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
129
|
-
CalendarContext.CalendarContext.Provider,
|
|
130
|
-
{
|
|
131
|
-
value: {
|
|
132
|
-
state,
|
|
133
|
-
helpers
|
|
134
|
-
},
|
|
135
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
136
|
-
"div",
|
|
137
|
-
{
|
|
138
|
-
className: clsx.clsx(withBaseName(), className),
|
|
139
|
-
role: "application",
|
|
140
|
-
"aria-label": calendarLabel,
|
|
141
|
-
ref,
|
|
142
|
-
...rest,
|
|
143
|
-
children
|
|
144
|
-
}
|
|
145
|
-
)
|
|
146
|
-
}
|
|
147
|
-
);
|
|
148
|
-
}
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
exports.Calendar = Calendar;
|
|
152
|
-
//# sourceMappingURL=Calendar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","sources":["../src/calendar/Calendar.tsx"],"sourcesContent":["import { makePrefixer, type ResponsiveProp } from \"@salt-ds/core\";\nimport type { DateFrameworkType, Timezone } from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n useEffect,\n useRef,\n} from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport calendarCss from \"./Calendar.css\";\nimport { CalendarContext } from \"./internal/CalendarContext\";\nimport {\n type UseCalendarMultiselectOffsetProps,\n type UseCalendarMultiselectRangeProps,\n type UseCalendarMultiselectSingleProps,\n type UseCalendarOffsetProps,\n type UseCalendarRangeProps,\n type UseCalendarSingleProps,\n useCalendar,\n} from \"./useCalendar\";\nimport type { DateRangeSelection } from \"./useCalendarSelection\";\n\n/**\n * Base props for the Calendar component.\n */\nexport interface CalendarBaseProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content to be rendered inside the Calendar.\n */\n children: ReactNode;\n /**\n * If `true`, hides dates that are out of the selectable range.\n */\n hideOutOfRangeDates?: boolean;\n /**\n * Ref to attach to the focused element,enabling focus to be controlled.\n */\n focusedDateRef?: React.MutableRefObject<HTMLElement | null>;\n /**\n * Number of visible months, maximum 12, defaults to 1\n */\n numberOfVisibleMonths?: ResponsiveProp<\n 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n >;\n /**\n * Specifies the timezone behavior:\n * - If undefined, the timezone will be derived from the passed date, or from `defaultSelectedDate`/`selectedDate`.\n * - If set to \"default\", the default timezone of the date library will be used.\n * - If set to \"system\", the local system's timezone will be applied.\n * - If set to \"UTC\", the time will be returned in UTC.\n * - If set to a valid IANA timezone identifier, the time will be returned for that specific timezone.\n */\n timezone?: Timezone;\n /**\n * If `true`, the calendar will be multiselect.\n */\n multiselect?: boolean;\n}\n\n/**\n * Props for the Calendar component with single date selection.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarSingleProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarSingleProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n}\n\n/**\n * Props for the Calendar component with multi-select, date selection.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarMultiselectSingleProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarMultiselectSingleProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"single\";\n /**\n * Multiple selection\n */\n multiselect: true;\n}\n\n/**\n * Props for the Calendar component with date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarRangeProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarRangeProps<TDate> {\n /**\n * The selection variant, set to \"range\".\n */\n selectionVariant: \"range\";\n}\n\n/**\n * Props for the Calendar component with multi-select, date range selection.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarMultiselectRangeProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarMultiselectRangeProps<TDate> {\n /**\n * The selection variant, set to \"single\".\n */\n selectionVariant: \"range\";\n /**\n * Multiple selection\n */\n multiselect: true;\n}\n\n/**\n * Props for the Calendar component with offset date selection.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarOffsetProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarOffsetProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n}\n\n/**\n * Props for the Calendar component with multi-select, offset date selection.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarMultiselectOffsetProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarMultiselectOffsetProps<TDate> {\n /**\n * The selection variant, set to \"offset\".\n */\n selectionVariant: \"offset\";\n /**\n * Multiple selection\n */\n multiselect: true;\n}\n\n/**\n * Type representing the props for the Calendar component with various selection variants.\n * @template TDate - The type of the date object.\n */\nexport type CalendarProps<TDate extends DateFrameworkType> =\n | CalendarSingleProps<TDate>\n | CalendarMultiselectSingleProps<TDate>\n | CalendarRangeProps<TDate>\n | CalendarMultiselectRangeProps<TDate>\n | CalendarOffsetProps<TDate>\n | CalendarMultiselectOffsetProps<TDate>;\n\nconst withBaseName = makePrefixer(\"saltCalendar\");\n\nfunction isMultiselect<TDate>(\n props: CalendarProps<TDate>,\n): props is\n | CalendarMultiselectSingleProps<TDate>\n | CalendarMultiselectRangeProps<TDate>\n | CalendarMultiselectOffsetProps<TDate> {\n return props.multiselect === true;\n}\n\nfunction getStartOrEndDate<TDate>(\n dateRange:\n | DateRangeSelection<TDate>\n | DateRangeSelection<TDate>[]\n | undefined,\n isMultiselect: boolean,\n): TDate | null | undefined {\n if (isMultiselect) {\n const rangeArray = dateRange as DateRangeSelection<TDate>[];\n return rangeArray?.[0]?.startDate ?? rangeArray?.[0]?.endDate;\n }\n const range = dateRange as DateRangeSelection<TDate>;\n return range?.startDate ?? range?.endDate;\n}\n\nlet warnedOnce = false;\n\nexport const Calendar = forwardRef<\n HTMLDivElement,\n CalendarProps<DateFrameworkType>\n>(\n <TDate extends DateFrameworkType>(\n props: CalendarProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const targetWindow = useWindow();\n const { dateAdapter } = useLocalization<TDate>();\n useComponentCssInjection({\n testId: \"salt-calendar\",\n css: calendarCss,\n window: targetWindow,\n });\n const {\n children,\n className,\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n defaultVisibleMonth,\n onFocusedDateChange,\n onSelectionChange,\n onVisibleMonthChange,\n hideOutOfRangeDates,\n focusedDate,\n focusedDateRef,\n isDayUnselectable,\n isDayHighlighted,\n minDate,\n maxDate,\n multiselect,\n numberOfVisibleMonths = 1,\n select,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n timezone: timezoneProp,\n ...propsRest\n } = props;\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!warnedOnce && multiselect && selectionVariant !== \"single\") {\n console.warn(\n `'multiselect' with selection variant '${selectionVariant}' is experimental and not for production use.`,\n );\n warnedOnce = true;\n }\n }\n }, [multiselect, warnedOnce, selectionVariant]);\n\n let timezone: Timezone = \"default\";\n if (timezoneProp) {\n timezone = timezoneProp;\n } else {\n let defaultTimezoneDate: TDate | null | undefined;\n\n if (selectionVariant === \"range\" || selectionVariant === \"offset\") {\n const shouldExtractFromList = isMultiselect(props);\n defaultTimezoneDate =\n getStartOrEndDate(selectedDate, shouldExtractFromList) ??\n getStartOrEndDate(defaultSelectedDate, shouldExtractFromList);\n } else if (selectionVariant === \"single\") {\n if (isMultiselect(props)) {\n defaultTimezoneDate =\n (defaultSelectedDate as TDate[])?.[0] ?? undefined;\n } else {\n defaultTimezoneDate =\n (selectedDate as TDate | null) ??\n (defaultSelectedDate as TDate | null);\n }\n }\n if (defaultTimezoneDate) {\n timezone = dateAdapter.getTimezone(defaultTimezoneDate);\n }\n }\n\n let startDateOffset: CalendarOffsetProps<TDate>[\"startDateOffset\"];\n let endDateOffset: CalendarOffsetProps<TDate>[\"startDateOffset\"];\n let rest: Partial<typeof props>;\n if (selectionVariant === \"offset\") {\n ({ startDateOffset, endDateOffset, ...rest } =\n propsRest as CalendarOffsetProps<TDate>);\n } else {\n rest = propsRest;\n }\n const defaultFocusedDateRef = useRef(null);\n\n // biome-ignore lint/suspicious/noExplicitAny: type guard\n const useCalendarProps: any = {\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n defaultVisibleMonth,\n onSelectionChange,\n onVisibleMonthChange,\n focusedDate,\n focusedDateRef:\n focusedDateRef !== undefined ? focusedDateRef : defaultFocusedDateRef,\n isDayUnselectable,\n isDayHighlighted,\n multiselect,\n minDate,\n maxDate,\n numberOfVisibleMonths,\n select,\n selectionVariant,\n onFocusedDateChange,\n onHoveredDateChange,\n hideOutOfRangeDates,\n hoveredDate,\n startDateOffset,\n endDateOffset,\n timezone,\n };\n const { state, helpers } = useCalendar<TDate>(useCalendarProps);\n const calendarLabel = dateAdapter.format(state.visibleMonth, \"MMMM YYYY\");\n\n return (\n <CalendarContext.Provider\n value={{\n state,\n helpers,\n }}\n >\n <div\n className={clsx(withBaseName(), className)}\n role=\"application\"\n aria-label={calendarLabel}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n </CalendarContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","isMultiselect","forwardRef","useWindow","useLocalization","useComponentCssInjection","calendarCss","useEffect","useRef","useCalendar","jsx","CalendarContext","clsx"],"mappings":"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"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var core = require('@salt-ds/core');
|
|
5
|
-
var react = require('react');
|
|
6
|
-
var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
|
|
7
|
-
var CalendarMonthHeader = require('./CalendarMonthHeader.js');
|
|
8
|
-
var CalendarWeekHeader = require('./CalendarWeekHeader.js');
|
|
9
|
-
var CalendarContext = require('./internal/CalendarContext.js');
|
|
10
|
-
var CalendarMonth = require('./internal/CalendarMonth.js');
|
|
11
|
-
|
|
12
|
-
const CalendarGrid = react.forwardRef(
|
|
13
|
-
(props, ref) => {
|
|
14
|
-
const {
|
|
15
|
-
CalendarDayProps,
|
|
16
|
-
CalendarWeekHeaderProps,
|
|
17
|
-
CalendarMonthHeaderProps,
|
|
18
|
-
columns = 1,
|
|
19
|
-
onBlur,
|
|
20
|
-
...rest
|
|
21
|
-
} = props;
|
|
22
|
-
const { dateAdapter } = LocalizationProvider.useLocalization();
|
|
23
|
-
const {
|
|
24
|
-
helpers: { setFocusedDate, setHoveredDate },
|
|
25
|
-
state: { visibleMonth, numberOfVisibleMonths = 1 }
|
|
26
|
-
} = CalendarContext.useCalendarContext();
|
|
27
|
-
const calendarGridRef = react.useRef(null);
|
|
28
|
-
const containerRef = core.useForkRef(ref, calendarGridRef);
|
|
29
|
-
const handleCalendarGridBlur = (event) => {
|
|
30
|
-
event.stopPropagation();
|
|
31
|
-
const relatedTarget = event.relatedTarget;
|
|
32
|
-
if (calendarGridRef.current && relatedTarget && calendarGridRef.current.contains(relatedTarget)) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
setFocusedDate(event, null);
|
|
36
|
-
setHoveredDate(event, null);
|
|
37
|
-
onBlur == null ? void 0 : onBlur(event);
|
|
38
|
-
};
|
|
39
|
-
const visibleMonths = react.useMemo(
|
|
40
|
-
() => Array.from({ length: numberOfVisibleMonths }, (_value, index) => {
|
|
41
|
-
const gridItemVisibleMonth = dateAdapter.add(visibleMonth, {
|
|
42
|
-
months: index
|
|
43
|
-
});
|
|
44
|
-
return gridItemVisibleMonth;
|
|
45
|
-
}),
|
|
46
|
-
[dateAdapter, numberOfVisibleMonths, visibleMonth]
|
|
47
|
-
);
|
|
48
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
49
|
-
core.GridLayout,
|
|
50
|
-
{
|
|
51
|
-
columns,
|
|
52
|
-
gap: 1,
|
|
53
|
-
ref: containerRef,
|
|
54
|
-
onBlur: handleCalendarGridBlur,
|
|
55
|
-
...rest,
|
|
56
|
-
children: visibleMonths.map((gridItemVisibleMonth) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
57
|
-
core.GridItem,
|
|
58
|
-
{
|
|
59
|
-
children: [
|
|
60
|
-
numberOfVisibleMonths > 1 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
61
|
-
CalendarMonthHeader.CalendarMonthHeader,
|
|
62
|
-
{
|
|
63
|
-
...CalendarMonthHeaderProps,
|
|
64
|
-
month: gridItemVisibleMonth
|
|
65
|
-
}
|
|
66
|
-
) : null,
|
|
67
|
-
/* @__PURE__ */ jsxRuntime.jsx(CalendarWeekHeader.CalendarWeekHeader, { ...CalendarWeekHeaderProps }),
|
|
68
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
69
|
-
CalendarMonth.CalendarMonth,
|
|
70
|
-
{
|
|
71
|
-
date: gridItemVisibleMonth,
|
|
72
|
-
CalendarDayProps
|
|
73
|
-
}
|
|
74
|
-
)
|
|
75
|
-
]
|
|
76
|
-
},
|
|
77
|
-
`calendar-grid-item-${dateAdapter.format(gridItemVisibleMonth, "MMMM YYYY")}`
|
|
78
|
-
))
|
|
79
|
-
}
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
);
|
|
83
|
-
|
|
84
|
-
exports.CalendarGrid = CalendarGrid;
|
|
85
|
-
//# sourceMappingURL=CalendarGrid.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarGrid.js","sources":["../src/calendar/CalendarGrid.tsx"],"sourcesContent":["import {\n GridItem,\n GridLayout,\n type ResponsiveProp,\n useForkRef,\n} from \"@salt-ds/core\";\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEventHandler,\n forwardRef,\n useMemo,\n useRef,\n} from \"react\";\nimport { useLocalization } from \"../localization-provider\";\nimport {\n CalendarMonthHeader,\n type CalendarMonthHeaderProps,\n} from \"./CalendarMonthHeader\";\nimport {\n CalendarWeekHeader,\n type CalendarWeekHeaderProps,\n} from \"./CalendarWeekHeader\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport type { CalendarDayProps } from \"./internal/CalendarDay\";\nimport { CalendarMonth } from \"./internal/CalendarMonth\";\n\n/**\n * Props for the CalendarGrid component.\n * @template TDate - The type of the date object.\n */\nexport interface CalendarGridProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Number of columns\n */\n columns?: ResponsiveProp<number | string>;\n /**\n * Props for `CalendarWeekHeader`\n */\n CalendarWeekHeaderProps?: Partial<CalendarWeekHeaderProps>;\n /**\n * Props for `CalendarMonthHeader`\n */\n CalendarMonthHeaderProps?: Partial<CalendarMonthHeaderProps<TDate>>;\n /**\n * Props for `CalendarDay`\n */\n CalendarDayProps?: Partial<CalendarDayProps<TDate>>;\n}\n\nexport const CalendarGrid = forwardRef<\n HTMLDivElement,\n CalendarGridProps<DateFrameworkType>\n>(\n <TDate extends DateFrameworkType>(\n props: CalendarGridProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const {\n CalendarDayProps,\n CalendarWeekHeaderProps,\n CalendarMonthHeaderProps,\n columns = 1,\n onBlur,\n ...rest\n } = props;\n\n const { dateAdapter } = useLocalization<TDate>();\n\n const {\n helpers: { setFocusedDate, setHoveredDate },\n state: { visibleMonth, numberOfVisibleMonths = 1 },\n } = useCalendarContext<TDate>();\n const calendarGridRef = useRef<HTMLDivElement>(null);\n const containerRef = useForkRef(ref, calendarGridRef);\n\n const handleCalendarGridBlur: FocusEventHandler<HTMLDivElement> = (\n event,\n ) => {\n event.stopPropagation();\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (\n calendarGridRef.current &&\n relatedTarget &&\n calendarGridRef.current.contains(relatedTarget)\n ) {\n return;\n }\n setFocusedDate(event, null);\n setHoveredDate(event, null);\n onBlur?.(event);\n };\n\n const visibleMonths = useMemo(\n () =>\n Array.from({ length: numberOfVisibleMonths }, (_value, index) => {\n const gridItemVisibleMonth: TDate = dateAdapter.add(visibleMonth, {\n months: index,\n });\n return gridItemVisibleMonth;\n }),\n [dateAdapter, numberOfVisibleMonths, visibleMonth],\n );\n\n return (\n <GridLayout\n columns={columns}\n gap={1}\n ref={containerRef}\n onBlur={handleCalendarGridBlur}\n {...rest}\n >\n {visibleMonths.map((gridItemVisibleMonth) => (\n <GridItem\n key={`calendar-grid-item-${dateAdapter.format(gridItemVisibleMonth, \"MMMM YYYY\")}`}\n >\n {numberOfVisibleMonths > 1 ? (\n <CalendarMonthHeader\n {...CalendarMonthHeaderProps}\n month={gridItemVisibleMonth}\n />\n ) : null}\n <CalendarWeekHeader {...CalendarWeekHeaderProps} />\n <CalendarMonth\n date={gridItemVisibleMonth}\n CalendarDayProps={CalendarDayProps}\n />\n </GridItem>\n ))}\n </GridLayout>\n );\n },\n);\n"],"names":["forwardRef","useLocalization","useCalendarContext","useRef","useForkRef","useMemo","jsx","GridLayout","jsxs","GridItem","CalendarMonthHeader","CalendarWeekHeader","CalendarMonth"],"mappings":";;;;;;;;;;;AAmDO,MAAM,YAAA,GAAeA,gBAAA;AAAA,EAI1B,CACE,OACA,GAAA,KACG;AACH,IAAA,MAAM;AAAA,MACJ,gBAAA;AAAA,MACA,uBAAA;AAAA,MACA,wBAAA;AAAA,MACA,OAAA,GAAU,CAAA;AAAA,MACV,MAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,EAAE,WAAA,EAAY,GAAIC,oCAAA,EAAuB;AAE/C,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,EAAE,cAAA,EAAgB,cAAA,EAAe;AAAA,MAC1C,KAAA,EAAO,EAAE,YAAA,EAAc,qBAAA,GAAwB,CAAA;AAAE,QAC/CC,kCAAA,EAA0B;AAC9B,IAAA,MAAM,eAAA,GAAkBC,aAAuB,IAAI,CAAA;AACnD,IAAA,MAAM,YAAA,GAAeC,eAAA,CAAW,GAAA,EAAK,eAAe,CAAA;AAEpD,IAAA,MAAM,sBAAA,GAA4D,CAChE,KAAA,KACG;AACH,MAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,MAAA,MAAM,gBAAgB,KAAA,CAAM,aAAA;AAC5B,MAAA,IACE,gBAAgB,OAAA,IAChB,aAAA,IACA,gBAAgB,OAAA,CAAQ,QAAA,CAAS,aAAa,CAAA,EAC9C;AACA,QAAA;AAAA,MACF;AACA,MAAA,cAAA,CAAe,OAAO,IAAI,CAAA;AAC1B,MAAA,cAAA,CAAe,OAAO,IAAI,CAAA;AAC1B,MAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAS,KAAA,CAAA;AAAA,IACX,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgBC,aAAA;AAAA,MACpB,MACE,MAAM,IAAA,CAAK,EAAE,QAAQ,qBAAA,EAAsB,EAAG,CAAC,MAAA,EAAQ,KAAA,KAAU;AAC/D,QAAA,MAAM,oBAAA,GAA8B,WAAA,CAAY,GAAA,CAAI,YAAA,EAAc;AAAA,UAChE,MAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,OAAO,oBAAA;AAAA,MACT,CAAC,CAAA;AAAA,MACH,CAAC,WAAA,EAAa,qBAAA,EAAuB,YAAY;AAAA,KACnD;AAEA,IAAA,uBACEC,cAAA;AAAA,MAACC,eAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,GAAA,EAAK,CAAA;AAAA,QACL,GAAA,EAAK,YAAA;AAAA,QACL,MAAA,EAAQ,sBAAA;AAAA,QACP,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,oBAAA,qBAClBC,eAAA;AAAA,UAACC,aAAA;AAAA,UAAA;AAAA,YAGE,QAAA,EAAA;AAAA,cAAA,qBAAA,GAAwB,CAAA,mBACvBH,cAAA;AAAA,gBAACI,uCAAA;AAAA,gBAAA;AAAA,kBACE,GAAG,wBAAA;AAAA,kBACJ,KAAA,EAAO;AAAA;AAAA,eACT,GACE,IAAA;AAAA,8BACJJ,cAAA,CAACK,qCAAA,EAAA,EAAoB,GAAG,uBAAA,EAAyB,CAAA;AAAA,8BACjDL,cAAA;AAAA,gBAACM,2BAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,oBAAA;AAAA,kBACN;AAAA;AAAA;AACF;AAAA,WAAA;AAAA,UAZK,CAAA,mBAAA,EAAsB,WAAA,CAAY,MAAA,CAAO,oBAAA,EAAsB,WAAW,CAAC,CAAA;AAAA,SAcnF;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarMonthHeader.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|