UNPKG

list-box-svelte

Version:

A flexible and customizable dropdown component built using Svelte.

111 lines (80 loc) 2.62 kB
# 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!