This commit is contained in:
Vanessa 2023-12-05 22:38:28 +08:00
parent 7604a0a930
commit f687828a6b
14 changed files with 50 additions and 32 deletions

View file

@ -80,13 +80,13 @@ export class BlockPanel {
const iconsElement = hasClosestByClassName(target, "block__icons");
if (iconsElement) {
const pingElement = iconsElement.querySelector('[data-type="pin"]');
if (pingElement.classList.contains("block__icon--active")) {
pingElement.classList.remove("block__icon--active");
if (this.element.getAttribute("data-pin") === "true") {
pingElement.setAttribute("aria-label", window.siyuan.languages.pin);
pingElement.querySelector("use").setAttribute("xlink:href", "#iconPin");
this.element.setAttribute("data-pin", "false");
} else {
pingElement.classList.add("block__icon--active");
pingElement.setAttribute("aria-label", window.siyuan.languages.unpin);
pingElement.querySelector("use").setAttribute("xlink:href", "#iconUnpin");
this.element.setAttribute("data-pin", "true");
}
event.preventDefault();
@ -105,13 +105,13 @@ export class BlockPanel {
if (type === "close") {
this.destroy();
} else if (type === "pin") {
if (target.classList.contains("block__icon--active")) {
target.classList.remove("block__icon--active");
if (this.element.getAttribute("data-pin") === "true") {
target.setAttribute("aria-label", window.siyuan.languages.pin);
target.querySelector("use").setAttribute("xlink:href", "#iconPin");
this.element.setAttribute("data-pin", "false");
} else {
target.classList.add("block__icon--active");
target.setAttribute("aria-label", window.siyuan.languages.unpin);
target.querySelector("use").setAttribute("xlink:href", "#iconUnpin");
this.element.setAttribute("data-pin", "true");
}
} else if (type === "open") {
@ -134,8 +134,8 @@ export class BlockPanel {
});
}
const pinElement = this.element.firstElementChild.querySelector('[data-type="pin"]');
pinElement.classList.add("block__icon--active");
pinElement.setAttribute("aria-label", window.siyuan.languages.unpin);
pinElement.querySelector("use").setAttribute("xlink:href", "#iconUnpin");
this.element.setAttribute("data-pin", "true");
});
/// #endif

View file

@ -445,11 +445,12 @@ ${response.data.replace("%pages", "<span class=totalPages></span>").replace("%pa
</div></div>`);
const pinElement = document.getElementById("pinWindow");
pinElement.addEventListener("click", () => {
pinElement.classList.toggle("toolbar__item--active");
if (pinElement.classList.contains("toolbar__item--active")) {
if (pinElement.getAttribute("aria-label") === window.siyuan.languages.pin) {
pinElement.querySelector("use").setAttribute("xlink:href", "#iconUnpin");
pinElement.setAttribute("aria-label", window.siyuan.languages.unpin);
ipcRenderer.send(Constants.SIYUAN_CMD, "setAlwaysOnTopTrue");
} else {
pinElement.querySelector("use").setAttribute("xlink:href", "#iconPin");
pinElement.setAttribute("aria-label", window.siyuan.languages.pin);
ipcRenderer.send(Constants.SIYUAN_CMD, "setAlwaysOnTopFalse");
}

View file

@ -44,7 +44,9 @@ export const moveResize = (element: HTMLElement, afterCB?: (type: string) => voi
documentSelf.ondragstart = () => false;
let hasMove = false;
documentSelf.onmousemove = (moveEvent: MouseEvent) => {
hasMove = true;
if (!element) {
return;
}
@ -129,7 +131,7 @@ export const moveResize = (element: HTMLElement, afterCB?: (type: string) => voi
documentSelf.ondragstart = null;
documentSelf.onselectstart = null;
documentSelf.onselect = null;
if (afterCB) {
if (hasMove && afterCB) {
afterCB(type);
}
};

View file

@ -87,7 +87,7 @@ export class Dock {
}
if (!showDock) {
this.element.firstElementChild.innerHTML = `<span class="dock__item dock__item--pin b3-tooltips b3-tooltips__${this.getClassDirect(0)}" aria-label="${this.pin ? window.siyuan.languages.unpin : window.siyuan.languages.pin}">
<svg><use xlink:href="#iconPin"></use></svg>
<svg><use xlink:href="#icon${this.pin ? "Unpin" : "Pin"}"></use></svg>
</span>`;
this.element.classList.add("fn__none");
} else {
@ -125,6 +125,7 @@ export class Dock {
} else if (target.classList.contains("dock__item")) {
this.togglePin();
target.setAttribute("aria-label", this.pin ? window.siyuan.languages.unpin : window.siyuan.languages.pin);
target.querySelector("use").setAttribute("xlink:href", this.pin ? "#iconUnpin" : "#iconPin");
event.preventDefault();
break;
}
@ -698,7 +699,7 @@ export class Dock {
}
} else {
this.element.firstElementChild.innerHTML = `${html}<span class="dock__item dock__item--pin b3-tooltips b3-tooltips__${this.getClassDirect(index)}" aria-label="${this.pin ? window.siyuan.languages.unpin : window.siyuan.languages.pin}">
<svg><use xlink:href="#iconPin"></use></svg>
<svg><use xlink:href="#icon${this.pin ? "Unpin" : "Pin"}"></use></svg>
</span>`;
}
} else {

View file

@ -296,7 +296,7 @@ export const setZoom = (type: "zoomIn" | "zoomOut" | "restore") => {
const openPlugin = (app: App, target: Element) => {
const menu = new Menu("topBarPlugin");
if(!isHuawei()) {
if (!isHuawei()) {
menu.addItem({
icon: "iconSettings",
label: window.siyuan.languages.manage,
@ -322,7 +322,7 @@ const openPlugin = (app: App, target: Element) => {
plugin.topBarIcons.forEach(item => {
const hasUnpin = window.siyuan.storage[Constants.LOCAL_PLUGINTOPUNPIN].includes(item.id);
const submenu = [{
icon: "iconPin",
icon: hasUnpin ? "iconPin" : "iconUnpin",
label: hasUnpin ? window.siyuan.languages.pin : window.siyuan.languages.unpin,
click() {
if (hasUnpin) {

View file

@ -1587,7 +1587,7 @@ export const tableMenu = (protyle: IProtyle, nodeElement: Element, cellElement:
}
const isPinHead = nodeElement.getAttribute("custom-pinthead");
menus.push({
icon: "iconPin",
icon: isPinHead ? "iconUnpin" : "iconPin",
label: isPinHead ? window.siyuan.languages.unpinTableHead : window.siyuan.languages.pinTableHead,
click: () => {
const html = nodeElement.outerHTML;

View file

@ -193,7 +193,7 @@ export const initTabMenu = (app: App, tab: Tab) => {
if (tab.headElement.classList.contains("item--pin")) {
window.siyuan.menus.menu.append(new MenuItem({
label: window.siyuan.languages.unpin,
icon: "iconPin",
icon: "iconUnpin",
click: () => {
tab.unpin();
}

View file

@ -801,7 +801,7 @@ export class Toolbar {
} else if (isInlineMemo) {
title = window.siyuan.languages.memo;
}
const isPin = this.subElement.querySelector('[data-type="pin"]')?.classList.contains("block__icon--active");
const isPin = this.subElement.querySelector('[data-type="pin"]')?.getAttribute("aria-label") === window.siyuan.languages.unpin;
const pinData: IObject = {};
if (isPin) {
const textElement = this.subElement.querySelector(".b3-text-field") as HTMLTextAreaElement;
@ -824,7 +824,7 @@ export class Toolbar {
<span class="fn__space${protyle.disabled ? " fn__none" : ""}"></span>
<button data-type="export" class="block__icon block__icon--show b3-tooltips b3-tooltips__nw" aria-label="${window.siyuan.languages.export} ${window.siyuan.languages.image}"><svg><use xlink:href="#iconImage"></use></svg></button>
<span class="fn__space"></span>
<button data-type="pin" class="block__icon block__icon--show b3-tooltips b3-tooltips__nw${isPin ? " block__icon--active" : ""}" aria-label="${window.siyuan.languages.pin}"><svg><use xlink:href="#iconPin"></use></svg></button>
<button data-type="pin" class="block__icon block__icon--show b3-tooltips b3-tooltips__nw" aria-label="${isPin ? window.siyuan.languages.unpin : window.siyuan.languages.pin}"><svg><use xlink:href="#icon${isPin ? "Unpin" : "Pin"}"></use></svg></button>
<span class="fn__space"></span>
<button data-type="close" class="block__icon block__icon--show b3-tooltips b3-tooltips__nw" aria-label="${window.siyuan.languages.close}"><svg style="width: 10px"><use xlink:href="#iconClose"></use></svg></button>
</div>
@ -859,11 +859,11 @@ export class Toolbar {
if (!btnElement) {
if (event.detail === 2) {
const pingElement = headerElement.querySelector('[data-type="pin"]');
if (pingElement.classList.contains("block__icon--active")) {
pingElement.classList.remove("block__icon--active");
if (pingElement.getAttribute("aria-label") === window.siyuan.languages.unpin) {
pingElement.querySelector("svg use").setAttribute("xlink:href", "#iconPin");
pingElement.setAttribute("aria-label", window.siyuan.languages.pin);
} else {
pingElement.classList.add("block__icon--active");
pingElement.querySelector("svg use").setAttribute("xlink:href", "#iconUnpin");
pingElement.setAttribute("aria-label", window.siyuan.languages.unpin);
}
event.preventDefault();
@ -874,15 +874,15 @@ export class Toolbar {
event.stopPropagation();
switch (btnElement.getAttribute("data-type")) {
case "close":
this.subElement.querySelector('[data-type="pin"]').classList.remove("block__icon--active");
this.subElement.querySelector('[data-type="pin"]').setAttribute("aria-label", window.siyuan.languages.pin);
hideElements(["util"], protyle);
break;
case "pin":
if (btnElement.classList.contains("block__icon--active")) {
btnElement.classList.remove("block__icon--active");
if (btnElement.getAttribute("aria-label") === window.siyuan.languages.unpin) {
btnElement.querySelector("svg use").setAttribute("xlink:href", "#iconPin");
btnElement.setAttribute("aria-label", window.siyuan.languages.pin);
} else {
btnElement.classList.add("block__icon--active");
btnElement.querySelector("svg use").setAttribute("xlink:href", "#iconUnpin");
btnElement.setAttribute("aria-label", window.siyuan.languages.unpin);
}
break;
@ -937,7 +937,7 @@ export class Toolbar {
/// #if !MOBILE
moveResize(this.subElement, () => {
const pinElement = headerElement.querySelector('[data-type="pin"]');
pinElement.classList.add("block__icon--active");
pinElement.querySelector("svg use").setAttribute("xlink:href", "#iconUnpin");
pinElement.setAttribute("aria-label", window.siyuan.languages.unpin);
this.subElement.firstElementChild.setAttribute("data-drag", "true");
});
@ -993,7 +993,7 @@ export class Toolbar {
return;
}
if (event.key === "Escape" || matchHotKey("⌘↩", event)) {
this.subElement.querySelector('[data-type="pin"]').classList.remove("block__icon--active");
this.subElement.querySelector('[data-type="pin"]').setAttribute("aria-label", window.siyuan.languages.pin);
hideElements(["util"], protyle);
} else if (event.key === "Tab") {
// https://github.com/siyuan-note/siyuan/issues/5270

View file

@ -33,7 +33,7 @@ export const hideElements = (panels: string[], protyle?: IProtyle, focusHide = f
}
if (protyle.toolbar && panels.includes("util")) {
const pinElement = protyle.toolbar.subElement.querySelector('[data-type="pin"]');
if (focusHide || !pinElement || (pinElement && !pinElement.classList.contains("block__icon--active"))) {
if (focusHide || !pinElement || (pinElement && pinElement.getAttribute("aria-label") === window.siyuan.languages.pin)) {
protyle.toolbar.subElement.classList.add("fn__none");
if (protyle.toolbar.subElementCloseCB) {
protyle.toolbar.subElementCloseCB();