@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.
- package/README.md +30 -283
- package/dist/autocomplete/createAutocompleteState.d.ts +2 -2
- package/dist/autocomplete/index.d.ts +1 -1
- package/dist/calendar/createCalendarState.d.ts +22 -7
- package/dist/calendar/createDateFieldState.d.ts +30 -7
- package/dist/calendar/createDatePickerState.d.ts +60 -0
- package/dist/calendar/createRangeCalendarState.d.ts +27 -8
- package/dist/calendar/createTimeFieldState.d.ts +34 -7
- package/dist/calendar/index.d.ts +7 -6
- package/dist/checkbox/createCheckboxGroupState.d.ts +6 -6
- package/dist/checkbox/index.d.ts +1 -1
- package/dist/collections/ListCollection.d.ts +1 -1
- package/dist/collections/createListState.d.ts +8 -8
- package/dist/collections/createMenuState.d.ts +7 -7
- package/dist/collections/createSelectionState.d.ts +5 -5
- package/dist/collections/index.d.ts +5 -5
- package/dist/collections/types.d.ts +12 -12
- package/dist/color/Color.d.ts +1 -1
- package/dist/color/createColorAreaState.d.ts +4 -2
- package/dist/color/createColorFieldState.d.ts +38 -12
- package/dist/color/createColorSliderState.d.ts +9 -2
- package/dist/color/createColorWheelState.d.ts +13 -2
- package/dist/color/getColorChannels.d.ts +1 -1
- package/dist/color/index.d.ts +6 -6
- package/dist/color/types.d.ts +4 -4
- package/dist/combobox/createComboBoxState.d.ts +27 -13
- package/dist/combobox/index.d.ts +1 -1
- package/dist/data/createAsyncList.d.ts +4 -4
- package/dist/data/createListData.d.ts +2 -2
- package/dist/data/createTreeData.d.ts +6 -2
- package/dist/data/index.d.ts +3 -3
- package/dist/datepicker/index.d.ts +2 -4
- package/dist/disclosure/createDisclosureState.d.ts +2 -2
- package/dist/disclosure/index.d.ts +1 -1
- package/dist/dnd/createDragState.d.ts +2 -2
- package/dist/dnd/createDraggableCollectionState.d.ts +2 -2
- package/dist/dnd/createDropState.d.ts +2 -2
- package/dist/dnd/createDroppableCollectionState.d.ts +3 -3
- package/dist/dnd/index.d.ts +5 -5
- package/dist/dnd/types.d.ts +16 -16
- package/dist/form/createFormValidationState.d.ts +3 -3
- package/dist/form/index.d.ts +1 -1
- package/dist/grid/createGridState.d.ts +2 -2
- package/dist/grid/index.d.ts +2 -2
- package/dist/grid/types.d.ts +13 -11
- package/dist/index.d.ts +31 -30
- package/dist/index.js +7924 -7238
- package/dist/index.js.map +1 -1
- package/dist/menu/index.d.ts +2 -2
- package/dist/numberfield/createNumberFieldState.d.ts +2 -2
- package/dist/numberfield/index.d.ts +1 -1
- package/dist/overlays/createOverlayTriggerState.d.ts +2 -2
- package/dist/overlays/index.d.ts +1 -1
- package/dist/radio/createRadioGroupState.d.ts +7 -7
- package/dist/radio/index.d.ts +1 -1
- package/dist/searchfield/createSearchFieldState.d.ts +2 -2
- package/dist/searchfield/index.d.ts +2 -2
- package/dist/select/createSelectState.d.ts +8 -8
- package/dist/select/index.d.ts +1 -1
- package/dist/selection/index.d.ts +5 -5
- package/dist/slider/createSliderState.d.ts +3 -3
- package/dist/slider/index.d.ts +2 -2
- package/dist/steplist/createStepListState.d.ts +48 -0
- package/dist/steplist/index.d.ts +1 -0
- package/dist/table/TableCollection.d.ts +3 -3
- package/dist/table/createTableColumnResizeState.d.ts +54 -0
- package/dist/table/createTableState.d.ts +2 -2
- package/dist/table/index.d.ts +5 -3
- package/dist/table/types.d.ts +10 -10
- package/dist/tabs/createTabListState.d.ts +5 -5
- package/dist/tabs/index.d.ts +1 -1
- package/dist/textfield/createTextFieldState.d.ts +2 -2
- package/dist/textfield/index.d.ts +1 -1
- package/dist/toast/createToastState.d.ts +8 -2
- package/dist/toast/index.d.ts +1 -1
- package/dist/toggle/createToggleGroupState.d.ts +4 -4
- package/dist/toggle/createToggleState.d.ts +2 -2
- package/dist/toggle/index.d.ts +2 -2
- package/dist/tooltip/createTooltipTriggerState.d.ts +2 -2
- package/dist/tooltip/index.d.ts +1 -1
- package/dist/tree/TreeCollection.d.ts +2 -2
- package/dist/tree/createTreeState.d.ts +2 -2
- package/dist/tree/index.d.ts +3 -3
- package/dist/tree/types.d.ts +19 -13
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/reactivity.d.ts +1 -1
- package/package.json +29 -30
- package/src/autocomplete/createAutocompleteState.d.ts +19 -17
- package/src/autocomplete/createAutocompleteState.ts +24 -30
- package/src/autocomplete/index.d.ts +6 -2
- package/src/autocomplete/index.ts +1 -1
- package/src/calendar/createCalendarState.d.ts +139 -117
- package/src/calendar/createCalendarState.ts +221 -74
- package/src/calendar/createDateFieldState.d.ts +130 -95
- package/src/calendar/createDateFieldState.ts +263 -151
- package/src/calendar/createDatePickerState.ts +347 -0
- package/src/calendar/createRangeCalendarState.d.ts +154 -129
- package/src/calendar/createRangeCalendarState.ts +293 -79
- package/src/calendar/createTimeFieldState.d.ts +81 -79
- package/src/calendar/createTimeFieldState.ts +187 -108
- package/src/calendar/index.d.ts +80 -7
- package/src/calendar/index.ts +21 -12
- package/src/checkbox/createCheckboxGroupState.d.ts +57 -55
- package/src/checkbox/createCheckboxGroupState.ts +20 -29
- package/src/checkbox/index.d.ts +6 -2
- package/src/checkbox/index.ts +1 -1
- package/src/collections/ListCollection.d.ts +25 -22
- package/src/collections/ListCollection.ts +6 -6
- package/src/collections/createListState.d.ts +73 -58
- package/src/collections/createListState.ts +19 -18
- package/src/collections/createMenuState.d.ts +36 -31
- package/src/collections/createMenuState.ts +18 -12
- package/src/collections/createSelectionState.d.ts +78 -65
- package/src/collections/createSelectionState.ts +36 -32
- package/src/collections/index.d.ts +38 -6
- package/src/collections/index.ts +5 -10
- package/src/collections/types.d.ts +101 -101
- package/src/collections/types.ts +12 -12
- package/src/color/Color.d.ts +20 -5
- package/src/color/Color.ts +357 -254
- package/src/color/createColorAreaState.d.ts +67 -65
- package/src/color/createColorAreaState.ts +21 -13
- package/src/color/createColorFieldState.d.ts +46 -44
- package/src/color/createColorFieldState.ts +285 -149
- package/src/color/createColorSliderState.d.ts +58 -56
- package/src/color/createColorSliderState.ts +45 -14
- package/src/color/createColorWheelState.d.ts +42 -40
- package/src/color/createColorWheelState.ts +101 -64
- package/src/color/getColorChannels.ts +7 -5
- package/src/color/index.d.ts +36 -7
- package/src/color/index.ts +6 -9
- package/src/color/types.d.ts +68 -63
- package/src/color/types.ts +11 -19
- package/src/combobox/createComboBoxState.d.ts +107 -105
- package/src/combobox/createComboBoxState.ts +176 -89
- package/src/combobox/index.d.ts +10 -2
- package/src/combobox/index.ts +1 -1
- package/src/data/createAsyncList.ts +89 -63
- package/src/data/createListData.ts +67 -67
- package/src/data/createTreeData.ts +304 -91
- package/src/data/index.ts +3 -3
- package/src/datepicker/index.ts +6 -10
- package/src/disclosure/createDisclosureState.d.ts +47 -43
- package/src/disclosure/createDisclosureState.ts +7 -21
- package/src/disclosure/index.d.ts +10 -2
- package/src/disclosure/index.ts +1 -1
- package/src/dnd/createDragState.d.ts +51 -42
- package/src/dnd/createDragState.ts +12 -14
- package/src/dnd/createDraggableCollectionState.d.ts +52 -41
- package/src/dnd/createDraggableCollectionState.ts +14 -21
- package/src/dnd/createDropState.d.ts +64 -45
- package/src/dnd/createDropState.ts +22 -32
- package/src/dnd/createDroppableCollectionState.d.ts +88 -59
- package/src/dnd/createDroppableCollectionState.ts +40 -43
- package/src/dnd/index.d.ts +54 -6
- package/src/dnd/index.ts +5 -18
- package/src/dnd/types.d.ts +167 -156
- package/src/dnd/types.ts +20 -21
- package/src/form/createFormValidationState.d.ts +47 -45
- package/src/form/createFormValidationState.ts +30 -63
- package/src/form/index.d.ts +16 -2
- package/src/form/index.ts +1 -1
- package/src/grid/createGridState.d.ts +7 -4
- package/src/grid/createGridState.ts +44 -51
- package/src/grid/index.d.ts +3 -3
- package/src/grid/index.ts +2 -8
- package/src/grid/types.d.ts +136 -129
- package/src/grid/types.ts +20 -18
- package/src/index.d.ts +310 -26
- package/src/index.ts +48 -89
- package/src/menu/index.ts +2 -4
- package/src/numberfield/createNumberFieldState.d.ts +56 -54
- package/src/numberfield/createNumberFieldState.ts +26 -31
- package/src/numberfield/index.d.ts +6 -2
- package/src/numberfield/index.ts +1 -1
- package/src/overlays/createOverlayTriggerState.d.ts +22 -20
- package/src/overlays/createOverlayTriggerState.ts +3 -4
- package/src/overlays/index.d.ts +6 -2
- package/src/overlays/index.ts +1 -1
- package/src/radio/createRadioGroupState.d.ts +54 -52
- package/src/radio/createRadioGroupState.ts +27 -29
- package/src/radio/index.d.ts +7 -2
- package/src/radio/index.ts +1 -1
- package/src/searchfield/createSearchFieldState.d.ts +16 -14
- package/src/searchfield/createSearchFieldState.ts +5 -11
- package/src/searchfield/index.d.ts +3 -3
- package/src/searchfield/index.ts +2 -5
- package/src/select/createSelectState.d.ts +63 -61
- package/src/select/createSelectState.ts +27 -27
- package/src/select/index.d.ts +2 -2
- package/src/select/index.ts +1 -5
- package/src/selection/index.ts +6 -7
- package/src/slider/createSliderState.d.ts +60 -60
- package/src/slider/createSliderState.ts +55 -33
- package/src/slider/index.d.ts +3 -3
- package/src/slider/index.ts +2 -6
- package/src/ssr/index.d.ts +1 -1
- package/src/ssr/index.ts +2 -2
- package/src/steplist/createStepListState.ts +191 -0
- package/src/steplist/index.ts +5 -0
- package/src/table/TableCollection.d.ts +42 -40
- package/src/table/TableCollection.ts +61 -64
- package/src/table/createTableColumnResizeState.ts +242 -0
- package/src/table/createTableState.d.ts +7 -4
- package/src/table/createTableState.ts +10 -7
- package/src/table/index.d.ts +14 -4
- package/src/table/index.ts +10 -3
- package/src/table/types.d.ts +98 -92
- package/src/table/types.ts +17 -13
- package/src/tabs/createTabListState.d.ts +59 -57
- package/src/tabs/createTabListState.ts +24 -31
- package/src/tabs/index.d.ts +8 -2
- package/src/tabs/index.ts +1 -1
- package/src/textfield/createTextFieldState.d.ts +16 -14
- package/src/textfield/createTextFieldState.ts +7 -18
- package/src/textfield/index.d.ts +6 -2
- package/src/textfield/index.ts +1 -1
- package/src/toast/createToastState.d.ts +92 -86
- package/src/toast/createToastState.ts +48 -43
- package/src/toast/index.d.ts +12 -2
- package/src/toast/index.ts +1 -1
- package/src/toggle/createToggleGroupState.ts +11 -21
- package/src/toggle/createToggleState.d.ts +19 -19
- package/src/toggle/createToggleState.ts +2 -16
- package/src/toggle/index.d.ts +2 -2
- package/src/toggle/index.ts +2 -6
- package/src/tooltip/createTooltipTriggerState.d.ts +17 -17
- package/src/tooltip/createTooltipTriggerState.ts +12 -11
- package/src/tooltip/index.d.ts +7 -2
- package/src/tooltip/index.ts +1 -1
- package/src/tree/TreeCollection.d.ts +26 -23
- package/src/tree/TreeCollection.ts +29 -22
- package/src/tree/createTreeState.d.ts +7 -4
- package/src/tree/createTreeState.ts +39 -41
- package/src/tree/index.d.ts +10 -4
- package/src/tree/index.ts +3 -3
- package/src/tree/types.d.ts +131 -126
- package/src/tree/types.ts +22 -13
- package/src/utils/index.d.ts +2 -2
- package/src/utils/index.ts +1 -1
- package/src/utils/reactivity.d.ts +2 -2
- package/src/utils/reactivity.ts +3 -3
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Based on @react-stately/searchfield useSearchFieldState.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { type Accessor, createSignal, createMemo } from
|
|
7
|
-
import { access, type MaybeAccessor } from
|
|
6
|
+
import { type Accessor, createSignal, createMemo } from "solid-js";
|
|
7
|
+
import { access, type MaybeAccessor } from "../utils";
|
|
8
8
|
|
|
9
9
|
export interface SearchFieldStateProps {
|
|
10
10
|
/** The current value (controlled). */
|
|
@@ -26,25 +26,19 @@ export interface SearchFieldState {
|
|
|
26
26
|
* Provides state management for a search field.
|
|
27
27
|
*/
|
|
28
28
|
export function createSearchFieldState(
|
|
29
|
-
props: MaybeAccessor<SearchFieldStateProps
|
|
29
|
+
props: MaybeAccessor<SearchFieldStateProps>,
|
|
30
30
|
): SearchFieldState {
|
|
31
31
|
const getProps = () => access(props);
|
|
32
32
|
|
|
33
|
-
// Controlled vs uncontrolled
|
|
34
33
|
const isControlled = () => getProps().value !== undefined;
|
|
35
34
|
|
|
36
|
-
|
|
37
|
-
const [internalValue, setInternalValue] = createSignal(
|
|
38
|
-
getProps().defaultValue ?? ''
|
|
39
|
-
);
|
|
35
|
+
const [internalValue, setInternalValue] = createSignal(getProps().defaultValue ?? "");
|
|
40
36
|
|
|
41
|
-
// Current value accessor
|
|
42
37
|
const value = createMemo(() => {
|
|
43
38
|
const p = getProps();
|
|
44
|
-
return isControlled() ? (p.value ??
|
|
39
|
+
return isControlled() ? (p.value ?? "") : internalValue();
|
|
45
40
|
});
|
|
46
41
|
|
|
47
|
-
// Set value function
|
|
48
42
|
const setValue = (newValue: string) => {
|
|
49
43
|
const p = getProps();
|
|
50
44
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { createSearchFieldState } from
|
|
2
|
-
export type { SearchFieldState, SearchFieldStateProps
|
|
3
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
export { createSearchFieldState } from "./createSearchFieldState";
|
|
2
|
+
export type { SearchFieldState, SearchFieldStateProps } from "./createSearchFieldState";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
package/src/searchfield/index.ts
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export { createSearchFieldState } from
|
|
2
|
-
export type {
|
|
3
|
-
SearchFieldState,
|
|
4
|
-
SearchFieldStateProps,
|
|
5
|
-
} from './createSearchFieldState';
|
|
1
|
+
export { createSearchFieldState } from "./createSearchFieldState";
|
|
2
|
+
export type { SearchFieldState, SearchFieldStateProps } from "./createSearchFieldState";
|
|
@@ -2,72 +2,74 @@
|
|
|
2
2
|
* State management for select components.
|
|
3
3
|
* Based on @react-stately/select useSelectState.
|
|
4
4
|
*/
|
|
5
|
-
import { type Accessor } from
|
|
6
|
-
import { type MaybeAccessor } from
|
|
7
|
-
import type { Key, CollectionNode, Collection } from
|
|
5
|
+
import { type Accessor } from "solid-js";
|
|
6
|
+
import { type MaybeAccessor } from "../utils";
|
|
7
|
+
import type { Key, CollectionNode, Collection } from "../collections/types";
|
|
8
8
|
export interface SelectStateProps<T = unknown> {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
/** The items to display in the select. */
|
|
10
|
+
items: T[];
|
|
11
|
+
/** Function to get the key for an item. */
|
|
12
|
+
getKey?: (item: T) => Key;
|
|
13
|
+
/** Function to get the text value for an item. */
|
|
14
|
+
getTextValue?: (item: T) => string;
|
|
15
|
+
/** Function to check if an item is disabled. */
|
|
16
|
+
getDisabled?: (item: T) => boolean;
|
|
17
|
+
/** Keys of disabled items. */
|
|
18
|
+
disabledKeys?: Iterable<Key>;
|
|
19
|
+
/** The currently selected key (controlled). */
|
|
20
|
+
selectedKey?: Key | null;
|
|
21
|
+
/** The default selected key (uncontrolled). */
|
|
22
|
+
defaultSelectedKey?: Key | null;
|
|
23
|
+
/** Handler called when the selection changes. */
|
|
24
|
+
onSelectionChange?: (key: Key | null) => void;
|
|
25
|
+
/** Whether the select is open (controlled). */
|
|
26
|
+
isOpen?: boolean;
|
|
27
|
+
/** Whether the select is open by default (uncontrolled). */
|
|
28
|
+
defaultOpen?: boolean;
|
|
29
|
+
/** Handler called when the open state changes. */
|
|
30
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
31
|
+
/** Whether the select is disabled. */
|
|
32
|
+
isDisabled?: boolean;
|
|
33
|
+
/** Whether the select is required. */
|
|
34
|
+
isRequired?: boolean;
|
|
35
35
|
}
|
|
36
36
|
export interface SelectState<T = unknown> {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
37
|
+
/** The collection of items. */
|
|
38
|
+
readonly collection: Accessor<Collection<T>>;
|
|
39
|
+
/** Whether the select dropdown is open. */
|
|
40
|
+
readonly isOpen: Accessor<boolean>;
|
|
41
|
+
/** Open the select dropdown. */
|
|
42
|
+
open(): void;
|
|
43
|
+
/** Close the select dropdown. */
|
|
44
|
+
close(): void;
|
|
45
|
+
/** Toggle the select dropdown. */
|
|
46
|
+
toggle(): void;
|
|
47
|
+
/** The currently selected key. */
|
|
48
|
+
readonly selectedKey: Accessor<Key | null>;
|
|
49
|
+
/** The currently selected item. */
|
|
50
|
+
readonly selectedItem: Accessor<CollectionNode<T> | null>;
|
|
51
|
+
/** Set the selected key. */
|
|
52
|
+
setSelectedKey(key: Key | null): void;
|
|
53
|
+
/** The currently focused key. */
|
|
54
|
+
readonly focusedKey: Accessor<Key | null>;
|
|
55
|
+
/** Set the focused key. */
|
|
56
|
+
setFocusedKey(key: Key | null): void;
|
|
57
|
+
/** Whether the select has focus. */
|
|
58
|
+
readonly isFocused: Accessor<boolean>;
|
|
59
|
+
/** Set whether the select has focus. */
|
|
60
|
+
setFocused(isFocused: boolean): void;
|
|
61
|
+
/** Whether a specific key is disabled. */
|
|
62
|
+
isKeyDisabled(key: Key): boolean;
|
|
63
|
+
/** Whether the select is disabled. */
|
|
64
|
+
readonly isDisabled: boolean;
|
|
65
|
+
/** Whether the select is required. */
|
|
66
|
+
readonly isRequired: boolean;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* Creates state for a select component.
|
|
70
70
|
* Combines list state with overlay trigger state for dropdown behavior.
|
|
71
71
|
*/
|
|
72
|
-
export declare function createSelectState<T = unknown>(
|
|
73
|
-
|
|
72
|
+
export declare function createSelectState<T = unknown>(
|
|
73
|
+
props: MaybeAccessor<SelectStateProps<T>>,
|
|
74
|
+
): SelectState<T>;
|
|
75
|
+
//# sourceMappingURL=createSelectState.d.ts.map
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Based on @react-stately/select useSelectState.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createSignal, createMemo, type Accessor } from
|
|
7
|
-
import { access, type MaybeAccessor } from
|
|
8
|
-
import { createListState } from
|
|
9
|
-
import { createOverlayTriggerState } from
|
|
10
|
-
import type { Key, CollectionNode, Collection } from
|
|
11
|
-
import type { SelectionMode, Selection } from
|
|
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
12
|
|
|
13
13
|
export interface SelectStateProps<T = unknown> {
|
|
14
14
|
/** The items to display in the select. */
|
|
@@ -26,15 +26,15 @@ export interface SelectStateProps<T = unknown> {
|
|
|
26
26
|
/** The default selected key (uncontrolled). */
|
|
27
27
|
defaultSelectedKey?: Key | null;
|
|
28
28
|
/** The selected keys (controlled, for multiple selection mode). */
|
|
29
|
-
selectedKeys?:
|
|
29
|
+
selectedKeys?: "all" | Iterable<Key>;
|
|
30
30
|
/** Default selected keys (uncontrolled, for multiple selection mode). */
|
|
31
|
-
defaultSelectedKeys?:
|
|
31
|
+
defaultSelectedKeys?: "all" | Iterable<Key>;
|
|
32
32
|
/** Handler called when the selection changes. */
|
|
33
33
|
onSelectionChange?: (key: Key | null) => void;
|
|
34
34
|
/** Handler called when selected keys change. */
|
|
35
35
|
onSelectionChangeKeys?: (keys: Selection) => void;
|
|
36
36
|
/** Selection mode for the select. */
|
|
37
|
-
selectionMode?: Extract<SelectionMode,
|
|
37
|
+
selectionMode?: Extract<SelectionMode, "single" | "multiple">;
|
|
38
38
|
/** Whether the select is open (controlled). */
|
|
39
39
|
isOpen?: boolean;
|
|
40
40
|
/** Whether the select is open by default (uncontrolled). */
|
|
@@ -85,7 +85,7 @@ export interface SelectState<T = unknown> {
|
|
|
85
85
|
/** Whether the select is required. */
|
|
86
86
|
readonly isRequired: boolean;
|
|
87
87
|
/** The selection mode. */
|
|
88
|
-
readonly selectionMode: Accessor<
|
|
88
|
+
readonly selectionMode: Accessor<"single" | "multiple">;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/**
|
|
@@ -93,10 +93,10 @@ export interface SelectState<T = unknown> {
|
|
|
93
93
|
* Combines list state with overlay trigger state for dropdown behavior.
|
|
94
94
|
*/
|
|
95
95
|
export function createSelectState<T = unknown>(
|
|
96
|
-
props: MaybeAccessor<SelectStateProps<T
|
|
96
|
+
props: MaybeAccessor<SelectStateProps<T>>,
|
|
97
97
|
): SelectState<T> {
|
|
98
98
|
const getProps = () => access(props);
|
|
99
|
-
const selectionMode: Accessor<
|
|
99
|
+
const selectionMode: Accessor<"single" | "multiple"> = () => getProps().selectionMode ?? "single";
|
|
100
100
|
|
|
101
101
|
// Overlay trigger state for open/close
|
|
102
102
|
const overlayState = createOverlayTriggerState({
|
|
@@ -115,18 +115,18 @@ export function createSelectState<T = unknown>(
|
|
|
115
115
|
const isControlledSingle = () => getProps().selectedKey !== undefined;
|
|
116
116
|
const isControlledMultiple = () => getProps().selectedKeys !== undefined;
|
|
117
117
|
const [internalSelectedKey, setInternalSelectedKey] = createSignal<Key | null>(
|
|
118
|
-
getProps().defaultSelectedKey ?? null
|
|
118
|
+
getProps().defaultSelectedKey ?? null,
|
|
119
119
|
);
|
|
120
120
|
const [internalSelectedKeys, setInternalSelectedKeys] = createSignal<Selection>(
|
|
121
|
-
getProps().defaultSelectedKeys ===
|
|
122
|
-
?
|
|
123
|
-
: new Set(getProps().defaultSelectedKeys ?? [])
|
|
121
|
+
getProps().defaultSelectedKeys === "all"
|
|
122
|
+
? "all"
|
|
123
|
+
: new Set(getProps().defaultSelectedKeys ?? []),
|
|
124
124
|
);
|
|
125
125
|
|
|
126
126
|
const selectedKey: Accessor<Key | null> = () => {
|
|
127
|
-
if (selectionMode() ===
|
|
127
|
+
if (selectionMode() === "multiple") {
|
|
128
128
|
const keys = selectedKeys();
|
|
129
|
-
if (keys ===
|
|
129
|
+
if (keys === "all") return null;
|
|
130
130
|
return keys.size > 0 ? Array.from(keys)[0] : null;
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -134,7 +134,7 @@ export function createSelectState<T = unknown>(
|
|
|
134
134
|
};
|
|
135
135
|
|
|
136
136
|
const setSelectedKey = (key: Key | null) => {
|
|
137
|
-
if (selectionMode() ===
|
|
137
|
+
if (selectionMode() === "multiple") {
|
|
138
138
|
if (key == null) {
|
|
139
139
|
if (!isControlledMultiple()) {
|
|
140
140
|
setInternalSelectedKeys(new Set<Key>());
|
|
@@ -160,10 +160,10 @@ export function createSelectState<T = unknown>(
|
|
|
160
160
|
};
|
|
161
161
|
|
|
162
162
|
const selectedKeys: Accessor<Selection> = createMemo(() => {
|
|
163
|
-
if (selectionMode() ===
|
|
163
|
+
if (selectionMode() === "multiple") {
|
|
164
164
|
if (isControlledMultiple()) {
|
|
165
165
|
const keys = getProps().selectedKeys;
|
|
166
|
-
return keys ===
|
|
166
|
+
return keys === "all" ? "all" : new Set<Key>(keys ?? []);
|
|
167
167
|
}
|
|
168
168
|
return internalSelectedKeys();
|
|
169
169
|
}
|
|
@@ -174,7 +174,7 @@ export function createSelectState<T = unknown>(
|
|
|
174
174
|
|
|
175
175
|
const setSelectedKeys = (keys: Iterable<Key>) => {
|
|
176
176
|
const next = new Set(keys);
|
|
177
|
-
if (selectionMode() ===
|
|
177
|
+
if (selectionMode() === "multiple") {
|
|
178
178
|
if (!isControlledMultiple()) {
|
|
179
179
|
setInternalSelectedKeys(next);
|
|
180
180
|
}
|
|
@@ -210,23 +210,23 @@ export function createSelectState<T = unknown>(
|
|
|
210
210
|
disallowEmptySelection: true,
|
|
211
211
|
get selectedKeys() {
|
|
212
212
|
const keys = selectedKeys();
|
|
213
|
-
if (keys ===
|
|
213
|
+
if (keys === "all") return "all";
|
|
214
214
|
return keys;
|
|
215
215
|
},
|
|
216
216
|
onSelectionChange(keys) {
|
|
217
|
-
if (selectionMode() ===
|
|
217
|
+
if (selectionMode() === "multiple") {
|
|
218
218
|
if (!isControlledMultiple()) {
|
|
219
219
|
setInternalSelectedKeys(keys);
|
|
220
220
|
}
|
|
221
221
|
getProps().onSelectionChangeKeys?.(keys);
|
|
222
|
-
if (keys !==
|
|
222
|
+
if (keys !== "all") {
|
|
223
223
|
getProps().onSelectionChange?.(keys.size > 0 ? Array.from(keys)[0] : null);
|
|
224
224
|
}
|
|
225
225
|
return;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
// Get the first (and only) selected key
|
|
229
|
-
if (keys ===
|
|
229
|
+
if (keys === "all") return;
|
|
230
230
|
const key = keys.size > 0 ? Array.from(keys)[0] : null;
|
|
231
231
|
setSelectedKey(key);
|
|
232
232
|
// Close the dropdown after selection in single mode
|
|
@@ -243,7 +243,7 @@ export function createSelectState<T = unknown>(
|
|
|
243
243
|
|
|
244
244
|
const selectedItems: Accessor<CollectionNode<T>[]> = createMemo(() => {
|
|
245
245
|
const keys = selectedKeys();
|
|
246
|
-
if (keys ===
|
|
246
|
+
if (keys === "all") {
|
|
247
247
|
return Array.from(listState.collection());
|
|
248
248
|
}
|
|
249
249
|
|
package/src/select/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createSelectState, type SelectStateProps, type SelectState
|
|
2
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
export { createSelectState, type SelectStateProps, type SelectState } from "./createSelectState";
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
package/src/select/index.ts
CHANGED
package/src/selection/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ export {
|
|
|
9
9
|
createSelectionState,
|
|
10
10
|
type SelectionStateProps,
|
|
11
11
|
type SelectionState,
|
|
12
|
-
} from
|
|
12
|
+
} from "../collections/createSelectionState";
|
|
13
13
|
|
|
14
14
|
export type {
|
|
15
15
|
Key,
|
|
@@ -18,11 +18,10 @@ export type {
|
|
|
18
18
|
SelectionBehavior,
|
|
19
19
|
DisabledBehavior,
|
|
20
20
|
FocusStrategy,
|
|
21
|
-
} from
|
|
21
|
+
} from "../collections/types";
|
|
22
22
|
|
|
23
|
-
export type MultipleSelectionStateProps =
|
|
24
|
-
|
|
23
|
+
export type MultipleSelectionStateProps =
|
|
24
|
+
import("../collections/createSelectionState").SelectionStateProps;
|
|
25
|
+
export type MultipleSelectionState = import("../collections/createSelectionState").SelectionState;
|
|
25
26
|
|
|
26
|
-
export {
|
|
27
|
-
createSelectionState as useMultipleSelectionState,
|
|
28
|
-
} from '../collections/createSelectionState';
|
|
27
|
+
export { createSelectionState as useMultipleSelectionState } from "../collections/createSelectionState";
|
|
@@ -2,71 +2,71 @@
|
|
|
2
2
|
* Creates state for a slider component.
|
|
3
3
|
* Based on @react-stately/slider useSliderState.
|
|
4
4
|
*/
|
|
5
|
-
import { type Accessor } from
|
|
6
|
-
import { type MaybeAccessor } from
|
|
7
|
-
export type SliderOrientation =
|
|
5
|
+
import { type Accessor } from "solid-js";
|
|
6
|
+
import { type MaybeAccessor } from "../utils";
|
|
7
|
+
export type SliderOrientation = "horizontal" | "vertical";
|
|
8
8
|
export interface SliderStateProps {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
9
|
+
/** The current value (controlled). */
|
|
10
|
+
value?: number;
|
|
11
|
+
/** The default value (uncontrolled). */
|
|
12
|
+
defaultValue?: number;
|
|
13
|
+
/** Handler called when the value changes. */
|
|
14
|
+
onChange?: (value: number) => void;
|
|
15
|
+
/** Handler called when the user stops dragging. */
|
|
16
|
+
onChangeEnd?: (value: number) => void;
|
|
17
|
+
/** The minimum value. */
|
|
18
|
+
minValue?: number;
|
|
19
|
+
/** The maximum value. */
|
|
20
|
+
maxValue?: number;
|
|
21
|
+
/** The step value. */
|
|
22
|
+
step?: number;
|
|
23
|
+
/** The orientation of the slider. */
|
|
24
|
+
orientation?: SliderOrientation;
|
|
25
|
+
/** Whether the slider is disabled. */
|
|
26
|
+
isDisabled?: boolean;
|
|
27
|
+
/** The locale for number formatting. */
|
|
28
|
+
locale?: string;
|
|
29
|
+
/** Number format options. */
|
|
30
|
+
formatOptions?: Intl.NumberFormatOptions;
|
|
31
31
|
}
|
|
32
32
|
export interface SliderState {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
33
|
+
/** The current value. */
|
|
34
|
+
value: Accessor<number>;
|
|
35
|
+
/** Sets the value. */
|
|
36
|
+
setValue: (value: number) => void;
|
|
37
|
+
/** Sets the value by percent (0-1). */
|
|
38
|
+
setValuePercent: (percent: number) => void;
|
|
39
|
+
/** Gets the value as a percent (0-1). */
|
|
40
|
+
getValuePercent: Accessor<number>;
|
|
41
|
+
/** Gets the formatted value string. */
|
|
42
|
+
getFormattedValue: Accessor<string>;
|
|
43
|
+
/** Whether the thumb is being dragged. */
|
|
44
|
+
isDragging: Accessor<boolean>;
|
|
45
|
+
/** Sets the dragging state. */
|
|
46
|
+
setDragging: (dragging: boolean) => void;
|
|
47
|
+
/** Whether the slider is focused. */
|
|
48
|
+
isFocused: Accessor<boolean>;
|
|
49
|
+
/** Sets the focused state. */
|
|
50
|
+
setFocused: (focused: boolean) => void;
|
|
51
|
+
/** Increments the value by step. */
|
|
52
|
+
increment: (stepMultiplier?: number) => void;
|
|
53
|
+
/** Decrements the value by step. */
|
|
54
|
+
decrement: (stepMultiplier?: number) => void;
|
|
55
|
+
/** The minimum value. */
|
|
56
|
+
minValue: number;
|
|
57
|
+
/** The maximum value. */
|
|
58
|
+
maxValue: number;
|
|
59
|
+
/** The step value. */
|
|
60
|
+
step: number;
|
|
61
|
+
/** The page step (larger step for Page Up/Down). */
|
|
62
|
+
pageStep: number;
|
|
63
|
+
/** The orientation. */
|
|
64
|
+
orientation: SliderOrientation;
|
|
65
|
+
/** Whether the slider is disabled. */
|
|
66
|
+
isDisabled: boolean;
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* Provides state management for a slider component.
|
|
70
70
|
*/
|
|
71
71
|
export declare function createSliderState(props: MaybeAccessor<SliderStateProps>): SliderState;
|
|
72
|
-
//# sourceMappingURL=createSliderState.d.ts.map
|
|
72
|
+
//# sourceMappingURL=createSliderState.d.ts.map
|