<script lang="ts"> import {writable} from "svelte/store"; import type {Writable} from "svelte/store"; import IntegerInput from "./IntegerInput.svelte"; import TextInput from "./TextInput.svelte"; import NewListTextInput from "./ListTextInput/NewListTextInput.svelte"; import ListTextInputElement from "./ListTextInput/ListTextInputElement.svelte"; let seriesTitle = ""; let volumeTitle = ""; let volumeNumber = 0; let chapterNumber = 0; let pageCount = 1; let chapterCount = 0; let summary = ""; let releaseYear: number; let releaseMonth: number; let releaseDay: number; let author: string; let typesetter: string; let editor: string; let translator: string; let publisher: string; let tags: Array<string> = []; let genre = "Hentai"; let lang = "en"; let ageRating = "18+"; $: { if (releaseYear < 0) { releaseMonth = -1; } if (releaseMonth < 0) { releaseDay = -1; } } function deleteTag(event: any) { console.log("deleted") tags.splice(event.detail.tagId, 1); tags = tags; } </script> <div class="metadataInput"> <h1>Metadata</h1> <label for="series">Series:</label> <TextInput id="series" bind:value={seriesTitle} placeholder="Series Title" /><br> <label for="title">Title:</label> <TextInput id="title" bind:value={volumeTitle} placeholder="Volume Title" /><br> <label for="volume">Volume:</label> <IntegerInput id="volume" bind:value={volumeNumber} /> <label for="chapter">Chapter:</label> <IntegerInput id="chapter" bind:value={chapterNumber} /> / <IntegerInput id="chapter_count" bind:value={chapterCount} negative={true}/><br> <label for="page_count">Page Count</label> <IntegerInput id="page_count" bind:value={pageCount} defaultValue={1} /><br> <label for="summary">Summary:</label><br> <label for="summary"></label><input id="series" type="text"><br> <label for="release_date">Release Date:</label> <IntegerInput id="release_year" bind:value={releaseYear} defaultValue={new Date().getFullYear()} /> {#if releaseYear > 0} <IntegerInput id="release_month" bind:value={releaseMonth} defaultValue={new Date().getMonth()} /> {#if releaseMonth > 0} <IntegerInput id="release_day" bind:value={releaseDay} defaultValue={new Date().getDay()} /> {/if} {/if} <br> <!--TODO: if date element is 0 do not display finer element, also set finer element to -1--> <label for="author">Author:</label> <TextInput id="author" bind:value={author} placeholder="Author" /><br> <label for="typesetter">Typesetter:</label> <TextInput id="typesetter" bind:value={typesetter} placeholder="Typesetter" /><br> <label for="editor">Editor:</label> <TextInput id="editor" bind:value={editor} placeholder="Editor" /><br> <label for="translator">Translator:</label> <TextInput id="translator" bind:value={translator} placeholder="Translator" /><br> <label for="publisher">Publisher:</label> <TextInput id="publisher" bind:value={publisher} placeholder="Publisher" /><br> <label for="new-tag">Tags:</label> <!-- List of Tags, New Button --> {#each tags as tag, id} <ListTextInputElement {id} bind:value={tag} on:deleted={deleteTag}/> {/each} <NewListTextInput id="new-tag" bind:value={tags[tags.length]}/><br> <label for="genre">Genre</label> <TextInput id="genre" bind:value={genre} placeholder="Genre" /> <label for="lang">Language</label> <input id="lang" type="text"><br> <label for="age_rating">Age Rating</label> <input id="age_rating" type="text"><br> <input type="submit" value="Save"/> </div> <style> .metadataInput { height: 100%; overflow: auto; } .metadataInput label, input[type="submit"] { margin-left: 4rem; } .metadataInput h1 { position: sticky; top: 0; margin: 0; border-bottom: 2px solid black; background-color: var(--color-bg); padding: 1.3rem; } </style>