@proyecto-viviana/solid-stately 0.5.1 → 0.6.0-rc.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/LICENSE-APACHE-2.0 +201 -0
- package/NOTICE +91 -0
- package/README.md +59 -29
- 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 +10 -9
- 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 +4 -7
- package/dist/calendar/createDatePickerState.d.ts.map +1 -0
- package/dist/calendar/createRangeCalendarState.d.ts +9 -7
- package/dist/calendar/createRangeCalendarState.d.ts.map +1 -0
- package/dist/calendar/createTimeFieldState.d.ts +5 -24
- 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 +3 -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 +74 -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 +6 -5
- package/dist/color/createColorAreaState.d.ts.map +1 -0
- package/dist/color/createColorFieldState.d.ts +4 -5
- package/dist/color/createColorFieldState.d.ts.map +1 -0
- package/dist/color/createColorSliderState.d.ts +4 -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 +92 -29
- package/dist/combobox/createComboBoxState.d.ts.map +1 -0
- package/dist/combobox/index.d.ts +2 -1
- 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 +44 -11
- 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 +34 -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/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 +4 -3
- 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 +7 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2947 -969
- package/dist/index.js.map +1 -1
- package/dist/menu/index.d.ts +3 -1
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/numberfield/createNumberFieldState.d.ts +37 -9
- 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.d.ts +5 -0
- package/dist/private/flags/flags.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 +100 -33
- package/dist/select/createSelectState.d.ts.map +1 -0
- package/dist/select/index.d.ts +2 -1
- 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 +37 -14
- 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 -13
- package/dist/ssr/index.d.ts.map +1 -0
- package/dist/steplist/createStepListState.d.ts +10 -18
- 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 +3 -6
- package/dist/table/createTableState.d.ts.map +1 -0
- package/dist/table/createTreeGridState.d.ts +3 -9
- 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 +37 -3
- 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 +96 -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 +3 -8
- package/dist/tree/createTreeState.d.ts.map +1 -0
- 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 +24 -0
- package/dist/utils/reactivity.d.ts.map +1 -0
- package/package.json +21 -9
- package/src/autocomplete/createAutocompleteState.ts +18 -4
- package/src/calendar/IncompleteDate.ts +15 -1
- package/src/calendar/createCalendarState.ts +321 -125
- package/src/calendar/createDateFieldState.ts +45 -31
- package/src/calendar/createDatePickerState.ts +47 -26
- package/src/calendar/createRangeCalendarState.ts +173 -86
- package/src/calendar/createTimeFieldState.ts +26 -7
- package/src/calendar/intl/index.ts +37 -2
- package/src/checkbox/createCheckboxGroupState.ts +45 -13
- package/src/collections/ListCollection.ts +31 -0
- package/src/collections/createListState.ts +27 -10
- package/src/collections/createMenuState.ts +190 -15
- package/src/collections/createSelectionState.ts +33 -13
- package/src/collections/getChildNodes.ts +20 -3
- package/src/collections/index.ts +6 -0
- package/src/collections/types.ts +35 -2
- package/src/color/Color.ts +61 -22
- package/src/color/createColorAreaState.ts +48 -4
- package/src/color/createColorFieldState.ts +114 -38
- package/src/color/createColorSliderState.ts +61 -9
- package/src/color/createColorWheelState.ts +29 -9
- package/src/color/getColorChannels.ts +16 -0
- package/src/color/index.ts +1 -0
- package/src/color/intl/index.ts +38 -3
- package/src/color/types.ts +1 -1
- package/src/combobox/createComboBoxState.ts +530 -297
- package/src/combobox/index.ts +4 -0
- package/src/data/createAsyncList.ts +41 -6
- package/src/data/createListData.ts +27 -4
- package/src/data/createTreeData.ts +30 -6
- package/src/disclosure/createDisclosureState.ts +40 -19
- package/src/dnd/createDragState.ts +22 -4
- package/src/dnd/createDraggableCollectionState.ts +145 -11
- package/src/dnd/createDropState.ts +21 -3
- package/src/dnd/createDroppableCollectionState.ts +127 -11
- package/src/dnd/index.ts +4 -0
- package/src/dnd/types.ts +16 -0
- package/src/form/createFormValidationState.ts +69 -37
- package/src/grid/createGridState.ts +196 -111
- package/src/grid/types.ts +22 -1
- package/src/index.ts +33 -2
- package/src/menu/index.ts +7 -0
- package/src/numberfield/createNumberFieldState.ts +247 -98
- package/src/overlays/createOverlayTriggerState.ts +31 -4
- package/src/private/flags/flags.ts +25 -0
- package/src/radio/createRadioGroupState.ts +23 -6
- package/src/searchfield/createSearchFieldState.ts +18 -3
- package/src/select/createSelectState.ts +317 -130
- package/src/select/index.ts +8 -1
- package/src/selection/Selection.ts +15 -1
- package/src/selection/SelectionManager.ts +17 -1
- package/src/selection/createMultipleSelectionState.ts +45 -26
- package/src/slider/createSliderState.ts +243 -104
- package/src/ssr/index.ts +34 -4
- package/src/steplist/createStepListState.ts +184 -130
- package/src/table/TableCollection.ts +14 -0
- package/src/table/createTableColumnResizeState.ts +71 -14
- package/src/table/createTableState.ts +26 -4
- package/src/table/createTreeGridState.ts +22 -6
- package/src/table/types.ts +38 -5
- package/src/tabs/createTabListState.ts +63 -43
- 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 +499 -0
- package/src/tokenfield/createTokenFieldState.ts +88 -0
- package/src/tokenfield/index.ts +15 -0
- package/src/tooltip/createTooltipTriggerState.ts +49 -13
- package/src/tree/TreeCollection.ts +14 -0
- package/src/tree/createTreeState.ts +70 -36
- package/src/tree/types.ts +18 -1
- package/src/utils/index.ts +10 -1
- package/src/utils/owner.ts +20 -0
- package/src/utils/reactivity.ts +53 -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/createTreeState.d.ts.map +0 -1
- 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/tooltip/useTooltipTriggerState.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* Manages state for a tooltip trigger.
|
|
3
17
|
* Based on @react-stately/tooltip useTooltipTriggerState.
|
|
@@ -6,9 +20,11 @@
|
|
|
6
20
|
* Ensures only one tooltip is open at a time and controls the delay for showing a tooltip.
|
|
7
21
|
*/
|
|
8
22
|
|
|
9
|
-
import {
|
|
23
|
+
import { flush, onCleanup } from "solid-js";
|
|
24
|
+
import type { Accessor } from "solid-js";
|
|
10
25
|
import { createOverlayTriggerState, type OverlayTriggerProps } from "../overlays";
|
|
11
26
|
import { isServer } from "../ssr";
|
|
27
|
+
import { createInternalSignal } from "../utils";
|
|
12
28
|
|
|
13
29
|
// Default delays (in ms)
|
|
14
30
|
const TOOLTIP_DELAY = 1500;
|
|
@@ -19,11 +35,18 @@ export interface TooltipTriggerProps extends OverlayTriggerProps {
|
|
|
19
35
|
delay?: number;
|
|
20
36
|
/** The delay time in milliseconds for the tooltip to close. */
|
|
21
37
|
closeDelay?: number;
|
|
38
|
+
/** Whether the tooltip trigger is disabled. */
|
|
39
|
+
isDisabled?: boolean;
|
|
22
40
|
}
|
|
23
41
|
|
|
24
42
|
export interface TooltipTriggerState {
|
|
25
43
|
/** Whether the tooltip is currently showing. */
|
|
26
44
|
readonly isOpen: Accessor<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the tooltip is being shown or hidden without an animation. True while
|
|
47
|
+
* the global warmup timer is active, i.e. when quickly moving between tooltips.
|
|
48
|
+
*/
|
|
49
|
+
readonly shouldSkipAnimation: Accessor<boolean>;
|
|
27
50
|
/**
|
|
28
51
|
* Shows the tooltip. By default, the tooltip becomes visible after a delay
|
|
29
52
|
* depending on a global warmup timer. The `immediate` option shows the
|
|
@@ -35,7 +58,7 @@ export interface TooltipTriggerState {
|
|
|
35
58
|
}
|
|
36
59
|
|
|
37
60
|
// Global state for coordinating tooltips
|
|
38
|
-
let tooltips: Record<string, (immediate?: boolean) => void> = {};
|
|
61
|
+
let tooltips: Record<string, (immediate?: boolean, instant?: boolean) => void> = {};
|
|
39
62
|
let tooltipId = 0;
|
|
40
63
|
let globalWarmedUp = false;
|
|
41
64
|
let globalWarmUpTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
@@ -70,9 +93,12 @@ export function createTooltipTriggerState(props: TooltipTriggerProps = {}): Tool
|
|
|
70
93
|
|
|
71
94
|
const overlayState = createOverlayTriggerState(props);
|
|
72
95
|
const id = `tooltip-${++tooltipId}`;
|
|
96
|
+
const [shouldSkipAnimation, setShouldSkipAnimation] = createInternalSignal(false);
|
|
73
97
|
|
|
74
98
|
let closeTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
75
|
-
|
|
99
|
+
// Solid 2 treats a function initializer as a writable memo, so keep the
|
|
100
|
+
// close target as a plain binding rather than a function-valued signal.
|
|
101
|
+
let closeFn = overlayState.close;
|
|
76
102
|
|
|
77
103
|
const ensureTooltipEntry = () => {
|
|
78
104
|
tooltips[id] = hideTooltip;
|
|
@@ -81,21 +107,30 @@ export function createTooltipTriggerState(props: TooltipTriggerProps = {}): Tool
|
|
|
81
107
|
const closeOpenTooltips = () => {
|
|
82
108
|
for (const hideTooltipId in tooltips) {
|
|
83
109
|
if (hideTooltipId !== id) {
|
|
84
|
-
tooltips[hideTooltipId](true);
|
|
110
|
+
tooltips[hideTooltipId](true, true);
|
|
85
111
|
delete tooltips[hideTooltipId];
|
|
86
112
|
}
|
|
87
113
|
}
|
|
88
114
|
};
|
|
89
115
|
|
|
90
|
-
const showTooltip = () => {
|
|
116
|
+
const showTooltip = (instant?: boolean) => {
|
|
91
117
|
if (closeTimeout) {
|
|
92
118
|
clearTimeout(closeTimeout);
|
|
93
119
|
closeTimeout = null;
|
|
94
120
|
}
|
|
95
121
|
closeOpenTooltips();
|
|
96
122
|
ensureTooltipEntry();
|
|
123
|
+
setShouldSkipAnimation(!!instant);
|
|
97
124
|
globalWarmedUp = true;
|
|
98
125
|
overlayState.open();
|
|
126
|
+
// Timer callbacks and event handlers can flush. Overlay `Show` otherwise
|
|
127
|
+
// stays unmounted until a later microtask (fake-timer tests read the DOM
|
|
128
|
+
// in the same turn as `advanceTimersByTime`).
|
|
129
|
+
try {
|
|
130
|
+
flush();
|
|
131
|
+
} catch {
|
|
132
|
+
// Ignore: flush is forbidden inside createEffect apply / createTrackedEffect.
|
|
133
|
+
}
|
|
99
134
|
|
|
100
135
|
if (globalWarmUpTimeout) {
|
|
101
136
|
clearTimeout(globalWarmUpTimeout);
|
|
@@ -107,17 +142,18 @@ export function createTooltipTriggerState(props: TooltipTriggerProps = {}): Tool
|
|
|
107
142
|
}
|
|
108
143
|
};
|
|
109
144
|
|
|
110
|
-
const hideTooltip = (immediate?: boolean) => {
|
|
145
|
+
const hideTooltip = (immediate?: boolean, instant?: boolean) => {
|
|
146
|
+
setShouldSkipAnimation(!!instant);
|
|
111
147
|
if (immediate || closeDelay() <= 0) {
|
|
112
148
|
if (closeTimeout) {
|
|
113
149
|
clearTimeout(closeTimeout);
|
|
114
150
|
closeTimeout = null;
|
|
115
151
|
}
|
|
116
|
-
|
|
152
|
+
closeFn();
|
|
117
153
|
} else if (!closeTimeout) {
|
|
118
154
|
closeTimeout = setTimeout(() => {
|
|
119
155
|
closeTimeout = null;
|
|
120
|
-
|
|
156
|
+
closeFn();
|
|
121
157
|
}, closeDelay());
|
|
122
158
|
}
|
|
123
159
|
|
|
@@ -149,15 +185,14 @@ export function createTooltipTriggerState(props: TooltipTriggerProps = {}): Tool
|
|
|
149
185
|
globalWarmUpTimeout = setTimeout(() => {
|
|
150
186
|
globalWarmUpTimeout = null;
|
|
151
187
|
globalWarmedUp = true;
|
|
152
|
-
showTooltip();
|
|
188
|
+
showTooltip(false);
|
|
153
189
|
}, delay());
|
|
154
190
|
} else if (!overlayState.isOpen()) {
|
|
155
|
-
showTooltip();
|
|
191
|
+
showTooltip(true);
|
|
156
192
|
}
|
|
157
193
|
};
|
|
158
194
|
|
|
159
|
-
|
|
160
|
-
setCloseCallback(() => overlayState.close);
|
|
195
|
+
closeFn = overlayState.close;
|
|
161
196
|
|
|
162
197
|
// Cleanup on unmount
|
|
163
198
|
onCleanup(() => {
|
|
@@ -171,12 +206,13 @@ export function createTooltipTriggerState(props: TooltipTriggerProps = {}): Tool
|
|
|
171
206
|
|
|
172
207
|
return {
|
|
173
208
|
isOpen: overlayState.isOpen,
|
|
209
|
+
shouldSkipAnimation,
|
|
174
210
|
open: (immediate?: boolean) => {
|
|
175
211
|
if (isServer) return;
|
|
176
212
|
if (!immediate && delay() > 0 && !closeTimeout) {
|
|
177
213
|
warmupTooltip();
|
|
178
214
|
} else {
|
|
179
|
-
showTooltip();
|
|
215
|
+
showTooltip(true);
|
|
180
216
|
}
|
|
181
217
|
},
|
|
182
218
|
close: hideTooltip,
|
|
@@ -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/tree/TreeCollection.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* TreeCollection implementation.
|
|
3
17
|
* Based on @react-stately/tree/TreeCollection.
|
|
@@ -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/tree/useTreeState.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* Tree state management for Tree components.
|
|
3
17
|
* Based on @react-stately/tree/useTreeState.
|
|
@@ -5,18 +19,19 @@
|
|
|
5
19
|
* Manages expansion state, selection, and focus for hierarchical tree data.
|
|
6
20
|
*/
|
|
7
21
|
|
|
8
|
-
import {
|
|
22
|
+
import { createEffect, createMemo } from "solid-js";
|
|
9
23
|
import type { TreeState, TreeStateOptions, TreeCollection } from "./types";
|
|
10
24
|
import type { Key, FocusStrategy, Selection, SelectionBehavior } from "../collections/types";
|
|
25
|
+
import { createInternalSignal, propsAccessor, type MaybeAccessor } from "../utils";
|
|
11
26
|
|
|
12
27
|
/**
|
|
13
28
|
* Creates state management for a tree component.
|
|
14
29
|
* Handles expansion, selection, focus management, and keyboard navigation state.
|
|
15
30
|
*/
|
|
16
31
|
export function createTreeState<T extends object, C extends TreeCollection<T> = TreeCollection<T>>(
|
|
17
|
-
options:
|
|
32
|
+
options: MaybeAccessor<TreeStateOptions<T, C>>,
|
|
18
33
|
): TreeState<T, C> {
|
|
19
|
-
const getOptions = (
|
|
34
|
+
const getOptions = propsAccessor(options);
|
|
20
35
|
|
|
21
36
|
// Disabled keys as a Set
|
|
22
37
|
const disabledKeys = createMemo(() => {
|
|
@@ -25,18 +40,19 @@ export function createTreeState<T extends object, C extends TreeCollection<T> =
|
|
|
25
40
|
});
|
|
26
41
|
|
|
27
42
|
// Expansion state (uncontrolled)
|
|
28
|
-
const [internalExpandedKeys, setInternalExpandedKeys] =
|
|
43
|
+
const [internalExpandedKeys, setInternalExpandedKeys] = createInternalSignal<Set<Key>>(
|
|
29
44
|
getInitialExpandedKeys(getOptions().defaultExpandedKeys),
|
|
30
45
|
);
|
|
31
46
|
|
|
32
|
-
//
|
|
33
|
-
|
|
47
|
+
// Live expanded keys (controlled or uncontrolled). A wrapping createMemo
|
|
48
|
+
// would hide createInternalSignal writes until flush().
|
|
49
|
+
const expandedKeys = (): Set<Key> => {
|
|
34
50
|
const opts = getOptions();
|
|
35
51
|
if (opts.expandedKeys !== undefined) {
|
|
36
52
|
return new Set(opts.expandedKeys);
|
|
37
53
|
}
|
|
38
54
|
return internalExpandedKeys();
|
|
39
|
-
}
|
|
55
|
+
};
|
|
40
56
|
|
|
41
57
|
// Collection - rebuilt when expanded keys change
|
|
42
58
|
const collection = createMemo(() => {
|
|
@@ -45,61 +61,79 @@ export function createTreeState<T extends object, C extends TreeCollection<T> =
|
|
|
45
61
|
});
|
|
46
62
|
|
|
47
63
|
// Focus state
|
|
48
|
-
const [isFocused, setIsFocused] =
|
|
49
|
-
const [focusedKey, setFocusedKeyInternal] =
|
|
50
|
-
const [childFocusStrategy, setChildFocusStrategy] =
|
|
51
|
-
|
|
64
|
+
const [isFocused, setIsFocused] = createInternalSignal(false);
|
|
65
|
+
const [focusedKey, setFocusedKeyInternal] = createInternalSignal<Key | null>(null);
|
|
66
|
+
const [childFocusStrategy, setChildFocusStrategy] = createInternalSignal<FocusStrategy | null>(
|
|
67
|
+
null,
|
|
68
|
+
);
|
|
69
|
+
const [isKeyboardNavigationDisabled, setKeyboardNavigationDisabled] = createInternalSignal(false);
|
|
52
70
|
|
|
53
71
|
// Selection state
|
|
54
|
-
const [internalSelectedKeys, setInternalSelectedKeys] =
|
|
72
|
+
const [internalSelectedKeys, setInternalSelectedKeys] = createInternalSignal<"all" | Set<Key>>(
|
|
55
73
|
getInitialSelection(getOptions().defaultSelectedKeys),
|
|
56
74
|
);
|
|
57
|
-
const [anchorKey, setAnchorKey] =
|
|
75
|
+
const [anchorKey, setAnchorKey] = createInternalSignal<Key | null>(null);
|
|
58
76
|
|
|
59
77
|
// Computed selection
|
|
60
|
-
const selectedKeys =
|
|
78
|
+
const selectedKeys = (): "all" | Set<Key> => {
|
|
61
79
|
const opts = getOptions();
|
|
62
80
|
if (opts.selectedKeys !== undefined) {
|
|
63
81
|
return normalizeSelection(opts.selectedKeys);
|
|
64
82
|
}
|
|
65
83
|
return internalSelectedKeys();
|
|
66
|
-
}
|
|
84
|
+
};
|
|
67
85
|
|
|
68
86
|
const selectionMode = createMemo(() => getOptions().selectionMode ?? "none");
|
|
69
87
|
const selectionBehaviorProp = (): SelectionBehavior => getOptions().selectionBehavior ?? "toggle";
|
|
70
88
|
const [selectionBehaviorState, setSelectionBehaviorState] =
|
|
71
|
-
|
|
89
|
+
createInternalSignal<SelectionBehavior>(selectionBehaviorProp());
|
|
72
90
|
const selectionBehavior = createMemo(() => selectionBehaviorState());
|
|
73
91
|
const disallowEmptySelection = createMemo(() => getOptions().disallowEmptySelection ?? false);
|
|
74
92
|
const disabledBehavior = createMemo(() => getOptions().disabledBehavior ?? "all");
|
|
75
93
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
selectionBehaviorProp() === "replace" &&
|
|
82
|
-
selectionBehaviorState() === "toggle" &&
|
|
83
|
-
keys !== "all" &&
|
|
84
|
-
keys.size === 0
|
|
85
|
-
) {
|
|
86
|
-
setSelectionBehaviorState("replace");
|
|
94
|
+
let lastSelectionBehavior = selectionBehaviorProp();
|
|
95
|
+
createEffect(selectionBehaviorProp, (behavior) => {
|
|
96
|
+
if (behavior !== lastSelectionBehavior) {
|
|
97
|
+
setSelectionBehaviorState(behavior);
|
|
98
|
+
lastSelectionBehavior = behavior;
|
|
87
99
|
}
|
|
88
100
|
});
|
|
89
101
|
|
|
102
|
+
createEffect(
|
|
103
|
+
() => ({
|
|
104
|
+
prop: selectionBehaviorProp(),
|
|
105
|
+
keys: selectedKeys(),
|
|
106
|
+
}),
|
|
107
|
+
({ prop, keys }) => {
|
|
108
|
+
if (
|
|
109
|
+
prop === "replace" &&
|
|
110
|
+
selectionBehaviorState() === "toggle" &&
|
|
111
|
+
keys !== "all" &&
|
|
112
|
+
keys.size === 0
|
|
113
|
+
) {
|
|
114
|
+
setSelectionBehaviorState("replace");
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
);
|
|
118
|
+
|
|
90
119
|
// Set focused key
|
|
91
120
|
const setFocusedKey = (key: Key | null, strategy: FocusStrategy = "first") => {
|
|
92
121
|
setFocusedKeyInternal(key);
|
|
93
122
|
setChildFocusStrategy(strategy);
|
|
94
123
|
};
|
|
95
124
|
|
|
96
|
-
// Reset focused key if the item is removed from visible collection
|
|
97
|
-
|
|
125
|
+
// Reset focused key if the item is removed from visible collection.
|
|
126
|
+
// Seed the cache at factory time so the first flushed effect run can
|
|
127
|
+
// still see a collapse/removal.
|
|
128
|
+
let cachedCollection: C | null = collection();
|
|
98
129
|
|
|
99
130
|
createEffect(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
131
|
+
() => ({
|
|
132
|
+
coll: collection(),
|
|
133
|
+
currentFocusedKey: focusedKey(),
|
|
134
|
+
disabled: disabledKeys(),
|
|
135
|
+
}),
|
|
136
|
+
({ coll, currentFocusedKey, disabled }) => {
|
|
103
137
|
if (currentFocusedKey != null && cachedCollection) {
|
|
104
138
|
// Check if the focused item is still visible
|
|
105
139
|
const visibleKeys = [...coll.getKeys()];
|
|
@@ -124,7 +158,7 @@ export function createTreeState<T extends object, C extends TreeCollection<T> =
|
|
|
124
158
|
if (cachedNode?.rowIndex !== undefined) {
|
|
125
159
|
const newIndex = Math.min(cachedNode.rowIndex, rows.length - 1);
|
|
126
160
|
const newNode = rows[newIndex];
|
|
127
|
-
if (newNode && !
|
|
161
|
+
if (newNode && !disabled.has(newNode.key)) {
|
|
128
162
|
setFocusedKeyInternal(newNode.key);
|
|
129
163
|
cachedCollection = coll;
|
|
130
164
|
return;
|
|
@@ -132,7 +166,7 @@ export function createTreeState<T extends object, C extends TreeCollection<T> =
|
|
|
132
166
|
}
|
|
133
167
|
// Fall back to first non-disabled item
|
|
134
168
|
for (const row of rows) {
|
|
135
|
-
if (!
|
|
169
|
+
if (!disabled.has(row.key)) {
|
|
136
170
|
setFocusedKeyInternal(row.key);
|
|
137
171
|
break;
|
|
138
172
|
}
|
|
@@ -144,7 +178,7 @@ export function createTreeState<T extends object, C extends TreeCollection<T> =
|
|
|
144
178
|
}
|
|
145
179
|
|
|
146
180
|
cachedCollection = coll;
|
|
147
|
-
}
|
|
181
|
+
},
|
|
148
182
|
);
|
|
149
183
|
|
|
150
184
|
// Selection methods
|
|
@@ -240,7 +274,7 @@ export function createTreeState<T extends object, C extends TreeCollection<T> =
|
|
|
240
274
|
return;
|
|
241
275
|
}
|
|
242
276
|
|
|
243
|
-
const anchor = anchorKey();
|
|
277
|
+
const anchor = anchorKey() ?? focusedKey();
|
|
244
278
|
if (!anchor) {
|
|
245
279
|
replaceSelection(toKey);
|
|
246
280
|
return;
|
package/src/tree/types.ts
CHANGED
|
@@ -1,6 +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/tree/TreeCollection.ts
|
|
14
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/tree/useTreeState.ts
|
|
15
|
+
|
|
1
16
|
/**
|
|
2
17
|
* Tree collection types for Tree components.
|
|
3
|
-
*
|
|
18
|
+
* Ported from:
|
|
19
|
+
* - packages/react-stately/src/tree/TreeCollection.ts
|
|
20
|
+
* - packages/react-stately/src/tree/useTreeState.ts
|
|
4
21
|
*/
|
|
5
22
|
|
|
6
23
|
import type { Key, FocusStrategy, Selection, SelectionBehavior } from "../collections/types";
|
package/src/utils/index.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {
|
|
2
|
+
access,
|
|
3
|
+
createInternalSignal,
|
|
4
|
+
isAccessor,
|
|
5
|
+
propsAccessor,
|
|
6
|
+
readNow,
|
|
7
|
+
type MaybeAccessor,
|
|
8
|
+
type MaybeAccessorValue,
|
|
9
|
+
} from "./reactivity";
|
|
10
|
+
export { useContextOptional } from "./owner";
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid 2 owner guards. `useContext` throws when there is no reactive root,
|
|
3
|
+
* even if the context has a default — hook factories (and tests) call
|
|
4
|
+
* `createFormValidationState` outside a component.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { getOwner, useContext } from "solid-js";
|
|
8
|
+
import type { Context } from "solid-js";
|
|
9
|
+
|
|
10
|
+
/** Read context, or the context default, when called with no owner. */
|
|
11
|
+
export function useContextOptional<T>(context: Context<T>): T {
|
|
12
|
+
if (!getOwner()) {
|
|
13
|
+
return context.defaultValue as T;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
return useContext(context);
|
|
17
|
+
} catch {
|
|
18
|
+
return context.defaultValue as T;
|
|
19
|
+
}
|
|
20
|
+
}
|
package/src/utils/reactivity.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Provides type-safe utilities for working with SolidJS reactivity patterns.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { Accessor } from "solid-js";
|
|
7
|
+
import { Accessor, createSignal, getObserver } from "solid-js";
|
|
8
|
+
import type { Signal, SignalOptions } from "solid-js";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* A value that may be either a raw value or an accessor function.
|
|
@@ -34,3 +35,54 @@ export type MaybeAccessorValue<T> = T | undefined | Accessor<T | undefined>;
|
|
|
34
35
|
export function isAccessor<T>(value: MaybeAccessor<T>): value is Accessor<T> {
|
|
35
36
|
return typeof value === "function";
|
|
36
37
|
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a props bag once. Later reads call the accessor directly, so a
|
|
41
|
+
* function-valued field such as `getKey` is never treated as the bag.
|
|
42
|
+
*/
|
|
43
|
+
export function propsAccessor<T extends object>(props: MaybeAccessor<T>): Accessor<T> {
|
|
44
|
+
return typeof props === "function" ? props : () => props;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Headless state is written from factory setup and from public setters that
|
|
49
|
+
* tests (and some call sites) invoke inside `createRoot` / a component body.
|
|
50
|
+
* Solid 2 throws on those writes unless the signal opts into `ownedWrite`.
|
|
51
|
+
*
|
|
52
|
+
* Solid 2 also hides unflushed writes from both default reads (unowned /
|
|
53
|
+
* committed snapshot) and `latest()` (A28: flush first to read your own
|
|
54
|
+
* write). Headless methods chain read-then-write in the same turn, so the
|
|
55
|
+
* getter returns a live mirror and still reads the signal for tracking.
|
|
56
|
+
*/
|
|
57
|
+
export function createInternalSignal<T>(value: T, options?: SignalOptions<T>): Signal<T> {
|
|
58
|
+
let live = value;
|
|
59
|
+
// Solid's createSignal overloads exclude Function so a function value is a
|
|
60
|
+
// writable memo. Headless state holds dates, sets, and tokens — cast through.
|
|
61
|
+
const [get, set] = createSignal(value as never, {
|
|
62
|
+
...options,
|
|
63
|
+
ownedWrite: true,
|
|
64
|
+
}) as Signal<T>;
|
|
65
|
+
const read = (() => {
|
|
66
|
+
// Track only inside a tracking scope (JSX / memo / effect compute).
|
|
67
|
+
// Calling the signal from an effect apply or unowned method is a
|
|
68
|
+
// STRICT_READ_UNTRACKED diagnostic; the live mirror is the value.
|
|
69
|
+
if (getObserver()) get();
|
|
70
|
+
return live;
|
|
71
|
+
}) as typeof get;
|
|
72
|
+
const write = ((next: T | ((prev: T) => T)) => {
|
|
73
|
+
const resolved = typeof next === "function" ? (next as (prev: T) => T)(live) : next;
|
|
74
|
+
live = resolved;
|
|
75
|
+
(set as (v: T) => T)(resolved);
|
|
76
|
+
return resolved;
|
|
77
|
+
}) as typeof set;
|
|
78
|
+
return [read, write];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Same-turn read of a headless accessor. `createInternalSignal` getters
|
|
83
|
+
* already return the live mirror; this is for call sites that used to wrap
|
|
84
|
+
* `latest()` (which does not see unflushed writes in Solid 2 rc.9).
|
|
85
|
+
*/
|
|
86
|
+
export function readNow<T>(accessor: Accessor<T>): T {
|
|
87
|
+
return accessor();
|
|
88
|
+
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createAutocompleteState - State management for autocomplete components
|
|
3
|
-
*
|
|
4
|
-
* Based on @react-stately/autocomplete useAutocompleteState.
|
|
5
|
-
*/
|
|
6
|
-
import { type Accessor } from "solid-js";
|
|
7
|
-
export interface AutocompleteState {
|
|
8
|
-
/** The current value of the autocomplete input. */
|
|
9
|
-
inputValue: Accessor<string>;
|
|
10
|
-
/** Sets the value of the autocomplete input. */
|
|
11
|
-
setInputValue(value: string): void;
|
|
12
|
-
/** The id of the current aria-activedescendant of the autocomplete input. */
|
|
13
|
-
focusedNodeId: Accessor<string | null>;
|
|
14
|
-
/** Sets the id of the current aria-activedescendant of the autocomplete input. */
|
|
15
|
-
setFocusedNodeId(value: string | null): void;
|
|
16
|
-
}
|
|
17
|
-
export interface AutocompleteStateOptions {
|
|
18
|
-
/** The value of the autocomplete input (controlled). */
|
|
19
|
-
inputValue?: string;
|
|
20
|
-
/** The default value of the autocomplete input (uncontrolled). */
|
|
21
|
-
defaultInputValue?: string;
|
|
22
|
-
/** Handler that is called when the autocomplete input value changes. */
|
|
23
|
-
onInputChange?: (value: string) => void;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Provides state management for an autocomplete component.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* ```tsx
|
|
30
|
-
* const state = createAutocompleteState({
|
|
31
|
-
* defaultInputValue: '',
|
|
32
|
-
* onInputChange: (value) => console.log('Input changed:', value),
|
|
33
|
-
* });
|
|
34
|
-
*
|
|
35
|
-
* // Access current input value
|
|
36
|
-
* console.log(state.inputValue());
|
|
37
|
-
*
|
|
38
|
-
* // Update input value
|
|
39
|
-
* state.setInputValue('new value');
|
|
40
|
-
*
|
|
41
|
-
* // Track focused node for aria-activedescendant
|
|
42
|
-
* state.setFocusedNodeId('item-1');
|
|
43
|
-
* ```
|
|
44
|
-
*/
|
|
45
|
-
export declare function createAutocompleteState(
|
|
46
|
-
props?: AutocompleteStateOptions,
|
|
47
|
-
): AutocompleteState;
|
|
48
|
-
//# sourceMappingURL=createAutocompleteState.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createAutocompleteState.d.ts","sourceRoot":"","sources":["createAutocompleteState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAMtD,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5B,gDAAgD;IAChD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,6EAA6E;IAC7E,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,kFAAkF;IAClF,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wEAAwE;IACxE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,GAAE,wBAA6B,GACnC,iBAAiB,CA+BnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,GAC9B,MAAM,2BAA2B,CAAA"}
|