@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
|
@@ -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
|
|
6
|
-
import { type ListState, type ListStateProps } from
|
|
7
|
-
import type { Key } from
|
|
8
|
-
export interface MenuStateProps<T = unknown> extends Omit<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
16
|
-
|
|
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>(
|
|
25
|
+
export declare function createMenuState<T = unknown>(
|
|
26
|
+
props: MaybeAccessor<MenuStateProps<T>>,
|
|
27
|
+
): MenuState<T>;
|
|
23
28
|
export interface MenuTriggerStateProps {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
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
|
|
7
|
-
import { createListState, type ListState, type ListStateProps } from
|
|
8
|
-
import type { Key } from
|
|
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
|
-
//
|
|
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
|
|
53
|
-
|
|
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: () =>
|
|
103
|
+
readonly focusStrategy: () => "first" | "last" | null;
|
|
98
104
|
/** Set the focus strategy. */
|
|
99
|
-
setFocusStrategy(strategy:
|
|
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
|
|
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
|
|
6
|
-
import { type MaybeAccessor } from
|
|
7
|
-
import type {
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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(
|
|
76
|
-
|
|
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
|
|
7
|
-
import { access, type MaybeAccessor } from
|
|
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
|
|
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?:
|
|
26
|
+
selectedKeys?: "all" | Iterable<Key>;
|
|
27
27
|
/** Default selected keys (uncontrolled). */
|
|
28
|
-
defaultSelectedKeys?:
|
|
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(
|
|
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>(
|
|
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 ??
|
|
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 ??
|
|
128
|
+
return getProps().disabledBehavior ?? "all";
|
|
125
129
|
};
|
|
126
130
|
|
|
127
131
|
const isEmpty: Accessor<boolean> = () => {
|
|
128
132
|
const keys = selectedKeys();
|
|
129
|
-
return keys !==
|
|
133
|
+
return keys !== "all" && keys.size === 0;
|
|
130
134
|
};
|
|
131
135
|
|
|
132
136
|
const isSelectAll: Accessor<boolean> = () => {
|
|
133
|
-
return selectedKeys() ===
|
|
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 ===
|
|
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 ===
|
|
160
|
-
newSelection ===
|
|
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() ===
|
|
176
|
+
if (selectionMode() === "none") return;
|
|
173
177
|
|
|
174
178
|
const current = selectedKeys();
|
|
175
179
|
|
|
176
|
-
if (selectionMode() ===
|
|
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 ===
|
|
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() ===
|
|
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() !==
|
|
219
|
-
updateSelection(
|
|
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() !==
|
|
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() !==
|
|
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() ===
|
|
277
|
+
if (selectionMode() === "none") return;
|
|
274
278
|
|
|
275
279
|
const mode = selectionMode();
|
|
276
280
|
const behavior = selectionBehavior();
|
|
277
281
|
|
|
278
|
-
if (mode ===
|
|
279
|
-
if (behavior ===
|
|
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 ===
|
|
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?:
|
|
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:
|
|
334
|
-
if (keys ===
|
|
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 {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
package/src/collections/index.ts
CHANGED
|
@@ -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
|
|
15
|
+
} from "./types";
|
|
17
16
|
|
|
18
|
-
|
|
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
|
|
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
|
|
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
|
|
41
|
+
} from "./createMenuState";
|