This commit is contained in:
Vanessa 2023-09-13 09:36:50 +08:00
parent 021e09e444
commit bff2a4f8c9
10 changed files with 42 additions and 35 deletions

View file

@ -17,6 +17,7 @@
animation-name: zoomIn; animation-name: zoomIn;
max-height: 90vh; max-height: 90vh;
overflow: auto; overflow: auto;
box-sizing: border-box;
a { a {
color: var(--b3-theme-secondary); color: var(--b3-theme-secondary);

View file

@ -411,24 +411,24 @@ ${renewHTML}
let html = ""; let html = "";
if (window.siyuan.config.account.displayVIP && window.siyuan.user) { if (window.siyuan.config.account.displayVIP && window.siyuan.user) {
if (window.siyuan.user.userSiYuanProExpireTime === -1) { if (window.siyuan.user.userSiYuanProExpireTime === -1) {
html = `<div class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.account12}">${Constants.SIYUAN_IMAGE_VIP}</div>`; html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account12}">${Constants.SIYUAN_IMAGE_VIP}</div>`;
} else if (window.siyuan.user.userSiYuanProExpireTime > 0) { } else if (window.siyuan.user.userSiYuanProExpireTime > 0) {
if (window.siyuan.user.userSiYuanSubscriptionPlan === 2) { if (window.siyuan.user.userSiYuanSubscriptionPlan === 2) {
html = `<div class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.account3}"><svg><use xlink:href="#iconVIP"></use></svg></div>`; html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account3}"><svg><use xlink:href="#iconVIP"></use></svg></div>`;
} else { } else {
html = `<div class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.account10}"><svg class="ft__secondary"><use xlink:href="#iconVIP"></use></svg></div>`; html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.account10}"><svg class="ft__secondary"><use xlink:href="#iconVIP"></use></svg></div>`;
} }
} }
if (window.siyuan.user.userSiYuanOneTimePayStatus === 1) { if (window.siyuan.user.userSiYuanOneTimePayStatus === 1) {
html += `<div class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.onepay}"><svg><use xlink:href="#iconVIP"></use></svg></div>`; html += `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.onepay}"><svg><use xlink:href="#iconVIP"></use></svg></div>`;
} }
} }
if (!window.siyuan.user || (window.siyuan.user && window.siyuan.user.userSiYuanSubscriptionStatus === -1)) { if (!window.siyuan.user || (window.siyuan.user && window.siyuan.user.userSiYuanSubscriptionStatus === -1)) {
html = `<div class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.freeSub}"><svg class="ft__error"><use xlink:href="#iconVIP"></use></svg></div>`; html = `<div class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.freeSub}"><svg class="ft__error"><use xlink:href="#iconVIP"></use></svg></div>`;
} }
if (window.siyuan.config.account.displayTitle && window.siyuan.user) { if (window.siyuan.config.account.displayTitle && window.siyuan.user) {
window.siyuan.user.userTitles.forEach(item => { window.siyuan.user.userTitles.forEach(item => {
html += `<div class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${item.name}${item.desc}">${item.icon}</div>`; html += `<div class="toolbar__item ariaLabel" aria-label="${item.name}${item.desc}">${item.icon}</div>`;
}); });
} }
document.getElementById("toolbarVIP").innerHTML = html; document.getElementById("toolbarVIP").innerHTML = html;

View file

@ -29,18 +29,25 @@ export const showTooltip = (message: string, target: Element, error = false) =>
} }
if (target.getAttribute("data-inline-memo-content")) { if (target.getAttribute("data-inline-memo-content")) {
messageElement.classList.add("tooltip--memo"); // 为行级备注添加 class https://github.com/siyuan-note/siyuan/issues/6161 messageElement.classList.add("tooltip--memo"); // 为行级备注添加 class https://github.com/siyuan-note/siyuan/issues/6161
} else {
messageElement.classList.remove("tooltip--memo");
} }
let left = targetRect.left; let left = targetRect.left;
let topSpace = 8; if (target.getAttribute("data-position") === "right") {
const position = target.getAttribute("data-position");
if (position === "right") {
left = targetRect.right - messageElement.clientWidth; left = targetRect.right - messageElement.clientWidth;
} else if (position === "center") {
left = targetRect.left + (targetRect.width - messageElement.clientWidth) / 2;
} else if (position === "top") {
topSpace = 0;
} }
setPosition(messageElement, left, targetRect.top + targetRect.height + topSpace, targetRect.height * 2 + 8); const bottomHeight = window.innerHeight - targetRect.bottom
messageElement.style.maxHeight = Math.max(targetRect.top, bottomHeight) + "px";
if (targetRect.top > bottomHeight) {
messageElement.style.top = (targetRect.top - messageElement.clientHeight) + "px";
} else {
messageElement.style.top = targetRect.bottom + "px";
}
if (left + messageElement.clientWidth > window.innerWidth) {
messageElement.style.left = (window.innerWidth - messageElement.clientWidth) + "px";
} else {
messageElement.style.left = Math.max(0, left) + "px";
}
}; };
export const hideTooltip = () => { export const hideTooltip = () => {

View file

@ -36,7 +36,6 @@ export class Tab {
this.headElement.setAttribute("data-type", "tab-header"); this.headElement.setAttribute("data-type", "tab-header");
this.headElement.setAttribute("draggable", "true"); this.headElement.setAttribute("draggable", "true");
this.headElement.setAttribute("data-id", this.id); this.headElement.setAttribute("data-id", this.id);
this.headElement.setAttribute("data-position", "center"); // showTooltip 位置标识
this.headElement.classList.add("item", "item--focus"); this.headElement.classList.add("item", "item--focus");
let iconHTML = ""; let iconHTML = "";
if (options.icon) { if (options.icon) {

View file

@ -63,7 +63,7 @@ export class Wnd {
<li class="item item--readonly"> <li class="item item--readonly">
<span data-type="new" class="block__icon block__icon--show ariaLabel" aria-label="${window.siyuan.languages.newFile}"><svg><use xlink:href="#iconAdd"></use></svg></span> <span data-type="new" class="block__icon block__icon--show ariaLabel" aria-label="${window.siyuan.languages.newFile}"><svg><use xlink:href="#iconAdd"></use></svg></span>
<span class="fn__flex-1"></span> <span class="fn__flex-1"></span>
<span data-type="more" data-menu="true" data-position="right" class="block__icon block__icon--show ariaLabel" aria-label="${window.siyuan.languages.switchTab}"><svg><use xlink:href="#iconDown"></use></svg></span> <span data-type="more" data-menu="true" class="block__icon block__icon--show ariaLabel" aria-label="${window.siyuan.languages.switchTab}"><svg><use xlink:href="#iconDown"></use></svg></span>
</li> </li>
</ul> </ul>
</div> </div>

View file

@ -16,7 +16,7 @@ export const initStatus = (isWindow = false) => {
/// #if !MOBILE /// #if !MOBILE
let barDockHTML = ""; let barDockHTML = "";
if (!isWindow) { if (!isWindow) {
barDockHTML = `<div id="barDock" class="toolbar__item b3-tooltips b3-tooltips__e${window.siyuan.config.readonly || isWindow ? " fn__none" : ""}" aria-label="${window.siyuan.languages.toggleDock} ${updateHotkeyTip(window.siyuan.config.keymap.general.toggleDock.custom)}"> barDockHTML = `<div id="barDock" class="toolbar__item ariaLabel${window.siyuan.config.readonly || isWindow ? " fn__none" : ""}" aria-label="${window.siyuan.languages.toggleDock} ${updateHotkeyTip(window.siyuan.config.keymap.general.toggleDock.custom)}">
<svg> <svg>
<use xlink:href="#${window.siyuan.config.uiLayout.hideDock ? "iconDock" : "iconHideDock"}"></use> <use xlink:href="#${window.siyuan.config.uiLayout.hideDock ? "iconDock" : "iconHideDock"}"></use>
</svg> </svg>
@ -27,7 +27,7 @@ export const initStatus = (isWindow = false) => {
<div class="fn__flex-1"></div> <div class="fn__flex-1"></div>
<div class="status__backgroundtask fn__none"></div> <div class="status__backgroundtask fn__none"></div>
<div class="status__counter"></div> <div class="status__counter"></div>
<div id="statusHelp" class="toolbar__item b3-tooltips b3-tooltips__w" aria-label="${window.siyuan.languages.help}"> <div id="statusHelp" class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.help}">
<svg><use xlink:href="#iconHelp"></use></svg> <svg><use xlink:href="#iconHelp"></use></svg>
</div>`; </div>`;
document.querySelector("#status").addEventListener("click", (event) => { document.querySelector("#status").addEventListener("click", (event) => {

View file

@ -23,37 +23,37 @@ import {commandPanel} from "../plugin/commandPanel";
export const initBar = (app: App) => { export const initBar = (app: App) => {
const toolbarElement = document.getElementById("toolbar"); const toolbarElement = document.getElementById("toolbar");
toolbarElement.innerHTML = ` toolbarElement.innerHTML = `
<div id="barWorkspace" aria-label="${window.siyuan.languages.mainMenu} ${updateHotkeyTip(window.siyuan.config.keymap.general.mainMenu.custom)}" class="b3-tooltips b3-tooltips__e toolbar__item toolbar__item--active"> <div id="barWorkspace" aria-label="${window.siyuan.languages.mainMenu} ${updateHotkeyTip(window.siyuan.config.keymap.general.mainMenu.custom)}" class="ariaLabel toolbar__item toolbar__item--active">
<span class="toolbar__text">${getWorkspaceName()}</span> <span class="toolbar__text">${getWorkspaceName()}</span>
<svg class="toolbar__svg"><use xlink:href="#iconDown"></use></svg> <svg class="toolbar__svg"><use xlink:href="#iconDown"></use></svg>
</div> </div>
<div id="barSync" data-position="top" data-type="a" class="toolbar__item${window.siyuan.config.readonly ? " fn__none" : ""}"> <div id="barSync" class="ariaLabel toolbar__item${window.siyuan.config.readonly ? " fn__none" : ""}">
<svg><use xlink:href="#iconCloudSucc"></use></svg> <svg><use xlink:href="#iconCloudSucc"></use></svg>
</div> </div>
<button id="barBack" data-type="a" class="toolbar__item toolbar__item--disabled" aria-label="${window.siyuan.languages.goBack} ${updateHotkeyTip(window.siyuan.config.keymap.general.goBack.custom)}"> <button id="barBack" class="ariaLabel toolbar__item toolbar__item--disabled" aria-label="${window.siyuan.languages.goBack} ${updateHotkeyTip(window.siyuan.config.keymap.general.goBack.custom)}">
<svg><use xlink:href="#iconBack"></use></svg> <svg><use xlink:href="#iconBack"></use></svg>
</button> </button>
<button id="barForward" data-type="a" class="toolbar__item toolbar__item--disabled" aria-label="${window.siyuan.languages.goForward} ${updateHotkeyTip(window.siyuan.config.keymap.general.goForward.custom)}"> <button id="barForward" class="ariaLabel toolbar__item toolbar__item--disabled" aria-label="${window.siyuan.languages.goForward} ${updateHotkeyTip(window.siyuan.config.keymap.general.goForward.custom)}">
<svg><use xlink:href="#iconForward"></use></svg> <svg><use xlink:href="#iconForward"></use></svg>
</button> </button>
<div class="fn__flex-1 fn__ellipsis" id="drag"><span class="fn__none">使 Development version, please backup before use</span></div> <div class="fn__flex-1 fn__ellipsis" id="drag"><span class="fn__none">使 Development version, please backup before use</span></div>
<div id="toolbarVIP" class="fn__flex${window.siyuan.config.readonly ? " fn__none" : ""}"></div> <div id="toolbarVIP" class="fn__flex${window.siyuan.config.readonly ? " fn__none" : ""}"></div>
<div id="barPlugins" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.plugin}"> <div id="barPlugins" class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.plugin}">
<svg><use xlink:href="#iconPlugin"></use></svg> <svg><use xlink:href="#iconPlugin"></use></svg>
</div> </div>
<div id="barSearch" class="toolbar__item b3-tooltips b3-tooltips__sw" aria-label="${window.siyuan.languages.globalSearch} ${updateHotkeyTip(window.siyuan.config.keymap.general.globalSearch.custom)}"> <div id="barSearch" class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.globalSearch} ${updateHotkeyTip(window.siyuan.config.keymap.general.globalSearch.custom)}">
<svg><use xlink:href="#iconSearch"></use></svg> <svg><use xlink:href="#iconSearch"></use></svg>
</div> </div>
<div id="barZoom" class="toolbar__item b3-tooltips b3-tooltips__sw${(window.siyuan.storage[Constants.LOCAL_ZOOM] === 1 || isBrowser()) ? " fn__none" : ""}" aria-label="${window.siyuan.languages.zoom}"> <div id="barZoom" class="toolbar__item ariaLabel${(window.siyuan.storage[Constants.LOCAL_ZOOM] === 1 || isBrowser()) ? " fn__none" : ""}" aria-label="${window.siyuan.languages.zoom}">
<svg><use xlink:href="#iconZoom${window.siyuan.storage[Constants.LOCAL_ZOOM] > 1 ? "In" : "Out"}"></use></svg> <svg><use xlink:href="#iconZoom${window.siyuan.storage[Constants.LOCAL_ZOOM] > 1 ? "In" : "Out"}"></use></svg>
</div> </div>
<div id="barMode" class="toolbar__item b3-tooltips b3-tooltips__sw${window.siyuan.config.readonly ? " fn__none" : ""}" aria-label="${window.siyuan.languages.appearanceMode}"> <div id="barMode" class="toolbar__item ariaLabel${window.siyuan.config.readonly ? " fn__none" : ""}" aria-label="${window.siyuan.languages.appearanceMode}">
<svg><use xlink:href="#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}"></use></svg> <svg><use xlink:href="#icon${window.siyuan.config.appearance.modeOS ? "Mode" : (window.siyuan.config.appearance.mode === 0 ? "Light" : "Dark")}"></use></svg>
</div> </div>
<div id="barExit" class="toolbar__item b3-tooltips b3-tooltips__sw${(isInIOS() || isInAndroid()) ? "" : " fn__none"}" aria-label="${window.siyuan.languages.safeQuit}"> <div id="barExit" class="toolbar__item ariaLabel${(isInIOS() || isInAndroid()) ? "" : " fn__none"}" aria-label="${window.siyuan.languages.safeQuit}">
<svg><use xlink:href="#iconQuit"></use></svg> <svg><use xlink:href="#iconQuit"></use></svg>
</div> </div>
<div id="barMore" class="toolbar__item"> <div id="barMore" class="toolbar__item ariaLabel" aria-label="${window.siyuan.languages.more}">
<svg><use xlink:href="#iconMore"></use></svg> <svg><use xlink:href="#iconMore"></use></svg>
</div> </div>
<div class="fn__flex" id="windowControls"></div>`; <div class="fn__flex" id="windowControls"></div>`;

View file

@ -105,7 +105,7 @@ export class Plugin {
iconElement.innerHTML = (options.icon.startsWith("icon") ? `<svg class="b3-menu__icon"><use xlink:href="#${options.icon}"></use></svg>` : options.icon) + iconElement.innerHTML = (options.icon.startsWith("icon") ? `<svg class="b3-menu__icon"><use xlink:href="#${options.icon}"></use></svg>` : options.icon) +
`<span class="b3-menu__label">${options.title}</span>`; `<span class="b3-menu__label">${options.title}</span>`;
} else if (!isWindow()) { } else if (!isWindow()) {
iconElement.className = "toolbar__item b3-tooltips b3-tooltips__sw"; iconElement.className = "toolbar__item ariaLabel";
iconElement.setAttribute("aria-label", options.title); iconElement.setAttribute("aria-label", options.title);
iconElement.innerHTML = options.icon.startsWith("icon") ? `<svg><use xlink:href="#${options.icon}"></use></svg>` : options.icon; iconElement.innerHTML = options.icon.startsWith("icon") ? `<svg><use xlink:href="#${options.icon}"></use></svg>` : options.icon;
iconElement.addEventListener("click", options.callback); iconElement.addEventListener("click", options.callback);

View file

@ -46,12 +46,12 @@ export class Breadcrumb {
'<div class="protyle-breadcrumb__bar"></div>'} '<div class="protyle-breadcrumb__bar"></div>'}
<span class="protyle-breadcrumb__space"></span> <span class="protyle-breadcrumb__space"></span>
<button class="protyle-breadcrumb__icon fn__none" data-type="exit-focus">${window.siyuan.languages.exitFocus}</button> <button class="protyle-breadcrumb__icon fn__none" data-type="exit-focus">${window.siyuan.languages.exitFocus}</button>
<button class="block__icon block__icon--show fn__flex-center ariaLabel" data-position="right" aria-label="${window.siyuan.languages.lockEdit}" data-type="readonly"><svg><use xlink:href="#iconUnlock"></use></svg></button> <button class="block__icon block__icon--show fn__flex-center ariaLabel" aria-label="${window.siyuan.languages.lockEdit}" data-type="readonly"><svg><use xlink:href="#iconUnlock"></use></svg></button>
<span class="fn__space"></span> <span class="fn__space"></span>
<button class="block__icon block__icon--show fn__flex-center ariaLabel" data-position="right" data-type="doc" aria-label="${window.siyuan.languages.gutterTip2}"><svg><use xlink:href="#iconFile"></use></svg></button> <button class="block__icon block__icon--show fn__flex-center ariaLabel" data-type="doc" aria-label="${window.siyuan.languages.gutterTip2}"><svg><use xlink:href="#iconFile"></use></svg></button>
<span class="fn__space"></span> <span class="fn__space"></span>
<button class="block__icon block__icon--show fn__flex-center ariaLabel" data-position="right" data-type="more" aria-label="${window.siyuan.languages.more}"><svg><use xlink:href="#iconMore"></use></svg></button> <button class="block__icon block__icon--show fn__flex-center ariaLabel" data-type="more" aria-label="${window.siyuan.languages.more}"><svg><use xlink:href="#iconMore"></use></svg></button>
<button class="block__icon block__icon--show fn__flex-center fn__none ariaLabel" style="margin-left: 8px" data-position="right" data-type="context" aria-label="${window.siyuan.languages.context}"><svg><use xlink:href="#iconAlignCenter"></use></svg></button>`; <button class="block__icon block__icon--show fn__flex-center fn__none ariaLabel" style="margin-left: 8px" data-type="context" aria-label="${window.siyuan.languages.context}"><svg><use xlink:href="#iconAlignCenter"></use></svg></button>`;
this.element = element.firstElementChild as HTMLElement; this.element = element.firstElementChild as HTMLElement;
element.addEventListener("click", (event) => { element.addEventListener("click", (event) => {

View file

@ -41,8 +41,8 @@ export class Title {
this.element.classList.add("protyle-wysiwyg--attr"); this.element.classList.add("protyle-wysiwyg--attr");
} }
// 标题内需要一个空格,避免首次加载出现`请输入文档名`干扰 // 标题内需要一个空格,避免首次加载出现`请输入文档名`干扰
this.element.innerHTML = `<span aria-label="${window.siyuan.languages.gutterTip2}" class="protyle-title__icon" data-type="a" data-position="right"><svg><use xlink:href="#iconFile"></use></svg></span> this.element.innerHTML = `<span aria-label="${window.siyuan.languages.gutterTip2}" data-position="right" class="protyle-title__icon ariaLabel"><svg><use xlink:href="#iconFile"></use></svg></span>
<div contenteditable="true" data-position="center" spellcheck="${window.siyuan.config.editor.spellcheck}" class="protyle-title__input" data-tip="${window.siyuan.languages._kernel[16]}"> </div><div class="protyle-attr"></div>`; <div contenteditable="true" spellcheck="${window.siyuan.config.editor.spellcheck}" class="protyle-title__input" data-tip="${window.siyuan.languages._kernel[16]}"> </div><div class="protyle-attr"></div>`;
this.editElement = this.element.querySelector(".protyle-title__input"); this.editElement = this.element.querySelector(".protyle-title__input");
this.editElement.addEventListener("paste", (event: ClipboardEvent) => { this.editElement.addEventListener("paste", (event: ClipboardEvent) => {
event.stopPropagation(); event.stopPropagation();