list-box-svelte
Version:
A flexible and customizable dropdown component built using Svelte.
111 lines (80 loc) • 2.62 kB
Markdown
# Svelte Dropdown Component
A flexible and customizable dropdown component built using Svelte.
## Table of Contents
- [Installation](#installation)
- [Usage](#usage)
- [Props](#props)
- [Events](#events)
- [Styling](#styling)
- [Examples](#examples)
- [Contributing](#contributing)
- [License](#license)
## Installation
Install the package using npm:
```bash
npm install list-box-svelte
```
## Usage
Import the `Dropdown` component into your Svelte file:
```javascript
import Dropdown from 'list-box-svelte';
```
Use it within your Svelte template:
```html
<Dropdown items={items} bind:selected={selected}>
<span slot="trigger" let:selected>{selected}</span>
<span slot="item" let:item>{item}</span>
</Dropdown>
```
## Props
- **items**: Array of items to populate the dropdown.
- **toggle**: Boolean to control dropdown visibility.
- **value**: Current value of the dropdown.
- **isSearch**: Boolean to enable/disable search functionality.
- **defaultSelectedIndex**: Index of the default selected item.
## Events
- **select**: Event dispatched when an item is selected.
Usage example:
```html
<script>
function handleSelect(item) {
console.log('Selected item:', item);
}
</script>
<Dropdown items={items} on:select={handleSelect}>
<!-- ... -->
</Dropdown>
```
## Styling
The dropdown component can be customized using CSS variables or by modifying the component's internal styles.
CSS classes:
- `.dropdown`: Wrapper class for the dropdown.
- `.dropdown ul`: Styling for the dropdown list.
- `.dropdown ul li`: Styling for individual list items.
## Examples
### Basic Example
```html
<Dropdown items={['Option 1', 'Option 2', 'Option 3']} on:select={handleSelect}>
<span slot="trigger" let:selected>{selected}</span>
<span slot="item" let:item>{item}</span>
</Dropdown>
```
### Example with Search
```html
<Dropdown items={countries} isSearch on:select={handleSelect}>
<span slot="trigger" let:selected>{selected ? selected.name : 'Select a country'}</span>
<span slot="item" let:item>{item.name}</span>
</Dropdown>
```
## Contributing
Contributions are welcome! To contribute to this project, follow these steps:
1. Fork the repository.
2. Create a new branch (`git checkout -b feature`)
3. Make your changes.
4. Commit your changes (`git commit -am 'Add new feature'`)
5. Push to the branch (`git push origin feature`)
6. Create a Pull Request.
## License
This project is licensed under the [MIT License](LICENSE).
---
Feel free to add more sections or elaborate on each section based on your specific component's features and requirements!