@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.
Files changed (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -283
  3. package/dist/autocomplete/createAutocompleteState.d.ts +3 -2
  4. package/dist/autocomplete/index.d.ts +1 -1
  5. package/dist/calendar/createCalendarState.d.ts +22 -7
  6. package/dist/calendar/createDateFieldState.d.ts +30 -7
  7. package/dist/calendar/createDatePickerState.d.ts +60 -0
  8. package/dist/calendar/createRangeCalendarState.d.ts +27 -8
  9. package/dist/calendar/createTimeFieldState.d.ts +34 -7
  10. package/dist/calendar/index.d.ts +7 -6
  11. package/dist/checkbox/createCheckboxGroupState.d.ts +12 -3
  12. package/dist/checkbox/index.d.ts +1 -1
  13. package/dist/collections/ListCollection.d.ts +1 -1
  14. package/dist/collections/createListState.d.ts +8 -8
  15. package/dist/collections/createMenuState.d.ts +7 -7
  16. package/dist/collections/createSelectionState.d.ts +5 -5
  17. package/dist/collections/index.d.ts +5 -5
  18. package/dist/collections/types.d.ts +23 -12
  19. package/dist/color/Color.d.ts +1 -1
  20. package/dist/color/createColorAreaState.d.ts +4 -2
  21. package/dist/color/createColorFieldState.d.ts +38 -12
  22. package/dist/color/createColorSliderState.d.ts +9 -2
  23. package/dist/color/createColorWheelState.d.ts +13 -2
  24. package/dist/color/getColorChannels.d.ts +20 -0
  25. package/dist/color/index.d.ts +6 -6
  26. package/dist/color/types.d.ts +4 -4
  27. package/dist/combobox/createComboBoxState.d.ts +27 -13
  28. package/dist/combobox/index.d.ts +1 -1
  29. package/dist/data/createAsyncList.d.ts +111 -0
  30. package/dist/data/createListData.d.ts +65 -0
  31. package/dist/data/createTreeData.d.ts +65 -0
  32. package/dist/data/index.d.ts +3 -0
  33. package/dist/datepicker/index.d.ts +8 -0
  34. package/dist/disclosure/createDisclosureState.d.ts +2 -2
  35. package/dist/disclosure/index.d.ts +1 -1
  36. package/dist/dnd/createDragState.d.ts +2 -2
  37. package/dist/dnd/createDraggableCollectionState.d.ts +2 -2
  38. package/dist/dnd/createDropState.d.ts +2 -2
  39. package/dist/dnd/createDroppableCollectionState.d.ts +3 -3
  40. package/dist/dnd/index.d.ts +5 -5
  41. package/dist/dnd/types.d.ts +16 -16
  42. package/dist/form/createFormValidationState.d.ts +3 -3
  43. package/dist/form/index.d.ts +1 -1
  44. package/dist/grid/createGridState.d.ts +2 -2
  45. package/dist/grid/index.d.ts +2 -2
  46. package/dist/grid/types.d.ts +17 -11
  47. package/dist/index.d.ts +31 -25
  48. package/dist/index.js +7990 -6264
  49. package/dist/index.js.map +1 -7
  50. package/dist/menu/index.d.ts +8 -0
  51. package/dist/numberfield/createNumberFieldState.d.ts +2 -2
  52. package/dist/numberfield/index.d.ts +1 -1
  53. package/dist/overlays/createOverlayTriggerState.d.ts +2 -2
  54. package/dist/overlays/index.d.ts +1 -1
  55. package/dist/radio/createRadioGroupState.d.ts +13 -4
  56. package/dist/radio/index.d.ts +1 -1
  57. package/dist/searchfield/createSearchFieldState.d.ts +2 -2
  58. package/dist/searchfield/index.d.ts +2 -2
  59. package/dist/select/createSelectState.d.ts +20 -3
  60. package/dist/select/index.d.ts +1 -1
  61. package/dist/selection/index.d.ts +11 -0
  62. package/dist/slider/createSliderState.d.ts +3 -3
  63. package/dist/slider/index.d.ts +2 -2
  64. package/dist/steplist/createStepListState.d.ts +48 -0
  65. package/dist/steplist/index.d.ts +1 -0
  66. package/dist/table/TableCollection.d.ts +3 -3
  67. package/dist/table/createTableColumnResizeState.d.ts +54 -0
  68. package/dist/table/createTableState.d.ts +2 -2
  69. package/dist/table/index.d.ts +5 -3
  70. package/dist/table/types.d.ts +10 -10
  71. package/dist/tabs/createTabListState.d.ts +5 -5
  72. package/dist/tabs/index.d.ts +1 -1
  73. package/dist/textfield/createTextFieldState.d.ts +2 -2
  74. package/dist/textfield/index.d.ts +1 -1
  75. package/dist/toast/createToastState.d.ts +15 -3
  76. package/dist/toast/index.d.ts +1 -1
  77. package/dist/toggle/createToggleGroupState.d.ts +45 -0
  78. package/dist/toggle/createToggleState.d.ts +2 -2
  79. package/dist/toggle/index.d.ts +2 -1
  80. package/dist/tooltip/createTooltipTriggerState.d.ts +2 -2
  81. package/dist/tooltip/index.d.ts +1 -1
  82. package/dist/tree/TreeCollection.d.ts +5 -4
  83. package/dist/tree/createTreeState.d.ts +2 -2
  84. package/dist/tree/index.d.ts +3 -3
  85. package/dist/tree/types.d.ts +19 -13
  86. package/dist/utils/index.d.ts +1 -1
  87. package/dist/utils/reactivity.d.ts +1 -1
  88. package/package.json +30 -30
  89. package/src/autocomplete/createAutocompleteState.d.ts +19 -17
  90. package/src/autocomplete/createAutocompleteState.ts +25 -32
  91. package/src/autocomplete/index.d.ts +6 -2
  92. package/src/autocomplete/index.ts +1 -1
  93. package/src/calendar/createCalendarState.d.ts +139 -117
  94. package/src/calendar/createCalendarState.ts +221 -74
  95. package/src/calendar/createDateFieldState.d.ts +130 -95
  96. package/src/calendar/createDateFieldState.ts +286 -151
  97. package/src/calendar/createDatePickerState.ts +347 -0
  98. package/src/calendar/createRangeCalendarState.d.ts +154 -129
  99. package/src/calendar/createRangeCalendarState.ts +293 -79
  100. package/src/calendar/createTimeFieldState.d.ts +81 -79
  101. package/src/calendar/createTimeFieldState.ts +187 -108
  102. package/src/calendar/index.d.ts +80 -7
  103. package/src/calendar/index.ts +21 -12
  104. package/src/checkbox/createCheckboxGroupState.d.ts +57 -55
  105. package/src/checkbox/createCheckboxGroupState.ts +57 -30
  106. package/src/checkbox/index.d.ts +6 -2
  107. package/src/checkbox/index.ts +1 -1
  108. package/src/collections/ListCollection.d.ts +25 -22
  109. package/src/collections/ListCollection.ts +152 -146
  110. package/src/collections/createListState.d.ts +73 -58
  111. package/src/collections/createListState.ts +267 -264
  112. package/src/collections/createMenuState.d.ts +36 -31
  113. package/src/collections/createMenuState.ts +112 -106
  114. package/src/collections/createSelectionState.d.ts +78 -65
  115. package/src/collections/createSelectionState.ts +340 -336
  116. package/src/collections/index.d.ts +38 -6
  117. package/src/collections/index.ts +41 -46
  118. package/src/collections/types.d.ts +101 -101
  119. package/src/collections/types.ts +181 -169
  120. package/src/color/Color.d.ts +20 -5
  121. package/src/color/Color.ts +1054 -951
  122. package/src/color/createColorAreaState.d.ts +67 -65
  123. package/src/color/createColorAreaState.ts +301 -293
  124. package/src/color/createColorFieldState.d.ts +46 -44
  125. package/src/color/createColorFieldState.ts +428 -292
  126. package/src/color/createColorSliderState.d.ts +58 -56
  127. package/src/color/createColorSliderState.ts +272 -241
  128. package/src/color/createColorWheelState.d.ts +42 -40
  129. package/src/color/createColorWheelState.ts +248 -211
  130. package/src/color/getColorChannels.ts +36 -0
  131. package/src/color/index.d.ts +36 -7
  132. package/src/color/index.ts +44 -47
  133. package/src/color/types.d.ts +68 -63
  134. package/src/color/types.ts +119 -127
  135. package/src/combobox/createComboBoxState.d.ts +107 -105
  136. package/src/combobox/createComboBoxState.ts +790 -703
  137. package/src/combobox/index.d.ts +10 -2
  138. package/src/combobox/index.ts +13 -13
  139. package/src/data/createAsyncList.ts +403 -0
  140. package/src/data/createListData.ts +298 -0
  141. package/src/data/createTreeData.ts +646 -0
  142. package/src/data/index.ts +25 -0
  143. package/src/datepicker/index.ts +32 -0
  144. package/src/disclosure/createDisclosureState.d.ts +47 -43
  145. package/src/disclosure/createDisclosureState.ts +9 -23
  146. package/src/disclosure/index.d.ts +10 -2
  147. package/src/disclosure/index.ts +1 -1
  148. package/src/dnd/createDragState.d.ts +51 -42
  149. package/src/dnd/createDragState.ts +151 -153
  150. package/src/dnd/createDraggableCollectionState.d.ts +52 -41
  151. package/src/dnd/createDraggableCollectionState.ts +158 -165
  152. package/src/dnd/createDropState.d.ts +64 -45
  153. package/src/dnd/createDropState.ts +202 -212
  154. package/src/dnd/createDroppableCollectionState.d.ts +88 -59
  155. package/src/dnd/createDroppableCollectionState.ts +354 -357
  156. package/src/dnd/index.d.ts +54 -6
  157. package/src/dnd/index.ts +63 -76
  158. package/src/dnd/types.d.ts +167 -156
  159. package/src/dnd/types.ts +316 -317
  160. package/src/form/createFormValidationState.d.ts +47 -45
  161. package/src/form/createFormValidationState.ts +356 -389
  162. package/src/form/index.d.ts +16 -2
  163. package/src/form/index.ts +15 -15
  164. package/src/grid/createGridState.d.ts +7 -4
  165. package/src/grid/createGridState.ts +44 -51
  166. package/src/grid/index.d.ts +3 -3
  167. package/src/grid/index.ts +2 -8
  168. package/src/grid/types.d.ts +136 -129
  169. package/src/grid/types.ts +24 -17
  170. package/src/index.d.ts +310 -26
  171. package/src/index.ts +87 -79
  172. package/src/menu/index.ts +17 -0
  173. package/src/numberfield/createNumberFieldState.d.ts +56 -54
  174. package/src/numberfield/createNumberFieldState.ts +422 -383
  175. package/src/numberfield/index.d.ts +6 -2
  176. package/src/numberfield/index.ts +5 -5
  177. package/src/overlays/createOverlayTriggerState.d.ts +22 -20
  178. package/src/overlays/createOverlayTriggerState.ts +66 -67
  179. package/src/overlays/index.d.ts +6 -2
  180. package/src/overlays/index.ts +5 -5
  181. package/src/radio/createRadioGroupState.d.ts +54 -52
  182. package/src/radio/createRadioGroupState.ts +66 -30
  183. package/src/radio/index.d.ts +7 -2
  184. package/src/radio/index.ts +1 -1
  185. package/src/searchfield/createSearchFieldState.d.ts +16 -14
  186. package/src/searchfield/createSearchFieldState.ts +56 -62
  187. package/src/searchfield/index.d.ts +3 -3
  188. package/src/searchfield/index.ts +2 -5
  189. package/src/select/createSelectState.d.ts +63 -61
  190. package/src/select/createSelectState.ts +290 -181
  191. package/src/select/index.d.ts +2 -2
  192. package/src/select/index.ts +1 -5
  193. package/src/selection/index.ts +27 -0
  194. package/src/slider/createSliderState.d.ts +60 -60
  195. package/src/slider/createSliderState.ts +233 -211
  196. package/src/slider/index.d.ts +3 -3
  197. package/src/slider/index.ts +2 -6
  198. package/src/ssr/index.d.ts +1 -1
  199. package/src/ssr/index.ts +2 -2
  200. package/src/steplist/createStepListState.ts +191 -0
  201. package/src/steplist/index.ts +5 -0
  202. package/src/table/TableCollection.d.ts +42 -40
  203. package/src/table/TableCollection.ts +61 -64
  204. package/src/table/createTableColumnResizeState.ts +242 -0
  205. package/src/table/createTableState.d.ts +7 -4
  206. package/src/table/createTableState.ts +10 -7
  207. package/src/table/index.d.ts +14 -4
  208. package/src/table/index.ts +10 -3
  209. package/src/table/types.d.ts +98 -92
  210. package/src/table/types.ts +17 -13
  211. package/src/tabs/createTabListState.d.ts +59 -57
  212. package/src/tabs/createTabListState.ts +58 -39
  213. package/src/tabs/index.d.ts +8 -2
  214. package/src/tabs/index.ts +1 -1
  215. package/src/textfield/createTextFieldState.d.ts +16 -14
  216. package/src/textfield/createTextFieldState.ts +7 -18
  217. package/src/textfield/index.d.ts +6 -2
  218. package/src/textfield/index.ts +1 -1
  219. package/src/toast/createToastState.d.ts +92 -81
  220. package/src/toast/createToastState.ts +56 -44
  221. package/src/toast/index.d.ts +12 -2
  222. package/src/toast/index.ts +1 -1
  223. package/src/toggle/createToggleGroupState.ts +117 -0
  224. package/src/toggle/createToggleState.d.ts +19 -19
  225. package/src/toggle/createToggleState.ts +2 -16
  226. package/src/toggle/index.d.ts +2 -2
  227. package/src/toggle/index.ts +6 -4
  228. package/src/tooltip/createTooltipTriggerState.d.ts +17 -17
  229. package/src/tooltip/createTooltipTriggerState.ts +184 -183
  230. package/src/tooltip/index.d.ts +7 -2
  231. package/src/tooltip/index.ts +6 -6
  232. package/src/tree/TreeCollection.d.ts +26 -23
  233. package/src/tree/TreeCollection.ts +215 -175
  234. package/src/tree/createTreeState.d.ts +7 -4
  235. package/src/tree/createTreeState.ts +390 -392
  236. package/src/tree/index.d.ts +10 -4
  237. package/src/tree/index.ts +13 -13
  238. package/src/tree/types.d.ts +131 -126
  239. package/src/tree/types.ts +183 -174
  240. package/src/utils/index.d.ts +2 -2
  241. package/src/utils/index.ts +1 -1
  242. package/src/utils/reactivity.d.ts +2 -2
  243. package/src/utils/reactivity.ts +3 -3
@@ -1,212 +1,202 @@
1
- /**
2
- * Drop state management for solid-stately.
3
- *
4
- * Provides reactive state for drop target operations.
5
- */
6
-
7
- import { createSignal, createMemo, type Accessor } from 'solid-js';
8
- import type {
9
- DropItem,
10
- DropEnterEvent,
11
- DropMoveEvent,
12
- DropExitEvent,
13
- DropActivateEvent,
14
- DropEvent,
15
- DropOperation,
16
- DragTypes,
17
- } from './types';
18
-
19
- export interface DropStateOptions {
20
- /**
21
- * A function returning the drop operation to be performed.
22
- */
23
- getDropOperation?: (
24
- types: DragTypes,
25
- allowedOperations: DropOperation[]
26
- ) => DropOperation;
27
- /**
28
- * A function returning the drop operation for a specific point.
29
- */
30
- getDropOperationForPoint?: (
31
- types: DragTypes,
32
- allowedOperations: DropOperation[],
33
- x: number,
34
- y: number
35
- ) => DropOperation;
36
- /** Handler that is called when a valid drag enters the drop target. */
37
- onDropEnter?: (e: DropEnterEvent) => void;
38
- /** Handler that is called when a valid drag is moved within the drop target. */
39
- onDropMove?: (e: DropMoveEvent) => void;
40
- /** Handler that is called after a valid drag is held over the drop target. */
41
- onDropActivate?: (e: DropActivateEvent) => void;
42
- /** Handler that is called when a valid drag exits the drop target. */
43
- onDropExit?: (e: DropExitEvent) => void;
44
- /** Handler that is called when a valid drag is dropped on the drop target. */
45
- onDrop?: (e: DropEvent) => void;
46
- /** Whether there is a separate drop button affordance. */
47
- hasDropButton?: boolean;
48
- /** Whether the drop target is disabled. */
49
- isDisabled?: boolean;
50
- }
51
-
52
- export interface DropState {
53
- /** Whether the drop target is currently being hovered or focused. */
54
- readonly isDropTarget: boolean;
55
- /** Whether the drop target is disabled. */
56
- readonly isDisabled: boolean;
57
- /** Whether there is a drop button. */
58
- readonly hasDropButton: boolean;
59
- /** Enter the drop target. */
60
- enterTarget(x: number, y: number): void;
61
- /** Move within the drop target. */
62
- moveInTarget(x: number, y: number): void;
63
- /** Exit the drop target. */
64
- exitTarget(x: number, y: number): void;
65
- /** Activate the drop target (after holding). */
66
- activateTarget(x: number, y: number): void;
67
- /** Perform a drop on the target. */
68
- drop(x: number, y: number, items: DropItem[], dropOperation: DropOperation): void;
69
- /** Get the drop operation for given types. */
70
- getDropOperation(types: DragTypes, allowedOperations: DropOperation[]): DropOperation;
71
- /** Get the drop operation for a specific point. */
72
- getDropOperationForPoint(
73
- types: DragTypes,
74
- allowedOperations: DropOperation[],
75
- x: number,
76
- y: number
77
- ): DropOperation;
78
- }
79
-
80
- /**
81
- * Creates drop state for managing drop target operations.
82
- *
83
- * @param props - Accessor returning drop state options
84
- * @returns Drop state object
85
- */
86
- export function createDropState(
87
- props: Accessor<DropStateOptions>
88
- ): DropState {
89
- const getProps = createMemo(() => props());
90
-
91
- const [isDropTarget, setIsDropTarget] = createSignal(false);
92
-
93
- const enterTarget = (x: number, y: number) => {
94
- const p = getProps();
95
- if (p.isDisabled) return;
96
-
97
- setIsDropTarget(true);
98
-
99
- if (typeof p.onDropEnter === 'function') {
100
- p.onDropEnter({
101
- type: 'dropenter',
102
- x,
103
- y,
104
- });
105
- }
106
- };
107
-
108
- const moveInTarget = (x: number, y: number) => {
109
- const p = getProps();
110
- if (!isDropTarget() || p.isDisabled) return;
111
-
112
- if (typeof p.onDropMove === 'function') {
113
- p.onDropMove({
114
- type: 'dropmove',
115
- x,
116
- y,
117
- });
118
- }
119
- };
120
-
121
- const exitTarget = (x: number, y: number) => {
122
- const p = getProps();
123
-
124
- setIsDropTarget(false);
125
-
126
- if (typeof p.onDropExit === 'function') {
127
- p.onDropExit({
128
- type: 'dropexit',
129
- x,
130
- y,
131
- });
132
- }
133
- };
134
-
135
- const activateTarget = (x: number, y: number) => {
136
- const p = getProps();
137
- if (p.isDisabled) return;
138
-
139
- if (typeof p.onDropActivate === 'function') {
140
- p.onDropActivate({
141
- type: 'dropactivate',
142
- x,
143
- y,
144
- });
145
- }
146
- };
147
-
148
- const drop = (
149
- x: number,
150
- y: number,
151
- items: DropItem[],
152
- dropOperation: DropOperation
153
- ) => {
154
- const p = getProps();
155
- if (p.isDisabled) return;
156
-
157
- setIsDropTarget(false);
158
-
159
- if (typeof p.onDrop === 'function') {
160
- p.onDrop({
161
- type: 'drop',
162
- x,
163
- y,
164
- items,
165
- dropOperation,
166
- });
167
- }
168
- };
169
-
170
- const getDropOperation = (
171
- types: DragTypes,
172
- allowedOperations: DropOperation[]
173
- ): DropOperation => {
174
- const p = getProps();
175
- if (typeof p.getDropOperation === 'function') {
176
- return p.getDropOperation(types, allowedOperations);
177
- }
178
- return allowedOperations[0] ?? 'cancel';
179
- };
180
-
181
- const getDropOperationForPoint = (
182
- types: DragTypes,
183
- allowedOperations: DropOperation[],
184
- x: number,
185
- y: number
186
- ): DropOperation => {
187
- const p = getProps();
188
- if (typeof p.getDropOperationForPoint === 'function') {
189
- return p.getDropOperationForPoint(types, allowedOperations, x, y);
190
- }
191
- return getDropOperation(types, allowedOperations);
192
- };
193
-
194
- return {
195
- get isDropTarget() {
196
- return isDropTarget();
197
- },
198
- get isDisabled() {
199
- return getProps().isDisabled ?? false;
200
- },
201
- get hasDropButton() {
202
- return getProps().hasDropButton ?? false;
203
- },
204
- enterTarget,
205
- moveInTarget,
206
- exitTarget,
207
- activateTarget,
208
- drop,
209
- getDropOperation,
210
- getDropOperationForPoint,
211
- };
212
- }
1
+ /**
2
+ * Drop state management for solid-stately.
3
+ *
4
+ * Provides reactive state for drop target operations.
5
+ */
6
+
7
+ import { createSignal, createMemo, type Accessor } from "solid-js";
8
+ import type {
9
+ DropItem,
10
+ DropEnterEvent,
11
+ DropMoveEvent,
12
+ DropExitEvent,
13
+ DropActivateEvent,
14
+ DropEvent,
15
+ DropOperation,
16
+ DragTypes,
17
+ } from "./types";
18
+
19
+ export interface DropStateOptions {
20
+ /**
21
+ * A function returning the drop operation to be performed.
22
+ */
23
+ getDropOperation?: (types: DragTypes, allowedOperations: DropOperation[]) => DropOperation;
24
+ /**
25
+ * A function returning the drop operation for a specific point.
26
+ */
27
+ getDropOperationForPoint?: (
28
+ types: DragTypes,
29
+ allowedOperations: DropOperation[],
30
+ x: number,
31
+ y: number,
32
+ ) => DropOperation;
33
+ /** Handler that is called when a valid drag enters the drop target. */
34
+ onDropEnter?: (e: DropEnterEvent) => void;
35
+ /** Handler that is called when a valid drag is moved within the drop target. */
36
+ onDropMove?: (e: DropMoveEvent) => void;
37
+ /** Handler that is called after a valid drag is held over the drop target. */
38
+ onDropActivate?: (e: DropActivateEvent) => void;
39
+ /** Handler that is called when a valid drag exits the drop target. */
40
+ onDropExit?: (e: DropExitEvent) => void;
41
+ /** Handler that is called when a valid drag is dropped on the drop target. */
42
+ onDrop?: (e: DropEvent) => void;
43
+ /** Whether there is a separate drop button affordance. */
44
+ hasDropButton?: boolean;
45
+ /** Whether the drop target is disabled. */
46
+ isDisabled?: boolean;
47
+ }
48
+
49
+ export interface DropState {
50
+ /** Whether the drop target is currently being hovered or focused. */
51
+ readonly isDropTarget: boolean;
52
+ /** Whether the drop target is disabled. */
53
+ readonly isDisabled: boolean;
54
+ /** Whether there is a drop button. */
55
+ readonly hasDropButton: boolean;
56
+ /** Enter the drop target. */
57
+ enterTarget(x: number, y: number): void;
58
+ /** Move within the drop target. */
59
+ moveInTarget(x: number, y: number): void;
60
+ /** Exit the drop target. */
61
+ exitTarget(x: number, y: number): void;
62
+ /** Activate the drop target (after holding). */
63
+ activateTarget(x: number, y: number): void;
64
+ /** Perform a drop on the target. */
65
+ drop(x: number, y: number, items: DropItem[], dropOperation: DropOperation): void;
66
+ /** Get the drop operation for given types. */
67
+ getDropOperation(types: DragTypes, allowedOperations: DropOperation[]): DropOperation;
68
+ /** Get the drop operation for a specific point. */
69
+ getDropOperationForPoint(
70
+ types: DragTypes,
71
+ allowedOperations: DropOperation[],
72
+ x: number,
73
+ y: number,
74
+ ): DropOperation;
75
+ }
76
+
77
+ /**
78
+ * Creates drop state for managing drop target operations.
79
+ *
80
+ * @param props - Accessor returning drop state options
81
+ * @returns Drop state object
82
+ */
83
+ export function createDropState(props: Accessor<DropStateOptions>): DropState {
84
+ const getProps = createMemo(() => props());
85
+
86
+ const [isDropTarget, setIsDropTarget] = createSignal(false);
87
+
88
+ const enterTarget = (x: number, y: number) => {
89
+ const p = getProps();
90
+ if (p.isDisabled) return;
91
+
92
+ setIsDropTarget(true);
93
+
94
+ if (typeof p.onDropEnter === "function") {
95
+ p.onDropEnter({
96
+ type: "dropenter",
97
+ x,
98
+ y,
99
+ });
100
+ }
101
+ };
102
+
103
+ const moveInTarget = (x: number, y: number) => {
104
+ const p = getProps();
105
+ if (!isDropTarget() || p.isDisabled) return;
106
+
107
+ if (typeof p.onDropMove === "function") {
108
+ p.onDropMove({
109
+ type: "dropmove",
110
+ x,
111
+ y,
112
+ });
113
+ }
114
+ };
115
+
116
+ const exitTarget = (x: number, y: number) => {
117
+ const p = getProps();
118
+
119
+ setIsDropTarget(false);
120
+
121
+ if (typeof p.onDropExit === "function") {
122
+ p.onDropExit({
123
+ type: "dropexit",
124
+ x,
125
+ y,
126
+ });
127
+ }
128
+ };
129
+
130
+ const activateTarget = (x: number, y: number) => {
131
+ const p = getProps();
132
+ if (p.isDisabled) return;
133
+
134
+ if (typeof p.onDropActivate === "function") {
135
+ p.onDropActivate({
136
+ type: "dropactivate",
137
+ x,
138
+ y,
139
+ });
140
+ }
141
+ };
142
+
143
+ const drop = (x: number, y: number, items: DropItem[], dropOperation: DropOperation) => {
144
+ const p = getProps();
145
+ if (p.isDisabled) return;
146
+
147
+ setIsDropTarget(false);
148
+
149
+ if (typeof p.onDrop === "function") {
150
+ p.onDrop({
151
+ type: "drop",
152
+ x,
153
+ y,
154
+ items,
155
+ dropOperation,
156
+ });
157
+ }
158
+ };
159
+
160
+ const getDropOperation = (
161
+ types: DragTypes,
162
+ allowedOperations: DropOperation[],
163
+ ): DropOperation => {
164
+ const p = getProps();
165
+ if (typeof p.getDropOperation === "function") {
166
+ return p.getDropOperation(types, allowedOperations);
167
+ }
168
+ return allowedOperations[0] ?? "cancel";
169
+ };
170
+
171
+ const getDropOperationForPoint = (
172
+ types: DragTypes,
173
+ allowedOperations: DropOperation[],
174
+ x: number,
175
+ y: number,
176
+ ): DropOperation => {
177
+ const p = getProps();
178
+ if (typeof p.getDropOperationForPoint === "function") {
179
+ return p.getDropOperationForPoint(types, allowedOperations, x, y);
180
+ }
181
+ return getDropOperation(types, allowedOperations);
182
+ };
183
+
184
+ return {
185
+ get isDropTarget() {
186
+ return isDropTarget();
187
+ },
188
+ get isDisabled() {
189
+ return getProps().isDisabled ?? false;
190
+ },
191
+ get hasDropButton() {
192
+ return getProps().hasDropButton ?? false;
193
+ },
194
+ enterTarget,
195
+ moveInTarget,
196
+ exitTarget,
197
+ activateTarget,
198
+ drop,
199
+ getDropOperation,
200
+ getDropOperationForPoint,
201
+ };
202
+ }
@@ -3,66 +3,93 @@
3
3
  *
4
4
  * Provides reactive state for accepting drops onto a collection.
5
5
  */
6
- import { type Accessor } from 'solid-js';
7
- import type { DropItem, DropTarget, DropOperation, DragTypes, DroppableCollectionEnterEvent, DroppableCollectionActivateEvent, DroppableCollectionExitEvent, DroppableCollectionDropEvent, DroppableCollectionInsertDropEvent, DroppableCollectionRootDropEvent, DroppableCollectionOnItemDropEvent, DroppableCollectionReorderEvent, ItemDropTarget } from './types';
6
+ import { type Accessor } from "solid-js";
7
+ import type {
8
+ DropItem,
9
+ DropTarget,
10
+ DropOperation,
11
+ DragTypes,
12
+ DroppableCollectionEnterEvent,
13
+ DroppableCollectionActivateEvent,
14
+ DroppableCollectionExitEvent,
15
+ DroppableCollectionDropEvent,
16
+ DroppableCollectionInsertDropEvent,
17
+ DroppableCollectionRootDropEvent,
18
+ DroppableCollectionOnItemDropEvent,
19
+ DroppableCollectionReorderEvent,
20
+ ItemDropTarget,
21
+ } from "./types";
8
22
  export interface DroppableCollectionStateOptions {
9
- /**
10
- * The drag types that the droppable collection accepts.
11
- * @default 'all'
12
- */
13
- acceptedDragTypes?: 'all' | Array<string | symbol>;
14
- /**
15
- * A function returning the drop operation to be performed.
16
- */
17
- getDropOperation?: (target: DropTarget, types: DragTypes, allowedOperations: DropOperation[]) => DropOperation;
18
- /** Handler that is called when a valid drag enters a drop target. */
19
- onDropEnter?: (e: DroppableCollectionEnterEvent) => void;
20
- /** Handler that is called after a valid drag is held over a drop target. */
21
- onDropActivate?: (e: DroppableCollectionActivateEvent) => void;
22
- /** Handler that is called when a valid drag exits a drop target. */
23
- onDropExit?: (e: DroppableCollectionExitEvent) => void;
24
- /** Handler that is called when a valid drag is dropped. */
25
- onDrop?: (e: DroppableCollectionDropEvent) => void;
26
- /** Handler that is called when external items are dropped "between" items. */
27
- onInsert?: (e: DroppableCollectionInsertDropEvent) => void;
28
- /** Handler that is called when external items are dropped on the collection's root. */
29
- onRootDrop?: (e: DroppableCollectionRootDropEvent) => void;
30
- /** Handler that is called when items are dropped "on" an item. */
31
- onItemDrop?: (e: DroppableCollectionOnItemDropEvent) => void;
32
- /** Handler that is called when items are reordered within the collection. */
33
- onReorder?: (e: DroppableCollectionReorderEvent) => void;
34
- /** Handler that is called when items are moved within the source collection. */
35
- onMove?: (e: DroppableCollectionReorderEvent) => void;
36
- /** A function returning whether a given target is a valid "on" drop target. */
37
- shouldAcceptItemDrop?: (target: ItemDropTarget, types: DragTypes) => boolean;
38
- /** Whether the droppable collection is disabled. */
39
- isDisabled?: boolean;
23
+ /**
24
+ * The drag types that the droppable collection accepts.
25
+ * @default 'all'
26
+ */
27
+ acceptedDragTypes?: "all" | Array<string | symbol>;
28
+ /**
29
+ * A function returning the drop operation to be performed.
30
+ */
31
+ getDropOperation?: (
32
+ target: DropTarget,
33
+ types: DragTypes,
34
+ allowedOperations: DropOperation[],
35
+ ) => DropOperation;
36
+ /** Handler that is called when a valid drag enters a drop target. */
37
+ onDropEnter?: (e: DroppableCollectionEnterEvent) => void;
38
+ /** Handler that is called after a valid drag is held over a drop target. */
39
+ onDropActivate?: (e: DroppableCollectionActivateEvent) => void;
40
+ /** Handler that is called when a valid drag exits a drop target. */
41
+ onDropExit?: (e: DroppableCollectionExitEvent) => void;
42
+ /** Handler that is called when a valid drag is dropped. */
43
+ onDrop?: (e: DroppableCollectionDropEvent) => void;
44
+ /** Handler that is called when external items are dropped "between" items. */
45
+ onInsert?: (e: DroppableCollectionInsertDropEvent) => void;
46
+ /** Handler that is called when external items are dropped on the collection's root. */
47
+ onRootDrop?: (e: DroppableCollectionRootDropEvent) => void;
48
+ /** Handler that is called when items are dropped "on" an item. */
49
+ onItemDrop?: (e: DroppableCollectionOnItemDropEvent) => void;
50
+ /** Handler that is called when items are reordered within the collection. */
51
+ onReorder?: (e: DroppableCollectionReorderEvent) => void;
52
+ /** Handler that is called when items are moved within the source collection. */
53
+ onMove?: (e: DroppableCollectionReorderEvent) => void;
54
+ /** A function returning whether a given target is a valid "on" drop target. */
55
+ shouldAcceptItemDrop?: (target: ItemDropTarget, types: DragTypes) => boolean;
56
+ /** Whether the droppable collection is disabled. */
57
+ isDisabled?: boolean;
40
58
  }
41
59
  export interface DroppableCollectionState {
42
- /** Whether a drag is currently over the collection. */
43
- readonly isDropTarget: boolean;
44
- /** The current drop target within the collection. */
45
- readonly target: DropTarget | null;
46
- /** Whether the collection is disabled for drops. */
47
- readonly isDisabled: boolean;
48
- /** Set the current drop target. */
49
- setTarget(target: DropTarget | null): void;
50
- /** Check if a drag type is accepted. */
51
- isAccepted(types: DragTypes): boolean;
52
- /** Enter the collection with a drop target. */
53
- enterTarget(target: DropTarget, x: number, y: number): void;
54
- /** Move to a new target within the collection. */
55
- moveToTarget(target: DropTarget, x: number, y: number): void;
56
- /** Exit the collection. */
57
- exitTarget(x: number, y: number): void;
58
- /** Activate the current target. */
59
- activateTarget(x: number, y: number): void;
60
- /** Perform a drop on the collection. */
61
- drop(items: DropItem[], dropOperation: DropOperation, isInternal: boolean, draggingKeys?: Set<string | number>): void;
62
- /** Get the drop operation for a target. */
63
- getDropOperation(target: DropTarget, types: DragTypes, allowedOperations: DropOperation[]): DropOperation;
64
- /** Check if an item drop should be accepted. */
65
- shouldAcceptItemDrop(target: ItemDropTarget, types: DragTypes): boolean;
60
+ /** Whether a drag is currently over the collection. */
61
+ readonly isDropTarget: boolean;
62
+ /** The current drop target within the collection. */
63
+ readonly target: DropTarget | null;
64
+ /** Whether the collection is disabled for drops. */
65
+ readonly isDisabled: boolean;
66
+ /** Set the current drop target. */
67
+ setTarget(target: DropTarget | null): void;
68
+ /** Check if a drag type is accepted. */
69
+ isAccepted(types: DragTypes): boolean;
70
+ /** Enter the collection with a drop target. */
71
+ enterTarget(target: DropTarget, x: number, y: number): void;
72
+ /** Move to a new target within the collection. */
73
+ moveToTarget(target: DropTarget, x: number, y: number): void;
74
+ /** Exit the collection. */
75
+ exitTarget(x: number, y: number): void;
76
+ /** Activate the current target. */
77
+ activateTarget(x: number, y: number): void;
78
+ /** Perform a drop on the collection. */
79
+ drop(
80
+ items: DropItem[],
81
+ dropOperation: DropOperation,
82
+ isInternal: boolean,
83
+ draggingKeys?: Set<string | number>,
84
+ ): void;
85
+ /** Get the drop operation for a target. */
86
+ getDropOperation(
87
+ target: DropTarget,
88
+ types: DragTypes,
89
+ allowedOperations: DropOperation[],
90
+ ): DropOperation;
91
+ /** Check if an item drop should be accepted. */
92
+ shouldAcceptItemDrop(target: ItemDropTarget, types: DragTypes): boolean;
66
93
  }
67
94
  /**
68
95
  * Symbol for directory drag type.
@@ -74,5 +101,7 @@ export declare const DIRECTORY_DRAG_TYPE: symbol;
74
101
  * @param props - Accessor returning droppable collection options
75
102
  * @returns Droppable collection state object
76
103
  */
77
- export declare function createDroppableCollectionState(props: Accessor<DroppableCollectionStateOptions>): DroppableCollectionState;
78
- //# sourceMappingURL=createDroppableCollectionState.d.ts.map
104
+ export declare function createDroppableCollectionState(
105
+ props: Accessor<DroppableCollectionStateOptions>,
106
+ ): DroppableCollectionState;
107
+ //# sourceMappingURL=createDroppableCollectionState.d.ts.map