Vanessa 2023-06-30 11:11:45 +08:00
parent 2af6113515
commit d96f09d2d4
3 changed files with 15 additions and 8 deletions

View file

@ -1,5 +1,5 @@
import {transaction} from "../../wysiwyg/transaction"; import {transaction} from "../../wysiwyg/transaction";
import {hasClosestBlock} from "../../util/hasClosest"; import {hasClosestBlock, hasClosestByClassName} from "../../util/hasClosest";
import {Menu} from "../../../plugin/Menu"; import {Menu} from "../../../plugin/Menu";
import {getColIconByType} from "./col"; import {getColIconByType} from "./col";
@ -40,16 +40,22 @@ export const popTextCell = (protyle: IProtyle, cellElement: HTMLElement) => {
const updateCellValue = (protyle: IProtyle, cellElement: HTMLElement, type: TAVCol) => { const updateCellValue = (protyle: IProtyle, cellElement: HTMLElement, type: TAVCol) => {
const avMaskElement = document.querySelector(".av__mask"); const rowElement = hasClosestByClassName(cellElement, "av__row");
const inputElement = avMaskElement.querySelector(".b3-text-field") as HTMLInputElement; if (!rowElement) {
const blockElement = hasClosestBlock(cellElement); return;
}
const blockElement = hasClosestBlock(rowElement);
if (!blockElement) { if (!blockElement) {
return; return;
} }
const avMaskElement = document.querySelector(".av__mask");
const inputElement = avMaskElement.querySelector(".b3-text-field") as HTMLInputElement;
transaction(protyle, [{ transaction(protyle, [{
action: "updateAttrViewCell", action: "updateAttrViewCell",
id: blockElement.getAttribute("data-node-id"), id: cellElement.getAttribute("data-id"),
rowID: blockElement.getAttribute("data-av-id"), rowID: rowElement.getAttribute("data-id"),
parentID: blockElement.getAttribute("data-av-id"),
type, type,
data: inputElement.value, data: inputElement.value,
}], [{ }], [{

View file

@ -48,7 +48,7 @@ export const avRender = (element: Element, cb?: () => void) => {
</div> </div>
<div class="av__firstcol"><svg><use xlink:href="#iconUncheck"></use></svg></div>`; <div class="av__firstcol"><svg><use xlink:href="#iconUncheck"></use></svg></div>`;
row.cells.forEach((cell, index) => { row.cells.forEach((cell, index) => {
tableHTML += `<div class="av__cell" data-block-id="${cell.renderValue?.id || ""}" data-index="${index}" style="width: ${data.columns[index].width || 200}px;${cell.bgColor ? `background-color:${cell.bgColor};` : ""}${cell.color ? `color:${cell.color};` : ""}">${cell.renderValue?.content || ""}</div>`; tableHTML += `<div class="av__cell" ${index === 0 ? 'data-block-id="' + (cell.renderValue?.id || "") + '"' : ""} data-id="${cell.id}" data-index="${index}" style="width: ${data.columns[index].width || 200}px;${cell.bgColor ? `background-color:${cell.bgColor};` : ""}${cell.color ? `color:${cell.color};` : ""}">${cell.renderValue?.content || ""}</div>`;
}); });
tableHTML += "<div></div></div>"; tableHTML += "<div></div></div>";
}); });
@ -95,7 +95,7 @@ export const refreshAV = (protyle: IProtyle, operation: IOperation) => {
}); });
}); });
} else if (operation.action === "insertAttrViewBlock") { } else if (operation.action === "insertAttrViewBlock") {
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.id}"]`)).forEach((item: HTMLElement) => { Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-av-id="${operation.parentID}"]`)).forEach((item: HTMLElement) => {
item.removeAttribute("data-render"); item.removeAttribute("data-render");
avRender(item); avRender(item);
}); });

View file

@ -833,6 +833,7 @@ interface IAVRow {
} }
interface IAVCell { interface IAVCell {
id: string,
color: string, color: string,
bgColor: string, bgColor: string,
value: string, value: string,