File tree 3 files changed +40
-2
lines changed
3 files changed +40
-2
lines changed Original file line number Diff line number Diff line change @@ -71,6 +71,7 @@ export default (props: ViewerProps) => {
71
71
noImgDetails = false ,
72
72
noToolbar = false ,
73
73
showTotal = true ,
74
+ minScale = 0.1 ,
74
75
} = props ;
75
76
76
77
const initialState : ViewerCoreState = {
@@ -588,8 +589,19 @@ export default (props: ViewerProps) => {
588
589
let directY = state . scaleY > 0 ? 1 : - 1 ;
589
590
scaleX = state . scaleX + scale * direct * directX ;
590
591
scaleY = state . scaleY + scale * direct * directY ;
591
- if ( Math . abs ( scaleX ) < 0.1 || Math . abs ( scaleY ) < 0.1 ) {
592
- return ;
592
+ if ( typeof props . maxScale !== 'undefined' ) {
593
+ if ( Math . abs ( scaleX ) > props . maxScale ) {
594
+ scaleX = props . maxScale * directX ;
595
+ }
596
+ if ( Math . abs ( scaleY ) > props . maxScale ) {
597
+ scaleY = props . maxScale * directY ;
598
+ }
599
+ }
600
+ if ( Math . abs ( scaleX ) < minScale ) {
601
+ scaleX = minScale * directX ;
602
+ }
603
+ if ( Math . abs ( scaleY ) < minScale ) {
604
+ scaleY = minScale * directY ;
593
605
}
594
606
top = state . top + - direct * diffY / state . scaleX * scale * directX ;
595
607
left = state . left + - direct * diffX / state . scaleY * scale * directY ;
Original file line number Diff line number Diff line change @@ -108,6 +108,12 @@ interface ViewerProps {
108
108
109
109
// whether to display the total number and range
110
110
showTotal ?: boolean ;
111
+
112
+ // max scale
113
+ maxScale ?: number ;
114
+
115
+ // min scale
116
+ minScale ?: number ;
111
117
}
112
118
113
119
export default ViewerProps ;
Original file line number Diff line number Diff line change @@ -750,4 +750,24 @@ describe('Viewer', () => {
750
750
triggerKeyboard ( document , 'keydown' , 39 ) ;
751
751
expect ( $$ ( '.react-viewer-showTotal' ) [ 0 ] . innerHTML ) . toBe ( '2 of 2' ) ;
752
752
} ) ;
753
+
754
+ it ( 'max scale and min scale' , ( ) => {
755
+ viewerHelper . new ( {
756
+ className : 'my-react-viewer' ,
757
+ maxScale : 1.06 ,
758
+ minScale : 0.88 ,
759
+ } ) ;
760
+ viewerHelper . open ( ) ;
761
+
762
+ let imgNode = $$ ( 'img.react-viewer-image' ) [ 0 ] ;
763
+
764
+ $$ ( 'li[data-key=zoomIn]' ) [ 0 ] . click ( ) ;
765
+ $$ ( 'li[data-key=zoomIn]' ) [ 0 ] . click ( ) ;
766
+ expect ( getTransformValue ( imgNode . style . transform ) . scaleX ) . toBe ( '1.06' ) ;
767
+ $$ ( 'li[data-key=reset]' ) [ 0 ] . click ( ) ;
768
+ $$ ( 'li[data-key=zoomOut]' ) [ 0 ] . click ( ) ;
769
+ $$ ( 'li[data-key=zoomOut]' ) [ 0 ] . click ( ) ;
770
+ $$ ( 'li[data-key=zoomOut]' ) [ 0 ] . click ( ) ;
771
+ expect ( getTransformValue ( imgNode . style . transform ) . scaleX ) . toBe ( '0.88' ) ;
772
+ } ) ;
753
773
} ) ;
You can’t perform that action at this time.
0 commit comments