diff --git a/app/src/search/assets.ts b/app/src/search/assets.ts index cc9cf4355..21321709f 100644 --- a/app/src/search/assets.ts +++ b/app/src/search/assets.ts @@ -73,7 +73,7 @@ export const openSearchAsset = (element: Element, isStick: boolean) => {
- ↑/↓ ${window.siyuan.languages.searchTip1} + ↑/↓/PageUp/PageDown ${window.siyuan.languages.searchTip1} ${enterTip} Click ${window.siyuan.languages.searchTip3} Esc ${window.siyuan.languages.searchTip5} @@ -178,9 +178,7 @@ export const openSearchAsset = (element: Element, isStick: boolean) => { } event.preventDefault(); renderPreview(previewElement, currentList.dataset.id, searchInputElement.value, localSearch.method); - return; - } - if (event.key === "ArrowUp") { + } else if (event.key === "ArrowUp") { currentList.classList.remove("b3-list-item--focus"); if (!currentList.previousElementSibling) { searchPanelElement.lastElementChild.classList.add("b3-list-item--focus"); @@ -194,6 +192,24 @@ export const openSearchAsset = (element: Element, isStick: boolean) => { } event.preventDefault(); renderPreview(previewElement, currentList.dataset.id, searchInputElement.value, localSearch.method); + } else if (Constants.KEYCODELIST[event.keyCode] === "PageUp") { + if (!element.querySelector('[data-type="assetPrevious"]').getAttribute("disabled")) { + let currentPage = parseInt(element.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[0]) + if (currentPage > 1) { + currentPage--; + assetInputEvent(element, localSearch, currentPage); + } + } + event.preventDefault(); + } else if (Constants.KEYCODELIST[event.keyCode] === "PageDown") { + if (!element.querySelector('[data-type="assetNext"]').getAttribute("disabled")) { + let currentPage = parseInt(element.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[0]) + if (currentPage < parseInt(element.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[1])) { + currentPage++; + assetInputEvent(element, localSearch, currentPage); + } + } + event.preventDefault(); } }); assetInputEvent(element, localSearch); @@ -236,7 +252,7 @@ export const openSearchAsset = (element: Element, isStick: boolean) => { }; let inputTimeout: number; -export const assetInputEvent = (element: Element, localSearch?: ISearchAssetOption, page = 1,) => { +export const assetInputEvent = (element: Element, localSearch?: ISearchAssetOption, page = 1) => { element.nextElementSibling.classList.remove("fn__none"); clearTimeout(inputTimeout); inputTimeout = window.setTimeout(() => { diff --git a/app/src/search/util.ts b/app/src/search/util.ts index c2e78fbf2..631f52ffc 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -235,7 +235,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo
- ↑/↓ ${window.siyuan.languages.searchTip1} + ↑/↓/PageUp/PageDown ${window.siyuan.languages.searchTip1} ${updateHotkeyTip(window.siyuan.config.keymap.general.newFile.custom)} ${window.siyuan.languages.new} Enter/Double Click ${window.siyuan.languages.searchTip2} Click ${window.siyuan.languages.searchTip3} @@ -649,14 +649,22 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo break; } else if (type === "assetPrevious") { if (!target.getAttribute("disabled")) { - assetInputEvent(assetsElement, localSearch, parseInt(assetsElement.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[1]) - 1); + let currentPage = parseInt(assetsElement.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[0]) + if (currentPage > 1) { + currentPage--; + assetInputEvent(assetsElement, localSearch, currentPage); + } } event.stopPropagation(); event.preventDefault(); break; } else if (type === "assetNext") { if (!target.getAttribute("disabled")) { - assetInputEvent(assetsElement, localSearch, parseInt(assetsElement.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[1]) + 1); + let currentPage = parseInt(assetsElement.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[0]) + if (currentPage < parseInt(assetsElement.querySelector("#searchAssetResult .fn__flex-center").textContent.split("/")[1])) { + currentPage++; + assetInputEvent(assetsElement, localSearch, currentPage); + } } event.stopPropagation(); event.preventDefault();