From c569cd4c67f4a296c62ba8fec60c28f012af616e Mon Sep 17 00:00:00 2001 From: Peter Mathis Date: Thu, 10 Oct 2024 14:16:23 +0200 Subject: [PATCH] fix for search mode and debounce input with patternslib util --- .../contentbrowser/src/ContentBrowser.svelte | 21 +++++++++---------- src/pat/contentbrowser/src/ContentStore.js | 4 ++-- src/pat/contentbrowser/src/utils.js | 2 +- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/pat/contentbrowser/src/ContentBrowser.svelte b/src/pat/contentbrowser/src/ContentBrowser.svelte index 240dd6363..0cc19fe62 100644 --- a/src/pat/contentbrowser/src/ContentBrowser.svelte +++ b/src/pat/contentbrowser/src/ContentBrowser.svelte @@ -180,8 +180,10 @@ const possibleFocusEls = [ ...document.querySelectorAll(".levelColumn .inPath"), // previously selected folder ...document.querySelectorAll(".levelColumn .selectedItem"), // previously selected item - document.querySelector(".levelColumn .contentItem"), // default first item ]; + if(!possibleFocusEls.length && document.querySelector(".levelColumn .contentItem")) { + possibleFocusEls.push(document.querySelector(".levelColumn .contentItem")); + } if (possibleFocusEls.length) { keyboardNavInitialized = true; possibleFocusEls[0].focus(); @@ -310,18 +312,12 @@ } function itemInPath(item) { - return $currentPath.indexOf(item.path) != -1; + return $config.mode == "browse" && $currentPath.indexOf(item.path) != -1; } - function filterItems() { - let timeoutId; - if (timeoutId) { - clearTimeout(timeoutId); - } - timeoutId = setTimeout(() => { - contentItems.get({ path: $currentPath, searchTerm: this.value }); - }, 300); - } + const filterItems = utils.debounce((e) => { + contentItems.get({ path: $currentPath, searchTerm: e.target.value }); + }, 300); function loadMore(node) { const observer = new IntersectionObserver( @@ -506,6 +502,9 @@ }} /> {item.Title} + {#if $config.mode == "search"} +
{item.path} + {/if} {/if} {#if item.is_folderish && $config.mode == "browse"} diff --git a/src/pat/contentbrowser/src/ContentStore.js b/src/pat/contentbrowser/src/ContentStore.js index 5dad55168..d986aa54e 100644 --- a/src/pat/contentbrowser/src/ContentStore.js +++ b/src/pat/contentbrowser/src/ContentStore.js @@ -133,7 +133,7 @@ export default function (config, pathCache) { page: page, }; if (searchTerm) { - if (searchTerm.length < 3) { + if (searchTerm.length < 2) { // minimum length of search term return; } @@ -205,7 +205,7 @@ export default function (config, pathCache) { page = 1, }) => { if (config.mode === "search") { - await search(searchTerm, page) + await search(searchTerm, page); } else if (loadMorePath) { const pC = get(pathCache); if (!(loadMorePath in pC)) { diff --git a/src/pat/contentbrowser/src/utils.js b/src/pat/contentbrowser/src/utils.js index 64cd30676..395af9861 100644 --- a/src/pat/contentbrowser/src/utils.js +++ b/src/pat/contentbrowser/src/utils.js @@ -53,7 +53,7 @@ export async function request({ }, ], }; - if (selectableTypes) { + if (selectableTypes.length) { vocabQuery.criteria.push({ i: "portal_type", o: "plone.app.querystring.operation.list.contains",