agr-custom-dropdown
v2.7.0
Published
A custom and modern dropdown list with a search bar, built in React
Downloads
10
Readme
A simple and customizable dropdown component built with React and TypeScript.
Features
- Searchable dropdown list with the input field
- Select an option with a click
- On change event
- Keyboard navigation using the arrow keys to move up and down the options
- Required field validation optionnel
- Required message optionnel
- Customizable styles
Installation
You can install the CustomDropdown component using npm:
npm install agr-custom-dropdown
or
yarn add agr-custom-dropdown
Usage
Here is a basic example of how to use the CustomDropdown component:
import React from "react";
import CustomDropdown from "./CustomDropdown";
const options = [
{ label: "Option 1", value: 1 },
{ label: "Option 2", value: 2 },
{ label: "Option 3", value: 3 }
];
const handleChange = (selectedOption) => {
console.log(selectedOption);
};
function App() {
return (
<div>
<CustomDropdown
options={options}
onChange={handleChange}
required={true}
requiredMessage="A option must be selected."
forceRequired={false}
placeholder="Select an option"
/>
</div>
);
}
export default App;
Keyboard Actions
- Use the up and down arrow keys to navigate the options.
- Press Enter to select the currently highlighted option.
- Press Esc to close the options dropdown.
Props
The CustomDropdown component takes the following props:
| Prop | Type | Required | Description
| :------------ |:---------------:| -----:| ------------:|
| options
| Option[]
| Yes | An array of objects representing the options in the dropdown list. Each object should have a label
and a value
property.
| onChange
| (selectedOption: Option) => void
| Yes | A callback function that is called when an option is selected. The selected option is passed as a parameter to the callback function.
| required
| boolean
| No | Indicates if the dropdown is required or not. If the property is present and is set to true, the dropdown will have a required class.
| requiredMessage
| string
| No | Message, if the property required is set to true (default 'this field is required')
| forceRequired
| boolean
| No | A flag indicating if the dropdown should always display the requiredMessage, even if an option has been selected.
| placeholder
| string
| No | The placeholder text to display in the input field (default 'Search or select options...')
Contributing
If you find any bugs or have any suggestions for improvements, feel free to open an issue or submit a pull request on the GitHub repository.
License
This component is open-source software licensed under the MIT License.