From 75e0d1bb42ed1cf714707fa14e151eddcb5c1ec4 Mon Sep 17 00:00:00 2001 From: Nate Kelley Date: Tue, 7 Oct 2025 09:22:02 -0600 Subject: [PATCH] set content --- .../SearchModalContent.stories.tsx | 8 +++-- .../search/SearchModal/SearchModalContent.tsx | 9 +++--- .../SearchModal/SearchModalContentItems.tsx | 29 +++++++++++++++++-- .../search/SearchModal/search-modal.types.ts | 4 +-- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/apps/web/src/components/ui/search/SearchModal/SearchModalContent.stories.tsx b/apps/web/src/components/ui/search/SearchModal/SearchModalContent.stories.tsx index 2ca1fa881..c80702429 100644 --- a/apps/web/src/components/ui/search/SearchModal/SearchModalContent.stories.tsx +++ b/apps/web/src/components/ui/search/SearchModal/SearchModalContent.stories.tsx @@ -97,16 +97,16 @@ const createMockSearchItems = (includeSecondary: boolean): SearchItems[] => [ export const Default: Story = { args: { searchItems: createMockSearchItems(false), - onSearchChange: fn(), + onChangeValue: fn(), onSelect: fn(), onViewSearchItem: fn(), - defaulSearchValue: 'it', emptyState: 'No results found', placeholder: 'Search for something', filterContent:
Filter
, filterDropdownContent:
Filter Dropdown
, }, render: (args) => { + const [searchValue, setSearchValue] = useState(''); const [addInSecondaryLabel, setAddInSecondaryLabel] = useState(false); const [open, setOpen] = useState(false); const [secondaryContent, setSecondaryContent] = useState(null); @@ -128,8 +128,10 @@ export const Default: Story = { {...args} searchItems={searchItems} onViewSearchItem={onViewSearchItem} - onSearchChange={() => { + value={searchValue} + onChangeValue={(v) => { setOpen(false); + setSearchValue(v); }} openSecondaryContent={open} secondaryContent={secondaryContent} diff --git a/apps/web/src/components/ui/search/SearchModal/SearchModalContent.tsx b/apps/web/src/components/ui/search/SearchModal/SearchModalContent.tsx index 93ba48f35..96d687c6b 100644 --- a/apps/web/src/components/ui/search/SearchModal/SearchModalContent.tsx +++ b/apps/web/src/components/ui/search/SearchModal/SearchModalContent.tsx @@ -11,15 +11,15 @@ import { useViewSearchItem } from './useViewSearchItem'; export const SearchModalContent = ({ searchItems, - onSearchChange, + onChangeValue, onSelect, onViewSearchItem, emptyState, - defaulSearchValue = '', filterContent, placeholder, filterDropdownContent, loading, + value: searchValue, secondaryContent, openSecondaryContent, }: SearchModalContentProps) => { @@ -27,12 +27,10 @@ export const SearchModalContent = ({ searchItems, onViewSearchItem, }); - const [searchValue, setSearchValue] = useState(defaulSearchValue); const isCommandKeyPressedRef = useRef(false); const onSearchChangePreflight = (searchValue: string) => { - setSearchValue(searchValue); - onSearchChange(searchValue); + onChangeValue(searchValue); }; const handleKeyDownGlobal = (e: React.KeyboardEvent) => { @@ -62,6 +60,7 @@ export const SearchModalContent = ({ onValueChange={setFocusedValue} onKeyDown={handleKeyDownGlobal} onKeyUp={handleKeyUpGlobal} + shouldFilter={true} > ({ onSelectGlobal, }: Pick, 'searchItems' | 'onViewSearchItem'> & CommonProps) => { return ( - + {searchItems.map((item, index) => ( ({ }; const SearchItemSeperatorComponent = ({ item: _item }: { item: SearchItemSeperator }) => { - return ; + const hasResults = useCommandState((x) => x.filtered.count) > 0; + + return ( +
+ ); }; diff --git a/apps/web/src/components/ui/search/SearchModal/search-modal.types.ts b/apps/web/src/components/ui/search/SearchModal/search-modal.types.ts index 75ebf0129..8cb0e1b4a 100644 --- a/apps/web/src/components/ui/search/SearchModal/search-modal.types.ts +++ b/apps/web/src/components/ui/search/SearchModal/search-modal.types.ts @@ -30,11 +30,11 @@ export type SearchItems = | SearchItemSeperator; export type SearchModalContentProps = { - defaulSearchValue?: string; + value: string; filterDropdownContent?: React.ReactNode; filterContent?: React.ReactNode; searchItems: SearchItems[]; - onSearchChange: (searchValue: string) => void; + onChangeValue: (searchValue: string) => void; onSelect: (item: SearchItem, modifier: 'select' | 'navigate') => void; onViewSearchItem: (item: SearchItem) => void; emptyState?: React.ReactNode | string;