From 0dd8fa67d714968899d9d34ecf3a409ad5f5fca1 Mon Sep 17 00:00:00 2001 From: tesol2y090 Date: Sat, 15 Mar 2025 22:49:34 +0700 Subject: [PATCH] feat: add place holder --- src/components/SpaceFinder.tsx | 91 ++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/src/components/SpaceFinder.tsx b/src/components/SpaceFinder.tsx index cf0743b..fba457d 100644 --- a/src/components/SpaceFinder.tsx +++ b/src/components/SpaceFinder.tsx @@ -1,9 +1,9 @@ -import type { Space } from '@w3ui/react' +import type { Space } from "@w3ui/react" -import React, { Fragment, useState } from 'react' -import { Combobox, Transition } from '@headlessui/react' -import { ChevronUpDownIcon } from '@heroicons/react/20/solid' -import { shortenDID } from '@/lib' +import React, { Fragment, useState } from "react" +import { Combobox, Transition } from "@headlessui/react" +import { ChevronDownIcon } from "@heroicons/react/20/solid" +import { shortenDID } from "@/lib" interface SpaceFinderProps { spaces: Space[] @@ -12,22 +12,22 @@ interface SpaceFinderProps { className?: string } -export function SpaceFinder ({ +export function SpaceFinder({ spaces, selected, setSelected, - className = '' + className = "", }: SpaceFinderProps): JSX.Element { - const [query, setQuery] = useState('') + const [query, setQuery] = useState("") const filtered = - query === '' + query === "" ? spaces : spaces.filter((space: Space) => - (space.name || space.did()) - .toLowerCase() - .replace(/\s+/g, '') - .includes(query.toLowerCase().replace(/\s+/g, '')) - ) + (space.name || space.did()) + .toLowerCase() + .replace(/\s+/g, "") + .includes(query.toLowerCase().replace(/\s+/g, "")) + ) return (
@@ -36,44 +36,51 @@ export function SpaceFinder ({ onChange={setSelected} by={(a, b) => a?.did() === b?.did()} > -
-
+
+
space.name || shortenDID(space.did())} - onChange={(event) => { setQuery(event.target.value) }} + className="w-full border-none py-2 pl-3 pr-10 text-sm text-gray-900" + displayValue={(space: Space) => + space.name || shortenDID(space.did()) + } + onChange={(event) => { + setQuery(event.target.value) + }} + placeholder="Select your space" /> - -
{ setQuery('') }} + leave="transition ease-in duration-100" + leaveFrom="opacity-100" + leaveTo="opacity-0" + afterLeave={() => { + setQuery("") + }} > - {filtered.length === 0 && query !== '' - ? ( -
+ {filtered.length === 0 && query !== "" ? ( +
(╯°□°)╯︵ ┻━┻
- ) - : ( - filtered.map((space) => ( + ) : ( + filtered.map((space) => ( `relative select-none py-2 pl-9 pr-4 ${ - active ? 'bg-hot-yellow-light cursor-pointer text-hot-red' : 'text-black' + active + ? "bg-hot-yellow-light cursor-pointer text-hot-red" + : "text-black" }` } value={space} @@ -82,27 +89,25 @@ export function SpaceFinder ({ <> {space.name || shortenDID(space.did())} - {selected - ? ( + {selected ? ( - ) - : null} + ) : null} )} - )) - )} + )) + )}