UNPKG

vue-sanitize

Version:

Whitelist-based HTML sanitizer for Vue.js apps.

131 lines (92 loc) 2.9 kB
# vue-sanitize Whitelist-based HTML sanitizer (sanitize-html) for Vue.js apps. <p align="center"> <a href="LICENSE"> <img src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square" alt="Software License" /> </a> <a href="https://npmjs.org/package/vue-sanitize"> <img src="https://img.shields.io/npm/v/vue-sanitize.svg?style=flat-square" alt="Packagist" /> </a> <a href="https://github.com/daichirata/vue-sanitize/releases"> <img src="https://img.shields.io/github/release/daichirata/vue-sanitize.svg?style=flat-square" alt="Latest Version" /> </a> <a href="https://github.com/daichirata/vue-sanitize/issues"> <img src="https://img.shields.io/github/issues/daichirata/vue-sanitize.svg?style=flat-square" alt="Issues" /> </a> </p> ## Note We should always sanitize user input values on the server. Do sanitize with Vue only for necessary cases (e.g markdown preview). ## Install ``` npm install --save vue-sanitize ``` or ``` yarn add vue-sanitize ``` ## Usage Register the plugin ``` js import VueSanitize from "vue-sanitize"; Vue.use(VueSanitize); ``` You can pass default options too: ``` js defaultOptions = { allowedTags: ['a', 'b'], allowedAttributes: { 'a': [ 'href' ] } }; Vue.use(VueSanitize, defaultOptions); ``` Use it in your components: ``` js <template> <div contenteditable="true" @paste="sanitize"></div> </template> <script> export default { methods: { sanitize(event) { event.preventDefault(); const html = this.$sanitize(event.clipboardData.getData('text/html')); //or //const html = this.$sanitize( // event.clipboardData.getData('text/html'), // { // allowedTags: ['b', 'br'] // } //); document.execCommand('insertHTML', false, (html)); } }, } </script> ``` ## API ### `Vue.use(VueSanitize[, defaultOptions])` #### options * Type: `Object` This plugin is dependent on [sanitize-html](https://github.com/punkave/sanitize-html). For details, see here https://github.com/punkave/sanitize-html#readme. ### `this.$sanitize(diarty[, options])` #### diarty * Type: `String` * Required: `true` #### options * Type: `Object` If you don't pass an options, the default options will be used. #### `VueSanitize.defaults` Return `sanitizeHtml.defaults`. ## Change log Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently. ## Security If you discover any security related issues, please email daichirata@gmail.com instead of using the issue tracker. ## Contributing 1. Fork it! 2. Create your feature branch: `git checkout -b my-new-feature` 3. Commit your changes: `git commit -am 'Add some feature'` 4. Push to the branch: `git push origin my-new-feature` 5. Submit a pull request :D ## License The MIT License (MIT). Please see [License File](LICENSE.md) for more information.