@proyecto-viviana/solid-stately 0.1.5 → 0.2.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 (217) hide show
  1. package/dist/index.js +226 -504
  2. package/dist/index.jsx +6407 -0
  3. package/package.json +3 -5
  4. package/dist/index.js.map +0 -1
  5. package/src/autocomplete/createAutocompleteState.d.ts +0 -46
  6. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  7. package/src/autocomplete/createAutocompleteState.ts +0 -90
  8. package/src/autocomplete/index.d.ts +0 -2
  9. package/src/autocomplete/index.d.ts.map +0 -1
  10. package/src/autocomplete/index.ts +0 -5
  11. package/src/calendar/createCalendarState.d.ts +0 -130
  12. package/src/calendar/createCalendarState.d.ts.map +0 -1
  13. package/src/calendar/createCalendarState.ts +0 -461
  14. package/src/calendar/createDateFieldState.d.ts +0 -110
  15. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  16. package/src/calendar/createDateFieldState.ts +0 -562
  17. package/src/calendar/createRangeCalendarState.d.ts +0 -146
  18. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  19. package/src/calendar/createRangeCalendarState.ts +0 -535
  20. package/src/calendar/createTimeFieldState.d.ts +0 -95
  21. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  22. package/src/calendar/createTimeFieldState.ts +0 -483
  23. package/src/calendar/index.d.ts +0 -7
  24. package/src/calendar/index.d.ts.map +0 -1
  25. package/src/calendar/index.ts +0 -81
  26. package/src/checkbox/createCheckboxGroupState.d.ts +0 -71
  27. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  28. package/src/checkbox/createCheckboxGroupState.ts +0 -193
  29. package/src/checkbox/index.d.ts +0 -2
  30. package/src/checkbox/index.d.ts.map +0 -1
  31. package/src/checkbox/index.ts +0 -5
  32. package/src/collections/ListCollection.d.ts +0 -37
  33. package/src/collections/ListCollection.d.ts.map +0 -1
  34. package/src/collections/ListCollection.ts +0 -146
  35. package/src/collections/createListState.d.ts +0 -79
  36. package/src/collections/createListState.d.ts.map +0 -1
  37. package/src/collections/createListState.ts +0 -264
  38. package/src/collections/createMenuState.d.ts +0 -50
  39. package/src/collections/createMenuState.d.ts.map +0 -1
  40. package/src/collections/createMenuState.ts +0 -106
  41. package/src/collections/createSelectionState.d.ts +0 -76
  42. package/src/collections/createSelectionState.d.ts.map +0 -1
  43. package/src/collections/createSelectionState.ts +0 -336
  44. package/src/collections/index.d.ts +0 -6
  45. package/src/collections/index.d.ts.map +0 -1
  46. package/src/collections/index.ts +0 -46
  47. package/src/collections/types.d.ts +0 -147
  48. package/src/collections/types.d.ts.map +0 -1
  49. package/src/collections/types.ts +0 -169
  50. package/src/color/Color.d.ts +0 -28
  51. package/src/color/Color.d.ts.map +0 -1
  52. package/src/color/Color.ts +0 -951
  53. package/src/color/createColorAreaState.d.ts +0 -76
  54. package/src/color/createColorAreaState.d.ts.map +0 -1
  55. package/src/color/createColorAreaState.ts +0 -293
  56. package/src/color/createColorFieldState.d.ts +0 -55
  57. package/src/color/createColorFieldState.d.ts.map +0 -1
  58. package/src/color/createColorFieldState.ts +0 -292
  59. package/src/color/createColorSliderState.d.ts +0 -67
  60. package/src/color/createColorSliderState.d.ts.map +0 -1
  61. package/src/color/createColorSliderState.ts +0 -241
  62. package/src/color/createColorWheelState.d.ts +0 -51
  63. package/src/color/createColorWheelState.d.ts.map +0 -1
  64. package/src/color/createColorWheelState.ts +0 -211
  65. package/src/color/index.d.ts +0 -10
  66. package/src/color/index.d.ts.map +0 -1
  67. package/src/color/index.ts +0 -47
  68. package/src/color/types.d.ts +0 -106
  69. package/src/color/types.d.ts.map +0 -1
  70. package/src/color/types.ts +0 -127
  71. package/src/combobox/createComboBoxState.d.ts +0 -125
  72. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  73. package/src/combobox/createComboBoxState.ts +0 -703
  74. package/src/combobox/index.d.ts +0 -5
  75. package/src/combobox/index.d.ts.map +0 -1
  76. package/src/combobox/index.ts +0 -13
  77. package/src/disclosure/createDisclosureState.d.ts +0 -64
  78. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  79. package/src/disclosure/createDisclosureState.ts +0 -193
  80. package/src/disclosure/index.d.ts +0 -2
  81. package/src/disclosure/index.d.ts.map +0 -1
  82. package/src/disclosure/index.ts +0 -9
  83. package/src/dnd/createDragState.d.ts +0 -59
  84. package/src/dnd/createDragState.d.ts.map +0 -1
  85. package/src/dnd/createDragState.ts +0 -153
  86. package/src/dnd/createDraggableCollectionState.d.ts +0 -57
  87. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  88. package/src/dnd/createDraggableCollectionState.ts +0 -165
  89. package/src/dnd/createDropState.d.ts +0 -61
  90. package/src/dnd/createDropState.d.ts.map +0 -1
  91. package/src/dnd/createDropState.ts +0 -212
  92. package/src/dnd/createDroppableCollectionState.d.ts +0 -78
  93. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  94. package/src/dnd/createDroppableCollectionState.ts +0 -357
  95. package/src/dnd/index.d.ts +0 -11
  96. package/src/dnd/index.d.ts.map +0 -1
  97. package/src/dnd/index.ts +0 -76
  98. package/src/dnd/types.d.ts +0 -264
  99. package/src/dnd/types.d.ts.map +0 -1
  100. package/src/dnd/types.ts +0 -317
  101. package/src/form/createFormValidationState.d.ts +0 -100
  102. package/src/form/createFormValidationState.d.ts.map +0 -1
  103. package/src/form/createFormValidationState.ts +0 -389
  104. package/src/form/index.d.ts +0 -2
  105. package/src/form/index.d.ts.map +0 -1
  106. package/src/form/index.ts +0 -15
  107. package/src/grid/createGridState.d.ts +0 -12
  108. package/src/grid/createGridState.d.ts.map +0 -1
  109. package/src/grid/createGridState.ts +0 -327
  110. package/src/grid/index.d.ts +0 -7
  111. package/src/grid/index.d.ts.map +0 -1
  112. package/src/grid/index.ts +0 -13
  113. package/src/grid/types.d.ts +0 -156
  114. package/src/grid/types.d.ts.map +0 -1
  115. package/src/grid/types.ts +0 -179
  116. package/src/index.d.ts +0 -26
  117. package/src/index.d.ts.map +0 -1
  118. package/src/index.ts +0 -383
  119. package/src/numberfield/createNumberFieldState.d.ts +0 -65
  120. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  121. package/src/numberfield/createNumberFieldState.ts +0 -383
  122. package/src/numberfield/index.d.ts +0 -2
  123. package/src/numberfield/index.d.ts.map +0 -1
  124. package/src/numberfield/index.ts +0 -5
  125. package/src/overlays/createOverlayTriggerState.d.ts +0 -32
  126. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  127. package/src/overlays/createOverlayTriggerState.ts +0 -67
  128. package/src/overlays/index.d.ts +0 -2
  129. package/src/overlays/index.d.ts.map +0 -1
  130. package/src/overlays/index.ts +0 -5
  131. package/src/radio/createRadioGroupState.d.ts +0 -77
  132. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  133. package/src/radio/createRadioGroupState.ts +0 -201
  134. package/src/radio/index.d.ts +0 -2
  135. package/src/radio/index.d.ts.map +0 -1
  136. package/src/radio/index.ts +0 -6
  137. package/src/searchfield/createSearchFieldState.d.ts +0 -25
  138. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  139. package/src/searchfield/createSearchFieldState.ts +0 -62
  140. package/src/searchfield/index.d.ts +0 -3
  141. package/src/searchfield/index.d.ts.map +0 -1
  142. package/src/searchfield/index.ts +0 -5
  143. package/src/select/createSelectState.d.ts +0 -73
  144. package/src/select/createSelectState.d.ts.map +0 -1
  145. package/src/select/createSelectState.ts +0 -181
  146. package/src/select/index.d.ts +0 -2
  147. package/src/select/index.d.ts.map +0 -1
  148. package/src/select/index.ts +0 -5
  149. package/src/slider/createSliderState.d.ts +0 -72
  150. package/src/slider/createSliderState.d.ts.map +0 -1
  151. package/src/slider/createSliderState.ts +0 -211
  152. package/src/slider/index.d.ts +0 -3
  153. package/src/slider/index.d.ts.map +0 -1
  154. package/src/slider/index.ts +0 -6
  155. package/src/ssr/index.d.ts +0 -28
  156. package/src/ssr/index.d.ts.map +0 -1
  157. package/src/ssr/index.ts +0 -41
  158. package/src/table/TableCollection.d.ts +0 -52
  159. package/src/table/TableCollection.d.ts.map +0 -1
  160. package/src/table/TableCollection.ts +0 -388
  161. package/src/table/createTableState.d.ts +0 -12
  162. package/src/table/createTableState.d.ts.map +0 -1
  163. package/src/table/createTableState.ts +0 -127
  164. package/src/table/index.d.ts +0 -8
  165. package/src/table/index.d.ts.map +0 -1
  166. package/src/table/index.ts +0 -18
  167. package/src/table/types.d.ts +0 -139
  168. package/src/table/types.d.ts.map +0 -1
  169. package/src/table/types.ts +0 -150
  170. package/src/tabs/createTabListState.d.ts +0 -68
  171. package/src/tabs/createTabListState.d.ts.map +0 -1
  172. package/src/tabs/createTabListState.ts +0 -240
  173. package/src/tabs/index.d.ts +0 -2
  174. package/src/tabs/index.d.ts.map +0 -1
  175. package/src/tabs/index.ts +0 -7
  176. package/src/textfield/createTextFieldState.d.ts +0 -30
  177. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  178. package/src/textfield/createTextFieldState.ts +0 -75
  179. package/src/textfield/index.d.ts +0 -2
  180. package/src/textfield/index.d.ts.map +0 -1
  181. package/src/textfield/index.ts +0 -5
  182. package/src/toast/createToastState.d.ts +0 -118
  183. package/src/toast/createToastState.d.ts.map +0 -1
  184. package/src/toast/createToastState.ts +0 -316
  185. package/src/toast/index.d.ts +0 -2
  186. package/src/toast/index.d.ts.map +0 -1
  187. package/src/toast/index.ts +0 -11
  188. package/src/toggle/createToggleState.d.ts +0 -34
  189. package/src/toggle/createToggleState.d.ts.map +0 -1
  190. package/src/toggle/createToggleState.ts +0 -94
  191. package/src/toggle/index.d.ts +0 -2
  192. package/src/toggle/index.d.ts.map +0 -1
  193. package/src/toggle/index.ts +0 -5
  194. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  195. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  196. package/src/tooltip/createTooltipTriggerState.ts +0 -183
  197. package/src/tooltip/index.d.ts +0 -2
  198. package/src/tooltip/index.d.ts.map +0 -1
  199. package/src/tooltip/index.ts +0 -6
  200. package/src/tree/TreeCollection.d.ts +0 -40
  201. package/src/tree/TreeCollection.d.ts.map +0 -1
  202. package/src/tree/TreeCollection.ts +0 -175
  203. package/src/tree/createTreeState.d.ts +0 -14
  204. package/src/tree/createTreeState.d.ts.map +0 -1
  205. package/src/tree/createTreeState.ts +0 -392
  206. package/src/tree/index.d.ts +0 -7
  207. package/src/tree/index.d.ts.map +0 -1
  208. package/src/tree/index.ts +0 -13
  209. package/src/tree/types.d.ts +0 -157
  210. package/src/tree/types.d.ts.map +0 -1
  211. package/src/tree/types.ts +0 -174
  212. package/src/utils/index.d.ts +0 -2
  213. package/src/utils/index.d.ts.map +0 -1
  214. package/src/utils/index.ts +0 -1
  215. package/src/utils/reactivity.d.ts +0 -28
  216. package/src/utils/reactivity.d.ts.map +0 -1
  217. package/src/utils/reactivity.ts +0 -36
@@ -1,264 +0,0 @@
1
- /**
2
- * State management for list-like components.
3
- * Combines collection and selection state.
4
- * Based on @react-stately/list.
5
- */
6
-
7
- import { createSignal, type Accessor } from 'solid-js';
8
- import { access, type MaybeAccessor } from '../utils';
9
- import { ListCollection } from './ListCollection';
10
- import { createSelectionState, type SelectionState } from './createSelectionState';
11
- import type {
12
- Collection,
13
- CollectionNode,
14
- DisabledBehavior,
15
- FocusStrategy,
16
- Key,
17
- SelectionBehavior,
18
- SelectionMode,
19
- } from './types';
20
-
21
- export interface ListStateProps<T = unknown> {
22
- /** The items in the list (for dynamic rendering). */
23
- items?: T[];
24
- /** Function to get a key from an item. */
25
- getKey?: (item: T) => Key;
26
- /** Function to get text value from an item. */
27
- getTextValue?: (item: T) => string;
28
- /** Function to check if an item is disabled. */
29
- getDisabled?: (item: T) => boolean;
30
- /** Keys of disabled items. */
31
- disabledKeys?: Iterable<Key>;
32
- /** How disabled keys behave. */
33
- disabledBehavior?: DisabledBehavior;
34
- /** The selection mode. */
35
- selectionMode?: SelectionMode;
36
- /** How selection behaves on interaction. */
37
- selectionBehavior?: SelectionBehavior;
38
- /** Whether empty selection is disallowed. */
39
- disallowEmptySelection?: boolean;
40
- /** Currently selected keys (controlled). */
41
- selectedKeys?: 'all' | Iterable<Key>;
42
- /** Default selected keys (uncontrolled). */
43
- defaultSelectedKeys?: 'all' | Iterable<Key>;
44
- /** Handler for selection changes. */
45
- onSelectionChange?: (keys: 'all' | Set<Key>) => void;
46
- /** Whether to allow duplicate selection events. */
47
- allowDuplicateSelectionEvents?: boolean;
48
- }
49
-
50
- export interface ListState<T = unknown> extends SelectionState {
51
- /** The collection of items. */
52
- readonly collection: Accessor<Collection<T>>;
53
- /** Whether the collection is focused. */
54
- readonly isFocused: Accessor<boolean>;
55
- /** Set the focused state. */
56
- setFocused(isFocused: boolean): void;
57
- /** The currently focused key. */
58
- readonly focusedKey: Accessor<Key | null>;
59
- /** Set the focused key. */
60
- setFocusedKey(key: Key | null, childStrategy?: FocusStrategy): void;
61
- /** The child focus strategy. */
62
- readonly childFocusStrategy: Accessor<FocusStrategy | null>;
63
- }
64
-
65
- /**
66
- * Creates state for a list component with selection.
67
- */
68
- export function createListState<T = unknown>(
69
- props: MaybeAccessor<ListStateProps<T>>
70
- ): ListState<T> {
71
- const getProps = () => access(props);
72
-
73
- // Build collection from items
74
- const collection: Accessor<Collection<T>> = () => {
75
- const p = getProps();
76
- const items = p.items ?? [];
77
-
78
- const nodes: CollectionNode<T>[] = items.map((item, index) => {
79
- const key = p.getKey?.(item) ?? (item as any).key ?? (item as any).id ?? index;
80
- const textValue =
81
- p.getTextValue?.(item) ?? (item as any).textValue ?? (item as any).label ?? String(item);
82
- const isDisabled = p.getDisabled?.(item) ?? (item as any).isDisabled ?? false;
83
-
84
- return {
85
- type: 'item' as const,
86
- key,
87
- value: item,
88
- textValue,
89
- rendered: null as any,
90
- level: 0,
91
- index,
92
- parentKey: null,
93
- hasChildNodes: false,
94
- childNodes: [],
95
- isDisabled,
96
- };
97
- });
98
-
99
- return new ListCollection(nodes);
100
- };
101
-
102
- // Combine disabled keys from props and items
103
- const combinedDisabledKeys = (): Iterable<Key> => {
104
- const p = getProps();
105
- const propsDisabled = p.disabledKeys ? [...p.disabledKeys] : [];
106
- const itemDisabled: Key[] = [];
107
-
108
- const coll = collection();
109
- for (const node of coll) {
110
- if (node.isDisabled) {
111
- itemDisabled.push(node.key);
112
- }
113
- }
114
-
115
- return [...new Set([...propsDisabled, ...itemDisabled])];
116
- };
117
-
118
- // Create selection state
119
- const selectionState = createSelectionState({
120
- get selectionMode() {
121
- return getProps().selectionMode;
122
- },
123
- get selectionBehavior() {
124
- return getProps().selectionBehavior;
125
- },
126
- get disallowEmptySelection() {
127
- return getProps().disallowEmptySelection;
128
- },
129
- get selectedKeys() {
130
- return getProps().selectedKeys;
131
- },
132
- get defaultSelectedKeys() {
133
- return getProps().defaultSelectedKeys;
134
- },
135
- get onSelectionChange() {
136
- return getProps().onSelectionChange;
137
- },
138
- get disabledKeys() {
139
- return combinedDisabledKeys();
140
- },
141
- get disabledBehavior() {
142
- return getProps().disabledBehavior;
143
- },
144
- get allowDuplicateSelectionEvents() {
145
- return getProps().allowDuplicateSelectionEvents;
146
- },
147
- });
148
-
149
- // Focus state
150
- const [isFocused, setIsFocused] = createSignal(false);
151
- const [focusedKey, setFocusedKeyInternal] = createSignal<Key | null>(null);
152
- const [childFocusStrategy, setChildFocusStrategy] = createSignal<FocusStrategy | null>(null);
153
-
154
- const setFocusedKey = (key: Key | null, childStrategy?: FocusStrategy) => {
155
- setFocusedKeyInternal(key);
156
- setChildFocusStrategy(childStrategy ?? null);
157
- };
158
-
159
- return {
160
- collection,
161
- isFocused,
162
- setFocused: setIsFocused,
163
- focusedKey,
164
- setFocusedKey,
165
- childFocusStrategy,
166
- ...selectionState,
167
- };
168
- }
169
-
170
- /**
171
- * Props for single selection list state.
172
- */
173
- export interface SingleSelectListStateProps<T = unknown>
174
- extends Omit<ListStateProps<T>, 'selectionMode' | 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange'> {
175
- /** The currently selected key (controlled). */
176
- selectedKey?: Key | null;
177
- /** The default selected key (uncontrolled). */
178
- defaultSelectedKey?: Key;
179
- /** Handler for selection changes. */
180
- onSelectionChange?: (key: Key | null) => void;
181
- }
182
-
183
- export interface SingleSelectListState<T = unknown> extends ListState<T> {
184
- /** The currently selected key. */
185
- readonly selectedKey: Accessor<Key | null>;
186
- /** Set the selected key. */
187
- setSelectedKey(key: Key | null): void;
188
- /** The currently selected item. */
189
- readonly selectedItem: Accessor<CollectionNode<T> | null>;
190
- }
191
-
192
- /**
193
- * Creates state for a single-select list component.
194
- */
195
- export function createSingleSelectListState<T = unknown>(
196
- props: MaybeAccessor<SingleSelectListStateProps<T>>
197
- ): SingleSelectListState<T> {
198
- const getProps = () => access(props);
199
-
200
- // Convert single selection props to multiple selection props
201
- const listState = createListState<T>({
202
- get items() {
203
- return getProps().items;
204
- },
205
- get getKey() {
206
- return getProps().getKey;
207
- },
208
- get getTextValue() {
209
- return getProps().getTextValue;
210
- },
211
- get getDisabled() {
212
- return getProps().getDisabled;
213
- },
214
- get disabledKeys() {
215
- return getProps().disabledKeys;
216
- },
217
- get disabledBehavior() {
218
- return getProps().disabledBehavior;
219
- },
220
- selectionMode: 'single',
221
- disallowEmptySelection: true,
222
- allowDuplicateSelectionEvents: true,
223
- get selectedKeys() {
224
- const key = getProps().selectedKey;
225
- return key != null ? [key] : [];
226
- },
227
- get defaultSelectedKeys() {
228
- const key = getProps().defaultSelectedKey;
229
- return key != null ? [key] : undefined;
230
- },
231
- onSelectionChange(keys) {
232
- if (keys === 'all') return;
233
- const key = keys.values().next().value ?? null;
234
- getProps().onSelectionChange?.(key);
235
- },
236
- });
237
-
238
- const selectedKey: Accessor<Key | null> = () => {
239
- const keys = listState.selectedKeys();
240
- if (keys === 'all') return null;
241
- return keys.values().next().value ?? null;
242
- };
243
-
244
- const setSelectedKey = (key: Key | null) => {
245
- if (key === null) {
246
- listState.clearSelection();
247
- } else {
248
- listState.replaceSelection(key);
249
- }
250
- };
251
-
252
- const selectedItem: Accessor<CollectionNode<T> | null> = () => {
253
- const key = selectedKey();
254
- if (key === null) return null;
255
- return listState.collection().getItem(key);
256
- };
257
-
258
- return {
259
- ...listState,
260
- selectedKey,
261
- setSelectedKey,
262
- selectedItem,
263
- };
264
- }
@@ -1,50 +0,0 @@
1
- /**
2
- * State management for menu components.
3
- * Based on @react-stately/menu.
4
- */
5
- import { type MaybeAccessor } from '../utils';
6
- import { type ListState, type ListStateProps } from './createListState';
7
- import type { Key } from './types';
8
- export interface MenuStateProps<T = unknown> extends Omit<ListStateProps<T>, 'selectionMode' | 'disallowEmptySelection'> {
9
- /** Handler called when an item is activated (pressed). */
10
- onAction?: (key: Key) => void;
11
- /** Handler called when the menu should close. */
12
- onClose?: () => void;
13
- }
14
- export interface MenuState<T = unknown> extends ListState<T> {
15
- /** Close the menu. */
16
- close(): void;
17
- }
18
- /**
19
- * Creates state for a menu component.
20
- * Menus are single-select lists that support actions.
21
- */
22
- export declare function createMenuState<T = unknown>(props: MaybeAccessor<MenuStateProps<T>>): MenuState<T>;
23
- export interface MenuTriggerStateProps {
24
- /** Whether the menu is open (controlled). */
25
- isOpen?: boolean;
26
- /** Default open state (uncontrolled). */
27
- defaultOpen?: boolean;
28
- /** Handler called when the open state changes. */
29
- onOpenChange?: (isOpen: boolean) => void;
30
- }
31
- export interface MenuTriggerState {
32
- /** Whether the menu is open. */
33
- readonly isOpen: () => boolean;
34
- /** Open the menu. */
35
- open(): void;
36
- /** Close the menu. */
37
- close(): void;
38
- /** Toggle the menu. */
39
- toggle(): void;
40
- /** Focus strategy for when the menu opens. */
41
- readonly focusStrategy: () => 'first' | 'last' | null;
42
- /** Set the focus strategy. */
43
- setFocusStrategy(strategy: 'first' | 'last' | null): void;
44
- }
45
- /**
46
- * Creates state for a menu trigger (button that opens a menu).
47
- * This is essentially the same as overlay trigger state but with focus strategy.
48
- */
49
- export { createOverlayTriggerState as createMenuTriggerState } from '../overlays';
50
- //# sourceMappingURL=createMenuState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createMenuState.d.ts","sourceRoot":"","sources":["createMenuState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO,CACzC,SAAQ,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,GAAG,wBAAwB,CAAC;IAC3E,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAC1D,sBAAsB;IACtB,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EACzC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACtC,SAAS,CAAC,CAAC,CAAC,CA+Cd;AAED,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAC/B,qBAAqB;IACrB,IAAI,IAAI,IAAI,CAAC;IACb,sBAAsB;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,uBAAuB;IACvB,MAAM,IAAI,IAAI,CAAC;IACf,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IACtD,8BAA8B;IAC9B,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3D;AAED;;;GAGG;AACH,OAAO,EAAE,yBAAyB,IAAI,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,106 +0,0 @@
1
- /**
2
- * State management for menu components.
3
- * Based on @react-stately/menu.
4
- */
5
-
6
- import { access, type MaybeAccessor } from '../utils';
7
- import { createListState, type ListState, type ListStateProps } from './createListState';
8
- import type { Key } from './types';
9
-
10
- export interface MenuStateProps<T = unknown>
11
- extends Omit<ListStateProps<T>, 'selectionMode' | 'disallowEmptySelection'> {
12
- /** Handler called when an item is activated (pressed). */
13
- onAction?: (key: Key) => void;
14
- /** Handler called when the menu should close. */
15
- onClose?: () => void;
16
- }
17
-
18
- export interface MenuState<T = unknown> extends ListState<T> {
19
- /** Close the menu. */
20
- close(): void;
21
- }
22
-
23
- /**
24
- * Creates state for a menu component.
25
- * Menus are single-select lists that support actions.
26
- */
27
- export function createMenuState<T = unknown>(
28
- props: MaybeAccessor<MenuStateProps<T>>
29
- ): MenuState<T> {
30
- const getProps = () => access(props);
31
-
32
- // Create list state with single selection
33
- const listState = createListState<T>({
34
- get items() {
35
- return getProps().items;
36
- },
37
- get getKey() {
38
- return getProps().getKey;
39
- },
40
- get getTextValue() {
41
- return getProps().getTextValue;
42
- },
43
- get getDisabled() {
44
- return getProps().getDisabled;
45
- },
46
- get disabledKeys() {
47
- return getProps().disabledKeys;
48
- },
49
- get disabledBehavior() {
50
- return getProps().disabledBehavior;
51
- },
52
- selectionMode: 'none', // Menus typically use onAction, not selection
53
- disallowEmptySelection: true,
54
- get selectedKeys() {
55
- return getProps().selectedKeys;
56
- },
57
- get defaultSelectedKeys() {
58
- return getProps().defaultSelectedKeys;
59
- },
60
- get onSelectionChange() {
61
- return getProps().onSelectionChange;
62
- },
63
- get selectionBehavior() {
64
- return getProps().selectionBehavior;
65
- },
66
- });
67
-
68
- const close = () => {
69
- getProps().onClose?.();
70
- };
71
-
72
- return {
73
- ...listState,
74
- close,
75
- };
76
- }
77
-
78
- export interface MenuTriggerStateProps {
79
- /** Whether the menu is open (controlled). */
80
- isOpen?: boolean;
81
- /** Default open state (uncontrolled). */
82
- defaultOpen?: boolean;
83
- /** Handler called when the open state changes. */
84
- onOpenChange?: (isOpen: boolean) => void;
85
- }
86
-
87
- export interface MenuTriggerState {
88
- /** Whether the menu is open. */
89
- readonly isOpen: () => boolean;
90
- /** Open the menu. */
91
- open(): void;
92
- /** Close the menu. */
93
- close(): void;
94
- /** Toggle the menu. */
95
- toggle(): void;
96
- /** Focus strategy for when the menu opens. */
97
- readonly focusStrategy: () => 'first' | 'last' | null;
98
- /** Set the focus strategy. */
99
- setFocusStrategy(strategy: 'first' | 'last' | null): void;
100
- }
101
-
102
- /**
103
- * Creates state for a menu trigger (button that opens a menu).
104
- * This is essentially the same as overlay trigger state but with focus strategy.
105
- */
106
- export { createOverlayTriggerState as createMenuTriggerState } from '../overlays';
@@ -1,76 +0,0 @@
1
- /**
2
- * Selection state management for collections.
3
- * Based on @react-stately/selection.
4
- */
5
- import { type Accessor } from 'solid-js';
6
- import { type MaybeAccessor } from '../utils';
7
- import type { Collection, DisabledBehavior, Key, Selection, SelectionBehavior, SelectionMode } from './types';
8
- export interface SelectionStateProps {
9
- /** The selection mode. */
10
- selectionMode?: SelectionMode;
11
- /** How selection behaves on interaction. */
12
- selectionBehavior?: SelectionBehavior;
13
- /** Whether empty selection is disallowed. */
14
- disallowEmptySelection?: boolean;
15
- /** Currently selected keys (controlled). */
16
- selectedKeys?: 'all' | Iterable<Key>;
17
- /** Default selected keys (uncontrolled). */
18
- defaultSelectedKeys?: 'all' | Iterable<Key>;
19
- /** Handler for selection changes. */
20
- onSelectionChange?: (keys: Selection) => void;
21
- /** Keys of disabled items. */
22
- disabledKeys?: Iterable<Key>;
23
- /** How disabled keys behave. */
24
- disabledBehavior?: DisabledBehavior;
25
- /** Whether to allow duplicate selection events. */
26
- allowDuplicateSelectionEvents?: boolean;
27
- }
28
- export interface SelectionState {
29
- /** The selection mode. */
30
- readonly selectionMode: Accessor<SelectionMode>;
31
- /** The selection behavior. */
32
- readonly selectionBehavior: Accessor<SelectionBehavior>;
33
- /** Whether empty selection is disallowed. */
34
- readonly disallowEmptySelection: Accessor<boolean>;
35
- /** The currently selected keys. */
36
- readonly selectedKeys: Accessor<Selection>;
37
- /** Set of disabled keys. */
38
- readonly disabledKeys: Accessor<Set<Key>>;
39
- /** How disabled keys behave. */
40
- readonly disabledBehavior: Accessor<DisabledBehavior>;
41
- /** Whether the selection is empty. */
42
- readonly isEmpty: Accessor<boolean>;
43
- /** Whether all items are selected. */
44
- readonly isSelectAll: Accessor<boolean>;
45
- /** Check if a key is selected. */
46
- isSelected(key: Key): boolean;
47
- /** Check if a key is disabled. */
48
- isDisabled(key: Key): boolean;
49
- /** Set the selection behavior. */
50
- setSelectionBehavior(behavior: SelectionBehavior): void;
51
- /** Toggle selection for a key. */
52
- toggleSelection(key: Key): void;
53
- /** Replace selection with a single key. */
54
- replaceSelection(key: Key): void;
55
- /** Set multiple selected keys. */
56
- setSelectedKeys(keys: Iterable<Key>): void;
57
- /** Select all items. */
58
- selectAll(): void;
59
- /** Clear all selection. */
60
- clearSelection(): void;
61
- /** Toggle between select all and clear. */
62
- toggleSelectAll(): void;
63
- /** Extend selection to a key (for shift-click). */
64
- extendSelection(toKey: Key, collection: Collection): void;
65
- /** Select a key based on interaction. */
66
- select(key: Key, e?: {
67
- shiftKey?: boolean;
68
- ctrlKey?: boolean;
69
- metaKey?: boolean;
70
- }, collection?: Collection): void;
71
- }
72
- /**
73
- * Creates selection state for a collection.
74
- */
75
- export declare function createSelectionState(props?: MaybeAccessor<SelectionStateProps>): SelectionState;
76
- //# sourceMappingURL=createSelectionState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSelectionState.d.ts","sourceRoot":"","sources":["createSelectionState.ts"],"names":[],"mappings":"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"}