# 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://img.shields.io/npm/v/v-viewer.svg)](https://www.npmjs.com/package/v-viewer) [![language](https://img.shields.io/badge/language-Vue3-brightgreen.svg)](https://www.npmjs.com/package/v-viewer) [![npm version](https://img.shields.io/npm/v/v-viewer/legacy.svg)](https://www.npmjs.com/package/v-viewer) [![language](https://img.shields.io/badge/language-Vue2-brightgreen.svg)](https://www.npmjs.com/package/v-viewer) [![npm download](https://img.shields.io/npm/dw/v-viewer.svg)](https://www.npmjs.com/package/v-viewer) [![license](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://mit-license.org/) ## [v-viewer for vue3](https://github.com/mirari/v-viewer/tree/v3) ## [Live demo](https://mirari.github.io/v-viewer/) ## Examples - [directive](https://codepen.io/mirari/pen/PePrVq) - [component](https://codepen.io/mirari/pen/PowNyEY) - [api](https://codepen.io/mirari/pen/NWpwVdd) - [thumbnail & source](https://codepen.io/mirari/pen/LYENgMM) - [viewer callback](https://codepen.io/mirari/pen/ZwpGBO) - [custom toolbar](https://codepen.io/mirari/pen/GRMBrBv) - [filter images](https://codepen.io/mirari/pen/vvPoQb) - [change images](https://codepen.io/mirari/pen/ZdMbOK) ## [中文文档](https://mirari.cc/posts/v-viewer) ## Migration from 0.x - The only change you have to make is to manually import the `.css` file: ``` import 'viewerjs/dist/viewer.css' ``` ## Migration from 1.6.x - If you were using the `npm` installer before, manually install `viewerjs`: ```bash npm install v-viewer@legacy viewerjs ``` ## Installation Install from NPM ```bash npm install v-viewer@legacy viewerjs ``` ## Usage To use `v-viewer`, simply import it and the `css` file, and call `Vue.use()` to install. ```vue ``` ### Support UMD #### Browser ```vue ``` #### 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. ```vue ``` #### Directive 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. ```vue
``` ##### 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. ```vue
``` ### 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. ```vue ``` #### Component props ##### images - Type: `Array` ##### trigger - Type: `Object` You can replace `images` with `trigger`, to accept any type of prop. when the `trigger` changes, the component will re-render the viewer. ```vue
``` ##### 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. ```vue ``` #### Component events ##### inited - viewer: `Viewer` Listen for the `inited` event to get the `viewer` instance, or use `this.refs.xxx.$viewer`. ### Usage of api > Only available in modal mode. You can call the function: `this.$viewerApi({options: {}, images: []})` to show gallery without rendering the `img` elements yourself. The function returns the current viewer instance. ```vue ``` ## 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: ```vue ``` ### defaultOptions - Type: `Object` - Default: `undefined` If you need to set the viewer default options, you can import it like this: ```javascript import VueViewer from 'v-viewer' import Vue from 'vue' Vue.use(VueViewer, { defaultOptions: { zIndex: 9999 } }) ``` And you can reset the default options at any other time: ```javascript import VueViewer from 'v-viewer' import Vue from 'vue' Vue.use(VueViewer) VueViewer.setDefaults({ zIndexInline: 2017 }) ```