Socket
Socket
Sign inDemoInstall

vs-autocomplete

Package Overview
Dependencies
199
Maintainers
1
Versions
46
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    vs-autocomplete

Nested-Autocomplete-Multiselect-Dropdown for Vue 3, refer GitHub branch [v2](https://github.com/sureshungarala/vue-components/tree/v2/vs-autocomplete) for usage and installation in Vue 2 <img src


Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Vs Autocomplete Dropdown

Nested-Autocomplete-Multiselect-Dropdown for Vue 3, refer GitHub branch v2 for usage and installation in Vue 2

  • Ability to single/multi-select
  • Ability to select same option from different groups/parents
  • A11y compliant
:film_projector: Demo for Vue3.
:film_projector: Demo for Vue2.
:rocket: Usage
<vs-autocomplete
  label="Select option(s)"
  :options="options"
  :multiple="true"
  :maxSelectableCount="4"
  :searchInputText="searchInputText"
  :searchOptionMatcher="optionMatcher"
  :keepMenuOpenOnRender="false"
  :compact="false"
  noSearchResultsText="No results found"
  labelHint="Select up to 4 options"
  v-model="selectedOptions"
  @open="onOpen"
  @close="onClose"
/>
:paperclip: Install
npm
 npm install vs-autocomplete@latest
yarn
 yarn add vs-autocomplete@latest
UMD
<script src="https://cdn.jsdelivr.net/npm/vs-autocomplete@latest/dist/vs-autocomplete.umd.min.js"></script>
OR
<script src="https://unpkg.com/vs-autocomplete@latest/dist/vs-autocomplete.umd.js"></script>

In Vue 2, UMD component is auto-registered globally.

In Vue 3, you need to either register the component globally by calling

app.component('vs-autocomplete', window.VsAutocomplete);

/* app is the Vue application instance(<App>). */

or

use it locally by registering it in the component.

components: {
  VsAutocomplete: window.VsAutocomplete,
}

:gear: Props
NameTypeDefaultRequiredDescription
optionsArray<option>[]trueOptions to be displayed in the dropdown
labelString-falseLabel of the option
multipleBooleanfalsefalseWhether to allow multiple selection
searchInputTextString''falseSearch input text to filter options
keepMenuOpenOnRenderBooleanfalsefalseWhether to keep the menu open on render
compactBooleanfalsefalseWhether to render the dropdown in compact mode
maxSelectableCountNumber0falseMaximum number of options that can be selected
noSearchResultsTextStringNo results foundfalseText to display when no search results are found
labelHintString-falseHint text to display below the label
searchOptionMatcher(searchInputText, option) => boolean() => {}falseCustom search option matcher function compares searchInputText against each option. If defined, it must return a boolean indicating match; otherwise, defaults to matching option labels.

NameTypeDescriptionPayload
v-modelArray<option>Emits the selected option(s)Selected options
open(HTMLDivElement, HTMLUListElement) => {}Emits when the dropdown-menu opensDropdown element & Menu element
close(HTMLDivElement, HTMLUListElement) => {}Emits when the dropdown-menu closesDropdown element & Menu element

:nut_and_bolt: Type option
NameTypeRequiredDescription
labelStringtrueLabel of the option
idAnyfalseUnique identifier for the option
valueAnyfalseValue of the option
disabledBooleanfalseWhether the option is disabled
selectedBooleanfalseWhether the option is selected
childrenArray<option>falseNested options

:nail_care: CSS Variables for Styling
Variable NameDescription
--primary-color Primary border color on the combobox
--background-colorBackground color of the option when focused or hovered
--hint-colorHint text color
--v-dropdown-widthWidth of the combobox
--max-widthMax width of the combobox
--box-shadowBox shadow of the combobox
--bezier-curveMenu toggle transition
--animation-delayTransition delay

:clipboard: options prop example
[
  {
    id: 1,
    label: 'Option 1',
    value: 'option1',
    children: [
      {
        id: 1.1,
        label: 'Option 1.1',
        value: 'option1.1',
        selected: true,
      },
      {
        id: 1.2,
        label: 'Option 1.2',
        value: 'option1.2',
      },
      {
        id: 1.3,
        label: 'Option 1.3',
        value: 'option1.3',
        children: [
          {
            id: 1.31,
            label: 'Option 1.3.1',
            value: 'option1.3.1',
          },
          {
            id: 1.32,
            label: 'Option 1.3.2',
            value: 'option1.3.2',
          },
        ],
      },
      {
        id: 1234,
        label: 'Option 1.4',
        value: 'option1.4',
      },
    ],
  },
  {
    id: 2,
    label: 'A long label. Should be truncated. Check in demo.(Option 2)',
    value: 'option2',
    selected: true,
    disabled: true,
  },
  {
    id: 3,
    label: 'A long label. Should be truncated. Check in demo.(Option 3)',
    value: 'option3',
    disabled: true,
    children: [
      {
        id: 3.1,
        label: 'Option 3.1',
        value: 'option3.1',
      },
      {
        id: 3.2,
        label: 'Option 3.2',
        value: 'option3.2',
      },
      {
        id: 3.3,
        label: 'Option 3.3',
        value: 'option3.3',
        children: [
          {
            id: 3.31,
            label: 'Option 3.3.1',
            value: 'option3.3.1',
          },
          {
            id: 3.32,
            label: 'Option 3.3.2',
            value: 'option3.3.2',
          },
        ],
      },
      {
        id: 4,
        label: 'Option 4.1',
        value: 'option4.1',
      },
    ],
  },
];

:bug: Feedback

If you find any issues, please create an issue here.

Keywords

FAQs

Last updated on 20 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc