@proyecto-viviana/solid-stately 0.2.7 → 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 (242) hide show
  1. package/README.md +30 -283
  2. package/dist/autocomplete/createAutocompleteState.d.ts +2 -2
  3. package/dist/autocomplete/index.d.ts +1 -1
  4. package/dist/calendar/createCalendarState.d.ts +22 -7
  5. package/dist/calendar/createDateFieldState.d.ts +30 -7
  6. package/dist/calendar/createDatePickerState.d.ts +60 -0
  7. package/dist/calendar/createRangeCalendarState.d.ts +27 -8
  8. package/dist/calendar/createTimeFieldState.d.ts +34 -7
  9. package/dist/calendar/index.d.ts +7 -6
  10. package/dist/checkbox/createCheckboxGroupState.d.ts +6 -6
  11. package/dist/checkbox/index.d.ts +1 -1
  12. package/dist/collections/ListCollection.d.ts +1 -1
  13. package/dist/collections/createListState.d.ts +8 -8
  14. package/dist/collections/createMenuState.d.ts +7 -7
  15. package/dist/collections/createSelectionState.d.ts +5 -5
  16. package/dist/collections/index.d.ts +5 -5
  17. package/dist/collections/types.d.ts +12 -12
  18. package/dist/color/Color.d.ts +1 -1
  19. package/dist/color/createColorAreaState.d.ts +4 -2
  20. package/dist/color/createColorFieldState.d.ts +38 -12
  21. package/dist/color/createColorSliderState.d.ts +9 -2
  22. package/dist/color/createColorWheelState.d.ts +13 -2
  23. package/dist/color/getColorChannels.d.ts +1 -1
  24. package/dist/color/index.d.ts +6 -6
  25. package/dist/color/types.d.ts +4 -4
  26. package/dist/combobox/createComboBoxState.d.ts +27 -13
  27. package/dist/combobox/index.d.ts +1 -1
  28. package/dist/data/createAsyncList.d.ts +4 -4
  29. package/dist/data/createListData.d.ts +2 -2
  30. package/dist/data/createTreeData.d.ts +6 -2
  31. package/dist/data/index.d.ts +3 -3
  32. package/dist/datepicker/index.d.ts +2 -4
  33. package/dist/disclosure/createDisclosureState.d.ts +2 -2
  34. package/dist/disclosure/index.d.ts +1 -1
  35. package/dist/dnd/createDragState.d.ts +2 -2
  36. package/dist/dnd/createDraggableCollectionState.d.ts +2 -2
  37. package/dist/dnd/createDropState.d.ts +2 -2
  38. package/dist/dnd/createDroppableCollectionState.d.ts +3 -3
  39. package/dist/dnd/index.d.ts +5 -5
  40. package/dist/dnd/types.d.ts +16 -16
  41. package/dist/form/createFormValidationState.d.ts +3 -3
  42. package/dist/form/index.d.ts +1 -1
  43. package/dist/grid/createGridState.d.ts +2 -2
  44. package/dist/grid/index.d.ts +2 -2
  45. package/dist/grid/types.d.ts +13 -11
  46. package/dist/index.d.ts +31 -30
  47. package/dist/index.js +7924 -7238
  48. package/dist/index.js.map +1 -1
  49. package/dist/menu/index.d.ts +2 -2
  50. package/dist/numberfield/createNumberFieldState.d.ts +2 -2
  51. package/dist/numberfield/index.d.ts +1 -1
  52. package/dist/overlays/createOverlayTriggerState.d.ts +2 -2
  53. package/dist/overlays/index.d.ts +1 -1
  54. package/dist/radio/createRadioGroupState.d.ts +7 -7
  55. package/dist/radio/index.d.ts +1 -1
  56. package/dist/searchfield/createSearchFieldState.d.ts +2 -2
  57. package/dist/searchfield/index.d.ts +2 -2
  58. package/dist/select/createSelectState.d.ts +8 -8
  59. package/dist/select/index.d.ts +1 -1
  60. package/dist/selection/index.d.ts +5 -5
  61. package/dist/slider/createSliderState.d.ts +3 -3
  62. package/dist/slider/index.d.ts +2 -2
  63. package/dist/steplist/createStepListState.d.ts +48 -0
  64. package/dist/steplist/index.d.ts +1 -0
  65. package/dist/table/TableCollection.d.ts +3 -3
  66. package/dist/table/createTableColumnResizeState.d.ts +54 -0
  67. package/dist/table/createTableState.d.ts +2 -2
  68. package/dist/table/index.d.ts +5 -3
  69. package/dist/table/types.d.ts +10 -10
  70. package/dist/tabs/createTabListState.d.ts +5 -5
  71. package/dist/tabs/index.d.ts +1 -1
  72. package/dist/textfield/createTextFieldState.d.ts +2 -2
  73. package/dist/textfield/index.d.ts +1 -1
  74. package/dist/toast/createToastState.d.ts +8 -2
  75. package/dist/toast/index.d.ts +1 -1
  76. package/dist/toggle/createToggleGroupState.d.ts +4 -4
  77. package/dist/toggle/createToggleState.d.ts +2 -2
  78. package/dist/toggle/index.d.ts +2 -2
  79. package/dist/tooltip/createTooltipTriggerState.d.ts +2 -2
  80. package/dist/tooltip/index.d.ts +1 -1
  81. package/dist/tree/TreeCollection.d.ts +2 -2
  82. package/dist/tree/createTreeState.d.ts +2 -2
  83. package/dist/tree/index.d.ts +3 -3
  84. package/dist/tree/types.d.ts +19 -13
  85. package/dist/utils/index.d.ts +1 -1
  86. package/dist/utils/reactivity.d.ts +1 -1
  87. package/package.json +29 -30
  88. package/src/autocomplete/createAutocompleteState.d.ts +19 -17
  89. package/src/autocomplete/createAutocompleteState.ts +24 -30
  90. package/src/autocomplete/index.d.ts +6 -2
  91. package/src/autocomplete/index.ts +1 -1
  92. package/src/calendar/createCalendarState.d.ts +139 -117
  93. package/src/calendar/createCalendarState.ts +221 -74
  94. package/src/calendar/createDateFieldState.d.ts +130 -95
  95. package/src/calendar/createDateFieldState.ts +263 -151
  96. package/src/calendar/createDatePickerState.ts +347 -0
  97. package/src/calendar/createRangeCalendarState.d.ts +154 -129
  98. package/src/calendar/createRangeCalendarState.ts +293 -79
  99. package/src/calendar/createTimeFieldState.d.ts +81 -79
  100. package/src/calendar/createTimeFieldState.ts +187 -108
  101. package/src/calendar/index.d.ts +80 -7
  102. package/src/calendar/index.ts +21 -12
  103. package/src/checkbox/createCheckboxGroupState.d.ts +57 -55
  104. package/src/checkbox/createCheckboxGroupState.ts +20 -29
  105. package/src/checkbox/index.d.ts +6 -2
  106. package/src/checkbox/index.ts +1 -1
  107. package/src/collections/ListCollection.d.ts +25 -22
  108. package/src/collections/ListCollection.ts +6 -6
  109. package/src/collections/createListState.d.ts +73 -58
  110. package/src/collections/createListState.ts +19 -18
  111. package/src/collections/createMenuState.d.ts +36 -31
  112. package/src/collections/createMenuState.ts +18 -12
  113. package/src/collections/createSelectionState.d.ts +78 -65
  114. package/src/collections/createSelectionState.ts +36 -32
  115. package/src/collections/index.d.ts +38 -6
  116. package/src/collections/index.ts +5 -10
  117. package/src/collections/types.d.ts +101 -101
  118. package/src/collections/types.ts +12 -12
  119. package/src/color/Color.d.ts +20 -5
  120. package/src/color/Color.ts +357 -254
  121. package/src/color/createColorAreaState.d.ts +67 -65
  122. package/src/color/createColorAreaState.ts +21 -13
  123. package/src/color/createColorFieldState.d.ts +46 -44
  124. package/src/color/createColorFieldState.ts +285 -149
  125. package/src/color/createColorSliderState.d.ts +58 -56
  126. package/src/color/createColorSliderState.ts +45 -14
  127. package/src/color/createColorWheelState.d.ts +42 -40
  128. package/src/color/createColorWheelState.ts +101 -64
  129. package/src/color/getColorChannels.ts +7 -5
  130. package/src/color/index.d.ts +36 -7
  131. package/src/color/index.ts +6 -9
  132. package/src/color/types.d.ts +68 -63
  133. package/src/color/types.ts +11 -19
  134. package/src/combobox/createComboBoxState.d.ts +107 -105
  135. package/src/combobox/createComboBoxState.ts +176 -89
  136. package/src/combobox/index.d.ts +10 -2
  137. package/src/combobox/index.ts +1 -1
  138. package/src/data/createAsyncList.ts +89 -63
  139. package/src/data/createListData.ts +67 -67
  140. package/src/data/createTreeData.ts +304 -91
  141. package/src/data/index.ts +3 -3
  142. package/src/datepicker/index.ts +6 -10
  143. package/src/disclosure/createDisclosureState.d.ts +47 -43
  144. package/src/disclosure/createDisclosureState.ts +7 -21
  145. package/src/disclosure/index.d.ts +10 -2
  146. package/src/disclosure/index.ts +1 -1
  147. package/src/dnd/createDragState.d.ts +51 -42
  148. package/src/dnd/createDragState.ts +12 -14
  149. package/src/dnd/createDraggableCollectionState.d.ts +52 -41
  150. package/src/dnd/createDraggableCollectionState.ts +14 -21
  151. package/src/dnd/createDropState.d.ts +64 -45
  152. package/src/dnd/createDropState.ts +22 -32
  153. package/src/dnd/createDroppableCollectionState.d.ts +88 -59
  154. package/src/dnd/createDroppableCollectionState.ts +40 -43
  155. package/src/dnd/index.d.ts +54 -6
  156. package/src/dnd/index.ts +5 -18
  157. package/src/dnd/types.d.ts +167 -156
  158. package/src/dnd/types.ts +20 -21
  159. package/src/form/createFormValidationState.d.ts +47 -45
  160. package/src/form/createFormValidationState.ts +30 -63
  161. package/src/form/index.d.ts +16 -2
  162. package/src/form/index.ts +1 -1
  163. package/src/grid/createGridState.d.ts +7 -4
  164. package/src/grid/createGridState.ts +44 -51
  165. package/src/grid/index.d.ts +3 -3
  166. package/src/grid/index.ts +2 -8
  167. package/src/grid/types.d.ts +136 -129
  168. package/src/grid/types.ts +20 -18
  169. package/src/index.d.ts +310 -26
  170. package/src/index.ts +48 -89
  171. package/src/menu/index.ts +2 -4
  172. package/src/numberfield/createNumberFieldState.d.ts +56 -54
  173. package/src/numberfield/createNumberFieldState.ts +26 -31
  174. package/src/numberfield/index.d.ts +6 -2
  175. package/src/numberfield/index.ts +1 -1
  176. package/src/overlays/createOverlayTriggerState.d.ts +22 -20
  177. package/src/overlays/createOverlayTriggerState.ts +3 -4
  178. package/src/overlays/index.d.ts +6 -2
  179. package/src/overlays/index.ts +1 -1
  180. package/src/radio/createRadioGroupState.d.ts +54 -52
  181. package/src/radio/createRadioGroupState.ts +27 -29
  182. package/src/radio/index.d.ts +7 -2
  183. package/src/radio/index.ts +1 -1
  184. package/src/searchfield/createSearchFieldState.d.ts +16 -14
  185. package/src/searchfield/createSearchFieldState.ts +5 -11
  186. package/src/searchfield/index.d.ts +3 -3
  187. package/src/searchfield/index.ts +2 -5
  188. package/src/select/createSelectState.d.ts +63 -61
  189. package/src/select/createSelectState.ts +27 -27
  190. package/src/select/index.d.ts +2 -2
  191. package/src/select/index.ts +1 -5
  192. package/src/selection/index.ts +6 -7
  193. package/src/slider/createSliderState.d.ts +60 -60
  194. package/src/slider/createSliderState.ts +55 -33
  195. package/src/slider/index.d.ts +3 -3
  196. package/src/slider/index.ts +2 -6
  197. package/src/ssr/index.d.ts +1 -1
  198. package/src/ssr/index.ts +2 -2
  199. package/src/steplist/createStepListState.ts +191 -0
  200. package/src/steplist/index.ts +5 -0
  201. package/src/table/TableCollection.d.ts +42 -40
  202. package/src/table/TableCollection.ts +61 -64
  203. package/src/table/createTableColumnResizeState.ts +242 -0
  204. package/src/table/createTableState.d.ts +7 -4
  205. package/src/table/createTableState.ts +10 -7
  206. package/src/table/index.d.ts +14 -4
  207. package/src/table/index.ts +10 -3
  208. package/src/table/types.d.ts +98 -92
  209. package/src/table/types.ts +17 -13
  210. package/src/tabs/createTabListState.d.ts +59 -57
  211. package/src/tabs/createTabListState.ts +24 -31
  212. package/src/tabs/index.d.ts +8 -2
  213. package/src/tabs/index.ts +1 -1
  214. package/src/textfield/createTextFieldState.d.ts +16 -14
  215. package/src/textfield/createTextFieldState.ts +7 -18
  216. package/src/textfield/index.d.ts +6 -2
  217. package/src/textfield/index.ts +1 -1
  218. package/src/toast/createToastState.d.ts +92 -86
  219. package/src/toast/createToastState.ts +48 -43
  220. package/src/toast/index.d.ts +12 -2
  221. package/src/toast/index.ts +1 -1
  222. package/src/toggle/createToggleGroupState.ts +11 -21
  223. package/src/toggle/createToggleState.d.ts +19 -19
  224. package/src/toggle/createToggleState.ts +2 -16
  225. package/src/toggle/index.d.ts +2 -2
  226. package/src/toggle/index.ts +2 -6
  227. package/src/tooltip/createTooltipTriggerState.d.ts +17 -17
  228. package/src/tooltip/createTooltipTriggerState.ts +12 -11
  229. package/src/tooltip/index.d.ts +7 -2
  230. package/src/tooltip/index.ts +1 -1
  231. package/src/tree/TreeCollection.d.ts +26 -23
  232. package/src/tree/TreeCollection.ts +29 -22
  233. package/src/tree/createTreeState.d.ts +7 -4
  234. package/src/tree/createTreeState.ts +39 -41
  235. package/src/tree/index.d.ts +10 -4
  236. package/src/tree/index.ts +3 -3
  237. package/src/tree/types.d.ts +131 -126
  238. package/src/tree/types.ts +22 -13
  239. package/src/utils/index.d.ts +2 -2
  240. package/src/utils/index.ts +1 -1
  241. package/src/utils/reactivity.d.ts +2 -2
  242. package/src/utils/reactivity.ts +3 -3
@@ -2,49 +2,54 @@
2
2
  * State management for menu components.
3
3
  * Based on @react-stately/menu.
4
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;
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<
9
+ ListStateProps<T>,
10
+ "selectionMode" | "disallowEmptySelection"
11
+ > {
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;
13
16
  }
14
17
  export interface MenuState<T = unknown> extends ListState<T> {
15
- /** Close the menu. */
16
- close(): void;
18
+ /** Close the menu. */
19
+ close(): void;
17
20
  }
18
21
  /**
19
22
  * Creates state for a menu component.
20
23
  * Menus are single-select lists that support actions.
21
24
  */
22
- export declare function createMenuState<T = unknown>(props: MaybeAccessor<MenuStateProps<T>>): MenuState<T>;
25
+ export declare function createMenuState<T = unknown>(
26
+ props: MaybeAccessor<MenuStateProps<T>>,
27
+ ): MenuState<T>;
23
28
  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;
29
+ /** Whether the menu is open (controlled). */
30
+ isOpen?: boolean;
31
+ /** Default open state (uncontrolled). */
32
+ defaultOpen?: boolean;
33
+ /** Handler called when the open state changes. */
34
+ onOpenChange?: (isOpen: boolean) => void;
30
35
  }
31
36
  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;
37
+ /** Whether the menu is open. */
38
+ readonly isOpen: () => boolean;
39
+ /** Open the menu. */
40
+ open(): void;
41
+ /** Close the menu. */
42
+ close(): void;
43
+ /** Toggle the menu. */
44
+ toggle(): void;
45
+ /** Focus strategy for when the menu opens. */
46
+ readonly focusStrategy: () => "first" | "last" | null;
47
+ /** Set the focus strategy. */
48
+ setFocusStrategy(strategy: "first" | "last" | null): void;
44
49
  }
45
50
  /**
46
51
  * Creates state for a menu trigger (button that opens a menu).
47
52
  * This is essentially the same as overlay trigger state but with focus strategy.
48
53
  */
49
- export { createOverlayTriggerState as createMenuTriggerState } from '../overlays';
50
- //# sourceMappingURL=createMenuState.d.ts.map
54
+ export { createOverlayTriggerState as createMenuTriggerState } from "../overlays";
55
+ //# sourceMappingURL=createMenuState.d.ts.map
@@ -3,12 +3,11 @@
3
3
  * Based on @react-stately/menu.
4
4
  */
5
5
 
6
- import { access, type MaybeAccessor } from '../utils';
7
- import { createListState, type ListState, type ListStateProps } from './createListState';
8
- import type { Key } from './types';
6
+ import { access, type MaybeAccessor } from "../utils";
7
+ import { createListState, type ListState, type ListStateProps } from "./createListState";
8
+ import type { Key } from "./types";
9
9
 
10
- export interface MenuStateProps<T = unknown>
11
- extends Omit<ListStateProps<T>, 'selectionMode' | 'disallowEmptySelection'> {
10
+ export interface MenuStateProps<T = unknown> extends ListStateProps<T> {
12
11
  /** Handler called when an item is activated (pressed). */
13
12
  onAction?: (key: Key) => void;
14
13
  /** Handler called when the menu should close. */
@@ -25,11 +24,11 @@ export interface MenuState<T = unknown> extends ListState<T> {
25
24
  * Menus are single-select lists that support actions.
26
25
  */
27
26
  export function createMenuState<T = unknown>(
28
- props: MaybeAccessor<MenuStateProps<T>>
27
+ props: MaybeAccessor<MenuStateProps<T>>,
29
28
  ): MenuState<T> {
30
29
  const getProps = () => access(props);
31
30
 
32
- // Create list state with single selection
31
+ // Menus default to action-only items, but can opt into single or multiple selection.
33
32
  const listState = createListState<T>({
34
33
  get items() {
35
34
  return getProps().items;
@@ -49,15 +48,22 @@ export function createMenuState<T = unknown>(
49
48
  get disabledBehavior() {
50
49
  return getProps().disabledBehavior;
51
50
  },
52
- selectionMode: 'none', // Menus typically use onAction, not selection
53
- disallowEmptySelection: true,
51
+ get selectionMode() {
52
+ return getProps().selectionMode ?? "none";
53
+ },
54
+ get disallowEmptySelection() {
55
+ return getProps().disallowEmptySelection;
56
+ },
54
57
  get selectedKeys() {
58
+ if ((getProps().selectionMode ?? "none") === "none") return undefined;
55
59
  return getProps().selectedKeys;
56
60
  },
57
61
  get defaultSelectedKeys() {
62
+ if ((getProps().selectionMode ?? "none") === "none") return undefined;
58
63
  return getProps().defaultSelectedKeys;
59
64
  },
60
65
  get onSelectionChange() {
66
+ if ((getProps().selectionMode ?? "none") === "none") return undefined;
61
67
  return getProps().onSelectionChange;
62
68
  },
63
69
  get selectionBehavior() {
@@ -94,13 +100,13 @@ export interface MenuTriggerState {
94
100
  /** Toggle the menu. */
95
101
  toggle(): void;
96
102
  /** Focus strategy for when the menu opens. */
97
- readonly focusStrategy: () => 'first' | 'last' | null;
103
+ readonly focusStrategy: () => "first" | "last" | null;
98
104
  /** Set the focus strategy. */
99
- setFocusStrategy(strategy: 'first' | 'last' | null): void;
105
+ setFocusStrategy(strategy: "first" | "last" | null): void;
100
106
  }
101
107
 
102
108
  /**
103
109
  * Creates state for a menu trigger (button that opens a menu).
104
110
  * This is essentially the same as overlay trigger state but with focus strategy.
105
111
  */
106
- export { createOverlayTriggerState as createMenuTriggerState } from '../overlays';
112
+ export { createOverlayTriggerState as createMenuTriggerState } from "../overlays";
@@ -2,75 +2,88 @@
2
2
  * Selection state management for collections.
3
3
  * Based on @react-stately/selection.
4
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';
5
+ import { type Accessor } from "solid-js";
6
+ import { type MaybeAccessor } from "../utils";
7
+ import type {
8
+ Collection,
9
+ DisabledBehavior,
10
+ Key,
11
+ Selection,
12
+ SelectionBehavior,
13
+ SelectionMode,
14
+ } from "./types";
8
15
  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;
16
+ /** The selection mode. */
17
+ selectionMode?: SelectionMode;
18
+ /** How selection behaves on interaction. */
19
+ selectionBehavior?: SelectionBehavior;
20
+ /** Whether empty selection is disallowed. */
21
+ disallowEmptySelection?: boolean;
22
+ /** Currently selected keys (controlled). */
23
+ selectedKeys?: "all" | Iterable<Key>;
24
+ /** Default selected keys (uncontrolled). */
25
+ defaultSelectedKeys?: "all" | Iterable<Key>;
26
+ /** Handler for selection changes. */
27
+ onSelectionChange?: (keys: Selection) => void;
28
+ /** Keys of disabled items. */
29
+ disabledKeys?: Iterable<Key>;
30
+ /** How disabled keys behave. */
31
+ disabledBehavior?: DisabledBehavior;
32
+ /** Whether to allow duplicate selection events. */
33
+ allowDuplicateSelectionEvents?: boolean;
27
34
  }
28
35
  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;
36
+ /** The selection mode. */
37
+ readonly selectionMode: Accessor<SelectionMode>;
38
+ /** The selection behavior. */
39
+ readonly selectionBehavior: Accessor<SelectionBehavior>;
40
+ /** Whether empty selection is disallowed. */
41
+ readonly disallowEmptySelection: Accessor<boolean>;
42
+ /** The currently selected keys. */
43
+ readonly selectedKeys: Accessor<Selection>;
44
+ /** Set of disabled keys. */
45
+ readonly disabledKeys: Accessor<Set<Key>>;
46
+ /** How disabled keys behave. */
47
+ readonly disabledBehavior: Accessor<DisabledBehavior>;
48
+ /** Whether the selection is empty. */
49
+ readonly isEmpty: Accessor<boolean>;
50
+ /** Whether all items are selected. */
51
+ readonly isSelectAll: Accessor<boolean>;
52
+ /** Check if a key is selected. */
53
+ isSelected(key: Key): boolean;
54
+ /** Check if a key is disabled. */
55
+ isDisabled(key: Key): boolean;
56
+ /** Set the selection behavior. */
57
+ setSelectionBehavior(behavior: SelectionBehavior): void;
58
+ /** Toggle selection for a key. */
59
+ toggleSelection(key: Key): void;
60
+ /** Replace selection with a single key. */
61
+ replaceSelection(key: Key): void;
62
+ /** Set multiple selected keys. */
63
+ setSelectedKeys(keys: Iterable<Key>): void;
64
+ /** Select all items. */
65
+ selectAll(): void;
66
+ /** Clear all selection. */
67
+ clearSelection(): void;
68
+ /** Toggle between select all and clear. */
69
+ toggleSelectAll(): void;
70
+ /** Extend selection to a key (for shift-click). */
71
+ extendSelection(toKey: Key, collection: Collection): void;
72
+ /** Select a key based on interaction. */
73
+ select(
74
+ key: Key,
75
+ e?: {
76
+ shiftKey?: boolean;
77
+ ctrlKey?: boolean;
78
+ metaKey?: boolean;
79
+ },
80
+ collection?: Collection,
81
+ ): void;
71
82
  }
72
83
  /**
73
84
  * Creates selection state for a collection.
74
85
  */
75
- export declare function createSelectionState(props?: MaybeAccessor<SelectionStateProps>): SelectionState;
76
- //# sourceMappingURL=createSelectionState.d.ts.map
86
+ export declare function createSelectionState(
87
+ props?: MaybeAccessor<SelectionStateProps>,
88
+ ): SelectionState;
89
+ //# sourceMappingURL=createSelectionState.d.ts.map
@@ -3,8 +3,8 @@
3
3
  * Based on @react-stately/selection.
4
4
  */
5
5
 
6
- import { createSignal, createMemo, type Accessor } from 'solid-js';
7
- import { access, type MaybeAccessor } from '../utils';
6
+ import { createSignal, createMemo, type Accessor } from "solid-js";
7
+ import { access, type MaybeAccessor } from "../utils";
8
8
  import type {
9
9
  Collection,
10
10
  DisabledBehavior,
@@ -13,7 +13,7 @@ import type {
13
13
  Selection,
14
14
  SelectionBehavior,
15
15
  SelectionMode,
16
- } from './types';
16
+ } from "./types";
17
17
 
18
18
  export interface SelectionStateProps {
19
19
  /** The selection mode. */
@@ -23,9 +23,9 @@ export interface SelectionStateProps {
23
23
  /** Whether empty selection is disallowed. */
24
24
  disallowEmptySelection?: boolean;
25
25
  /** Currently selected keys (controlled). */
26
- selectedKeys?: 'all' | Iterable<Key>;
26
+ selectedKeys?: "all" | Iterable<Key>;
27
27
  /** Default selected keys (uncontrolled). */
28
- defaultSelectedKeys?: 'all' | Iterable<Key>;
28
+ defaultSelectedKeys?: "all" | Iterable<Key>;
29
29
  /** Handler for selection changes. */
30
30
  onSelectionChange?: (keys: Selection) => void;
31
31
  /** Keys of disabled items. */
@@ -74,30 +74,34 @@ export interface SelectionState {
74
74
  /** Extend selection to a key (for shift-click). */
75
75
  extendSelection(toKey: Key, collection: Collection): void;
76
76
  /** Select a key based on interaction. */
77
- select(key: Key, e?: { shiftKey?: boolean; ctrlKey?: boolean; metaKey?: boolean }, collection?: Collection): void;
77
+ select(
78
+ key: Key,
79
+ e?: { shiftKey?: boolean; ctrlKey?: boolean; metaKey?: boolean },
80
+ collection?: Collection,
81
+ ): void;
78
82
  }
79
83
 
80
84
  /**
81
85
  * Creates selection state for a collection.
82
86
  */
83
87
  export function createSelectionState(
84
- props: MaybeAccessor<SelectionStateProps> = {}
88
+ props: MaybeAccessor<SelectionStateProps> = {},
85
89
  ): SelectionState {
86
90
  const getProps = () => access(props);
87
91
 
88
92
  // Selection behavior state
89
- const [internalBehavior, setInternalBehavior] = createSignal<SelectionBehavior>('toggle');
93
+ const [internalBehavior, setInternalBehavior] = createSignal<SelectionBehavior>("toggle");
90
94
 
91
95
  // Internal selection state
92
96
  const [internalSelectedKeys, setInternalSelectedKeys] = createSignal<Selection>(
93
- getInitialSelection(getProps().defaultSelectedKeys)
97
+ getInitialSelection(getProps().defaultSelectedKeys),
94
98
  );
95
99
 
96
100
  // Track anchor for range selection
97
101
  const [anchorKey, setAnchorKey] = createSignal<Key | null>(null);
98
102
 
99
103
  // Computed values
100
- const selectionMode: Accessor<SelectionMode> = () => getProps().selectionMode ?? 'none';
104
+ const selectionMode: Accessor<SelectionMode> = () => getProps().selectionMode ?? "none";
101
105
 
102
106
  const selectionBehavior: Accessor<SelectionBehavior> = () => {
103
107
  return getProps().selectionBehavior ?? internalBehavior();
@@ -121,22 +125,22 @@ export function createSelectionState(
121
125
  });
122
126
 
123
127
  const disabledBehavior: Accessor<DisabledBehavior> = () => {
124
- return getProps().disabledBehavior ?? 'all';
128
+ return getProps().disabledBehavior ?? "all";
125
129
  };
126
130
 
127
131
  const isEmpty: Accessor<boolean> = () => {
128
132
  const keys = selectedKeys();
129
- return keys !== 'all' && keys.size === 0;
133
+ return keys !== "all" && keys.size === 0;
130
134
  };
131
135
 
132
136
  const isSelectAll: Accessor<boolean> = () => {
133
- return selectedKeys() === 'all';
137
+ return selectedKeys() === "all";
134
138
  };
135
139
 
136
140
  // Methods
137
141
  const isSelected = (key: Key): boolean => {
138
142
  const keys = selectedKeys();
139
- if (keys === 'all') return true;
143
+ if (keys === "all") return true;
140
144
  return keys.has(key);
141
145
  };
142
146
 
@@ -156,8 +160,8 @@ export function createSelectionState(
156
160
  // Uncontrolled mode
157
161
  const current = internalSelectedKeys();
158
162
  const isDifferent =
159
- current === 'all' ||
160
- newSelection === 'all' ||
163
+ current === "all" ||
164
+ newSelection === "all" ||
161
165
  current.size !== (newSelection as Set<Key>).size ||
162
166
  ![...current].every((k) => (newSelection as Set<Key>).has(k));
163
167
 
@@ -169,11 +173,11 @@ export function createSelectionState(
169
173
 
170
174
  const toggleSelection = (key: Key) => {
171
175
  if (isDisabled(key)) return;
172
- if (selectionMode() === 'none') return;
176
+ if (selectionMode() === "none") return;
173
177
 
174
178
  const current = selectedKeys();
175
179
 
176
- if (selectionMode() === 'single') {
180
+ if (selectionMode() === "single") {
177
181
  if (isSelected(key) && !disallowEmptySelection()) {
178
182
  updateSelection(new Set());
179
183
  } else {
@@ -183,7 +187,7 @@ export function createSelectionState(
183
187
  }
184
188
 
185
189
  // Multiple selection
186
- if (current === 'all') {
190
+ if (current === "all") {
187
191
  // Can't toggle when all selected without collection
188
192
  return;
189
193
  }
@@ -203,7 +207,7 @@ export function createSelectionState(
203
207
 
204
208
  const replaceSelection = (key: Key) => {
205
209
  if (isDisabled(key)) return;
206
- if (selectionMode() === 'none') return;
210
+ if (selectionMode() === "none") return;
207
211
 
208
212
  updateSelection(new Set([key]));
209
213
  setAnchorKey(key);
@@ -215,8 +219,8 @@ export function createSelectionState(
215
219
  };
216
220
 
217
221
  const selectAll = () => {
218
- if (selectionMode() !== 'multiple') return;
219
- updateSelection('all');
222
+ if (selectionMode() !== "multiple") return;
223
+ updateSelection("all");
220
224
  };
221
225
 
222
226
  const clearSelection = () => {
@@ -225,7 +229,7 @@ export function createSelectionState(
225
229
  };
226
230
 
227
231
  const toggleSelectAll = () => {
228
- if (selectionMode() !== 'multiple') return;
232
+ if (selectionMode() !== "multiple") return;
229
233
 
230
234
  if (isSelectAll()) {
231
235
  clearSelection();
@@ -236,7 +240,7 @@ export function createSelectionState(
236
240
 
237
241
  const extendSelection = (toKey: Key, collection: Collection) => {
238
242
  if (isDisabled(toKey)) return;
239
- if (selectionMode() !== 'multiple') {
243
+ if (selectionMode() !== "multiple") {
240
244
  replaceSelection(toKey);
241
245
  return;
242
246
  }
@@ -267,16 +271,16 @@ export function createSelectionState(
267
271
  const select = (
268
272
  key: Key,
269
273
  e?: { shiftKey?: boolean; ctrlKey?: boolean; metaKey?: boolean },
270
- collection?: Collection
274
+ collection?: Collection,
271
275
  ) => {
272
276
  if (isDisabled(key)) return;
273
- if (selectionMode() === 'none') return;
277
+ if (selectionMode() === "none") return;
274
278
 
275
279
  const mode = selectionMode();
276
280
  const behavior = selectionBehavior();
277
281
 
278
- if (mode === 'single') {
279
- if (behavior === 'replace' || !isSelected(key)) {
282
+ if (mode === "single") {
283
+ if (behavior === "replace" || !isSelected(key)) {
280
284
  replaceSelection(key);
281
285
  } else if (!disallowEmptySelection()) {
282
286
  clearSelection();
@@ -290,7 +294,7 @@ export function createSelectionState(
290
294
  return;
291
295
  }
292
296
 
293
- if (e?.ctrlKey || e?.metaKey || behavior === 'toggle') {
297
+ if (e?.ctrlKey || e?.metaKey || behavior === "toggle") {
294
298
  toggleSelection(key);
295
299
  } else {
296
300
  replaceSelection(key);
@@ -325,12 +329,12 @@ export function createSelectionState(
325
329
  }
326
330
 
327
331
  // Helper functions
328
- function getInitialSelection(defaultKeys?: 'all' | Iterable<Key>): Selection {
332
+ function getInitialSelection(defaultKeys?: "all" | Iterable<Key>): Selection {
329
333
  if (defaultKeys === undefined) return new Set();
330
334
  return normalizeSelection(defaultKeys);
331
335
  }
332
336
 
333
- function normalizeSelection(keys: 'all' | Iterable<Key>): Selection {
334
- if (keys === 'all') return 'all';
337
+ function normalizeSelection(keys: "all" | Iterable<Key>): Selection {
338
+ if (keys === "all") return "all";
335
339
  return new Set(keys);
336
340
  }
@@ -1,6 +1,38 @@
1
- export type { Key, SelectionMode, SelectionBehavior, Selection, FocusStrategy, DisabledBehavior, CollectionNode, Collection, ItemProps, SectionProps, CollectionBase, SingleSelection, MultipleSelection, } from './types';
2
- export { ListCollection, createListCollection } from './ListCollection';
3
- export { createSelectionState, type SelectionStateProps, type SelectionState, } from './createSelectionState';
4
- export { createListState, createSingleSelectListState, type ListStateProps, type ListState, type SingleSelectListStateProps, type SingleSelectListState, } from './createListState';
5
- export { createMenuState, createMenuTriggerState, type MenuStateProps, type MenuState, type MenuTriggerStateProps, type MenuTriggerState, } from './createMenuState';
6
- //# sourceMappingURL=index.d.ts.map
1
+ export type {
2
+ Key,
3
+ SelectionMode,
4
+ SelectionBehavior,
5
+ Selection,
6
+ FocusStrategy,
7
+ DisabledBehavior,
8
+ CollectionNode,
9
+ Collection,
10
+ ItemProps,
11
+ SectionProps,
12
+ CollectionBase,
13
+ SingleSelection,
14
+ MultipleSelection,
15
+ } from "./types";
16
+ export { ListCollection, createListCollection } from "./ListCollection";
17
+ export {
18
+ createSelectionState,
19
+ type SelectionStateProps,
20
+ type SelectionState,
21
+ } from "./createSelectionState";
22
+ export {
23
+ createListState,
24
+ createSingleSelectListState,
25
+ type ListStateProps,
26
+ type ListState,
27
+ type SingleSelectListStateProps,
28
+ type SingleSelectListState,
29
+ } from "./createListState";
30
+ export {
31
+ createMenuState,
32
+ createMenuTriggerState,
33
+ type MenuStateProps,
34
+ type MenuState,
35
+ type MenuTriggerStateProps,
36
+ type MenuTriggerState,
37
+ } from "./createMenuState";
38
+ //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,3 @@
1
- // Types
2
1
  export type {
3
2
  Key,
4
3
  SelectionMode,
@@ -13,19 +12,16 @@ export type {
13
12
  CollectionBase,
14
13
  SingleSelection,
15
14
  MultipleSelection,
16
- } from './types';
15
+ } from "./types";
17
16
 
18
- // List Collection
19
- export { ListCollection, createListCollection } from './ListCollection';
17
+ export { ListCollection, createListCollection } from "./ListCollection";
20
18
 
21
- // Selection State
22
19
  export {
23
20
  createSelectionState,
24
21
  type SelectionStateProps,
25
22
  type SelectionState,
26
- } from './createSelectionState';
23
+ } from "./createSelectionState";
27
24
 
28
- // List State
29
25
  export {
30
26
  createListState,
31
27
  createSingleSelectListState,
@@ -33,9 +29,8 @@ export {
33
29
  type ListState,
34
30
  type SingleSelectListStateProps,
35
31
  type SingleSelectListState,
36
- } from './createListState';
32
+ } from "./createListState";
37
33
 
38
- // Menu State
39
34
  export {
40
35
  createMenuState,
41
36
  createMenuTriggerState,
@@ -43,4 +38,4 @@ export {
43
38
  type MenuState,
44
39
  type MenuTriggerStateProps,
45
40
  type MenuTriggerState,
46
- } from './createMenuState';
41
+ } from "./createMenuState";