form-selection.js 1.56 KB
import { extend } from '../vue'

// @vue/component
export const formSelectionMixin = extend({
  computed: {
    selectionStart: {
      // Expose selectionStart for formatters, etc
      cache: false,
      /* istanbul ignore next */
      get() {
        return this.$refs.input.selectionStart
      },
      /* istanbul ignore next */
      set(val) {
        this.$refs.input.selectionStart = val
      }
    },
    selectionEnd: {
      // Expose selectionEnd for formatters, etc
      cache: false,
      /* istanbul ignore next */
      get() {
        return this.$refs.input.selectionEnd
      },
      /* istanbul ignore next */
      set(val) {
        this.$refs.input.selectionEnd = val
      }
    },
    selectionDirection: {
      // Expose selectionDirection for formatters, etc
      cache: false,
      /* istanbul ignore next */
      get() {
        return this.$refs.input.selectionDirection
      },
      /* istanbul ignore next */
      set(val) {
        this.$refs.input.selectionDirection = val
      }
    }
  },
  methods: {
    /* istanbul ignore next */
    select() {
      // For external handler that may want a select() method
      this.$refs.input.select(...arguments)
    },
    /* istanbul ignore next */
    setSelectionRange() {
      // For external handler that may want a setSelectionRange(a,b,c) method
      this.$refs.input.setSelectionRange(...arguments)
    },
    /* istanbul ignore next */
    setRangeText() {
      // For external handler that may want a setRangeText(a,b,c) method
      this.$refs.input.setRangeText(...arguments)
    }
  }
})