diff --git a/packages/image-preview/ImagePreview.js b/packages/image-preview/ImagePreview.js
index ea0af6b8d..cb061dae6 100644
--- a/packages/image-preview/ImagePreview.js
+++ b/packages/image-preview/ImagePreview.js
@@ -8,7 +8,10 @@ const [sfc, bem] = use('image-preview');
function getDistance(touches) {
return Math.sqrt(
- Math.abs((touches[0].clientX - touches[1].clientX) * (touches[0].clientY - touches[1].clientY))
+ Math.abs(
+ (touches[0].clientX - touches[1].clientX) *
+ (touches[0].clientY - touches[1].clientY)
+ )
);
}
@@ -71,8 +74,8 @@ export default sfc({
};
if (scale !== 1) {
- style.transform = `scale3d(${scale}, ${scale}, 1) translate(${this.moveX / scale}px, ${this
- .moveY / scale}px)`;
+ style.transform = `scale3d(${scale}, ${scale}, 1) translate(${this.moveX /
+ scale}px, ${this.moveY / scale}px)`;
}
return style;
@@ -175,7 +178,11 @@ export default sfc({
if (this.moving || this.zooming) {
let stopPropagation = true;
- if (this.moving && this.startMoveX === this.moveX && this.startMoveY === this.moveY) {
+ if (
+ this.moving &&
+ this.startMoveX === this.moveX &&
+ this.startMoveY === this.moveY
+ ) {
stopPropagation = false;
}
@@ -219,7 +226,9 @@ export default sfc({
const { active, images } = this;
const Index = this.showIndex && (
-
{`${active + 1}/${images.length}`}
+
+ {this.slots('index') || `${active + 1}/${images.length}`}
+
);
const Images = (
@@ -244,7 +253,11 @@ export default sfc({
};
return (
- {this.lazyLoad ?
:
}
+ {this.lazyLoad ? (
+
+ ) : (
+
+ )}
);
})}
diff --git a/packages/image-preview/demo/index.vue b/packages/image-preview/demo/index.vue
index efc8f1d78..5b2409f59 100644
--- a/packages/image-preview/demo/index.vue
+++ b/packages/image-preview/demo/index.vue
@@ -17,7 +17,10 @@
+ @change="onChange"
+ >
+ {{ $t('index', index) }}
+
@@ -38,20 +41,23 @@ export default {
button1: '预览图片',
button2: '指定初始位置',
button3: '异步关闭',
- componentCall: '组件调用'
+ componentCall: '组件调用',
+ index: index => `第${index + 1}页`
},
'en-US': {
button1: 'Show Images',
button2: 'Custom Start Position',
button3: 'Async Close',
- componentCall: 'Component Call'
+ componentCall: 'Component Call',
+ index: index => `Page: ${index}`
}
},
data() {
return {
show: false,
- images
+ images,
+ index: 0
};
},
@@ -60,6 +66,10 @@ export default {
this.show = true;
},
+ onChange(index) {
+ this.index = index;
+ },
+
showImagePreview(position, timer) {
const instance = ImagePreview({
images,
diff --git a/packages/image-preview/en-US.md b/packages/image-preview/en-US.md
index 97075a23c..adf9e5e19 100644
--- a/packages/image-preview/en-US.md
+++ b/packages/image-preview/en-US.md
@@ -56,7 +56,10 @@ setTimeout(() => {
+ @change="onChange"
+>
+ Page: { index }
+
```
```js
@@ -64,11 +67,18 @@ export default {
data() {
return {
show: false,
+ index: 0,
images: [
'https://img.yzcdn.cn/1.jpg',
'https://img.yzcdn.cn/2.jpg'
]
};
+ },
+
+ methods: {
+ onChange(index) {
+ this.index = index;
+ }
}
}
```
@@ -111,6 +121,12 @@ export default {
| close | Triggered when close | { index, url } |
| change | Triggered when current image change | index: index of current image |
+### Slot
+
+| name | Description |
+|------|------|
+| index | Custom index |
+
### onClose Parematers
| Attribute | Description | Type |
diff --git a/packages/image-preview/test/__snapshots__/index.spec.js.snap b/packages/image-preview/test/__snapshots__/index.spec.js.snap
index 2d601ce83..b85cebc16 100644
--- a/packages/image-preview/test/__snapshots__/index.spec.js.snap
+++ b/packages/image-preview/test/__snapshots__/index.spec.js.snap
@@ -1,5 +1,14 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
+exports[`index slot 1`] = `
+
+`;
+
exports[`render image 1`] = `
1/3
diff --git a/packages/image-preview/test/index.spec.js b/packages/image-preview/test/index.spec.js
index 6bddba52f..ddc70c880 100644
--- a/packages/image-preview/test/index.spec.js
+++ b/packages/image-preview/test/index.spec.js
@@ -1,12 +1,7 @@
import Vue from 'vue';
import ImagePreview from '..';
import ImagePreviewVue from '../ImagePreview';
-import {
- mount,
- trigger,
- triggerDrag,
- transitionStub
-} from '../../../test/utils';
+import { mount, trigger, triggerDrag, transitionStub } from '../../../test/utils';
transitionStub();
@@ -109,3 +104,15 @@ test('zoom', async () => {
expect(wrapper).toMatchSnapshot();
Element.prototype.getBoundingClientRect = getBoundingClientRect;
});
+
+test('index slot', () => {
+ const wrapper = mount({
+ template: `
+
+ Custom Index
+
+ `
+ });
+
+ expect(wrapper).toMatchSnapshot();
+});
diff --git a/packages/image-preview/zh-CN.md b/packages/image-preview/zh-CN.md
index fbfad9c21..985a9a1b7 100644
--- a/packages/image-preview/zh-CN.md
+++ b/packages/image-preview/zh-CN.md
@@ -66,7 +66,10 @@ setTimeout(() => {
+ @change="onChange"
+>
+
第{ index }页
+
```
```js
@@ -74,11 +77,18 @@ export default {
data() {
return {
show: false,
+ index: 0,
images: [
'https://img.yzcdn.cn/1.jpg',
'https://img.yzcdn.cn/2.jpg'
]
};
+ },
+
+ methods: {
+ onChange(index) {
+ this.index = index;
+ }
}
}
```
@@ -127,6 +137,15 @@ export default {
| close | 关闭时触发 | { index: 索引, url: 图片链接 } |
| change | 切换当前图片时触发 | index, 当前图片的索引 |
+### Slot
+
+通过组件调用 `ImagePreview` 时,支持以下插槽:
+
+| 名称 | 说明 |
+|------|------|
+| index | 自定义页码内容 |
+
+
### onClose 回调参数
| 参数名 | 说明 | 类型 |