Files

103 lines
2.7 KiB
Svelte
Raw Permalink Normal View History

2026-04-29 19:40:37 +03:00
<script>
import { createEventDispatcher, getContext } from "svelte";
import Icon from "../common/Icon.svelte";
2026-05-05 19:21:59 +03:00
import FileIndex from "./FileIndex.svelte";
2026-05-14 22:49:47 +03:00
import Dropdown from "../common/Dropdown.svelte";
2026-04-29 19:40:37 +03:00
let dialogEl;
2026-05-14 22:49:47 +03:00
export let presetMode = false;
2026-04-29 19:40:37 +03:00
const dispatch = createEventDispatcher();
const channel = getContext("channel");
2026-05-05 19:21:59 +03:00
$: files = [];
2026-05-14 22:49:47 +03:00
$: selectedFiles = [];
2026-04-29 19:40:37 +03:00
// onMount(() => {
// load();
// });
export function close(e) {
if (e) {
e.preventDefault();
}
dialogEl.close();
2026-05-14 22:49:47 +03:00
selectedFiles = [];
2026-04-29 19:40:37 +03:00
}
2026-05-05 19:21:59 +03:00
function load(recordId) {
fetch(channel.lucentUrl + "/records/files/?recordId=" + recordId)
.then((response) => response.json())
.then((json) => {
files = json;
2026-04-29 19:40:37 +03:00
})
.catch((error) => console.log(error));
}
2026-05-14 22:49:47 +03:00
function insert(e, preset) {
2026-04-29 19:40:37 +03:00
e.preventDefault();
2026-05-14 22:49:47 +03:00
dispatch("insert_files", { files: selectedFiles, preset: preset });
2026-04-29 19:40:37 +03:00
}
function replace(e) {
e.preventDefault();
2026-05-14 22:49:47 +03:00
dispatch("replace_files", selectedFiles);
2026-04-29 19:40:37 +03:00
}
2026-05-05 19:21:59 +03:00
export function open(recordId) {
2026-04-29 19:40:37 +03:00
dialogEl.showModal();
2026-05-05 19:21:59 +03:00
load(recordId);
2026-04-29 19:40:37 +03:00
}
</script>
<dialog bind:this={dialogEl}>
2026-05-05 19:21:59 +03:00
<div class="dialog-header">
2026-05-14 22:49:47 +03:00
{#if presetMode}
<Dropdown>
<div slot="button">Insert Preset</div>
{#each channel.imagePresets as preset}
<button
class=" dropdown-item button"
on:click={(e) => insert(e, preset)}
>{preset.name}</button
>
{/each}
</Dropdown>
{:else}
<button
type="button"
class="button"
on:click={insert}
disabled={selectedFiles.length === 0}
>
Insert
</button>
<button
type="button"
class="button"
on:click={replace}
disabled={selectedFiles.length === 0}
>
Replace
</button>
{/if}
{#if selectedFiles.length > 0}
2026-05-05 19:21:59 +03:00
<span class="">
2026-05-14 22:49:47 +03:00
{selectedFiles.length} records selected
2026-05-05 19:21:59 +03:00
</span>
{/if}
2026-04-29 19:40:37 +03:00
2026-05-05 19:21:59 +03:00
<button
on:click|preventDefault={close}
type="button"
class="button close"
aria-label="Close"
>
<Icon icon="close"></Icon>
</button>
</div>
2026-04-29 19:40:37 +03:00
2026-05-05 19:21:59 +03:00
<div class="dialog-body">
2026-05-14 22:49:47 +03:00
<FileIndex {files} bind:selected={selectedFiles}></FileIndex>
2026-05-05 19:21:59 +03:00
</div>
2026-04-29 19:40:37 +03:00
</dialog>