import { type Accessor, createEffect, createSignal, type Setter, on } from "solid-js"; import type { AppOptions } from "../types"; import "./OptionsModal.css"; import Toastify from "toastify-js"; import "toastify-js/src/toastify.css"; interface OptionsModalProps { showOptions: Accessor; setShowOptions: Setter; options: Accessor; setOptions: (options: AppOptions) => void; } export default function OptionsModal(props: OptionsModalProps) { const [newOptions, setNewOptions] = createSignal(props.options()); let dialogElement!: HTMLDialogElement; createEffect( on(props.showOptions, () => { if (props.showOptions()) { dialogElement.showModal(); setNewOptions({ ...props.options() }); } }), ); function handleSave() { Toastify({ text: "Saved changes", duration: 2000, close: true, style: { background: "linear-gradient(135deg,rgb(38, 194, 27),rgb(5, 144, 52))" }, }).showToast(); props.setOptions(newOptions()); handleClose(); } function handleClose() { dialogElement.close(); props.setShowOptions(false); } //TODO: add form elements return (
Player Options
setNewOptions({ ...newOptions(), enableTranscoding: e.target.checked, }) } />
); }