From 1e37768b358450a37271ee19fa8bae2bd6cca723 Mon Sep 17 00:00:00 2001 From: Takagi <1103069291@qq.com> Date: Tue, 18 Jun 2024 14:00:52 +0800 Subject: [PATCH] pref: improve code block styling in editor (#6089) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind improvement /area editor #### What this PR does / why we need it: 优化编辑器代码块样式。 before: image after: image #### How to test it? 测试复制功能是否正常。 #### Does this PR introduce a user-facing change? ```release-note 优化默认编辑器代码块样式 ``` --- .../code-block/CodeBlockViewRenderer.vue | 63 ++++++++++++++----- .../src/extensions/code-block/code-block.ts | 6 +- ui/packages/editor/src/index.ts | 2 +- ui/packages/editor/src/locales/en.yaml | 5 +- ui/packages/editor/src/locales/zh-CN.yaml | 5 +- ui/packages/editor/src/styles/base.scss | 2 +- ui/packages/editor/src/styles/index.scss | 1 + .../editor/src/styles/node-select.scss | 9 +++ 8 files changed, 71 insertions(+), 22 deletions(-) create mode 100644 ui/packages/editor/src/styles/node-select.scss diff --git a/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue b/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue index d6ba2639f..e6f675c84 100644 --- a/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue +++ b/ui/packages/editor/src/extensions/code-block/CodeBlockViewRenderer.vue @@ -4,6 +4,10 @@ import type { Editor, Node } from "@/tiptap/vue-3"; import { NodeViewContent, NodeViewWrapper } from "@/tiptap/vue-3"; import lowlight from "./lowlight"; import { computed } from "vue"; +import BxBxsCopy from "~icons/bx/bxs-copy"; +import IconCheckboxCircle from "~icons/ri/checkbox-circle-line"; +import { useTimeout } from "@vueuse/core"; +import { i18n } from "@/locales"; const props = defineProps<{ editor: Editor; @@ -28,24 +32,53 @@ const selectedLanguage = computed({ props.updateAttributes({ language: language }); }, }); + +const { ready, start } = useTimeout(2000, { controls: true, immediate: false }); + +const handleCopyCode = () => { + if (!ready.value) return; + const code = props.node.textContent; + navigator.clipboard.writeText(code).then(() => { + start(); + }); +};