1.0.6 • Published 1 year ago

@mail2gowthamganesan/techno-vue-treeselect v1.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

techno-vue-treeselect

npm Build Coverage npm monthly downloads jsDelivr monthly hits Known vulnerabilities License

A multi-select component with nested options support for Vue.js

Vue-Treeselect Screenshot

Features

  • Single & multiple select with nested options support
  • Fuzzy matching
  • Async searching
  • Delayed loading (load data of deep level options only when needed)
  • Keyboard support (navigate using Arrow Up & Arrow Down keys, select option using Enter key, etc.)
  • Rich options & highly customizable
  • Supports a wide range of browsers (see below)
  • RTL support

Requires Vue 2.2+

Getting Started

It's recommended to install vue-treeselect via npm, and build your app using a bundler like webpack.

npm install @mail2gowthamganesan/techno-vue-treeselect

This example shows how to integrate vue-treeselect with your Vue SFCs.

<!-- Vue SFC -->
<template>
  <div id="app">
    <treeselect v-model="value" :multiple="true" :options="options" />
  </div>
</template>

<script>
  // import the component
  import Treeselect from '@mail2gowthamganesan/vue-treeselect'
  // import the styles
  import '@mail2gowthamganesan/vue-treeselect/dist/vue-treeselect.css'

  export default {
    // register the component
    components: { Treeselect },
    data() {
      return {
        // define the default value
        value: null,
        // define options
        options: [ {
          id: 'a',
          label: 'a',
          // control checkbox show/hide
          checkBox: false,
          children: [ {
            id: 'aa',
            label: 'aa',
          }, {
            id: 'ab',
            label: 'ab',
          } ],
        }, {
          id: 'b',
          label: 'b',
        }, {
          id: 'c',
          label: 'c',
        } ],
      }
    },
  }
</script>

Props

NameType / DefaultDescription
allowClearingDisabledType: Boolean Default: falseWhether to allow resetting value even if there are disabled selected nodes.
allowSelectingDisabledDescendantsType: Boolean Default: falseWhen an ancestor node is selected/deselected, whether its disabled descendants should be selected/deselected. You may want to use this in conjunction with allowClearingDisabled prop.
alwaysOpenType: Boolean Default: falseWhether the menu should be always open.
appendToBodyType: Boolean Default: falseAppend the menu to <body />.
asyncType: Boolean Default: falseWhether to enable async search mode.
autoFocusType: Boolean Default: falseAutomatically focus the component on mount.
autoLoadRootOptionsType: Boolean Default: trueAutomatically load root options on mount. When set to false, root options will be loaded when the menu is opened.
autoDeselectAncestorsType: Boolean Default: falseWhen user deselects a node, automatically deselect its ancestors. Applies to flat mode only.
autoDeselectDescendantsType: Boolean Default: falseWhen user deselects a node, automatically deselect its descendants. Applies to flat mode only.
autoSelectAncestorsType: Boolean Default: falseWhen user selects a node, automatically select its ancestors. Applies to flat mode only.
autoSelectDescendantsType: Boolean Default: falseWhen user selects a node, automatically select its descendants. Applies to flat mode only.
backspaceRemovesType: Boolean Default: trueWhether Backspace removes the last item if there is no text input.
beforeClearAllType: Fn() 🡒 (Boolean | Promise) Default: () => trueFunction that processes before clearing all input fields. Return false to stop values being cleared.
branchNodesFirstType: Boolean Default: falseShow branch nodes before leaf nodes.
cacheOptionsType: Boolean Default: trueWhether to cache results of each search request for async search mode.
clearableType: Boolean Default: trueWhether to show an "×" button that resets value.
clearAllTextType: String Default:"Clear all"Title for the "×" button when :multiple="true".
clearOnSelectType: Boolean Default: Defaults to falsewhen :multiple="true"; always trueotherwise.Whether to clear the search input after selecting an option. Use only when :multiple="true". For single-select mode, it always clears the input after selecting regardless of the prop value.
clearValueTextType: String Default:"Clear value"Title for the "×" button.
closeOnSelectType: Boolean Default: trueWhether to close the menu after selecting an option. Use only when :multiple="true".
defaultExpandLevelType: Number Default: 0How many levels of branch nodes should be automatically expanded when loaded. Set Infinity to make all branch nodes expanded by default.
defaultOptionsType: Booleannode[] Default: falseThe default set of options to show before the user starts searching. Used for async search mode. When set to true, the results for search query as a empty string will be autoloaded.
deleteRemovesType: Boolean Default: trueWhether Delete removes the last item if there is no text input.
delimiterType: String Default:","Delimiter to use to join multiple values for the hidden field value.
flattenSearchResultsType: Boolean Default: falseWhether to flatten the tree when searching (sync search mode only). See here for example.
disableBranchNodesType: Boolean Default: falseWhether to prevent branch nodes from being selected. See here for example.
disabledType: Boolean Default: falseWhether to disable the control or not.
disableFuzzyMatchingType: Boolean Default: falseSet to true to disable the fuzzy matching functionality, which is enabled by default.
flatType: Boolean Default: falseWhether to enable flat mode or not. See here for detailed information.
instanceIdType: StringNumber Default: "<auto-incrementing number>$$"Will be passed with all events as the last param. Useful for identifying events origin.
joinValuesType: Boolean Default: falseJoins multiple values into a single form field with the delimiter (legacy mode).
limitType: Number Default: InfinityLimit the display of selected options. The rest will be hidden within the limitText string.
limitTextType: Fn(count) 🡒 String Default: count => `and ${count} more`Function that processes the message shown when selected elements pass the defined limit.
loadingTextType: String Default: "Loading..."Text displayed when loading options.
loadOptionsType: Fn({action, callback, parentNode?, instanceId}) 🡒 (voidPromise) Default:Used for dynamically loading options. See here for detailed information. Possible values of action: "LOAD_ROOT_OPTIONS", "LOAD_CHILDREN_OPTIONS" or "ASYNC_SEARCH". callback - a function that accepts an optional error argument parentNode - only presents when loading children options searchQuery - only presents when searching async options instanceId - eqauls to the value of instanceId prop you passed to vue-treeselect
matchKeysType: String[] Default: [ "label" ]Which keys of a node object to filter on.
maxHeightType: Number Default: 300Sets maxHeight style value of the menu.
multipleType: Boolean Default: falseSet true to allow selecting multiple options (a.k.a., multi-select mode).
nameType: String Default:Generates a hidden <input /> tag with this field name for html forms.
noChildrenTextType: String Default: "No sub-options."Text displayed when a branch node has no children.
noOptionsTextType: String Default: "No options available."Text displayed when there are no available options.
noResultsTextType: String Default: "No results found..."Text displayed when there are no matching search results.
normalizerType: Fn(node, instanceId) 🡒 node Default: node => nodeUsed for normalizing source data. See here for detailed information.
openDirectionType: String Default: "auto"By default ("auto"), the menu will open below the control. If there is not enough space, vue-treeselect will automatically flip the menu. You can use one of other four options to force the menu to be always opened to specified direction. Acceptable values: "auto", "below", "bottom", "above" or "top".
openOnClickType: Boolean Default: trueWhether to automatically open the menu when the control is clicked.
openOnFocusType: Boolean Default: falseWhether to automatically open the menu when the control is focused.
optionsType: node[] Default:Array of available options. See here to learn how to define them.
placeholderType: String Default: "Select..."Field placeholder, displayed when there's no value.
requiredType: Boolean Default: falseApplies HTML5 required attribute when needed.
retryTextType: String Default: "Retry?"Text displayed asking user whether to retry loading children options.
retryTitleType: String Default: "Click to retry"Title for the retry button.
searchableType:Boolean Default: trueWhether to enable searching feature or not.
searchNestedType: Boolean Default: falseSet true if the search query should search in all ancestor nodes too. See here for example.
searchPromptTextType: String Default: "Type to search..."Text tip to prompt for async search. Used for async search mode.
showCountType: Boolean Default: falseWhether to show a children count next to the label of each branch node. See here for example.
showCountOfType: String Default: "ALL_CHILDREN"Used in conjunction with showCount to specify which type of count number should be displayed. Acceptable values: "ALL_CHILDREN", "ALL_DESCENDANTS", "LEAF_CHILDREN" or "LEAF_DESCENDANTS".
showCountOnSearchType: Boolean Default:Whether to show children count when searching. Fallbacks to the value of showCount when not specified.
sortValueByType: String Default: "ORDER_SELECTED"In which order the selected options should be displayed in trigger & sorted in value array. Use only when :multiple="true". See here for example. Acceptable values: "ORDER_SELECTED", "LEVEL" or "INDEX".
tabIndexType: Number Default: 0Tab index of the control.
valueType: id|node|id[]|node[] Default:The value of the control. Should be id or node object when :multiple="false", or an array of id or node object when :multiple="true". Its format depends on the valueFormat prop. For most cases, just use v-model instead.
valueConsistsOfType: String Default:"BRANCH_PRIORITY"Which kind of nodes should be included in the value array in multi-select mode. See here for example. Acceptable values: "ALL", "BRANCH_PRIORITY", "LEAF_PRIORITY", "SECOND_LEAF_PRIORITY" or "ALL_WITH_INDETERMINATE".
valueFormatType: String Default:"id"Format of value prop. Note that, when set to "object", only id & label properties are required in each node object in value. Acceptable values: "id" or "object".
zIndexType: Number | String Default: 999z-index of the menu.
showTooTipType: Boolean Default: falseWhether to show Tooltip.

Documentation & Live Demo

Visit the website

Note: please use a desktop browser since the website hasn't been optimized for mobile devices.

Browser Compatibility

  • Chrome
  • Edge
  • Firefox
  • IE ≥ 9
  • Safari

It should function well on IE9, but the style can be slightly broken due to the lack of support of some relatively new CSS features, such as transition and animation. Nevertheless it should look 90% same as on modern browsers.

Contributing

  1. Fork & clone the repo
  2. Install dependencies by yarn or npm install
  3. Check out a new branch
  4. npm run dev & hack
  5. Make sure npm test passes
  6. Push your changes & file a pull request