@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
package/src/combobox/index.ts
CHANGED
|
@@ -7,6 +7,10 @@ export {
|
|
|
7
7
|
defaultContainsFilter,
|
|
8
8
|
type ComboBoxState,
|
|
9
9
|
type ComboBoxStateProps,
|
|
10
|
+
type ComboBoxValidationValue,
|
|
11
|
+
type ComboBoxSelectionMode,
|
|
12
|
+
type ComboBoxValueType,
|
|
13
|
+
type ComboBoxChangeValueType,
|
|
10
14
|
type FilterFn,
|
|
11
15
|
type MenuTriggerAction,
|
|
12
16
|
type FocusStrategy,
|
|
@@ -1,12 +1,32 @@
|
|
|
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/data/useAsyncList.ts
|
|
14
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/data/useListData.ts
|
|
15
|
+
|
|
1
16
|
/**
|
|
2
17
|
* createAsyncList - SolidJS port of React Spectrum's useAsyncList
|
|
3
18
|
*
|
|
4
19
|
* Manages state for an immutable async loaded list data structure, and provides
|
|
5
20
|
* convenience methods to update the data over time. Manages loading and error
|
|
6
21
|
* states, pagination, and sorting.
|
|
22
|
+
*
|
|
23
|
+
* Ported from:
|
|
24
|
+
* - packages/react-stately/src/data/useAsyncList.ts
|
|
25
|
+
* - packages/react-stately/src/data/useListData.ts
|
|
7
26
|
*/
|
|
8
27
|
|
|
9
|
-
import {
|
|
28
|
+
import { untrack } from "solid-js";
|
|
29
|
+
import { createInternalSignal } from "../utils";
|
|
10
30
|
|
|
11
31
|
export type Key = string | number;
|
|
12
32
|
export type Selection = "all" | Set<Key>;
|
|
@@ -149,7 +169,7 @@ export function createAsyncList<T, C = string>(options: AsyncListOptions<T, C>):
|
|
|
149
169
|
initialFilterText = "",
|
|
150
170
|
} = options;
|
|
151
171
|
|
|
152
|
-
const [state, setState] =
|
|
172
|
+
const [state, setState] = createInternalSignal<InternalState<T, C>>({
|
|
153
173
|
loadingState: "idle",
|
|
154
174
|
items: [],
|
|
155
175
|
selectedKeys: initialSelectedKeys === "all" ? "all" : new Set(initialSelectedKeys || []),
|
|
@@ -320,8 +340,14 @@ export function createAsyncList<T, C = string>(options: AsyncListOptions<T, C>):
|
|
|
320
340
|
|
|
321
341
|
insertBefore(key: Key, ...values: T[]) {
|
|
322
342
|
setState((s) => {
|
|
323
|
-
|
|
324
|
-
if (index === -1)
|
|
343
|
+
let index = s.items.findIndex((item) => getKey(item) === key);
|
|
344
|
+
if (index === -1) {
|
|
345
|
+
if (s.items.length === 0) {
|
|
346
|
+
index = 0;
|
|
347
|
+
} else {
|
|
348
|
+
return s;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
325
351
|
return {
|
|
326
352
|
...s,
|
|
327
353
|
items: [...s.items.slice(0, index), ...values, ...s.items.slice(index)],
|
|
@@ -331,8 +357,14 @@ export function createAsyncList<T, C = string>(options: AsyncListOptions<T, C>):
|
|
|
331
357
|
|
|
332
358
|
insertAfter(key: Key, ...values: T[]) {
|
|
333
359
|
setState((s) => {
|
|
334
|
-
|
|
335
|
-
if (index === -1)
|
|
360
|
+
let index = s.items.findIndex((item) => getKey(item) === key);
|
|
361
|
+
if (index === -1) {
|
|
362
|
+
if (s.items.length === 0) {
|
|
363
|
+
index = 0;
|
|
364
|
+
} else {
|
|
365
|
+
return s;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
336
368
|
return {
|
|
337
369
|
...s,
|
|
338
370
|
items: [...s.items.slice(0, index + 1), ...values, ...s.items.slice(index + 1)],
|
|
@@ -360,6 +392,9 @@ export function createAsyncList<T, C = string>(options: AsyncListOptions<T, C>):
|
|
|
360
392
|
}
|
|
361
393
|
selectedKeys = newSelection;
|
|
362
394
|
}
|
|
395
|
+
if (s.cursor == null && items.length === 0) {
|
|
396
|
+
selectedKeys = new Set();
|
|
397
|
+
}
|
|
363
398
|
return { ...s, items, selectedKeys };
|
|
364
399
|
});
|
|
365
400
|
},
|
|
@@ -1,11 +1,28 @@
|
|
|
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/data/useListData.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* createListData - SolidJS port of React Spectrum's useListData
|
|
3
17
|
*
|
|
4
18
|
* Manages state for an immutable list data structure, and provides
|
|
5
19
|
* convenience methods to update the data over time.
|
|
20
|
+
*
|
|
21
|
+
* Ported from packages/react-stately/src/data/useListData.ts.
|
|
6
22
|
*/
|
|
7
23
|
|
|
8
|
-
import {
|
|
24
|
+
import { createMemo } from "solid-js";
|
|
25
|
+
import { createInternalSignal } from "../utils";
|
|
9
26
|
|
|
10
27
|
export type Key = string | number;
|
|
11
28
|
export type Selection = "all" | Set<Key>;
|
|
@@ -88,7 +105,7 @@ export function createListData<T>(options: ListOptions<T>): ListData<T> {
|
|
|
88
105
|
initialFilterText = "",
|
|
89
106
|
} = options;
|
|
90
107
|
|
|
91
|
-
const [state, setState] =
|
|
108
|
+
const [state, setState] = createInternalSignal<ListState<T>>({
|
|
92
109
|
items: initialItems,
|
|
93
110
|
selectedKeys: initialSelectedKeys === "all" ? "all" : new Set(initialSelectedKeys || []),
|
|
94
111
|
filterText: initialFilterText,
|
|
@@ -148,8 +165,14 @@ export function createListData<T>(options: ListOptions<T>): ListData<T> {
|
|
|
148
165
|
|
|
149
166
|
insertBefore(key: Key, ...values: T[]) {
|
|
150
167
|
setState((s) => {
|
|
151
|
-
|
|
152
|
-
if (index === -1)
|
|
168
|
+
let index = s.items.findIndex((item) => getKey(item) === key);
|
|
169
|
+
if (index === -1) {
|
|
170
|
+
if (s.items.length === 0) {
|
|
171
|
+
index = 0;
|
|
172
|
+
} else {
|
|
173
|
+
return s;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
153
176
|
return insertItems(s, index, ...values);
|
|
154
177
|
});
|
|
155
178
|
},
|
|
@@ -1,11 +1,27 @@
|
|
|
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/data/useTreeData.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* createTreeData - SolidJS port of React Spectrum's useTreeData
|
|
3
17
|
*
|
|
4
18
|
* Manages state for an immutable tree data structure, and provides
|
|
5
19
|
* convenience methods to update the data over time.
|
|
20
|
+
*
|
|
21
|
+
* Ported from packages/react-stately/src/data/useTreeData.ts.
|
|
6
22
|
*/
|
|
7
23
|
|
|
8
|
-
import {
|
|
24
|
+
import { createInternalSignal } from "../utils";
|
|
9
25
|
|
|
10
26
|
export type Key = string | number;
|
|
11
27
|
export type Selection = "all" | Set<Key>;
|
|
@@ -94,8 +110,8 @@ export function createTreeData<T>(options: TreeOptions<T>): TreeData<T> {
|
|
|
94
110
|
// Build initial tree
|
|
95
111
|
const initialTree = buildTree(initialItems, new Map(), null, getKey, getChildren);
|
|
96
112
|
|
|
97
|
-
const [treeState, setTreeState] =
|
|
98
|
-
const [selectedKeys, setSelectedKeys] =
|
|
113
|
+
const [treeState, setTreeState] = createInternalSignal<TreeDataState<T>>(initialTree);
|
|
114
|
+
const [selectedKeys, setSelectedKeys] = createInternalSignal<Selection>(
|
|
99
115
|
initialSelectedKeys === "all" ? "all" : new Set(initialSelectedKeys || []),
|
|
100
116
|
);
|
|
101
117
|
|
|
@@ -329,6 +345,11 @@ export function createTreeData<T>(options: TreeOptions<T>): TreeData<T> {
|
|
|
329
345
|
},
|
|
330
346
|
|
|
331
347
|
remove(...keys: Key[]) {
|
|
348
|
+
if (keys.length === 0) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
let nextMap: Map<Key, TreeNode<T>> | undefined;
|
|
332
353
|
setTreeState((state) => {
|
|
333
354
|
let { items, nodeMap } = state;
|
|
334
355
|
let newMap = new Map(nodeMap);
|
|
@@ -340,14 +361,17 @@ export function createTreeData<T>(options: TreeOptions<T>): TreeData<T> {
|
|
|
340
361
|
newMap = result.nodeMap;
|
|
341
362
|
}
|
|
342
363
|
|
|
364
|
+
nextMap = newMap;
|
|
343
365
|
return { items: newItems, nodeMap: newMap };
|
|
344
366
|
});
|
|
345
367
|
|
|
346
368
|
setSelectedKeys((sel) => {
|
|
347
|
-
if (sel === "all") return sel;
|
|
369
|
+
if (sel === "all" || !nextMap) return sel;
|
|
348
370
|
const newSel = new Set(sel);
|
|
349
|
-
for (const key of
|
|
350
|
-
|
|
371
|
+
for (const key of sel) {
|
|
372
|
+
if (!nextMap.has(key)) {
|
|
373
|
+
newSel.delete(key);
|
|
374
|
+
}
|
|
351
375
|
}
|
|
352
376
|
return newSel;
|
|
353
377
|
});
|
|
@@ -1,10 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 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/disclosure/useDisclosureGroupState.ts
|
|
14
|
+
// Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/disclosure/useDisclosureState.ts
|
|
15
|
+
|
|
1
16
|
/**
|
|
2
17
|
* Disclosure state management for SolidJS
|
|
3
18
|
* Based on @react-stately/disclosure useDisclosureState and useDisclosureGroupState
|
|
4
19
|
*/
|
|
5
20
|
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
21
|
+
import { createEffect, createMemo } from "solid-js";
|
|
22
|
+
import type { Accessor } from "solid-js";
|
|
23
|
+
import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
|
|
8
24
|
|
|
9
25
|
export interface DisclosureStateProps {
|
|
10
26
|
/** Whether the disclosure is expanded (controlled). */
|
|
@@ -37,7 +53,7 @@ export function createDisclosureState(
|
|
|
37
53
|
): DisclosureState {
|
|
38
54
|
const propsAccessor = () => access(props);
|
|
39
55
|
|
|
40
|
-
const [internalExpanded, setInternalExpanded] =
|
|
56
|
+
const [internalExpanded, setInternalExpanded] = createInternalSignal(
|
|
41
57
|
propsAccessor().defaultExpanded ?? false,
|
|
42
58
|
);
|
|
43
59
|
|
|
@@ -106,7 +122,7 @@ export function createDisclosureGroupState(
|
|
|
106
122
|
): DisclosureGroupState {
|
|
107
123
|
const propsAccessor = () => access(props);
|
|
108
124
|
|
|
109
|
-
const [internalKeys, setInternalKeys] =
|
|
125
|
+
const [internalKeys, setInternalKeys] = createInternalSignal<Set<Key>>(
|
|
110
126
|
new Set(propsAccessor().defaultExpandedKeys ?? []),
|
|
111
127
|
);
|
|
112
128
|
|
|
@@ -124,26 +140,31 @@ export function createDisclosureGroupState(
|
|
|
124
140
|
};
|
|
125
141
|
|
|
126
142
|
// Ensure only one item is expanded if allowsMultipleExpanded is false.
|
|
127
|
-
createEffect(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
143
|
+
createEffect(
|
|
144
|
+
() => {
|
|
145
|
+
const p = propsAccessor();
|
|
146
|
+
return {
|
|
147
|
+
allowsMultiple: p.allowsMultipleExpanded ?? false,
|
|
148
|
+
keys: expandedKeys(),
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
({ allowsMultiple, keys }) => {
|
|
152
|
+
if (!allowsMultiple && keys.size > 1) {
|
|
153
|
+
// Defer the update to avoid an infinite effect loop
|
|
154
|
+
const firstKey = keys.values().next().value;
|
|
155
|
+
if (firstKey != null) {
|
|
156
|
+
queueMicrotask(() => {
|
|
157
|
+
setExpandedKeys(new Set([firstKey]));
|
|
158
|
+
});
|
|
159
|
+
}
|
|
139
160
|
}
|
|
140
|
-
}
|
|
141
|
-
|
|
161
|
+
},
|
|
162
|
+
);
|
|
142
163
|
|
|
143
164
|
const toggleKey = (key: Key) => {
|
|
144
165
|
const p = propsAccessor();
|
|
145
166
|
const allowsMultiple = p.allowsMultipleExpanded ?? false;
|
|
146
|
-
const currentKeys = expandedKeys();
|
|
167
|
+
const currentKeys = p.expandedKeys !== undefined ? expandedKeys() : readNow(internalKeys);
|
|
147
168
|
|
|
148
169
|
let newKeys: Set<Key>;
|
|
149
170
|
if (allowsMultiple) {
|
|
@@ -1,10 +1,28 @@
|
|
|
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-aria/src/dnd/useDrag.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* Drag state management for solid-stately.
|
|
3
17
|
*
|
|
4
18
|
* Provides reactive state for drag operations.
|
|
19
|
+
*
|
|
20
|
+
* Ported from packages/react-aria/src/dnd/useDrag.ts.
|
|
5
21
|
*/
|
|
6
22
|
|
|
7
|
-
import {
|
|
23
|
+
import { createMemo } from "solid-js";
|
|
24
|
+
import type { Accessor } from "solid-js";
|
|
25
|
+
import { createInternalSignal, readNow } from "../utils";
|
|
8
26
|
import type {
|
|
9
27
|
DragItem,
|
|
10
28
|
DragStartEvent,
|
|
@@ -65,7 +83,7 @@ export interface DragState {
|
|
|
65
83
|
export function createDragState(props: Accessor<DragStateOptions>): DragState {
|
|
66
84
|
const getProps = createMemo(() => props());
|
|
67
85
|
|
|
68
|
-
const [isDragging, setIsDragging] =
|
|
86
|
+
const [isDragging, setIsDragging] = createInternalSignal(false);
|
|
69
87
|
|
|
70
88
|
const startDrag = (x: number, y: number) => {
|
|
71
89
|
const p = getProps();
|
|
@@ -84,7 +102,7 @@ export function createDragState(props: Accessor<DragStateOptions>): DragState {
|
|
|
84
102
|
|
|
85
103
|
const moveDrag = (x: number, y: number) => {
|
|
86
104
|
const p = getProps();
|
|
87
|
-
if (!isDragging
|
|
105
|
+
if (!readNow(isDragging) || p.isDisabled) return;
|
|
88
106
|
|
|
89
107
|
if (typeof p.onDragMove === "function") {
|
|
90
108
|
p.onDragMove({
|
|
@@ -97,7 +115,7 @@ export function createDragState(props: Accessor<DragStateOptions>): DragState {
|
|
|
97
115
|
|
|
98
116
|
const endDrag = (x: number, y: number, dropOperation: DropOperation) => {
|
|
99
117
|
const p = getProps();
|
|
100
|
-
if (!isDragging
|
|
118
|
+
if (!readNow(isDragging)) return;
|
|
101
119
|
|
|
102
120
|
setIsDragging(false);
|
|
103
121
|
|
|
@@ -1,10 +1,28 @@
|
|
|
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/dnd/useDraggableCollectionState.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* Draggable collection state management for solid-stately.
|
|
3
17
|
*
|
|
4
18
|
* Provides reactive state for dragging items from a collection.
|
|
19
|
+
*
|
|
20
|
+
* Ported from packages/react-stately/src/dnd/useDraggableCollectionState.ts.
|
|
5
21
|
*/
|
|
6
22
|
|
|
7
|
-
import {
|
|
23
|
+
import { createMemo } from "solid-js";
|
|
24
|
+
import type { Accessor } from "solid-js";
|
|
25
|
+
import { createInternalSignal, readNow } from "../utils";
|
|
8
26
|
import type {
|
|
9
27
|
DragItem,
|
|
10
28
|
DraggableCollectionStartEvent,
|
|
@@ -14,9 +32,22 @@ import type {
|
|
|
14
32
|
DragPreviewRenderer,
|
|
15
33
|
} from "./types";
|
|
16
34
|
|
|
17
|
-
|
|
35
|
+
type DragKey = string | number;
|
|
36
|
+
|
|
37
|
+
export interface DraggableCollectionNode {
|
|
38
|
+
parentKey?: DragKey | null;
|
|
39
|
+
textValue?: string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface DraggableCollectionLike {
|
|
43
|
+
getItem(key: DragKey): DraggableCollectionNode | null | undefined;
|
|
44
|
+
getKeys?(): Iterable<DragKey>;
|
|
45
|
+
getTextValue?(key: DragKey): string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface DraggableCollectionStateOptions<_T = object> {
|
|
18
49
|
/** A function that returns the items being dragged. */
|
|
19
|
-
getItems: (keys: Set<
|
|
50
|
+
getItems: (keys: Set<DragKey>) => DragItem[];
|
|
20
51
|
/** Function that returns the allowed drop operations. */
|
|
21
52
|
getAllowedDropOperations?: () => DropOperation[];
|
|
22
53
|
/** Handler that is called when a drag operation is started. */
|
|
@@ -29,17 +60,23 @@ export interface DraggableCollectionStateOptions<T = object> {
|
|
|
29
60
|
isDisabled?: boolean;
|
|
30
61
|
/** Preview renderer function ref. */
|
|
31
62
|
preview?: { current: DragPreviewRenderer | null };
|
|
63
|
+
/** Collection used to drop selected children whose ancestors are also dragging. */
|
|
64
|
+
collection?: DraggableCollectionLike;
|
|
65
|
+
/** Currently selected keys. `"all"` drags every collection key. */
|
|
66
|
+
selectedKeys?: "all" | Iterable<DragKey>;
|
|
67
|
+
/** Returns whether `key` is selected. */
|
|
68
|
+
isSelected?: (key: DragKey) => boolean;
|
|
32
69
|
}
|
|
33
70
|
|
|
34
71
|
export interface DraggableCollectionState {
|
|
35
72
|
/** Whether items are currently being dragged. */
|
|
36
73
|
readonly isDragging: boolean;
|
|
37
74
|
/** The keys of the items being dragged. */
|
|
38
|
-
readonly draggingKeys: Set<
|
|
75
|
+
readonly draggingKeys: Set<DragKey>;
|
|
39
76
|
/** Whether dragging is disabled. */
|
|
40
77
|
readonly isDisabled: boolean;
|
|
41
78
|
/** Start a drag operation with the given keys. */
|
|
42
|
-
startDrag(keys: Set<
|
|
79
|
+
startDrag(keys: Set<DragKey>, x: number, y: number): void;
|
|
43
80
|
/** Update drag position. */
|
|
44
81
|
moveDrag(x: number, y: number): void;
|
|
45
82
|
/** End a drag operation. */
|
|
@@ -47,11 +84,89 @@ export interface DraggableCollectionState {
|
|
|
47
84
|
/** Cancel a drag operation. */
|
|
48
85
|
cancelDrag(): void;
|
|
49
86
|
/** Get the items being dragged for the given keys. */
|
|
50
|
-
getItems(keys: Set<
|
|
87
|
+
getItems(keys: Set<DragKey>): DragItem[];
|
|
51
88
|
/** Get allowed drop operations. */
|
|
52
89
|
getAllowedDropOperations(): DropOperation[];
|
|
53
90
|
/** Preview renderer. */
|
|
54
91
|
readonly preview: { current: DragPreviewRenderer | null } | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Keys that will be dragged with `key`. Mirrors RAC
|
|
94
|
+
* `useDraggableCollectionState.getKeys`: the clicked item, plus every other
|
|
95
|
+
* selected item that is not a descendant of another selected item.
|
|
96
|
+
*/
|
|
97
|
+
getKeysForDrag(key: DragKey): Set<DragKey>;
|
|
98
|
+
/** Returns whether `key` is selected. */
|
|
99
|
+
isSelected(key: DragKey): boolean;
|
|
100
|
+
/** Collection passed to the drag. Item text is read from here. */
|
|
101
|
+
readonly collection?: DraggableCollectionLike;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function selectedKeySet(
|
|
105
|
+
selectedKeys: "all" | Iterable<DragKey> | undefined,
|
|
106
|
+
collection: DraggableCollectionLike | undefined,
|
|
107
|
+
): Set<DragKey> | "all" {
|
|
108
|
+
if (selectedKeys === "all") {
|
|
109
|
+
if (!collection?.getKeys) {
|
|
110
|
+
return "all";
|
|
111
|
+
}
|
|
112
|
+
return new Set(collection.getKeys());
|
|
113
|
+
}
|
|
114
|
+
return new Set(selectedKeys ?? []);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* RAC `useDraggableCollectionState.ts` `getKeys`. The clicked item always
|
|
119
|
+
* drags. If it is selected, every selected item that is not a child of another
|
|
120
|
+
* selected item is included.
|
|
121
|
+
*/
|
|
122
|
+
export function getKeysForDrag(
|
|
123
|
+
key: DragKey,
|
|
124
|
+
options: {
|
|
125
|
+
collection?: DraggableCollectionLike;
|
|
126
|
+
selectedKeys?: "all" | Iterable<DragKey>;
|
|
127
|
+
isSelected?: (key: DragKey) => boolean;
|
|
128
|
+
},
|
|
129
|
+
): Set<DragKey> {
|
|
130
|
+
const selected = selectedKeySet(options.selectedKeys, options.collection);
|
|
131
|
+
const isSelected = options.isSelected?.(key) ?? (selected === "all" ? true : selected.has(key));
|
|
132
|
+
if (!isSelected) {
|
|
133
|
+
return new Set([key]);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const keys = new Set<DragKey>();
|
|
137
|
+
const selectedKeys = selected === "all" ? options.collection?.getKeys?.() : selected;
|
|
138
|
+
if (!selectedKeys) {
|
|
139
|
+
keys.add(key);
|
|
140
|
+
return keys;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
for (const currentKey of selectedKeys) {
|
|
144
|
+
const node = options.collection?.getItem(currentKey);
|
|
145
|
+
if (!node) {
|
|
146
|
+
keys.add(currentKey);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
let isChild = false;
|
|
150
|
+
let parentKey = node.parentKey;
|
|
151
|
+
while (parentKey != null) {
|
|
152
|
+
const parentSelected =
|
|
153
|
+
options.isSelected?.(parentKey) ?? (selected === "all" ? true : selected.has(parentKey));
|
|
154
|
+
if (parentSelected) {
|
|
155
|
+
isChild = true;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
const parentNode = options.collection?.getItem(parentKey);
|
|
159
|
+
parentKey = parentNode ? parentNode.parentKey : null;
|
|
160
|
+
}
|
|
161
|
+
if (!isChild) {
|
|
162
|
+
keys.add(currentKey);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (keys.size === 0) {
|
|
167
|
+
keys.add(key);
|
|
168
|
+
}
|
|
169
|
+
return keys;
|
|
55
170
|
}
|
|
56
171
|
|
|
57
172
|
/**
|
|
@@ -65,8 +180,8 @@ export function createDraggableCollectionState<T = object>(
|
|
|
65
180
|
): DraggableCollectionState {
|
|
66
181
|
const getProps = createMemo(() => props());
|
|
67
182
|
|
|
68
|
-
const [isDragging, setIsDragging] =
|
|
69
|
-
const [draggingKeys, setDraggingKeys] =
|
|
183
|
+
const [isDragging, setIsDragging] = createInternalSignal(false);
|
|
184
|
+
const [draggingKeys, setDraggingKeys] = createInternalSignal<Set<string | number>>(new Set());
|
|
70
185
|
|
|
71
186
|
const startDrag = (keys: Set<string | number>, x: number, y: number) => {
|
|
72
187
|
const p = getProps();
|
|
@@ -87,21 +202,21 @@ export function createDraggableCollectionState<T = object>(
|
|
|
87
202
|
|
|
88
203
|
const moveDrag = (x: number, y: number) => {
|
|
89
204
|
const p = getProps();
|
|
90
|
-
if (!isDragging
|
|
205
|
+
if (!readNow(isDragging) || p.isDisabled) return;
|
|
91
206
|
|
|
92
207
|
if (typeof p.onDragMove === "function") {
|
|
93
208
|
p.onDragMove({
|
|
94
209
|
type: "dragmove",
|
|
95
210
|
x,
|
|
96
211
|
y,
|
|
97
|
-
keys: draggingKeys
|
|
212
|
+
keys: readNow(draggingKeys),
|
|
98
213
|
});
|
|
99
214
|
}
|
|
100
215
|
};
|
|
101
216
|
|
|
102
217
|
const endDrag = (x: number, y: number, dropOperation: DropOperation, isInternal: boolean) => {
|
|
103
218
|
const p = getProps();
|
|
104
|
-
const keys = draggingKeys
|
|
219
|
+
const keys = readNow(draggingKeys);
|
|
105
220
|
|
|
106
221
|
setIsDragging(false);
|
|
107
222
|
setDraggingKeys(new Set<string | number>());
|
|
@@ -154,5 +269,24 @@ export function createDraggableCollectionState<T = object>(
|
|
|
154
269
|
cancelDrag,
|
|
155
270
|
getItems,
|
|
156
271
|
getAllowedDropOperations,
|
|
272
|
+
getKeysForDrag: (key: DragKey) => {
|
|
273
|
+
const p = getProps();
|
|
274
|
+
return getKeysForDrag(key, {
|
|
275
|
+
collection: p.collection,
|
|
276
|
+
selectedKeys: p.selectedKeys,
|
|
277
|
+
isSelected: p.isSelected,
|
|
278
|
+
});
|
|
279
|
+
},
|
|
280
|
+
isSelected: (key: DragKey) => {
|
|
281
|
+
const p = getProps();
|
|
282
|
+
if (p.isSelected) {
|
|
283
|
+
return p.isSelected(key);
|
|
284
|
+
}
|
|
285
|
+
const selected = selectedKeySet(p.selectedKeys, p.collection);
|
|
286
|
+
return selected === "all" ? true : selected.has(key);
|
|
287
|
+
},
|
|
288
|
+
get collection() {
|
|
289
|
+
return getProps().collection;
|
|
290
|
+
},
|
|
157
291
|
};
|
|
158
292
|
}
|
|
@@ -1,10 +1,28 @@
|
|
|
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-aria/src/dnd/useDrop.ts
|
|
14
|
+
|
|
1
15
|
/**
|
|
2
16
|
* Drop state management for solid-stately.
|
|
3
17
|
*
|
|
4
18
|
* Provides reactive state for drop target operations.
|
|
19
|
+
*
|
|
20
|
+
* Ported from packages/react-aria/src/dnd/useDrop.ts.
|
|
5
21
|
*/
|
|
6
22
|
|
|
7
|
-
import {
|
|
23
|
+
import { createMemo } from "solid-js";
|
|
24
|
+
import type { Accessor } from "solid-js";
|
|
25
|
+
import { createInternalSignal, readNow } from "../utils";
|
|
8
26
|
import type {
|
|
9
27
|
DropItem,
|
|
10
28
|
DropEnterEvent,
|
|
@@ -83,7 +101,7 @@ export interface DropState {
|
|
|
83
101
|
export function createDropState(props: Accessor<DropStateOptions>): DropState {
|
|
84
102
|
const getProps = createMemo(() => props());
|
|
85
103
|
|
|
86
|
-
const [isDropTarget, setIsDropTarget] =
|
|
104
|
+
const [isDropTarget, setIsDropTarget] = createInternalSignal(false);
|
|
87
105
|
|
|
88
106
|
const enterTarget = (x: number, y: number) => {
|
|
89
107
|
const p = getProps();
|
|
@@ -102,7 +120,7 @@ export function createDropState(props: Accessor<DropStateOptions>): DropState {
|
|
|
102
120
|
|
|
103
121
|
const moveInTarget = (x: number, y: number) => {
|
|
104
122
|
const p = getProps();
|
|
105
|
-
if (!isDropTarget
|
|
123
|
+
if (!readNow(isDropTarget) || p.isDisabled) return;
|
|
106
124
|
|
|
107
125
|
if (typeof p.onDropMove === "function") {
|
|
108
126
|
p.onDropMove({
|