- {@render toggles(true)}
+ {@render toggles(groupedToggles, true)}
{#if DBState.db.supaModelType !== 'none' || DBState.db.hanuraiEnable || DBState.db.hypaV3}
@@ -74,7 +97,7 @@
- {@render toggles()}
+ {@render toggles(groupedToggles)}
{#if DBState.db.supaModelType !== 'none' || DBState.db.hanuraiEnable || DBState.db.hypaV3}
diff --git a/src/ts/util.ts b/src/ts/util.ts
index 3b12e5c6..1c20da11 100644
--- a/src/ts/util.ts
+++ b/src/ts/util.ts
@@ -1009,12 +1009,26 @@ export function parseKeyValue(template:string){
}
}
-type sidebarToggle =
+export type sidebarToggleGroup = {
+ key?:string,
+ value?:string,
+ type:'group',
+ children:sidebarToggle[]
+}
+
+export type sidebarToggleGroupEnd = {
+ key?:string,
+ value?:string,
+ type:'groupEnd',
+}
+
+export type sidebarToggle =
+ | sidebarToggleGroup
+ | sidebarToggleGroupEnd
| {
key?:string,
value?:string,
type:'divider',
- options?:string[]
}
| {
key:string,
@@ -1025,7 +1039,7 @@ type sidebarToggle =
| {
key:string,
value:string,
- type:string|undefined,
+ type:'text'|undefined,
options?:string[]
}
@@ -1041,11 +1055,18 @@ export function parseToggleSyntax(template:string){
for(const line of splited){
const [key, value, type, option] = line.split('=')
- if((key && value) || type === 'divider'){
+ if(type === 'group' || type === 'groupEnd' || type === 'divider'){
keyValue.push({
key,
value,
type,
+ children: []
+ })
+ } else if((key && value)){
+ keyValue.push({
+ key,
+ value,
+ type: type === 'select' || type === 'text' ? type : undefined,
options: option?.split(',') ?? []
})
}