carlmathisen / vue-contenteditable

This plugin provides a ``<contenteditable/>`` element supporting ``v-model``. It also provides some (optional) features, like preventing html input / paste or new lines.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

vue-contenteditable

This plugin provides a <contenteditable/> element supporting v-model. It also provides some (optional) features, like preventing html input / paste or new lines.

It is inpired by the nice (but limited by design) https://github.com/asconwe/vue-contenteditable-directive .

Contrary to vue-contenteditable-directive, this plugin has full support of v-model reactivity.

Should you use a content editable ?

The response is generally NO.

But... there are edge cases where neither <input/> nor <textarea> could suit, 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

In your main.js :

(Re)build

The needed files are already provided in dist/, but if you want to re build, simlply run :

npm run build

Directely in html

Usage

Where you need a contenteditable element :

Props

tag

String Html element type (p, div...)

v-model

v-model as usually used with <input/> and <textarea/>

:contenteditable

(Default : true) Forwarded to DOM's contenteditable.

noHTML

(Default : true) Prevent insertion (either typed or pasted) of html text

noNL

(Default : false) Prevent insertion of new-lines. Also activate returned event emission

v-on:...

All comon input DOM events are forwarded, so that you can use v-on as usual.

Events

returned

When the user press :kbd:Return and noNL is set, then it emits the returned 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 ! :)

About

This plugin provides a ``<contenteditable/>`` element supporting ``v-model``. It also provides some (optional) features, like preventing html input / paste or new lines.

License:MIT License


Languages

Language:Vue 75.8%Language:JavaScript 24.2%