@salt-ds/lab 1.0.0-alpha.55 → 1.0.0-alpha.57
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 +167 -0
- package/css/salt-lab.css +44 -7
- package/dist-cjs/calendar/Calendar.js +12 -12
- package/dist-cjs/calendar/Calendar.js.map +1 -1
- package/dist-cjs/calendar/CalendarGrid.css.js +6 -0
- package/dist-cjs/calendar/CalendarGrid.css.js.map +1 -0
- package/dist-cjs/calendar/CalendarGrid.js +107 -0
- package/dist-cjs/calendar/CalendarGrid.js.map +1 -0
- package/dist-cjs/calendar/CalendarNavigation.js +219 -201
- package/dist-cjs/calendar/CalendarNavigation.js.map +1 -1
- package/dist-cjs/calendar/CalendarWeekHeader.js +10 -4
- package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarContext.js +6 -2
- package/dist-cjs/calendar/internal/CalendarContext.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarDay.js +6 -9
- package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.css.js +1 -1
- package/dist-cjs/calendar/internal/CalendarMonth.js +47 -54
- package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-cjs/calendar/internal/useFocusManagement.js +18 -18
- package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-cjs/calendar/internal/utils.js +33 -48
- package/dist-cjs/calendar/internal/utils.js.map +1 -1
- package/dist-cjs/calendar/useCalendar.js +46 -38
- package/dist-cjs/calendar/useCalendar.js.map +1 -1
- package/dist-cjs/calendar/useCalendarDay.js +15 -21
- package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
- package/dist-cjs/calendar/useCalendarSelection.js +44 -35
- package/dist-cjs/calendar/useCalendarSelection.js.map +1 -1
- package/dist-cjs/date-input/DateInput.css.js +1 -1
- package/dist-cjs/date-input/DateInputRange.js +102 -107
- package/dist-cjs/date-input/DateInputRange.js.map +1 -1
- package/dist-cjs/date-input/DateInputSingle.js +39 -51
- package/dist-cjs/date-input/DateInputSingle.js.map +1 -1
- package/dist-cjs/date-picker/DatePicker.js +15 -13
- package/dist-cjs/date-picker/DatePicker.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerActions.js +3 -8
- package/dist-cjs/date-picker/DatePickerActions.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerContext.js +6 -2
- package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlay.js +1 -0
- package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +21 -8
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +77 -28
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangePanel.js +45 -40
- package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSingleInput.js +123 -84
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSinglePanel.js +17 -20
- package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerTrigger.js +32 -0
- package/dist-cjs/date-picker/DatePickerTrigger.js.map +1 -0
- package/dist-cjs/date-picker/useDatePicker.js +60 -110
- package/dist-cjs/date-picker/useDatePicker.js.map +1 -1
- package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
- package/dist-cjs/index.js +19 -20
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/localization-provider/LocalizationProvider.js +48 -0
- package/dist-cjs/localization-provider/LocalizationProvider.js.map +1 -0
- package/dist-cjs/overlay/OverlayHeader.css.js +6 -0
- package/dist-cjs/overlay/OverlayHeader.css.js.map +1 -0
- package/dist-cjs/overlay/OverlayHeader.js +35 -0
- package/dist-cjs/overlay/OverlayHeader.js.map +1 -0
- package/dist-cjs/system-status/SystemStatus.css.js +1 -1
- package/dist-cjs/tabs-next/TabListNext.css.js +1 -1
- package/dist-cjs/tabs-next/TabListNext.js +4 -0
- package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
- package/dist-es/calendar/Calendar.js +12 -12
- package/dist-es/calendar/Calendar.js.map +1 -1
- package/dist-es/calendar/CalendarGrid.css.js +4 -0
- package/dist-es/calendar/CalendarGrid.css.js.map +1 -0
- package/dist-es/calendar/CalendarGrid.js +105 -0
- package/dist-es/calendar/CalendarGrid.js.map +1 -0
- package/dist-es/calendar/CalendarNavigation.js +220 -202
- package/dist-es/calendar/CalendarNavigation.js.map +1 -1
- package/dist-es/calendar/CalendarWeekHeader.js +11 -5
- package/dist-es/calendar/CalendarWeekHeader.js.map +1 -1
- package/dist-es/calendar/internal/CalendarContext.js +6 -2
- package/dist-es/calendar/internal/CalendarContext.js.map +1 -1
- package/dist-es/calendar/internal/CalendarDay.js +6 -9
- package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
- package/dist-es/calendar/internal/CalendarMonth.css.js +1 -1
- package/dist-es/calendar/internal/CalendarMonth.js +48 -55
- package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
- package/dist-es/calendar/internal/useFocusManagement.js +15 -15
- package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
- package/dist-es/calendar/internal/utils.js +32 -45
- package/dist-es/calendar/internal/utils.js.map +1 -1
- package/dist-es/calendar/useCalendar.js +40 -32
- package/dist-es/calendar/useCalendar.js.map +1 -1
- package/dist-es/calendar/useCalendarDay.js +11 -17
- package/dist-es/calendar/useCalendarDay.js.map +1 -1
- package/dist-es/calendar/useCalendarSelection.js +40 -29
- package/dist-es/calendar/useCalendarSelection.js.map +1 -1
- package/dist-es/date-input/DateInput.css.js +1 -1
- package/dist-es/date-input/DateInputRange.js +101 -107
- package/dist-es/date-input/DateInputRange.js.map +1 -1
- package/dist-es/date-input/DateInputSingle.js +39 -51
- package/dist-es/date-input/DateInputSingle.js.map +1 -1
- package/dist-es/date-picker/DatePicker.js +15 -13
- package/dist-es/date-picker/DatePicker.js.map +1 -1
- package/dist-es/date-picker/DatePickerActions.js +3 -8
- package/dist-es/date-picker/DatePickerActions.js.map +1 -1
- package/dist-es/date-picker/DatePickerContext.js +6 -2
- package/dist-es/date-picker/DatePickerContext.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlay.js +1 -0
- package/dist-es/date-picker/DatePickerOverlay.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlayProvider.js +21 -8
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +78 -30
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangePanel.js +44 -39
- package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerSingleInput.js +124 -85
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerSinglePanel.js +17 -20
- package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -1
- package/dist-es/date-picker/DatePickerTrigger.js +30 -0
- package/dist-es/date-picker/DatePickerTrigger.js.map +1 -0
- package/dist-es/date-picker/useDatePicker.js +61 -111
- package/dist-es/date-picker/useDatePicker.js.map +1 -1
- package/dist-es/dropdown/DropdownButton.js.map +1 -1
- package/dist-es/index.js +8 -7
- package/dist-es/index.js.map +1 -1
- package/dist-es/localization-provider/LocalizationProvider.js +44 -0
- package/dist-es/localization-provider/LocalizationProvider.js.map +1 -0
- package/dist-es/overlay/OverlayHeader.css.js +4 -0
- package/dist-es/overlay/OverlayHeader.css.js.map +1 -0
- package/dist-es/overlay/OverlayHeader.js +33 -0
- package/dist-es/overlay/OverlayHeader.js.map +1 -0
- package/dist-es/system-status/SystemStatus.css.js +1 -1
- package/dist-es/tabs-next/TabListNext.css.js +1 -1
- package/dist-es/tabs-next/TabListNext.js +5 -1
- package/dist-es/tabs-next/TabListNext.js.map +1 -1
- package/dist-types/calendar/Calendar.d.ts +11 -6
- package/dist-types/calendar/CalendarGrid.d.ts +13 -0
- package/dist-types/calendar/CalendarNavigation.d.ts +9 -11
- package/dist-types/calendar/CalendarWeekHeader.d.ts +4 -3
- package/dist-types/calendar/index.d.ts +1 -2
- package/dist-types/calendar/internal/CalendarContext.d.ts +5 -6
- package/dist-types/calendar/internal/CalendarDay.d.ts +6 -8
- package/dist-types/calendar/internal/CalendarMonth.d.ts +5 -6
- package/dist-types/calendar/internal/useFocusManagement.d.ts +3 -4
- package/dist-types/calendar/internal/utils.d.ts +7 -11
- package/dist-types/calendar/useCalendar.d.ts +207 -55
- package/dist-types/calendar/useCalendarDay.d.ts +5 -7
- package/dist-types/calendar/useCalendarSelection.d.ts +92 -58
- package/dist-types/date-input/DateInputRange.d.ts +38 -56
- package/dist-types/date-input/DateInputSingle.d.ts +32 -49
- package/dist-types/date-input/index.d.ts +0 -1
- package/dist-types/date-picker/DatePicker.d.ts +23 -5
- package/dist-types/date-picker/DatePickerActions.d.ts +13 -12
- package/dist-types/date-picker/DatePickerContext.d.ts +42 -59
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +10 -0
- package/dist-types/date-picker/DatePickerRangeInput.d.ts +13 -3
- package/dist-types/date-picker/DatePickerRangePanel.d.ts +17 -17
- package/dist-types/date-picker/DatePickerSingleInput.d.ts +12 -3
- package/dist-types/date-picker/DatePickerSinglePanel.d.ts +11 -11
- package/dist-types/date-picker/DatePickerTrigger.d.ts +9 -0
- package/dist-types/date-picker/index.d.ts +3 -2
- package/dist-types/date-picker/useDatePicker.d.ts +52 -59
- package/dist-types/index.d.ts +2 -0
- package/dist-types/localization-provider/LocalizationProvider.d.ts +62 -0
- package/dist-types/localization-provider/index.d.ts +1 -0
- package/dist-types/overlay/OverlayHeader.d.ts +20 -0
- package/dist-types/overlay/index.d.ts +1 -0
- package/package.json +11 -3
- package/dist-cjs/calendar/CalendarDateGrid.css.js +0 -6
- package/dist-cjs/calendar/CalendarDateGrid.css.js.map +0 -1
- package/dist-cjs/calendar/CalendarDateGrid.js +0 -105
- package/dist-cjs/calendar/CalendarDateGrid.js.map +0 -1
- package/dist-cjs/calendar/formatDate.js +0 -51
- package/dist-cjs/calendar/formatDate.js.map +0 -1
- package/dist-cjs/date-input/utils.js +0 -63
- package/dist-cjs/date-input/utils.js.map +0 -1
- package/dist-es/calendar/CalendarDateGrid.css.js +0 -4
- package/dist-es/calendar/CalendarDateGrid.css.js.map +0 -1
- package/dist-es/calendar/CalendarDateGrid.js +0 -103
- package/dist-es/calendar/CalendarDateGrid.js.map +0 -1
- package/dist-es/calendar/formatDate.js +0 -48
- package/dist-es/calendar/formatDate.js.map +0 -1
- package/dist-es/date-input/utils.js +0 -57
- package/dist-es/date-input/utils.js.map +0 -1
- package/dist-types/calendar/CalendarDateGrid.d.ts +0 -10
- package/dist-types/calendar/formatDate.d.ts +0 -14
- package/dist-types/date-input/utils.d.ts +0 -43
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,172 @@
|
|
|
1
1
|
# @salt-ds/lab
|
|
2
2
|
|
|
3
|
+
## 1.0.0-alpha.57
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f3ae565: Fixed `format` not working on `DatePickerRangeInput`. Closes #4474.
|
|
8
|
+
|
|
9
|
+
## 1.0.0-alpha.56
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- e7b0406: Added `OverlayHeader` component to lab.
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<Overlay {...args}>
|
|
17
|
+
<OverlayTrigger>
|
|
18
|
+
<Button>Show Overlay</Button>
|
|
19
|
+
</OverlayTrigger>
|
|
20
|
+
<OverlayPanel aria-labelledby={id}>
|
|
21
|
+
<OverlayHeader
|
|
22
|
+
id={id}
|
|
23
|
+
header="Title"
|
|
24
|
+
actions={
|
|
25
|
+
<Button
|
|
26
|
+
aria-label="Close overlay"
|
|
27
|
+
appearance="transparent"
|
|
28
|
+
sentiment="neutral"
|
|
29
|
+
>
|
|
30
|
+
<CloseIcon aria-hidden />
|
|
31
|
+
</Button>
|
|
32
|
+
}
|
|
33
|
+
/>
|
|
34
|
+
<OverlayPanelContent>Content of Overlay</OverlayPanelContent>
|
|
35
|
+
</OverlayPanel>
|
|
36
|
+
</Overlay>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- b272497: DatePicker, DateInput, Calendar Lab updates
|
|
42
|
+
|
|
43
|
+
We are excited to introduce a new Salt package, `@salt-ds/date-adapters`, currently in pre-release/lab status to gather your valuable feedback.
|
|
44
|
+
|
|
45
|
+
This package includes supported adapters for Salt's date-based controls:
|
|
46
|
+
|
|
47
|
+
- `AdapterDateFns` for [date-fns](https://date-fns.org/)
|
|
48
|
+
- `AdapterDayjs` for [dayjs](https://day.js.org/)
|
|
49
|
+
- `AdapterLuxon` for [luxon](https://moment.github.io/luxon/)
|
|
50
|
+
- `AdapterMoment` (legacy) for [moment](https://momentjs.com/)
|
|
51
|
+
|
|
52
|
+
> **Note:** As `moment` is no longer actively maintained by its creators, `AdapterMoment` is published in a deprecated form to assist in transitioning to a newer date framework.
|
|
53
|
+
|
|
54
|
+
Salt adapters are integrated with a new `LocalizationProvider`, enabling a date-based API accessible through `useLocalization`. Typically, you only need to add one `LocalizationProvider` per application, although they can be nested if necessary.
|
|
55
|
+
|
|
56
|
+
`@salt-ds/adapters` uses peer dependencies for the supported date libraries. It is the responsibility of the application author to include the required dependencies in their build. Additionally, the application author is responsible for configuring the date libraries, including any necessary extensions or loading dependencies for supported locales.
|
|
57
|
+
|
|
58
|
+
**Example Usage**
|
|
59
|
+
|
|
60
|
+
An app that renders a Salt date-based control may look like this:
|
|
61
|
+
|
|
62
|
+
```jsx
|
|
63
|
+
import { AdapterDateFns } from "@salt-ds/date-adapters";
|
|
64
|
+
import {
|
|
65
|
+
Calendar,
|
|
66
|
+
CalendarNavigation,
|
|
67
|
+
CalendarWeekHeader,
|
|
68
|
+
CalendarGrid,
|
|
69
|
+
LocalizationProvider,
|
|
70
|
+
} from "@salt-ds/lab";
|
|
71
|
+
|
|
72
|
+
const MyApp = () => (
|
|
73
|
+
<SaltProvider density="high" mode="light">
|
|
74
|
+
<LocalizationProvider DateAdapter={AdapterDateFns}>
|
|
75
|
+
<Calendar selectionVariant="single">
|
|
76
|
+
<CalendarNavigation />
|
|
77
|
+
<CalendarWeekHeader />
|
|
78
|
+
<CalendarGrid />
|
|
79
|
+
</Calendar>
|
|
80
|
+
</LocalizationProvider>
|
|
81
|
+
</SaltProvider>
|
|
82
|
+
);
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
A `DateInput` within an app that uses `LocalizationProvider` might be implemented as follows:
|
|
86
|
+
|
|
87
|
+
```jsx
|
|
88
|
+
const MyDateInput = () => {
|
|
89
|
+
const { dateAdapter } = useLocalization();
|
|
90
|
+
|
|
91
|
+
function handleDateChange<TDate extends DateFrameworkType>(
|
|
92
|
+
event: SyntheticEvent,
|
|
93
|
+
date: TDate | null,
|
|
94
|
+
details: DateInputSingleDetails
|
|
95
|
+
) {
|
|
96
|
+
console.log(
|
|
97
|
+
`Selected date: ${dateAdapter.isValid(date) ? dateAdapter.format(date, "DD MMM YYYY") : date}`
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
const { value, errors } = details;
|
|
101
|
+
if (errors?.length && value) {
|
|
102
|
+
console.log(
|
|
103
|
+
`Error(s): ${errors
|
|
104
|
+
.map(({ type, message }) => `type=${type} message=${message}`)
|
|
105
|
+
.join(", ")}`
|
|
106
|
+
);
|
|
107
|
+
console.log(`Original Value: ${value}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return <DateInputSingle onDateChange={handleDateChange} />;
|
|
112
|
+
};
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
A `DatePicker` within an app that uses `LocalizationProvider` might be implemented as follows:
|
|
116
|
+
|
|
117
|
+
```jsx
|
|
118
|
+
const MyDatePicker = () => {
|
|
119
|
+
const { dateAdapter } = useLocalization();
|
|
120
|
+
const handleSelectionChange = useCallback(
|
|
121
|
+
(
|
|
122
|
+
event: SyntheticEvent,
|
|
123
|
+
date: SingleDateSelection<DateFrameworkType> | null,
|
|
124
|
+
details: DateInputSingleDetails | undefined,
|
|
125
|
+
) => {
|
|
126
|
+
const { value, errors } = details || {};
|
|
127
|
+
console.log(
|
|
128
|
+
`Selected date: ${dateAdapter.isValid(date) ? dateAdapter.format(date, "DD MMM YYYY") : date}`
|
|
129
|
+
);
|
|
130
|
+
if (errors?.length && value) {
|
|
131
|
+
console.log(
|
|
132
|
+
`Error(s): ${errors
|
|
133
|
+
.map(({ type, message }) => `type=${type} message=${message}`)
|
|
134
|
+
.join(", ")}`
|
|
135
|
+
);
|
|
136
|
+
console.log(`Original Value: ${value}`);
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
return (
|
|
142
|
+
<DatePicker
|
|
143
|
+
selectionVariant="single"
|
|
144
|
+
onSelectionChange={handleSelectionChange}
|
|
145
|
+
>
|
|
146
|
+
<DatePickerTrigger>
|
|
147
|
+
<DatePickerSingleInput />
|
|
148
|
+
</DatePickerTrigger>
|
|
149
|
+
<DatePickerOverlay>
|
|
150
|
+
<DatePickerSinglePanel />
|
|
151
|
+
</DatePickerOverlay>
|
|
152
|
+
</DatePicker>
|
|
153
|
+
);
|
|
154
|
+
};
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
In addition to configuring adapters, `LocalizationProvider` offers props to define locale and fallback min/max dates for all date-based controls.
|
|
158
|
+
|
|
159
|
+
Additional date adapters can be added , as long as they conform to the `SaltDateAdapter` interface.
|
|
160
|
+
|
|
161
|
+
For more detailed examples, please refer to the documentation for `DateInput`, `Calendar`, and `DatePicker`.
|
|
162
|
+
|
|
163
|
+
- 33c8da5: Fix system status icons in content from using the component styles override
|
|
164
|
+
- Updated dependencies [5cf214c]
|
|
165
|
+
- Updated dependencies [bae6882]
|
|
166
|
+
- Updated dependencies [b272497]
|
|
167
|
+
- @salt-ds/core@1.37.3
|
|
168
|
+
- @salt-ds/date-adapters@0.1.0
|
|
169
|
+
|
|
3
170
|
## 1.0.0-alpha.55
|
|
4
171
|
|
|
5
172
|
### Minor Changes
|
package/css/salt-lab.css
CHANGED
|
@@ -199,17 +199,17 @@
|
|
|
199
199
|
padding: var(--salt-spacing-100);
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
/* src/calendar/
|
|
203
|
-
.
|
|
202
|
+
/* src/calendar/CalendarGrid.css */
|
|
203
|
+
.saltCalendarGrid-grid {
|
|
204
204
|
display: grid;
|
|
205
205
|
grid-auto-flow: column;
|
|
206
206
|
}
|
|
207
|
-
.
|
|
207
|
+
.saltCalendarGrid-grid > * {
|
|
208
208
|
position: absolute;
|
|
209
209
|
left: 0;
|
|
210
210
|
width: 100%;
|
|
211
211
|
}
|
|
212
|
-
.
|
|
212
|
+
.saltCalendarGrid-grid > :nth-child(2) {
|
|
213
213
|
position: relative;
|
|
214
214
|
}
|
|
215
215
|
|
|
@@ -1021,6 +1021,12 @@
|
|
|
1021
1021
|
cursor: var(--salt-editable-cursor-disabled);
|
|
1022
1022
|
color: var(--saltDateInput-color-disabled, var(--salt-content-primary-foreground-disabled));
|
|
1023
1023
|
}
|
|
1024
|
+
.saltInput-startAdornmentContainer {
|
|
1025
|
+
align-items: center;
|
|
1026
|
+
display: inline-flex;
|
|
1027
|
+
padding-right: var(--salt-spacing-100);
|
|
1028
|
+
column-gap: var(--salt-spacing-100);
|
|
1029
|
+
}
|
|
1024
1030
|
.saltDateInput-endAdornmentContainer {
|
|
1025
1031
|
display: inline-flex;
|
|
1026
1032
|
padding-left: var(--salt-spacing-100);
|
|
@@ -2385,6 +2391,34 @@
|
|
|
2385
2391
|
align-items: flex-end;
|
|
2386
2392
|
}
|
|
2387
2393
|
|
|
2394
|
+
/* src/overlay/OverlayHeader.css */
|
|
2395
|
+
.saltOverlayHeader {
|
|
2396
|
+
padding: var(--salt-spacing-100);
|
|
2397
|
+
width: 100%;
|
|
2398
|
+
align-items: center;
|
|
2399
|
+
display: flex;
|
|
2400
|
+
flex-direction: row;
|
|
2401
|
+
justify-content: stretch;
|
|
2402
|
+
gap: var(--salt-spacing-100);
|
|
2403
|
+
box-sizing: border-box;
|
|
2404
|
+
}
|
|
2405
|
+
.saltOverlayHeader-container {
|
|
2406
|
+
flex-grow: 1;
|
|
2407
|
+
margin: 0;
|
|
2408
|
+
display: flex;
|
|
2409
|
+
flex-direction: column;
|
|
2410
|
+
gap: var(--salt-spacing-50);
|
|
2411
|
+
}
|
|
2412
|
+
.saltOverlayHeader-header > .saltText {
|
|
2413
|
+
margin: 0;
|
|
2414
|
+
}
|
|
2415
|
+
.saltOverlayHeader-actionsContainer {
|
|
2416
|
+
align-self: flex-start;
|
|
2417
|
+
}
|
|
2418
|
+
.saltOverlayHeader ~ .saltOverlayPanelContent {
|
|
2419
|
+
padding-top: 0;
|
|
2420
|
+
}
|
|
2421
|
+
|
|
2388
2422
|
/* src/query-input/QueryInput.css */
|
|
2389
2423
|
.saltQueryInputBody {
|
|
2390
2424
|
display: flex;
|
|
@@ -2931,7 +2965,6 @@
|
|
|
2931
2965
|
|
|
2932
2966
|
/* src/system-status/SystemStatus.css */
|
|
2933
2967
|
.saltSystemStatus {
|
|
2934
|
-
--saltIcon-color: var(--salt-content-bold-foreground);
|
|
2935
2968
|
background: var(--saltSystemStatus-background, var(--systemStatus-background));
|
|
2936
2969
|
border-color: var(--saltSystemStatus-borderColor, var(--systemStatus-borderColor));
|
|
2937
2970
|
border-width: var(--saltSystemStatus-borderWidth, var(--salt-size-border));
|
|
@@ -2949,6 +2982,7 @@
|
|
|
2949
2982
|
}
|
|
2950
2983
|
.saltSystemStatus-icon.saltIcon {
|
|
2951
2984
|
min-height: var(--salt-size-base);
|
|
2985
|
+
--saltIcon-color: var(--salt-content-bold-foreground);
|
|
2952
2986
|
}
|
|
2953
2987
|
.saltSystemStatus-info {
|
|
2954
2988
|
--systemStatus-borderColor: var(--salt-status-info-bold-background);
|
|
@@ -3335,6 +3369,9 @@
|
|
|
3335
3369
|
.saltTabListNext-activeColorTertiary {
|
|
3336
3370
|
--saltTabListNext-activeColor: var(--salt-container-tertiary-background);
|
|
3337
3371
|
}
|
|
3372
|
+
.saltTabListNext-overflowWarning {
|
|
3373
|
+
display: none;
|
|
3374
|
+
}
|
|
3338
3375
|
|
|
3339
3376
|
/* src/tabs-next/TabNext.css */
|
|
3340
3377
|
.saltTabNext {
|
|
@@ -4321,7 +4358,7 @@
|
|
|
4321
4358
|
}
|
|
4322
4359
|
|
|
4323
4360
|
/* src/calendar/internal/CalendarMonth.css */
|
|
4324
|
-
.saltCalendarMonth-
|
|
4361
|
+
.saltCalendarMonth-grid {
|
|
4325
4362
|
display: grid;
|
|
4326
4363
|
gap: var(--salt-size-border);
|
|
4327
4364
|
grid-template-columns: repeat(7, var(--salt-size-base));
|
|
@@ -4532,4 +4569,4 @@
|
|
|
4532
4569
|
margin: calc(var(--salt-size-unit) / 2) 0;
|
|
4533
4570
|
}
|
|
4534
4571
|
|
|
4535
|
-
/* src/
|
|
4572
|
+
/* src/ed092e1f-b9df-46b0-8077-975db17781fb.css */
|
|
@@ -8,13 +8,14 @@ var CalendarContext = require('./internal/CalendarContext.js');
|
|
|
8
8
|
var useCalendar = require('./useCalendar.js');
|
|
9
9
|
var styles = require('@salt-ds/styles');
|
|
10
10
|
var window = require('@salt-ds/window');
|
|
11
|
-
var
|
|
11
|
+
var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
|
|
12
12
|
var Calendar$1 = require('./Calendar.css.js');
|
|
13
13
|
|
|
14
14
|
const withBaseName = core.makePrefixer("saltCalendar");
|
|
15
15
|
const Calendar = react.forwardRef(
|
|
16
|
-
|
|
16
|
+
(props, ref) => {
|
|
17
17
|
const targetWindow = window.useWindow();
|
|
18
|
+
const { dateAdapter } = LocalizationProvider.useLocalization();
|
|
18
19
|
styles.useComponentCssInjection({
|
|
19
20
|
testId: "salt-calendar",
|
|
20
21
|
css: Calendar$1,
|
|
@@ -26,15 +27,14 @@ const Calendar = react.forwardRef(
|
|
|
26
27
|
selectedDate,
|
|
27
28
|
defaultSelectedDate,
|
|
28
29
|
visibleMonth: visibleMonthProp,
|
|
29
|
-
timeZone,
|
|
30
|
-
locale,
|
|
31
30
|
defaultVisibleMonth,
|
|
32
|
-
|
|
31
|
+
onSelectionChange,
|
|
33
32
|
onVisibleMonthChange,
|
|
34
33
|
hideOutOfRangeDates,
|
|
35
34
|
isDayUnselectable,
|
|
36
35
|
isDayHighlighted,
|
|
37
36
|
isDayDisabled,
|
|
37
|
+
locale,
|
|
38
38
|
minDate,
|
|
39
39
|
maxDate,
|
|
40
40
|
selectionVariant,
|
|
@@ -54,14 +54,13 @@ const Calendar = react.forwardRef(
|
|
|
54
54
|
selectedDate,
|
|
55
55
|
defaultSelectedDate,
|
|
56
56
|
visibleMonth: visibleMonthProp,
|
|
57
|
-
timeZone,
|
|
58
|
-
locale,
|
|
59
57
|
defaultVisibleMonth,
|
|
60
|
-
|
|
58
|
+
onSelectionChange,
|
|
61
59
|
onVisibleMonthChange,
|
|
62
60
|
isDayUnselectable,
|
|
63
61
|
isDayHighlighted,
|
|
64
62
|
isDayDisabled,
|
|
63
|
+
locale,
|
|
65
64
|
minDate,
|
|
66
65
|
maxDate,
|
|
67
66
|
selectionVariant,
|
|
@@ -72,10 +71,11 @@ const Calendar = react.forwardRef(
|
|
|
72
71
|
endDateOffset
|
|
73
72
|
};
|
|
74
73
|
const { state, helpers } = useCalendar.useCalendar(useCalendarProps);
|
|
75
|
-
const calendarLabel =
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
const calendarLabel = dateAdapter.format(
|
|
75
|
+
state.visibleMonth,
|
|
76
|
+
"MMMM YYYY",
|
|
77
|
+
locale
|
|
78
|
+
);
|
|
79
79
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
80
|
CalendarContext.CalendarContext.Provider,
|
|
81
81
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.js","sources":["../src/calendar/Calendar.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { CalendarContext } from \"./internal/CalendarContext\";\nimport {\n type UseCalendarMultiSelectProps,\n type UseCalendarOffsetProps,\n type UseCalendarRangeProps,\n type UseCalendarSingleProps,\n useCalendar,\n} from \"./useCalendar\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"Calendar.js","sources":["../src/calendar/Calendar.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { CalendarContext } from \"./internal/CalendarContext\";\nimport {\n type UseCalendarMultiSelectProps,\n type UseCalendarOffsetProps,\n type UseCalendarRangeProps,\n type UseCalendarSingleProps,\n useCalendar,\n} from \"./useCalendar\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport { useLocalization } from \"../localization-provider\";\nimport calendarCss from \"./Calendar.css\";\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 * Locale for date formatting\n */\n locale?: any;\n}\n\n/**\n * Props for the Calendar component with single date selection.\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 date range selection.\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 selection.\n */\nexport interface CalendarMultiSelectProps<TDate extends DateFrameworkType>\n extends CalendarBaseProps,\n UseCalendarMultiSelectProps<TDate> {\n /**\n * The selection variant, set to \"multiselect\".\n */\n selectionVariant: \"multiselect\";\n}\n\n/**\n * Props for the Calendar component with offset date selection.\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 * Type representing the props for the Calendar component with various selection variants.\n */\nexport type CalendarProps<TDate extends DateFrameworkType> =\n | CalendarSingleProps<TDate>\n | CalendarRangeProps<TDate>\n | CalendarMultiSelectProps<TDate>\n | CalendarOffsetProps<TDate>;\n\nconst withBaseName = makePrefixer(\"saltCalendar\");\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps<any>>(\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 onSelectionChange,\n onVisibleMonthChange,\n hideOutOfRangeDates,\n isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n locale,\n minDate,\n maxDate,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n ...propsRest\n } = props;\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 // 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 isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n locale,\n minDate,\n maxDate,\n selectionVariant,\n onHoveredDateChange,\n hideOutOfRangeDates,\n hoveredDate,\n startDateOffset,\n endDateOffset,\n };\n const { state, helpers } = useCalendar<TDate>(useCalendarProps);\n const calendarLabel = dateAdapter.format(\n state.visibleMonth,\n \"MMMM YYYY\",\n locale,\n );\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","forwardRef","useWindow","useLocalization","useComponentCssInjection","calendarCss","useCalendar","jsx","CalendarContext","clsx"],"mappings":";;;;;;;;;;;;;AAkGA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA;AAEzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,CACE,OACA,GACG,KAAA;AACH,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAM,MAAA,EAAE,WAAY,EAAA,GAAIC,oCAAuB,EAAA;AAC/C,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,mBAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,mBAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,mBAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AACJ,IAAI,IAAA,eAAA;AACJ,IAAI,IAAA,aAAA;AACJ,IAAI,IAAA,IAAA;AACJ,IAAA,IAAI,qBAAqB,QAAU,EAAA;AACjC,MAAA,CAAC,EAAE,eAAA,EAAiB,aAAe,EAAA,GAAG,MACpC,GAAA,SAAA;AAAA,KACG,MAAA;AACL,MAAO,IAAA,GAAA,SAAA;AAAA;AAGT,IAAA,MAAM,gBAAwB,GAAA;AAAA,MAC5B,YAAA;AAAA,MACA,mBAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACd,mBAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,gBAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,EAAE,KAAA,EAAO,OAAQ,EAAA,GAAIC,wBAAmB,gBAAgB,CAAA;AAC9D,IAAA,MAAM,gBAAgB,WAAY,CAAA,MAAA;AAAA,MAChC,KAAM,CAAA,YAAA;AAAA,MACN,WAAA;AAAA,MACA;AAAA,KACF;AAEA,IACE,uBAAAC,cAAA;AAAA,MAACC,+BAAgB,CAAA,QAAA;AAAA,MAAhB;AAAA,QACC,KAAO,EAAA;AAAA,UACL,KAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAD,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAW,EAAAE,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,YACzC,IAAK,EAAA,aAAA;AAAA,YACL,YAAY,EAAA,aAAA;AAAA,YACZ,GAAA;AAAA,YACC,GAAG,IAAA;AAAA,YAEH;AAAA;AAAA;AACH;AAAA,KACF;AAAA;AAGN;;;;"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".saltCalendarGrid-grid {\n display: grid;\n grid-auto-flow: column;\n}\n\n.saltCalendarGrid-grid > * {\n position: absolute;\n left: 0;\n width: 100%;\n}\n\n.saltCalendarGrid-grid > :nth-child(2) {\n position: relative;\n}\n";
|
|
4
|
+
|
|
5
|
+
module.exports = css_248z;
|
|
6
|
+
//# sourceMappingURL=CalendarGrid.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarGrid.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,107 @@
|
|
|
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 CalendarContext = require('./internal/CalendarContext.js');
|
|
7
|
+
var CalendarMonth = require('./internal/CalendarMonth.js');
|
|
8
|
+
var styles = require('@salt-ds/styles');
|
|
9
|
+
var window = require('@salt-ds/window');
|
|
10
|
+
var LocalizationProvider = require('../localization-provider/LocalizationProvider.js');
|
|
11
|
+
var CalendarGrid$1 = require('./CalendarGrid.css.js');
|
|
12
|
+
var utils = require('./internal/utils.js');
|
|
13
|
+
|
|
14
|
+
const withBaseName = core.makePrefixer("saltCalendarGrid");
|
|
15
|
+
const CalendarGrid = react.forwardRef(
|
|
16
|
+
(props, ref) => {
|
|
17
|
+
const {
|
|
18
|
+
onFocus,
|
|
19
|
+
onBlur,
|
|
20
|
+
getCalendarMonthProps = () => void 0,
|
|
21
|
+
...rest
|
|
22
|
+
} = props;
|
|
23
|
+
const { dateAdapter } = LocalizationProvider.useLocalization();
|
|
24
|
+
const targetWindow = window.useWindow();
|
|
25
|
+
styles.useComponentCssInjection({
|
|
26
|
+
testId: "salt-calendar-grid",
|
|
27
|
+
css: CalendarGrid$1,
|
|
28
|
+
window: targetWindow
|
|
29
|
+
});
|
|
30
|
+
const {
|
|
31
|
+
state: { visibleMonth, locale },
|
|
32
|
+
helpers: { setCalendarFocused }
|
|
33
|
+
} = CalendarContext.useCalendarContext();
|
|
34
|
+
const containerRef = react.useRef(null);
|
|
35
|
+
const diffIndex = (a, b) => utils.monthDiff(dateAdapter, a, b);
|
|
36
|
+
const { current: baseIndex } = react.useRef(visibleMonth);
|
|
37
|
+
core.useIsomorphicLayoutEffect(() => {
|
|
38
|
+
if (containerRef.current) {
|
|
39
|
+
containerRef.current.style.transform = `translate3d(${diffIndex(baseIndex, visibleMonth) * -101}%, 0, 0)`;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const getMonths = react.useCallback(
|
|
43
|
+
(month) => {
|
|
44
|
+
return [
|
|
45
|
+
dateAdapter.subtract(month, { months: 1 }),
|
|
46
|
+
month,
|
|
47
|
+
dateAdapter.add(month, { months: 1 })
|
|
48
|
+
];
|
|
49
|
+
},
|
|
50
|
+
[dateAdapter.subtract]
|
|
51
|
+
);
|
|
52
|
+
const handleFocus = react.useCallback(
|
|
53
|
+
(event) => {
|
|
54
|
+
setCalendarFocused(true);
|
|
55
|
+
onFocus == null ? void 0 : onFocus(event);
|
|
56
|
+
},
|
|
57
|
+
[setCalendarFocused, onFocus]
|
|
58
|
+
);
|
|
59
|
+
const handleBlur = react.useCallback(
|
|
60
|
+
(event) => {
|
|
61
|
+
setCalendarFocused(false);
|
|
62
|
+
onBlur == null ? void 0 : onBlur(event);
|
|
63
|
+
},
|
|
64
|
+
[setCalendarFocused, onBlur]
|
|
65
|
+
);
|
|
66
|
+
const months = react.useMemo(() => {
|
|
67
|
+
return getMonths(visibleMonth);
|
|
68
|
+
}, [dateAdapter.format(visibleMonth)]);
|
|
69
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
+
"div",
|
|
71
|
+
{
|
|
72
|
+
className: withBaseName(),
|
|
73
|
+
tabIndex: -1,
|
|
74
|
+
style: {
|
|
75
|
+
overflowX: "hidden",
|
|
76
|
+
position: "relative"
|
|
77
|
+
},
|
|
78
|
+
ref,
|
|
79
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
"div",
|
|
81
|
+
{
|
|
82
|
+
className: withBaseName("grid"),
|
|
83
|
+
ref: containerRef,
|
|
84
|
+
onBlur: handleBlur,
|
|
85
|
+
onFocus: handleFocus,
|
|
86
|
+
...rest,
|
|
87
|
+
children: months.map((date, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
+
"div",
|
|
89
|
+
{
|
|
90
|
+
className: withBaseName("slide"),
|
|
91
|
+
style: {
|
|
92
|
+
transform: `translateX(${diffIndex(date, baseIndex) * -101}%)`
|
|
93
|
+
},
|
|
94
|
+
"aria-hidden": index !== 1 ? "true" : void 0,
|
|
95
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(CalendarMonth.CalendarMonth, { ...getCalendarMonthProps(date), date })
|
|
96
|
+
},
|
|
97
|
+
dateAdapter.format(date, locale)
|
|
98
|
+
))
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
exports.CalendarGrid = CalendarGrid;
|
|
107
|
+
//# sourceMappingURL=CalendarGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarGrid.js","sources":["../src/calendar/CalendarGrid.tsx"],"sourcesContent":["import { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEventHandler,\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport {\n CalendarMonth,\n type CalendarMonthProps,\n} from \"./internal/CalendarMonth\";\n\nimport type { DateFrameworkType } from \"@salt-ds/date-adapters\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useLocalization } from \"../localization-provider\";\nimport calendarGridCss from \"./CalendarGrid.css\";\nimport { monthDiff } from \"./internal/utils\";\n\n/**\n * Props for the CalendarGrid component.\n */\nexport interface CalendarGridProps<TDate extends DateFrameworkType>\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Props getter to pass to each CalendarMonth element\n */\n getCalendarMonthProps?: (\n date: TDate,\n ) => Omit<CalendarMonthProps<TDate>, \"date\">;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarGrid\");\n\nexport const CalendarGrid = forwardRef<HTMLDivElement, CalendarGridProps<any>>(\n <TDate extends DateFrameworkType>(\n props: CalendarGridProps<TDate>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const {\n onFocus,\n onBlur,\n getCalendarMonthProps = () => undefined,\n ...rest\n } = props;\n\n const { dateAdapter } = useLocalization<TDate>();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-grid\",\n css: calendarGridCss,\n window: targetWindow,\n });\n\n const {\n state: { visibleMonth, locale },\n helpers: { setCalendarFocused },\n } = useCalendarContext<TDate>();\n const containerRef = useRef<HTMLDivElement>(null);\n const diffIndex = (a: TDate, b: TDate) =>\n monthDiff<TDate>(dateAdapter, a, b);\n\n const { current: baseIndex } = useRef(visibleMonth);\n\n useIsomorphicLayoutEffect(() => {\n if (containerRef.current) {\n containerRef.current.style.transform = `translate3d(${\n diffIndex(baseIndex, visibleMonth) * -101 // needs to be higher than 100% so the next month doesn't show on the edges\n }%, 0, 0)`;\n }\n });\n\n const getMonths = useCallback(\n (month: TDate) => {\n return [\n dateAdapter.subtract(month, { months: 1 }),\n month,\n dateAdapter.add(month, { months: 1 }),\n ];\n },\n [dateAdapter.subtract],\n );\n\n const handleFocus: FocusEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n setCalendarFocused(true);\n onFocus?.(event);\n },\n [setCalendarFocused, onFocus],\n );\n\n const handleBlur: FocusEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n setCalendarFocused(false);\n onBlur?.(event);\n },\n [setCalendarFocused, onBlur],\n );\n\n const months = useMemo(() => {\n return getMonths(visibleMonth);\n }, [dateAdapter.format(visibleMonth)]);\n\n return (\n <div\n className={withBaseName()}\n tabIndex={-1} // https://bugzilla.mozilla.org/show_bug.cgi?id=1069739\n style={{\n overflowX: \"hidden\",\n position: \"relative\",\n }}\n ref={ref}\n >\n <div\n className={withBaseName(\"grid\")}\n ref={containerRef}\n onBlur={handleBlur}\n onFocus={handleFocus}\n {...rest}\n >\n {months.map((date, index) => (\n <div\n key={dateAdapter.format(date, locale)}\n className={withBaseName(\"slide\")}\n style={{\n transform: `translateX(${diffIndex(date, baseIndex) * -101}%)`,\n }}\n aria-hidden={index !== 1 ? \"true\" : undefined}\n >\n <CalendarMonth {...getCalendarMonthProps(date)} date={date} />\n </div>\n ))}\n </div>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useLocalization","useWindow","useComponentCssInjection","calendarGridCss","useCalendarContext","useRef","monthDiff","useIsomorphicLayoutEffect","useCallback","useMemo","jsx","CalendarMonth"],"mappings":"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"}
|