From dd1acce4e160ef082eef45f46d4b7042faa16fe0 Mon Sep 17 00:00:00 2001 From: purocean Date: Mon, 12 Jul 2021 22:03:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20luckysheet=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=87=8D=E8=BD=BD=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/context/embed.ts | 8 +++++++- src/renderer/plugins/markdown-luckysheet.ts | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/renderer/context/embed.ts b/src/renderer/context/embed.ts index 8865ede3..b8b42312 100644 --- a/src/renderer/context/embed.ts +++ b/src/renderer/context/embed.ts @@ -21,7 +21,7 @@ export const IFrame = defineComponent({ iframeProps: Object as PropType, onLoad: Function as PropType<(iframe: HTMLIFrameElement) => void> }, - setup (props) { + setup (props, { expose }) { const url = ref('') const iframe = ref() @@ -62,6 +62,12 @@ export const IFrame = defineComponent({ props.onLoad?.(frame) } + expose({ + reload: () => { + iframe.value?.contentWindow?.location.reload() + } + }) + return () => url.value ? h('iframe', { ref: iframe, src: url.value || undefined, diff --git a/src/renderer/plugins/markdown-luckysheet.ts b/src/renderer/plugins/markdown-luckysheet.ts index 2461c80f..5ca6bb56 100644 --- a/src/renderer/plugins/markdown-luckysheet.ts +++ b/src/renderer/plugins/markdown-luckysheet.ts @@ -1,4 +1,4 @@ -import { defineComponent, h, ref, watch } from 'vue' +import { computed, defineComponent, h, ref, watch } from 'vue' import Markdown from 'markdown-it' import { Plugin } from '@fe/context/plugin' @@ -200,11 +200,16 @@ const LuckyComponent = defineComponent({ setup (props) { logger.debug('setup', props) const srcdoc = ref('') + const refIFrame = ref() const update = () => { srcdoc.value = buildSrcdoc(props.repo!, props.path!, false) } + const reload = () => { + refIFrame.value.reload() + } + watch(props, update, { immediate: true }) const button = (text: string, onClick: any) => h('button', { @@ -221,6 +226,7 @@ const LuckyComponent = defineComponent({ }, [ // button('全屏查看', () => 0), + button('重载', reload), button('新窗口编辑', () => { const html = buildSrcdoc(props.repo!, props.path!, true) env.openWindow(buildSrc(html, '编辑表格', false, false), '_blank', { alwaysOnTop: false }) @@ -228,6 +234,7 @@ const LuckyComponent = defineComponent({ ] ), h(IFrame, { + ref: refIFrame, html: srcdoc.value, debounce: 1000, iframeProps: {