vue-svg-pan-zoom/README.md

110 lines
3.5 KiB
Markdown
Raw Normal View History

2018-01-15 23:32:25 +00:00
# vue-svg-pan-zoom : Vue component for SVG-Pan-Zoom
2018-01-23 01:12:54 +00:00
This module is a very simple [Vue](https://vuejs.org/) component providing the
goodness of [SVG-Pan-Zoom](https://github.com/ariutta/svg-pan-zoom) for SVG elements.
2018-01-15 23:32:25 +00:00
2018-01-23 00:58:11 +00:00
/!\ WARNING: the module is young, basic, probably will have its
API change with no notice, and likely to have
2018-01-15 23:32:25 +00:00
bugs. Use at your own risk, send patches for my eternal gratitude.
## Basic Use
In a Single File Component:
<template>
<SvgPanZoom
style="width: 500px; height: 500px; border:1px solid black;"
:zoomEnabled="true"
:controlIconsEnabled="true"
:fit="false"
:center="true"
>
<svg>
<circle x="10" y="10" r="5" />
</svg>
</SvgPanZoom>`
</template>
<script>
import SvgPanZoom from 'vue-svg-pan-zoom';
export default {
components: { SvgPanZoom },
};
</script>
### Notes
* currently the `SvgPanZoom` component only works with a `svg` child -- `embed` won't work.
* `SvgPanZoom` accepts as attributes all `svg-pan-zoom` options:
2018-01-23 00:58:11 +00:00
| attribute | default |
| --------- | -------- |
| zoomEnabled | true |
| controlIconsEnabled | false |
| fit | true |
| panEnabled | true |
| dblClickZoomEnabled | true |
| mouseWheelZoomEnabled | true |
| preventMouseEventsDefault | true |
| contain | false |
| center | true |
| viewportSelector | .svg-pan-zoom_viewport |
| zoomScaleSensitivity | 0.2 |
| minZoom | 0.5 |
| maxZoom | 10 |
| refreshRate | auto |
| beforeZoom | |
| onZoom | |
| beforePan | |
| onPan | |
| onUpdatedCTM | |
| customEventsHandler | |
| eventsListenerElement | |
2018-01-15 23:32:25 +00:00
## Use with thumbnails
In a Single File Component:
<template>
<SvgPanZoom
style="width: 300px; height: 500px; border:1px solid black; "
>
<svg> ... </svg>
2018-01-23 00:58:11 +00:00
<svg slot="thumbnail" class="thumbViewClass">
...
</svg>
2018-01-15 23:32:25 +00:00
</SvgPanZoom>
</template>
<script>
2018-01-23 00:58:11 +00:00
import SvgPanZoom from 'vue-svg-pan-zoom';
2018-01-15 23:32:25 +00:00
export default {
2018-01-23 00:58:11 +00:00
components: { SvgPanZoom },
2018-01-15 23:32:25 +00:00
};
</script>
2018-01-23 00:58:11 +00:00
<style>
@import 'vue-svg-pan-zoom/dist/vue-svg-pan-zoom.css';
</style>
Note that for the css import to work, you'll have to have
[postcss-import](https://github.com/postcss/postcss-import)
installed as a dep.
2018-01-23 01:02:52 +00:00
Also, just like the main `SvgPanZoom`component, the `thumbnail` slot needs to
2018-01-23 00:58:11 +00:00
be assigned to a `svg` node -- `embed` won't work.
2018-01-15 23:32:25 +00:00
### Storybook demos
2018-01-23 01:02:52 +00:00
To run [Storybook](https://github.com/storybooks/storybook) stories duplicating the demos of
2018-01-15 23:32:25 +00:00
the main `SVG-Pan-Zoom` project, do
$ yarn install --dev
$ yarn storybook