From 45937130428ec8afd4a127481304714594f3b99a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Thu, 14 May 2026 20:47:08 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20ObjektSelector=20=E2=80=93=20Dropdown?= =?UTF-8?q?=20bleibt=20nach=20Auswahl=20offen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mehrere Objekte können ohne Schließen des Dropdowns ausgewählt werden. Fokus kehrt nach jeder Auswahl ins Suchfeld zurück. Co-Authored-By: Claude Sonnet 4.6 --- components/ObjektSelector.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/ObjektSelector.tsx b/components/ObjektSelector.tsx index 616c11c..4eaf393 100644 --- a/components/ObjektSelector.tsx +++ b/components/ObjektSelector.tsx @@ -13,6 +13,7 @@ export default function ObjektSelector({ selected, onChange }: Props) { const [search, setSearch] = useState(''); const [dropdownOpen, setDropdownOpen] = useState(false); const wrapperRef = useRef(null); + const inputRef = useRef(null); useEffect(() => { fetch('/api/objekte') @@ -45,7 +46,7 @@ export default function ObjektSelector({ selected, onChange }: Props) { function add(obj: ObjektOption) { onChange([...selected, { ID: obj.ID, Name: obj.Name }]); setSearch(''); - setDropdownOpen(false); + inputRef.current?.focus(); } function addNew(name: string) { @@ -58,7 +59,7 @@ export default function ObjektSelector({ selected, onChange }: Props) { onChange([...selected, { ID: null, Name: trimmed }]); } setSearch(''); - setDropdownOpen(false); + inputRef.current?.focus(); } function remove(name: string) { @@ -98,6 +99,7 @@ export default function ObjektSelector({ selected, onChange }: Props) {
{ setSearch(e.target.value); setDropdownOpen(true); }} @@ -124,7 +126,7 @@ export default function ObjektSelector({ selected, onChange }: Props) { onClick={() => addNew(searchTrimmed)} className="w-full text-left px-4 py-2 text-sm text-blue-700 hover:bg-blue-50 active:bg-blue-100 border-t border-gray-200 font-medium" > - + „{searchTrimmed}" hinzufügen + + „{searchTrimmed}“ hinzufügen )}