import { Search, X } from 'lucide-react' import { SetStateAction } from 'react' import { SpecificFilterColumn } from './Users.constants' const getSearchPlaceholder = (column: SpecificFilterColumn): string => { switch (column) { case 'id': return 'Search by user ID' case 'email': return 'Search by email' case 'name': return 'Search by name' case 'phone': return 'Search by phone' case 'freeform': return 'Search by user ID, email, phone or name' default: return 'Search users...' } } import { Button, cn, Select_Shadcn_, SelectContent_Shadcn_, SelectGroup_Shadcn_, SelectItem_Shadcn_, SelectSeparator_Shadcn_, SelectTrigger_Shadcn_, SelectValue_Shadcn_, Tooltip, TooltipContent, TooltipTrigger, } from 'ui' import { Input } from 'ui-patterns/DataInputs/Input' interface UsersSearchProps { search: string searchInvalid: boolean specificFilterColumn: SpecificFilterColumn setSearch: (value: SetStateAction) => void setFilterKeywords: (value: string) => void setSpecificFilterColumn: (value: SpecificFilterColumn) => void improvedSearchEnabled?: boolean } export const UsersSearch = ({ search, searchInvalid, specificFilterColumn, setSearch, setFilterKeywords, setSpecificFilterColumn, improvedSearchEnabled = false, }: UsersSearchProps) => { return (
setSpecificFilterColumn(v as typeof specificFilterColumn)} > User ID Email address {improvedSearchEnabled && ( Name )} Phone number {!improvedSearchEnabled && ( <> Unified search Search by all columns at once, including mid-string search. May impact database performance if you have many users. )} 1 && 'pr-6' )} placeholder={getSearchPlaceholder(specificFilterColumn)} value={search} onChange={(e) => { const value = e.target.value.replace(/\s+/g, '').toLowerCase() setSearch(value) }} onKeyDown={(e) => { if (e.code === 'Enter' || e.code === 'NumpadEnter') { if (!searchInvalid) setFilterKeywords(search.trim().toLocaleLowerCase()) } }} actions={ search ? (
) }