/vue-contenteditable-input

Vue.js Contenteditable directive with v-model, auto focus, preventing new line on enter, formatting html text to plain text etc.,

Primary LanguageVueMIT LicenseMIT

vue-contenteditable-input

This plugin provides support for contenteditable element supporting v-model. It also provides some additional (optional) features like autofocus, placeholder, preventing html input / paste or new lines.

vue-contenteditable-input has full support of v-model reactivity.

Should you use a content editable ?

The response is generally NO. But there are cases when neither <input/> nor <textarea> could suit your needs, for example when you need a dynamic object size to adapt to user input text size.

Installation

With a build system

$ npm install --save vue-contenteditable-input

To make the plugin available globally

In your main.js:

const VueContenteditableInput = require('vue-contenteditable-input')
Vue.use(VueContenteditableInput)

OR

To include only in specific components

import VueContenteditableInput from 'vue-contenteditable-input'

(Re)build

The required files are provided in `dist/` folder, but if you want to rebuild, simlply run :

npm run build

Directely in html

<script src="vue-contenteditable-input.min.js"></script>

Usage

When you need a contenteditable element:

<template>
  <vue-contenteditable-editable tag="div" placeholder="Enter content" :contenteditable="true" v-model="message" :disable-newline="true" @enter="enterPressed" :autofocus="true" />
</template>
 
<script>
export default {
  data() {
    return {
      message: ''
    }
  },
  methods : {
    enterPressed(value) {
      alert('Enter Pressed with: ', value);
    }
  }
}

Props

Name Type Default Value Description
tag String span
contenteditable Boolean true
input-ref String editable-input
v-model String ''
placeholder String ''
autofocus Boolean false
disable-newline Boolean false
format-text Boolean false

Events

enter When the user press :kbd:Return and disable-newline is set, then it emits the enter event with the current value (as String) as argument.

License

This code is provided as-is, under the terms of the MIT license (see License file for more details).

A link to the original sources and contribution / pull request are welcome if you enjoy / use / contribute to this module ! :)