From 57014401ff3248853c5481d4df97b0c823006eb6 Mon Sep 17 00:00:00 2001 From: Michael Winter Date: Thu, 19 Feb 2026 03:51:50 +0100 Subject: [PATCH] Add internal page iframe modal, fix video scaling, and update max-width --- components/IconButton.vue | 14 ++++++++++---- components/ImageSlider.vue | 13 +++++++------ components/Modal/Modal.vue | 2 +- layouts/default.vue | 11 +++++++---- stores/ModalStore.js | 5 +++-- 5 files changed, 28 insertions(+), 17 deletions(-) diff --git a/components/IconButton.vue b/components/IconButton.vue index 4f7792e..a34155a 100644 --- a/components/IconButton.vue +++ b/components/IconButton.vue @@ -6,11 +6,11 @@ - + - + @@ -18,7 +18,7 @@ - + @@ -49,12 +49,18 @@ const modalStore = useModalStore() const isExternalLink = computed(() => { - return props.link && !props.link.endsWith('.pdf') + return props.link && !props.link.endsWith('.pdf') && !props.link.startsWith('/') + }) + + const isInternalPage = computed(() => { + return props.link && props.link.startsWith('/') && !props.link.endsWith('.pdf') }) const openDocument = () => { if (props.link?.endsWith('.pdf')) { modalStore.setModalProps('pdf', 'aspect-[1/1.414]', true, '', '', '', props.link) + } else if (props.link?.startsWith('/')) { + modalStore.setModalProps('document', 'aspect-[1/1.414]', true, '', '', '', '', '', props.link) } } diff --git a/components/ImageSlider.vue b/components/ImageSlider.vue index 4f4f930..85bed3e 100644 --- a/components/ImageSlider.vue +++ b/components/ImageSlider.vue @@ -1,6 +1,6 @@ diff --git a/components/Modal/Modal.vue b/components/Modal/Modal.vue index 35052e1..c8bb9e9 100644 --- a/components/Modal/Modal.vue +++ b/components/Modal/Modal.vue @@ -98,7 +98,7 @@ provide('modal', api) class="w-full transform overflow-hidden bg-white text-left align-middle shadow-xl transition-all" :class="{ 'h-screen': fullscreen, - 'max-w-[85vw] rounded-lg': !fullscreen, + 'max-w-[min(85vw,1200px)] rounded-lg': !fullscreen, }" :style="!fullscreen ? { maxHeight } : {}" > diff --git a/layouts/default.vue b/layouts/default.vue index 2245b52..1b0b730 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -39,8 +39,11 @@
-
- +
+ +
+
+
@@ -48,8 +51,8 @@
-
- + diff --git a/stores/ModalStore.js b/stores/ModalStore.js index ccfa8a8..1323320 100644 --- a/stores/ModalStore.js +++ b/stores/ModalStore.js @@ -1,9 +1,9 @@ import {defineStore} from "pinia"; export const useModalStore = defineStore("ModalStore", { - state: () => ({"type": "", "aspect":"", "isOpen":false, "bucket":"", "gallery":"", "vimeo_trackid": "", "pdfUrl": "", "soundcloudUrl": ""}), + state: () => ({"type": "", "aspect":"", "isOpen":false, "bucket":"", "gallery":"", "vimeo_trackid": "", "pdfUrl": "", "soundcloudUrl": "", "iframeUrl": ""}), actions: { - setModalProps(type, aspect, isOpen, bucket, gallery, vimeo_trackid, pdfUrl, soundcloudUrl) { + setModalProps(type, aspect, isOpen, bucket, gallery, vimeo_trackid, pdfUrl, soundcloudUrl, iframeUrl) { this.type = type this.aspect = aspect this.isOpen = isOpen @@ -12,6 +12,7 @@ export const useModalStore = defineStore("ModalStore", { this.vimeo_trackid = vimeo_trackid this.pdfUrl = pdfUrl this.soundcloudUrl = soundcloudUrl + this.iframeUrl = iframeUrl } } }) \ No newline at end of file