Search

import { Search } from '@megafon/ui-core';
Код DemoSearchWrapper
const DemoSearchWrapper: React.FC<IDemoSearchWrapperProps> = ({ children }) => {
const [value, setValue] = React.useState('');
const [items, setItems] = React.useState([]);
const handleChange = React.useCallback((query: string) => {
if (!query) {
return;
}
setItems((oldItems) => [...oldItems, query]);
}, [items, setItems]);
return (
<div>
<p style={{ marginTop: 0 }}>Value: {value}</p>
{children({ onChange: handleChange, onSubmit: setValue, items: items, chosenValue: value })}
</div>
);
};

Тип отображения

Визуальное отображение аналгично компоненту TextField (по умолчанию)

Компактное отображение

иконка поиска расположена слева, добавлена возможность очистить поле по клику на крестик

Без иконки (только для type=textfield)

Заголовок и подсказка

Установлен только label

Установлен только placeholder

Установлены и label, и placeholder

Выключенное состояние

Установлено значение по умолчанию

Обработчики ввода

Value:

Value:

Эмулирование получения данных

Value:

Обязательное поле

Дополнительный текст снизу

Валидация

Кастомизированный список результатов поиска

Код DemoSearchCustomItemsWrapper
const DemoSearchCustomItemsWrapper: React.FC<IDemoSearchCustomItemsWrapper> = ({ children }) => {
const [value, setValue] = React.useState<string>('');
const getContent = React.useCallback((index: number) => (
<div>
<div>
<b>ИП Баранник Александр Николаевич {index + 1}</b>
</div>
<div>
<b>ИНН: 503209463031</b>
</div>
<div>Московская обл, Одинцовский р-н, г Одинцово</div>
</div>
), []);
const items = React.useMemo(() => (
new Array(5).fill('').map((_, i) => ({
value: `ИП Баранник Александр Николаевич ${i + 1}`,
searchView: getContent(i),
}))
), []);
return <div>{children({ value, onSubmit: setValue, items })}</div>;
};

Индикатор загрузки

Список результатов поиска с "Ничего не найдено"

Список результатов поиска с "Ничего не найдено" и "Популярные действия"