diff --git a/app/src/config/util/snippets.ts b/app/src/config/util/snippets.ts
index 25254d4ee..a98c4eaa3 100644
--- a/app/src/config/util/snippets.ts
+++ b/app/src/config/util/snippets.ts
@@ -54,22 +54,26 @@ export const openSnippets = () => {
@@ -90,58 +94,75 @@ export const openSnippets = () => {
contentElement.textContent = item.content;
});
const removeIds: string[] = [];
+ const toggleCSSElement = dialog.element.querySelector('.b3-switch[data-action="toggleCSS"]') as HTMLInputElement;
+ const toggleJSElement = dialog.element.querySelector('.b3-switch[data-action="toggleJS"]') as HTMLInputElement;
+ toggleCSSElement.addEventListener("change", (event) => {
+ toggleSnippet(toggleCSSElement, toggleJSElement);
+ });
+ toggleJSElement.addEventListener("change", (event) => {
+ toggleSnippet(toggleCSSElement, toggleJSElement);
+ });
dialog.element.addEventListener("click", (event) => {
- const target = event.target as HTMLElement;
- if (target.id === "addCodeSnippetCSS" || target.id === "addCodeSnippetJS") {
- target.parentElement.insertAdjacentHTML("beforebegin", genSnippet({
- type: target.id === "addCodeSnippetCSS" ? "css" : "js",
- name: "",
- content: "",
- enabled: false
- }));
- return;
- }
- if (target.classList.contains("b3-button--cancel")) {
- dialog.destroy({cancel: "true"});
- return;
- }
- if (target.classList.contains("b3-button--text")) {
- setSnippet(dialog, response.data.snippets, removeIds);
- return;
- }
- const tabElement = hasClosestByClassName(target, "item");
- if (tabElement) {
- if (tabElement.getAttribute("data-type") === "css") {
- tabElement.classList.add("item--focus");
- tabElement.nextElementSibling.classList.remove("item--focus");
- tabElement.parentElement.nextElementSibling.firstElementChild.classList.remove("fn__none");
- tabElement.parentElement.nextElementSibling.lastElementChild.classList.add("fn__none");
- } else {
- tabElement.classList.add("item--focus");
- tabElement.previousElementSibling.classList.remove("item--focus");
- tabElement.parentElement.nextElementSibling.firstElementChild.classList.add("fn__none");
- tabElement.parentElement.nextElementSibling.lastElementChild.classList.remove("fn__none");
+ let target = event.target as HTMLElement;
+ while (target && !target.isSameNode(dialog.element)) {
+ if (target.id === "addCodeSnippetCSS" || target.id === "addCodeSnippetJS") {
+ target.parentElement.parentElement.insertAdjacentHTML("beforeend", genSnippet({
+ type: target.id === "addCodeSnippetCSS" ? "css" : "js",
+ name: "",
+ content: "",
+ enabled: false
+ }));
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ } else if (target.classList.contains("b3-button--cancel")) {
+ dialog.destroy({cancel: "true"});
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ } else if (target.classList.contains("b3-button--text")) {
+ setSnippet(dialog, response.data.snippets, removeIds);
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ } else if (target.classList.contains("item")) {
+ if (target.getAttribute("data-type") === "css") {
+ target.classList.add("item--focus");
+ target.nextElementSibling.classList.remove("item--focus");
+ target.parentElement.nextElementSibling.firstElementChild.classList.remove("fn__none");
+ target.parentElement.nextElementSibling.lastElementChild.classList.add("fn__none");
+ } else {
+ target.classList.add("item--focus");
+ target.previousElementSibling.classList.remove("item--focus");
+ target.parentElement.nextElementSibling.firstElementChild.classList.add("fn__none");
+ target.parentElement.nextElementSibling.lastElementChild.classList.remove("fn__none");
+ }
+ event.stopPropagation();
+ event.preventDefault();
+ break;
+ } else if (target.dataset.action === "remove") {
+ const itemElement = target.parentElement.parentElement;
+ removeIds.push("#snippet" + (itemElement.getAttribute("data-type") === "css" ? "CSS" : "JS") + itemElement.getAttribute("data-id"));
+ itemElement.nextElementSibling.remove();
+ itemElement.remove();
+ event.stopPropagation();
+ event.preventDefault();
+ break;
}
- return;
- }
- const removeElement = hasClosestByClassName(target, "b3-tooltips");
- if (removeElement) {
- const itemElement = removeElement.parentElement.parentElement;
- removeIds.push("#snippet" + (itemElement.getAttribute("data-type") === "css" ? "CSS" : "JS") + itemElement.getAttribute("data-id"));
- itemElement.nextElementSibling.remove();
- itemElement.remove();
+ target = target.parentElement;
}
});
});
};
const genSnippet = (options: ISnippet) => {
- return `
+ return `
+
-
+
@@ -188,3 +209,9 @@ const setSnippet = (dialog: Dialog, oldSnippets: ISnippet[], removeIds: string[]
}
}
};
+
+const toggleSnippet = (toggleCSSElement: HTMLInputElement, toggleJSElement: HTMLInputElement) => {
+ window.siyuan.config.snippet.enabledCSS = toggleCSSElement.checked;
+ window.siyuan.config.snippet.enabledJS = toggleJSElement.checked;
+ fetchPost("/api/setting/setSnippet", window.siyuan.config.snippet)
+}
diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts
index 55f55c0a1..e0b05916f 100644
--- a/app/src/types/index.d.ts
+++ b/app/src/types/index.d.ts
@@ -676,6 +676,10 @@ interface IAccount {
}
interface IConfig {
+ snippet: {
+ enabledCSS: boolean
+ enabledJS: boolean
+ }
cloudRegion: number
bazaar: {
trust: boolean