1.1.1 • Published 1 year ago
fully-customizable-select v1.1.1
Пакет с селектом, который вы можете стилизовать в соответствии с вашими потребностями.
Установка:
npm install fully-customizable-select --save-dev
or
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
.