@proyecto-viviana/solid-stately 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +30 -283
- package/dist/autocomplete/createAutocompleteState.d.ts +3 -2
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/calendar/createCalendarState.d.ts +22 -7
- package/dist/calendar/createDateFieldState.d.ts +30 -7
- package/dist/calendar/createDatePickerState.d.ts +60 -0
- package/dist/calendar/createRangeCalendarState.d.ts +27 -8
- package/dist/calendar/createTimeFieldState.d.ts +34 -7
- package/dist/calendar/index.d.ts +7 -6
- package/dist/checkbox/createCheckboxGroupState.d.ts +12 -3
- package/dist/checkbox/index.d.ts +1 -1
- package/dist/collections/ListCollection.d.ts +1 -1
- package/dist/collections/createListState.d.ts +8 -8
- package/dist/collections/createMenuState.d.ts +7 -7
- package/dist/collections/createSelectionState.d.ts +5 -5
- package/dist/collections/index.d.ts +5 -5
- package/dist/collections/types.d.ts +23 -12
- package/dist/color/Color.d.ts +1 -1
- package/dist/color/createColorAreaState.d.ts +4 -2
- package/dist/color/createColorFieldState.d.ts +38 -12
- package/dist/color/createColorSliderState.d.ts +9 -2
- package/dist/color/createColorWheelState.d.ts +13 -2
- package/dist/color/getColorChannels.d.ts +20 -0
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +4 -4
- package/dist/combobox/createComboBoxState.d.ts +27 -13
- package/dist/combobox/index.d.ts +1 -1
- package/dist/data/createAsyncList.d.ts +111 -0
- package/dist/data/createListData.d.ts +65 -0
- package/dist/data/createTreeData.d.ts +65 -0
- package/dist/data/index.d.ts +3 -0
- package/dist/datepicker/index.d.ts +8 -0
- package/dist/disclosure/createDisclosureState.d.ts +2 -2
- package/dist/disclosure/index.d.ts +1 -1
- package/dist/dnd/createDragState.d.ts +2 -2
- package/dist/dnd/createDraggableCollectionState.d.ts +2 -2
- package/dist/dnd/createDropState.d.ts +2 -2
- package/dist/dnd/createDroppableCollectionState.d.ts +3 -3
- package/dist/dnd/index.d.ts +5 -5
- package/dist/dnd/types.d.ts +16 -16
- package/dist/form/createFormValidationState.d.ts +3 -3
- package/dist/form/index.d.ts +1 -1
- package/dist/grid/createGridState.d.ts +2 -2
- package/dist/grid/index.d.ts +2 -2
- package/dist/grid/types.d.ts +17 -11
- package/dist/index.d.ts +31 -25
- package/dist/index.js +7990 -6264
- package/dist/index.js.map +1 -7
- package/dist/menu/index.d.ts +8 -0
- package/dist/numberfield/createNumberFieldState.d.ts +2 -2
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/createOverlayTriggerState.d.ts +2 -2
- package/dist/overlays/index.d.ts +1 -1
- package/dist/radio/createRadioGroupState.d.ts +13 -4
- package/dist/radio/index.d.ts +1 -1
- package/dist/searchfield/createSearchFieldState.d.ts +2 -2
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createSelectState.d.ts +20 -3
- package/dist/select/index.d.ts +1 -1
- package/dist/selection/index.d.ts +11 -0
- package/dist/slider/createSliderState.d.ts +3 -3
- package/dist/slider/index.d.ts +2 -2
- package/dist/steplist/createStepListState.d.ts +48 -0
- package/dist/steplist/index.d.ts +1 -0
- package/dist/table/TableCollection.d.ts +3 -3
- package/dist/table/createTableColumnResizeState.d.ts +54 -0
- package/dist/table/createTableState.d.ts +2 -2
- package/dist/table/index.d.ts +5 -3
- package/dist/table/types.d.ts +10 -10
- package/dist/tabs/createTabListState.d.ts +5 -5
- package/dist/tabs/index.d.ts +1 -1
- package/dist/textfield/createTextFieldState.d.ts +2 -2
- package/dist/textfield/index.d.ts +1 -1
- package/dist/toast/createToastState.d.ts +15 -3
- package/dist/toast/index.d.ts +1 -1
- package/dist/toggle/createToggleGroupState.d.ts +45 -0
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/index.d.ts +2 -1
- package/dist/tooltip/createTooltipTriggerState.d.ts +2 -2
- package/dist/tooltip/index.d.ts +1 -1
- package/dist/tree/TreeCollection.d.ts +5 -4
- package/dist/tree/createTreeState.d.ts +2 -2
- package/dist/tree/index.d.ts +3 -3
- package/dist/tree/types.d.ts +19 -13
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/package.json +30 -30
- package/src/autocomplete/createAutocompleteState.d.ts +19 -17
- package/src/autocomplete/createAutocompleteState.ts +25 -32
- package/src/autocomplete/index.d.ts +6 -2
- package/src/autocomplete/index.ts +1 -1
- package/src/calendar/createCalendarState.d.ts +139 -117
- package/src/calendar/createCalendarState.ts +221 -74
- package/src/calendar/createDateFieldState.d.ts +130 -95
- package/src/calendar/createDateFieldState.ts +286 -151
- package/src/calendar/createDatePickerState.ts +347 -0
- package/src/calendar/createRangeCalendarState.d.ts +154 -129
- package/src/calendar/createRangeCalendarState.ts +293 -79
- package/src/calendar/createTimeFieldState.d.ts +81 -79
- package/src/calendar/createTimeFieldState.ts +187 -108
- package/src/calendar/index.d.ts +80 -7
- package/src/calendar/index.ts +21 -12
- package/src/checkbox/createCheckboxGroupState.d.ts +57 -55
- package/src/checkbox/createCheckboxGroupState.ts +57 -30
- package/src/checkbox/index.d.ts +6 -2
- package/src/checkbox/index.ts +1 -1
- package/src/collections/ListCollection.d.ts +25 -22
- package/src/collections/ListCollection.ts +152 -146
- package/src/collections/createListState.d.ts +73 -58
- package/src/collections/createListState.ts +267 -264
- package/src/collections/createMenuState.d.ts +36 -31
- package/src/collections/createMenuState.ts +112 -106
- package/src/collections/createSelectionState.d.ts +78 -65
- package/src/collections/createSelectionState.ts +340 -336
- package/src/collections/index.d.ts +38 -6
- package/src/collections/index.ts +41 -46
- package/src/collections/types.d.ts +101 -101
- package/src/collections/types.ts +181 -169
- package/src/color/Color.d.ts +20 -5
- package/src/color/Color.ts +1054 -951
- package/src/color/createColorAreaState.d.ts +67 -65
- package/src/color/createColorAreaState.ts +301 -293
- package/src/color/createColorFieldState.d.ts +46 -44
- package/src/color/createColorFieldState.ts +428 -292
- package/src/color/createColorSliderState.d.ts +58 -56
- package/src/color/createColorSliderState.ts +272 -241
- package/src/color/createColorWheelState.d.ts +42 -40
- package/src/color/createColorWheelState.ts +248 -211
- package/src/color/getColorChannels.ts +36 -0
- package/src/color/index.d.ts +36 -7
- package/src/color/index.ts +44 -47
- package/src/color/types.d.ts +68 -63
- package/src/color/types.ts +119 -127
- package/src/combobox/createComboBoxState.d.ts +107 -105
- package/src/combobox/createComboBoxState.ts +790 -703
- package/src/combobox/index.d.ts +10 -2
- package/src/combobox/index.ts +13 -13
- package/src/data/createAsyncList.ts +403 -0
- package/src/data/createListData.ts +298 -0
- package/src/data/createTreeData.ts +646 -0
- package/src/data/index.ts +25 -0
- package/src/datepicker/index.ts +32 -0
- package/src/disclosure/createDisclosureState.d.ts +47 -43
- package/src/disclosure/createDisclosureState.ts +9 -23
- package/src/disclosure/index.d.ts +10 -2
- package/src/disclosure/index.ts +1 -1
- package/src/dnd/createDragState.d.ts +51 -42
- package/src/dnd/createDragState.ts +151 -153
- package/src/dnd/createDraggableCollectionState.d.ts +52 -41
- package/src/dnd/createDraggableCollectionState.ts +158 -165
- package/src/dnd/createDropState.d.ts +64 -45
- package/src/dnd/createDropState.ts +202 -212
- package/src/dnd/createDroppableCollectionState.d.ts +88 -59
- package/src/dnd/createDroppableCollectionState.ts +354 -357
- package/src/dnd/index.d.ts +54 -6
- package/src/dnd/index.ts +63 -76
- package/src/dnd/types.d.ts +167 -156
- package/src/dnd/types.ts +316 -317
- package/src/form/createFormValidationState.d.ts +47 -45
- package/src/form/createFormValidationState.ts +356 -389
- package/src/form/index.d.ts +16 -2
- package/src/form/index.ts +15 -15
- package/src/grid/createGridState.d.ts +7 -4
- package/src/grid/createGridState.ts +44 -51
- package/src/grid/index.d.ts +3 -3
- package/src/grid/index.ts +2 -8
- package/src/grid/types.d.ts +136 -129
- package/src/grid/types.ts +24 -17
- package/src/index.d.ts +310 -26
- package/src/index.ts +87 -79
- package/src/menu/index.ts +17 -0
- package/src/numberfield/createNumberFieldState.d.ts +56 -54
- package/src/numberfield/createNumberFieldState.ts +422 -383
- package/src/numberfield/index.d.ts +6 -2
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/createOverlayTriggerState.d.ts +22 -20
- package/src/overlays/createOverlayTriggerState.ts +66 -67
- package/src/overlays/index.d.ts +6 -2
- package/src/overlays/index.ts +5 -5
- package/src/radio/createRadioGroupState.d.ts +54 -52
- package/src/radio/createRadioGroupState.ts +66 -30
- package/src/radio/index.d.ts +7 -2
- package/src/radio/index.ts +1 -1
- package/src/searchfield/createSearchFieldState.d.ts +16 -14
- package/src/searchfield/createSearchFieldState.ts +56 -62
- package/src/searchfield/index.d.ts +3 -3
- package/src/searchfield/index.ts +2 -5
- package/src/select/createSelectState.d.ts +63 -61
- package/src/select/createSelectState.ts +290 -181
- package/src/select/index.d.ts +2 -2
- package/src/select/index.ts +1 -5
- package/src/selection/index.ts +27 -0
- package/src/slider/createSliderState.d.ts +60 -60
- package/src/slider/createSliderState.ts +233 -211
- package/src/slider/index.d.ts +3 -3
- package/src/slider/index.ts +2 -6
- package/src/ssr/index.d.ts +1 -1
- package/src/ssr/index.ts +2 -2
- package/src/steplist/createStepListState.ts +191 -0
- package/src/steplist/index.ts +5 -0
- package/src/table/TableCollection.d.ts +42 -40
- package/src/table/TableCollection.ts +61 -64
- package/src/table/createTableColumnResizeState.ts +242 -0
- package/src/table/createTableState.d.ts +7 -4
- package/src/table/createTableState.ts +10 -7
- package/src/table/index.d.ts +14 -4
- package/src/table/index.ts +10 -3
- package/src/table/types.d.ts +98 -92
- package/src/table/types.ts +17 -13
- package/src/tabs/createTabListState.d.ts +59 -57
- package/src/tabs/createTabListState.ts +58 -39
- package/src/tabs/index.d.ts +8 -2
- package/src/tabs/index.ts +1 -1
- package/src/textfield/createTextFieldState.d.ts +16 -14
- package/src/textfield/createTextFieldState.ts +7 -18
- package/src/textfield/index.d.ts +6 -2
- package/src/textfield/index.ts +1 -1
- package/src/toast/createToastState.d.ts +92 -81
- package/src/toast/createToastState.ts +56 -44
- package/src/toast/index.d.ts +12 -2
- package/src/toast/index.ts +1 -1
- package/src/toggle/createToggleGroupState.ts +117 -0
- package/src/toggle/createToggleState.d.ts +19 -19
- package/src/toggle/createToggleState.ts +2 -16
- package/src/toggle/index.d.ts +2 -2
- package/src/toggle/index.ts +6 -4
- package/src/tooltip/createTooltipTriggerState.d.ts +17 -17
- package/src/tooltip/createTooltipTriggerState.ts +184 -183
- package/src/tooltip/index.d.ts +7 -2
- package/src/tooltip/index.ts +6 -6
- package/src/tree/TreeCollection.d.ts +26 -23
- package/src/tree/TreeCollection.ts +215 -175
- package/src/tree/createTreeState.d.ts +7 -4
- package/src/tree/createTreeState.ts +390 -392
- package/src/tree/index.d.ts +10 -4
- package/src/tree/index.ts +13 -13
- package/src/tree/types.d.ts +131 -126
- package/src/tree/types.ts +183 -174
- package/src/utils/index.d.ts +2 -2
- package/src/utils/index.ts +1 -1
- package/src/utils/reactivity.d.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
|
@@ -2,63 +2,67 @@
|
|
|
2
2
|
* Disclosure state management for SolidJS
|
|
3
3
|
* Based on @react-stately/disclosure useDisclosureState and useDisclosureGroupState
|
|
4
4
|
*/
|
|
5
|
-
import { type Accessor } from
|
|
6
|
-
import { type MaybeAccessor } from
|
|
5
|
+
import { type Accessor } from "solid-js";
|
|
6
|
+
import { type MaybeAccessor } from "../utils";
|
|
7
7
|
export interface DisclosureStateProps {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
/** Whether the disclosure is expanded (controlled). */
|
|
9
|
+
isExpanded?: boolean;
|
|
10
|
+
/** Whether the disclosure is expanded by default (uncontrolled). */
|
|
11
|
+
defaultExpanded?: boolean;
|
|
12
|
+
/** Handler that is called when the disclosure expanded state changes. */
|
|
13
|
+
onExpandedChange?: (isExpanded: boolean) => void;
|
|
14
14
|
}
|
|
15
15
|
export interface DisclosureState {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
/** Whether the disclosure is currently expanded. */
|
|
17
|
+
readonly isExpanded: Accessor<boolean>;
|
|
18
|
+
/** Sets whether the disclosure is expanded. */
|
|
19
|
+
setExpanded(isExpanded: boolean): void;
|
|
20
|
+
/** Expand the disclosure. */
|
|
21
|
+
expand(): void;
|
|
22
|
+
/** Collapse the disclosure. */
|
|
23
|
+
collapse(): void;
|
|
24
|
+
/** Toggles the disclosure's visibility. */
|
|
25
|
+
toggle(): void;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Manages state for a disclosure widget. Tracks whether the disclosure is expanded,
|
|
29
29
|
* and provides methods to toggle this state.
|
|
30
30
|
*/
|
|
31
|
-
export declare function createDisclosureState(
|
|
31
|
+
export declare function createDisclosureState(
|
|
32
|
+
props?: MaybeAccessor<DisclosureStateProps>,
|
|
33
|
+
): DisclosureState;
|
|
32
34
|
export type Key = string | number;
|
|
33
35
|
export interface DisclosureGroupStateProps {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
/** Whether multiple items can be expanded at the same time. */
|
|
37
|
+
allowsMultipleExpanded?: boolean;
|
|
38
|
+
/** Whether all items are disabled. */
|
|
39
|
+
isDisabled?: boolean;
|
|
40
|
+
/** The currently expanded keys in the group (controlled). */
|
|
41
|
+
expandedKeys?: Iterable<Key>;
|
|
42
|
+
/** The initial expanded keys in the group (uncontrolled). */
|
|
43
|
+
defaultExpandedKeys?: Iterable<Key>;
|
|
44
|
+
/** Handler that is called when items are expanded or collapsed. */
|
|
45
|
+
onExpandedChange?: (keys: Set<Key>) => void;
|
|
44
46
|
}
|
|
45
47
|
export interface DisclosureGroupState {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
48
|
+
/** Whether multiple items can be expanded at the same time. */
|
|
49
|
+
readonly allowsMultipleExpanded: boolean;
|
|
50
|
+
/** Whether all items are disabled. */
|
|
51
|
+
readonly isDisabled: boolean;
|
|
52
|
+
/** A set of keys for items that are expanded. */
|
|
53
|
+
readonly expandedKeys: Accessor<Set<Key>>;
|
|
54
|
+
/** Toggles the expanded state for an item by its key. */
|
|
55
|
+
toggleKey(key: Key): void;
|
|
56
|
+
/** Replaces the set of expanded keys. */
|
|
57
|
+
setExpandedKeys(keys: Set<Key>): void;
|
|
58
|
+
/** Check if a specific key is expanded. */
|
|
59
|
+
isExpanded(key: Key): boolean;
|
|
58
60
|
}
|
|
59
61
|
/**
|
|
60
62
|
* Manages state for a group of disclosures, e.g. an accordion.
|
|
61
63
|
* It supports both single and multiple expanded items.
|
|
62
64
|
*/
|
|
63
|
-
export declare function createDisclosureGroupState(
|
|
64
|
-
|
|
65
|
+
export declare function createDisclosureGroupState(
|
|
66
|
+
props?: MaybeAccessor<DisclosureGroupStateProps>,
|
|
67
|
+
): DisclosureGroupState;
|
|
68
|
+
//# sourceMappingURL=createDisclosureState.d.ts.map
|
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
* Based on @react-stately/disclosure useDisclosureState and useDisclosureGroupState
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createSignal, createEffect, type Accessor } from
|
|
7
|
-
import { access, type MaybeAccessor } from
|
|
8
|
-
|
|
9
|
-
// ============================================
|
|
10
|
-
// SINGLE DISCLOSURE STATE
|
|
11
|
-
// ============================================
|
|
6
|
+
import { createSignal, createEffect, createMemo, type Accessor } from "solid-js";
|
|
7
|
+
import { access, type MaybeAccessor } from "../utils";
|
|
12
8
|
|
|
13
9
|
export interface DisclosureStateProps {
|
|
14
10
|
/** Whether the disclosure is expanded (controlled). */
|
|
@@ -37,16 +33,14 @@ export interface DisclosureState {
|
|
|
37
33
|
* and provides methods to toggle this state.
|
|
38
34
|
*/
|
|
39
35
|
export function createDisclosureState(
|
|
40
|
-
props: MaybeAccessor<DisclosureStateProps> = {}
|
|
36
|
+
props: MaybeAccessor<DisclosureStateProps> = {},
|
|
41
37
|
): DisclosureState {
|
|
42
38
|
const propsAccessor = () => access(props);
|
|
43
39
|
|
|
44
|
-
// Internal state for uncontrolled mode
|
|
45
40
|
const [internalExpanded, setInternalExpanded] = createSignal(
|
|
46
|
-
propsAccessor().defaultExpanded ?? false
|
|
41
|
+
propsAccessor().defaultExpanded ?? false,
|
|
47
42
|
);
|
|
48
43
|
|
|
49
|
-
// Determine if expanded (controlled vs uncontrolled)
|
|
50
44
|
const isExpanded: Accessor<boolean> = () => {
|
|
51
45
|
const p = propsAccessor();
|
|
52
46
|
return p.isExpanded !== undefined ? p.isExpanded : internalExpanded();
|
|
@@ -73,10 +67,6 @@ export function createDisclosureState(
|
|
|
73
67
|
};
|
|
74
68
|
}
|
|
75
69
|
|
|
76
|
-
// ============================================
|
|
77
|
-
// DISCLOSURE GROUP STATE (Accordion)
|
|
78
|
-
// ============================================
|
|
79
|
-
|
|
80
70
|
export type Key = string | number;
|
|
81
71
|
|
|
82
72
|
export interface DisclosureGroupStateProps {
|
|
@@ -112,20 +102,18 @@ export interface DisclosureGroupState {
|
|
|
112
102
|
* It supports both single and multiple expanded items.
|
|
113
103
|
*/
|
|
114
104
|
export function createDisclosureGroupState(
|
|
115
|
-
props: MaybeAccessor<DisclosureGroupStateProps> = {}
|
|
105
|
+
props: MaybeAccessor<DisclosureGroupStateProps> = {},
|
|
116
106
|
): DisclosureGroupState {
|
|
117
107
|
const propsAccessor = () => access(props);
|
|
118
108
|
|
|
119
|
-
// Internal state for uncontrolled mode
|
|
120
109
|
const [internalKeys, setInternalKeys] = createSignal<Set<Key>>(
|
|
121
|
-
new Set(propsAccessor().defaultExpandedKeys ?? [])
|
|
110
|
+
new Set(propsAccessor().defaultExpandedKeys ?? []),
|
|
122
111
|
);
|
|
123
112
|
|
|
124
|
-
|
|
125
|
-
const expandedKeys: Accessor<Set<Key>> = () => {
|
|
113
|
+
const expandedKeys: Accessor<Set<Key>> = createMemo(() => {
|
|
126
114
|
const p = propsAccessor();
|
|
127
115
|
return p.expandedKeys !== undefined ? new Set(p.expandedKeys) : internalKeys();
|
|
128
|
-
};
|
|
116
|
+
});
|
|
129
117
|
|
|
130
118
|
const setExpandedKeys = (keys: Set<Key>) => {
|
|
131
119
|
const p = propsAccessor();
|
|
@@ -135,8 +123,7 @@ export function createDisclosureGroupState(
|
|
|
135
123
|
p.onExpandedChange?.(keys);
|
|
136
124
|
};
|
|
137
125
|
|
|
138
|
-
// Ensure only one item is expanded if allowsMultipleExpanded is false
|
|
139
|
-
// Note: We use untrack to prevent infinite loops when calling setExpandedKeys
|
|
126
|
+
// Ensure only one item is expanded if allowsMultipleExpanded is false.
|
|
140
127
|
createEffect(() => {
|
|
141
128
|
const p = propsAccessor();
|
|
142
129
|
const allowsMultiple = p.allowsMultipleExpanded ?? false;
|
|
@@ -167,7 +154,6 @@ export function createDisclosureGroupState(
|
|
|
167
154
|
newKeys.add(key);
|
|
168
155
|
}
|
|
169
156
|
} else {
|
|
170
|
-
// Single selection: toggle off if already expanded, otherwise select only this one
|
|
171
157
|
newKeys = new Set(currentKeys.has(key) ? [] : [key]);
|
|
172
158
|
}
|
|
173
159
|
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
1
|
+
export {
|
|
2
|
+
createDisclosureState,
|
|
3
|
+
createDisclosureGroupState,
|
|
4
|
+
type DisclosureStateProps,
|
|
5
|
+
type DisclosureState,
|
|
6
|
+
type DisclosureGroupStateProps,
|
|
7
|
+
type DisclosureGroupState,
|
|
8
|
+
type Key,
|
|
9
|
+
} from "./createDisclosureState";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
package/src/disclosure/index.ts
CHANGED
|
@@ -3,51 +3,60 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides reactive state for drag operations.
|
|
5
5
|
*/
|
|
6
|
-
import { type Accessor } from
|
|
7
|
-
import type {
|
|
6
|
+
import { type Accessor } from "solid-js";
|
|
7
|
+
import type {
|
|
8
|
+
DragItem,
|
|
9
|
+
DragStartEvent,
|
|
10
|
+
DragMoveEvent,
|
|
11
|
+
DragEndEvent,
|
|
12
|
+
DropOperation,
|
|
13
|
+
DragPreviewRenderer,
|
|
14
|
+
} from "./types";
|
|
8
15
|
export interface DragStateOptions {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
/** A function that returns the items being dragged. */
|
|
17
|
+
getItems: () => DragItem[];
|
|
18
|
+
/** Function that returns the allowed drop operations. */
|
|
19
|
+
getAllowedDropOperations?: () => DropOperation[];
|
|
20
|
+
/** Handler that is called when a drag operation is started. */
|
|
21
|
+
onDragStart?: (e: DragStartEvent) => void;
|
|
22
|
+
/** Handler that is called when the drag is moved. */
|
|
23
|
+
onDragMove?: (e: DragMoveEvent) => void;
|
|
24
|
+
/** Handler that is called when the drag operation ends. */
|
|
25
|
+
onDragEnd?: (e: DragEndEvent) => void;
|
|
26
|
+
/** Whether the drag operation is disabled. */
|
|
27
|
+
isDisabled?: boolean;
|
|
28
|
+
/** Whether there is a separate drag button affordance. */
|
|
29
|
+
hasDragButton?: boolean;
|
|
30
|
+
/** Preview renderer function ref. */
|
|
31
|
+
preview?: {
|
|
32
|
+
current: DragPreviewRenderer | null;
|
|
33
|
+
};
|
|
27
34
|
}
|
|
28
35
|
export interface DragState {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
36
|
+
/** Whether an element is currently being dragged. */
|
|
37
|
+
readonly isDragging: boolean;
|
|
38
|
+
/** Whether drag is disabled. */
|
|
39
|
+
readonly isDisabled: boolean;
|
|
40
|
+
/** Start a drag operation. */
|
|
41
|
+
startDrag(x: number, y: number): void;
|
|
42
|
+
/** Update drag position. */
|
|
43
|
+
moveDrag(x: number, y: number): void;
|
|
44
|
+
/** End a drag operation. */
|
|
45
|
+
endDrag(x: number, y: number, dropOperation: DropOperation): void;
|
|
46
|
+
/** Cancel a drag operation. */
|
|
47
|
+
cancelDrag(): void;
|
|
48
|
+
/** Get the items being dragged. */
|
|
49
|
+
getItems(): DragItem[];
|
|
50
|
+
/** Get allowed drop operations. */
|
|
51
|
+
getAllowedDropOperations(): DropOperation[];
|
|
52
|
+
/** Whether there is a drag button. */
|
|
53
|
+
readonly hasDragButton: boolean;
|
|
54
|
+
/** Preview renderer. */
|
|
55
|
+
readonly preview:
|
|
56
|
+
| {
|
|
49
57
|
current: DragPreviewRenderer | null;
|
|
50
|
-
|
|
58
|
+
}
|
|
59
|
+
| undefined;
|
|
51
60
|
}
|
|
52
61
|
/**
|
|
53
62
|
* Creates drag state for managing drag operations.
|
|
@@ -56,4 +65,4 @@ export interface DragState {
|
|
|
56
65
|
* @returns Drag state object
|
|
57
66
|
*/
|
|
58
67
|
export declare function createDragState(props: Accessor<DragStateOptions>): DragState;
|
|
59
|
-
//# sourceMappingURL=createDragState.d.ts.map
|
|
68
|
+
//# sourceMappingURL=createDragState.d.ts.map
|
|
@@ -1,153 +1,151 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Drag state management for solid-stately.
|
|
3
|
-
*
|
|
4
|
-
* Provides reactive state for drag operations.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { createSignal, createMemo, type Accessor } from
|
|
8
|
-
import type {
|
|
9
|
-
DragItem,
|
|
10
|
-
DragStartEvent,
|
|
11
|
-
DragMoveEvent,
|
|
12
|
-
DragEndEvent,
|
|
13
|
-
DropOperation,
|
|
14
|
-
DragPreviewRenderer,
|
|
15
|
-
} from
|
|
16
|
-
|
|
17
|
-
export interface DragStateOptions {
|
|
18
|
-
/** A function that returns the items being dragged. */
|
|
19
|
-
getItems: () => DragItem[];
|
|
20
|
-
/** Function that returns the allowed drop operations. */
|
|
21
|
-
getAllowedDropOperations?: () => DropOperation[];
|
|
22
|
-
/** Handler that is called when a drag operation is started. */
|
|
23
|
-
onDragStart?: (e: DragStartEvent) => void;
|
|
24
|
-
/** Handler that is called when the drag is moved. */
|
|
25
|
-
onDragMove?: (e: DragMoveEvent) => void;
|
|
26
|
-
/** Handler that is called when the drag operation ends. */
|
|
27
|
-
onDragEnd?: (e: DragEndEvent) => void;
|
|
28
|
-
/** Whether the drag operation is disabled. */
|
|
29
|
-
isDisabled?: boolean;
|
|
30
|
-
/** Whether there is a separate drag button affordance. */
|
|
31
|
-
hasDragButton?: boolean;
|
|
32
|
-
/** Preview renderer function ref. */
|
|
33
|
-
preview?: { current: DragPreviewRenderer | null };
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface DragState {
|
|
37
|
-
/** Whether an element is currently being dragged. */
|
|
38
|
-
readonly isDragging: boolean;
|
|
39
|
-
/** Whether drag is disabled. */
|
|
40
|
-
readonly isDisabled: boolean;
|
|
41
|
-
/** Start a drag operation. */
|
|
42
|
-
startDrag(x: number, y: number): void;
|
|
43
|
-
/** Update drag position. */
|
|
44
|
-
moveDrag(x: number, y: number): void;
|
|
45
|
-
/** End a drag operation. */
|
|
46
|
-
endDrag(x: number, y: number, dropOperation: DropOperation): void;
|
|
47
|
-
/** Cancel a drag operation. */
|
|
48
|
-
cancelDrag(): void;
|
|
49
|
-
/** Get the items being dragged. */
|
|
50
|
-
getItems(): DragItem[];
|
|
51
|
-
/** Get allowed drop operations. */
|
|
52
|
-
getAllowedDropOperations(): DropOperation[];
|
|
53
|
-
/** Whether there is a drag button. */
|
|
54
|
-
readonly hasDragButton: boolean;
|
|
55
|
-
/** Preview renderer. */
|
|
56
|
-
readonly preview: { current: DragPreviewRenderer | null } | undefined;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Creates drag state for managing drag operations.
|
|
61
|
-
*
|
|
62
|
-
* @param props - Accessor returning drag state options
|
|
63
|
-
* @returns Drag state object
|
|
64
|
-
*/
|
|
65
|
-
export function createDragState(
|
|
66
|
-
props
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
};
|
|
153
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Drag state management for solid-stately.
|
|
3
|
+
*
|
|
4
|
+
* Provides reactive state for drag operations.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { createSignal, createMemo, type Accessor } from "solid-js";
|
|
8
|
+
import type {
|
|
9
|
+
DragItem,
|
|
10
|
+
DragStartEvent,
|
|
11
|
+
DragMoveEvent,
|
|
12
|
+
DragEndEvent,
|
|
13
|
+
DropOperation,
|
|
14
|
+
DragPreviewRenderer,
|
|
15
|
+
} from "./types";
|
|
16
|
+
|
|
17
|
+
export interface DragStateOptions {
|
|
18
|
+
/** A function that returns the items being dragged. */
|
|
19
|
+
getItems: () => DragItem[];
|
|
20
|
+
/** Function that returns the allowed drop operations. */
|
|
21
|
+
getAllowedDropOperations?: () => DropOperation[];
|
|
22
|
+
/** Handler that is called when a drag operation is started. */
|
|
23
|
+
onDragStart?: (e: DragStartEvent) => void;
|
|
24
|
+
/** Handler that is called when the drag is moved. */
|
|
25
|
+
onDragMove?: (e: DragMoveEvent) => void;
|
|
26
|
+
/** Handler that is called when the drag operation ends. */
|
|
27
|
+
onDragEnd?: (e: DragEndEvent) => void;
|
|
28
|
+
/** Whether the drag operation is disabled. */
|
|
29
|
+
isDisabled?: boolean;
|
|
30
|
+
/** Whether there is a separate drag button affordance. */
|
|
31
|
+
hasDragButton?: boolean;
|
|
32
|
+
/** Preview renderer function ref. */
|
|
33
|
+
preview?: { current: DragPreviewRenderer | null };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface DragState {
|
|
37
|
+
/** Whether an element is currently being dragged. */
|
|
38
|
+
readonly isDragging: boolean;
|
|
39
|
+
/** Whether drag is disabled. */
|
|
40
|
+
readonly isDisabled: boolean;
|
|
41
|
+
/** Start a drag operation. */
|
|
42
|
+
startDrag(x: number, y: number): void;
|
|
43
|
+
/** Update drag position. */
|
|
44
|
+
moveDrag(x: number, y: number): void;
|
|
45
|
+
/** End a drag operation. */
|
|
46
|
+
endDrag(x: number, y: number, dropOperation: DropOperation): void;
|
|
47
|
+
/** Cancel a drag operation. */
|
|
48
|
+
cancelDrag(): void;
|
|
49
|
+
/** Get the items being dragged. */
|
|
50
|
+
getItems(): DragItem[];
|
|
51
|
+
/** Get allowed drop operations. */
|
|
52
|
+
getAllowedDropOperations(): DropOperation[];
|
|
53
|
+
/** Whether there is a drag button. */
|
|
54
|
+
readonly hasDragButton: boolean;
|
|
55
|
+
/** Preview renderer. */
|
|
56
|
+
readonly preview: { current: DragPreviewRenderer | null } | undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Creates drag state for managing drag operations.
|
|
61
|
+
*
|
|
62
|
+
* @param props - Accessor returning drag state options
|
|
63
|
+
* @returns Drag state object
|
|
64
|
+
*/
|
|
65
|
+
export function createDragState(props: Accessor<DragStateOptions>): DragState {
|
|
66
|
+
const getProps = createMemo(() => props());
|
|
67
|
+
|
|
68
|
+
const [isDragging, setIsDragging] = createSignal(false);
|
|
69
|
+
|
|
70
|
+
const startDrag = (x: number, y: number) => {
|
|
71
|
+
const p = getProps();
|
|
72
|
+
if (p.isDisabled) return;
|
|
73
|
+
|
|
74
|
+
setIsDragging(true);
|
|
75
|
+
|
|
76
|
+
if (typeof p.onDragStart === "function") {
|
|
77
|
+
p.onDragStart({
|
|
78
|
+
type: "dragstart",
|
|
79
|
+
x,
|
|
80
|
+
y,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const moveDrag = (x: number, y: number) => {
|
|
86
|
+
const p = getProps();
|
|
87
|
+
if (!isDragging() || p.isDisabled) return;
|
|
88
|
+
|
|
89
|
+
if (typeof p.onDragMove === "function") {
|
|
90
|
+
p.onDragMove({
|
|
91
|
+
type: "dragmove",
|
|
92
|
+
x,
|
|
93
|
+
y,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const endDrag = (x: number, y: number, dropOperation: DropOperation) => {
|
|
99
|
+
const p = getProps();
|
|
100
|
+
if (!isDragging()) return;
|
|
101
|
+
|
|
102
|
+
setIsDragging(false);
|
|
103
|
+
|
|
104
|
+
if (typeof p.onDragEnd === "function") {
|
|
105
|
+
p.onDragEnd({
|
|
106
|
+
type: "dragend",
|
|
107
|
+
x,
|
|
108
|
+
y,
|
|
109
|
+
dropOperation,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const cancelDrag = () => {
|
|
115
|
+
endDrag(0, 0, "cancel");
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const getItems = () => {
|
|
119
|
+
const p = getProps();
|
|
120
|
+
return p.getItems();
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const getAllowedDropOperations = (): DropOperation[] => {
|
|
124
|
+
const p = getProps();
|
|
125
|
+
if (typeof p.getAllowedDropOperations === "function") {
|
|
126
|
+
return p.getAllowedDropOperations();
|
|
127
|
+
}
|
|
128
|
+
return ["move", "copy", "link"];
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
get isDragging() {
|
|
133
|
+
return isDragging();
|
|
134
|
+
},
|
|
135
|
+
get isDisabled() {
|
|
136
|
+
return getProps().isDisabled ?? false;
|
|
137
|
+
},
|
|
138
|
+
get hasDragButton() {
|
|
139
|
+
return getProps().hasDragButton ?? false;
|
|
140
|
+
},
|
|
141
|
+
get preview() {
|
|
142
|
+
return getProps().preview;
|
|
143
|
+
},
|
|
144
|
+
startDrag,
|
|
145
|
+
moveDrag,
|
|
146
|
+
endDrag,
|
|
147
|
+
cancelDrag,
|
|
148
|
+
getItems,
|
|
149
|
+
getAllowedDropOperations,
|
|
150
|
+
};
|
|
151
|
+
}
|