diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json
index 6565234e0..7613ef4dc 100644
--- a/app/appearance/langs/en_US.json
+++ b/app/appearance/langs/en_US.json
@@ -1,4 +1,5 @@
{
+ "showTitle": "Show database title",
"fillCreated": "Default fill created time",
"removeCard": "Remove flashcard",
"updateLayout": "Update layout",
diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json
index 8cf8fb985..0e79f8e5b 100644
--- a/app/appearance/langs/es_ES.json
+++ b/app/appearance/langs/es_ES.json
@@ -1,4 +1,5 @@
{
+ "showTitle": "Mostrar título de la base de datos",
"fillCreated": "Hora de creación del relleno predeterminado",
"removeCard": "Eliminar tarjeta flash",
"updateLayout": "Actualizar diseño",
diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json
index e29e23d0b..b8c41d8b8 100644
--- a/app/appearance/langs/fr_FR.json
+++ b/app/appearance/langs/fr_FR.json
@@ -1,4 +1,5 @@
{
+ "showTitle": "Afficher le titre de la base de données",
"fillCreated": "Heure de création de remplissage par défaut",
"removeCard": "Supprimer la flashcard",
"updateLayout": "Mettre à jour la mise en page",
diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json
index e1599a09a..59dd659b1 100644
--- a/app/appearance/langs/zh_CHT.json
+++ b/app/appearance/langs/zh_CHT.json
@@ -1,4 +1,5 @@
{
+ "showTitle": "顯示資料庫標題",
"fillCreated": "Default fill creation time",
"removeCard": "移除閃卡",
"updateLayout": "更新版面配置",
diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json
index 44bba66da..1b3447ce6 100644
--- a/app/appearance/langs/zh_CN.json
+++ b/app/appearance/langs/zh_CN.json
@@ -1,4 +1,5 @@
{
+ "showTitle": "显示数据库标题",
"fillCreated": "默认填充创建时间",
"removeCard": "移除闪卡",
"updateLayout": "更新布局",
diff --git a/app/src/protyle/render/av/openMenuPanel.ts b/app/src/protyle/render/av/openMenuPanel.ts
index d9d9d86e5..d7066a8b1 100644
--- a/app/src/protyle/render/av/openMenuPanel.ts
+++ b/app/src/protyle/render/av/openMenuPanel.ts
@@ -164,7 +164,7 @@ export const openMenuPanel = (options: {
} else if (options.type === "edit") {
bindEditEvent({protyle: options.protyle, data, menuElement, isCustomAttr});
} else if (options.type === "config") {
- bindViewEvent({protyle: options.protyle, data, menuElement});
+ bindViewEvent({protyle: options.protyle, data, menuElement, blockElement: options.blockElement});
}
}
if (options.cb) {
@@ -479,7 +479,7 @@ export const openMenuPanel = (options: {
} else if (type === "go-config") {
menuElement.innerHTML = getViewHTML(data.view);
setPosition(menuElement, tabRect.right - menuElement.clientWidth, tabRect.bottom, tabRect.height);
- bindViewEvent({protyle: options.protyle, data, menuElement});
+ bindViewEvent({protyle: options.protyle, data, menuElement, blockElement: options.blockElement});
event.preventDefault();
event.stopPropagation();
break;
@@ -690,39 +690,6 @@ export const openMenuPanel = (options: {
event.preventDefault();
event.stopPropagation();
break;
- } else if (type === "toggle-view-title") {
- if (target.firstElementChild.getAttribute("xlink:href") === "#iconEyeoff") {
- // hide
- transaction(options.protyle, [{
- action: "hideAttrViewName",
- avID,
- blockID,
- data: true
- }], [{
- action: "hideAttrViewName",
- avID,
- blockID,
- data: false
- }]);
- options.blockElement.querySelector(".av__title").classList.add("av__title--hide");
- } else {
- transaction(options.protyle, [{
- action: "hideAttrViewName",
- avID,
- blockID,
- data: false
- }], [{
- action: "hideAttrViewName",
- avID,
- blockID,
- data: true
- }]);
- options.blockElement.querySelector(".av__title").classList.remove("av__title--hide");
- }
- avPanelElement.remove();
- event.preventDefault();
- event.stopPropagation();
- break;
} else if (type === "duplicate-view") {
const id = Lute.NewNodeID();
transaction(options.protyle, [{
diff --git a/app/src/protyle/render/av/view.ts b/app/src/protyle/render/av/view.ts
index 190bfdb3a..fc17e288f 100644
--- a/app/src/protyle/render/av/view.ts
+++ b/app/src/protyle/render/av/view.ts
@@ -88,6 +88,7 @@ export const bindViewEvent = (options: {
protyle: IProtyle,
data: IAV,
menuElement: HTMLElement
+ blockElement: Element
}) => {
const inputElement = options.menuElement.querySelector('.b3-text-field[data-type="name"]') as HTMLInputElement;
inputElement.addEventListener("blur", () => {
@@ -117,6 +118,39 @@ export const bindViewEvent = (options: {
}
});
inputElement.select();
+ const toggleTitleElement = options.menuElement.querySelector('.b3-switch[data-type="toggle-view-title"]') as HTMLInputElement;
+ toggleTitleElement.addEventListener("change", () => {
+ const avID = options.blockElement.getAttribute("data-av-id");
+ const blockID = options.blockElement.getAttribute("data-node-id");
+ if (!toggleTitleElement.checked) {
+ // hide
+ transaction(options.protyle, [{
+ action: "hideAttrViewName",
+ avID,
+ blockID,
+ data: true
+ }], [{
+ action: "hideAttrViewName",
+ avID,
+ blockID,
+ data: false
+ }]);
+ options.blockElement.querySelector(".av__title").classList.add("av__title--hide");
+ } else {
+ transaction(options.protyle, [{
+ action: "hideAttrViewName",
+ avID,
+ blockID,
+ data: false
+ }], [{
+ action: "hideAttrViewName",
+ avID,
+ blockID,
+ data: true
+ }]);
+ options.blockElement.querySelector(".av__title").classList.remove("av__title--hide");
+ }
+ })
};
export const getViewHTML = (data: IAVTable) => {
@@ -154,13 +188,12 @@ export const getViewHTML = (data: IAVTable) => {
-
+