MCPcopy Create free account
hub / github.com/HelloCSV/HelloCSV / Select

Function Select

src/components/Select.tsx:39–229  ·  view source on GitHub ↗
({
  value,
  options,
  onChange,
  onClose,
  multiple = false,
  compareFunction = (a, b) => a === b,
  clearable = false,
  searchable = false,
  placeholder,
  classes,
  displayPlaceholderWhenSelected = false,
  ...props
}: Props<T>)

Source from the content-addressed store, hash-verified

37}
38
39export default function Select<T>({
40 value,
41 options,
42 onChange,
43 onClose,
44 multiple = false,
45 compareFunction = (a, b) => a === b,
46 clearable = false,
47 searchable = false,
48 placeholder,
49 classes,
50 displayPlaceholderWhenSelected = false,
51 ...props
52}: Props<T>) {
53 const { t } = useTranslations();
54 const [query, setQuery] = useState('');
55
56 const isSelected = (valueToCheck: T) => {
57 if (multiple && Array.isArray(value)) {
58 return value.some((selected) => compareFunction(selected, valueToCheck));
59 }
60 return compareFunction(value as T, valueToCheck);
61 };
62
63 const handleChange = (selected: T | T[]) => {
64 setQuery('');
65 if (multiple) {
66 const selectedArray = Array.isArray(selected) ? selected : [selected];
67 onChange(selectedArray);
68 } else {
69 onChange(selected as T);
70 }
71 };
72
73 const clear = () => {
74 setQuery('');
75 if (multiple) {
76 onChange([]);
77 } else {
78 onChange(null);
79 }
80 };
81
82 const selectedOptions = options.filter((option) => isSelected(option.value));
83 const baseDisplayValue = selectedOptions.map((o) => o.label).join(', ');
84
85 const filteredOptions =
86 query && searchable
87 ? options.filter((option) =>
88 String(option.label).toLowerCase().includes(query.toLowerCase())
89 )
90 : options;
91
92 const placeholderValue =
93 placeholder ?? t('components.select.optionPlaceholder');
94
95 const getDisplayValue = () => {
96 if (searchable) {

Callers

nothing calls this directly

Calls 5

useTranslationsFunction · 0.90
isSelectedFunction · 0.85
tFunction · 0.85
clearFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected