@proyecto-viviana/solidaria-components 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActionBar.js +184 -0
- package/dist/ActionBar.js.map +1 -0
- package/dist/ActionBar.jsx +128 -0
- package/dist/ActionBar.jsx.map +1 -0
- package/dist/ActionGroup.js +179 -0
- package/dist/ActionGroup.js.map +1 -0
- package/dist/ActionGroup.jsx +129 -0
- package/dist/ActionGroup.jsx.map +1 -0
- package/dist/Alert.js +111 -0
- package/dist/Alert.js.map +1 -0
- package/dist/Alert.jsx +82 -0
- package/dist/Alert.jsx.map +1 -0
- package/dist/Autocomplete.js +130 -0
- package/dist/Autocomplete.js.map +1 -0
- package/dist/Autocomplete.jsx +116 -0
- package/dist/Autocomplete.jsx.map +1 -0
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs.js +334 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Breadcrumbs.jsx +266 -0
- package/dist/Breadcrumbs.jsx.map +1 -0
- package/dist/Button.d.ts.map +1 -1
- package/dist/Button.js +348 -0
- package/dist/Button.js.map +1 -0
- package/dist/Button.jsx +314 -0
- package/dist/Button.jsx.map +1 -0
- package/dist/Calendar.d.ts +4 -4
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Calendar.js +538 -0
- package/dist/Calendar.js.map +1 -0
- package/dist/Calendar.jsx +333 -0
- package/dist/Calendar.jsx.map +1 -0
- package/dist/CalendarPicker.d.ts +33 -0
- package/dist/CalendarPicker.d.ts.map +1 -0
- package/dist/CalendarPicker.js +44 -0
- package/dist/CalendarPicker.js.map +1 -0
- package/dist/CalendarPicker.jsx +44 -0
- package/dist/CalendarPicker.jsx.map +1 -0
- package/dist/Checkbox.d.ts +83 -4
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Checkbox.js +923 -0
- package/dist/Checkbox.js.map +1 -0
- package/dist/Checkbox.jsx +707 -0
- package/dist/Checkbox.jsx.map +1 -0
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +202 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collection.jsx +152 -0
- package/dist/Collection.jsx.map +1 -0
- package/dist/Color.d.ts.map +1 -1
- package/dist/Color.js +1720 -0
- package/dist/Color.js.map +1 -0
- package/dist/Color.jsx +1344 -0
- package/dist/Color.jsx.map +1 -0
- package/dist/ColorEditor.js +208 -0
- package/dist/ColorEditor.js.map +1 -0
- package/dist/ColorEditor.jsx +120 -0
- package/dist/ColorEditor.jsx.map +1 -0
- package/dist/ComboBox.d.ts +4 -4
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +992 -0
- package/dist/ComboBox.js.map +1 -0
- package/dist/ComboBox.jsx +714 -0
- package/dist/ComboBox.jsx.map +1 -0
- package/dist/ContextualHelpTrigger.js +146 -0
- package/dist/ContextualHelpTrigger.js.map +1 -0
- package/dist/ContextualHelpTrigger.jsx +109 -0
- package/dist/ContextualHelpTrigger.jsx.map +1 -0
- package/dist/DateField.d.ts +3 -3
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +4 -0
- package/dist/DateField.jsx +4 -0
- package/dist/DateField2.js +499 -0
- package/dist/DateField2.js.map +1 -0
- package/dist/DateField2.jsx +317 -0
- package/dist/DateField2.jsx.map +1 -0
- package/dist/DatePicker.d.ts +4 -4
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +991 -0
- package/dist/DatePicker.js.map +1 -0
- package/dist/DatePicker.jsx +682 -0
- package/dist/DatePicker.jsx.map +1 -0
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Dialog.js +337 -0
- package/dist/Dialog.js.map +1 -0
- package/dist/Dialog.jsx +192 -0
- package/dist/Dialog.jsx.map +1 -0
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/Disclosure.js +328 -0
- package/dist/Disclosure.js.map +1 -0
- package/dist/Disclosure.jsx +230 -0
- package/dist/Disclosure.jsx.map +1 -0
- package/dist/DragAndDrop.d.ts.map +1 -1
- package/dist/DragAndDrop.js +176 -0
- package/dist/DragAndDrop.js.map +1 -0
- package/dist/DragAndDrop.jsx +160 -0
- package/dist/DragAndDrop.jsx.map +1 -0
- package/dist/DropZone.d.ts.map +1 -1
- package/dist/DropZone.js +189 -0
- package/dist/DropZone.js.map +1 -0
- package/dist/DropZone.jsx +144 -0
- package/dist/DropZone.jsx.map +1 -0
- package/dist/FieldError.js +66 -0
- package/dist/FieldError.js.map +1 -0
- package/dist/FieldError.jsx +47 -0
- package/dist/FieldError.jsx.map +1 -0
- package/dist/FileTrigger.js +79 -0
- package/dist/FileTrigger.js.map +1 -0
- package/dist/FileTrigger.jsx +49 -0
- package/dist/FileTrigger.jsx.map +1 -0
- package/dist/Focusable.js +70 -0
- package/dist/Focusable.js.map +1 -0
- package/dist/Focusable.jsx +69 -0
- package/dist/Focusable.jsx.map +1 -0
- package/dist/Form.js +99 -0
- package/dist/Form.js.map +1 -0
- package/dist/Form.jsx +73 -0
- package/dist/Form.jsx.map +1 -0
- package/dist/GridList.d.ts +34 -2
- package/dist/GridList.d.ts.map +1 -1
- package/dist/GridList.js +723 -0
- package/dist/GridList.js.map +1 -0
- package/dist/GridList.jsx +552 -0
- package/dist/GridList.jsx.map +1 -0
- package/dist/HiddenTimeInput.js +104 -0
- package/dist/HiddenTimeInput.js.map +1 -0
- package/dist/HiddenTimeInput.jsx +69 -0
- package/dist/HiddenTimeInput.jsx.map +1 -0
- package/dist/Icon.d.ts.map +1 -1
- package/dist/Icon.js +127 -0
- package/dist/Icon.js.map +1 -0
- package/dist/Icon.jsx +72 -0
- package/dist/Icon.jsx.map +1 -0
- package/dist/Keyboard.js +30 -0
- package/dist/Keyboard.js.map +1 -0
- package/dist/Keyboard.jsx +24 -0
- package/dist/Keyboard.jsx.map +1 -0
- package/dist/Landmark.js +134 -0
- package/dist/Landmark.js.map +1 -0
- package/dist/Landmark.jsx +118 -0
- package/dist/Landmark.jsx.map +1 -0
- package/dist/Link.d.ts.map +1 -1
- package/dist/Link.js +219 -0
- package/dist/Link.js.map +1 -0
- package/dist/Link.jsx +189 -0
- package/dist/Link.jsx.map +1 -0
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +670 -0
- package/dist/ListBox.js.map +1 -0
- package/dist/ListBox.jsx +508 -0
- package/dist/ListBox.jsx.map +1 -0
- package/dist/Menu.d.ts +27 -9
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Menu.js +1254 -0
- package/dist/Menu.js.map +1 -0
- package/dist/Menu.jsx +1042 -0
- package/dist/Menu.jsx.map +1 -0
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Meter.js +123 -0
- package/dist/Meter.js.map +1 -0
- package/dist/Meter.jsx +107 -0
- package/dist/Meter.jsx.map +1 -0
- package/dist/Modal.d.ts.map +1 -1
- package/dist/Modal.js +380 -0
- package/dist/Modal.js.map +1 -0
- package/dist/Modal.jsx +314 -0
- package/dist/Modal.jsx.map +1 -0
- package/dist/NumberField.d.ts +3 -3
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/NumberField.js +573 -0
- package/dist/NumberField.js.map +1 -0
- package/dist/NumberField.jsx +443 -0
- package/dist/NumberField.jsx.map +1 -0
- package/dist/Popover.d.ts +10 -2
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Popover.js +464 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Popover.jsx +333 -0
- package/dist/Popover.jsx.map +1 -0
- package/dist/Pressable.js +69 -0
- package/dist/Pressable.js.map +1 -0
- package/dist/Pressable.jsx +68 -0
- package/dist/Pressable.jsx.map +1 -0
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar.js +130 -0
- package/dist/ProgressBar.js.map +1 -0
- package/dist/ProgressBar.jsx +114 -0
- package/dist/ProgressBar.jsx.map +1 -0
- package/dist/RadioGroup.d.ts +82 -4
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RadioGroup.js +931 -0
- package/dist/RadioGroup.js.map +1 -0
- package/dist/RadioGroup.jsx +681 -0
- package/dist/RadioGroup.jsx.map +1 -0
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RangeCalendar.js +410 -0
- package/dist/RangeCalendar.js.map +1 -0
- package/dist/RangeCalendar.jsx +253 -0
- package/dist/RangeCalendar.jsx.map +1 -0
- package/dist/RouterProvider.js +118 -0
- package/dist/RouterProvider.js.map +1 -0
- package/dist/RouterProvider.jsx +112 -0
- package/dist/RouterProvider.jsx.map +1 -0
- package/dist/SearchField.d.ts +2 -2
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/SearchField.js +643 -0
- package/dist/SearchField.js.map +1 -0
- package/dist/SearchField.jsx +526 -0
- package/dist/SearchField.jsx.map +1 -0
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +1031 -0
- package/dist/Select.js.map +1 -0
- package/dist/Select.jsx +744 -0
- package/dist/Select.jsx.map +1 -0
- package/dist/SelectionIndicator.d.ts.map +1 -1
- package/dist/SelectionIndicator.js +86 -0
- package/dist/SelectionIndicator.js.map +1 -0
- package/dist/SelectionIndicator.jsx +50 -0
- package/dist/SelectionIndicator.jsx.map +1 -0
- package/dist/Separator.js +97 -0
- package/dist/Separator.js.map +1 -0
- package/dist/Separator.jsx +85 -0
- package/dist/Separator.jsx.map +1 -0
- package/dist/SharedElementTransition.d.ts.map +1 -1
- package/dist/SharedElementTransition.js +165 -0
- package/dist/SharedElementTransition.js.map +1 -0
- package/dist/SharedElementTransition.jsx +138 -0
- package/dist/SharedElementTransition.jsx.map +1 -0
- package/dist/Slider.d.ts +33 -1
- package/dist/Slider.d.ts.map +1 -1
- package/dist/Slider.js +515 -0
- package/dist/Slider.js.map +1 -0
- package/dist/Slider.jsx +403 -0
- package/dist/Slider.jsx.map +1 -0
- package/dist/StepList.js +198 -0
- package/dist/StepList.js.map +1 -0
- package/dist/StepList.jsx +141 -0
- package/dist/StepList.jsx.map +1 -0
- package/dist/Switch.d.ts +65 -2
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Switch.js +534 -0
- package/dist/Switch.js.map +1 -0
- package/dist/Switch.jsx +393 -0
- package/dist/Switch.jsx.map +1 -0
- package/dist/Table.d.ts +48 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +1759 -0
- package/dist/Table.js.map +1 -0
- package/dist/Table.jsx +1348 -0
- package/dist/Table.jsx.map +1 -0
- package/dist/Tabs.d.ts +0 -4
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/Tabs.js +595 -0
- package/dist/Tabs.js.map +1 -0
- package/dist/Tabs.jsx +367 -0
- package/dist/Tabs.jsx.map +1 -0
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +378 -0
- package/dist/TagGroup.js.map +1 -0
- package/dist/TagGroup.jsx +270 -0
- package/dist/TagGroup.jsx.map +1 -0
- package/dist/Text.d.ts +18 -6
- package/dist/Text.d.ts.map +1 -1
- package/dist/Text.js +42 -0
- package/dist/Text.js.map +1 -0
- package/dist/Text.jsx +35 -0
- package/dist/Text.jsx.map +1 -0
- package/dist/TextField.d.ts +6 -6
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TextField.js +436 -0
- package/dist/TextField.js.map +1 -0
- package/dist/TextField.jsx +403 -0
- package/dist/TextField.jsx.map +1 -0
- package/dist/TimeField.d.ts +3 -3
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +372 -0
- package/dist/TimeField.js.map +1 -0
- package/dist/TimeField.jsx +224 -0
- package/dist/TimeField.jsx.map +1 -0
- package/dist/Toast.d.ts +14 -0
- package/dist/Toast.d.ts.map +1 -1
- package/dist/Toast.js +551 -0
- package/dist/Toast.js.map +1 -0
- package/dist/Toast.jsx +361 -0
- package/dist/Toast.jsx.map +1 -0
- package/dist/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton.js +123 -0
- package/dist/ToggleButton.js.map +1 -0
- package/dist/ToggleButton.jsx +88 -0
- package/dist/ToggleButton.jsx.map +1 -0
- package/dist/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButtonGroup.js +114 -0
- package/dist/ToggleButtonGroup.js.map +1 -0
- package/dist/ToggleButtonGroup.jsx +85 -0
- package/dist/ToggleButtonGroup.jsx.map +1 -0
- package/dist/Toolbar.js +112 -0
- package/dist/Toolbar.js.map +1 -0
- package/dist/Toolbar.jsx +92 -0
- package/dist/Toolbar.jsx.map +1 -0
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip.js +539 -0
- package/dist/Tooltip.js.map +1 -0
- package/dist/Tooltip.jsx +465 -0
- package/dist/Tooltip.jsx.map +1 -0
- package/dist/Tree.d.ts +14 -2
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Tree.js +1424 -0
- package/dist/Tree.js.map +1 -0
- package/dist/Tree.jsx +1172 -0
- package/dist/Tree.jsx.map +1 -0
- package/dist/Virtualizer.d.ts +16 -2
- package/dist/Virtualizer.d.ts.map +1 -1
- package/dist/Virtualizer.js +2 -0
- package/dist/Virtualizer.jsx +2 -0
- package/dist/Virtualizer2.js +751 -0
- package/dist/Virtualizer2.js.map +1 -0
- package/dist/Virtualizer2.jsx +730 -0
- package/dist/Virtualizer2.jsx.map +1 -0
- package/dist/VirtualizerLayouts.d.ts +18 -0
- package/dist/VirtualizerLayouts.d.ts.map +1 -1
- package/dist/VisuallyHidden.js +42 -0
- package/dist/VisuallyHidden.js.map +1 -0
- package/dist/VisuallyHidden.jsx +35 -0
- package/dist/VisuallyHidden.jsx.map +1 -0
- package/dist/contexts.js +33 -0
- package/dist/contexts.js.map +1 -0
- package/dist/contexts.jsx +33 -0
- package/dist/contexts.jsx.map +1 -0
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -23932
- package/dist/index.jsx +70 -18337
- package/dist/useDragAndDrop.js +2 -0
- package/dist/useDragAndDrop.jsx +2 -0
- package/dist/useDragAndDrop2.js +395 -0
- package/dist/useDragAndDrop2.js.map +1 -0
- package/dist/useDragAndDrop2.jsx +395 -0
- package/dist/useDragAndDrop2.jsx.map +1 -0
- package/dist/utils.d.ts +83 -11
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +285 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.jsx +277 -0
- package/dist/utils.jsx.map +1 -0
- package/dist/virtualizer/Layout.js +144 -0
- package/dist/virtualizer/Layout.js.map +1 -0
- package/dist/virtualizer/Layout.jsx +144 -0
- package/dist/virtualizer/Layout.jsx.map +1 -0
- package/package.json +401 -4
- package/src/Breadcrumbs.tsx +3 -1
- package/src/Button.tsx +22 -2
- package/src/Calendar.tsx +27 -10
- package/src/CalendarPicker.tsx +73 -0
- package/src/Checkbox.tsx +539 -3
- package/src/Collection.tsx +9 -3
- package/src/Color.tsx +42 -14
- package/src/ComboBox.tsx +50 -6
- package/src/DateField.tsx +20 -2
- package/src/DatePicker.tsx +57 -5
- package/src/Dialog.tsx +13 -5
- package/src/Disclosure.tsx +3 -1
- package/src/DragAndDrop.tsx +3 -1
- package/src/DropZone.tsx +3 -1
- package/src/GridList.tsx +125 -24
- package/src/Icon.tsx +3 -1
- package/src/Link.tsx +3 -1
- package/src/ListBox.tsx +31 -4
- package/src/Menu.tsx +252 -128
- package/src/Meter.tsx +3 -1
- package/src/Modal.tsx +100 -52
- package/src/NumberField.tsx +51 -8
- package/src/Popover.tsx +40 -10
- package/src/ProgressBar.tsx +3 -1
- package/src/RadioGroup.tsx +468 -4
- package/src/RangeCalendar.tsx +3 -1
- package/src/SearchField.tsx +27 -3
- package/src/Select.tsx +22 -7
- package/src/SelectionIndicator.tsx +3 -1
- package/src/SharedElementTransition.tsx +3 -1
- package/src/Slider.tsx +159 -13
- package/src/Switch.tsx +395 -2
- package/src/Table.tsx +409 -95
- package/src/Tabs.tsx +16 -45
- package/src/TagGroup.tsx +3 -1
- package/src/Text.tsx +31 -10
- package/src/TextField.tsx +43 -5
- package/src/TimeField.tsx +20 -2
- package/src/Toast.tsx +79 -14
- package/src/ToggleButton.tsx +3 -1
- package/src/ToggleButtonGroup.tsx +3 -1
- package/src/Tooltip.tsx +3 -1
- package/src/Tree.tsx +77 -9
- package/src/Virtualizer.tsx +180 -31
- package/src/VirtualizerLayouts.ts +45 -10
- package/src/index.ts +50 -0
- package/src/utils.tsx +243 -27
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
package/dist/Calendar.js
ADDED
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
import { dataAttr, useIsHydrated, useRenderProps } from "./utils.js";
|
|
2
|
+
import { VisuallyHidden } from "./VisuallyHidden.js";
|
|
3
|
+
import { className, createComponent, effect, getNextElement, getNextMarker, insert, memo, mergeProps, runHydrationEvents, spread, style, template, use } from "solid-js/web";
|
|
4
|
+
import { For, Index, Show, createContext, createMemo, createSignal, splitProps, useContext } from "solid-js";
|
|
5
|
+
import { createCalendar, createCalendarCell, createCalendarGrid, createHover } from "@proyecto-viviana/solidaria";
|
|
6
|
+
import { createCalendarState, endOfMonth, isSameMonth } from "@proyecto-viviana/solid-stately";
|
|
7
|
+
//#region src/Calendar.tsx
|
|
8
|
+
/**
|
|
9
|
+
* Calendar component for solidaria-components
|
|
10
|
+
*
|
|
11
|
+
* Pre-wired headless calendar component that combines aria hooks.
|
|
12
|
+
* Port of react-aria-components/src/Calendar.tsx
|
|
13
|
+
*/
|
|
14
|
+
var _tmpl$ = /*#__PURE__*/ template(`<div class="solidaria-Calendar solidaria-Calendar--placeholder"aria-hidden=true>`), _tmpl$2 = /*#__PURE__*/ template(`<h2>`), _tmpl$3 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/>`), _tmpl$4 = /*#__PURE__*/ template(`<h2 aria-live=polite>`), _tmpl$5 = /*#__PURE__*/ template(`<button>`), _tmpl$6 = /*#__PURE__*/ template(`<table><thead><tr></tr></thead><tbody>`), _tmpl$7 = /*#__PURE__*/ template(`<th scope=col>`), _tmpl$8 = /*#__PURE__*/ template(`<tr>`), _tmpl$9 = /*#__PURE__*/ template(`<td>`), _tmpl$0 = /*#__PURE__*/ template(`<thead>`), _tmpl$1 = /*#__PURE__*/ template(`<tbody>`), _tmpl$10 = /*#__PURE__*/ template(`<td><div>`);
|
|
15
|
+
function assignRef(ref, el) {
|
|
16
|
+
if (!ref) return;
|
|
17
|
+
if (typeof ref === "function") ref(el);
|
|
18
|
+
else ref.current = el;
|
|
19
|
+
}
|
|
20
|
+
const CalendarContext = createContext(null);
|
|
21
|
+
const CalendarGridMonthContext = createContext(null);
|
|
22
|
+
const CalendarGridCellPositionContext = createContext(null);
|
|
23
|
+
function useCalendarContext() {
|
|
24
|
+
const context = useContext(CalendarContext);
|
|
25
|
+
if (!context) throw new Error("Calendar components must be used within a Calendar");
|
|
26
|
+
return context;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A calendar displays a grid of days in a month and allows users to select a single date.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* <Calendar aria-label="Event date">
|
|
34
|
+
* <header>
|
|
35
|
+
* <CalendarButton slot="previous">◀</CalendarButton>
|
|
36
|
+
* <CalendarHeading />
|
|
37
|
+
* <CalendarButton slot="next">▶</CalendarButton>
|
|
38
|
+
* </header>
|
|
39
|
+
* <CalendarGrid>
|
|
40
|
+
* {(date) => <CalendarCell date={date} />}
|
|
41
|
+
* </CalendarGrid>
|
|
42
|
+
* </Calendar>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
function Calendar(props) {
|
|
46
|
+
const inheritedState = useContext(CalendarContext);
|
|
47
|
+
const isHydrated = useIsHydrated();
|
|
48
|
+
return createComponent(Show, {
|
|
49
|
+
get when() {
|
|
50
|
+
return isHydrated();
|
|
51
|
+
},
|
|
52
|
+
get fallback() {
|
|
53
|
+
return getNextElement(_tmpl$);
|
|
54
|
+
},
|
|
55
|
+
get children() {
|
|
56
|
+
return createComponent(Show, {
|
|
57
|
+
when: inheritedState,
|
|
58
|
+
get fallback() {
|
|
59
|
+
return createComponent(CalendarInner, props);
|
|
60
|
+
},
|
|
61
|
+
get children() {
|
|
62
|
+
return createComponent(CalendarWithState, mergeProps({ state: inheritedState }, props));
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function CalendarWithState(props) {
|
|
69
|
+
const [local, stateProps, rest] = splitProps(props, [
|
|
70
|
+
"children",
|
|
71
|
+
"class",
|
|
72
|
+
"style",
|
|
73
|
+
"slot",
|
|
74
|
+
"state",
|
|
75
|
+
"ref"
|
|
76
|
+
], [
|
|
77
|
+
"value",
|
|
78
|
+
"defaultValue",
|
|
79
|
+
"onChange",
|
|
80
|
+
"selectionMode",
|
|
81
|
+
"minValue",
|
|
82
|
+
"maxValue",
|
|
83
|
+
"isDisabled",
|
|
84
|
+
"isReadOnly",
|
|
85
|
+
"autoFocus",
|
|
86
|
+
"focusedValue",
|
|
87
|
+
"defaultFocusedValue",
|
|
88
|
+
"onFocusChange",
|
|
89
|
+
"locale",
|
|
90
|
+
"createCalendar",
|
|
91
|
+
"isDateUnavailable",
|
|
92
|
+
"visibleMonths",
|
|
93
|
+
"pageBehavior",
|
|
94
|
+
"selectionAlignment",
|
|
95
|
+
"isDateDisabled",
|
|
96
|
+
"validationState",
|
|
97
|
+
"errorMessage",
|
|
98
|
+
"firstDayOfWeek"
|
|
99
|
+
]);
|
|
100
|
+
const state = () => props.state;
|
|
101
|
+
const calendarAria = createCalendar(() => ({
|
|
102
|
+
...rest,
|
|
103
|
+
errorMessage: stateProps.errorMessage
|
|
104
|
+
}), state());
|
|
105
|
+
const renderValues = createMemo(() => ({
|
|
106
|
+
isDisabled: state().isDisabled(),
|
|
107
|
+
isReadOnly: state().isReadOnly(),
|
|
108
|
+
isInvalid: state().isValueInvalid()
|
|
109
|
+
}));
|
|
110
|
+
const renderProps = useRenderProps({
|
|
111
|
+
class: local.class,
|
|
112
|
+
style: local.style,
|
|
113
|
+
defaultClassName: "solidaria-Calendar"
|
|
114
|
+
}, renderValues);
|
|
115
|
+
return (() => {
|
|
116
|
+
var _el$2 = getNextElement(_tmpl$3), _el$4 = _el$2.firstChild, [_el$5, _co$] = getNextMarker(_el$4.nextSibling), _el$6 = _el$5.nextSibling, [_el$7, _co$2] = getNextMarker(_el$6.nextSibling);
|
|
117
|
+
use((el) => assignRef(local.ref, el), _el$2);
|
|
118
|
+
spread(_el$2, mergeProps(() => calendarAria.calendarProps, {
|
|
119
|
+
get ["class"]() {
|
|
120
|
+
return renderProps.class();
|
|
121
|
+
},
|
|
122
|
+
get style() {
|
|
123
|
+
return renderProps.style();
|
|
124
|
+
},
|
|
125
|
+
get ["data-disabled"]() {
|
|
126
|
+
return dataAttr(state().isDisabled());
|
|
127
|
+
},
|
|
128
|
+
get ["data-readonly"]() {
|
|
129
|
+
return dataAttr(state().isReadOnly());
|
|
130
|
+
},
|
|
131
|
+
get ["data-invalid"]() {
|
|
132
|
+
return dataAttr(state().isValueInvalid());
|
|
133
|
+
}
|
|
134
|
+
}), false, true);
|
|
135
|
+
insert(_el$2, createComponent(VisuallyHidden, { get children() {
|
|
136
|
+
var _el$3 = getNextElement(_tmpl$2);
|
|
137
|
+
insert(_el$3, () => String(calendarAria.calendarProps["aria-label"] ?? ""));
|
|
138
|
+
return _el$3;
|
|
139
|
+
} }), _el$5, _co$);
|
|
140
|
+
insert(_el$2, () => props.children, _el$7, _co$2);
|
|
141
|
+
runHydrationEvents();
|
|
142
|
+
return _el$2;
|
|
143
|
+
})();
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Internal Calendar component that renders after client mount.
|
|
147
|
+
*/
|
|
148
|
+
function CalendarInner(props) {
|
|
149
|
+
const [local, stateProps, rest] = splitProps(props, [
|
|
150
|
+
"children",
|
|
151
|
+
"class",
|
|
152
|
+
"style",
|
|
153
|
+
"slot",
|
|
154
|
+
"ref"
|
|
155
|
+
], [
|
|
156
|
+
"value",
|
|
157
|
+
"defaultValue",
|
|
158
|
+
"onChange",
|
|
159
|
+
"selectionMode",
|
|
160
|
+
"minValue",
|
|
161
|
+
"maxValue",
|
|
162
|
+
"isDisabled",
|
|
163
|
+
"isReadOnly",
|
|
164
|
+
"autoFocus",
|
|
165
|
+
"focusedValue",
|
|
166
|
+
"defaultFocusedValue",
|
|
167
|
+
"onFocusChange",
|
|
168
|
+
"locale",
|
|
169
|
+
"createCalendar",
|
|
170
|
+
"isDateUnavailable",
|
|
171
|
+
"visibleMonths",
|
|
172
|
+
"pageBehavior",
|
|
173
|
+
"selectionAlignment",
|
|
174
|
+
"isDateDisabled",
|
|
175
|
+
"validationState",
|
|
176
|
+
"errorMessage",
|
|
177
|
+
"firstDayOfWeek"
|
|
178
|
+
]);
|
|
179
|
+
const state = createCalendarState(stateProps);
|
|
180
|
+
const calendarAria = createCalendar(() => ({
|
|
181
|
+
...rest,
|
|
182
|
+
errorMessage: stateProps.errorMessage
|
|
183
|
+
}), state);
|
|
184
|
+
const renderValues = createMemo(() => ({
|
|
185
|
+
isDisabled: state.isDisabled(),
|
|
186
|
+
isReadOnly: state.isReadOnly(),
|
|
187
|
+
isInvalid: state.isValueInvalid()
|
|
188
|
+
}));
|
|
189
|
+
const renderProps = useRenderProps({
|
|
190
|
+
class: local.class,
|
|
191
|
+
style: local.style,
|
|
192
|
+
defaultClassName: "solidaria-Calendar"
|
|
193
|
+
}, renderValues);
|
|
194
|
+
return createComponent(CalendarContext.Provider, {
|
|
195
|
+
value: state,
|
|
196
|
+
get children() {
|
|
197
|
+
var _el$8 = getNextElement(_tmpl$3), _el$0 = _el$8.firstChild, [_el$1, _co$3] = getNextMarker(_el$0.nextSibling), _el$10 = _el$1.nextSibling, [_el$11, _co$4] = getNextMarker(_el$10.nextSibling);
|
|
198
|
+
use((el) => assignRef(local.ref, el), _el$8);
|
|
199
|
+
spread(_el$8, mergeProps(() => calendarAria.calendarProps, {
|
|
200
|
+
get ["class"]() {
|
|
201
|
+
return renderProps.class();
|
|
202
|
+
},
|
|
203
|
+
get style() {
|
|
204
|
+
return renderProps.style();
|
|
205
|
+
},
|
|
206
|
+
get ["data-disabled"]() {
|
|
207
|
+
return dataAttr(state.isDisabled());
|
|
208
|
+
},
|
|
209
|
+
get ["data-readonly"]() {
|
|
210
|
+
return dataAttr(state.isReadOnly());
|
|
211
|
+
},
|
|
212
|
+
get ["data-invalid"]() {
|
|
213
|
+
return dataAttr(state.isValueInvalid());
|
|
214
|
+
}
|
|
215
|
+
}), false, true);
|
|
216
|
+
insert(_el$8, createComponent(VisuallyHidden, { get children() {
|
|
217
|
+
var _el$9 = getNextElement(_tmpl$2);
|
|
218
|
+
insert(_el$9, () => String(calendarAria.calendarProps["aria-label"] ?? ""));
|
|
219
|
+
return _el$9;
|
|
220
|
+
} }), _el$1, _co$3);
|
|
221
|
+
insert(_el$8, () => props.children, _el$11, _co$4);
|
|
222
|
+
runHydrationEvents();
|
|
223
|
+
return _el$8;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Displays the current month and year in the calendar.
|
|
229
|
+
*/
|
|
230
|
+
function CalendarHeading(props) {
|
|
231
|
+
const state = useCalendarContext();
|
|
232
|
+
const renderValues = createMemo(() => ({ title: state.title() }));
|
|
233
|
+
const renderProps = useRenderProps({
|
|
234
|
+
get children() {
|
|
235
|
+
return props.children;
|
|
236
|
+
},
|
|
237
|
+
class: props.class,
|
|
238
|
+
style: props.style,
|
|
239
|
+
defaultClassName: "solidaria-CalendarHeading"
|
|
240
|
+
}, renderValues);
|
|
241
|
+
return (() => {
|
|
242
|
+
var _el$12 = getNextElement(_tmpl$4);
|
|
243
|
+
insert(_el$12, (() => {
|
|
244
|
+
var _c$ = memo(() => typeof props.children === "function");
|
|
245
|
+
return () => _c$() ? renderProps.renderChildren() : state.title();
|
|
246
|
+
})());
|
|
247
|
+
effect((_p$) => {
|
|
248
|
+
var _v$ = renderProps.class(), _v$2 = renderProps.style();
|
|
249
|
+
_v$ !== _p$.e && className(_el$12, _p$.e = _v$);
|
|
250
|
+
_p$.t = style(_el$12, _v$2, _p$.t);
|
|
251
|
+
return _p$;
|
|
252
|
+
}, {
|
|
253
|
+
e: void 0,
|
|
254
|
+
t: void 0
|
|
255
|
+
});
|
|
256
|
+
return _el$12;
|
|
257
|
+
})();
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* A button for navigating the calendar.
|
|
261
|
+
*/
|
|
262
|
+
function CalendarButton(props) {
|
|
263
|
+
const state = useCalendarContext();
|
|
264
|
+
const calendarAria = createCalendar({}, state);
|
|
265
|
+
const buttonProps = createMemo(() => {
|
|
266
|
+
if (props.slot === "previous") return calendarAria.prevButtonProps;
|
|
267
|
+
return calendarAria.nextButtonProps;
|
|
268
|
+
});
|
|
269
|
+
return (() => {
|
|
270
|
+
var _el$13 = getNextElement(_tmpl$5);
|
|
271
|
+
spread(_el$13, mergeProps(buttonProps, {
|
|
272
|
+
get ["class"]() {
|
|
273
|
+
return props.class ?? "solidaria-CalendarButton";
|
|
274
|
+
},
|
|
275
|
+
get style() {
|
|
276
|
+
return props.style;
|
|
277
|
+
},
|
|
278
|
+
get disabled() {
|
|
279
|
+
return props.isDisabled || state.isDisabled();
|
|
280
|
+
}
|
|
281
|
+
}), false, true);
|
|
282
|
+
insert(_el$13, () => props.children);
|
|
283
|
+
runHydrationEvents();
|
|
284
|
+
return _el$13;
|
|
285
|
+
})();
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Displays a grid of calendar cells.
|
|
289
|
+
*/
|
|
290
|
+
function CalendarGrid(props) {
|
|
291
|
+
const state = useCalendarContext();
|
|
292
|
+
const [gridRef, setGridRef] = createSignal(null);
|
|
293
|
+
const startDate = createMemo(() => {
|
|
294
|
+
const offsetMonths = props.offset?.months ?? 0;
|
|
295
|
+
const baseStart = state.visibleRange().start;
|
|
296
|
+
return offsetMonths ? baseStart.add({ months: offsetMonths }) : baseStart;
|
|
297
|
+
});
|
|
298
|
+
const gridAria = createCalendarGrid({
|
|
299
|
+
startDate: startDate(),
|
|
300
|
+
endDate: endOfMonth(startDate()),
|
|
301
|
+
weekdayStyle: props.weekdayStyle
|
|
302
|
+
}, state, gridRef);
|
|
303
|
+
const renderValues = createMemo(() => ({ isDisabled: state.isDisabled() }));
|
|
304
|
+
const renderProps = useRenderProps({
|
|
305
|
+
class: props.class,
|
|
306
|
+
style: props.style,
|
|
307
|
+
defaultClassName: "solidaria-CalendarGrid"
|
|
308
|
+
}, renderValues);
|
|
309
|
+
const allDates = createMemo(() => {
|
|
310
|
+
const monthStart = startDate();
|
|
311
|
+
const numWeeks = state.getWeeksInMonth(monthStart);
|
|
312
|
+
const weekDates = [];
|
|
313
|
+
for (let weekIndex = 0; weekIndex < numWeeks; weekIndex++) weekDates.push(state.getDatesInWeek(weekIndex, monthStart));
|
|
314
|
+
return weekDates;
|
|
315
|
+
});
|
|
316
|
+
return createComponent(CalendarGridMonthContext.Provider, {
|
|
317
|
+
value: startDate,
|
|
318
|
+
get children() {
|
|
319
|
+
var _el$14 = getNextElement(_tmpl$6), _el$15 = _el$14.firstChild, _el$16 = _el$15.firstChild, _el$17 = _el$15.nextSibling;
|
|
320
|
+
use(setGridRef, _el$14);
|
|
321
|
+
spread(_el$14, mergeProps(() => gridAria.gridProps, {
|
|
322
|
+
get ["class"]() {
|
|
323
|
+
return renderProps.class();
|
|
324
|
+
},
|
|
325
|
+
get style() {
|
|
326
|
+
return renderProps.style();
|
|
327
|
+
}
|
|
328
|
+
}), false, true);
|
|
329
|
+
spread(_el$15, mergeProps(() => gridAria.headerProps), false, true);
|
|
330
|
+
insert(_el$16, createComponent(For, {
|
|
331
|
+
get each() {
|
|
332
|
+
return gridAria.weekDays;
|
|
333
|
+
},
|
|
334
|
+
children: (day) => (() => {
|
|
335
|
+
var _el$18 = getNextElement(_tmpl$7);
|
|
336
|
+
insert(_el$18, day);
|
|
337
|
+
effect(() => className(_el$18, props.headerCellClass ?? "solidaria-CalendarHeaderCell"));
|
|
338
|
+
return _el$18;
|
|
339
|
+
})()
|
|
340
|
+
}));
|
|
341
|
+
insert(_el$17, createComponent(Index, {
|
|
342
|
+
get each() {
|
|
343
|
+
return allDates();
|
|
344
|
+
},
|
|
345
|
+
children: (weekDates, weekIndex) => (() => {
|
|
346
|
+
var _el$19 = getNextElement(_tmpl$8);
|
|
347
|
+
insert(_el$19, createComponent(Index, {
|
|
348
|
+
get each() {
|
|
349
|
+
return weekDates();
|
|
350
|
+
},
|
|
351
|
+
children: (date, dayIndex) => createComponent(Show, {
|
|
352
|
+
get when() {
|
|
353
|
+
return date();
|
|
354
|
+
},
|
|
355
|
+
get fallback() {
|
|
356
|
+
return getNextElement(_tmpl$9);
|
|
357
|
+
},
|
|
358
|
+
get children() {
|
|
359
|
+
return createComponent(CalendarGridCellPositionContext.Provider, {
|
|
360
|
+
value: () => ({
|
|
361
|
+
weekIndex,
|
|
362
|
+
dayIndex,
|
|
363
|
+
lastWeekIndex: allDates().length - 1
|
|
364
|
+
}),
|
|
365
|
+
get children() {
|
|
366
|
+
return props.children?.(date());
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
})
|
|
371
|
+
}));
|
|
372
|
+
return _el$19;
|
|
373
|
+
})()
|
|
374
|
+
}));
|
|
375
|
+
runHydrationEvents();
|
|
376
|
+
return _el$14;
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
function CalendarGridHeader(props) {
|
|
381
|
+
return (() => {
|
|
382
|
+
var _el$21 = getNextElement(_tmpl$0);
|
|
383
|
+
insert(_el$21, () => props.children);
|
|
384
|
+
effect((_p$) => {
|
|
385
|
+
var _v$3 = props.class ?? "solidaria-CalendarGridHeader", _v$4 = props.style;
|
|
386
|
+
_v$3 !== _p$.e && className(_el$21, _p$.e = _v$3);
|
|
387
|
+
_p$.t = style(_el$21, _v$4, _p$.t);
|
|
388
|
+
return _p$;
|
|
389
|
+
}, {
|
|
390
|
+
e: void 0,
|
|
391
|
+
t: void 0
|
|
392
|
+
});
|
|
393
|
+
return _el$21;
|
|
394
|
+
})();
|
|
395
|
+
}
|
|
396
|
+
function CalendarGridBody(props) {
|
|
397
|
+
return (() => {
|
|
398
|
+
var _el$22 = getNextElement(_tmpl$1);
|
|
399
|
+
insert(_el$22, () => props.children);
|
|
400
|
+
effect((_p$) => {
|
|
401
|
+
var _v$5 = props.class ?? "solidaria-CalendarGridBody", _v$6 = props.style;
|
|
402
|
+
_v$5 !== _p$.e && className(_el$22, _p$.e = _v$5);
|
|
403
|
+
_p$.t = style(_el$22, _v$6, _p$.t);
|
|
404
|
+
return _p$;
|
|
405
|
+
}, {
|
|
406
|
+
e: void 0,
|
|
407
|
+
t: void 0
|
|
408
|
+
});
|
|
409
|
+
return _el$22;
|
|
410
|
+
})();
|
|
411
|
+
}
|
|
412
|
+
function CalendarHeaderCell(props) {
|
|
413
|
+
return (() => {
|
|
414
|
+
var _el$23 = getNextElement(_tmpl$7);
|
|
415
|
+
insert(_el$23, () => props.children);
|
|
416
|
+
effect((_p$) => {
|
|
417
|
+
var _v$7 = props.class ?? "solidaria-CalendarHeaderCell", _v$8 = props.style;
|
|
418
|
+
_v$7 !== _p$.e && className(_el$23, _p$.e = _v$7);
|
|
419
|
+
_p$.t = style(_el$23, _v$8, _p$.t);
|
|
420
|
+
return _p$;
|
|
421
|
+
}, {
|
|
422
|
+
e: void 0,
|
|
423
|
+
t: void 0
|
|
424
|
+
});
|
|
425
|
+
return _el$23;
|
|
426
|
+
})();
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* A cell in the calendar grid representing a single day.
|
|
430
|
+
*/
|
|
431
|
+
function CalendarCell(props) {
|
|
432
|
+
const state = useCalendarContext();
|
|
433
|
+
const currentMonthStart = useContext(CalendarGridMonthContext);
|
|
434
|
+
const cellPosition = useContext(CalendarGridCellPositionContext);
|
|
435
|
+
const [cellRef, setCellRef] = createSignal(null);
|
|
436
|
+
const isOutsideMonth = createMemo(() => currentMonthStart != null && !isSameMonth(currentMonthStart(), props.date));
|
|
437
|
+
const position = createMemo(() => cellPosition?.() ?? {
|
|
438
|
+
weekIndex: 0,
|
|
439
|
+
dayIndex: 0,
|
|
440
|
+
lastWeekIndex: 0
|
|
441
|
+
});
|
|
442
|
+
const cellAria = createCalendarCell(() => ({
|
|
443
|
+
date: props.date,
|
|
444
|
+
isOutsideMonth: isOutsideMonth()
|
|
445
|
+
}), state, cellRef);
|
|
446
|
+
const { hoverProps, isHovered } = createHover(() => ({ isDisabled: cellAria.isDisabled || cellAria.isUnavailable }));
|
|
447
|
+
const renderValues = createMemo(() => ({
|
|
448
|
+
isSelected: cellAria.isSelected,
|
|
449
|
+
isFocused: cellAria.isFocused,
|
|
450
|
+
isFocusVisible: cellAria.isFocusVisible,
|
|
451
|
+
isDisabled: cellAria.isDisabled,
|
|
452
|
+
isUnavailable: cellAria.isUnavailable,
|
|
453
|
+
isInvalid: cellAria.isInvalid,
|
|
454
|
+
isOutsideMonth: cellAria.isOutsideMonth,
|
|
455
|
+
isToday: cellAria.isToday,
|
|
456
|
+
isPressed: cellAria.isPressed,
|
|
457
|
+
isHovered: isHovered(),
|
|
458
|
+
isFirstChild: position().dayIndex === 0,
|
|
459
|
+
isLastChild: position().dayIndex === 6,
|
|
460
|
+
isFirstWeek: position().weekIndex === 0,
|
|
461
|
+
isLastWeek: position().weekIndex === position().lastWeekIndex,
|
|
462
|
+
formattedDate: cellAria.formattedDate
|
|
463
|
+
}));
|
|
464
|
+
const renderProps = useRenderProps({
|
|
465
|
+
get children() {
|
|
466
|
+
return props.children;
|
|
467
|
+
},
|
|
468
|
+
class: props.class,
|
|
469
|
+
style: props.style,
|
|
470
|
+
defaultClassName: "solidaria-CalendarCell"
|
|
471
|
+
}, renderValues);
|
|
472
|
+
const cellRenderProps = useRenderProps({
|
|
473
|
+
class: props.cellClass,
|
|
474
|
+
style: props.cellStyle,
|
|
475
|
+
defaultClassName: "solidaria-CalendarCellWrapper"
|
|
476
|
+
}, renderValues);
|
|
477
|
+
const getChildren = () => {
|
|
478
|
+
if (typeof props.children === "function") return renderProps.renderChildren();
|
|
479
|
+
return cellAria.formattedDate;
|
|
480
|
+
};
|
|
481
|
+
return (() => {
|
|
482
|
+
var _el$24 = getNextElement(_tmpl$10), _el$25 = _el$24.firstChild;
|
|
483
|
+
spread(_el$24, mergeProps(() => cellAria.cellProps, {
|
|
484
|
+
get ["class"]() {
|
|
485
|
+
return cellRenderProps.class();
|
|
486
|
+
},
|
|
487
|
+
get style() {
|
|
488
|
+
return cellRenderProps.style();
|
|
489
|
+
}
|
|
490
|
+
}), false, true);
|
|
491
|
+
use(setCellRef, _el$25);
|
|
492
|
+
spread(_el$25, mergeProps(() => cellAria.buttonProps, hoverProps, {
|
|
493
|
+
get ["class"]() {
|
|
494
|
+
return renderProps.class();
|
|
495
|
+
},
|
|
496
|
+
get style() {
|
|
497
|
+
return renderProps.style();
|
|
498
|
+
},
|
|
499
|
+
get ["data-selected"]() {
|
|
500
|
+
return dataAttr(cellAria.isSelected);
|
|
501
|
+
},
|
|
502
|
+
get ["data-focused"]() {
|
|
503
|
+
return dataAttr(cellAria.isFocused);
|
|
504
|
+
},
|
|
505
|
+
get ["data-focus-visible"]() {
|
|
506
|
+
return dataAttr(cellAria.isFocusVisible);
|
|
507
|
+
},
|
|
508
|
+
get ["data-disabled"]() {
|
|
509
|
+
return dataAttr(cellAria.isDisabled);
|
|
510
|
+
},
|
|
511
|
+
get ["data-unavailable"]() {
|
|
512
|
+
return dataAttr(cellAria.isUnavailable);
|
|
513
|
+
},
|
|
514
|
+
get ["data-invalid"]() {
|
|
515
|
+
return dataAttr(cellAria.isInvalid);
|
|
516
|
+
},
|
|
517
|
+
get ["data-outside-month"]() {
|
|
518
|
+
return dataAttr(cellAria.isOutsideMonth);
|
|
519
|
+
},
|
|
520
|
+
get ["data-today"]() {
|
|
521
|
+
return dataAttr(cellAria.isToday);
|
|
522
|
+
},
|
|
523
|
+
get ["data-pressed"]() {
|
|
524
|
+
return dataAttr(cellAria.isPressed);
|
|
525
|
+
},
|
|
526
|
+
get ["data-hovered"]() {
|
|
527
|
+
return dataAttr(isHovered());
|
|
528
|
+
}
|
|
529
|
+
}), false, true);
|
|
530
|
+
insert(_el$25, getChildren);
|
|
531
|
+
runHydrationEvents();
|
|
532
|
+
return _el$24;
|
|
533
|
+
})();
|
|
534
|
+
}
|
|
535
|
+
//#endregion
|
|
536
|
+
export { Calendar, CalendarButton, CalendarCell, CalendarContext, CalendarGrid, CalendarGridBody, CalendarGridHeader, CalendarHeaderCell, CalendarHeading, useCalendarContext };
|
|
537
|
+
|
|
538
|
+
//# sourceMappingURL=Calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Calendar.js","names":["JSX","Accessor","createContext","createMemo","createSignal","splitProps","useContext","For","Index","Show","createCalendar","createCalendarGrid","createCalendarCell","createHover","AriaCalendarProps","AriaCalendarGridProps","createCalendarState","CalendarState","CalendarStateProps","CalendarSelectionMode","CalendarDate","DateValue","endOfMonth","isSameMonth","RenderChildren","ClassNameOrFunction","StyleOrFunction","SlotProps","useRenderProps","dataAttr","useIsHydrated","VisuallyHidden","RefLike","el","T","current","assignRef","ref","CalendarRenderProps","isDisabled","isReadOnly","isInvalid","CalendarProps","Omit","M","children","Element","class","style","locale","HTMLDivElement","CalendarGridRenderProps","CalendarGridProps","date","headerCellClass","offset","months","CalendarCellRenderProps","isSelected","isFocused","isFocusVisible","isUnavailable","isOutsideMonth","isToday","isPressed","isHovered","isFirstChild","isLastChild","isFirstWeek","isLastWeek","formattedDate","CalendarCellProps","cellClass","cellStyle","CalendarHeaderCellProps","CSSProperties","CalendarGridHeaderProps","CalendarGridBodyProps","CalendarContext","CalendarGridMonthContext","CalendarGridCellPositionContext","weekIndex","dayIndex","lastWeekIndex","useCalendarContext","context","Error","Calendar","props","inheritedState","isHydrated","_$createComponent","when","fallback","_$getNextElement","_tmpl$","CalendarInner","CalendarWithState","_$mergeProps","state","local","stateProps","rest","calendarAria","errorMessage","renderValues","isValueInvalid","renderProps","defaultClassName","_el$2","_tmpl$3","_el$4","firstChild","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$use","_$spread","calendarProps","data-disabled","data-readonly","data-invalid","_$insert","_el$3","_tmpl$2","String","_$runHydrationEvents","Provider","value","_el$8","_el$0","_el$1","_co$3","_el$10","_el$11","_co$4","_el$9","CalendarHeadingProps","title","CalendarHeading","_el$12","_tmpl$4","_c$","_$memo","renderChildren","_$effect","_p$","_v$","_v$2","e","_$className","t","_$style","undefined","CalendarButtonProps","slot","CalendarButton","buttonProps","prevButtonProps","nextButtonProps","_el$13","_tmpl$5","disabled","CalendarGrid","gridRef","setGridRef","HTMLTableElement","startDate","offsetMonths","baseStart","visibleRange","start","add","gridAria","endDate","weekdayStyle","allDates","monthStart","numWeeks","getWeeksInMonth","weekDates","push","getDatesInWeek","_el$14","_tmpl$6","_el$15","_el$16","_el$17","gridProps","headerProps","each","weekDays","day","_el$18","_tmpl$7","_el$19","_tmpl$8","_tmpl$9","length","CalendarGridHeader","_el$21","_tmpl$0","_v$3","_v$4","CalendarGridBody","_el$22","_tmpl$1","_v$5","_v$6","CalendarHeaderCell","_el$23","_v$7","_v$8","CalendarCell","currentMonthStart","cellPosition","cellRef","setCellRef","position","cellAria","hoverProps","cellRenderProps","getChildren","_el$24","_tmpl$10","_el$25","cellProps","data-selected","data-focused","data-focus-visible","data-unavailable","data-outside-month","data-today","data-pressed","data-hovered"],"sources":["../src/Calendar.tsx"],"sourcesContent":["/**\n * Calendar component for solidaria-components\n *\n * Pre-wired headless calendar component that combines aria hooks.\n * Port of react-aria-components/src/Calendar.tsx\n */\n\nimport {\n type JSX,\n type Accessor,\n createContext,\n createMemo,\n createSignal,\n splitProps,\n useContext,\n For,\n Index,\n Show,\n} from \"solid-js\";\n\nimport {\n createCalendar,\n createCalendarGrid,\n createCalendarCell,\n createHover,\n type AriaCalendarProps,\n type AriaCalendarGridProps,\n} from \"@proyecto-viviana/solidaria\";\nimport {\n createCalendarState,\n type CalendarState,\n type CalendarStateProps,\n type CalendarSelectionMode,\n type CalendarDate,\n type DateValue,\n endOfMonth,\n isSameMonth,\n} from \"@proyecto-viviana/solid-stately\";\nimport {\n type RenderChildren,\n type ClassNameOrFunction,\n type StyleOrFunction,\n type SlotProps,\n useRenderProps,\n dataAttr,\n useIsHydrated,\n} from \"./utils\";\nimport { VisuallyHidden } from \"./VisuallyHidden\";\n\ntype RefLike<T> = ((el: T) => void) | { current?: T | null } | undefined;\n\nfunction assignRef<T>(ref: RefLike<T>, el: T): void {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(el);\n } else {\n ref.current = el;\n }\n}\n\nexport interface CalendarRenderProps {\n /** Whether the calendar is disabled. */\n isDisabled: boolean;\n /** Whether the calendar is read-only. */\n isReadOnly: boolean;\n /** Whether the current selection is invalid. */\n isInvalid: boolean;\n}\n\nexport interface CalendarProps<\n T extends DateValue = DateValue,\n M extends CalendarSelectionMode = \"single\",\n>\n extends\n Omit<AriaCalendarProps, \"id\" | \"isDisabled\" | \"isReadOnly\">,\n Omit<CalendarStateProps<T, M>, \"locale\">,\n SlotProps {\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<CalendarRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<CalendarRenderProps>;\n /** The locale to use for formatting. */\n locale?: string;\n /** Ref for the calendar root element. */\n ref?: RefLike<HTMLDivElement>;\n}\n\nexport interface CalendarGridRenderProps {\n /** Whether the grid is disabled. */\n isDisabled: boolean;\n}\n\nexport interface CalendarGridProps\n extends Omit<AriaCalendarGridProps, \"startDate\" | \"endDate\">, SlotProps {\n /** The children of the component (render function receiving weeks). */\n children?: (date: CalendarDate) => JSX.Element;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<CalendarGridRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<CalendarGridRenderProps>;\n /** Class name for weekday header cells. */\n headerCellClass?: string;\n /** Number of weeks to offset from the start. */\n offset?: { months?: number };\n}\n\nexport interface CalendarCellRenderProps {\n /** Whether the cell is selected. */\n isSelected: boolean;\n /** Whether the cell is focused. */\n isFocused: boolean;\n /** Whether the cell should display a keyboard focus ring. */\n isFocusVisible: boolean;\n /** Whether the cell is disabled. */\n isDisabled: boolean;\n /** Whether the cell is unavailable. */\n isUnavailable: boolean;\n /** Whether the cell is part of an invalid selection. */\n isInvalid: boolean;\n /** Whether the cell is outside the visible month. */\n isOutsideMonth: boolean;\n /** Whether the cell represents today. */\n isToday: boolean;\n /** Whether the cell is pressed. */\n isPressed: boolean;\n /** Whether the cell is hovered. */\n isHovered: boolean;\n /** Whether the cell is the first day slot in its row. */\n isFirstChild: boolean;\n /** Whether the cell is the last day slot in its row. */\n isLastChild: boolean;\n /** Whether the cell is in the first rendered week row. */\n isFirstWeek: boolean;\n /** Whether the cell is in the last rendered week row. */\n isLastWeek: boolean;\n /** The formatted date string. */\n formattedDate: string;\n}\n\nexport interface CalendarCellProps extends SlotProps {\n /** The date for this cell. */\n date: CalendarDate;\n /** The children of the component. A function may be provided to receive render props. */\n children?: RenderChildren<CalendarCellRenderProps>;\n /** The CSS className for the element. */\n class?: ClassNameOrFunction<CalendarCellRenderProps>;\n /** The inline style for the element. */\n style?: StyleOrFunction<CalendarCellRenderProps>;\n /** Class name for the table cell wrapper. */\n cellClass?: ClassNameOrFunction<CalendarCellRenderProps>;\n /** Inline style for the table cell wrapper. */\n cellStyle?: StyleOrFunction<CalendarCellRenderProps>;\n}\n\nexport interface CalendarHeaderCellProps extends SlotProps {\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\nexport interface CalendarGridHeaderProps extends SlotProps {\n children?: JSX.Element;\n class?: string;\n style?: JSX.CSSProperties;\n}\n\nexport interface CalendarGridBodyProps extends SlotProps {\n children?: JSX.Element;\n class?: string;\n style?: JSX.CSSProperties;\n}\n\nexport const CalendarContext = createContext<CalendarState<DateValue> | null>(null);\nconst CalendarGridMonthContext = createContext<Accessor<CalendarDate> | null>(null);\nconst CalendarGridCellPositionContext = createContext<Accessor<{\n weekIndex: number;\n dayIndex: number;\n lastWeekIndex: number;\n}> | null>(null);\n\nexport function useCalendarContext(): CalendarState<DateValue> {\n const context = useContext(CalendarContext);\n if (!context) {\n throw new Error(\"Calendar components must be used within a Calendar\");\n }\n return context;\n}\n\n/**\n * A calendar displays a grid of days in a month and allows users to select a single date.\n *\n * @example\n * ```tsx\n * <Calendar aria-label=\"Event date\">\n * <header>\n * <CalendarButton slot=\"previous\">◀</CalendarButton>\n * <CalendarHeading />\n * <CalendarButton slot=\"next\">▶</CalendarButton>\n * </header>\n * <CalendarGrid>\n * {(date) => <CalendarCell date={date} />}\n * </CalendarGrid>\n * </Calendar>\n * ```\n */\nexport function Calendar<\n T extends DateValue = CalendarDate,\n M extends CalendarSelectionMode = \"single\",\n>(props: CalendarProps<T, M>): JSX.Element {\n const inheritedState = useContext(CalendarContext);\n\n // Use hydration-safe pattern for client-only rendering\n const isHydrated = useIsHydrated();\n\n return (\n <Show\n when={isHydrated()}\n fallback={\n <div class=\"solidaria-Calendar solidaria-Calendar--placeholder\" aria-hidden=\"true\" />\n }\n >\n <Show when={inheritedState} fallback={<CalendarInner {...props} />}>\n <CalendarWithState state={inheritedState as CalendarState<DateValue>} {...props} />\n </Show>\n </Show>\n );\n}\n\nfunction CalendarWithState<\n T extends DateValue = CalendarDate,\n M extends CalendarSelectionMode = \"single\",\n>(props: CalendarProps<T, M> & { state: CalendarState<DateValue> }): JSX.Element {\n const [local, stateProps, rest] = splitProps(\n props,\n [\"children\", \"class\", \"style\", \"slot\", \"state\", \"ref\"],\n [\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"selectionMode\",\n \"minValue\",\n \"maxValue\",\n \"isDisabled\",\n \"isReadOnly\",\n \"autoFocus\",\n \"focusedValue\",\n \"defaultFocusedValue\",\n \"onFocusChange\",\n \"locale\",\n \"createCalendar\",\n \"isDateUnavailable\",\n \"visibleMonths\",\n \"pageBehavior\",\n \"selectionAlignment\",\n \"isDateDisabled\",\n \"validationState\",\n \"errorMessage\",\n \"firstDayOfWeek\",\n ],\n );\n\n const state = () => props.state;\n const calendarAria = createCalendar(\n () => ({\n ...rest,\n errorMessage: stateProps.errorMessage,\n }),\n state(),\n );\n\n const renderValues = createMemo<CalendarRenderProps>(() => ({\n isDisabled: state().isDisabled(),\n isReadOnly: state().isReadOnly(),\n isInvalid: state().isValueInvalid(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Calendar\",\n },\n renderValues,\n );\n\n return (\n <div\n {...calendarAria.calendarProps}\n ref={(el) => assignRef(local.ref, el)}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state().isDisabled())}\n data-readonly={dataAttr(state().isReadOnly())}\n data-invalid={dataAttr(state().isValueInvalid())}\n >\n <VisuallyHidden>\n <h2>{String(calendarAria.calendarProps[\"aria-label\"] ?? \"\")}</h2>\n </VisuallyHidden>\n {props.children}\n </div>\n );\n}\n\n/**\n * Internal Calendar component that renders after client mount.\n */\nfunction CalendarInner<\n T extends DateValue = CalendarDate,\n M extends CalendarSelectionMode = \"single\",\n>(props: CalendarProps<T, M>): JSX.Element {\n const [local, stateProps, rest] = splitProps(\n props,\n [\"children\", \"class\", \"style\", \"slot\", \"ref\"],\n [\n \"value\",\n \"defaultValue\",\n \"onChange\",\n \"selectionMode\",\n \"minValue\",\n \"maxValue\",\n \"isDisabled\",\n \"isReadOnly\",\n \"autoFocus\",\n \"focusedValue\",\n \"defaultFocusedValue\",\n \"onFocusChange\",\n \"locale\",\n \"createCalendar\",\n \"isDateUnavailable\",\n \"visibleMonths\",\n \"pageBehavior\",\n \"selectionAlignment\",\n \"isDateDisabled\",\n \"validationState\",\n \"errorMessage\",\n \"firstDayOfWeek\",\n ],\n );\n\n // Create calendar state\n const state = createCalendarState<T, M>(stateProps);\n\n // Create calendar ARIA props\n const calendarAria = createCalendar(\n () => ({\n ...rest,\n errorMessage: stateProps.errorMessage,\n }),\n state as unknown as CalendarState<DateValue>,\n );\n\n const renderValues = createMemo<CalendarRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n isReadOnly: state.isReadOnly(),\n isInvalid: state.isValueInvalid(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: local.class,\n style: local.style,\n defaultClassName: \"solidaria-Calendar\",\n },\n renderValues,\n );\n\n return (\n <CalendarContext.Provider value={state as unknown as CalendarState<DateValue>}>\n <div\n {...calendarAria.calendarProps}\n ref={(el) => assignRef(local.ref, el)}\n class={renderProps.class()}\n style={renderProps.style()}\n data-disabled={dataAttr(state.isDisabled())}\n data-readonly={dataAttr(state.isReadOnly())}\n data-invalid={dataAttr(state.isValueInvalid())}\n >\n <VisuallyHidden>\n <h2>{String(calendarAria.calendarProps[\"aria-label\"] ?? \"\")}</h2>\n </VisuallyHidden>\n {props.children}\n </div>\n </CalendarContext.Provider>\n );\n}\n\nexport interface CalendarHeadingProps extends SlotProps {\n /** The children of the component. */\n children?: RenderChildren<{ title: string }>;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n}\n\n/**\n * Displays the current month and year in the calendar.\n */\nexport function CalendarHeading(props: CalendarHeadingProps): JSX.Element {\n const state = useCalendarContext();\n const renderValues = createMemo(() => ({\n title: state.title(),\n }));\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-CalendarHeading\",\n },\n renderValues,\n );\n\n return (\n <h2 class={renderProps.class()} style={renderProps.style()} aria-live=\"polite\">\n {typeof props.children === \"function\" ? renderProps.renderChildren() : state.title()}\n </h2>\n );\n}\n\nexport interface CalendarButtonProps extends SlotProps {\n /** The slot for this button (previous or next). */\n slot?: \"previous\" | \"next\";\n /** The children of the component. */\n children?: JSX.Element;\n /** The CSS className for the element. */\n class?: string;\n /** The inline style for the element. */\n style?: JSX.CSSProperties;\n /** Whether the button is disabled. */\n isDisabled?: boolean;\n}\n\n/**\n * A button for navigating the calendar.\n */\nexport function CalendarButton(props: CalendarButtonProps): JSX.Element {\n const state = useCalendarContext();\n const calendarAria = createCalendar({}, state);\n\n const buttonProps = createMemo(() => {\n if (props.slot === \"previous\") {\n return calendarAria.prevButtonProps;\n }\n return calendarAria.nextButtonProps;\n });\n\n return (\n <button\n {...buttonProps()}\n class={props.class ?? \"solidaria-CalendarButton\"}\n style={props.style}\n disabled={props.isDisabled || state.isDisabled()}\n >\n {props.children}\n </button>\n );\n}\n\n/**\n * Displays a grid of calendar cells.\n */\nexport function CalendarGrid(props: CalendarGridProps): JSX.Element {\n const state = useCalendarContext();\n const [gridRef, setGridRef] = createSignal<HTMLTableElement | null>(null);\n const startDate = createMemo(() => {\n const offsetMonths = props.offset?.months ?? 0;\n const baseStart = state.visibleRange().start;\n return offsetMonths ? baseStart.add({ months: offsetMonths }) : baseStart;\n });\n\n const gridAria = createCalendarGrid(\n {\n startDate: startDate(),\n endDate: endOfMonth(startDate()),\n weekdayStyle: props.weekdayStyle,\n },\n state,\n gridRef,\n );\n\n const renderValues = createMemo<CalendarGridRenderProps>(() => ({\n isDisabled: state.isDisabled(),\n }));\n\n const renderProps = useRenderProps(\n {\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-CalendarGrid\",\n },\n renderValues,\n );\n\n // Memoize ALL dates for the grid at once to avoid reactive loops.\n // This breaks the cycle where accessing visibleRange() inside For loop\n // would cause infinite re-renders.\n const allDates = createMemo(() => {\n const monthStart = startDate();\n const numWeeks = state.getWeeksInMonth(monthStart);\n const weekDates: (CalendarDate | null)[][] = [];\n\n for (let weekIndex = 0; weekIndex < numWeeks; weekIndex++) {\n weekDates.push(state.getDatesInWeek(weekIndex, monthStart));\n }\n\n return weekDates;\n });\n\n return (\n <CalendarGridMonthContext.Provider value={startDate}>\n <table\n ref={setGridRef}\n {...gridAria.gridProps}\n class={renderProps.class()}\n style={renderProps.style()}\n >\n <thead {...gridAria.headerProps}>\n <tr>\n <For each={gridAria.weekDays}>\n {(day) => (\n <th scope=\"col\" class={props.headerCellClass ?? \"solidaria-CalendarHeaderCell\"}>\n {day}\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <Index each={allDates()}>\n {(weekDates, weekIndex) => (\n <tr>\n <Index each={weekDates()}>\n {(date, dayIndex) => (\n <Show when={date()} fallback={<td />}>\n <CalendarGridCellPositionContext.Provider\n value={() => ({\n weekIndex,\n dayIndex,\n lastWeekIndex: allDates().length - 1,\n })}\n >\n {props.children?.(date()!)}\n </CalendarGridCellPositionContext.Provider>\n </Show>\n )}\n </Index>\n </tr>\n )}\n </Index>\n </tbody>\n </table>\n </CalendarGridMonthContext.Provider>\n );\n}\n\nexport function CalendarGridHeader(props: CalendarGridHeaderProps): JSX.Element {\n return (\n <thead class={props.class ?? \"solidaria-CalendarGridHeader\"} style={props.style}>\n {props.children}\n </thead>\n );\n}\n\nexport function CalendarGridBody(props: CalendarGridBodyProps): JSX.Element {\n return (\n <tbody class={props.class ?? \"solidaria-CalendarGridBody\"} style={props.style}>\n {props.children}\n </tbody>\n );\n}\n\nexport function CalendarHeaderCell(props: CalendarHeaderCellProps): JSX.Element {\n return (\n <th scope=\"col\" class={props.class ?? \"solidaria-CalendarHeaderCell\"} style={props.style}>\n {props.children}\n </th>\n );\n}\n\n/**\n * A cell in the calendar grid representing a single day.\n */\nexport function CalendarCell(props: CalendarCellProps): JSX.Element {\n const state = useCalendarContext();\n const currentMonthStart = useContext(CalendarGridMonthContext);\n const cellPosition = useContext(CalendarGridCellPositionContext);\n const [cellRef, setCellRef] = createSignal<HTMLDivElement | null>(null);\n const isOutsideMonth = createMemo(\n () => currentMonthStart != null && !isSameMonth(currentMonthStart(), props.date),\n );\n const position = createMemo(\n () =>\n cellPosition?.() ?? {\n weekIndex: 0,\n dayIndex: 0,\n lastWeekIndex: 0,\n },\n );\n\n const cellAria = createCalendarCell(\n () => ({\n date: props.date,\n isOutsideMonth: isOutsideMonth(),\n }),\n state,\n cellRef,\n );\n const { hoverProps, isHovered } = createHover(() => ({\n isDisabled: cellAria.isDisabled || cellAria.isUnavailable,\n }));\n\n const renderValues = createMemo<CalendarCellRenderProps>(() => ({\n isSelected: cellAria.isSelected,\n isFocused: cellAria.isFocused,\n isFocusVisible: cellAria.isFocusVisible,\n isDisabled: cellAria.isDisabled,\n isUnavailable: cellAria.isUnavailable,\n isInvalid: cellAria.isInvalid,\n isOutsideMonth: cellAria.isOutsideMonth,\n isToday: cellAria.isToday,\n isPressed: cellAria.isPressed,\n isHovered: isHovered(),\n isFirstChild: position().dayIndex === 0,\n isLastChild: position().dayIndex === 6,\n isFirstWeek: position().weekIndex === 0,\n isLastWeek: position().weekIndex === position().lastWeekIndex,\n formattedDate: cellAria.formattedDate,\n }));\n\n const renderProps = useRenderProps(\n {\n get children() {\n return props.children;\n },\n class: props.class,\n style: props.style,\n defaultClassName: \"solidaria-CalendarCell\",\n },\n renderValues,\n );\n const cellRenderProps = useRenderProps(\n {\n class: props.cellClass,\n style: props.cellStyle,\n defaultClassName: \"solidaria-CalendarCellWrapper\",\n },\n renderValues,\n );\n\n // Determine children content - avoid Show for SSR hydration compatibility\n const getChildren = () => {\n if (typeof props.children === \"function\") {\n return renderProps.renderChildren();\n }\n return cellAria.formattedDate;\n };\n\n return (\n <td {...cellAria.cellProps} class={cellRenderProps.class()} style={cellRenderProps.style()}>\n <div\n ref={setCellRef}\n {...cellAria.buttonProps}\n {...hoverProps}\n class={renderProps.class()}\n style={renderProps.style()}\n data-selected={dataAttr(cellAria.isSelected)}\n data-focused={dataAttr(cellAria.isFocused)}\n data-focus-visible={dataAttr(cellAria.isFocusVisible)}\n data-disabled={dataAttr(cellAria.isDisabled)}\n data-unavailable={dataAttr(cellAria.isUnavailable)}\n data-invalid={dataAttr(cellAria.isInvalid)}\n data-outside-month={dataAttr(cellAria.isOutsideMonth)}\n data-today={dataAttr(cellAria.isToday)}\n data-pressed={dataAttr(cellAria.isPressed)}\n data-hovered={dataAttr(isHovered())}\n >\n {getChildren()}\n </div>\n </td>\n );\n}\n\nexport type { CalendarState, CalendarDate, DateValue };\n"],"mappings":"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"}
|