@proyecto-viviana/solid-stately 0.2.3 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/autocomplete/createAutocompleteState.d.ts +2 -1
- package/dist/checkbox/createCheckboxGroupState.d.ts +10 -1
- package/dist/collections/types.d.ts +11 -0
- package/dist/color/getColorChannels.d.ts +20 -0
- package/dist/data/createAsyncList.d.ts +111 -0
- package/dist/data/createListData.d.ts +65 -0
- package/dist/data/createTreeData.d.ts +61 -0
- package/dist/data/index.d.ts +3 -0
- package/dist/datepicker/index.d.ts +10 -0
- package/dist/grid/types.d.ts +5 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +3737 -2697
- package/dist/index.js.map +1 -7
- package/dist/menu/index.d.ts +8 -0
- package/dist/radio/createRadioGroupState.d.ts +10 -1
- package/dist/select/createSelectState.d.ts +17 -0
- package/dist/selection/index.d.ts +11 -0
- package/dist/toast/createToastState.d.ts +7 -1
- package/dist/toggle/createToggleGroupState.d.ts +45 -0
- package/dist/toggle/index.d.ts +1 -0
- package/dist/tree/TreeCollection.d.ts +3 -2
- package/package.json +6 -5
- package/src/autocomplete/createAutocompleteState.ts +10 -11
- package/src/calendar/createDateFieldState.ts +24 -1
- package/src/checkbox/createCheckboxGroupState.ts +42 -6
- package/src/collections/ListCollection.ts +152 -146
- package/src/collections/createListState.ts +266 -264
- package/src/collections/createMenuState.ts +106 -106
- package/src/collections/createSelectionState.ts +336 -336
- package/src/collections/index.ts +46 -46
- package/src/collections/types.ts +181 -169
- package/src/color/Color.ts +951 -951
- package/src/color/createColorAreaState.ts +293 -293
- package/src/color/createColorFieldState.ts +292 -292
- package/src/color/createColorSliderState.ts +241 -241
- package/src/color/createColorWheelState.ts +211 -211
- package/src/color/getColorChannels.ts +34 -0
- package/src/color/index.ts +47 -47
- package/src/color/types.ts +127 -127
- package/src/combobox/createComboBoxState.ts +703 -703
- package/src/combobox/index.ts +13 -13
- package/src/data/createAsyncList.ts +377 -0
- package/src/data/createListData.ts +298 -0
- package/src/data/createTreeData.ts +433 -0
- package/src/data/index.ts +25 -0
- package/src/datepicker/index.ts +36 -0
- package/src/disclosure/createDisclosureState.ts +4 -4
- package/src/dnd/createDragState.ts +153 -153
- package/src/dnd/createDraggableCollectionState.ts +165 -165
- package/src/dnd/createDropState.ts +212 -212
- package/src/dnd/createDroppableCollectionState.ts +357 -357
- package/src/dnd/index.ts +76 -76
- package/src/dnd/types.ts +317 -317
- package/src/form/createFormValidationState.ts +389 -389
- package/src/form/index.ts +15 -15
- package/src/grid/types.ts +5 -0
- package/src/index.ts +49 -0
- package/src/menu/index.ts +19 -0
- package/src/numberfield/createNumberFieldState.ts +427 -383
- package/src/numberfield/index.ts +5 -5
- package/src/overlays/createOverlayTriggerState.ts +67 -67
- package/src/overlays/index.ts +5 -5
- package/src/radio/createRadioGroupState.ts +44 -6
- package/src/searchfield/createSearchFieldState.ts +62 -62
- package/src/searchfield/index.ts +5 -5
- package/src/select/createSelectState.ts +290 -181
- package/src/select/index.ts +5 -5
- package/src/selection/index.ts +28 -0
- package/src/slider/createSliderState.ts +211 -211
- package/src/slider/index.ts +6 -6
- package/src/tabs/createTabListState.ts +37 -11
- package/src/toast/createToastState.d.ts +6 -1
- package/src/toast/createToastState.ts +8 -1
- package/src/toggle/createToggleGroupState.ts +127 -0
- package/src/toggle/index.ts +6 -0
- package/src/tooltip/createTooltipTriggerState.ts +183 -183
- package/src/tooltip/index.ts +6 -6
- package/src/tree/TreeCollection.ts +208 -175
- package/src/tree/createTreeState.ts +392 -392
- package/src/tree/index.ts +13 -13
- package/src/tree/types.ts +174 -174
|
@@ -1,181 +1,290 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* State management for select components.
|
|
3
|
-
* Based on @react-stately/select useSelectState.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { createSignal, type Accessor } from 'solid-js';
|
|
7
|
-
import { access, type MaybeAccessor } from '../utils';
|
|
8
|
-
import { createListState } from '../collections/createListState';
|
|
9
|
-
import { createOverlayTriggerState } from '../overlays';
|
|
10
|
-
import type { Key, CollectionNode, Collection } from '../collections/types';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
items
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
/** Whether the select
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
):
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
1
|
+
/**
|
|
2
|
+
* State management for select components.
|
|
3
|
+
* Based on @react-stately/select useSelectState.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { createSignal, createMemo, type Accessor } from 'solid-js';
|
|
7
|
+
import { access, type MaybeAccessor } from '../utils';
|
|
8
|
+
import { createListState } from '../collections/createListState';
|
|
9
|
+
import { createOverlayTriggerState } from '../overlays';
|
|
10
|
+
import type { Key, CollectionNode, Collection } from '../collections/types';
|
|
11
|
+
import type { SelectionMode, Selection } from '../collections/types';
|
|
12
|
+
|
|
13
|
+
export interface SelectStateProps<T = unknown> {
|
|
14
|
+
/** The items to display in the select. */
|
|
15
|
+
items: T[];
|
|
16
|
+
/** Function to get the key for an item. */
|
|
17
|
+
getKey?: (item: T) => Key;
|
|
18
|
+
/** Function to get the text value for an item. */
|
|
19
|
+
getTextValue?: (item: T) => string;
|
|
20
|
+
/** Function to check if an item is disabled. */
|
|
21
|
+
getDisabled?: (item: T) => boolean;
|
|
22
|
+
/** Keys of disabled items. */
|
|
23
|
+
disabledKeys?: Iterable<Key>;
|
|
24
|
+
/** The currently selected key (controlled). */
|
|
25
|
+
selectedKey?: Key | null;
|
|
26
|
+
/** The default selected key (uncontrolled). */
|
|
27
|
+
defaultSelectedKey?: Key | null;
|
|
28
|
+
/** The selected keys (controlled, for multiple selection mode). */
|
|
29
|
+
selectedKeys?: 'all' | Iterable<Key>;
|
|
30
|
+
/** Default selected keys (uncontrolled, for multiple selection mode). */
|
|
31
|
+
defaultSelectedKeys?: 'all' | Iterable<Key>;
|
|
32
|
+
/** Handler called when the selection changes. */
|
|
33
|
+
onSelectionChange?: (key: Key | null) => void;
|
|
34
|
+
/** Handler called when selected keys change. */
|
|
35
|
+
onSelectionChangeKeys?: (keys: Selection) => void;
|
|
36
|
+
/** Selection mode for the select. */
|
|
37
|
+
selectionMode?: Extract<SelectionMode, 'single' | 'multiple'>;
|
|
38
|
+
/** Whether the select is open (controlled). */
|
|
39
|
+
isOpen?: boolean;
|
|
40
|
+
/** Whether the select is open by default (uncontrolled). */
|
|
41
|
+
defaultOpen?: boolean;
|
|
42
|
+
/** Handler called when the open state changes. */
|
|
43
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
44
|
+
/** Whether the select is disabled. */
|
|
45
|
+
isDisabled?: boolean;
|
|
46
|
+
/** Whether the select is required. */
|
|
47
|
+
isRequired?: boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface SelectState<T = unknown> {
|
|
51
|
+
/** The collection of items. */
|
|
52
|
+
readonly collection: Accessor<Collection<T>>;
|
|
53
|
+
/** Whether the select dropdown is open. */
|
|
54
|
+
readonly isOpen: Accessor<boolean>;
|
|
55
|
+
/** Open the select dropdown. */
|
|
56
|
+
open(): void;
|
|
57
|
+
/** Close the select dropdown. */
|
|
58
|
+
close(): void;
|
|
59
|
+
/** Toggle the select dropdown. */
|
|
60
|
+
toggle(): void;
|
|
61
|
+
/** The currently selected key. */
|
|
62
|
+
readonly selectedKey: Accessor<Key | null>;
|
|
63
|
+
/** The selected keys. */
|
|
64
|
+
readonly selectedKeys: Accessor<Selection>;
|
|
65
|
+
/** The currently selected item. */
|
|
66
|
+
readonly selectedItem: Accessor<CollectionNode<T> | null>;
|
|
67
|
+
/** The currently selected items. */
|
|
68
|
+
readonly selectedItems: Accessor<CollectionNode<T>[]>;
|
|
69
|
+
/** Set the selected key. */
|
|
70
|
+
setSelectedKey(key: Key | null): void;
|
|
71
|
+
/** Set selected keys. */
|
|
72
|
+
setSelectedKeys(keys: Iterable<Key>): void;
|
|
73
|
+
/** The currently focused key. */
|
|
74
|
+
readonly focusedKey: Accessor<Key | null>;
|
|
75
|
+
/** Set the focused key. */
|
|
76
|
+
setFocusedKey(key: Key | null): void;
|
|
77
|
+
/** Whether the select has focus. */
|
|
78
|
+
readonly isFocused: Accessor<boolean>;
|
|
79
|
+
/** Set whether the select has focus. */
|
|
80
|
+
setFocused(isFocused: boolean): void;
|
|
81
|
+
/** Whether a specific key is disabled. */
|
|
82
|
+
isKeyDisabled(key: Key): boolean;
|
|
83
|
+
/** Whether the select is disabled. */
|
|
84
|
+
readonly isDisabled: boolean;
|
|
85
|
+
/** Whether the select is required. */
|
|
86
|
+
readonly isRequired: boolean;
|
|
87
|
+
/** The selection mode. */
|
|
88
|
+
readonly selectionMode: Accessor<'single' | 'multiple'>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Creates state for a select component.
|
|
93
|
+
* Combines list state with overlay trigger state for dropdown behavior.
|
|
94
|
+
*/
|
|
95
|
+
export function createSelectState<T = unknown>(
|
|
96
|
+
props: MaybeAccessor<SelectStateProps<T>>
|
|
97
|
+
): SelectState<T> {
|
|
98
|
+
const getProps = () => access(props);
|
|
99
|
+
const selectionMode: Accessor<'single' | 'multiple'> = () => getProps().selectionMode ?? 'single';
|
|
100
|
+
|
|
101
|
+
// Overlay trigger state for open/close
|
|
102
|
+
const overlayState = createOverlayTriggerState({
|
|
103
|
+
get isOpen() {
|
|
104
|
+
return getProps().isOpen;
|
|
105
|
+
},
|
|
106
|
+
get defaultOpen() {
|
|
107
|
+
return getProps().defaultOpen;
|
|
108
|
+
},
|
|
109
|
+
get onOpenChange() {
|
|
110
|
+
return getProps().onOpenChange;
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Track selected key
|
|
115
|
+
const isControlledSingle = () => getProps().selectedKey !== undefined;
|
|
116
|
+
const isControlledMultiple = () => getProps().selectedKeys !== undefined;
|
|
117
|
+
const [internalSelectedKey, setInternalSelectedKey] = createSignal<Key | null>(
|
|
118
|
+
getProps().defaultSelectedKey ?? null
|
|
119
|
+
);
|
|
120
|
+
const [internalSelectedKeys, setInternalSelectedKeys] = createSignal<Selection>(
|
|
121
|
+
getProps().defaultSelectedKeys === 'all'
|
|
122
|
+
? 'all'
|
|
123
|
+
: new Set(getProps().defaultSelectedKeys ?? [])
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
const selectedKey: Accessor<Key | null> = () => {
|
|
127
|
+
if (selectionMode() === 'multiple') {
|
|
128
|
+
const keys = selectedKeys();
|
|
129
|
+
if (keys === 'all') return null;
|
|
130
|
+
return keys.size > 0 ? Array.from(keys)[0] : null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return isControlledSingle() ? (getProps().selectedKey ?? null) : internalSelectedKey();
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const setSelectedKey = (key: Key | null) => {
|
|
137
|
+
if (selectionMode() === 'multiple') {
|
|
138
|
+
if (key == null) {
|
|
139
|
+
if (!isControlledMultiple()) {
|
|
140
|
+
setInternalSelectedKeys(new Set<Key>());
|
|
141
|
+
}
|
|
142
|
+
getProps().onSelectionChangeKeys?.(new Set<Key>());
|
|
143
|
+
getProps().onSelectionChange?.(null);
|
|
144
|
+
} else {
|
|
145
|
+
const next = new Set([key]);
|
|
146
|
+
if (!isControlledMultiple()) {
|
|
147
|
+
setInternalSelectedKeys(next);
|
|
148
|
+
}
|
|
149
|
+
getProps().onSelectionChangeKeys?.(next);
|
|
150
|
+
getProps().onSelectionChange?.(key);
|
|
151
|
+
}
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (!isControlledSingle()) {
|
|
156
|
+
setInternalSelectedKey(key);
|
|
157
|
+
}
|
|
158
|
+
getProps().onSelectionChange?.(key);
|
|
159
|
+
getProps().onSelectionChangeKeys?.(key != null ? new Set([key]) : new Set<Key>());
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const selectedKeys: Accessor<Selection> = createMemo(() => {
|
|
163
|
+
if (selectionMode() === 'multiple') {
|
|
164
|
+
if (isControlledMultiple()) {
|
|
165
|
+
const keys = getProps().selectedKeys;
|
|
166
|
+
return keys === 'all' ? 'all' : new Set<Key>(keys ?? []);
|
|
167
|
+
}
|
|
168
|
+
return internalSelectedKeys();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const key = selectedKey();
|
|
172
|
+
return key != null ? new Set<Key>([key]) : new Set<Key>();
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
const setSelectedKeys = (keys: Iterable<Key>) => {
|
|
176
|
+
const next = new Set(keys);
|
|
177
|
+
if (selectionMode() === 'multiple') {
|
|
178
|
+
if (!isControlledMultiple()) {
|
|
179
|
+
setInternalSelectedKeys(next);
|
|
180
|
+
}
|
|
181
|
+
getProps().onSelectionChangeKeys?.(next);
|
|
182
|
+
getProps().onSelectionChange?.(next.size > 0 ? Array.from(next)[0] : null);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const key = next.size > 0 ? Array.from(next)[0] : null;
|
|
187
|
+
setSelectedKey(key);
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// Create list state with select selection mode
|
|
191
|
+
const listState = createListState<T>({
|
|
192
|
+
get items() {
|
|
193
|
+
return getProps().items;
|
|
194
|
+
},
|
|
195
|
+
get getKey() {
|
|
196
|
+
return getProps().getKey;
|
|
197
|
+
},
|
|
198
|
+
get getTextValue() {
|
|
199
|
+
return getProps().getTextValue;
|
|
200
|
+
},
|
|
201
|
+
get getDisabled() {
|
|
202
|
+
return getProps().getDisabled;
|
|
203
|
+
},
|
|
204
|
+
get disabledKeys() {
|
|
205
|
+
return getProps().disabledKeys;
|
|
206
|
+
},
|
|
207
|
+
get selectionMode() {
|
|
208
|
+
return selectionMode();
|
|
209
|
+
},
|
|
210
|
+
disallowEmptySelection: true,
|
|
211
|
+
get selectedKeys() {
|
|
212
|
+
const keys = selectedKeys();
|
|
213
|
+
if (keys === 'all') return 'all';
|
|
214
|
+
return keys;
|
|
215
|
+
},
|
|
216
|
+
onSelectionChange(keys) {
|
|
217
|
+
if (selectionMode() === 'multiple') {
|
|
218
|
+
if (!isControlledMultiple()) {
|
|
219
|
+
setInternalSelectedKeys(keys);
|
|
220
|
+
}
|
|
221
|
+
getProps().onSelectionChangeKeys?.(keys);
|
|
222
|
+
if (keys !== 'all') {
|
|
223
|
+
getProps().onSelectionChange?.(keys.size > 0 ? Array.from(keys)[0] : null);
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Get the first (and only) selected key
|
|
229
|
+
if (keys === 'all') return;
|
|
230
|
+
const key = keys.size > 0 ? Array.from(keys)[0] : null;
|
|
231
|
+
setSelectedKey(key);
|
|
232
|
+
// Close the dropdown after selection in single mode
|
|
233
|
+
overlayState.close();
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
// Get the selected item from the collection (memoized)
|
|
238
|
+
const selectedItem: Accessor<CollectionNode<T> | null> = createMemo(() => {
|
|
239
|
+
const key = selectedKey();
|
|
240
|
+
if (key == null) return null;
|
|
241
|
+
return listState.collection().getItem(key);
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
const selectedItems: Accessor<CollectionNode<T>[]> = createMemo(() => {
|
|
245
|
+
const keys = selectedKeys();
|
|
246
|
+
if (keys === 'all') {
|
|
247
|
+
return Array.from(listState.collection());
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const items: CollectionNode<T>[] = [];
|
|
251
|
+
for (const key of keys) {
|
|
252
|
+
const item = listState.collection().getItem(key);
|
|
253
|
+
if (item) items.push(item);
|
|
254
|
+
}
|
|
255
|
+
return items;
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
return {
|
|
259
|
+
// Collection
|
|
260
|
+
collection: listState.collection,
|
|
261
|
+
|
|
262
|
+
// Focus management
|
|
263
|
+
focusedKey: listState.focusedKey,
|
|
264
|
+
setFocusedKey: listState.setFocusedKey,
|
|
265
|
+
isFocused: listState.isFocused,
|
|
266
|
+
setFocused: listState.setFocused,
|
|
267
|
+
|
|
268
|
+
// Overlay state
|
|
269
|
+
isOpen: overlayState.isOpen,
|
|
270
|
+
open: overlayState.open,
|
|
271
|
+
close: overlayState.close,
|
|
272
|
+
toggle: overlayState.toggle,
|
|
273
|
+
|
|
274
|
+
// Select-specific
|
|
275
|
+
selectionMode,
|
|
276
|
+
selectedKey,
|
|
277
|
+
selectedKeys,
|
|
278
|
+
selectedItem,
|
|
279
|
+
selectedItems,
|
|
280
|
+
setSelectedKey,
|
|
281
|
+
setSelectedKeys,
|
|
282
|
+
isKeyDisabled: (key: Key) => listState.isDisabled(key),
|
|
283
|
+
get isDisabled() {
|
|
284
|
+
return getProps().isDisabled ?? false;
|
|
285
|
+
},
|
|
286
|
+
get isRequired() {
|
|
287
|
+
return getProps().isRequired ?? false;
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
}
|
package/src/select/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
createSelectState,
|
|
3
|
-
type SelectStateProps,
|
|
4
|
-
type SelectState,
|
|
5
|
-
} from './createSelectState';
|
|
1
|
+
export {
|
|
2
|
+
createSelectState,
|
|
3
|
+
type SelectStateProps,
|
|
4
|
+
type SelectState,
|
|
5
|
+
} from './createSelectState';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selection compatibility surface.
|
|
3
|
+
*
|
|
4
|
+
* Provides a React Stately-like module entrypoint for selection state while
|
|
5
|
+
* delegating to the existing Solid collection selection primitives.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
createSelectionState,
|
|
10
|
+
type SelectionStateProps,
|
|
11
|
+
type SelectionState,
|
|
12
|
+
} from '../collections/createSelectionState';
|
|
13
|
+
|
|
14
|
+
export type {
|
|
15
|
+
Key,
|
|
16
|
+
Selection,
|
|
17
|
+
SelectionMode,
|
|
18
|
+
SelectionBehavior,
|
|
19
|
+
DisabledBehavior,
|
|
20
|
+
FocusStrategy,
|
|
21
|
+
} from '../collections/types';
|
|
22
|
+
|
|
23
|
+
export type MultipleSelectionStateProps = import('../collections/createSelectionState').SelectionStateProps;
|
|
24
|
+
export type MultipleSelectionState = import('../collections/createSelectionState').SelectionState;
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
createSelectionState as useMultipleSelectionState,
|
|
28
|
+
} from '../collections/createSelectionState';
|