Skip to content

Commit

Permalink
feat(markdown-viewer): add new component
Browse files Browse the repository at this point in the history
新增MarkdownViewer组件用于显示Markdown格式的富文本

close: #1181
  • Loading branch information
mynetfan committed Sep 10, 2021
1 parent 0bb9c03 commit 73dc492
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 10 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- 单元格编辑新增提交回调,将根据回调函数返回的结果来决定是否将数据提交到表格
- 行编辑添加校验方法,允许只校验而不提交值,以便异步保存数据成功后才提交倒表格
- 修复`rowClassName`属性无法和`striped`同时使用的问题
- 新增组件 **MarkdownViewer** 用于显示 Markdown 格式的富文本

### 🐛 Bug Fixes

Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.4.4",
"resize-observer-polyfill": "^1.5.1",
"showdown": "^1.9.1",
"sortablejs": "^1.14.0",
"tinymce": "^5.9.2",
"vditor": "^3.8.6",
Expand Down Expand Up @@ -81,6 +82,7 @@
"@types/nprogress": "^0.2.0",
"@types/qrcode": "^1.4.1",
"@types/qs": "^6.9.7",
"@types/showdown": "^1.9.4",
"@types/sortablejs": "^1.10.7",
"@typescript-eslint/eslint-plugin": "^4.31.0",
"@typescript-eslint/parser": "^4.31.0",
Expand Down
2 changes: 2 additions & 0 deletions src/components/Markdown/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { withInstall } from '/@/utils';
import markDown from './src/Markdown.vue';
import markDownViewer from './src/MarkdownViewer.vue';

export const MarkDown = withInstall(markDown);
export const MarkdownViewer = withInstall(markDownViewer);
export * from './src/typing';
22 changes: 22 additions & 0 deletions src/components/Markdown/src/MarkdownViewer.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<template>
<div v-html="getHtmlData" :class="$props.class" class="markdown-viewer"></div>
</template>

<script lang="ts" setup>
import { computed } from 'vue';
import showdown from 'showdown';
const converter = new showdown.Converter();
converter.setOption('tables', true);
const props = defineProps({
value: { type: String },
class: { type: String },
});
const getHtmlData = computed(() => converter.makeHtml(props.value || ''));
</script>

<style scoped>
.markdown-viewer {
width: 100%;
}
</style>
28 changes: 18 additions & 10 deletions src/views/demo/editor/markdown/index.vue
Original file line number Diff line number Diff line change
@@ -1,22 +1,30 @@
<template>
<PageWrapper title="MarkDown组件示例">
<a-button @click="toggleTheme" class="mb-2" type="primary"> 黑暗主题 </a-button>
<a-button @click="clearValue" class="mb-2" type="default"> 清空内容 </a-button>
<MarkDown
v-model:value="value"
@change="handleChange"
ref="markDownRef"
placeholder="这是占位文本"
/>
<div>
<a-button @click="toggleTheme" class="mb-2" type="primary"> 黑暗主题 </a-button>
<a-button @click="clearValue" class="mb-2" type="default"> 清空内容 </a-button>
<MarkDown
v-model:value="value"
@change="handleChange"
ref="markDownRef"
placeholder="这是占位文本"
/>
</div>
<div class="mt-2">
<a-card title="Markdown Viewer 组件演示">
<MarkdownViewer :value="value" />
</a-card>
</div>
</PageWrapper>
</template>
<script lang="ts">
import { defineComponent, ref, unref } from 'vue';
import { MarkDown, MarkDownActionType } from '/@/components/Markdown';
import { MarkDown, MarkDownActionType, MarkdownViewer } from '/@/components/Markdown';
import { PageWrapper } from '/@/components/Page';
import { Card } from 'ant-design-vue';
export default defineComponent({
components: { MarkDown, PageWrapper },
components: { MarkDown, PageWrapper, MarkdownViewer, ACard: Card },
setup() {
const markDownRef = ref<Nullable<MarkDownActionType>>(null);
const valueRef = ref(`
Expand Down
37 changes: 37 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2064,6 +2064,11 @@
dependencies:
"@types/node" "*"

"@types/showdown@^1.9.4":
version "1.9.4"
resolved "https://registry.nlark.com/@types/showdown/download/@types/showdown-1.9.4.tgz?cache=0&sync_timestamp=1629709796532&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fshowdown%2Fdownload%2F%40types%2Fshowdown-1.9.4.tgz#5385adf34143abad9309561661fa6c781d2ab962"
integrity sha1-U4Wt80FDq62TCVYWYfpseB0quWI=

"@types/sortablejs@^1.10.7":
version "1.10.7"
resolved "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.10.7.tgz#ab9039c85429f0516955ec6dbc0bb20139417b15"
Expand Down Expand Up @@ -10127,6 +10132,13 @@ shelljs@^0.8.3:
interpret "^1.0.0"
rechoir "^0.6.2"

showdown@^1.9.1:
version "1.9.1"
resolved "https://registry.nlark.com/showdown/download/showdown-1.9.1.tgz#134e148e75cd4623e09c21b0511977d79b5ad0ef"
integrity sha1-E04UjnXNRiPgnCGwURl315ta0O8=
dependencies:
yargs "^14.2"

side-channel@^1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
Expand Down Expand Up @@ -12260,6 +12272,14 @@ yargs-parser@^13.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"

yargs-parser@^15.0.1:
version "15.0.3"
resolved "https://registry.nlark.com/yargs-parser/download/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115"
integrity sha1-MW4mPV/r6LOO72GsCSsz38ybERU=
dependencies:
camelcase "^5.0.0"
decamelize "^1.2.0"

yargs@^13.2.4:
version "13.3.2"
resolved "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
Expand All @@ -12276,6 +12296,23 @@ yargs@^13.2.4:
y18n "^4.0.0"
yargs-parser "^13.1.2"

yargs@^14.2:
version "14.2.3"
resolved "https://registry.nlark.com/yargs/download/yargs-14.2.3.tgz?cache=0&sync_timestamp=1628889096518&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"
integrity sha1-Ghw+3O0a+yov6jNgS8bR2NaIpBQ=
dependencies:
cliui "^5.0.0"
decamelize "^1.2.0"
find-up "^3.0.0"
get-caller-file "^2.0.1"
require-directory "^2.1.1"
require-main-filename "^2.0.0"
set-blocking "^2.0.0"
string-width "^3.0.0"
which-module "^2.0.0"
y18n "^4.0.0"
yargs-parser "^15.0.1"

yargs@^16.0.3, yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
Expand Down

0 comments on commit 73dc492

Please sign in to comment.