@decky/ui 4.11.6 → 4.12.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.
|
@@ -13,6 +13,7 @@ export type ReorderableListProps<T> = {
|
|
|
13
13
|
}>;
|
|
14
14
|
fieldProps?: FieldProps;
|
|
15
15
|
animate?: boolean;
|
|
16
|
+
disableReordering?: boolean;
|
|
16
17
|
};
|
|
17
18
|
export declare function ReorderableList<T>(props: ReorderableListProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
18
19
|
export type ReorderableListEntryProps<T> = {
|
|
@@ -9,7 +9,15 @@ export function ReorderableList(props) {
|
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
setEntryList([...props.entries].sort((a, b) => a.position - b.position));
|
|
11
11
|
}, [props.entries]);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (props.disableReordering && reorderEnabled) {
|
|
14
|
+
setReorderEnabled(false);
|
|
15
|
+
props.onSave(entryList);
|
|
16
|
+
}
|
|
17
|
+
}, [props.disableReordering, reorderEnabled, entryList]);
|
|
12
18
|
function toggleReorderEnabled() {
|
|
19
|
+
if (props.disableReordering)
|
|
20
|
+
return;
|
|
13
21
|
let newReorderValue = !reorderEnabled;
|
|
14
22
|
setReorderEnabled(newReorderValue);
|
|
15
23
|
if (!newReorderValue) {
|
|
@@ -32,7 +40,7 @@ export function ReorderableList(props) {
|
|
|
32
40
|
flexDirection: 'column',
|
|
33
41
|
justifyContent: 'flex-start',
|
|
34
42
|
alignContent: 'stretch',
|
|
35
|
-
}, children: _jsx(Focusable, { onSecondaryButton: toggleReorderEnabled, onSecondaryActionDescription: reorderEnabled ? 'Save Order' : 'Reorder', onClick: toggleReorderEnabled, onButtonDown: saveOnBackout, children: entryList.map((entry) => (_jsx(ReorderableItem, { animate: props.animate, listData: entryList, entryData: entry, reorderEntryFunc: setEntryList, reorderEnabled: reorderEnabled, fieldProps: props.fieldProps, children: props.interactables ? _jsx(props.interactables, { entry: entry }) : null }))) }) }) }));
|
|
43
|
+
}, children: _jsx(Focusable, { onSecondaryButton: props.disableReordering ? undefined : toggleReorderEnabled, onSecondaryActionDescription: props.disableReordering ? undefined : reorderEnabled ? 'Save Order' : 'Reorder', onClick: props.disableReordering ? undefined : toggleReorderEnabled, onButtonDown: saveOnBackout, children: entryList.map((entry) => (_jsx(ReorderableItem, { animate: props.animate, listData: entryList, entryData: entry, reorderEntryFunc: setEntryList, reorderEnabled: reorderEnabled, fieldProps: props.fieldProps, children: props.interactables ? _jsx(props.interactables, { entry: entry }) : null }))) }) }) }));
|
|
36
44
|
}
|
|
37
45
|
function ReorderableItem(props) {
|
|
38
46
|
const [isSelected, _setIsSelected] = useState(false);
|
package/package.json
CHANGED
|
@@ -18,6 +18,7 @@ export type ReorderableEntry<T> = {
|
|
|
18
18
|
* Properties for a ReorderableList component of type <T>.
|
|
19
19
|
*
|
|
20
20
|
* @param animate If the list should animate. @default true
|
|
21
|
+
* @param disableReordering If true, prevents entering reordering mode and hides reorder instructions. @default false
|
|
21
22
|
*/
|
|
22
23
|
export type ReorderableListProps<T> = {
|
|
23
24
|
entries: ReorderableEntry<T>[];
|
|
@@ -25,6 +26,7 @@ export type ReorderableListProps<T> = {
|
|
|
25
26
|
interactables?: JSXElementConstructor<{ entry: ReorderableEntry<T> }>;
|
|
26
27
|
fieldProps?: FieldProps;
|
|
27
28
|
animate?: boolean;
|
|
29
|
+
disableReordering?: boolean;
|
|
28
30
|
};
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -43,7 +45,16 @@ export function ReorderableList<T>(props: ReorderableListProps<T>) {
|
|
|
43
45
|
setEntryList([...props.entries].sort((a: ReorderableEntry<T>, b: ReorderableEntry<T>) => a.position - b.position));
|
|
44
46
|
}, [props.entries]);
|
|
45
47
|
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (props.disableReordering && reorderEnabled) {
|
|
50
|
+
setReorderEnabled(false);
|
|
51
|
+
props.onSave(entryList);
|
|
52
|
+
}
|
|
53
|
+
}, [props.disableReordering, reorderEnabled, entryList]);
|
|
54
|
+
|
|
46
55
|
function toggleReorderEnabled(): void {
|
|
56
|
+
if (props.disableReordering) return;
|
|
57
|
+
|
|
47
58
|
let newReorderValue = !reorderEnabled;
|
|
48
59
|
setReorderEnabled(newReorderValue);
|
|
49
60
|
|
|
@@ -75,9 +86,9 @@ export function ReorderableList<T>(props: ReorderableListProps<T>) {
|
|
|
75
86
|
}}
|
|
76
87
|
>
|
|
77
88
|
<Focusable
|
|
78
|
-
onSecondaryButton={toggleReorderEnabled}
|
|
79
|
-
onSecondaryActionDescription={reorderEnabled ? 'Save Order' : 'Reorder'}
|
|
80
|
-
onClick={toggleReorderEnabled}
|
|
89
|
+
onSecondaryButton={props.disableReordering ? undefined : toggleReorderEnabled}
|
|
90
|
+
onSecondaryActionDescription={props.disableReordering ? undefined : reorderEnabled ? 'Save Order' : 'Reorder'}
|
|
91
|
+
onClick={props.disableReordering ? undefined : toggleReorderEnabled}
|
|
81
92
|
onButtonDown={saveOnBackout}
|
|
82
93
|
>
|
|
83
94
|
{entryList.map((entry: ReorderableEntry<T>) => (
|