2
0
mirror of https://github.com/tenrok/vue-select.git synced 2026-05-17 02:29:37 +03:00
Files
vue-select/docs/guide/keydown.md
T
2019-10-25 18:47:33 -07:00

1.4 KiB
Raw Blame History

Customizing Keydown Behaviour


Vue Select provides the map-keydown Function prop to allow for customizing the components response to keydown events while the input has focus. Here's the default function definition:

/**
 * @param map {Object} Mapped keyCode to handlers { <keyCode>: <callback> }
 * @param vm {Vue/Component} Vue Select instance
 * @return {Object}
 */
(map, vm) => map,

By default, the prop is a noop returning the same object map object it receives. This object maps keyCodes to handlers: { <keyCode>: <callback> }. Modifying this object can override default functionality, or add handlers for different keys that the component doesn't normally listen for.

Example: Tag on comma and space

If I have a taggable input, and I want comma or space to 'tag' the current option, you could solve that with map-keydown. Since the tab button already creates tags, we can copy the handler for keyCode 9.

<template>
  <v-select taggable multiple no-drop :map-keydown="handlers"/>
</template>

<script>
export default {
  methods: {
    handlers (map, vm) {
      const createTag = e => {
        e.preventDefault();
        vm.typeAheadSelect();
        vm.searchEl.focus();
      };

      return {
        ...map, //  defaults
        32: createTag,  //  space
        188: createTag,  //  comma
      };
    },
  },
};
</script>