summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/form.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/frontend/src/scripts/form.ts')
-rw-r--r--packages/frontend/src/scripts/form.ts35
1 files changed, 31 insertions, 4 deletions
diff --git a/packages/frontend/src/scripts/form.ts b/packages/frontend/src/scripts/form.ts
index 222fd9b0b7..b0db404f28 100644
--- a/packages/frontend/src/scripts/form.ts
+++ b/packages/frontend/src/scripts/form.ts
@@ -1,36 +1,48 @@
/*
- * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
-type EnumItem = string | {label: string; value: string;};
+type EnumItem = string | {
+ label: string;
+ value: string;
+};
+
export type FormItem = {
label?: string;
type: 'string';
default: string | null;
+ description?: string;
+ required?: boolean;
hidden?: boolean;
multiline?: boolean;
+ treatAsMfm?: boolean;
} | {
label?: string;
type: 'number';
default: number | null;
+ description?: string;
+ required?: boolean;
hidden?: boolean;
step?: number;
} | {
label?: string;
type: 'boolean';
default: boolean | null;
+ description?: string;
hidden?: boolean;
} | {
label?: string;
type: 'enum';
default: string | null;
+ required?: boolean;
hidden?: boolean;
enum: EnumItem[];
} | {
label?: string;
type: 'radio';
default: unknown | null;
+ required?: boolean;
hidden?: boolean;
options: {
label: string;
@@ -38,14 +50,28 @@ export type FormItem = {
}[];
} | {
label?: string;
+ type: 'range';
+ default: number | null;
+ description?: string;
+ required?: boolean;
+ step?: number;
+ min: number;
+ max: number;
+ textConverter?: (value: number) => string;
+} | {
+ label?: string;
type: 'object';
default: Record<string, unknown> | null;
- hidden: true;
+ hidden: boolean;
} | {
label?: string;
type: 'array';
default: unknown[] | null;
- hidden: true;
+ hidden: boolean;
+} | {
+ type: 'button';
+ content?: string;
+ action: (ev: MouseEvent, v: any) => void;
};
export type Form = Record<string, FormItem>;
@@ -55,6 +81,7 @@ type GetItemType<Item extends FormItem> =
Item['type'] extends 'number' ? number :
Item['type'] extends 'boolean' ? boolean :
Item['type'] extends 'radio' ? unknown :
+ Item['type'] extends 'range' ? number :
Item['type'] extends 'enum' ? string :
Item['type'] extends 'array' ? unknown[] :
Item['type'] extends 'object' ? Record<string, unknown>