Replace event dispatcher with a callback in filemanager
This commit is contained in:
@@ -6,8 +6,8 @@ import CompactView from "./CompactView.svelte"
|
||||
import Modal from "util/Modal.svelte";
|
||||
import Breadcrumbs from "filesystem/Breadcrumbs.svelte"
|
||||
import { FSNavigator } from "filesystem/FSNavigator";
|
||||
import type { FSNode } from "lib/FilesystemAPI";
|
||||
import { FileAction, type FileEvent } from "./FileManagerLib";
|
||||
import type { FSNode } from "lib/FilesystemAPI.svelte";
|
||||
import { FileAction, type FileActionHandler } from "./FileManagerLib";
|
||||
|
||||
let nav = $state(new FSNavigator(false))
|
||||
let modal: Modal = $state()
|
||||
@@ -34,12 +34,10 @@ let selected_files = $derived($nav.children.reduce((acc, file) => {
|
||||
|
||||
// Navigation functions
|
||||
|
||||
const file_event = (e: CustomEvent<FileEvent>) => {
|
||||
const index = e.detail.index
|
||||
|
||||
switch (e.detail.action) {
|
||||
const file_event: FileActionHandler = (action: FileAction, index: number, orig: Event) => {
|
||||
switch (action) {
|
||||
case FileAction.Click:
|
||||
e.detail.original.preventDefault()
|
||||
orig.preventDefault()
|
||||
if (nav.children[index].type === "dir") {
|
||||
nav.navigate(nav.children[index].path, true)
|
||||
} else {
|
||||
@@ -49,12 +47,12 @@ const file_event = (e: CustomEvent<FileEvent>) => {
|
||||
case FileAction.Context:
|
||||
// If this is a touch event we will select the item
|
||||
if (navigator.maxTouchPoints && navigator.maxTouchPoints > 0) {
|
||||
e.detail.original.preventDefault()
|
||||
orig.preventDefault()
|
||||
select_node(index)
|
||||
}
|
||||
break
|
||||
case FileAction.Select:
|
||||
e.detail.original.preventDefault()
|
||||
orig.preventDefault()
|
||||
nav.children[index].fm_selected = !nav.children[index].fm_selected
|
||||
break
|
||||
}
|
||||
@@ -134,7 +132,7 @@ onMount(() => {
|
||||
<svelte:window onkeydown={detect_shift} onkeyup={detect_shift} />
|
||||
|
||||
<Modal bind:this={modal} width="900px">
|
||||
{#snippet title()}
|
||||
{#snippet header()}
|
||||
<div class="header" >
|
||||
<button class="button round" onclick={modal.hide}>
|
||||
<i class="icon">close</i>
|
||||
@@ -175,26 +173,26 @@ onMount(() => {
|
||||
{#if directory_view === "list"}
|
||||
<ListView
|
||||
nav={nav}
|
||||
file_event={file_event}
|
||||
show_hidden={show_hidden}
|
||||
large_icons={large_icons}
|
||||
hide_edit
|
||||
hide_branding
|
||||
on:file={file_event}
|
||||
/>
|
||||
{:else if directory_view === "gallery"}
|
||||
<GalleryView
|
||||
nav={nav}
|
||||
file_event={file_event}
|
||||
show_hidden={show_hidden}
|
||||
large_icons={large_icons}
|
||||
on:file={file_event}
|
||||
/>
|
||||
{:else if directory_view === "compact"}
|
||||
<CompactView
|
||||
nav={nav}
|
||||
file_event={file_event}
|
||||
show_hidden={show_hidden}
|
||||
large_icons={large_icons}
|
||||
hide_edit
|
||||
on:file={file_event}
|
||||
/>
|
||||
{/if}
|
||||
</Modal>
|
||||
|
Reference in New Issue
Block a user