summaryrefslogtreecommitdiff
path: root/packages/frontend/src/os.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/os.ts')
-rw-r--r--packages/frontend/src/os.ts31
1 files changed, 18 insertions, 13 deletions
diff --git a/packages/frontend/src/os.ts b/packages/frontend/src/os.ts
index 3085f33e21..a8dd99c854 100644
--- a/packages/frontend/src/os.ts
+++ b/packages/frontend/src/os.ts
@@ -447,15 +447,20 @@ export function authenticateDialog(): Promise<{
});
}
+type SelectItem<C> = {
+ value: C;
+ text: string;
+};
+
// default が指定されていたら result は null になり得ないことを保証する overload function
export function select<C = any>(props: {
title?: string;
text?: string;
default: string;
- items: {
- value: C;
- text: string;
- }[];
+ items: (SelectItem<C> | {
+ sectionTitle: string;
+ items: SelectItem<C>[];
+ } | undefined)[];
}): Promise<{
canceled: true; result: undefined;
} | {
@@ -465,10 +470,10 @@ export function select<C = any>(props: {
title?: string;
text?: string;
default?: string | null;
- items: {
- value: C;
- text: string;
- }[];
+ items: (SelectItem<C> | {
+ sectionTitle: string;
+ items: SelectItem<C>[];
+ } | undefined)[];
}): Promise<{
canceled: true; result: undefined;
} | {
@@ -478,10 +483,10 @@ export function select<C = any>(props: {
title?: string;
text?: string;
default?: string | null;
- items: {
- value: C;
- text: string;
- }[];
+ items: (SelectItem<C> | {
+ sectionTitle: string;
+ items: SelectItem<C>[];
+ } | undefined)[];
}): Promise<{
canceled: true; result: undefined;
} | {
@@ -492,7 +497,7 @@ export function select<C = any>(props: {
title: props.title,
text: props.text,
select: {
- items: props.items,
+ items: props.items.filter(x => x !== undefined),
default: props.default ?? null,
},
}, {