Skip to content

Commit 8f1ac41

Browse files
committed
feat: Preview view across tabs
1 parent 1ad7671 commit 8f1ac41

10 files changed

Lines changed: 398 additions & 207 deletions

File tree

config/areas/site/views.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<?php
22

3+
use Kirby\Cms\Find;
34
use Kirby\Panel\Controller\View\PageFileViewController;
4-
use Kirby\Panel\Controller\View\PagePreviewViewController;
55
use Kirby\Panel\Controller\View\PageViewController;
6+
use Kirby\Panel\Controller\View\PreviewViewController;
7+
use Kirby\Panel\Controller\View\RemotePreviewViewController;
68
use Kirby\Panel\Controller\View\SiteFileViewController;
7-
use Kirby\Panel\Controller\View\SitePreviewViewController;
89
use Kirby\Panel\Controller\View\SiteViewController;
910

1011
return [
@@ -18,7 +19,11 @@
1819
],
1920
'page.preview' => [
2021
'pattern' => '(pages/.*?)/preview/(changes|latest|compare|form)',
21-
'action' => PagePreviewViewController::class
22+
'action' => PreviewViewController::class
23+
],
24+
'page.preview.remote' => [
25+
'pattern' => '(pages/.*?)/preview/(form)/remote',
26+
'action' => RemotePreviewViewController::class
2227
],
2328
'site' => [
2429
'pattern' => 'site',
@@ -30,6 +35,10 @@
3035
],
3136
'site.preview' => [
3237
'pattern' => '(site)/preview/(changes|latest|compare|form)',
33-
'action' => SitePreviewViewController::class
38+
'action' => PreviewViewController::class
39+
],
40+
'site.preview.remote' => [
41+
'pattern' => '(site)/preview/(form)/remote',
42+
'action' => RemotePreviewViewController::class
3443
],
3544
];

panel/src/components/Navigation/Button.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ export default {
258258
display: inline-flex;
259259
align-items: center;
260260
justify-content: var(--button-align);
261-
gap: 0.5rem;
261+
gap: var(--spacing-2);
262262
padding-inline: var(--button-padding);
263263
white-space: nowrap;
264264
line-height: 1;

panel/src/components/Views/Preview/PreviewBrowser.vue

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div class="k-preview-browser">
3-
<header class="k-preview-browser-header">
3+
<header v-if="label" class="k-preview-browser-header">
44
<k-headline>
55
<k-icon type="git-branch" />
66
{{ label }}
@@ -33,9 +33,16 @@
3333
icon="pushpin"
3434
role="switch"
3535
size="sm"
36-
@click="onTogglePin"
36+
@click="$emit('pin')"
37+
/>
38+
<k-button
39+
v-if="open"
40+
:link="open"
41+
icon="open"
42+
size="xs"
43+
target="_blank"
44+
@click="$emit('open')"
3745
/>
38-
<k-button :link="src" icon="open" size="xs" target="_blank" />
3946
</k-button-group>
4047
</header>
4148

@@ -49,24 +56,13 @@ import { props } from "@/components/Forms/FormControls.vue";
4956
export default {
5057
mixins: [props],
5158
props: {
59+
isPinned: Boolean,
5260
label: String,
5361
src: String,
54-
mode: String
55-
},
56-
emits: ["discard", "navigate", "reload", "submit"],
57-
data() {
58-
return {
59-
isPinned: false
60-
};
61-
},
62-
mounted() {
63-
this.$events.on("content.discard", this.reload);
64-
this.$events.on("content.publish", this.reload);
65-
},
66-
unmounted() {
67-
this.$events.off("content.discard", this.reload);
68-
this.$events.off("content.publish", this.reload);
62+
mode: String,
63+
open: String
6964
},
65+
emits: ["discard", "navigate", "open", "pin", "submit"],
7066
methods: {
7167
/**
7268
* Handle link clicks inside the iframe
@@ -127,14 +123,6 @@ export default {
127123
link.addEventListener("click", this.onClick);
128124
}
129125
},
130-
onTogglePin() {
131-
this.isPinned = !this.isPinned;
132-
133-
// when unpinning, reset the iframe to match the preview view
134-
if (!this.isPinned) {
135-
this.$emit("reload");
136-
}
137-
},
138126
/**
139127
* Refresh the iframe
140128
* (e.g. for content updates)

0 commit comments

Comments
 (0)