From 091923764d3083dda958ca1109c6c7a806414a4f Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 16 Feb 2020 22:46:18 +0900 Subject: Implement image dialog --- src/client/components/image-viewer.vue | 54 ++++++++++++++++++++++++++++++++++ src/client/components/media-image.vue | 12 +++++++- src/client/components/modal.vue | 9 +++++- 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/client/components/image-viewer.vue (limited to 'src/client/components') diff --git a/src/client/components/image-viewer.vue b/src/client/components/image-viewer.vue new file mode 100644 index 0000000000..3359b600da --- /dev/null +++ b/src/client/components/image-viewer.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/client/components/media-image.vue b/src/client/components/media-image.vue index 5ae167d490..3bb1bda5e2 100644 --- a/src/client/components/media-image.vue +++ b/src/client/components/media-image.vue @@ -20,6 +20,7 @@ import Vue from 'vue'; import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import i18n from '../i18n'; import { getStaticImageUrl } from '../scripts/get-static-image-url'; +import ImageViewer from './image-viewer.vue'; export default Vue.extend({ i18n, @@ -60,7 +61,16 @@ export default Vue.extend({ }, methods: { onClick() { - window.open(this.image.url, '_blank'); + if (this.$store.state.device.imageNewTab) { + window.open(this.image.url, '_blank'); + } else { + const viewer = this.$root.new(ImageViewer, { + image: this.image + }); + this.$once('hook:beforeDestroy', () => { + viewer.close(); + }); + } } } }); diff --git a/src/client/components/modal.vue b/src/client/components/modal.vue index a48c7154ee..1a9d98a8cc 100644 --- a/src/client/components/modal.vue +++ b/src/client/components/modal.vue @@ -1,5 +1,5 @@