diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 0829f969fa1..7e3b04d726b 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1180,6 +1180,9 @@ "spellcheckTip": "After enabling, the browser's built-in spell check function will be used. Currently, only English spell check is supported", "over": "over", "preview": "Export Preview", + "copyToWechatMP": "Copy to Wechat MP", + "copyToZhihu": "Copy to Zhihu", + "copyToYuque": "Copy to Yuque", "quote": "Blockquote", "startRecord": "Start Record", "endRecord": "End Record", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index f51e5ac7891..be762e88b2f 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1180,6 +1180,9 @@ "spellcheckTip": "Después de habilitar, se utilizará la función de revisión ortográfica integrada del navegador. Actualmente, solo se admite la revisión ortográfica en inglés", "over": "sobre", "preview": "Vista previa de la exportación", + "copyToWechatMP": "复制到公众号", + "copyToZhihu": "复制到知乎", + "copyToYuque": "复制到语雀", "quote": "Párrafo cita", "startRecord": "Iniciar grabación", "endRecord": "Finalizar grabación", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index be36b03194d..f5a95736f01 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1180,6 +1180,9 @@ "spellcheckTip": "Après l'activation, la fonction de vérification orthographique intégrée du navigateur sera utilisée. Actuellement, seule la vérification orthographique en anglais est prise en charge", "over": "over", "preview": "Aperçu de l'exportation", + "copyToWechatMP": "复制到公众号", + "copyToZhihu": "复制到知乎", + "copyToYuque": "复制到语雀", "quote": "Citation de bloc", "startRecord": "Début d'enregistrement", "endRecord": "fin d'enregistrement", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index 94cccf84c1a..d0693abf5a8 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1180,6 +1180,9 @@ "spellcheckTip": "ブラウザの組み込みスペルチェック機能を使用します。現時点では英語のスペルチェックのみがサポートされています", "over": "以上", "preview": "プレビュー", + "copyToWechatMP": "复制到公众号", + "copyToZhihu": "复制到知乎", + "copyToYuque": "复制到语雀", "quote": "引用", "startRecord": "録音開始", "endRecord": "録音停止", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index a5e97290577..0f8c9bd9bda 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1180,6 +1180,9 @@ "spellcheckTip": "啟用後將使用瀏覽器內置的拼寫檢查功能,目前僅支持英文拼寫檢查", "over": "超過", "preview": "匯出預覽", + "copyToWechatMP": "复制到公众号", + "copyToZhihu": "复制到知乎", + "copyToYuque": "复制到语雀", "quote": "引述", "startRecord": "開始錄音", "endRecord": "結束錄音", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 37560b441ff..860849cc0d8 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1180,6 +1180,9 @@ "spellcheckTip": "启用后将使用浏览器内置的拼写检查功能,目前仅支持英文拼写检查", "over": "超过", "preview": "导出预览", + "copyToWechatMP": "复制到公众号", + "copyToZhihu": "复制到知乎", + "copyToYuque": "复制到语雀", "quote": "引述", "startRecord": "开始录音", "endRecord": "结束录音", diff --git a/app/src/assets/scss/business/_av.scss b/app/src/assets/scss/business/_av.scss index da05a889e18..33d31cca859 100644 --- a/app/src/assets/scss/business/_av.scss +++ b/app/src/assets/scss/business/_av.scss @@ -282,6 +282,10 @@ white-space: nowrap; } + &[data-block-id] > .block__icon[data-type="copy"] { + display: none; + } + &.dragover__right { border-right-color: var(--b3-theme-primary-lighter); } diff --git a/app/src/assets/scss/protyle/_wysiwyg.scss b/app/src/assets/scss/protyle/_wysiwyg.scss index ac0171106e7..2803a98796d 100644 --- a/app/src/assets/scss/protyle/_wysiwyg.scss +++ b/app/src/assets/scss/protyle/_wysiwyg.scss @@ -670,5 +670,9 @@ .av__cell--header:hover { background-color: transparent; } + + .av__cell[data-block-id] > .block__icon[data-type="copy"] { + display: block; + } } } diff --git a/app/src/protyle/preview/index.ts b/app/src/protyle/preview/index.ts index 8dcad4db004..a740da9834b 100644 --- a/app/src/protyle/preview/index.ts +++ b/app/src/protyle/preview/index.ts @@ -56,13 +56,13 @@ export class Preview { actionHtml.push(''); break; case "mp-wechat": - actionHtml.push(''); + actionHtml.push(''); break; case "zhihu": - actionHtml.push(''); + actionHtml.push(''); break; case "yuque": - actionHtml.push(''); + actionHtml.push(''); break; } } diff --git a/app/src/protyle/render/av/action.ts b/app/src/protyle/render/av/action.ts index 34047664a12..5c72b4b6764 100644 --- a/app/src/protyle/render/av/action.ts +++ b/app/src/protyle/render/av/action.ts @@ -30,6 +30,7 @@ import {addView, openViewMenu} from "./view"; import {isOnlyMeta, writeText} from "../../util/compatibility"; import {openSearchAV} from "./relation"; import {Constants} from "../../../constants"; +import {hideElements} from "../../ui/hideElements"; export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLElement }) => { if (isOnlyMeta(event)) { @@ -164,6 +165,7 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle event.stopPropagation(); return true; } else if (type === "block-more") { + window.siyuan.menus.menu.remove(); protyle.toolbar.range = document.createRange(); protyle.toolbar.range.selectNodeContents(target); focusByRange(protyle.toolbar.range); @@ -231,6 +233,7 @@ export const avClick = (protyle: IProtyle, event: MouseEvent & { target: HTMLEle }; export const avContextmenu = (protyle: IProtyle, rowElement: HTMLElement, position: IPosition) => { + hideElements(["hint"], protyle); if (rowElement.classList.contains("av__row--header")) { return false; } diff --git a/app/src/protyle/render/av/cell.ts b/app/src/protyle/render/av/cell.ts index f4f5b20b55f..714db18ca9c 100644 --- a/app/src/protyle/render/av/cell.ts +++ b/app/src/protyle/render/av/cell.ts @@ -732,8 +732,9 @@ export const renderCell = (cellValue: IAVCellValue, rowIndex = 0) => { } } - if (["text", "template", "url", "email", "phone", "number", "date", "created", "updated", "lineNumber"].includes(cellValue.type) && - (cellValue.type === "lineNumber" || (cellValue && cellValue[cellValue.type as "url"].content))) { + if ((["text", "template", "url", "email", "phone", "number", "date", "created", "updated"].includes(cellValue.type) && cellValue[cellValue.type as "url"]?.content) || + cellValue.type === "lineNumber" || + (cellValue.type === "block" && cellValue.block?.content)) { text += ``; } return text; diff --git a/app/src/protyle/util/onGet.ts b/app/src/protyle/util/onGet.ts index 0225c51ed31..f347cd58c7d 100644 --- a/app/src/protyle/util/onGet.ts +++ b/app/src/protyle/util/onGet.ts @@ -321,13 +321,6 @@ export const disabledProtyle = (protyle: IProtyle) => { protyle.wysiwyg.element.querySelectorAll('.protyle-action[draggable="true"]').forEach(item => { item.setAttribute("draggable", "false"); }); - protyle.wysiwyg.element.querySelectorAll(".av").forEach((item: HTMLElement) => { - const headerElement = item.querySelector(".av__row--header") as HTMLElement; - if (headerElement) { - headerElement.style.transform = ""; - (item.querySelector(".av__row--footer") as HTMLElement).style.transform = ""; - } - }); if (protyle.breadcrumb) { protyle.breadcrumb.element.parentElement.querySelector('[data-type="readonly"] use').setAttribute("xlink:href", "#iconLock"); protyle.breadcrumb.element.parentElement.querySelector('[data-type="readonly"]').setAttribute("aria-label", window.siyuan.config.editor.readOnly ? window.siyuan.languages.tempUnlock : window.siyuan.languages.unlockEdit);