@proyecto-viviana/solidaria-components 0.3.2 → 0.4.1
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.d.ts.map +1 -1
- package/dist/ActionBar.js +175 -0
- package/dist/ActionBar.js.map +1 -0
- package/dist/ActionBar.jsx +119 -0
- package/dist/ActionBar.jsx.map +1 -0
- package/dist/ActionGroup.d.ts.map +1 -1
- 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.d.ts +2 -2
- package/dist/Autocomplete.d.ts.map +1 -1
- 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 +333 -0
- package/dist/Breadcrumbs.js.map +1 -0
- package/dist/Breadcrumbs.jsx +261 -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 +573 -0
- package/dist/Calendar.js.map +1 -0
- package/dist/Calendar.jsx +342 -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 +1717 -0
- package/dist/Color.js.map +1 -0
- package/dist/Color.jsx +1340 -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 +8 -4
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js +1000 -0
- package/dist/ComboBox.js.map +1 -0
- package/dist/ComboBox.jsx +724 -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 +14 -5
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DateField.js +4 -0
- package/dist/DateField.jsx +4 -0
- package/dist/DateField2.js +502 -0
- package/dist/DateField2.js.map +1 -0
- package/dist/DateField2.jsx +354 -0
- package/dist/DateField2.jsx.map +1 -0
- package/dist/DatePicker.d.ts +46 -7
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DatePicker.js +7 -0
- package/dist/DatePicker.jsx +7 -0
- package/dist/DatePicker2.js +1171 -0
- package/dist/DatePicker2.js.map +1 -0
- package/dist/DatePicker2.jsx +820 -0
- package/dist/DatePicker2.jsx.map +1 -0
- package/dist/DateRangePickerContext.d.ts +2 -0
- package/dist/DateRangePickerContext.d.ts.map +1 -1
- 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 +331 -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/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 +2 -2
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListBox.js +831 -0
- package/dist/ListBox.js.map +1 -0
- package/dist/ListBox.jsx +644 -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 +382 -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 +471 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Popover.jsx +354 -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 +546 -0
- package/dist/RangeCalendar.js.map +1 -0
- package/dist/RangeCalendar.jsx +323 -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 +667 -0
- package/dist/SearchField.js.map +1 -0
- package/dist/SearchField.jsx +550 -0
- package/dist/SearchField.jsx.map +1 -0
- package/dist/Select.d.ts +7 -0
- package/dist/Select.d.ts.map +1 -1
- package/dist/Select.js +1044 -0
- package/dist/Select.js.map +1 -0
- package/dist/Select.jsx +759 -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 +167 -0
- package/dist/SharedElementTransition.js.map +1 -0
- package/dist/SharedElementTransition.jsx +140 -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.d.ts.map +1 -1
- package/dist/StepList.js +191 -0
- package/dist/StepList.js.map +1 -0
- package/dist/StepList.jsx +136 -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 +50 -0
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +1766 -0
- package/dist/Table.js.map +1 -0
- package/dist/Table.jsx +1355 -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 +598 -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 +3 -1
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/TagGroup.js +382 -0
- package/dist/TagGroup.js.map +1 -0
- package/dist/TagGroup.jsx +273 -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 +439 -0
- package/dist/TextField.js.map +1 -0
- package/dist/TextField.jsx +406 -0
- package/dist/TextField.jsx.map +1 -0
- package/dist/TimeField.d.ts +17 -53
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/TimeField.js +278 -0
- package/dist/TimeField.js.map +1 -0
- package/dist/TimeField.jsx +218 -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 +9 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +69 -23932
- package/dist/index.jsx +69 -18337
- package/dist/useDragAndDrop.d.ts +0 -8
- package/dist/useDragAndDrop.d.ts.map +1 -1
- package/dist/useDragAndDrop.js +2 -0
- package/dist/useDragAndDrop.jsx +2 -0
- package/dist/useDragAndDrop2.js +399 -0
- package/dist/useDragAndDrop2.js.map +1 -0
- package/dist/useDragAndDrop2.jsx +399 -0
- package/dist/useDragAndDrop2.jsx.map +1 -0
- package/dist/utils.d.ts +84 -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 +395 -4
- package/src/ActionBar.tsx +10 -12
- package/src/ActionGroup.tsx +5 -3
- package/src/Autocomplete.tsx +14 -9
- package/src/Breadcrumbs.tsx +58 -39
- package/src/Button.tsx +22 -2
- package/src/Calendar.tsx +57 -11
- package/src/CalendarPicker.tsx +73 -0
- package/src/Checkbox.tsx +539 -3
- package/src/Collection.tsx +9 -3
- package/src/Color.tsx +84 -41
- package/src/ComboBox.tsx +97 -21
- package/src/DateField.tsx +304 -53
- package/src/DatePicker.tsx +402 -62
- package/src/DateRangePickerContext.tsx +2 -0
- package/src/Dialog.tsx +13 -5
- package/src/Disclosure.tsx +7 -1
- package/src/DragAndDrop.tsx +3 -1
- package/src/DropZone.tsx +3 -1
- package/src/GridList.tsx +133 -26
- package/src/Icon.tsx +3 -1
- package/src/Link.tsx +3 -1
- package/src/ListBox.tsx +354 -25
- package/src/Menu.tsx +252 -128
- package/src/Meter.tsx +3 -1
- package/src/Modal.tsx +120 -56
- package/src/NumberField.tsx +51 -8
- package/src/Popover.tsx +68 -17
- package/src/ProgressBar.tsx +3 -1
- package/src/RadioGroup.tsx +468 -4
- package/src/RangeCalendar.tsx +123 -2
- package/src/SearchField.tsx +80 -4
- package/src/Select.tsx +122 -26
- package/src/SelectionIndicator.tsx +3 -1
- package/src/SharedElementTransition.tsx +95 -37
- package/src/Slider.tsx +159 -13
- package/src/StepList.tsx +0 -7
- package/src/Switch.tsx +395 -2
- package/src/Table.tsx +428 -99
- package/src/Tabs.tsx +17 -45
- package/src/TagGroup.tsx +29 -7
- package/src/Text.tsx +31 -10
- package/src/TextField.tsx +44 -6
- package/src/TimeField.tsx +127 -192
- 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 +91 -13
- package/src/Virtualizer.tsx +180 -31
- package/src/VirtualizerLayouts.ts +45 -10
- package/src/index.ts +51 -8
- package/src/useDragAndDrop.ts +8 -10
- package/src/utils.tsx +246 -30
- package/dist/HiddenTimeInput.d.ts +0 -25
- package/dist/HiddenTimeInput.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.jsx.map +0 -1
- package/src/HiddenTimeInput.tsx +0 -133
|
@@ -0,0 +1,1171 @@
|
|
|
1
|
+
import { Provider, dataAttr, useIsHydrated, useRenderProps } from "./utils.js";
|
|
2
|
+
import { TextContext } from "./Text.js";
|
|
3
|
+
import { FormContext } from "./Form.js";
|
|
4
|
+
import { CalendarContext } from "./Calendar.js";
|
|
5
|
+
import { RangeCalendarContext } from "./RangeCalendar.js";
|
|
6
|
+
import { d as useDateRangePickerContext, n as DateFieldContext, u as DateRangePickerContext } from "./DateField2.js";
|
|
7
|
+
import { Portal, addEventListener, className, createComponent, effect, getNextElement, insert, mergeProps, runHydrationEvents, setAttribute, setProperty, spread, style, template, use } from "solid-js/web";
|
|
8
|
+
import { Show, createContext, createEffect, createMemo, createSignal, onCleanup, splitProps, useContext } from "solid-js";
|
|
9
|
+
import { FocusScope, createDateField, createDatePicker, createDateRangePicker, createEnterAnimation, createFocusRing, createFormValidation, createHover, createPopover, mergeProps as mergeProps$2, useUNSAFE_PortalContext } from "@proyecto-viviana/solidaria";
|
|
10
|
+
import { access, createCalendarState, createDateFieldState, createDatePickerState, createRangeCalendarState } from "@proyecto-viviana/solid-stately";
|
|
11
|
+
//#region src/HiddenDateInput.tsx
|
|
12
|
+
/**
|
|
13
|
+
* HiddenDateInput component for solidaria-components
|
|
14
|
+
*
|
|
15
|
+
* A hidden native date/datetime-local input for form submission.
|
|
16
|
+
* Renders server-side with the initial value for SSR safety.
|
|
17
|
+
*/
|
|
18
|
+
var _tmpl$$1 = /*#__PURE__*/ template(`<input tabindex=-1 aria-hidden=true>`);
|
|
19
|
+
function accessValue(value) {
|
|
20
|
+
return typeof value === "function" ? value() : value;
|
|
21
|
+
}
|
|
22
|
+
function formatDateValue(value, granularity) {
|
|
23
|
+
if (!value) return "";
|
|
24
|
+
if ("timeZone" in value) return String(value);
|
|
25
|
+
const dateValue = value;
|
|
26
|
+
const year = String(dateValue.year).padStart(4, "0");
|
|
27
|
+
const month = String(dateValue.month).padStart(2, "0");
|
|
28
|
+
const day = String(dateValue.day).padStart(2, "0");
|
|
29
|
+
if (granularity === "day") return `${year}-${month}-${day}`;
|
|
30
|
+
const hasHour = "hour" in dateValue;
|
|
31
|
+
const hour = hasHour ? String(dateValue.hour).padStart(2, "0") : "00";
|
|
32
|
+
const hasMinute = hasHour && "minute" in dateValue;
|
|
33
|
+
const minute = hasMinute ? String(dateValue.minute).padStart(2, "0") : "00";
|
|
34
|
+
if (granularity === "second" && hasMinute && "second" in dateValue) return `${year}-${month}-${day}T${hour}:${minute}:${String(dateValue.second).padStart(2, "0")}`;
|
|
35
|
+
return `${year}-${month}-${day}T${hour}:${minute}`;
|
|
36
|
+
}
|
|
37
|
+
function HiddenDateInput(props) {
|
|
38
|
+
const granularity = () => props.granularity ?? "day";
|
|
39
|
+
const hasValidationBehavior = () => props.validationBehavior != null;
|
|
40
|
+
const validationBehavior = () => props.validationBehavior;
|
|
41
|
+
const usesNativeValidation = () => validationBehavior() === "native";
|
|
42
|
+
const value = () => accessValue(props.value);
|
|
43
|
+
const minValue = () => accessValue(props.minValue);
|
|
44
|
+
const maxValue = () => accessValue(props.maxValue);
|
|
45
|
+
const hasTimeZoneValue = () => Boolean(value() && "timeZone" in value() || minValue() && "timeZone" in minValue() || maxValue() && "timeZone" in maxValue());
|
|
46
|
+
const inputType = () => usesNativeValidation() ? "text" : hasValidationBehavior() ? "hidden" : hasTimeZoneValue() ? "hidden" : granularity() === "day" ? "date" : "datetime-local";
|
|
47
|
+
const formattedValue = () => formatDateValue(value(), granularity());
|
|
48
|
+
const formattedMin = () => formatDateValue(minValue(), granularity());
|
|
49
|
+
const formattedMax = () => formatDateValue(maxValue(), granularity());
|
|
50
|
+
const [inputRef, setInputRef] = createSignal();
|
|
51
|
+
if (props.validationState) createFormValidation({
|
|
52
|
+
get validationBehavior() {
|
|
53
|
+
return validationBehavior();
|
|
54
|
+
},
|
|
55
|
+
get focus() {
|
|
56
|
+
return props.focus;
|
|
57
|
+
}
|
|
58
|
+
}, props.validationState, inputRef);
|
|
59
|
+
createEffect(() => {
|
|
60
|
+
const val = formattedValue();
|
|
61
|
+
const input = inputRef();
|
|
62
|
+
if (input && input.value !== val) input.value = val;
|
|
63
|
+
});
|
|
64
|
+
return (() => {
|
|
65
|
+
var _el$ = getNextElement(_tmpl$$1);
|
|
66
|
+
addEventListener(_el$, "change", usesNativeValidation() ? () => {} : void 0);
|
|
67
|
+
use((el) => {
|
|
68
|
+
setInputRef(el);
|
|
69
|
+
}, _el$);
|
|
70
|
+
effect((_p$) => {
|
|
71
|
+
var _v$ = inputType(), _v$2 = props.name, _v$3 = props.form, _v$4 = props.autoComplete, _v$5 = props.isDisabled, _v$6 = usesNativeValidation() && props.isRequired ? true : void 0, _v$7 = usesNativeValidation() || void 0, _v$8 = hasValidationBehavior() ? void 0 : formattedMin() || void 0, _v$9 = hasValidationBehavior() ? void 0 : formattedMax() || void 0, _v$0 = {
|
|
72
|
+
position: "absolute",
|
|
73
|
+
width: "1px",
|
|
74
|
+
height: "1px",
|
|
75
|
+
padding: "0",
|
|
76
|
+
margin: "-1px",
|
|
77
|
+
overflow: "hidden",
|
|
78
|
+
clip: "rect(0, 0, 0, 0)",
|
|
79
|
+
"white-space": "nowrap",
|
|
80
|
+
"border-width": "0"
|
|
81
|
+
};
|
|
82
|
+
_v$ !== _p$.e && setAttribute(_el$, "type", _p$.e = _v$);
|
|
83
|
+
_v$2 !== _p$.t && setAttribute(_el$, "name", _p$.t = _v$2);
|
|
84
|
+
_v$3 !== _p$.a && setAttribute(_el$, "form", _p$.a = _v$3);
|
|
85
|
+
_v$4 !== _p$.o && setAttribute(_el$, "autocomplete", _p$.o = _v$4);
|
|
86
|
+
_v$5 !== _p$.i && setProperty(_el$, "disabled", _p$.i = _v$5);
|
|
87
|
+
_v$6 !== _p$.n && setProperty(_el$, "required", _p$.n = _v$6);
|
|
88
|
+
_v$7 !== _p$.s && setProperty(_el$, "hidden", _p$.s = _v$7);
|
|
89
|
+
_v$8 !== _p$.h && setAttribute(_el$, "min", _p$.h = _v$8);
|
|
90
|
+
_v$9 !== _p$.r && setAttribute(_el$, "max", _p$.r = _v$9);
|
|
91
|
+
_p$.d = style(_el$, _v$0, _p$.d);
|
|
92
|
+
return _p$;
|
|
93
|
+
}, {
|
|
94
|
+
e: void 0,
|
|
95
|
+
t: void 0,
|
|
96
|
+
a: void 0,
|
|
97
|
+
o: void 0,
|
|
98
|
+
i: void 0,
|
|
99
|
+
n: void 0,
|
|
100
|
+
s: void 0,
|
|
101
|
+
h: void 0,
|
|
102
|
+
r: void 0,
|
|
103
|
+
d: void 0
|
|
104
|
+
});
|
|
105
|
+
effect(() => setProperty(_el$, "value", formattedValue()));
|
|
106
|
+
return _el$;
|
|
107
|
+
})();
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region src/DatePicker.tsx
|
|
111
|
+
/**
|
|
112
|
+
* DatePicker component for solidaria-components
|
|
113
|
+
*
|
|
114
|
+
* Pre-wired headless date picker component that combines a date field with a calendar popup.
|
|
115
|
+
* Port of react-aria-components/src/DatePicker.tsx
|
|
116
|
+
*/
|
|
117
|
+
var _tmpl$ = /*#__PURE__*/ template(`<div class="solidaria-DatePicker solidaria-DatePicker--placeholder"aria-hidden=true>`), _tmpl$2 = /*#__PURE__*/ template(`<div>`), _tmpl$3 = /*#__PURE__*/ template(`<div class="solidaria-DateRangePicker solidaria-DateRangePicker--placeholder"aria-hidden=true>`), _tmpl$4 = /*#__PURE__*/ template(`<button>`), _tmpl$5 = /*#__PURE__*/ template(`<span>`), _tmpl$6 = /*#__PURE__*/ template(`<div><section>`);
|
|
118
|
+
const DatePickerContext = createContext(null);
|
|
119
|
+
const DatePickerStateContext = createContext(null);
|
|
120
|
+
const DateRangePickerStateContext = createContext(null);
|
|
121
|
+
function withFormValidationBehavior(props, formContext) {
|
|
122
|
+
if (!formContext?.validationBehavior) return props;
|
|
123
|
+
return new Proxy(props, {
|
|
124
|
+
get(target, property, receiver) {
|
|
125
|
+
const localValue = Reflect.get(target, property, receiver);
|
|
126
|
+
if (property === "validationBehavior" && localValue === void 0) return formContext.validationBehavior;
|
|
127
|
+
return localValue;
|
|
128
|
+
},
|
|
129
|
+
has(target, property) {
|
|
130
|
+
return Reflect.has(target, property) || property === "validationBehavior" && formContext.validationBehavior !== void 0;
|
|
131
|
+
},
|
|
132
|
+
ownKeys(target) {
|
|
133
|
+
const keys = new Set(Reflect.ownKeys(target));
|
|
134
|
+
if (formContext.validationBehavior !== void 0) keys.add("validationBehavior");
|
|
135
|
+
return Array.from(keys);
|
|
136
|
+
},
|
|
137
|
+
getOwnPropertyDescriptor(target, property) {
|
|
138
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(target, property);
|
|
139
|
+
if (descriptor) return descriptor;
|
|
140
|
+
if (property === "validationBehavior" && formContext.validationBehavior !== void 0) return {
|
|
141
|
+
enumerable: true,
|
|
142
|
+
configurable: true,
|
|
143
|
+
get: () => formContext.validationBehavior
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function useDatePickerContext() {
|
|
149
|
+
const context = useContext(DatePickerContext);
|
|
150
|
+
if (!context) throw new Error("DatePicker components must be used within a DatePicker");
|
|
151
|
+
return context;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* A date picker combines a DateField and a Calendar popover.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```tsx
|
|
158
|
+
* <DatePicker label="Event date">
|
|
159
|
+
* <Label>Event date</Label>
|
|
160
|
+
* <Group>
|
|
161
|
+
* <DateInput>
|
|
162
|
+
* {(segment) => <DateSegment segment={segment} />}
|
|
163
|
+
* </DateInput>
|
|
164
|
+
* <DatePickerButton>📅</DatePickerButton>
|
|
165
|
+
* </Group>
|
|
166
|
+
* <Popover>
|
|
167
|
+
* <Dialog>
|
|
168
|
+
* <Calendar>
|
|
169
|
+
* <CalendarGrid>
|
|
170
|
+
* {(date) => <CalendarCell date={date} />}
|
|
171
|
+
* </CalendarGrid>
|
|
172
|
+
* </Calendar>
|
|
173
|
+
* </Dialog>
|
|
174
|
+
* </Popover>
|
|
175
|
+
* </DatePicker>
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
function DatePicker(props) {
|
|
179
|
+
const isHydrated = useIsHydrated();
|
|
180
|
+
const formContext = useContext(FormContext);
|
|
181
|
+
return createComponent(Show, {
|
|
182
|
+
get when() {
|
|
183
|
+
return isHydrated();
|
|
184
|
+
},
|
|
185
|
+
get fallback() {
|
|
186
|
+
return getNextElement(_tmpl$);
|
|
187
|
+
},
|
|
188
|
+
get children() {
|
|
189
|
+
return createComponent(DatePickerInner, mergeProps(props, { __formContext: formContext }));
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Internal DatePicker component that renders after client mount.
|
|
195
|
+
*/
|
|
196
|
+
function DatePickerInner(props) {
|
|
197
|
+
const formContext = props.__formContext ?? useContext(FormContext);
|
|
198
|
+
const [local, stateProps, rest] = splitProps(withFormValidationBehavior(props, formContext), [
|
|
199
|
+
"children",
|
|
200
|
+
"class",
|
|
201
|
+
"style",
|
|
202
|
+
"slot",
|
|
203
|
+
"shouldCloseOnSelect",
|
|
204
|
+
"__formContext"
|
|
205
|
+
], [
|
|
206
|
+
"value",
|
|
207
|
+
"defaultValue",
|
|
208
|
+
"onChange",
|
|
209
|
+
"isOpen",
|
|
210
|
+
"defaultOpen",
|
|
211
|
+
"onOpenChange",
|
|
212
|
+
"minValue",
|
|
213
|
+
"maxValue",
|
|
214
|
+
"isInvalid",
|
|
215
|
+
"isDisabled",
|
|
216
|
+
"isReadOnly",
|
|
217
|
+
"isRequired",
|
|
218
|
+
"locale",
|
|
219
|
+
"granularity",
|
|
220
|
+
"hourCycle",
|
|
221
|
+
"hideTimeZone",
|
|
222
|
+
"placeholderValue",
|
|
223
|
+
"shouldForceLeadingZeros",
|
|
224
|
+
"createCalendar",
|
|
225
|
+
"validationState",
|
|
226
|
+
"validationBehavior",
|
|
227
|
+
"validate",
|
|
228
|
+
"description",
|
|
229
|
+
"errorMessage",
|
|
230
|
+
"isDateUnavailable",
|
|
231
|
+
"firstDayOfWeek",
|
|
232
|
+
"visibleMonths",
|
|
233
|
+
"pageBehavior",
|
|
234
|
+
"selectionAlignment",
|
|
235
|
+
"isDateDisabled"
|
|
236
|
+
]);
|
|
237
|
+
const [triggerRef, setTriggerRef] = createSignal(null);
|
|
238
|
+
const [fieldRef, setFieldRef] = createSignal(null);
|
|
239
|
+
const datePickerState = createDatePickerState({
|
|
240
|
+
get value() {
|
|
241
|
+
return stateProps.value;
|
|
242
|
+
},
|
|
243
|
+
get defaultValue() {
|
|
244
|
+
return stateProps.defaultValue;
|
|
245
|
+
},
|
|
246
|
+
get onChange() {
|
|
247
|
+
return stateProps.onChange;
|
|
248
|
+
},
|
|
249
|
+
get minValue() {
|
|
250
|
+
return stateProps.minValue;
|
|
251
|
+
},
|
|
252
|
+
get maxValue() {
|
|
253
|
+
return stateProps.maxValue;
|
|
254
|
+
},
|
|
255
|
+
get isDisabled() {
|
|
256
|
+
return stateProps.isDisabled;
|
|
257
|
+
},
|
|
258
|
+
get isReadOnly() {
|
|
259
|
+
return stateProps.isReadOnly;
|
|
260
|
+
},
|
|
261
|
+
get isRequired() {
|
|
262
|
+
return stateProps.isRequired;
|
|
263
|
+
},
|
|
264
|
+
get granularity() {
|
|
265
|
+
return stateProps.granularity;
|
|
266
|
+
},
|
|
267
|
+
get hourCycle() {
|
|
268
|
+
return stateProps.hourCycle;
|
|
269
|
+
},
|
|
270
|
+
get hideTimeZone() {
|
|
271
|
+
return stateProps.hideTimeZone;
|
|
272
|
+
},
|
|
273
|
+
get placeholderValue() {
|
|
274
|
+
return stateProps.placeholderValue;
|
|
275
|
+
},
|
|
276
|
+
get shouldCloseOnSelect() {
|
|
277
|
+
return local.shouldCloseOnSelect;
|
|
278
|
+
},
|
|
279
|
+
get defaultOpen() {
|
|
280
|
+
return stateProps.defaultOpen;
|
|
281
|
+
},
|
|
282
|
+
get isOpen() {
|
|
283
|
+
return stateProps.isOpen;
|
|
284
|
+
},
|
|
285
|
+
get onOpenChange() {
|
|
286
|
+
return stateProps.onOpenChange;
|
|
287
|
+
},
|
|
288
|
+
get isDateUnavailable() {
|
|
289
|
+
return stateProps.isDateUnavailable;
|
|
290
|
+
},
|
|
291
|
+
get validationState() {
|
|
292
|
+
return stateProps.validationState;
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
const overlayState = {
|
|
296
|
+
get isOpen() {
|
|
297
|
+
return datePickerState.isOpen();
|
|
298
|
+
},
|
|
299
|
+
open: datePickerState.open,
|
|
300
|
+
close: datePickerState.close,
|
|
301
|
+
toggle: () => datePickerState.setOpen(!datePickerState.isOpen())
|
|
302
|
+
};
|
|
303
|
+
const fieldState = createDateFieldState({
|
|
304
|
+
...stateProps,
|
|
305
|
+
value: () => datePickerState.value(),
|
|
306
|
+
onChange: (value) => {
|
|
307
|
+
datePickerState.setValue(value);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
const calendarState = createCalendarState({
|
|
311
|
+
value: () => datePickerState.value(),
|
|
312
|
+
onChange: (value) => {
|
|
313
|
+
if (!value) return;
|
|
314
|
+
datePickerState.setDateValue(value);
|
|
315
|
+
},
|
|
316
|
+
minValue: stateProps.minValue,
|
|
317
|
+
maxValue: stateProps.maxValue,
|
|
318
|
+
isDisabled: stateProps.isDisabled,
|
|
319
|
+
isReadOnly: stateProps.isReadOnly,
|
|
320
|
+
locale: stateProps.locale,
|
|
321
|
+
createCalendar: stateProps.createCalendar,
|
|
322
|
+
isDateUnavailable: stateProps.isDateUnavailable,
|
|
323
|
+
firstDayOfWeek: stateProps.firstDayOfWeek,
|
|
324
|
+
visibleMonths: stateProps.visibleMonths,
|
|
325
|
+
pageBehavior: stateProps.pageBehavior,
|
|
326
|
+
selectionAlignment: stateProps.selectionAlignment,
|
|
327
|
+
isDateDisabled: stateProps.isDateDisabled
|
|
328
|
+
});
|
|
329
|
+
let wasOpen = false;
|
|
330
|
+
createEffect(() => {
|
|
331
|
+
const open = datePickerState.isOpen();
|
|
332
|
+
if (open && !wasOpen) calendarState.setFocused(true);
|
|
333
|
+
wasOpen = open;
|
|
334
|
+
});
|
|
335
|
+
const pickerAria = createDatePicker(() => ({
|
|
336
|
+
...rest,
|
|
337
|
+
description: stateProps.description,
|
|
338
|
+
errorMessage: stateProps.errorMessage
|
|
339
|
+
}), fieldState, overlayState, calendarState, () => fieldRef());
|
|
340
|
+
const fieldAria = createDateField(() => pickerAria.fieldProps, fieldState, () => fieldRef());
|
|
341
|
+
const contextValue = {
|
|
342
|
+
fieldState,
|
|
343
|
+
datePickerState,
|
|
344
|
+
calendarState,
|
|
345
|
+
overlayState,
|
|
346
|
+
triggerRef,
|
|
347
|
+
setTriggerRef: (element) => {
|
|
348
|
+
if (!element) return;
|
|
349
|
+
const current = triggerRef();
|
|
350
|
+
if (!current || !current.isConnected) setTriggerRef(() => element);
|
|
351
|
+
},
|
|
352
|
+
pickerAria
|
|
353
|
+
};
|
|
354
|
+
const isInvalid = createMemo(() => fieldState.isInvalid() || datePickerState.builtinValidation().isInvalid || Boolean(stateProps.isInvalid));
|
|
355
|
+
const renderValues = createMemo(() => ({
|
|
356
|
+
isDisabled: fieldState.isDisabled(),
|
|
357
|
+
isReadOnly: fieldState.isReadOnly(),
|
|
358
|
+
isRequired: fieldState.isRequired(),
|
|
359
|
+
isInvalid: isInvalid(),
|
|
360
|
+
isOpen: overlayState.isOpen
|
|
361
|
+
}));
|
|
362
|
+
const renderProps = useRenderProps({
|
|
363
|
+
class: local.class,
|
|
364
|
+
style: local.style,
|
|
365
|
+
defaultClassName: "solidaria-DatePicker"
|
|
366
|
+
}, renderValues);
|
|
367
|
+
const validationBehavior = () => stateProps.validationBehavior ?? formContext?.validationBehavior ?? "native";
|
|
368
|
+
return createComponent(DatePickerStateContext.Provider, {
|
|
369
|
+
value: fieldState,
|
|
370
|
+
get children() {
|
|
371
|
+
return createComponent(DatePickerContext.Provider, {
|
|
372
|
+
value: contextValue,
|
|
373
|
+
get children() {
|
|
374
|
+
return createComponent(DateFieldContext.Provider, {
|
|
375
|
+
value: {
|
|
376
|
+
state: fieldState,
|
|
377
|
+
aria: {
|
|
378
|
+
get labelProps() {
|
|
379
|
+
return pickerAria.labelProps;
|
|
380
|
+
},
|
|
381
|
+
get inputProps() {
|
|
382
|
+
return fieldAria.fieldProps;
|
|
383
|
+
},
|
|
384
|
+
get descriptionProps() {
|
|
385
|
+
return pickerAria.descriptionProps;
|
|
386
|
+
},
|
|
387
|
+
get errorMessageProps() {
|
|
388
|
+
return pickerAria.errorMessageProps;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
get children() {
|
|
393
|
+
return createComponent(CalendarContext.Provider, {
|
|
394
|
+
value: calendarState,
|
|
395
|
+
get children() {
|
|
396
|
+
return [(() => {
|
|
397
|
+
var _el$2 = getNextElement(_tmpl$2);
|
|
398
|
+
use(setFieldRef, _el$2);
|
|
399
|
+
insert(_el$2, createComponent(Provider, {
|
|
400
|
+
values: [[TextContext, { slots: {
|
|
401
|
+
get description() {
|
|
402
|
+
return pickerAria.descriptionProps;
|
|
403
|
+
},
|
|
404
|
+
get errorMessage() {
|
|
405
|
+
return pickerAria.errorMessageProps;
|
|
406
|
+
}
|
|
407
|
+
} }]],
|
|
408
|
+
get children() {
|
|
409
|
+
return props.children;
|
|
410
|
+
}
|
|
411
|
+
}));
|
|
412
|
+
effect((_p$) => {
|
|
413
|
+
var _v$ = renderProps.class(), _v$2 = renderProps.style(), _v$3 = dataAttr(fieldState.isDisabled()), _v$4 = dataAttr(fieldState.isReadOnly()), _v$5 = dataAttr(fieldState.isRequired()), _v$6 = dataAttr(isInvalid()), _v$7 = dataAttr(overlayState.isOpen);
|
|
414
|
+
_v$ !== _p$.e && className(_el$2, _p$.e = _v$);
|
|
415
|
+
_p$.t = style(_el$2, _v$2, _p$.t);
|
|
416
|
+
_v$3 !== _p$.a && setAttribute(_el$2, "data-disabled", _p$.a = _v$3);
|
|
417
|
+
_v$4 !== _p$.o && setAttribute(_el$2, "data-readonly", _p$.o = _v$4);
|
|
418
|
+
_v$5 !== _p$.i && setAttribute(_el$2, "data-required", _p$.i = _v$5);
|
|
419
|
+
_v$6 !== _p$.n && setAttribute(_el$2, "data-invalid", _p$.n = _v$6);
|
|
420
|
+
_v$7 !== _p$.s && setAttribute(_el$2, "data-open", _p$.s = _v$7);
|
|
421
|
+
return _p$;
|
|
422
|
+
}, {
|
|
423
|
+
e: void 0,
|
|
424
|
+
t: void 0,
|
|
425
|
+
a: void 0,
|
|
426
|
+
o: void 0,
|
|
427
|
+
i: void 0,
|
|
428
|
+
n: void 0,
|
|
429
|
+
s: void 0
|
|
430
|
+
});
|
|
431
|
+
return _el$2;
|
|
432
|
+
})(), createComponent(Show, {
|
|
433
|
+
get when() {
|
|
434
|
+
return rest.name;
|
|
435
|
+
},
|
|
436
|
+
get children() {
|
|
437
|
+
return createComponent(HiddenDateInput, {
|
|
438
|
+
get name() {
|
|
439
|
+
return rest.name;
|
|
440
|
+
},
|
|
441
|
+
get form() {
|
|
442
|
+
return rest.form;
|
|
443
|
+
},
|
|
444
|
+
value: () => datePickerState.value(),
|
|
445
|
+
get autoComplete() {
|
|
446
|
+
return rest.autoComplete;
|
|
447
|
+
},
|
|
448
|
+
get isDisabled() {
|
|
449
|
+
return fieldState.isDisabled();
|
|
450
|
+
},
|
|
451
|
+
get isRequired() {
|
|
452
|
+
return fieldState.isRequired();
|
|
453
|
+
},
|
|
454
|
+
get validationBehavior() {
|
|
455
|
+
return validationBehavior();
|
|
456
|
+
},
|
|
457
|
+
validationState: fieldState,
|
|
458
|
+
focus: () => {
|
|
459
|
+
fieldRef()?.querySelector("[role=\"spinbutton\"]")?.focus();
|
|
460
|
+
},
|
|
461
|
+
minValue: () => access(stateProps.minValue),
|
|
462
|
+
maxValue: () => access(stateProps.maxValue),
|
|
463
|
+
get granularity() {
|
|
464
|
+
return datePickerState.granularity;
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
})];
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
function DateRangePicker(props) {
|
|
479
|
+
const isHydrated = useIsHydrated();
|
|
480
|
+
return createComponent(Show, {
|
|
481
|
+
get when() {
|
|
482
|
+
return isHydrated();
|
|
483
|
+
},
|
|
484
|
+
get fallback() {
|
|
485
|
+
return getNextElement(_tmpl$3);
|
|
486
|
+
},
|
|
487
|
+
get children() {
|
|
488
|
+
return createComponent(DateRangePickerInner, props);
|
|
489
|
+
}
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
function DateRangePickerInner(props) {
|
|
493
|
+
const [local, overlayProps, stateProps, rest] = splitProps(props, [
|
|
494
|
+
"children",
|
|
495
|
+
"class",
|
|
496
|
+
"style",
|
|
497
|
+
"slot",
|
|
498
|
+
"shouldCloseOnSelect"
|
|
499
|
+
], [
|
|
500
|
+
"defaultOpen",
|
|
501
|
+
"isOpen",
|
|
502
|
+
"onOpenChange"
|
|
503
|
+
], [
|
|
504
|
+
"value",
|
|
505
|
+
"defaultValue",
|
|
506
|
+
"onChange",
|
|
507
|
+
"minValue",
|
|
508
|
+
"maxValue",
|
|
509
|
+
"isDisabled",
|
|
510
|
+
"isReadOnly",
|
|
511
|
+
"focusedValue",
|
|
512
|
+
"defaultFocusedValue",
|
|
513
|
+
"onFocusChange",
|
|
514
|
+
"locale",
|
|
515
|
+
"granularity",
|
|
516
|
+
"hourCycle",
|
|
517
|
+
"hideTimeZone",
|
|
518
|
+
"placeholderValue",
|
|
519
|
+
"createCalendar",
|
|
520
|
+
"isDateUnavailable",
|
|
521
|
+
"visibleMonths",
|
|
522
|
+
"isDateDisabled",
|
|
523
|
+
"validationState",
|
|
524
|
+
"allowsNonContiguousRanges",
|
|
525
|
+
"firstDayOfWeek",
|
|
526
|
+
"pageBehavior",
|
|
527
|
+
"selectionAlignment"
|
|
528
|
+
]);
|
|
529
|
+
const [internalOpen, setInternalOpen] = createSignal(overlayProps.defaultOpen ?? false);
|
|
530
|
+
const isOpen = () => access(overlayProps.isOpen) ?? internalOpen();
|
|
531
|
+
const setOpen = (open) => {
|
|
532
|
+
if (access(overlayProps.isOpen) === void 0) setInternalOpen(open);
|
|
533
|
+
overlayProps.onOpenChange?.(open);
|
|
534
|
+
};
|
|
535
|
+
let triggerRef = null;
|
|
536
|
+
const [fieldRef, setFieldRef] = createSignal(null);
|
|
537
|
+
const overlayState = {
|
|
538
|
+
get isOpen() {
|
|
539
|
+
return isOpen();
|
|
540
|
+
},
|
|
541
|
+
open: () => setOpen(true),
|
|
542
|
+
close: () => setOpen(false),
|
|
543
|
+
toggle: () => setOpen(!isOpen())
|
|
544
|
+
};
|
|
545
|
+
const [internalRangeValue, setInternalRangeValue] = createSignal(stateProps.defaultValue ?? null);
|
|
546
|
+
const currentRangeValue = createMemo(() => {
|
|
547
|
+
const controlled = access(stateProps.value);
|
|
548
|
+
return controlled !== void 0 ? controlled : internalRangeValue();
|
|
549
|
+
});
|
|
550
|
+
const setCommittedRangeValue = (value) => {
|
|
551
|
+
if (access(stateProps.value) === void 0) setInternalRangeValue(() => value);
|
|
552
|
+
stateProps.onChange?.(value);
|
|
553
|
+
};
|
|
554
|
+
const calendarState = createRangeCalendarState({
|
|
555
|
+
...stateProps,
|
|
556
|
+
value: currentRangeValue,
|
|
557
|
+
onChange: (value) => {
|
|
558
|
+
setCommittedRangeValue(value);
|
|
559
|
+
if (local.shouldCloseOnSelect !== false && value?.start && value?.end) setOpen(false);
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
let wasRangeOpen = false;
|
|
563
|
+
createEffect(() => {
|
|
564
|
+
const open = overlayState.isOpen;
|
|
565
|
+
if (open && !wasRangeOpen) calendarState.setFocused(true);
|
|
566
|
+
wasRangeOpen = open;
|
|
567
|
+
});
|
|
568
|
+
const isInvalid = createMemo(() => Boolean(rest.isInvalid) || calendarState.validationState() === "invalid");
|
|
569
|
+
const isRequired = createMemo(() => Boolean(rest.isRequired));
|
|
570
|
+
const [startFieldValue, setStartFieldValue] = createSignal(currentRangeValue()?.start ?? null);
|
|
571
|
+
const [endFieldValue, setEndFieldValue] = createSignal(currentRangeValue()?.end ?? null);
|
|
572
|
+
const rangeGranularity = createMemo(() => {
|
|
573
|
+
if (stateProps.granularity) return stateProps.granularity;
|
|
574
|
+
const value = currentRangeValue()?.start ?? currentRangeValue()?.end;
|
|
575
|
+
if (value && "hour" in value) return "second" in value ? "second" : "minute";
|
|
576
|
+
return "day";
|
|
577
|
+
});
|
|
578
|
+
createEffect(() => {
|
|
579
|
+
const value = currentRangeValue();
|
|
580
|
+
setStartFieldValue(() => value?.start ?? null);
|
|
581
|
+
setEndFieldValue(() => value?.end ?? null);
|
|
582
|
+
});
|
|
583
|
+
const setRangeFieldValue = (part, nextValue) => {
|
|
584
|
+
if (part === "start") setStartFieldValue(() => nextValue);
|
|
585
|
+
else setEndFieldValue(() => nextValue);
|
|
586
|
+
const nextStart = part === "start" ? nextValue : startFieldValue();
|
|
587
|
+
const nextEnd = part === "end" ? nextValue : endFieldValue();
|
|
588
|
+
setCommittedRangeValue(nextStart && nextEnd ? {
|
|
589
|
+
start: nextStart,
|
|
590
|
+
end: nextEnd
|
|
591
|
+
} : null);
|
|
592
|
+
};
|
|
593
|
+
const rangeFieldStateProps = {
|
|
594
|
+
minValue: stateProps.minValue,
|
|
595
|
+
maxValue: stateProps.maxValue,
|
|
596
|
+
isDisabled: stateProps.isDisabled,
|
|
597
|
+
isReadOnly: stateProps.isReadOnly,
|
|
598
|
+
isRequired,
|
|
599
|
+
locale: access(stateProps.locale),
|
|
600
|
+
granularity: rangeGranularity(),
|
|
601
|
+
hourCycle: stateProps.hourCycle,
|
|
602
|
+
hideTimeZone: stateProps.hideTimeZone,
|
|
603
|
+
placeholderValue: stateProps.placeholderValue,
|
|
604
|
+
validationState: () => isInvalid() ? "invalid" : access(stateProps.validationState),
|
|
605
|
+
isDateUnavailable: stateProps.isDateUnavailable ? (date) => stateProps.isDateUnavailable(date, null) : void 0
|
|
606
|
+
};
|
|
607
|
+
const startFieldState = createDateFieldState({
|
|
608
|
+
...rangeFieldStateProps,
|
|
609
|
+
value: startFieldValue,
|
|
610
|
+
onChange: (value) => setRangeFieldValue("start", value)
|
|
611
|
+
});
|
|
612
|
+
const endFieldState = createDateFieldState({
|
|
613
|
+
...rangeFieldStateProps,
|
|
614
|
+
value: endFieldValue,
|
|
615
|
+
onChange: (value) => setRangeFieldValue("end", value)
|
|
616
|
+
});
|
|
617
|
+
const pickerAria = createDateRangePicker(() => ({
|
|
618
|
+
...rest,
|
|
619
|
+
description: props.description,
|
|
620
|
+
errorMessage: props.errorMessage
|
|
621
|
+
}), calendarState, overlayState, () => fieldRef());
|
|
622
|
+
const startFieldAria = createDateField(() => pickerAria.startFieldProps, startFieldState, () => fieldRef());
|
|
623
|
+
const endFieldAria = createDateField(() => pickerAria.endFieldProps, endFieldState, () => fieldRef());
|
|
624
|
+
const contextValue = {
|
|
625
|
+
calendarState,
|
|
626
|
+
startFieldState,
|
|
627
|
+
endFieldState,
|
|
628
|
+
startFieldContext: {
|
|
629
|
+
state: startFieldState,
|
|
630
|
+
aria: {
|
|
631
|
+
labelProps: {},
|
|
632
|
+
get inputProps() {
|
|
633
|
+
return startFieldAria.fieldProps;
|
|
634
|
+
},
|
|
635
|
+
get descriptionProps() {
|
|
636
|
+
return pickerAria.descriptionProps;
|
|
637
|
+
},
|
|
638
|
+
get errorMessageProps() {
|
|
639
|
+
return pickerAria.errorMessageProps;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
endFieldContext: {
|
|
644
|
+
state: endFieldState,
|
|
645
|
+
aria: {
|
|
646
|
+
labelProps: {},
|
|
647
|
+
get inputProps() {
|
|
648
|
+
return endFieldAria.fieldProps;
|
|
649
|
+
},
|
|
650
|
+
get descriptionProps() {
|
|
651
|
+
return pickerAria.descriptionProps;
|
|
652
|
+
},
|
|
653
|
+
get errorMessageProps() {
|
|
654
|
+
return pickerAria.errorMessageProps;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
overlayState,
|
|
659
|
+
triggerRef: () => triggerRef,
|
|
660
|
+
setTriggerRef: (element) => {
|
|
661
|
+
if (!element) return;
|
|
662
|
+
if (!triggerRef || !triggerRef.isConnected) triggerRef = element;
|
|
663
|
+
},
|
|
664
|
+
pickerAria
|
|
665
|
+
};
|
|
666
|
+
const renderValues = createMemo(() => ({
|
|
667
|
+
isDisabled: calendarState.isDisabled(),
|
|
668
|
+
isReadOnly: calendarState.isReadOnly(),
|
|
669
|
+
isRequired: isRequired(),
|
|
670
|
+
isInvalid: isInvalid(),
|
|
671
|
+
isOpen: overlayState.isOpen
|
|
672
|
+
}));
|
|
673
|
+
const renderProps = useRenderProps({
|
|
674
|
+
class: local.class,
|
|
675
|
+
style: local.style,
|
|
676
|
+
defaultClassName: "solidaria-DateRangePicker"
|
|
677
|
+
}, renderValues);
|
|
678
|
+
return createComponent(DateRangePickerStateContext.Provider, {
|
|
679
|
+
value: calendarState,
|
|
680
|
+
get children() {
|
|
681
|
+
return createComponent(DateRangePickerContext.Provider, {
|
|
682
|
+
value: contextValue,
|
|
683
|
+
get children() {
|
|
684
|
+
return createComponent(RangeCalendarContext.Provider, {
|
|
685
|
+
value: calendarState,
|
|
686
|
+
get children() {
|
|
687
|
+
return [
|
|
688
|
+
(() => {
|
|
689
|
+
var _el$4 = getNextElement(_tmpl$2);
|
|
690
|
+
use(setFieldRef, _el$4);
|
|
691
|
+
insert(_el$4, createComponent(Provider, {
|
|
692
|
+
values: [[TextContext, { slots: {
|
|
693
|
+
get description() {
|
|
694
|
+
return pickerAria.descriptionProps;
|
|
695
|
+
},
|
|
696
|
+
get errorMessage() {
|
|
697
|
+
return pickerAria.errorMessageProps;
|
|
698
|
+
}
|
|
699
|
+
} }]],
|
|
700
|
+
get children() {
|
|
701
|
+
return props.children;
|
|
702
|
+
}
|
|
703
|
+
}));
|
|
704
|
+
effect((_p$) => {
|
|
705
|
+
var _v$8 = renderProps.class(), _v$9 = renderProps.style(), _v$0 = dataAttr(calendarState.isDisabled()), _v$1 = dataAttr(calendarState.isReadOnly()), _v$10 = dataAttr(isRequired()), _v$11 = dataAttr(isInvalid()), _v$12 = dataAttr(overlayState.isOpen);
|
|
706
|
+
_v$8 !== _p$.e && className(_el$4, _p$.e = _v$8);
|
|
707
|
+
_p$.t = style(_el$4, _v$9, _p$.t);
|
|
708
|
+
_v$0 !== _p$.a && setAttribute(_el$4, "data-disabled", _p$.a = _v$0);
|
|
709
|
+
_v$1 !== _p$.o && setAttribute(_el$4, "data-readonly", _p$.o = _v$1);
|
|
710
|
+
_v$10 !== _p$.i && setAttribute(_el$4, "data-required", _p$.i = _v$10);
|
|
711
|
+
_v$11 !== _p$.n && setAttribute(_el$4, "data-invalid", _p$.n = _v$11);
|
|
712
|
+
_v$12 !== _p$.s && setAttribute(_el$4, "data-open", _p$.s = _v$12);
|
|
713
|
+
return _p$;
|
|
714
|
+
}, {
|
|
715
|
+
e: void 0,
|
|
716
|
+
t: void 0,
|
|
717
|
+
a: void 0,
|
|
718
|
+
o: void 0,
|
|
719
|
+
i: void 0,
|
|
720
|
+
n: void 0,
|
|
721
|
+
s: void 0
|
|
722
|
+
});
|
|
723
|
+
return _el$4;
|
|
724
|
+
})(),
|
|
725
|
+
createComponent(Show, {
|
|
726
|
+
get when() {
|
|
727
|
+
return rest.startName;
|
|
728
|
+
},
|
|
729
|
+
get children() {
|
|
730
|
+
return createComponent(HiddenDateInput, {
|
|
731
|
+
get name() {
|
|
732
|
+
return rest.startName;
|
|
733
|
+
},
|
|
734
|
+
get form() {
|
|
735
|
+
return rest.form;
|
|
736
|
+
},
|
|
737
|
+
value: () => currentRangeValue()?.start ?? null,
|
|
738
|
+
get isDisabled() {
|
|
739
|
+
return access(stateProps.isDisabled) ?? false;
|
|
740
|
+
},
|
|
741
|
+
minValue: () => access(stateProps.minValue),
|
|
742
|
+
maxValue: () => access(stateProps.maxValue),
|
|
743
|
+
get granularity() {
|
|
744
|
+
return rangeGranularity();
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
}
|
|
748
|
+
}),
|
|
749
|
+
createComponent(Show, {
|
|
750
|
+
get when() {
|
|
751
|
+
return rest.endName;
|
|
752
|
+
},
|
|
753
|
+
get children() {
|
|
754
|
+
return createComponent(HiddenDateInput, {
|
|
755
|
+
get name() {
|
|
756
|
+
return rest.endName;
|
|
757
|
+
},
|
|
758
|
+
get form() {
|
|
759
|
+
return rest.form;
|
|
760
|
+
},
|
|
761
|
+
value: () => currentRangeValue()?.end ?? null,
|
|
762
|
+
get isDisabled() {
|
|
763
|
+
return access(stateProps.isDisabled) ?? false;
|
|
764
|
+
},
|
|
765
|
+
minValue: () => access(stateProps.minValue),
|
|
766
|
+
maxValue: () => access(stateProps.maxValue),
|
|
767
|
+
get granularity() {
|
|
768
|
+
return rangeGranularity();
|
|
769
|
+
}
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
})
|
|
773
|
+
];
|
|
774
|
+
}
|
|
775
|
+
});
|
|
776
|
+
}
|
|
777
|
+
});
|
|
778
|
+
}
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
/**
|
|
782
|
+
* A button that opens the date picker calendar.
|
|
783
|
+
*/
|
|
784
|
+
function DatePickerButton(props) {
|
|
785
|
+
const context = useDatePickerContext();
|
|
786
|
+
const isDisabled = () => context.pickerAria.isButtonDisabled() || (props.isDisabled ?? false);
|
|
787
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
788
|
+
const { isHovered, hoverProps } = createHover({ get isDisabled() {
|
|
789
|
+
return isDisabled();
|
|
790
|
+
} });
|
|
791
|
+
const renderValues = createMemo(() => ({
|
|
792
|
+
isDisabled: isDisabled(),
|
|
793
|
+
isOpen: context.overlayState.isOpen,
|
|
794
|
+
isPressed: context.pickerAria.isButtonPressed(),
|
|
795
|
+
isHovered: isHovered(),
|
|
796
|
+
isFocusVisible: isFocusVisible()
|
|
797
|
+
}));
|
|
798
|
+
const renderProps = useRenderProps({
|
|
799
|
+
get children() {
|
|
800
|
+
return props.children;
|
|
801
|
+
},
|
|
802
|
+
class: props.class,
|
|
803
|
+
style: props.style,
|
|
804
|
+
defaultClassName: "solidaria-DatePickerButton"
|
|
805
|
+
}, renderValues);
|
|
806
|
+
const getChildren = () => {
|
|
807
|
+
if (typeof props.children === "function") return renderProps.renderChildren();
|
|
808
|
+
return props.children ?? "📅";
|
|
809
|
+
};
|
|
810
|
+
const buttonProps = createMemo(() => mergeProps$2(context.pickerAria.buttonProps, focusProps, hoverProps));
|
|
811
|
+
return (() => {
|
|
812
|
+
var _el$5 = getNextElement(_tmpl$4);
|
|
813
|
+
use((el) => {
|
|
814
|
+
context.setTriggerRef(el);
|
|
815
|
+
props.ref?.(el);
|
|
816
|
+
}, _el$5);
|
|
817
|
+
spread(_el$5, mergeProps(buttonProps, {
|
|
818
|
+
get ["class"]() {
|
|
819
|
+
return renderProps.class();
|
|
820
|
+
},
|
|
821
|
+
get style() {
|
|
822
|
+
return renderProps.style();
|
|
823
|
+
},
|
|
824
|
+
get disabled() {
|
|
825
|
+
return isDisabled();
|
|
826
|
+
},
|
|
827
|
+
get ["data-disabled"]() {
|
|
828
|
+
return dataAttr(isDisabled());
|
|
829
|
+
},
|
|
830
|
+
get ["data-open"]() {
|
|
831
|
+
return dataAttr(context.overlayState.isOpen);
|
|
832
|
+
}
|
|
833
|
+
}), false, true);
|
|
834
|
+
insert(_el$5, getChildren);
|
|
835
|
+
effect((_p$) => {
|
|
836
|
+
var _v$13 = isHovered() ? "true" : void 0, _v$14 = isFocused() ? "true" : void 0, _v$15 = isFocusVisible() ? "true" : void 0, _v$16 = context.pickerAria.isButtonPressed() ? "true" : void 0;
|
|
837
|
+
_v$13 !== _p$.e && setAttribute(_el$5, "data-hovered", _p$.e = _v$13);
|
|
838
|
+
_v$14 !== _p$.t && setAttribute(_el$5, "data-focused", _p$.t = _v$14);
|
|
839
|
+
_v$15 !== _p$.a && setAttribute(_el$5, "data-focus-visible", _p$.a = _v$15);
|
|
840
|
+
_v$16 !== _p$.o && setAttribute(_el$5, "data-pressed", _p$.o = _v$16);
|
|
841
|
+
return _p$;
|
|
842
|
+
}, {
|
|
843
|
+
e: void 0,
|
|
844
|
+
t: void 0,
|
|
845
|
+
a: void 0,
|
|
846
|
+
o: void 0
|
|
847
|
+
});
|
|
848
|
+
runHydrationEvents();
|
|
849
|
+
return _el$5;
|
|
850
|
+
})();
|
|
851
|
+
}
|
|
852
|
+
function DateRangePickerButton(props) {
|
|
853
|
+
const context = useDateRangePickerContext();
|
|
854
|
+
const isDisabled = () => context.pickerAria.isButtonDisabled() || (props.isDisabled ?? false);
|
|
855
|
+
const { isFocused, isFocusVisible, focusProps } = createFocusRing();
|
|
856
|
+
const { isHovered, hoverProps } = createHover({ get isDisabled() {
|
|
857
|
+
return isDisabled();
|
|
858
|
+
} });
|
|
859
|
+
const renderValues = createMemo(() => ({
|
|
860
|
+
isDisabled: isDisabled(),
|
|
861
|
+
isOpen: context.overlayState.isOpen,
|
|
862
|
+
isPressed: context.pickerAria.isButtonPressed(),
|
|
863
|
+
isHovered: isHovered(),
|
|
864
|
+
isFocusVisible: isFocusVisible()
|
|
865
|
+
}));
|
|
866
|
+
const renderProps = useRenderProps({
|
|
867
|
+
get children() {
|
|
868
|
+
return props.children;
|
|
869
|
+
},
|
|
870
|
+
class: props.class,
|
|
871
|
+
style: props.style,
|
|
872
|
+
defaultClassName: "solidaria-DateRangePickerButton"
|
|
873
|
+
}, renderValues);
|
|
874
|
+
const getChildren = () => {
|
|
875
|
+
if (typeof props.children === "function") return renderProps.renderChildren();
|
|
876
|
+
return props.children ?? "📅";
|
|
877
|
+
};
|
|
878
|
+
const buttonProps = createMemo(() => mergeProps$2(context.pickerAria.buttonProps, focusProps, hoverProps));
|
|
879
|
+
return (() => {
|
|
880
|
+
var _el$6 = getNextElement(_tmpl$4);
|
|
881
|
+
use((el) => {
|
|
882
|
+
context.setTriggerRef(el);
|
|
883
|
+
props.ref?.(el);
|
|
884
|
+
}, _el$6);
|
|
885
|
+
spread(_el$6, mergeProps(buttonProps, {
|
|
886
|
+
get ["class"]() {
|
|
887
|
+
return renderProps.class();
|
|
888
|
+
},
|
|
889
|
+
get style() {
|
|
890
|
+
return renderProps.style();
|
|
891
|
+
},
|
|
892
|
+
get disabled() {
|
|
893
|
+
return isDisabled();
|
|
894
|
+
},
|
|
895
|
+
get ["data-disabled"]() {
|
|
896
|
+
return dataAttr(isDisabled());
|
|
897
|
+
},
|
|
898
|
+
get ["data-open"]() {
|
|
899
|
+
return dataAttr(context.overlayState.isOpen);
|
|
900
|
+
}
|
|
901
|
+
}), false, true);
|
|
902
|
+
insert(_el$6, getChildren);
|
|
903
|
+
effect((_p$) => {
|
|
904
|
+
var _v$17 = isHovered() ? "true" : void 0, _v$18 = isFocused() ? "true" : void 0, _v$19 = isFocusVisible() ? "true" : void 0, _v$20 = context.pickerAria.isButtonPressed() ? "true" : void 0;
|
|
905
|
+
_v$17 !== _p$.e && setAttribute(_el$6, "data-hovered", _p$.e = _v$17);
|
|
906
|
+
_v$18 !== _p$.t && setAttribute(_el$6, "data-focused", _p$.t = _v$18);
|
|
907
|
+
_v$19 !== _p$.a && setAttribute(_el$6, "data-focus-visible", _p$.a = _v$19);
|
|
908
|
+
_v$20 !== _p$.o && setAttribute(_el$6, "data-pressed", _p$.o = _v$20);
|
|
909
|
+
return _p$;
|
|
910
|
+
}, {
|
|
911
|
+
e: void 0,
|
|
912
|
+
t: void 0,
|
|
913
|
+
a: void 0,
|
|
914
|
+
o: void 0
|
|
915
|
+
});
|
|
916
|
+
runHydrationEvents();
|
|
917
|
+
return _el$6;
|
|
918
|
+
})();
|
|
919
|
+
}
|
|
920
|
+
function DatePickerLabel(props) {
|
|
921
|
+
const context = useDatePickerContext();
|
|
922
|
+
return (() => {
|
|
923
|
+
var _el$7 = getNextElement(_tmpl$5);
|
|
924
|
+
spread(_el$7, mergeProps(() => context.pickerAria.labelProps, { get ["class"]() {
|
|
925
|
+
return props.class;
|
|
926
|
+
} }), false, true);
|
|
927
|
+
insert(_el$7, () => props.children);
|
|
928
|
+
runHydrationEvents();
|
|
929
|
+
return _el$7;
|
|
930
|
+
})();
|
|
931
|
+
}
|
|
932
|
+
function DatePickerDescription(props) {
|
|
933
|
+
const context = useDatePickerContext();
|
|
934
|
+
return (() => {
|
|
935
|
+
var _el$8 = getNextElement(_tmpl$5);
|
|
936
|
+
spread(_el$8, mergeProps(() => context.pickerAria.descriptionProps, { get ["class"]() {
|
|
937
|
+
return props.class;
|
|
938
|
+
} }), false, true);
|
|
939
|
+
insert(_el$8, () => props.children);
|
|
940
|
+
runHydrationEvents();
|
|
941
|
+
return _el$8;
|
|
942
|
+
})();
|
|
943
|
+
}
|
|
944
|
+
function DatePickerErrorMessage(props) {
|
|
945
|
+
const context = useDatePickerContext();
|
|
946
|
+
return (() => {
|
|
947
|
+
var _el$9 = getNextElement(_tmpl$5);
|
|
948
|
+
spread(_el$9, mergeProps(() => context.pickerAria.errorMessageProps, { get ["class"]() {
|
|
949
|
+
return props.class;
|
|
950
|
+
} }), false, true);
|
|
951
|
+
insert(_el$9, () => props.children);
|
|
952
|
+
runHydrationEvents();
|
|
953
|
+
return _el$9;
|
|
954
|
+
})();
|
|
955
|
+
}
|
|
956
|
+
function DateRangePickerLabel(props) {
|
|
957
|
+
const context = useDateRangePickerContext();
|
|
958
|
+
return (() => {
|
|
959
|
+
var _el$0 = getNextElement(_tmpl$5);
|
|
960
|
+
spread(_el$0, mergeProps(() => context.pickerAria.labelProps, { get ["class"]() {
|
|
961
|
+
return props.class;
|
|
962
|
+
} }), false, true);
|
|
963
|
+
insert(_el$0, () => props.children);
|
|
964
|
+
runHydrationEvents();
|
|
965
|
+
return _el$0;
|
|
966
|
+
})();
|
|
967
|
+
}
|
|
968
|
+
function DateRangePickerDescription(props) {
|
|
969
|
+
const context = useDateRangePickerContext();
|
|
970
|
+
return (() => {
|
|
971
|
+
var _el$1 = getNextElement(_tmpl$5);
|
|
972
|
+
spread(_el$1, mergeProps(() => context.pickerAria.descriptionProps, { get ["class"]() {
|
|
973
|
+
return props.class;
|
|
974
|
+
} }), false, true);
|
|
975
|
+
insert(_el$1, () => props.children);
|
|
976
|
+
runHydrationEvents();
|
|
977
|
+
return _el$1;
|
|
978
|
+
})();
|
|
979
|
+
}
|
|
980
|
+
function DateRangePickerErrorMessage(props) {
|
|
981
|
+
const context = useDateRangePickerContext();
|
|
982
|
+
return (() => {
|
|
983
|
+
var _el$10 = getNextElement(_tmpl$5);
|
|
984
|
+
spread(_el$10, mergeProps(() => context.pickerAria.errorMessageProps, { get ["class"]() {
|
|
985
|
+
return props.class;
|
|
986
|
+
} }), false, true);
|
|
987
|
+
insert(_el$10, () => props.children);
|
|
988
|
+
runHydrationEvents();
|
|
989
|
+
return _el$10;
|
|
990
|
+
})();
|
|
991
|
+
}
|
|
992
|
+
function createEscapeDismissFallback(isOpen, close) {
|
|
993
|
+
createEffect(() => {
|
|
994
|
+
if (!isOpen() || typeof document === "undefined") return;
|
|
995
|
+
const onKeyDown = (event) => {
|
|
996
|
+
if (event.key !== "Escape" || event.defaultPrevented || event.isComposing) return;
|
|
997
|
+
close();
|
|
998
|
+
};
|
|
999
|
+
document.addEventListener("keydown", onKeyDown);
|
|
1000
|
+
onCleanup(() => document.removeEventListener("keydown", onKeyDown));
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* The content area of the date picker (typically contains a Calendar).
|
|
1005
|
+
*/
|
|
1006
|
+
function DatePickerContent(props) {
|
|
1007
|
+
const context = useDatePickerContext();
|
|
1008
|
+
const portalContext = useUNSAFE_PortalContext();
|
|
1009
|
+
const [contentRef, setContentRef] = createSignal();
|
|
1010
|
+
const portalContainer = () => portalContext.getContainer?.() ?? void 0;
|
|
1011
|
+
const popoverAria = createPopover({
|
|
1012
|
+
triggerRef: () => context.triggerRef()?.parentElement ?? context.triggerRef(),
|
|
1013
|
+
popoverRef: () => contentRef() ?? null,
|
|
1014
|
+
placement: "bottom start",
|
|
1015
|
+
offset: 8,
|
|
1016
|
+
isNonModal: false,
|
|
1017
|
+
isKeyboardDismissDisabled: false
|
|
1018
|
+
}, {
|
|
1019
|
+
isOpen: () => context.overlayState.isOpen,
|
|
1020
|
+
open: context.overlayState.open,
|
|
1021
|
+
close: context.overlayState.close,
|
|
1022
|
+
toggle: context.overlayState.toggle
|
|
1023
|
+
});
|
|
1024
|
+
createEscapeDismissFallback(() => context.overlayState.isOpen, context.overlayState.close);
|
|
1025
|
+
const isEntering = createEnterAnimation(contentRef, () => context.overlayState.isOpen);
|
|
1026
|
+
const renderProps = () => ({
|
|
1027
|
+
isEntering: isEntering(),
|
|
1028
|
+
isExiting: false,
|
|
1029
|
+
placement: popoverAria.placement() ?? "bottom"
|
|
1030
|
+
});
|
|
1031
|
+
const resolvedClass = () => {
|
|
1032
|
+
const c = props.class;
|
|
1033
|
+
if (typeof c === "function") return c(renderProps());
|
|
1034
|
+
return c ?? "solidaria-DatePickerContent";
|
|
1035
|
+
};
|
|
1036
|
+
const cleanPopoverProps = () => {
|
|
1037
|
+
const { style: _style, ref: _ref, ...rest } = popoverAria.popoverProps;
|
|
1038
|
+
return rest;
|
|
1039
|
+
};
|
|
1040
|
+
const mergedStyle = () => {
|
|
1041
|
+
return {
|
|
1042
|
+
...popoverAria.popoverProps.style,
|
|
1043
|
+
...props.style
|
|
1044
|
+
};
|
|
1045
|
+
};
|
|
1046
|
+
return createComponent(Show, {
|
|
1047
|
+
get when() {
|
|
1048
|
+
return context.overlayState.isOpen;
|
|
1049
|
+
},
|
|
1050
|
+
get children() {
|
|
1051
|
+
return createComponent(Portal, {
|
|
1052
|
+
get mount() {
|
|
1053
|
+
return portalContainer();
|
|
1054
|
+
},
|
|
1055
|
+
get children() {
|
|
1056
|
+
return createComponent(FocusScope, {
|
|
1057
|
+
contain: true,
|
|
1058
|
+
restoreFocus: true,
|
|
1059
|
+
get children() {
|
|
1060
|
+
var _el$11 = getNextElement(_tmpl$6), _el$12 = _el$11.firstChild;
|
|
1061
|
+
use(setContentRef, _el$11);
|
|
1062
|
+
spread(_el$11, mergeProps(cleanPopoverProps, {
|
|
1063
|
+
get ["class"]() {
|
|
1064
|
+
return resolvedClass();
|
|
1065
|
+
},
|
|
1066
|
+
get style() {
|
|
1067
|
+
return mergedStyle();
|
|
1068
|
+
},
|
|
1069
|
+
get ["data-placement"]() {
|
|
1070
|
+
return popoverAria.placement() ?? "bottom";
|
|
1071
|
+
},
|
|
1072
|
+
get ["data-entering"]() {
|
|
1073
|
+
return dataAttr(isEntering());
|
|
1074
|
+
}
|
|
1075
|
+
}), false, true);
|
|
1076
|
+
spread(_el$12, mergeProps(() => context.pickerAria.dialogProps, { "tabIndex": -1 }), false, true);
|
|
1077
|
+
insert(_el$12, () => props.children);
|
|
1078
|
+
runHydrationEvents();
|
|
1079
|
+
return _el$11;
|
|
1080
|
+
}
|
|
1081
|
+
});
|
|
1082
|
+
}
|
|
1083
|
+
});
|
|
1084
|
+
}
|
|
1085
|
+
});
|
|
1086
|
+
}
|
|
1087
|
+
function DateRangePickerContent(props) {
|
|
1088
|
+
const context = useDateRangePickerContext();
|
|
1089
|
+
const portalContext = useUNSAFE_PortalContext();
|
|
1090
|
+
const [contentRef, setContentRef] = createSignal();
|
|
1091
|
+
const portalContainer = () => portalContext.getContainer?.() ?? void 0;
|
|
1092
|
+
const popoverAria = createPopover({
|
|
1093
|
+
triggerRef: () => context.triggerRef()?.parentElement ?? context.triggerRef(),
|
|
1094
|
+
popoverRef: () => contentRef() ?? null,
|
|
1095
|
+
placement: "bottom start",
|
|
1096
|
+
offset: 8,
|
|
1097
|
+
isNonModal: false,
|
|
1098
|
+
isKeyboardDismissDisabled: false
|
|
1099
|
+
}, {
|
|
1100
|
+
isOpen: () => context.overlayState.isOpen,
|
|
1101
|
+
open: context.overlayState.open,
|
|
1102
|
+
close: context.overlayState.close,
|
|
1103
|
+
toggle: context.overlayState.toggle
|
|
1104
|
+
});
|
|
1105
|
+
createEscapeDismissFallback(() => context.overlayState.isOpen, context.overlayState.close);
|
|
1106
|
+
const isEntering = createEnterAnimation(contentRef, () => context.overlayState.isOpen);
|
|
1107
|
+
const renderProps = () => ({
|
|
1108
|
+
isEntering: isEntering(),
|
|
1109
|
+
isExiting: false,
|
|
1110
|
+
placement: popoverAria.placement() ?? "bottom"
|
|
1111
|
+
});
|
|
1112
|
+
const resolvedClass = () => {
|
|
1113
|
+
const c = props.class;
|
|
1114
|
+
if (typeof c === "function") return c(renderProps());
|
|
1115
|
+
return c ?? "solidaria-DateRangePickerContent";
|
|
1116
|
+
};
|
|
1117
|
+
const cleanPopoverProps = () => {
|
|
1118
|
+
const { style: _style, ref: _ref, ...rest } = popoverAria.popoverProps;
|
|
1119
|
+
return rest;
|
|
1120
|
+
};
|
|
1121
|
+
const mergedStyle = () => {
|
|
1122
|
+
return {
|
|
1123
|
+
...popoverAria.popoverProps.style,
|
|
1124
|
+
...props.style
|
|
1125
|
+
};
|
|
1126
|
+
};
|
|
1127
|
+
return createComponent(Show, {
|
|
1128
|
+
get when() {
|
|
1129
|
+
return context.overlayState.isOpen;
|
|
1130
|
+
},
|
|
1131
|
+
get children() {
|
|
1132
|
+
return createComponent(Portal, {
|
|
1133
|
+
get mount() {
|
|
1134
|
+
return portalContainer();
|
|
1135
|
+
},
|
|
1136
|
+
get children() {
|
|
1137
|
+
return createComponent(FocusScope, {
|
|
1138
|
+
contain: true,
|
|
1139
|
+
restoreFocus: true,
|
|
1140
|
+
get children() {
|
|
1141
|
+
var _el$13 = getNextElement(_tmpl$6), _el$14 = _el$13.firstChild;
|
|
1142
|
+
use(setContentRef, _el$13);
|
|
1143
|
+
spread(_el$13, mergeProps(cleanPopoverProps, {
|
|
1144
|
+
get ["class"]() {
|
|
1145
|
+
return resolvedClass();
|
|
1146
|
+
},
|
|
1147
|
+
get style() {
|
|
1148
|
+
return mergedStyle();
|
|
1149
|
+
},
|
|
1150
|
+
get ["data-placement"]() {
|
|
1151
|
+
return popoverAria.placement() ?? "bottom";
|
|
1152
|
+
},
|
|
1153
|
+
get ["data-entering"]() {
|
|
1154
|
+
return dataAttr(isEntering());
|
|
1155
|
+
}
|
|
1156
|
+
}), false, true);
|
|
1157
|
+
spread(_el$14, mergeProps(() => context.pickerAria.dialogProps, { "tabIndex": -1 }), false, true);
|
|
1158
|
+
insert(_el$14, () => props.children);
|
|
1159
|
+
runHydrationEvents();
|
|
1160
|
+
return _el$13;
|
|
1161
|
+
}
|
|
1162
|
+
});
|
|
1163
|
+
}
|
|
1164
|
+
});
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
}
|
|
1168
|
+
//#endregion
|
|
1169
|
+
export { HiddenDateInput as _, DatePickerDescription as a, DatePickerStateContext as c, DateRangePickerContent as d, DateRangePickerDescription as f, useDatePickerContext as g, DateRangePickerStateContext as h, DatePickerContext as i, DateRangePicker as l, DateRangePickerLabel as m, DatePickerButton as n, DatePickerErrorMessage as o, DateRangePickerErrorMessage as p, DatePickerContent as r, DatePickerLabel as s, DatePicker as t, DateRangePickerButton as u };
|
|
1170
|
+
|
|
1171
|
+
//# sourceMappingURL=DatePicker2.js.map
|