diff --git a/src/components/search.jsx b/src/components/search.jsx
index d6de8a30..ba15b42a 100644
--- a/src/components/search.jsx
+++ b/src/components/search.jsx
@@ -1,11 +1,11 @@
import { useTranslation } from "react-i18next";
import { useEffect, useState, useRef } from "react";
import classNames from "classnames";
+
import { resolveIcon } from "./services/item";
-export default function HomepageSearch({bookmarks, services, searchString, setSearchString, isOpen, close}) {
- const { t, i18n } = useTranslation();
- const all = [...bookmarks.map(bg => bg.bookmarks).flat(), ...services.map(sg => sg.services).flat()];
+export default function HomepageSearch({bookmarksAndServices, searchString, setSearchString, isOpen, close}) {
+ const { t } = useTranslation();
const searchField = useRef();
@@ -25,10 +25,10 @@ export default function HomepageSearch({bookmarks, services, searchString, setSe
close(false);
const result = results[currentItemIndex];
window.open(result.href, '_blank');
- } else if (event.key == "ArrowDown" && results[currentItemIndex + 1]) {
+ } else if (event.key === "ArrowDown" && results[currentItemIndex + 1]) {
setCurrentItemIndex(currentItemIndex + 1);
event.preventDefault();
- } else if (event.key == "ArrowUp" && currentItemIndex > 0) {
+ } else if (event.key === "ArrowUp" && currentItemIndex > 0) {
setCurrentItemIndex(currentItemIndex - 1);
event.preventDefault();
}
@@ -37,13 +37,13 @@ export default function HomepageSearch({bookmarks, services, searchString, setSe
useEffect(() => {
if (searchString.length === 0) setResults([]);
else {
- const newResults = all.filter(r => r.name.toLowerCase().includes(searchString));
+ const newResults = bookmarksAndServices.filter(r => r.name.toLowerCase().includes(searchString));
setResults(newResults);
if (newResults.length) {
setCurrentItemIndex(0);
}
}
- }, [searchString])
+ }, [searchString, bookmarksAndServices])
const [hidden, setHidden] = useState(true);
@@ -65,38 +65,35 @@ export default function HomepageSearch({bookmarks, services, searchString, setSe
!hidden && isOpen && "opacity-100",
!isOpen && "opacity-0",
)} role="dialog" aria-modal="true">
-
+
-
-
0 && "rounded-t-md",
- results.length === 0 && "rounded-md",
- "w-full p-4 m-0 border-0 border-b border-slate-700 focus:border-slate-700 focus:outline-0 focus:ring-0 text-sm md:text-xl text-theme-700 dark:text-theme-200 bg-theme-60 dark:bg-theme-800"
- )} type="text" ref={searchField} value={searchString} onChange={handleSearchChange} onKeyDown={handleSearchKeyDown} />
-
-
+
+
0 && "rounded-t-md",
+ results.length === 0 && "rounded-md",
+ "w-full p-4 m-0 border-0 border-b border-slate-700 focus:border-slate-700 focus:outline-0 focus:ring-0 text-sm md:text-xl text-theme-700 dark:text-theme-200 bg-theme-60 dark:bg-theme-800"
+ )} type="text" ref={searchField} value={searchString} onChange={handleSearchChange} onKeyDown={handleSearchKeyDown} />
+ {results.length > 0 &&
}
+
);
}
diff --git a/src/pages/index.jsx b/src/pages/index.jsx
index 3b047e6e..efedf83d 100644
--- a/src/pages/index.jsx
+++ b/src/pages/index.jsx
@@ -161,11 +161,6 @@ const headerStyles = {
clean: "m-4 mb-0 sm:m-8 sm:mb-0",
};
-function handleChange(event) {
- // this.setState({value: event.target.value});
- console.log(event);
-}
-
function Home({ initialSettings }) {
const { i18n } = useTranslation();
const { theme, setTheme } = useContext(ThemeContext);
@@ -179,6 +174,8 @@ function Home({ initialSettings }) {
const { data: services } = useSWR("/api/services");
const { data: bookmarks } = useSWR("/api/bookmarks");
const { data: widgets } = useSWR("/api/widgets");
+
+ const bookmarksAndServices = [...bookmarks.map(bg => bg.bookmarks).flat(), ...services.map(sg => sg.services).flat()]
useEffect(() => {
if (settings.language) {
@@ -198,10 +195,7 @@ function Home({ initialSettings }) {
const [searchString, setSearchString] = useState("");
useEffect(() => {
- document.addEventListener('keydown', handleKeyDown);
-
function handleKeyDown(e) {
- console.log(e.target.tagName, e.key, e);
if (e.target.tagName === "BODY") {
if (String.fromCharCode(e.keyCode).match(/(\w|\s)/g) && !(e. altKey || e.ctrlKey || e.metaKey || e.shiftKey)) {
setSearching(true);
@@ -212,6 +206,8 @@ function Home({ initialSettings }) {
}
}
+ document.addEventListener('keydown', handleKeyDown);
+
return function cleanup() {
document.removeEventListener('keydown', handleKeyDown);
}
@@ -240,7 +236,7 @@ function Home({ initialSettings }) {
headerStyles[initialSettings.headerStyle || "underlined"]
)}
>
-
+
{widgets && (
<>
{widgets