UNPKG

@stanislav-ernst/vue-bootstrap-select

Version:
203 lines (139 loc) 7.36 kB
# Vue Bootstrap Select Dropdown A simple **Vue.js 3** dropdown-select component project with an integrated search bar, based on Bootstrap CSS. This project provides a user-friendly dropdown with support for arrays, objects and dynamic configurations. ## Overview The **Vue Bootstrap Select Dropdown** is a component-based solution inspired by the original [bootstrap select](https://github.com/snapappointments/bootstrap-select/). This modern Vue.js version offers a lightweight, flexible, and extendable dropdown component. This project is a fork from the original Vue.js 2 [Sandalf/vue-bootstrap-select](https://github.com/Sandalf/vue-bootstrap-select) project which is no longer maintained. > [!IMPORTANT] > This component is no longer actively developed or maintained. > However, you are welcome to create a merge request or fork this project to customize it as needed. ### ✨ Features: - **Searchable:** Includes a search field for easier option filtering. - **Highly customizable:** Supports various data types (arrays or objects of strings). - **Reactive:** Works seamlessly with `v-model` directives for data binding. - **Accessibility:** Supports disabled options and user-friendly selection. - **Easy integration:** Built on Vue 3 and compatible with Bootstrap CSS. --- ## Requirements To use this component, the following requirements must be met: - **Vue.js 3** - **Node.js 20.15.1** for installation - **Bootstrap CSS 4 or 5** for styling --- ## Installation Install the package via **npm**: ```bash npm install @stanislav-ernst/vue-bootstrap-select --save ``` **Including styles:** In addition to JavaScript, you'll need to import the styles: ```javascript import "@stanislav-ernst/vue-bootstrap-select/dist/vue-bootstrap-select.css"; ``` --- ## Quick Usage ### Example with an Array of Objects Integrate the component into your Vue app: ```javascript import VueBootstrapSelect from "@stanislav-ernst/vue-bootstrap-select"; export default { name: "App", components: { VueBootstrapSelect, }, data() { return { options: [ { value: 1, text: "Option 1" }, { value: 2, text: "Option 2" }, ], selectedValue: null, }; }, }; ``` Include the component in your template: ```html <VueBootstrapSelect :options="options" v-model="selectedValue" /> ``` --- ## Configuration & Properties ### Available Properties | Property | Description | Type | Default Value | Acceptable Values | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ---------------------- | ------------------ | | `options` | List of dropdown values. | Array | `[]` | Strings or objects | | `searchable` | Enables search mode. | Boolean | `false` | `true`, `false` | | `showDefaultOption` | Sets the select title is set as an option. | Boolean | `false` | `true`, `false` | | `disabled` | Disables the dropdown. | Boolean | `false` | `true`, `false` | | `disabledProp` | Defines a property to disable specific options. If an option has this prop set to a truthy value it will disable the option. | String | `'disabled'` | - | | `labelNotFound` | Text displayed when no option is found in the search results. | String | `'No results matched'` | - | | `labelSearchPlaceholder` | Placeholder text for the search field. | String | `'Search'` | - | | `textProp` | Attribute of an object used as the displayed text value (for object arrays). | String | `'text'` | - | | `valueProp` | Attribute of an object used as the corresponding value (for object arrays). | String | `'value'` | - | | `labelTitle` | Text displayed when no option is selected and `showDefaultOption` is not set. | String | `'Nothing selected'` | - | | `descriptionProp` | Defines the keys used to show additional description for options. | Array | `["description"]` | - | | `modelValue` | The current value of the dropdown, bound with v-model, and synchronized with the selected option. | Object, String, Number | `null` | - | --- ### Examples #### Using an Array of Strings ```html <VueBootstrapSelect :options="['Option A', 'Option B']" /> ``` #### Using an Array of Objects with Custom Values ```html <VueBootstrapSelect :options="[{ value: 1, text: 'Option A' }, { value: 2, text: 'Option B' }]" /> ``` --- ## Development ### Run Dev Server: To run the project locally: ```bash npm run serve ``` ### Local Development Environment: This project has been tested with the following versions: - Node.js: **20.x** - Vue.js: **3.x** - NPM: **10.x** --- ## Component Preview ### Example Component Implementations: 1. **Array of Strings:** Create simple dropdown menus with string-based values. 2. **Array of Objects:** Enable object-based selections with custom labels and values. #### Code Examples: ```html <VueBootstrapSelect :options="['Apple', 'Banana', 'Grapes']" v-model="fruit" :searchable="true" /> <VueBootstrapSelect :options="[{ value: 1, text: 'German' }, { value: 2, text: 'English' }]" v-model="language" :searchable="true" :disabled="false" /> ``` --- ## Compatibility and Styles This component uses SCSS for styles. To ensure proper appearance, include the required Bootstrap CSS styles: ```bash npm install bootstrap ``` Import Bootstrap in your project: ```javascript import "bootstrap/dist/css/bootstrap.min.css"; ``` --- ## Contributing We welcome contributions! Please open pull requests or issues if you find bugs or have improvement suggestions. 1. Fork the repository. 2. Create a branch for your changes. 3. Test changes thoroughly in a development environment. 4. Open a pull request. --- ### License This project is licensed under the [MIT License](LICENSE).