Skip to content

Commit 684f148

Browse files
committed
feat: 添加enableMouseZoom属性,可选择是否启用鼠标缩放。#117
1 parent 37cd5e6 commit 684f148

File tree

5 files changed

+12
-2
lines changed

5 files changed

+12
-2
lines changed

apps/example/pages/docs/api.en-US.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ title: API
2727
| loadingElement | Custom loading | JSX\.Element |
2828
| brokenElement | Custom loading failed rendering | JSX\.Element \| \(\(photoProps: BrokenElementParams\) => JSX\.Element\) |
2929
| portalContainer | Custom portal target (e.g. for usage in web components) | HTMLElement | document.body |
30+
| enableMouseWheel | Whether to enable mouse wheel zoom | boolean | true |
3031

3132
## PhotoView
3233

apps/example/pages/docs/api.zh-CN.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ title: API
2727
| loadingElement | 自定义 loading | JSX\.Element |
2828
| brokenElement | 自定义加载失败渲染 | JSX\.Element \| \(\(photoProps: BrokenElementParams\) => JSX\.Element\) |
2929
| portalContainer | | HTMLElement | document.body |
30+
| enableMouseZoom | 是否启用鼠标缩放 | boolean | true |
3031

3132
## PhotoView
3233

packages/react-photo-view/src/PhotoBox.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ export interface PhotoBoxProps {
6464
expose: (state: ExposedProperties) => void
6565
// 是否在当前操作中
6666
isActive: boolean
67+
// 是否开启鼠标缩放
68+
enableMouseZoom?: boolean
6769
}
6870

6971
const initialState = {
@@ -146,7 +148,7 @@ export default function PhotoBox({
146148
style,
147149
loadingElement,
148150
brokenElement,
149-
151+
enableMouseZoom = true,
150152
onPhotoTap,
151153
onMaskTap,
152154
onReachMove,
@@ -477,7 +479,7 @@ export default function PhotoBox({
477479
}
478480

479481
function handleWheel(e: React.WheelEvent) {
480-
if (!reach) {
482+
if (!reach && enableMouseZoom) {
481483
// 限制最大倍数和最小倍数
482484
const delta = isDragMode ? e.deltaY / 100 / 16 : e.deltaY / 100 / 2
483485
const toScale = limitScale(scale - delta, isDragMode, naturalWidth / width)

packages/react-photo-view/src/PhotoSlider.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ export default function PhotoSlider(props: IPhotoSliderProps) {
138138
onClose,
139139
afterClose,
140140
portalContainer,
141+
enableMouseZoom = true,
141142
} = props
142143

143144
const isDragMode = useMemo(() => {
@@ -492,6 +493,7 @@ export default function PhotoSlider(props: IPhotoSliderProps) {
492493
onPhotoResize={handleResize}
493494
isActive={(currentImage && currentImage.key) === item.key}
494495
expose={updateState}
496+
enableMouseZoom={enableMouseZoom}
495497
/>
496498
)
497499
})}

packages/react-photo-view/src/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ export interface PhotoProviderBase {
108108
* @defaultValue document.body
109109
*/
110110
portalContainer?: HTMLElement
111+
/**
112+
* 是否开启鼠标缩放
113+
*/
114+
enableMouseZoom?: boolean
111115
}
112116

113117
export type PhotoRenderParams = {

0 commit comments

Comments
 (0)