<script setup lang="ts">
|
import type { OnlyOfficeBridge } from './onlyoffice/bridge';
|
import { computed, inject, onBeforeUnmount } from 'vue';
|
import FieldDraftList from './components/FieldDraftList.vue';
|
import { useTemplateFiller } from './composables/useTemplateFiller';
|
const bridge = inject<OnlyOfficeBridge | null>('onlyOfficeBridge', null);
|
const filler = bridge ? useTemplateFiller(bridge) : null;
|
const store = filler?.store;
|
const disabled = computed(() => !filler || store?.status !== 'ready' || !filler.canFill());
|
onBeforeUnmount(() => filler?.dispose());
|
</script>
|
<template>
|
<main class="plugin-shell">
|
<header><a-tag color="success">{{ store?.message || 'SDK 不可用' }}</a-tag><span>v0.1.0</span></header>
|
<a-alert v-if="store?.status === 'error'" type="error" :message="store.message" show-icon />
|
<FieldDraftList v-if="store" :disabled="disabled" :errors="store.fieldErrors" :fields="store.fields" @update="store.setDraft" />
|
<footer><a-button type="primary" block :disabled="disabled" :loading="store?.status === 'working'" @click="filler?.apply()">应用到文档</a-button></footer>
|
</main>
|
</template>
|