# v-viewer Image viewer component for vue, supports rotation, scale, zoom and so on, based on [viewer.js](https://github.com/fengyuanchen/viewerjs) [![npm version](https://badge.fury.io/js/v-viewer.svg)](https://badge.fury.io/js/v-viewer) ## [Live demo](https://mirari.github.io/v-viewer/) ## Examples - [directive](https://codepen.io/mirari/pen/PePrVq) - [component](https://codepen.io/mirari/pen/PowNyEY) - [thumbnail & source](https://codepen.io/mirari/pen/LYENgMM) - [viewer callback](https://codepen.io/mirari/pen/ZwpGBO) - [hide img tags](https://codepen.io/mirari/pen/vjjXwj) - [filtered images](https://codepen.io/mirari/pen/vvPoQb) - [**click buttons to show different images**](https://codesandbox.io/s/v-viewer-zhezr) ## [中文文档](https://mirari.cc/2017/08/27/Vue%E5%9B%BE%E7%89%87%E6%B5%8F%E8%A7%88%E7%BB%84%E4%BB%B6v-viewer%EF%BC%8C%E6%94%AF%E6%8C%81%E6%97%8B%E8%BD%AC%E3%80%81%E7%BC%A9%E6%94%BE%E3%80%81%E7%BF%BB%E8%BD%AC%E7%AD%89%E6%93%8D%E4%BD%9C/) ## Migration from 0.x - The only change you have to make is to manually import the `.css` file: ``` import 'viewerjs/dist/viewer.css' ``` ## Installation Install from GitHub via NPM ```bash npm install v-viewer ``` ## Usage To use `v-viewer`, simply import it and the `css` file, and call `Vue.use()` to install. ```html ``` ### Support UMD #### Browser ```html ... ``` #### CommonJS ```javascript var VueViewer = require('VueViewer') ``` #### AMD ```javascript require(['VueViewer'], function (VueViewer) {}); ``` ### Usage of directive Just add the directive `v-viewer` to any element, then all `img` elements in it will be handled by `viewer`. You can set the options like this: `v-viewer="{inline: true}"` Get the element by selector and then use `el.$viewer` to get the `viewer` instance if you need. ```html ``` #### Direcitve modifiers ##### static The `viewer` instance will be created only once after the directive binded. If you're sure the images inside this element won't change again, use it to avoid unnecessary re-render. ```
``` ##### rebuild The `viewer` instance will be updated by `update` method when the source images changed (added, removed or sorted) by default. If you encounter any display problems, try rebuilding instead of updating. ```
``` ### Usage of component You can simply import the component and register it locally too. Use [scoped slot](https://vuejs.org/v2/guide/components.html#Scoped-Slots) to customize the presentation of your images. ```html ``` #### Component props ##### images - Type: `Array` ##### trigger - Type: `Array` You can replace `images` with `trigger`, to accept any type of prop. when the `trigger` changes, the component will re-render the viewer. ```html
``` ##### rebuild - Type: `Boolean` - Default: `false` The viewer instance will be updated by `update` method when the source images changed (added, removed or sorted) by default. If you encounter any display problems, try rebuilding instead of updating. ```html ``` #### Component events ##### inited - viewer: `Viewer` Listen for the `inited` event to get the `viewer` instance, or use `this.refs.xxx.$viewer`. ## Options & Methods of Viewer Refer to [viewer.js](https://github.com/fengyuanchen/viewerjs). ## Plugin options ### name - Type: `String` - Default: `viewer` If you need to avoid name conflict, you can import it like this: ```html ``` ### defaultOptions - Type: `Object` - Default: `undefined` If you need to set the viewer default options, you can import it like this: ```javascript import Viewer from 'v-viewer' import Vue from 'vue' Vue.use(Viewer, { defaultOptions: { zIndex: 9999 } }) ``` And you can reset the default options at any other time: ```javascript import Viewer from 'v-viewer' import Vue from 'vue' Vue.use(Viewer) Viewer.setDefaults({ zIndexInline: 2017 }) ```