portfu_admin 1.3.3

Library of Admin tools build on toip of Portfu
Documentation
<script>
    import { filesStore } from '$lib/stores.js';
    import { createEventDispatcher } from 'svelte';
    import FileEditor from './FileEditor.svelte';
    import { get } from 'svelte/store';

    const dispatch = createEventDispatcher();

    let selectedFile = null;
    let showFileEditor = false;

    function handleFileChange(event) {
        const file = event.target.files[0];
        if (file) {
            filesStore.update(files => [...files, file]);
            selectedFile = file;
            showFileEditor = true;
        }
    }

    function openFileEditor(file) {
        selectedFile = file;
        showFileEditor = true;
    }

    function isImage(file) {
        return file.type.startsWith('image/');
    }
</script>

<style>
    .file-manager {
        max-width: 600px;
        margin: 0 auto;
        text-align: center;
    }
    .file-list {
        list-style-type: none;
        padding: 0;
    }
    .file-list li {
        margin: 5px 0;
        cursor: pointer;
        color: blue;
        text-decoration: underline;
    }
    .file-preview img {
        max-width: 100%;
        height: auto;
        border-radius: 5px;
        margin: 10px 0;
    }
    input[type="file"] {
        display: none;
    }
    label {
        cursor: pointer;
        color: blue;
        text-decoration: underline;
    }
</style>

<div class="file-manager">
    <h1>File Manager</h1>
    <ul class="file-list">
        {#each $filesStore as file (file.name)}
            <li on:click={() => openFileEditor(file)}>{file.name}</li>
        {/each}
    </ul>
    <label for="fileInput">Upload File</label>
    <input
            type="file"
            id="fileInput"
            accept="*"
            on:change={handleFileChange}
    />

    {#if showFileEditor && selectedFile}
        <FileEditor {selectedFile} />
        {#if isImage(selectedFile)}
            <div class="file-preview">
                <img src={URL.createObjectURL(selectedFile)} alt={selectedFile.name} />
            </div>
        {/if}
    {/if}
</div>