From 30bbb764aeb5156f77de11aca1b71fcf263b4081 Mon Sep 17 00:00:00 2001 From: Maya Date: Thu, 12 Feb 2026 16:03:47 +0300 Subject: [PATCH] feat: start settings modal component --- messages/en.json | 4 + .../functional/FormatDropdown.svelte | 81 +++++++++++++ src/lib/components/functional/Modal.svelte | 113 ++++++++++++++++++ src/lib/components/layout/Dialogs.svelte | 2 +- src/lib/types/file.svelte.ts | 8 ++ src/routes/convert/+page.svelte | 3 +- 6 files changed, 209 insertions(+), 2 deletions(-) create mode 100644 src/lib/components/functional/Modal.svelte diff --git a/messages/en.json b/messages/en.json index 220d574..26614f2 100644 --- a/messages/en.json +++ b/messages/en.json @@ -81,6 +81,10 @@ "no_formats": "No formats available", "no_results": "No formats match your search" }, + "settings": { + "settings": "Settings", + "title": "File conversion settings" + }, "tooltips": { "unknown_file": "Unknown file type", "audio_file": "Audio file", diff --git a/src/lib/components/functional/FormatDropdown.svelte b/src/lib/components/functional/FormatDropdown.svelte index d91d737..321abab 100644 --- a/src/lib/components/functional/FormatDropdown.svelte +++ b/src/lib/components/functional/FormatDropdown.svelte @@ -8,6 +8,8 @@ import { onMount } from "svelte"; import { quintOut } from "svelte/easing"; import { VertFile } from "$lib/types"; + import Modal from "./Modal.svelte"; + import Dropdown from "./Dropdown.svelte"; type Props = { categories: Categories; @@ -331,6 +333,13 @@ newFiles.forEach((f) => files.add(f)); }; + let showSettingsModal = $state(false); + const settings = () => { + if (!file) return; + // TODO: temporary - will have individual settings modals for each converter and show those instead + showSettingsModal = true; + }; + onMount(() => { const handleClickOutside = (e: MouseEvent) => { if (dropdown && !dropdown.contains(e.target as Node)) { @@ -355,6 +364,68 @@ }); +{#if showSettingsModal} + (showSettingsModal = false), + }, + { + text: "Apply", + action: () => (showSettingsModal = false), + primary: true, + }, + ]} + onclose={() => (showSettingsModal = false)} + > +
+
+
+

Format Settings

+

+ Configure conversion options for {file?.name} +

+
+ +
+

Example dropdown

+ { + console.log("selected format", e); + selected = e; + }} + /> +
+ +
+

Resolution

+ +
+ +
+

Frame Rate (FPS)

+ +
+
+
+
+{/if} +
{/if} + {#if file} +
+ +
+ {/if} {/if} diff --git a/src/lib/components/functional/Modal.svelte b/src/lib/components/functional/Modal.svelte new file mode 100644 index 0000000..2eb811c --- /dev/null +++ b/src/lib/components/functional/Modal.svelte @@ -0,0 +1,113 @@ + + + diff --git a/src/lib/components/layout/Dialogs.svelte b/src/lib/components/layout/Dialogs.svelte index b496244..0682825 100644 --- a/src/lib/components/layout/Dialogs.svelte +++ b/src/lib/components/layout/Dialogs.svelte @@ -16,7 +16,7 @@ {#if dialogList.length > 0}