diff --git a/app/src/assets/scss/_protyle.scss b/app/src/assets/scss/_protyle.scss index ffa50e163..31e77574b 100644 --- a/app/src/assets/scss/_protyle.scss +++ b/app/src/assets/scss/_protyle.scss @@ -205,6 +205,24 @@ position: relative; padding-bottom: 40px; + &--enable { + .protyle-background__tags .item:hover svg { + opacity: 1; + } + + .protyle-background__img:hover .protyle-icons { + opacity: .86; + } + + &:hover > .protyle-background__iconw > .protyle-icons { + opacity: .86; + } + + .protyle-background__icon:hover { + opacity: .86; + } + } + &__icon { height: 80px; width: 80px; @@ -222,10 +240,6 @@ float: left; border-radius: 4px; } - - &:hover { - opacity: .96; - } } &__img { @@ -240,10 +254,6 @@ object-position: center; } - &:hover .protyle-icons { - opacity: .86; - } - .protyle-icons { bottom: 8px; top: auto; @@ -283,10 +293,6 @@ &:hover { color: var(--b3-theme-on-background); - - svg { - opacity: 1; - } } &--1 { @@ -337,10 +343,6 @@ margin-top: 40px; } } - - &:hover > .protyle-background__iconw > .protyle-icons { - opacity: .86; - } } .protyle-title { diff --git a/app/src/protyle/breadcrumb/index.ts b/app/src/protyle/breadcrumb/index.ts index 6d3036088..4bdff1f60 100644 --- a/app/src/protyle/breadcrumb/index.ts +++ b/app/src/protyle/breadcrumb/index.ts @@ -138,34 +138,29 @@ export class Breadcrumb { fetchPost("/api/block/getTreeStat", {id: id || protyle.block.id}, (response) => { window.siyuan.menus.menu.remove(); - if (!protyle.contentElement.classList.contains("fn__none")) { + if (!protyle.contentElement.classList.contains("fn__none") && !protyle.disabled) { let uploadHTML = ""; - if (!protyle.disabled) { - uploadHTML = '`; - } else { - uploadHTML += ">"; - } + uploadHTML = '`; + } else { + uploadHTML += ">"; } const uploadMenu = new MenuItem({ - disabled: protyle.disabled, icon: "iconDownload", label: `${window.siyuan.languages.insertAsset}${uploadHTML}`, }).element; - if (!protyle.disabled) { - uploadMenu.querySelector("input").addEventListener("change", (event: InputEvent & { target: HTMLInputElement }) => { - if (event.target.files.length === 0) { - return; - } - uploadFiles(protyle, event.target.files, event.target); - window.siyuan.menus.menu.remove(); - }); - } + uploadMenu.querySelector("input").addEventListener("change", (event: InputEvent & { target: HTMLInputElement }) => { + if (event.target.files.length === 0) { + return; + } + uploadFiles(protyle, event.target.files, event.target); + window.siyuan.menus.menu.remove(); + }); window.siyuan.menus.menu.append(uploadMenu); if (window.siyuan.config.system.container !== "android" || !window.JSAndroid) { window.siyuan.menus.menu.append(new MenuItem({ - disabled: protyle.disabled && (!this.mediaRecorder || (this.mediaRecorder && !this.mediaRecorder.isRecording)), + disabled: !this.mediaRecorder || (this.mediaRecorder && !this.mediaRecorder.isRecording), current: this.mediaRecorder && this.mediaRecorder.isRecording, icon: "iconRecord", label: this.mediaRecorder?.isRecording ? window.siyuan.languages.endRecord : window.siyuan.languages.startRecord, @@ -207,55 +202,57 @@ export class Breadcrumb { }).element); } } - window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.uploadAssets2CDN, - icon: "iconCloud", - click() { - if (!needSubscribe()) { - fetchPost("/api/asset/uploadCloud", {id: protyle.block.parentID}); + if (!protyle.disabled) { + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.uploadAssets2CDN, + icon: "iconCloud", + click() { + if (!needSubscribe()) { + fetchPost("/api/asset/uploadCloud", {id: protyle.block.parentID}); + } } - } - }).element); - window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.netImg2LocalAsset, - icon: "iconTransform", - accelerator: window.siyuan.config.keymap.editor.general.netImg2LocalAsset.custom, - click() { - netImg2LocalAssets(protyle); - } - }).element); - window.siyuan.menus.menu.append(new MenuItem({ - label: window.siyuan.languages.optimizeTypography, - icon: "iconFormat", - click: () => { - hideElements(["toolbar"], protyle); - fetchPost("/api/format/autoSpace", { - id: protyle.block.rootID - }, () => { - /// #if MOBILE - fetchPost("/api/filetree/getDoc", { - id: protyle.block.id, - mode: 0, - size: Constants.SIZE_GET, - }, getResponse => { - onGet(getResponse, protyle, [Constants.CB_GET_FOCUS], saveScroll(protyle, true)); + }).element); + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.netImg2LocalAsset, + icon: "iconTransform", + accelerator: window.siyuan.config.keymap.editor.general.netImg2LocalAsset.custom, + click() { + netImg2LocalAssets(protyle); + } + }).element); + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.optimizeTypography, + icon: "iconFormat", + click: () => { + hideElements(["toolbar"], protyle); + fetchPost("/api/format/autoSpace", { + id: protyle.block.rootID + }, () => { + /// #if MOBILE + fetchPost("/api/filetree/getDoc", { + id: protyle.block.id, + mode: 0, + size: Constants.SIZE_GET, + }, getResponse => { + onGet(getResponse, protyle, [Constants.CB_GET_FOCUS], saveScroll(protyle, true)); + }); + /// #else + getAllModels().editor.forEach(item => { + if (item.editor.protyle.block.rootID === protyle.block.rootID) { + fetchPost("/api/filetree/getDoc", { + id: item.editor.protyle.block.rootID, + mode: 0, + size: Constants.SIZE_GET, + }, getResponse => { + onGet(getResponse, item.editor.protyle, [Constants.CB_GET_FOCUS], saveScroll(protyle, true)); + }); + } + }); + /// #endif }); - /// #else - getAllModels().editor.forEach(item => { - if (item.editor.protyle.block.rootID === protyle.block.rootID) { - fetchPost("/api/filetree/getDoc", { - id: item.editor.protyle.block.rootID, - mode: 0, - size: Constants.SIZE_GET, - }, getResponse => { - onGet(getResponse, item.editor.protyle, [Constants.CB_GET_FOCUS], saveScroll(protyle, true)); - }); - } - }); - /// #endif - }); - } - }).element); + } + }).element); + } if (!protyle.scroll?.element.classList.contains("fn__none")) { window.siyuan.menus.menu.append(new MenuItem({ current: protyle.scroll.keepLazyLoad, diff --git a/app/src/protyle/header/Background.ts b/app/src/protyle/header/Background.ts index 67ae73aeb..3cd736f0d 100644 --- a/app/src/protyle/header/Background.ts +++ b/app/src/protyle/header/Background.ts @@ -118,6 +118,9 @@ export class Background { }); }); this.element.addEventListener(getEventName(), (event) => { + if (protyle.disabled) { + return; + } let target = event.target as HTMLElement; hideElements(["gutter"], protyle); diff --git a/app/src/protyle/header/Title.ts b/app/src/protyle/header/Title.ts index 53fb763c6..18bdb7dbf 100644 --- a/app/src/protyle/header/Title.ts +++ b/app/src/protyle/header/Title.ts @@ -276,7 +276,7 @@ export class Title { type: "submenu", submenu: copySubMenu(protyle.block.rootID) }).element); - if (!window.siyuan.config.readonly) { + if (protyle.disabled) { window.siyuan.menus.menu.append(movePathToMenu(protyle.notebookId, protyle.path)); window.siyuan.menus.menu.append(new MenuItem({ icon: "iconTrashcan", @@ -285,8 +285,6 @@ export class Title { deleteFile(protyle.notebookId, protyle.path, escapeHtml(this.editElement.textContent)); } }).element); - } - if (!window.siyuan.config.readonly && !window.siyuan.config.editor.readOnly) { window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.attr, diff --git a/app/src/protyle/util/onGet.ts b/app/src/protyle/util/onGet.ts index 9e58dd4e6..f7e13caf4 100644 --- a/app/src/protyle/util/onGet.ts +++ b/app/src/protyle/util/onGet.ts @@ -276,6 +276,7 @@ const setHTML = (options: { content: string, action?: string[], unScroll?: boole /** 禁用编辑器 */ export const disabledProtyle = (protyle: IProtyle) => { + window.siyuan.menus.menu.remove(); hideElements(["gutter", "toolbar", "select", "hint", "util"], protyle); protyle.disabled = true; if (protyle.title) { @@ -283,6 +284,9 @@ export const disabledProtyle = (protyle: IProtyle) => { titleElement.setAttribute("contenteditable", "false"); titleElement.style.userSelect = "text"; } + if (protyle.background) { + protyle.background.element.classList.remove("protyle-background--enable"); + } protyle.wysiwyg.element.style.userSelect = "text"; protyle.wysiwyg.element.setAttribute("contenteditable", "false"); protyle.wysiwyg.element.querySelectorAll('[contenteditable="true"][spellcheck="false"]').forEach(item => { @@ -294,16 +298,19 @@ export const disabledProtyle = (protyle: IProtyle) => { export const enableProtyle = (protyle: IProtyle) => { protyle.disabled = false; if (navigator && navigator.maxTouchPoints > 1 && ["MacIntel", "iPhone"].includes(navigator.platform)) { - // iPhone,iPad 端输入 contenteditable 为 true 时会在块中间插入 span + // iPhone,iPad 端 protyle.wysiwyg.element contenteditable 为 true 时,输入会在块中间插入 span 导致保存失败 https://ld246.com/article/1643473862873/comment/1643813765839#comments } else { - if (protyle.title) { - const titleElement = protyle.title.element.querySelector(".protyle-title__input") as HTMLElement; - titleElement.setAttribute("contenteditable", "true"); - titleElement.style.userSelect = ""; - } protyle.wysiwyg.element.setAttribute("contenteditable", "true"); protyle.wysiwyg.element.style.userSelect = ""; } + if (protyle.title) { + const titleElement = protyle.title.element.querySelector(".protyle-title__input") as HTMLElement; + titleElement.setAttribute("contenteditable", "true"); + titleElement.style.userSelect = ""; + } + if (protyle.background) { + protyle.background.element.classList.add("protyle-background--enable"); + } protyle.wysiwyg.element.querySelectorAll('[contenteditable="false"][spellcheck="false"]').forEach(item => { if (!hasClosestByClassName(item, "protyle-wysiwyg__embed")) { item.setAttribute("contenteditable", "true");