diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 680ca10f8..18347af4a 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -145,7 +145,7 @@ "sortByRankDesc": "Relevance DESC", "sortByRankAsc": "Relevance ASC", "saveCriterion": "Save query criteria", - "useCriterion": "Use query criteria", + "useCriterion": "After clearing, the last query condition can be used", "removeCriterion": "Remove query criteria", "group": "Group", "noGroupBy": "No grouping", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 23f30c232..69d3367fc 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -145,7 +145,7 @@ "sortByRankDesc": "Relevancia DESC", "sortByRankAsc": "Relevancia ASC", "saveCriterion": "Guardar criterios de consulta", - "useCriterion": "Usar criterios de consulta", + "useCriterion": "Después de borrar, se puede usar la última condición de consulta", "removeCriterion": "Eliminar criterios de consulta", "grupo": "Grupo", "noGroupBy": "Sin agrupar", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index e03c1e8cf..887a222ad 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -145,7 +145,7 @@ "sortByRankDesc": "DESC de pertinence", "sortByRankAsc": "ASC de pertinence", "saveCriterion": "Enregistrer les critères de requête", - "useCriterion": "Utiliser les critères de requête", + "useCriterion": "Après effacement, la dernière condition de requête peut être utilisée", "removeCriterion": "Supprimer les critères de requête", "groupe": "Groupe", "noGroupBy": "Aucun regroupement", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index be6ce9a4b..0b7e34eab 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -145,7 +145,7 @@ "sortByRankDesc": "按相關度降序", "sortByRankAsc": "按相關度升序", "saveCriterion": "保存查詢條件", - "useCriterion": "使用查詢條件", + "useCriterion": "清空後可使用上一次的查詢條件", "removeCriterion": "清空查詢條件", "group": "分組", "noGroupBy": "不分組", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 574708ba8..6ec3f8e18 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -145,7 +145,7 @@ "sortByRankDesc": "按相关度降序", "sortByRankAsc": "按相关度升序", "saveCriterion": "保存查询条件", - "useCriterion": "使用查询条件", + "useCriterion": "清空后可使用上一次的查询条件", "removeCriterion": "清空查询条件", "group": "分组", "noGroupBy": "不分组", diff --git a/app/src/mobile/menu/search.ts b/app/src/mobile/menu/search.ts index 487b0e331..17af0d901 100644 --- a/app/src/mobile/menu/search.ts +++ b/app/src/mobile/menu/search.ts @@ -319,10 +319,8 @@ const initSearchEvent = (app: App, element: Element, config: ISearchOption) => { }); if (target.parentElement.parentElement.childElementCount === 1) { target.parentElement.parentElement.classList.add("fn__none"); - target.parentElement.remove(); - } else { - target.parentElement.remove(); } + target.parentElement.remove(); event.stopPropagation(); event.preventDefault(); break; @@ -546,7 +544,7 @@ export const popSearch = (app: App, config = window.siyuan.storage[Constants.LOC
-
+
diff --git a/app/src/search/menu.ts b/app/src/search/menu.ts index b7bb6b8fd..5b5654f13 100644 --- a/app/src/search/menu.ts +++ b/app/src/search/menu.ts @@ -180,6 +180,55 @@ export const queryMenu = (config: ISearchOption, cb: () => void) => { }).element); }; +export const saveCriterion = (config: ISearchOption, + criteriaData: ISearchOption[], + element: Element,) => { + const saveDialog = new Dialog({ + title: window.siyuan.languages.saveCriterion, + content: `
+ +
+
+
+ +
`, + width: isMobile() ? "92vw" : "520px", + }); + const btnsElement = saveDialog.element.querySelectorAll(".b3-button"); + saveDialog.bindInput(saveDialog.element.querySelector("input"), () => { + btnsElement[1].dispatchEvent(new CustomEvent("click")); + }); + btnsElement[0].addEventListener("click", () => { + saveDialog.destroy(); + }); + btnsElement[1].addEventListener("click", () => { + const value = saveDialog.element.querySelector("input").value; + if (!value) { + showMessage(window.siyuan.languages["_kernel"]["142"]); + return; + } + if (isMobile()) { + config.k = (document.querySelector("#toolbarSearch") as HTMLInputElement).value; + config.r = (element.querySelector("#toolbarReplace") as HTMLInputElement).value; + } else { + config.k = (element.querySelector("#searchInput") as HTMLInputElement).value; + config.r = (element.querySelector("#replaceInput") as HTMLInputElement).value; + } + config.removed = false; + const criterion = config; + criterion.name = value; + criteriaData.push(Object.assign({}, criterion)); + window.siyuan.storage[Constants.LOCAL_SEARCHDATA] = Object.assign({}, config); + setStorageVal(Constants.LOCAL_SEARCHDATA, window.siyuan.storage[Constants.LOCAL_SEARCHDATA]); + fetchPost("/api/storage/setCriterion", {criterion}, () => { + saveDialog.destroy(); + const criteriaElement = element.querySelector("#criteria"); + criteriaElement.classList.remove("fn__none"); + criteriaElement.firstElementChild.insertAdjacentHTML("beforeend", `
${criterion.name}
`); + }); + }); +} + export const moreMenu = async (config: ISearchOption, criteriaData: ISearchOption[], element: Element, @@ -306,50 +355,7 @@ export const moreMenu = async (config: ISearchOption, label: window.siyuan.languages.saveCriterion, iconHTML: Constants.ZWSP, click() { - const saveDialog = new Dialog({ - title: window.siyuan.languages.saveCriterion, - content: `
- -
-
-
- -
`, - width: isMobile() ? "92vw" : "520px", - }); - const btnsElement = saveDialog.element.querySelectorAll(".b3-button"); - saveDialog.bindInput(saveDialog.element.querySelector("input"), () => { - btnsElement[1].dispatchEvent(new CustomEvent("click")); - }); - btnsElement[0].addEventListener("click", () => { - saveDialog.destroy(); - }); - btnsElement[1].addEventListener("click", () => { - const value = saveDialog.element.querySelector("input").value; - if (!value) { - showMessage(window.siyuan.languages["_kernel"]["142"]); - return; - } - if (isMobile()) { - config.k = (document.querySelector("#toolbarSearch") as HTMLInputElement).value; - config.r = (element.querySelector("#toolbarReplace") as HTMLInputElement).value; - } else { - config.k = (element.querySelector("#searchInput") as HTMLInputElement).value; - config.r = (element.querySelector("#replaceInput") as HTMLInputElement).value; - } - config.removed = false; - const criterion = config; - criterion.name = value; - criteriaData.push(Object.assign({}, criterion)); - window.siyuan.storage[Constants.LOCAL_SEARCHDATA] = Object.assign({}, config); - setStorageVal(Constants.LOCAL_SEARCHDATA, window.siyuan.storage[Constants.LOCAL_SEARCHDATA]); - fetchPost("/api/storage/setCriterion", {criterion}, () => { - saveDialog.destroy(); - const criteriaElement = element.querySelector("#criteria"); - criteriaElement.classList.remove("fn__none"); - criteriaElement.insertAdjacentHTML("beforeend", `
${criterion.name}
`); - }); - }); + saveCriterion(config, criteriaData, element); } }).element); window.siyuan.menus.menu.append(new MenuItem({ @@ -368,12 +374,25 @@ export const initCriteriaMenu = (element: HTMLElement, data: ISearchOption[]) => data.push(item); html += `
${escapeHtml(item.name)}
`; }); - element.innerHTML = html; + /// #if MOBILE + element.innerHTML = `
+ ${html} +
`; if (html === "") { element.classList.add("fn__none"); } else { element.classList.remove("fn__none"); } + /// #else + element.innerHTML = `
+ ${html} +
+ + + + +`; + /// #endif }); }; diff --git a/app/src/search/util.ts b/app/src/search/util.ts index 8ca9d0f19..a78b863e1 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -16,7 +16,7 @@ import {hasClosestByClassName} from "../protyle/util/hasClosest"; import {setStorageVal, updateHotkeyTip} from "../protyle/util/compatibility"; import {newFileByName} from "../util/newFile"; import {matchHotKey} from "../protyle/util/hotKey"; -import {filterMenu, getKeyByLiElement, initCriteriaMenu, moreMenu, queryMenu} from "./menu"; +import {filterMenu, getKeyByLiElement, initCriteriaMenu, moreMenu, queryMenu, saveCriterion} from "./menu"; import {App} from "../index"; const saveKeyList = (type: "keys" | "replaceKeys", value: string) => { @@ -128,7 +128,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo
-
+
@@ -268,7 +268,42 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo const searchPathInputElement = element.querySelector("#searchPathInput"); while (target && !target.isSameNode(element)) { const type = target.getAttribute("data-type"); - if (type === "next") { + if (type === "removeCriterion") { + updateConfig(element, { + removed: true, + sort: 0, + group: 0, + hasReplace: false, + method: 0, + hPath: "", + idPath: [], + k: "", + r: "", + page: 1, + types: { + document: window.siyuan.config.search.document, + heading: window.siyuan.config.search.heading, + list: window.siyuan.config.search.list, + listItem: window.siyuan.config.search.listItem, + codeBlock: window.siyuan.config.search.codeBlock, + htmlBlock: window.siyuan.config.search.htmlBlock, + mathBlock: window.siyuan.config.search.mathBlock, + table: window.siyuan.config.search.table, + blockquote: window.siyuan.config.search.blockquote, + superBlock: window.siyuan.config.search.superBlock, + paragraph: window.siyuan.config.search.paragraph, + embedBlock: window.siyuan.config.search.embedBlock, + } + }, config, edit, app); + event.stopPropagation(); + event.preventDefault(); + break; + } else if (type === "saveCriterion") { + saveCriterion(config, criteriaData, element); + event.stopPropagation(); + event.preventDefault(); + break; + } else if (type === "next") { if (!target.getAttribute("disabled")) { config.page++; inputTimeout = inputEvent(element, config, inputTimeout, edit, app); @@ -304,12 +339,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo return true; } }); - if (target.parentElement.parentElement.childElementCount === 1) { - target.parentElement.parentElement.classList.add("fn__none"); - target.parentElement.remove(); - } else { - target.parentElement.remove(); - } + target.parentElement.remove(); event.stopPropagation(); event.preventDefault(); break;