@proyecto-viviana/solid-stately 0.5.0 → 0.6.0-rc.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/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/dist/autocomplete/createAutocompleteState.d.ts +2 -1
- package/dist/autocomplete/createAutocompleteState.d.ts.map +1 -0
- package/dist/autocomplete/index.d.ts +1 -0
- package/dist/autocomplete/index.d.ts.map +1 -0
- package/dist/calendar/IncompleteDate.d.ts +2 -1
- package/dist/calendar/IncompleteDate.d.ts.map +1 -0
- package/dist/calendar/createCalendarState.d.ts +7 -8
- package/dist/calendar/createCalendarState.d.ts.map +1 -0
- package/dist/calendar/createDateFieldState.d.ts +4 -20
- package/dist/calendar/createDateFieldState.d.ts.map +1 -0
- package/dist/calendar/createDatePickerState.d.ts +2 -7
- package/dist/calendar/createDatePickerState.d.ts.map +1 -0
- package/dist/calendar/createRangeCalendarState.d.ts +7 -7
- package/dist/calendar/createRangeCalendarState.d.ts.map +1 -0
- package/dist/calendar/createTimeFieldState.d.ts +4 -23
- package/dist/calendar/createTimeFieldState.d.ts.map +1 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/intl/index.d.ts +1 -0
- package/dist/calendar/intl/index.d.ts.map +1 -0
- package/dist/checkbox/createCheckboxGroupState.d.ts +1 -0
- package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -0
- package/dist/checkbox/index.d.ts +1 -0
- package/dist/checkbox/index.d.ts.map +1 -0
- package/dist/collections/ListCollection.d.ts +5 -0
- package/dist/collections/ListCollection.d.ts.map +1 -0
- package/dist/collections/createListState.d.ts +2 -6
- package/dist/collections/createListState.d.ts.map +1 -0
- package/dist/collections/createMenuState.d.ts +30 -13
- package/dist/collections/createMenuState.d.ts.map +1 -0
- package/dist/collections/createSelectionState.d.ts +2 -5
- package/dist/collections/createSelectionState.d.ts.map +1 -0
- package/dist/collections/getChildNodes.d.ts +6 -3
- package/dist/collections/getChildNodes.d.ts.map +1 -0
- package/dist/collections/index.d.ts +2 -1
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/types.d.ts +36 -2
- package/dist/collections/types.d.ts.map +1 -0
- package/dist/color/Color.d.ts +7 -1
- package/dist/color/Color.d.ts.map +1 -0
- package/dist/color/createColorAreaState.d.ts +2 -5
- package/dist/color/createColorAreaState.d.ts.map +1 -0
- package/dist/color/createColorFieldState.d.ts +2 -5
- package/dist/color/createColorFieldState.d.ts.map +1 -0
- package/dist/color/createColorSliderState.d.ts +2 -5
- package/dist/color/createColorSliderState.d.ts.map +1 -0
- package/dist/color/createColorWheelState.d.ts +2 -5
- package/dist/color/createColorWheelState.d.ts.map +1 -0
- package/dist/color/getColorChannels.d.ts +3 -0
- package/dist/color/getColorChannels.d.ts.map +1 -0
- package/dist/color/index.d.ts +2 -1
- package/dist/color/index.d.ts.map +1 -0
- package/dist/color/intl/index.d.ts +1 -0
- package/dist/color/intl/index.d.ts.map +1 -0
- package/dist/color/types.d.ts +2 -1
- package/dist/color/types.d.ts.map +1 -0
- package/dist/combobox/createComboBoxState.d.ts +4 -8
- package/dist/combobox/createComboBoxState.d.ts.map +1 -0
- package/dist/combobox/index.d.ts +1 -0
- package/dist/combobox/index.d.ts.map +1 -0
- package/dist/data/createAsyncList.d.ts +1 -7
- package/dist/data/createAsyncList.d.ts.map +1 -0
- package/dist/data/createListData.d.ts +1 -6
- package/dist/data/createListData.d.ts.map +1 -0
- package/dist/data/createTreeData.d.ts +1 -6
- package/dist/data/createTreeData.d.ts.map +1 -0
- package/dist/data/index.d.ts +1 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/datepicker/index.d.ts +1 -0
- package/dist/datepicker/index.d.ts.map +1 -0
- package/dist/disclosure/createDisclosureState.d.ts +2 -5
- package/dist/disclosure/createDisclosureState.d.ts.map +1 -0
- package/dist/disclosure/index.d.ts +1 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/dnd/createDragState.d.ts +2 -6
- package/dist/dnd/createDragState.d.ts.map +1 -0
- package/dist/dnd/createDraggableCollectionState.d.ts +39 -10
- package/dist/dnd/createDraggableCollectionState.d.ts.map +1 -0
- package/dist/dnd/createDropState.d.ts +2 -6
- package/dist/dnd/createDropState.d.ts.map +1 -0
- package/dist/dnd/createDroppableCollectionState.d.ts +28 -11
- package/dist/dnd/createDroppableCollectionState.d.ts.map +1 -0
- package/dist/dnd/index.d.ts +3 -2
- package/dist/dnd/index.d.ts.map +1 -0
- package/dist/dnd/types.d.ts +17 -0
- package/dist/dnd/types.d.ts.map +1 -0
- package/dist/flags/flags.d.ts +5 -0
- package/dist/flags/flags.d.ts.map +1 -0
- package/dist/form/createFormValidationState.d.ts +2 -9
- package/{src → dist}/form/createFormValidationState.d.ts.map +1 -1
- package/dist/form/index.d.ts +1 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/grid/createGridState.d.ts +3 -2
- package/dist/grid/createGridState.d.ts.map +1 -0
- package/dist/grid/index.d.ts +1 -0
- package/dist/grid/index.d.ts.map +1 -0
- package/dist/grid/types.d.ts +23 -1
- package/dist/grid/types.d.ts.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3016 -1579
- package/dist/index.js.map +1 -1
- package/dist/menu/index.d.ts +2 -1
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/numberfield/createNumberFieldState.d.ts +31 -6
- package/dist/numberfield/createNumberFieldState.d.ts.map +1 -0
- package/dist/numberfield/index.d.ts +1 -0
- package/dist/numberfield/index.d.ts.map +1 -0
- package/dist/overlays/createOverlayTriggerState.d.ts +12 -1
- package/dist/overlays/createOverlayTriggerState.d.ts.map +1 -0
- package/dist/overlays/index.d.ts +1 -0
- package/dist/overlays/index.d.ts.map +1 -0
- package/dist/private/flags/flags.js +26 -0
- package/dist/private/flags/flags.js.map +1 -0
- package/dist/radio/createRadioGroupState.d.ts +1 -0
- package/dist/radio/createRadioGroupState.d.ts.map +1 -0
- package/dist/radio/index.d.ts +1 -0
- package/dist/radio/index.d.ts.map +1 -0
- package/dist/searchfield/createSearchFieldState.d.ts +2 -5
- package/dist/searchfield/createSearchFieldState.d.ts.map +1 -0
- package/dist/searchfield/index.d.ts +1 -0
- package/dist/searchfield/index.d.ts.map +1 -0
- package/dist/select/createSelectState.d.ts +17 -6
- package/dist/select/createSelectState.d.ts.map +1 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.d.ts.map +1 -0
- package/dist/selection/Selection.d.ts +2 -1
- package/dist/selection/Selection.d.ts.map +1 -0
- package/dist/selection/SelectionManager.d.ts +1 -19
- package/dist/selection/SelectionManager.d.ts.map +1 -0
- package/dist/selection/createMultipleSelectionState.d.ts +2 -13
- package/dist/selection/createMultipleSelectionState.d.ts.map +1 -0
- package/dist/selection/index.d.ts +1 -0
- package/dist/selection/index.d.ts.map +1 -0
- package/dist/slider/createSliderState.d.ts +2 -5
- package/dist/slider/createSliderState.d.ts.map +1 -0
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.d.ts.map +1 -0
- package/dist/ssr/index.d.ts +2 -7
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/steplist/createStepListState.d.ts +2 -5
- package/dist/steplist/createStepListState.d.ts.map +1 -0
- package/dist/steplist/index.d.ts +1 -0
- package/dist/steplist/index.d.ts.map +1 -0
- package/dist/table/TableCollection.d.ts +1 -0
- package/dist/table/TableCollection.d.ts.map +1 -0
- package/dist/table/createTableColumnResizeState.d.ts +2 -9
- package/dist/table/createTableColumnResizeState.d.ts.map +1 -0
- package/dist/table/createTableState.d.ts +2 -5
- package/dist/table/createTableState.d.ts.map +1 -0
- package/dist/table/createTreeGridState.d.ts +2 -8
- package/dist/table/createTreeGridState.d.ts.map +1 -0
- package/dist/table/index.d.ts +1 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/types.d.ts +35 -1
- package/dist/table/types.d.ts.map +1 -0
- package/dist/tabs/createTabListState.d.ts +2 -5
- package/dist/tabs/createTabListState.d.ts.map +1 -0
- package/dist/tabs/index.d.ts +1 -0
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/textfield/createTextFieldState.d.ts +1 -0
- package/dist/textfield/createTextFieldState.d.ts.map +1 -0
- package/dist/textfield/index.d.ts +1 -0
- package/dist/textfield/index.d.ts.map +1 -0
- package/dist/toast/createToastState.d.ts +2 -5
- package/dist/toast/createToastState.d.ts.map +1 -0
- package/dist/toast/index.d.ts +1 -0
- package/dist/toast/index.d.ts.map +1 -0
- package/dist/toggle/createToggleGroupState.d.ts +1 -0
- package/dist/toggle/createToggleGroupState.d.ts.map +1 -0
- package/dist/toggle/createToggleState.d.ts +1 -0
- package/dist/toggle/createToggleState.d.ts.map +1 -0
- package/dist/toggle/index.d.ts +1 -0
- package/dist/toggle/index.d.ts.map +1 -0
- package/dist/tokenfield/TokenFieldValue.d.ts +72 -0
- package/dist/tokenfield/TokenFieldValue.d.ts.map +1 -0
- package/dist/tokenfield/createTokenFieldState.d.ts +33 -0
- package/dist/tokenfield/createTokenFieldState.d.ts.map +1 -0
- package/dist/tokenfield/index.d.ts +3 -0
- package/dist/tokenfield/index.d.ts.map +1 -0
- package/dist/tooltip/createTooltipTriggerState.d.ts +9 -8
- package/dist/tooltip/createTooltipTriggerState.d.ts.map +1 -0
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.d.ts.map +1 -0
- package/dist/tree/TreeCollection.d.ts +1 -0
- package/dist/tree/TreeCollection.d.ts.map +1 -0
- package/dist/tree/createTreeState.d.ts +2 -7
- package/{src → dist}/tree/createTreeState.d.ts.map +1 -1
- package/dist/tree/index.d.ts +1 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/types.d.ts +19 -1
- package/dist/tree/types.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/owner.d.ts +9 -0
- package/dist/utils/owner.d.ts.map +1 -0
- package/dist/utils/reactivity.d.ts +19 -0
- package/dist/utils/reactivity.d.ts.map +1 -0
- package/package.json +23 -9
- package/src/autocomplete/createAutocompleteState.ts +18 -4
- package/src/calendar/IncompleteDate.ts +15 -1
- package/src/calendar/createCalendarState.ts +194 -79
- package/src/calendar/createDateFieldState.ts +60 -42
- package/src/calendar/createDatePickerState.ts +32 -14
- package/src/calendar/createRangeCalendarState.ts +136 -74
- package/src/calendar/createTimeFieldState.ts +25 -6
- package/src/calendar/intl/index.ts +205 -142
- package/src/checkbox/createCheckboxGroupState.ts +29 -13
- package/src/collections/ListCollection.ts +31 -0
- package/src/collections/createListState.ts +23 -6
- package/src/collections/createMenuState.ts +59 -14
- package/src/collections/createSelectionState.ts +32 -12
- package/src/collections/getChildNodes.ts +20 -3
- package/src/collections/index.ts +2 -0
- package/src/collections/types.ts +35 -2
- package/src/color/Color.ts +66 -29
- package/src/color/createColorAreaState.ts +29 -4
- package/src/color/createColorFieldState.ts +37 -11
- package/src/color/createColorSliderState.ts +36 -7
- package/src/color/createColorWheelState.ts +20 -4
- package/src/color/getColorChannels.ts +16 -0
- package/src/color/index.ts +1 -0
- package/src/color/intl/index.ts +890 -855
- package/src/color/types.ts +1 -1
- package/src/combobox/createComboBoxState.ts +178 -195
- package/src/data/createAsyncList.ts +22 -2
- package/src/data/createListData.ts +19 -2
- package/src/data/createTreeData.ts +19 -3
- package/src/disclosure/createDisclosureState.ts +40 -19
- package/src/dnd/createDragState.ts +22 -4
- package/src/dnd/createDraggableCollectionState.ts +137 -10
- package/src/dnd/createDropState.ts +21 -3
- package/src/dnd/createDroppableCollectionState.ts +117 -11
- package/src/dnd/index.ts +4 -0
- package/src/dnd/types.ts +16 -0
- package/src/flags/flags.ts +25 -0
- package/src/form/createFormValidationState.ts +54 -36
- package/src/grid/createGridState.ts +187 -109
- package/src/grid/types.ts +22 -1
- package/src/index.ts +15 -0
- package/src/menu/index.ts +2 -0
- package/src/numberfield/createNumberFieldState.ts +153 -66
- package/src/overlays/createOverlayTriggerState.ts +31 -4
- package/src/radio/createRadioGroupState.ts +19 -5
- package/src/searchfield/createSearchFieldState.ts +18 -3
- package/src/select/createSelectState.ts +73 -8
- package/src/selection/Selection.ts +15 -1
- package/src/selection/SelectionManager.ts +14 -0
- package/src/selection/createMultipleSelectionState.ts +44 -25
- package/src/slider/createSliderState.ts +20 -5
- package/src/ssr/index.ts +27 -4
- package/src/steplist/createStepListState.ts +38 -17
- package/src/table/TableCollection.ts +14 -0
- package/src/table/createTableColumnResizeState.ts +20 -3
- package/src/table/createTableState.ts +22 -1
- package/src/table/createTreeGridState.ts +21 -4
- package/src/table/types.ts +36 -3
- package/src/tabs/createTabListState.ts +77 -34
- package/src/textfield/createTextFieldState.ts +17 -3
- package/src/toast/createToastState.ts +28 -3
- package/src/toggle/createToggleGroupState.ts +20 -5
- package/src/toggle/createToggleState.ts +19 -4
- package/src/tokenfield/TokenFieldValue.ts +440 -0
- package/src/tokenfield/createTokenFieldState.ts +88 -0
- package/src/tokenfield/index.ts +14 -0
- package/src/tooltip/createTooltipTriggerState.ts +49 -13
- package/src/tree/TreeCollection.ts +14 -0
- package/src/tree/createTreeState.ts +62 -35
- package/src/tree/types.ts +18 -1
- package/src/utils/index.ts +9 -1
- package/src/utils/owner.ts +20 -0
- package/src/utils/reactivity.ts +45 -1
- package/src/autocomplete/createAutocompleteState.d.ts +0 -48
- package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
- package/src/autocomplete/index.d.ts +0 -6
- package/src/autocomplete/index.d.ts.map +0 -1
- package/src/calendar/createCalendarState.d.ts +0 -152
- package/src/calendar/createCalendarState.d.ts.map +0 -1
- package/src/calendar/createDateFieldState.d.ts +0 -145
- package/src/calendar/createDateFieldState.d.ts.map +0 -1
- package/src/calendar/createRangeCalendarState.d.ts +0 -171
- package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
- package/src/calendar/createTimeFieldState.d.ts +0 -97
- package/src/calendar/createTimeFieldState.d.ts.map +0 -1
- package/src/calendar/index.d.ts +0 -80
- package/src/calendar/index.d.ts.map +0 -1
- package/src/checkbox/createCheckboxGroupState.d.ts +0 -73
- package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
- package/src/checkbox/index.d.ts +0 -6
- package/src/checkbox/index.d.ts.map +0 -1
- package/src/collections/ListCollection.d.ts +0 -40
- package/src/collections/ListCollection.d.ts.map +0 -1
- package/src/collections/createListState.d.ts +0 -94
- package/src/collections/createListState.d.ts.map +0 -1
- package/src/collections/createMenuState.d.ts +0 -55
- package/src/collections/createMenuState.d.ts.map +0 -1
- package/src/collections/createSelectionState.d.ts +0 -89
- package/src/collections/createSelectionState.d.ts.map +0 -1
- package/src/collections/index.d.ts +0 -38
- package/src/collections/index.d.ts.map +0 -1
- package/src/collections/types.d.ts +0 -147
- package/src/collections/types.d.ts.map +0 -1
- package/src/color/Color.d.ts +0 -43
- package/src/color/Color.d.ts.map +0 -1
- package/src/color/createColorAreaState.d.ts +0 -78
- package/src/color/createColorAreaState.d.ts.map +0 -1
- package/src/color/createColorFieldState.d.ts +0 -57
- package/src/color/createColorFieldState.d.ts.map +0 -1
- package/src/color/createColorSliderState.d.ts +0 -69
- package/src/color/createColorSliderState.d.ts.map +0 -1
- package/src/color/createColorWheelState.d.ts +0 -53
- package/src/color/createColorWheelState.d.ts.map +0 -1
- package/src/color/index.d.ts +0 -39
- package/src/color/index.d.ts.map +0 -1
- package/src/color/types.d.ts +0 -111
- package/src/color/types.d.ts.map +0 -1
- package/src/combobox/createComboBoxState.d.ts +0 -127
- package/src/combobox/createComboBoxState.d.ts.map +0 -1
- package/src/combobox/index.d.ts +0 -13
- package/src/combobox/index.d.ts.map +0 -1
- package/src/disclosure/createDisclosureState.d.ts +0 -68
- package/src/disclosure/createDisclosureState.d.ts.map +0 -1
- package/src/disclosure/index.d.ts +0 -10
- package/src/disclosure/index.d.ts.map +0 -1
- package/src/dnd/createDragState.d.ts +0 -68
- package/src/dnd/createDragState.d.ts.map +0 -1
- package/src/dnd/createDraggableCollectionState.d.ts +0 -68
- package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
- package/src/dnd/createDropState.d.ts +0 -80
- package/src/dnd/createDropState.d.ts.map +0 -1
- package/src/dnd/createDroppableCollectionState.d.ts +0 -107
- package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
- package/src/dnd/index.d.ts +0 -60
- package/src/dnd/index.d.ts.map +0 -1
- package/src/dnd/types.d.ts +0 -277
- package/src/dnd/types.d.ts.map +0 -1
- package/src/form/createFormValidationState.d.ts +0 -102
- package/src/form/index.d.ts +0 -16
- package/src/form/index.d.ts.map +0 -1
- package/src/grid/createGridState.d.ts +0 -15
- package/src/grid/createGridState.d.ts.map +0 -1
- package/src/grid/index.d.ts +0 -7
- package/src/grid/index.d.ts.map +0 -1
- package/src/grid/types.d.ts +0 -163
- package/src/grid/types.d.ts.map +0 -1
- package/src/index.d.ts +0 -311
- package/src/index.d.ts.map +0 -1
- package/src/numberfield/createNumberFieldState.d.ts +0 -67
- package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
- package/src/numberfield/index.d.ts +0 -6
- package/src/numberfield/index.d.ts.map +0 -1
- package/src/overlays/createOverlayTriggerState.d.ts +0 -34
- package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
- package/src/overlays/index.d.ts +0 -6
- package/src/overlays/index.d.ts.map +0 -1
- package/src/radio/createRadioGroupState.d.ts +0 -79
- package/src/radio/createRadioGroupState.d.ts.map +0 -1
- package/src/radio/index.d.ts +0 -7
- package/src/radio/index.d.ts.map +0 -1
- package/src/searchfield/createSearchFieldState.d.ts +0 -27
- package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
- package/src/searchfield/index.d.ts +0 -3
- package/src/searchfield/index.d.ts.map +0 -1
- package/src/select/createSelectState.d.ts +0 -75
- package/src/select/createSelectState.d.ts.map +0 -1
- package/src/select/index.d.ts +0 -2
- package/src/select/index.d.ts.map +0 -1
- package/src/slider/createSliderState.d.ts +0 -72
- package/src/slider/createSliderState.d.ts.map +0 -1
- package/src/slider/index.d.ts +0 -3
- package/src/slider/index.d.ts.map +0 -1
- package/src/ssr/index.d.ts +0 -28
- package/src/ssr/index.d.ts.map +0 -1
- package/src/table/TableCollection.d.ts +0 -54
- package/src/table/TableCollection.d.ts.map +0 -1
- package/src/table/createTableState.d.ts +0 -15
- package/src/table/createTableState.d.ts.map +0 -1
- package/src/table/index.d.ts +0 -18
- package/src/table/index.d.ts.map +0 -1
- package/src/table/types.d.ts +0 -145
- package/src/table/types.d.ts.map +0 -1
- package/src/tabs/createTabListState.d.ts +0 -70
- package/src/tabs/createTabListState.d.ts.map +0 -1
- package/src/tabs/index.d.ts +0 -8
- package/src/tabs/index.d.ts.map +0 -1
- package/src/textfield/createTextFieldState.d.ts +0 -32
- package/src/textfield/createTextFieldState.d.ts.map +0 -1
- package/src/textfield/index.d.ts +0 -6
- package/src/textfield/index.d.ts.map +0 -1
- package/src/toast/createToastState.d.ts +0 -129
- package/src/toast/createToastState.d.ts.map +0 -1
- package/src/toast/index.d.ts +0 -12
- package/src/toast/index.d.ts.map +0 -1
- package/src/toggle/createToggleState.d.ts +0 -34
- package/src/toggle/createToggleState.d.ts.map +0 -1
- package/src/toggle/index.d.ts +0 -2
- package/src/toggle/index.d.ts.map +0 -1
- package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
- package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
- package/src/tooltip/index.d.ts +0 -7
- package/src/tooltip/index.d.ts.map +0 -1
- package/src/tree/TreeCollection.d.ts +0 -43
- package/src/tree/TreeCollection.d.ts.map +0 -1
- package/src/tree/createTreeState.d.ts +0 -17
- package/src/tree/index.d.ts +0 -13
- package/src/tree/index.d.ts.map +0 -1
- package/src/tree/types.d.ts +0 -162
- package/src/tree/types.d.ts.map +0 -1
- package/src/utils/index.d.ts +0 -2
- package/src/utils/index.d.ts.map +0 -1
- package/src/utils/reactivity.d.ts +0 -28
- package/src/utils/reactivity.d.ts.map +0 -1
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/datepicker/useDatePickerState.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* DatePickerState for Solid-Stately
|
|
3
17
|
*
|
|
@@ -5,7 +19,8 @@
|
|
|
5
19
|
* Based on @react-stately/datepicker useDatePickerState
|
|
6
20
|
*/
|
|
7
21
|
|
|
8
|
-
import {
|
|
22
|
+
import { createMemo } from "solid-js";
|
|
23
|
+
import type { Accessor } from "solid-js";
|
|
9
24
|
import {
|
|
10
25
|
type DateValue,
|
|
11
26
|
type CalendarDateTime,
|
|
@@ -16,7 +31,7 @@ import {
|
|
|
16
31
|
toZoned,
|
|
17
32
|
getLocalTimeZone,
|
|
18
33
|
} from "@internationalized/date";
|
|
19
|
-
import { access, type MaybeAccessor } from "../utils";
|
|
34
|
+
import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
|
|
20
35
|
import type { ValidationState } from "./createCalendarState";
|
|
21
36
|
import type { TimeValue } from "./createTimeFieldState";
|
|
22
37
|
|
|
@@ -76,18 +91,21 @@ export function createDatePickerState<T extends DateValue = DateValue>(
|
|
|
76
91
|
const timeZone = getLocalTimeZone();
|
|
77
92
|
|
|
78
93
|
// Internal signals for value and overlay state
|
|
79
|
-
const [internalValue, setInternalValue] =
|
|
80
|
-
|
|
94
|
+
const [internalValue, setInternalValue] = createInternalSignal<T | null>(
|
|
95
|
+
props.defaultValue ?? null,
|
|
96
|
+
);
|
|
97
|
+
const [internalOpen, setInternalOpen] = createInternalSignal(props.defaultOpen ?? false);
|
|
81
98
|
|
|
82
99
|
// Transient selections for date and time
|
|
83
|
-
const [selectedDate, setSelectedDate] =
|
|
84
|
-
const [selectedTime, setSelectedTime] =
|
|
100
|
+
const [selectedDate, setSelectedDate] = createInternalSignal<DateValue | null>(null);
|
|
101
|
+
const [selectedTime, setSelectedTime] = createInternalSignal<TimeValue | null>(null);
|
|
85
102
|
|
|
86
|
-
// Controlled vs uncontrolled value
|
|
87
|
-
|
|
103
|
+
// Controlled vs uncontrolled value. Function (not memo) so same-turn
|
|
104
|
+
// methods and tests see the live internal write.
|
|
105
|
+
const value: Accessor<T | null> = () => {
|
|
88
106
|
const controlled = access(props.value);
|
|
89
107
|
return controlled !== undefined ? controlled : internalValue();
|
|
90
|
-
}
|
|
108
|
+
};
|
|
91
109
|
|
|
92
110
|
// Granularity: auto-detect from value type if not provided
|
|
93
111
|
const granularity = createMemo<Granularity>(() => {
|
|
@@ -109,7 +127,7 @@ export function createDatePickerState<T extends DateValue = DateValue>(
|
|
|
109
127
|
const isDisabled = createMemo(() => access(props.isDisabled) ?? false);
|
|
110
128
|
const isReadOnly = createMemo(() => access(props.isReadOnly) ?? false);
|
|
111
129
|
const validationState = createMemo(() => access(props.validationState));
|
|
112
|
-
const isOpen: Accessor<boolean> = () => access(props.isOpen) ?? internalOpen
|
|
130
|
+
const isOpen: Accessor<boolean> = () => access(props.isOpen) ?? readNow(internalOpen);
|
|
113
131
|
|
|
114
132
|
// Date and time portions of the current value
|
|
115
133
|
const dateValue = createMemo<DateValue | null>(() => {
|
|
@@ -187,7 +205,7 @@ export function createDatePickerState<T extends DateValue = DateValue>(
|
|
|
187
205
|
const setDateValue = (date: DateValue) => {
|
|
188
206
|
if (isDisabled() || isReadOnly()) return;
|
|
189
207
|
|
|
190
|
-
const currentTime = selectedTime
|
|
208
|
+
const currentTime = readNow(selectedTime);
|
|
191
209
|
const currentValue = value();
|
|
192
210
|
const shouldClose =
|
|
193
211
|
typeof props.shouldCloseOnSelect === "function"
|
|
@@ -222,7 +240,7 @@ export function createDatePickerState<T extends DateValue = DateValue>(
|
|
|
222
240
|
const setTimeValue = (time: TimeValue) => {
|
|
223
241
|
if (isDisabled() || isReadOnly()) return;
|
|
224
242
|
|
|
225
|
-
const currentDate = selectedDate
|
|
243
|
+
const currentDate = readNow(selectedDate);
|
|
226
244
|
const currentValue = value();
|
|
227
245
|
|
|
228
246
|
if (currentDate) {
|
|
@@ -252,8 +270,8 @@ export function createDatePickerState<T extends DateValue = DateValue>(
|
|
|
252
270
|
// When closing, only commit if both date and time are available (when time is required).
|
|
253
271
|
// Don't auto-commit partial selections with placeholder time to avoid phantom values.
|
|
254
272
|
const currentValue = value();
|
|
255
|
-
const currentDate = selectedDate
|
|
256
|
-
const currentTime = selectedTime
|
|
273
|
+
const currentDate = readNow(selectedDate);
|
|
274
|
+
const currentTime = readNow(selectedTime);
|
|
257
275
|
|
|
258
276
|
if (!currentValue && currentDate && hasTime() && currentTime) {
|
|
259
277
|
// Both date and time explicitly selected — safe to commit
|
|
@@ -1,11 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/calendar/useCalendarState.ts
|
|
14
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/calendar/useRangeCalendarState.ts
|
|
15
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/calendar/utils.ts
|
|
16
|
+
|
|
1
17
|
/**
|
|
2
18
|
* RangeCalendarState for Solid-Stately
|
|
3
19
|
*
|
|
4
20
|
* Provides state management for range calendar components.
|
|
5
|
-
*
|
|
21
|
+
* Ported from:
|
|
22
|
+
* - packages/react-stately/src/calendar/useRangeCalendarState.ts
|
|
23
|
+
* - packages/react-stately/src/calendar/useCalendarState.ts
|
|
24
|
+
* - packages/react-stately/src/calendar/utils.ts
|
|
6
25
|
*/
|
|
7
26
|
|
|
8
|
-
import {
|
|
27
|
+
import { createMemo, createEffect } from "solid-js";
|
|
28
|
+
import type { Accessor } from "solid-js";
|
|
9
29
|
import {
|
|
10
30
|
type Calendar as InternationalizedCalendar,
|
|
11
31
|
type CalendarDate,
|
|
@@ -28,7 +48,7 @@ import {
|
|
|
28
48
|
toCalendar as intlToCalendar,
|
|
29
49
|
toCalendarDate as intlToCalendarDate,
|
|
30
50
|
} from "@internationalized/date";
|
|
31
|
-
import { access, type MaybeAccessor } from "../utils";
|
|
51
|
+
import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
|
|
32
52
|
import type { CalendarDayOfWeek, ValidationState } from "./createCalendarState";
|
|
33
53
|
import { getFormatOptions } from "./createDateFieldState";
|
|
34
54
|
|
|
@@ -172,6 +192,11 @@ export interface RangeCalendarState<T extends DateValue = DateValue> {
|
|
|
172
192
|
selectFocusedDate: () => void;
|
|
173
193
|
/** Selects a specific date. */
|
|
174
194
|
selectDate: (date: CalendarDate) => void;
|
|
195
|
+
/**
|
|
196
|
+
* After a keyboard range-start selection, move focus to the next available
|
|
197
|
+
* day so the in-progress range is visible. RAC `focusNearestAvailableDate`.
|
|
198
|
+
*/
|
|
199
|
+
focusNearestAvailableDate: (anchorDate: CalendarDate) => void;
|
|
175
200
|
/** Whether focus is currently within the calendar. */
|
|
176
201
|
isFocused: Accessor<boolean>;
|
|
177
202
|
/** Sets whether focus is within the calendar. */
|
|
@@ -216,7 +241,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
216
241
|
const calendar = createMemo(() =>
|
|
217
242
|
(props.createCalendar ?? intlCreateCalendar)(resolvedOptions().calendar as CalendarIdentifier),
|
|
218
243
|
);
|
|
219
|
-
const visibleMonths = Math.max(1, Number(access(props.visibleMonths) ?? 1));
|
|
244
|
+
const visibleMonths = createMemo(() => Math.max(1, Number(access(props.visibleMonths) ?? 1)));
|
|
220
245
|
const firstDayOfWeekName = (): CalendarDayOfWeek | undefined =>
|
|
221
246
|
props.firstDayOfWeek == null ? undefined : dayOfWeekNames[props.firstDayOfWeek];
|
|
222
247
|
|
|
@@ -226,7 +251,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
226
251
|
// The anchor date is the first selected date during a range drag. Declared up
|
|
227
252
|
// here (ahead of constrainDate) because the available-range derivation below
|
|
228
253
|
// depends on it, and constrainDate consults that range.
|
|
229
|
-
const [anchorDate, setAnchorDate] =
|
|
254
|
+
const [anchorDate, setAnchorDate] = createInternalSignal<CalendarDate | null>(null);
|
|
230
255
|
|
|
231
256
|
// Mirrors @react-stately/calendar useRangeCalendarState getAvailableRange: once
|
|
232
257
|
// a range selection is anchored and unavailable dates exist, contiguous ranges
|
|
@@ -238,8 +263,8 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
238
263
|
if (anchor && props.isDateUnavailable && !props.allowsNonContiguousRanges) {
|
|
239
264
|
const predicate = (date: CalendarDate): boolean => props.isDateUnavailable!(date, anchor);
|
|
240
265
|
return {
|
|
241
|
-
start: nextUnavailableDate(anchor, predicate, visibleMonths, -1),
|
|
242
|
-
end: nextUnavailableDate(anchor, predicate, visibleMonths, 1),
|
|
266
|
+
start: nextUnavailableDate(anchor, predicate, visibleMonths(), -1),
|
|
267
|
+
end: nextUnavailableDate(anchor, predicate, visibleMonths(), 1),
|
|
243
268
|
};
|
|
244
269
|
}
|
|
245
270
|
return null;
|
|
@@ -281,7 +306,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
281
306
|
const visibleRangeEndFromStart = (start: CalendarDate): CalendarDate => {
|
|
282
307
|
let end = endOfMonth(start);
|
|
283
308
|
|
|
284
|
-
for (let i = 1; i < visibleMonths; i++) {
|
|
309
|
+
for (let i = 1; i < visibleMonths(); i++) {
|
|
285
310
|
end = endOfMonth(end.add({ months: 1 }));
|
|
286
311
|
}
|
|
287
312
|
|
|
@@ -291,7 +316,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
291
316
|
const rawAlignStart = (date: CalendarDate): CalendarDate => startOfMonth(date);
|
|
292
317
|
|
|
293
318
|
const rawAlignEnd = (date: CalendarDate): CalendarDate =>
|
|
294
|
-
startOfMonth(date).subtract({ months: Math.max(visibleMonths - 1, 0) });
|
|
319
|
+
startOfMonth(date).subtract({ months: Math.max(visibleMonths() - 1, 0) });
|
|
295
320
|
|
|
296
321
|
const constrainVisibleRangeStart = (date: CalendarDate, aligned: CalendarDate): CalendarDate => {
|
|
297
322
|
const minValue = access(props.minValue);
|
|
@@ -322,8 +347,8 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
322
347
|
constrainVisibleRangeStart(date, rawAlignEnd(date));
|
|
323
348
|
|
|
324
349
|
const alignCenter = (date: CalendarDate): CalendarDate => {
|
|
325
|
-
let offset = Math.floor(visibleMonths / 2);
|
|
326
|
-
if (offset > 0 && visibleMonths % 2 === 0) {
|
|
350
|
+
let offset = Math.floor(visibleMonths() / 2);
|
|
351
|
+
if (offset > 0 && visibleMonths() % 2 === 0) {
|
|
327
352
|
offset--;
|
|
328
353
|
}
|
|
329
354
|
|
|
@@ -373,16 +398,17 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
373
398
|
};
|
|
374
399
|
|
|
375
400
|
// State signals
|
|
376
|
-
const [internalValue, setInternalValue] =
|
|
401
|
+
const [internalValue, setInternalValue] = createInternalSignal<RangeValue<T> | null>(
|
|
377
402
|
props.defaultValue ?? null,
|
|
378
403
|
);
|
|
379
404
|
const initialFocusedDate = constrainDate(getInitialFocusedDate());
|
|
380
|
-
const [focusedDate, setFocusedDateInternal] =
|
|
381
|
-
|
|
405
|
+
const [focusedDate, setFocusedDateInternal] =
|
|
406
|
+
createInternalSignal<CalendarDate>(initialFocusedDate);
|
|
407
|
+
const [visibleRangeStart, setVisibleRangeStart] = createInternalSignal<CalendarDate>(
|
|
382
408
|
alignVisibleRangeStart(initialFocusedDate),
|
|
383
409
|
);
|
|
384
|
-
const [isFocused, setFocused] =
|
|
385
|
-
const [isDragging, setDragging] =
|
|
410
|
+
const [isFocused, setFocused] = createInternalSignal(false);
|
|
411
|
+
const [isDragging, setDragging] = createInternalSignal(false);
|
|
386
412
|
|
|
387
413
|
// Controlled vs uncontrolled value
|
|
388
414
|
const sourceValue = createMemo<RangeValue<T> | null>(() => {
|
|
@@ -448,7 +474,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
448
474
|
return { start: focused, end: anchor };
|
|
449
475
|
});
|
|
450
476
|
|
|
451
|
-
//
|
|
477
|
+
// The visible range follows React Stately's selection alignment rules.
|
|
452
478
|
const visibleRange = createMemo(() => {
|
|
453
479
|
const start = visibleRangeStart();
|
|
454
480
|
return { start, end: visibleRangeEndFromStart(start) };
|
|
@@ -461,9 +487,10 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
461
487
|
// on out-of-range keeps a same-month focus from re-firing visibleRangeStart
|
|
462
488
|
// with a fresh equal-valued object, which would otherwise recompute the grid
|
|
463
489
|
// and recreate every cell on focus.
|
|
464
|
-
const syncVisibleRangeForFocusedDate = (
|
|
465
|
-
|
|
466
|
-
|
|
490
|
+
const syncVisibleRangeForFocusedDate = (
|
|
491
|
+
nextFocusedDate: CalendarDate,
|
|
492
|
+
range: { start: CalendarDate; end: CalendarDate },
|
|
493
|
+
) => {
|
|
467
494
|
if (nextFocusedDate.compare(range.start) < 0) {
|
|
468
495
|
setVisibleRangeStart(alignEnd(nextFocusedDate));
|
|
469
496
|
} else if (nextFocusedDate.compare(range.end) > 0) {
|
|
@@ -471,56 +498,73 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
471
498
|
}
|
|
472
499
|
};
|
|
473
500
|
|
|
474
|
-
createEffect(
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
return;
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
const currentFocusedDate = focusedDate();
|
|
499
|
-
const nextFocusedDate = constrainDate(currentFocusedDate);
|
|
500
|
-
|
|
501
|
-
if (
|
|
502
|
-
nextFocusedDate.compare(currentFocusedDate) === 0 &&
|
|
503
|
-
isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
|
|
504
|
-
) {
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
setFocusedDateInternal(nextFocusedDate);
|
|
509
|
-
setVisibleRangeStart(alignVisibleRangeStart(nextFocusedDate));
|
|
510
|
-
props.onFocusChange?.(nextFocusedDate);
|
|
511
|
-
});
|
|
512
|
-
|
|
513
|
-
createEffect(() => {
|
|
514
|
-
const currentFocusedDate = focusedDate();
|
|
515
|
-
const nextFocusedDate = toDisplayCalendarDate(currentFocusedDate);
|
|
501
|
+
createEffect(
|
|
502
|
+
() => {
|
|
503
|
+
const controlledFocused = access(props.focusedValue);
|
|
504
|
+
if (!controlledFocused) return null;
|
|
505
|
+
const nextFocusedDate = constrainDate(toDisplayCalendarDate(controlledFocused));
|
|
506
|
+
return {
|
|
507
|
+
nextFocusedDate,
|
|
508
|
+
currentFocusedDate: focusedDate(),
|
|
509
|
+
alignedStart: alignVisibleRangeStart(nextFocusedDate),
|
|
510
|
+
};
|
|
511
|
+
},
|
|
512
|
+
(data) => {
|
|
513
|
+
if (!data) return;
|
|
514
|
+
const { nextFocusedDate, currentFocusedDate, alignedStart } = data;
|
|
515
|
+
if (
|
|
516
|
+
nextFocusedDate.compare(currentFocusedDate) !== 0 ||
|
|
517
|
+
!isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
|
|
518
|
+
) {
|
|
519
|
+
setFocusedDateInternal(nextFocusedDate);
|
|
520
|
+
setVisibleRangeStart(alignedStart);
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
);
|
|
516
524
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
525
|
+
createEffect(
|
|
526
|
+
() => {
|
|
527
|
+
const controlledFocused = access(props.focusedValue);
|
|
528
|
+
if (controlledFocused) return null;
|
|
529
|
+
const currentFocusedDate = focusedDate();
|
|
530
|
+
const nextFocusedDate = constrainDate(currentFocusedDate);
|
|
531
|
+
if (
|
|
532
|
+
nextFocusedDate.compare(currentFocusedDate) === 0 &&
|
|
533
|
+
isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
|
|
534
|
+
) {
|
|
535
|
+
return null;
|
|
536
|
+
}
|
|
537
|
+
return {
|
|
538
|
+
nextFocusedDate,
|
|
539
|
+
alignedStart: alignVisibleRangeStart(nextFocusedDate),
|
|
540
|
+
};
|
|
541
|
+
},
|
|
542
|
+
(data) => {
|
|
543
|
+
if (!data) return;
|
|
544
|
+
setFocusedDateInternal(data.nextFocusedDate);
|
|
545
|
+
setVisibleRangeStart(data.alignedStart);
|
|
546
|
+
props.onFocusChange?.(data.nextFocusedDate);
|
|
547
|
+
},
|
|
548
|
+
);
|
|
520
549
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
550
|
+
createEffect(
|
|
551
|
+
() => {
|
|
552
|
+
const currentFocusedDate = focusedDate();
|
|
553
|
+
const nextFocusedDate = toDisplayCalendarDate(currentFocusedDate);
|
|
554
|
+
if (isEqualCalendar(currentFocusedDate.calendar, nextFocusedDate.calendar)) {
|
|
555
|
+
return null;
|
|
556
|
+
}
|
|
557
|
+
return {
|
|
558
|
+
nextFocusedDate,
|
|
559
|
+
alignedStart: alignVisibleRangeStart(nextFocusedDate),
|
|
560
|
+
};
|
|
561
|
+
},
|
|
562
|
+
(data) => {
|
|
563
|
+
if (!data) return;
|
|
564
|
+
setFocusedDateInternal(data.nextFocusedDate);
|
|
565
|
+
setVisibleRangeStart(data.alignedStart);
|
|
566
|
+
},
|
|
567
|
+
);
|
|
524
568
|
|
|
525
569
|
// Format week days for headers
|
|
526
570
|
const weekDays = createMemo(() => {
|
|
@@ -581,7 +625,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
581
625
|
return;
|
|
582
626
|
}
|
|
583
627
|
|
|
584
|
-
syncVisibleRangeForFocusedDate(constrained);
|
|
628
|
+
syncVisibleRangeForFocusedDate(constrained, visibleRange());
|
|
585
629
|
setFocusedDateInternal(constrained);
|
|
586
630
|
props.onFocusChange?.(constrained);
|
|
587
631
|
};
|
|
@@ -691,7 +735,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
691
735
|
// the window, so a single-month page whose focus stays in view would never
|
|
692
736
|
// advance the grid.
|
|
693
737
|
const focusPreviousPage = () => {
|
|
694
|
-
const pageMonths = access(props.pageBehavior) === "single" ? 1 : visibleMonths;
|
|
738
|
+
const pageMonths = access(props.pageBehavior) === "single" ? 1 : visibleMonths();
|
|
695
739
|
const nextFocusedDate = constrainDate(focusedDate().subtract({ months: pageMonths }));
|
|
696
740
|
setFocusedDateInternal(nextFocusedDate);
|
|
697
741
|
setVisibleRangeStart(startOfMonth(visibleRangeStart().subtract({ months: pageMonths })));
|
|
@@ -699,7 +743,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
699
743
|
};
|
|
700
744
|
|
|
701
745
|
const focusNextPage = () => {
|
|
702
|
-
const pageMonths = access(props.pageBehavior) === "single" ? 1 : visibleMonths;
|
|
746
|
+
const pageMonths = access(props.pageBehavior) === "single" ? 1 : visibleMonths();
|
|
703
747
|
const nextFocusedDate = constrainDate(focusedDate().add({ months: pageMonths }));
|
|
704
748
|
setFocusedDateInternal(nextFocusedDate);
|
|
705
749
|
setVisibleRangeStart(startOfMonth(visibleRangeStart().add({ months: pageMonths })));
|
|
@@ -785,7 +829,7 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
785
829
|
);
|
|
786
830
|
if (!selectableDate) return;
|
|
787
831
|
|
|
788
|
-
const anchor = anchorDate
|
|
832
|
+
const anchor = readNow(anchorDate);
|
|
789
833
|
|
|
790
834
|
if (!anchor) {
|
|
791
835
|
// First click - set anchor
|
|
@@ -836,6 +880,20 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
836
880
|
return week;
|
|
837
881
|
};
|
|
838
882
|
|
|
883
|
+
const focusNearestAvailableDate = (anchor: CalendarDate) => {
|
|
884
|
+
// RAC `useRangeCalendarState.ts:261-273`: prefer anchor+1, else −1, skip invalid.
|
|
885
|
+
const isDateInvalid = (candidate: CalendarDate) =>
|
|
886
|
+
isInvalid(candidate) || isDateOutsideAllowedRange(candidate);
|
|
887
|
+
let nextDay = anchor.add({ days: 1 });
|
|
888
|
+
if (isDateInvalid(nextDay)) {
|
|
889
|
+
nextDay = anchor.subtract({ days: 1 });
|
|
890
|
+
}
|
|
891
|
+
if (!isDateInvalid(nextDay)) {
|
|
892
|
+
setFocusedDate(nextDay);
|
|
893
|
+
setFocused(true);
|
|
894
|
+
}
|
|
895
|
+
};
|
|
896
|
+
|
|
839
897
|
// Get number of weeks in a month
|
|
840
898
|
const getWeeksInMonthFn = (date?: CalendarDate): number => {
|
|
841
899
|
const monthDate = date ?? focusedDate();
|
|
@@ -858,7 +916,8 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
858
916
|
|
|
859
917
|
const start = v.start as unknown as DateValue;
|
|
860
918
|
const end = v.end as unknown as DateValue;
|
|
861
|
-
const startTimeZone =
|
|
919
|
+
const startTimeZone =
|
|
920
|
+
"timeZone" in start ? (start as { timeZone: string }).timeZone : undefined;
|
|
862
921
|
const startGranularity = "minute" in start ? "minute" : "day";
|
|
863
922
|
const endTimeZone = "timeZone" in end ? (end as { timeZone: string }).timeZone : undefined;
|
|
864
923
|
const endGranularity = "minute" in end ? "minute" : "day";
|
|
@@ -965,13 +1024,16 @@ export function createRangeCalendarState<T extends DateValue = CalendarDate>(
|
|
|
965
1024
|
focusPageEnd,
|
|
966
1025
|
selectFocusedDate,
|
|
967
1026
|
selectDate,
|
|
1027
|
+
focusNearestAvailableDate,
|
|
968
1028
|
isFocused,
|
|
969
1029
|
setFocused,
|
|
970
1030
|
getDatesInWeek,
|
|
971
1031
|
getWeeksInMonth: getWeeksInMonthFn,
|
|
972
1032
|
weekDays,
|
|
973
1033
|
title,
|
|
974
|
-
visibleMonths
|
|
1034
|
+
get visibleMonths() {
|
|
1035
|
+
return visibleMonths();
|
|
1036
|
+
},
|
|
975
1037
|
isDragging,
|
|
976
1038
|
setDragging,
|
|
977
1039
|
formatValue,
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the 'License');
|
|
4
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*
|
|
7
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
+
* the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
+
* governing permissions and limitations under the License.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/datepicker/useTimeFieldState.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* TimeFieldState for Solid-Stately
|
|
3
17
|
*
|
|
4
|
-
* Faithful port of
|
|
5
|
-
*
|
|
18
|
+
* Faithful port of
|
|
19
|
+
* `packages/react-stately/src/datepicker/useTimeFieldState.ts`, which is a thin
|
|
20
|
+
* wrapper over `useDateFieldState`: a time-only `Time` value is converted
|
|
6
21
|
* to a `CalendarDateTime` (anchored on today's date, or a zoned date when the
|
|
7
22
|
* value/default carries a time zone) and fed to the date-field state machine
|
|
8
23
|
* with `maxGranularity: 'hour'` so the date segments drop away and only
|
|
@@ -19,7 +34,10 @@
|
|
|
19
34
|
* invoke and freeze them, breaking reactivity.
|
|
20
35
|
*/
|
|
21
36
|
|
|
22
|
-
import {
|
|
37
|
+
import { createMemo } from "solid-js";
|
|
38
|
+
import type { Accessor } from "solid-js";
|
|
39
|
+
import { access, createInternalSignal, type MaybeAccessor } from "../utils";
|
|
40
|
+
|
|
23
41
|
import {
|
|
24
42
|
Time,
|
|
25
43
|
type CalendarDate,
|
|
@@ -33,7 +51,6 @@ import {
|
|
|
33
51
|
toCalendarDateTime,
|
|
34
52
|
GregorianCalendar,
|
|
35
53
|
} from "@internationalized/date";
|
|
36
|
-
import { access, type MaybeAccessor } from "../utils";
|
|
37
54
|
import type { ValidationState } from "./createCalendarState";
|
|
38
55
|
import type { ValidationBehavior, ValidationFunction } from "../form";
|
|
39
56
|
import {
|
|
@@ -73,7 +90,7 @@ export interface TimeFieldStateProps<T extends TimeValue = Time> {
|
|
|
73
90
|
/** Whether the value is invalid (controlled). */
|
|
74
91
|
isInvalid?: boolean;
|
|
75
92
|
/** The locale to use for formatting. */
|
|
76
|
-
locale?: string
|
|
93
|
+
locale?: MaybeAccessor<string | undefined>;
|
|
77
94
|
/** The granularity (hour, minute, second). */
|
|
78
95
|
granularity?: "hour" | "minute" | "second";
|
|
79
96
|
/** Whether to show 12 or 24 hour format. */
|
|
@@ -137,7 +154,9 @@ export function createTimeFieldState<T extends TimeValue = Time>(
|
|
|
137
154
|
const placeholderValue: TimeValue = props.placeholderValue ?? new Time();
|
|
138
155
|
|
|
139
156
|
// Controlled/uncontrolled Time value (mirrors useControlledState).
|
|
140
|
-
const [internalValue, setInternalValue] =
|
|
157
|
+
const [internalValue, setInternalValue] = createInternalSignal<T | null>(
|
|
158
|
+
props.defaultValue ?? null,
|
|
159
|
+
);
|
|
141
160
|
const value = (): T | null => {
|
|
142
161
|
const controlled = access(props.value);
|
|
143
162
|
return controlled !== undefined ? controlled : internalValue();
|