From 43e63f739a7747d815fe9dbebdb870b585cf8727 Mon Sep 17 00:00:00 2001 From: Dmytro Kondakov Date: Mon, 14 Apr 2025 10:03:37 +0200 Subject: [PATCH] feat(search): enhance Search component with shortcuts and item modal - Added functionality to fetch and display global shortcuts in the Search component. - Introduced ItemModal for displaying detailed information about selected items. - Updated SearchCard components to improve layout and information presentation. - Enhanced user experience with better styling and accessibility features. --- frontend/bun.lockb | Bin 118673 -> 164224 bytes frontend/package.json | 86 +++++++++--------- frontend/src/Search.tsx | 45 +++++++-- .../src/components/item-modal/ItemModal.tsx | 24 ++++- .../search-card/SearchCardContact.tsx | 14 +-- .../search-card/SearchCardEvent.tsx | 11 ++- .../search-card/SearchCardLocation.tsx | 11 ++- .../components/search-card/SearchCardNote.tsx | 14 ++- 8 files changed, 133 insertions(+), 72 deletions(-) diff --git a/frontend/bun.lockb b/frontend/bun.lockb index eabe02523f11a9e07932ea5049f55e873b5c1c49..cc853681272c8d1a330e034733613b373cf4cfce 100755 GIT binary patch delta 49701 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 delta 19979 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 c3WZZ!E3f;?CQX%ovRZ~xvGB@Z => { @@ -110,6 +109,22 @@ export const Search = () => { }); }); + const [shortcut, setShortcut] = createSignal([]); + + async function getCurrentShortcut() { + try { + const res: string = await invoke("get_current_shortcut"); + console.log("DBG: ", res); + setShortcut(res?.split("+")); + } catch (err) { + console.error("Failed to fetch shortcut:", err); + } + } + + onMount(() => { + getCurrentShortcut(); + }); + return ( <>
@@ -174,9 +189,21 @@ export const Search = () => {
- footer +

+ Use{" "} + {shortcut().length > 0 + ? shortcut().join("+") + : "shortcut"}{" "} + globally to toggle and reload this window +

+ {selectedItem() && ( + setSelectedItem(null)} + /> + )} ); }; diff --git a/frontend/src/components/item-modal/ItemModal.tsx b/frontend/src/components/item-modal/ItemModal.tsx index 18215ed..8159ad5 100644 --- a/frontend/src/components/item-modal/ItemModal.tsx +++ b/frontend/src/components/item-modal/ItemModal.tsx @@ -1,7 +1,25 @@ -export const ItemModal = () => { +import { IconX } from "@tabler/icons-solidjs"; +import type { UserImage } from "../../network"; + +type Props = { + item: UserImage; + onClose: () => void; +}; + +export const ItemModal = (props: Props) => { return ( -
- ItemModal +
+
+

{props.item.data.Name}

+ +
+
+

+ {JSON.stringify(props.item.data, null, 2)} +

+
); }; diff --git a/frontend/src/components/search-card/SearchCardContact.tsx b/frontend/src/components/search-card/SearchCardContact.tsx index 817c06c..553f7f4 100644 --- a/frontend/src/components/search-card/SearchCardContact.tsx +++ b/frontend/src/components/search-card/SearchCardContact.tsx @@ -12,13 +12,15 @@ export const SearchCardContact = ({ item }: Props) => { return (
-
-

{data.Name}

- +
+ +

Contact

-

{data.PhoneNumber}

- -

{data.Email}

+

+ {data.Name.length > 0 ? data.Name : "Unknown 🐞"} +

+

Phone: {data.PhoneNumber}

+

Mail: {data.Email}

); }; diff --git a/frontend/src/components/search-card/SearchCardEvent.tsx b/frontend/src/components/search-card/SearchCardEvent.tsx index 69c2665..ba4837c 100644 --- a/frontend/src/components/search-card/SearchCardEvent.tsx +++ b/frontend/src/components/search-card/SearchCardEvent.tsx @@ -10,11 +10,14 @@ export const SearchCardEvent = ({ item }: Props) => { return (
-
-

{data.Name}

- +
+ +

Event

-

+

+ {data.Name.length > 0 ? data.Name : "Unknown 🐞"} +

+

Organized by {data.Organizer?.Name ?? "unknown"} on{" "} {data.StartDateTime ? new Date(data.StartDateTime).toLocaleDateString("en-US", { diff --git a/frontend/src/components/search-card/SearchCardLocation.tsx b/frontend/src/components/search-card/SearchCardLocation.tsx index faaebc3..7eb0f11 100644 --- a/frontend/src/components/search-card/SearchCardLocation.tsx +++ b/frontend/src/components/search-card/SearchCardLocation.tsx @@ -10,11 +10,14 @@ export const SearchCardLocation = ({ item }: Props) => { return (

-
-

{data.Name}

- +
+ +

Location

-

{data.Address}

+

+ {data.Name.length > 0 ? data.Name : "Unknown 🐞"} +

+

Address: {data.Address}

); }; diff --git a/frontend/src/components/search-card/SearchCardNote.tsx b/frontend/src/components/search-card/SearchCardNote.tsx index 7011c68..e60432b 100644 --- a/frontend/src/components/search-card/SearchCardNote.tsx +++ b/frontend/src/components/search-card/SearchCardNote.tsx @@ -1,4 +1,5 @@ import { Separator } from "@kobalte/core/separator"; +import SolidjsMarkdown from "solidjs-markdown"; import { IconNote } from "@tabler/icons-solidjs"; import type { UserImage } from "../../network"; @@ -12,11 +13,16 @@ export const SearchCardNote = ({ item }: Props) => { return (
-
-

{data.Name}

- +
+ +

Note

-

Note

+

+ {data.Name.length > 0 ? data.Name : "Unknown 🐞"} +

+

+ {data.Content} +

); };