From ab8503d87cbfcda582058617beb72d0f9936fc56 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sat, 17 Feb 2024 22:27:01 -0800 Subject: [PATCH] Even better dropdown filtering --- .../components/GrpcConnectionSetupPane.tsx | 2 +- src-web/components/core/Dropdown.tsx | 55 ++++++++----------- tailwind.config.cjs | 1 + 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/src-web/components/GrpcConnectionSetupPane.tsx b/src-web/components/GrpcConnectionSetupPane.tsx index bd7b6351..53709ae4 100644 --- a/src-web/components/GrpcConnectionSetupPane.tsx +++ b/src-web/components/GrpcConnectionSetupPane.tsx @@ -132,7 +132,6 @@ export function GrpcConnectionSetupPane({ const tabs: TabItem[] = useMemo( () => [ { value: 'message', label: 'Message' }, - { value: 'metadata', label: 'Metadata' }, { value: 'auth', label: 'Auth', @@ -149,6 +148,7 @@ export function GrpcConnectionSetupPane({ }, }, }, + { value: 'metadata', label: 'Metadata' }, ], [], ); diff --git a/src-web/components/core/Dropdown.tsx b/src-web/components/core/Dropdown.tsx index 7482fb8a..36999c8e 100644 --- a/src-web/components/core/Dropdown.tsx +++ b/src-web/components/core/Dropdown.tsx @@ -236,7 +236,7 @@ const Menu = forwardRef, MenuPro const isSpecial = e.ctrlKey || e.metaKey || e.altKey; if (isCharacter && !isSpecial) { e.preventDefault(); - setFilter((f) => f + e.key); + setFilter((f) => (f + e.key).trim()); setSelectedIndex(0); } else if (e.key === 'Backspace' && !isSpecial) { e.preventDefault(); @@ -356,10 +356,7 @@ const Menu = forwardRef, MenuPro }, [triggerShape, containerWidth]); const filteredItems = useMemo( - () => - items.filter( - (i) => filter === '' || getNodeText(i.label).toLowerCase().includes(filter.toLowerCase()), - ), + () => items.filter((i) => getNodeText(i.label).toLowerCase().includes(filter.toLowerCase())), [items, filter], ); @@ -425,42 +422,36 @@ const Menu = forwardRef, MenuPro - +
{filter}
)} {filteredItems.length === 0 && ( No matches )} - {items - .filter( - (i) => - filter === '' || - getNodeText(i.label).toLowerCase().includes(filter.toLowerCase()), - ) - .map((item, i) => { - if (item.type === 'separator') { - return ( - - {item.label} - - ); - } - if (item.hidden) { - return null; - } + {filteredItems.map((item, i) => { + if (item.type === 'separator') { return ( - + + {item.label} + ); - })} + } + if (item.hidden) { + return null; + } + return ( + + ); + })} )} diff --git a/tailwind.config.cjs b/tailwind.config.cjs index b180da0c..d30614ff 100644 --- a/tailwind.config.cjs +++ b/tailwind.config.cjs @@ -1,6 +1,7 @@ const plugin = require('tailwindcss/plugin'); const height = { + '2xs': '1.5rem', xs: '1.75rem', sm: '2.0rem', md: '2.5rem',