diff --git a/src/lang/en.ts b/src/lang/en.ts index 236e8d1a..73c685f5 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -353,4 +353,8 @@ export const languageEnglish = { inputBotGenerationPrompt: "Input Bot Generation Prompt", createBotAI: "Create OC Bot from AI", createBotwithAI: "Create Bot from AI", + changeFolderName: "Input the new folder name (blank to cancel)", + cancel: "Cancel", + renameFolder: "Rename Folder", + changeFolderColor: "Change Folder Color", } \ No newline at end of file diff --git a/src/lib/SideBars/Sidebar.svelte b/src/lib/SideBars/Sidebar.svelte index caa7d9cf..e4ecd2eb 100644 --- a/src/lib/SideBars/Sidebar.svelte +++ b/src/lib/SideBars/Sidebar.svelte @@ -40,6 +40,7 @@ import { BotCreator } from "src/ts/creation/creator"; import Button from "../UI/GUI/Button.svelte"; import { fly } from "svelte/transition"; + import { alertInput, alertSelect } from "src/ts/alert"; let openPresetList = false; let sideBarMode = 0; let editMode = false; @@ -90,7 +91,7 @@ } type sortTypeNormal = { type:'normal',img: string, index: number, name:string } - type sortType = sortTypeNormal|{type:'folder',folder:sortTypeNormal[],id:string, name:string} + type sortType = sortTypeNormal|{type:'folder',folder:sortTypeNormal[],id:string, name:string, color:string} let charImages: sortType[] = []; let IconRounded = false let openFolders:string[] = [] @@ -132,7 +133,8 @@ folder: folderCharImages, type: "folder", id: folder.id, - name: folder.name + name: folder.name, + color: folder.color }); } } @@ -407,30 +409,73 @@ {#if char.type === 'normal'} {:else if char.type === "folder"} - { - if(char.type !== 'folder'){ - return - } - if(openFolders.includes(char.id)){ - openFolders.splice(openFolders.indexOf(char.id), 1) - } - else{ - openFolders.push(char.id) - } - openFolders = openFolders - }}> - {#if openFolders.includes(char.id)} - - {:else} - - {/if} - + {#key char.color} + {#key char.name} + { + e.preventDefault() + const sel = parseInt(await alertSelect([language.renameFolder,language.changeFolderColor,language.cancel])) + if(sel === 0){ + const v = await alertInput(language.changeFolderName) + const db = get(DataBase) + if(v){ + const oder = db.characterOrder[ind] + if(typeof(oder) === 'string'){ + return + } + oder.name = v + db.characterOrder[ind] = oder + setDatabase(db) + } + } + else if(sel === 1){ + const colors = ["red","green","blue","yellow","indigo","purple","pink","default"] + const sel = parseInt(await alertSelect(colors)) + const db = get(DataBase) + const oder = db.characterOrder[ind] + if(typeof(oder) === 'string'){ + return + } + oder.color = colors[sel].toLocaleLowerCase() + db.characterOrder[ind] = oder + setDatabase(db) + } + }} + onClick={() => { + if(char.type !== 'folder'){ + return + } + if(openFolders.includes(char.id)){ + openFolders.splice(openFolders.indexOf(char.id), 1) + } + else{ + openFolders.push(char.id) + } + openFolders = openFolders + }}> + {#if openFolders.includes(char.id)} + + {:else} + + {/if} + + {/key} + {/key} {/if} {#if char.type === 'folder' && openFolders.includes(char.id)} + {#key char.color}
-
+
{ e.preventDefault() e.dataTransfer.dropEffect = 'move' @@ -491,6 +536,7 @@ }} on:dragenter={preventAll}/> {/each}
+ {/key} {/if}
{ e.dataTransfer.dropEffect = 'move' diff --git a/src/lib/SideBars/SidebarAvatar.svelte b/src/lib/SideBars/SidebarAvatar.svelte index 8b90d2eb..31149578 100644 --- a/src/lib/SideBars/SidebarAvatar.svelte +++ b/src/lib/SideBars/SidebarAvatar.svelte @@ -7,6 +7,7 @@ export let size = "22"; export let onClick = () => {} export let bordered = false + export let color:string = '' @@ -14,11 +15,22 @@ class:border = {bordered} class:border-selected={bordered} class:rounded-md={bordered} + on:contextmenu on:click={onClick} use:tooltipRight={name}> {#if src} {#if src === "slot"}