From 70cd31308250033414e5b18f261d07ef5c14a87f Mon Sep 17 00:00:00 2001 From: bo0tzz Date: Wed, 16 Nov 2022 22:04:37 +0100 Subject: [PATCH] Add navbar button to copy image (#961) * Add navbar button to copy image * Use global event for copy image * merge upstream * Fixed missing required props * feat(web): Show notification after copying image to clipboard * chore(web): Fix typescript error * chore(web): Formatting Co-authored-by: Alex Tran --- web/src/app.d.ts | 8 +++++++ .../asset-viewer/asset-viewer-nav-bar.svelte | 12 +++++++++++ .../asset-viewer/asset-viewer.svelte | 5 +++-- .../asset-viewer/photo-viewer.svelte | 21 ++++++++++++++++--- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/web/src/app.d.ts b/web/src/app.d.ts index 62ce34f49..947bb146a 100644 --- a/web/src/app.d.ts +++ b/web/src/app.d.ts @@ -9,3 +9,11 @@ declare namespace App { // interface Platform {} } + +// Source: https://stackoverflow.com/questions/63814432/typescript-typing-of-non-standard-window-event-in-svelte +// To fix the { + oncopyImage?: () => void; + } +} diff --git a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte index f3c51ccbb..c4c49e965 100644 --- a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte +++ b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte @@ -11,10 +11,13 @@ import MenuOption from '../shared-components/context-menu/menu-option.svelte'; import Star from 'svelte-material-icons/Star.svelte'; import StarOutline from 'svelte-material-icons/StarOutline.svelte'; + import ContentCopy from 'svelte-material-icons/ContentCopy.svelte'; + import { page } from '$app/stores'; import { AssetResponseDto } from '../../../api'; export let asset: AssetResponseDto; + export let showCopyButton: boolean; const isOwner = asset.ownerId === $page.data.user.id; @@ -45,6 +48,15 @@ dispatch('goBack')} />
+ {#if showCopyButton} + { + const copyEvent = new CustomEvent('copyImage'); + window.dispatchEvent(copyEvent); + }} + /> + {/if} dispatch('download')} /> dispatch('showDetail')} /> {#if isOwner} diff --git a/web/src/lib/components/asset-viewer/asset-viewer.svelte b/web/src/lib/components/asset-viewer/asset-viewer.svelte index 9b02299ac..df251283e 100644 --- a/web/src/lib/components/asset-viewer/asset-viewer.svelte +++ b/web/src/lib/components/asset-viewer/asset-viewer.svelte @@ -1,7 +1,7 @@ - + + + await doCopy()} />