mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-20 16:40:13 +01:00
This commit is contained in:
parent
f822e4d69e
commit
45e04e645d
5 changed files with 25 additions and 24 deletions
|
|
@ -8,6 +8,11 @@
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__cursor {
|
||||||
|
width: .1px;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
&__container {
|
&__container {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
cursor: auto;
|
cursor: auto;
|
||||||
|
|
@ -70,13 +75,6 @@
|
||||||
color: var(--b3-theme-on-surface);
|
color: var(--b3-theme-on-surface);
|
||||||
content: attr(data-tip);
|
content: attr(data-tip);
|
||||||
}
|
}
|
||||||
|
|
||||||
&--hide {
|
|
||||||
width: .1px;
|
|
||||||
overflow: hidden;
|
|
||||||
height: 0;
|
|
||||||
min-height: .1px !important;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&__counter {
|
&__counter {
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,7 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value)}</div>`;
|
||||||
${response.data.isMirror ? ` <span data-av-id="${response.data.id}" data-popover-url="/api/av/getMirrorDatabaseBlocks" class="popover__block block__icon block__icon--show ariaLabel" aria-label="${window.siyuan.languages.mirrorTip}">
|
${response.data.isMirror ? ` <span data-av-id="${response.data.id}" data-popover-url="/api/av/getMirrorDatabaseBlocks" class="popover__block block__icon block__icon--show ariaLabel" aria-label="${window.siyuan.languages.mirrorTip}">
|
||||||
<svg><use xlink:href="#iconSplitLR"></use></svg></span><div class="fn__space"></div>` : ""}
|
<svg><use xlink:href="#iconSplitLR"></use></svg></span><div class="fn__space"></div>` : ""}
|
||||||
</div>
|
</div>
|
||||||
<div contenteditable="${protyle.disabled ? "false" : "true"}" spellcheck="${window.siyuan.config.editor.spellcheck.toString()}" class="av__title${viewData.hideAttrViewName ? " av__title--hide" : ""}" data-title="${response.data.name || ""}" data-tip="${window.siyuan.languages.title}">${response.data.name || ""}</div>
|
<div contenteditable="${protyle.disabled ? "false" : "true"}" spellcheck="${window.siyuan.config.editor.spellcheck.toString()}" class="av__title${viewData.hideAttrViewName ? " fn__none" : ""}" data-title="${response.data.name || ""}" data-tip="${window.siyuan.languages.title}">${response.data.name || ""}</div>
|
||||||
<div class="av__counter fn__none"></div>
|
<div class="av__counter fn__none"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="av__scroll">
|
<div class="av__scroll">
|
||||||
|
|
@ -254,6 +254,7 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value)}</div>`;
|
||||||
<div class="av__row--footer">${calcHTML}</div>
|
<div class="av__row--footer">${calcHTML}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="av__cursor" contenteditable="true">${Constants.ZWSP}</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
e.setAttribute("data-render", "true");
|
e.setAttribute("data-render", "true");
|
||||||
// 历史兼容
|
// 历史兼容
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ export const bindViewEvent = (options: {
|
||||||
blockID,
|
blockID,
|
||||||
data: false
|
data: false
|
||||||
}]);
|
}]);
|
||||||
options.blockElement.querySelector(".av__title").classList.add("av__title--hide");
|
options.blockElement.querySelector(".av__title").classList.add("fn__none");
|
||||||
} else {
|
} else {
|
||||||
transaction(options.protyle, [{
|
transaction(options.protyle, [{
|
||||||
action: "hideAttrViewName",
|
action: "hideAttrViewName",
|
||||||
|
|
@ -148,7 +148,7 @@ export const bindViewEvent = (options: {
|
||||||
blockID,
|
blockID,
|
||||||
data: true
|
data: true
|
||||||
}]);
|
}]);
|
||||||
options.blockElement.querySelector(".av__title").classList.remove("av__title--hide");
|
options.blockElement.querySelector(".av__title").classList.remove("fn__none");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -491,7 +491,7 @@ export const focusBlock = (element: Element, parentElement?: HTMLElement, toStar
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// hr、嵌入块、数学公式、iframe、音频、视频、图表渲染块等,删除段落块后,光标位置矫正 https://github.com/siyuan-note/siyuan/issues/4143
|
// hr、嵌入块、数学公式、iframe、音频、视频、图表渲染块等,删除段落块后,光标位置矫正 https://github.com/siyuan-note/siyuan/issues/4143
|
||||||
if (element.classList.contains("render-node") || element.classList.contains("iframe") || element.classList.contains("hr")) {
|
if (element.classList.contains("render-node") || element.classList.contains("iframe") || element.classList.contains("hr") || element.classList.contains("av")) {
|
||||||
const range = document.createRange();
|
const range = document.createRange();
|
||||||
const type = element.getAttribute("data-type");
|
const type = element.getAttribute("data-type");
|
||||||
let setRange = false;
|
let setRange = false;
|
||||||
|
|
@ -531,6 +531,14 @@ export const focusBlock = (element: Element, parentElement?: HTMLElement, toStar
|
||||||
range.selectNodeContents(element);
|
range.selectNodeContents(element);
|
||||||
range.collapse(true);
|
range.collapse(true);
|
||||||
setRange = true;
|
setRange = true;
|
||||||
|
} else if (type === "NodeAttributeView") {
|
||||||
|
const cursorElement = element.querySelector(".av__cursor")
|
||||||
|
if (cursorElement) {
|
||||||
|
range.setStart(cursorElement.firstChild, 0);
|
||||||
|
setRange = true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (setRange) {
|
if (setRange) {
|
||||||
focusByRange(range);
|
focusByRange(range);
|
||||||
|
|
@ -539,17 +547,6 @@ export const focusBlock = (element: Element, parentElement?: HTMLElement, toStar
|
||||||
focusSideBlock(element);
|
focusSideBlock(element);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (element.classList.contains("av")) {
|
|
||||||
const avTitleElement = element.querySelector(".av__title");
|
|
||||||
if (avTitleElement) {
|
|
||||||
const range = document.createRange();
|
|
||||||
range.selectNodeContents(avTitleElement);
|
|
||||||
range.collapse();
|
|
||||||
focusByRange(range);
|
|
||||||
return range;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
let cursorElement;
|
let cursorElement;
|
||||||
if (toStart) {
|
if (toStart) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import {getContenteditableElement, getNextBlock, hasNextSibling, isNotEditBlock}
|
||||||
import {genEmptyBlock} from "../../block/util";
|
import {genEmptyBlock} from "../../block/util";
|
||||||
import {blockRender} from "../render/blockRender";
|
import {blockRender} from "../render/blockRender";
|
||||||
import {hideElements} from "../ui/hideElements";
|
import {hideElements} from "../ui/hideElements";
|
||||||
import {hasClosestByAttribute} from "../util/hasClosest";
|
import {hasClosestByAttribute, hasClosestByClassName} from "../util/hasClosest";
|
||||||
import {fetchPost, fetchSyncPost} from "../../util/fetch";
|
import {fetchPost, fetchSyncPost} from "../../util/fetch";
|
||||||
import {headingTurnIntoList, turnIntoTaskList} from "./turnIntoList";
|
import {headingTurnIntoList, turnIntoTaskList} from "./turnIntoList";
|
||||||
import {updateAVName} from "../render/av/action";
|
import {updateAVName} from "../render/av/action";
|
||||||
|
|
@ -20,7 +20,12 @@ export const input = async (protyle: IProtyle, blockElement: HTMLElement, range:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (blockElement.classList.contains("av")) {
|
if (blockElement.classList.contains("av")) {
|
||||||
|
const avCursorElement = hasClosestByClassName(range.startContainer, "av__cursor")
|
||||||
|
if (avCursorElement) {
|
||||||
|
range.startContainer.textContent = Constants.ZWSP;
|
||||||
|
} else {
|
||||||
updateAVName(protyle, blockElement);
|
updateAVName(protyle, blockElement);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const editElement = getContenteditableElement(blockElement) as HTMLElement;
|
const editElement = getContenteditableElement(blockElement) as HTMLElement;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue