提交 | 用户 | age
5fb069 1 <template>
31ff05 2   <PageWrapper title="MarkDown组件示例">
73dc49 3     <div>
4       <a-button @click="toggleTheme" class="mb-2" type="primary"> 黑暗主题 </a-button>
5       <a-button @click="clearValue" class="mb-2" type="default"> 清空内容 </a-button>
6       <MarkDown
7         v-model:value="value"
8         @change="handleChange"
9         ref="markDownRef"
10         placeholder="这是占位文本"
11       />
12     </div>
13     <div class="mt-2">
14       <a-card title="Markdown Viewer 组件演示">
15         <MarkdownViewer :value="value" />
16       </a-card>
17     </div>
31ff05 18   </PageWrapper>
5fb069 19 </template>
V 20 <script lang="ts">
21   import { defineComponent, ref, unref } from 'vue';
73dc49 22   import { MarkDown, MarkDownActionType, MarkdownViewer } from '/@/components/Markdown';
31ff05 23   import { PageWrapper } from '/@/components/Page';
73dc49 24   import { Card } from 'ant-design-vue';
31ff05 25
5fb069 26   export default defineComponent({
73dc49 27     components: { MarkDown, PageWrapper, MarkdownViewer, ACard: Card },
5fb069 28     setup() {
V 29       const markDownRef = ref<Nullable<MarkDownActionType>>(null);
30       const valueRef = ref(`
a89e49 31 # 标题h1
5fb069 32
a89e49 33 ##### 标题h5
W 34
35 **加粗**
36 *斜体*
37 ~~删除线~~
38 [链接](https://github.com/vbenjs/vue-vben-admin)
39 ↓分割线↓
40
41 ---
42
43
44 * 无序列表1
45   * 无序列表1.1
46
47 1. 有序列表1
48 2. 有序列表2
49
50 * [ ] 任务列表1
51 * [x] 任务列表2
52
53 > 引用示例
54
55 \`\`\`js
56 // 代码块:
57 (() => {
58   var htmlRoot = document.getElementById('htmlRoot');
59   var theme = window.localStorage.getItem('__APP__DARK__MODE__');
60   if (htmlRoot && theme) {
61     htmlRoot.setAttribute('data-theme', theme);
62     theme = htmlRoot = null;
63   }
64 })();
65 \`\`\`
66
67 | 表格 | 示例 | 🎉️ |
68 | --- | --- | --- |
69 | 1 | 2 | 3 |
70 | 4 | 5 | 6 |
5fb069 71 `);
V 72
73       function toggleTheme() {
74         const markDown = unref(markDownRef);
75         if (!markDown) return;
76         const vditor = markDown.getVditor();
a89e49 77         vditor.setTheme('dark', 'dark', 'dracula');
5fb069 78       }
7db0c5 79
V 80       function handleChange(v: string) {
81         valueRef.value = v;
82       }
83
d95815 84       function clearValue() {
85         valueRef.value = '';
86       }
87
5fb069 88       return {
V 89         value: valueRef,
90         toggleTheme,
91         markDownRef,
7db0c5 92         handleChange,
d95815 93         clearValue,
5fb069 94       };
V 95     },
96   });
97 </script>