Add fullscreen buttons to file viewer and filesystem
This commit is contained in:
@@ -31,10 +31,12 @@ let file = file_struct
|
|||||||
let list = list_struct
|
let list = list_struct
|
||||||
let is_list = false
|
let is_list = false
|
||||||
let list_downloadable = false
|
let list_downloadable = false
|
||||||
|
let file_viewer
|
||||||
let file_preview
|
let file_preview
|
||||||
let list_navigator
|
let list_navigator
|
||||||
let sharebar
|
let sharebar
|
||||||
let sharebar_visible = false
|
let sharebar_visible = false
|
||||||
|
let fullscreen = false
|
||||||
let toggle_sharebar = () => {
|
let toggle_sharebar = () => {
|
||||||
if (navigator.share) {
|
if (navigator.share) {
|
||||||
let name = file.name
|
let name = file.name
|
||||||
@@ -221,6 +223,20 @@ const toggle_gallery = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggle_fullscreen = () => {
|
||||||
|
if (fullscreen || document.fullscreenElement) {
|
||||||
|
try {
|
||||||
|
document.exitFullscreen()
|
||||||
|
} catch (err) {
|
||||||
|
console.debug("Failed to exit fullscreen", err)
|
||||||
|
}
|
||||||
|
fullscreen = false
|
||||||
|
} else {
|
||||||
|
file_viewer.requestFullscreen()
|
||||||
|
fullscreen = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Premium page customizations. In the gallery view we will use the
|
// Premium page customizations. In the gallery view we will use the
|
||||||
// customizations for the first file in the list, else we simply use the
|
// customizations for the first file in the list, else we simply use the
|
||||||
// selected file. In most cases they are all the same so the user won't notice
|
// selected file. In most cases they are all the same so the user won't notice
|
||||||
@@ -365,7 +381,7 @@ const keyboard_event = evt => {
|
|||||||
|
|
||||||
<svelte:window on:keydown={keyboard_event} on:hashchange={hash_change}/>
|
<svelte:window on:keydown={keyboard_event} on:hashchange={hash_change}/>
|
||||||
|
|
||||||
<div class="file_viewer">
|
<div class="file_viewer" bind:this={file_viewer}>
|
||||||
<div class="headerbar">
|
<div class="headerbar">
|
||||||
{#if !disable_menu}
|
{#if !disable_menu}
|
||||||
<button
|
<button
|
||||||
@@ -458,6 +474,19 @@ const keyboard_event = evt => {
|
|||||||
<span>QR code</span>
|
<span>QR code</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="toolbar_button"
|
||||||
|
on:click={toggle_fullscreen}
|
||||||
|
class:button_highlight={fullscreen}
|
||||||
|
title="Open page in full screen mode">
|
||||||
|
{#if fullscreen}
|
||||||
|
<i class="icon">fullscreen_exit</i>
|
||||||
|
{:else}
|
||||||
|
<i class="icon">fullscreen</i>
|
||||||
|
{/if}
|
||||||
|
<span>Fullscreen</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
{#if view === "file"}
|
{#if view === "file"}
|
||||||
<button
|
<button
|
||||||
class="toolbar_button"
|
class="toolbar_button"
|
||||||
|
@@ -14,6 +14,7 @@ import { branding_from_path } from './edit_window/Branding.js'
|
|||||||
import Menu from './Menu.svelte';
|
import Menu from './Menu.svelte';
|
||||||
|
|
||||||
let loading = true
|
let loading = true
|
||||||
|
let file_viewer
|
||||||
let toolbar
|
let toolbar
|
||||||
let upload_widget
|
let upload_widget
|
||||||
let download_frame
|
let download_frame
|
||||||
@@ -119,7 +120,7 @@ const update_css = path => document.documentElement.style = branding_from_path(p
|
|||||||
on:loading={loading_evt}
|
on:loading={loading_evt}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="file_viewer">
|
<div bind:this={file_viewer} class="file_viewer">
|
||||||
<div class="headerbar">
|
<div class="headerbar">
|
||||||
<Menu/>
|
<Menu/>
|
||||||
<Breadcrumbs state={state} fs_navigator={fs_navigator}/>
|
<Breadcrumbs state={state} fs_navigator={fs_navigator}/>
|
||||||
@@ -130,6 +131,7 @@ const update_css = path => document.documentElement.style = branding_from_path(p
|
|||||||
bind:this={toolbar}
|
bind:this={toolbar}
|
||||||
fs_navigator={fs_navigator}
|
fs_navigator={fs_navigator}
|
||||||
state={state}
|
state={state}
|
||||||
|
file_viewer={file_viewer}
|
||||||
bind:details_visible={details_visible}
|
bind:details_visible={details_visible}
|
||||||
edit_window={edit_window}
|
edit_window={edit_window}
|
||||||
bind:edit_visible={edit_visible}
|
bind:edit_visible={edit_visible}
|
||||||
|
@@ -20,6 +20,7 @@ export let view = "file"
|
|||||||
export let details_visible = false
|
export let details_visible = false
|
||||||
export let edit_window
|
export let edit_window
|
||||||
export let edit_visible = false
|
export let edit_visible = false
|
||||||
|
export let file_viewer
|
||||||
|
|
||||||
$: share_url = generate_share_url(state.path)
|
$: share_url = generate_share_url(state.path)
|
||||||
let link_copied = false
|
let link_copied = false
|
||||||
@@ -50,6 +51,21 @@ let share = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let fullscreen = false
|
||||||
|
const toggle_fullscreen = () => {
|
||||||
|
if (fullscreen || document.fullscreenElement) {
|
||||||
|
try {
|
||||||
|
document.exitFullscreen()
|
||||||
|
} catch (err) {
|
||||||
|
console.debug("Failed to exit fullscreen", err)
|
||||||
|
}
|
||||||
|
fullscreen = false
|
||||||
|
} else {
|
||||||
|
file_viewer.requestFullscreen()
|
||||||
|
fullscreen = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let expanded = false
|
let expanded = false
|
||||||
let expand = e => {
|
let expand = e => {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@@ -113,6 +129,19 @@ let expand = e => {
|
|||||||
</button>
|
</button>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="toolbar_button"
|
||||||
|
on:click={toggle_fullscreen}
|
||||||
|
class:button_highlight={fullscreen}
|
||||||
|
title="Open page in full screen mode">
|
||||||
|
{#if fullscreen}
|
||||||
|
<i class="icon">fullscreen_exit</i>
|
||||||
|
{:else}
|
||||||
|
<i class="icon">fullscreen</i>
|
||||||
|
{/if}
|
||||||
|
<span>Fullscreen</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
<button on:click={() => details_visible = !details_visible} class:button_highlight={details_visible}>
|
<button on:click={() => details_visible = !details_visible} class:button_highlight={details_visible}>
|
||||||
<i class="icon">help</i>
|
<i class="icon">help</i>
|
||||||
<span>Deta<u>i</u>ls</span>
|
<span>Deta<u>i</u>ls</span>
|
||||||
|
Reference in New Issue
Block a user