1.1.1 • Published 3 years ago
fully-customizable-select v1.1.1
Пакет с селектом, который вы можете стилизовать в соответствии с вашими потребностями.
Установка:
npm install fully-customizable-select --save-devor
yarn add -D fully-customizable-selectИспользование :
import React, { useState } from 'react';
import Select from 'fully-customizable-select';
const options = [
{ value: 'blue', label: 'Blue' },
{ value: 'red', label: 'Red' },
{ value: 'yellow', label: 'Yellow' },
// Will display as a group separator
{ value: 'green', label: 'Green', groupLabel: true },
{
value: 'orange',
label: 'Orange',
onClick: (val: string) => {
// Will not call the internal logic of clicking on the select element, only the passed callback
console.log(val);
},
},
{ value: 'pink', label: 'pink' },
{ value: 'purple', label: 'Purple' },
{ value: 'grey', label: 'Grey' },
];
export default function App() {
const [selectedOption, setSelectedOption] = useState(null);
return (
<div className='App'>
<Select defaultValue={selectedOption} onChange={setSelectedOption} options={options} />
</div>
);
}Base Props
customInput?- Компонент, для переопределение базового компонента инпута для селектаplaceholder?- изменить текст, отображаемый, когда не выбран ни один пунктoptions- пункты для отображения в меню селектаonChange?- подписаться на события измененийclassName- передать общий класс на весь контроллoptionsClassName- передать общий класс на выпадающее меню с пунктамиselectedValue- изначально выбранное значение, или для реализации кастомной логикиonClickу элементов списка
customInput Props
Для того, чтобы переопределить базовый компонент контролла, можно передать свой, но у него должны быть следующие пропсы:
value?- Строка со значением, которе надо отобразитьonClick?- обработка логики при нажатииopen?- статус открыто / закрыто
options type
Элементы, которые могут быть в options имеют следующий тип:
{
groupLabel?: boolean;
value: T;
label: string;
onClick?: (value: T) => void;
customOption?: React.FC<SelectOptionProps<T>>;
}groupLabel?- Если true - то отобразится толькоlabelв качестве разделителя группыvalue- значение пункта спискаlabel- строка для отображения пункта спискаonClick?- обработка кастомной логики при нажатии, если передана, то нужно выноситьselectedValueво внешний стейт и изменять в этом обработчикеcustomOption?- можно передать кастомный компонент вместо дефолтного элемента списка
customOption Props
Для того, чтобы переопределить базовый компонент пункта списка, можно передать свой, но у него должны быть пропсы, описанные выше в options type.