@@ -15,6 +15,7 @@ import Dialog from '../../vc-dialog';
1515import { type IDialogChildProps , dialogPropTypes } from '../../vc-dialog/IDialogPropTypes' ;
1616import { getOffset } from '../../vc-util/Dom/css' ;
1717import addEventListener from '../../vc-util/Dom/addEventListener' ;
18+ import KeyCode from '../../_util/KeyCode' ;
1819import { warning } from '../../vc-util/warning' ;
1920import useFrameSetState from './hooks/useFrameSetState' ;
2021import getFixScaleEleTransPosition from './getFixScaleEleTransPosition' ;
@@ -221,6 +222,32 @@ const Preview = defineComponent({
221222 lastWheelZoomDirection . value = { wheelDirection } ;
222223 } ;
223224
225+ const onKeyDown = ( event : KeyboardEvent ) => {
226+ if ( ! props . visible || ! showLeftOrRightSwitches . value ) return ;
227+
228+ event . preventDefault ( ) ;
229+ if ( event . keyCode === KeyCode . LEFT ) {
230+ if ( currentPreviewIndex . value > 0 ) {
231+ setCurrent ( previewUrlsKeys . value [ currentPreviewIndex . value - 1 ] ) ;
232+ }
233+ } else if ( event . keyCode === KeyCode . RIGHT ) {
234+ if ( currentPreviewIndex . value < previewGroupCount . value - 1 ) {
235+ setCurrent ( previewUrlsKeys . value [ currentPreviewIndex . value + 1 ] ) ;
236+ }
237+ }
238+ } ;
239+
240+ const onDoubleClick = ( ) => {
241+ if ( props . visible ) {
242+ if ( scale . value !== 1 ) {
243+ scale . value = 1 ;
244+ }
245+ if ( position . x !== initialPosition . x || position . y !== initialPosition . y ) {
246+ setPosition ( initialPosition ) ;
247+ }
248+ }
249+ } ;
250+
224251 let removeListeners = ( ) => { } ;
225252 onMounted ( ( ) => {
226253 watch (
@@ -235,6 +262,7 @@ const Preview = defineComponent({
235262 const onScrollWheelListener = addEventListener ( window , 'wheel' , onWheelMove , {
236263 passive : false ,
237264 } ) ;
265+ const onKeyDownListener = addEventListener ( window , 'keydown' , onKeyDown , false ) ;
238266
239267 try {
240268 // Resolve if in iframe lost event
@@ -257,6 +285,7 @@ const Preview = defineComponent({
257285 onMouseUpListener . remove ( ) ;
258286 onMouseMoveListener . remove ( ) ;
259287 onScrollWheelListener . remove ( ) ;
288+ onKeyDownListener . remove ( ) ;
260289
261290 /* istanbul ignore next */
262291 if ( onTopMouseUpListener ) onTopMouseUpListener . remove ( ) ;
@@ -310,6 +339,7 @@ const Preview = defineComponent({
310339 >
311340 < img
312341 onMousedown = { onMouseDown }
342+ onDblclick = { onDoubleClick }
313343 ref = { imgRef }
314344 class = { `${ props . prefixCls } -img` }
315345 src = { combinationSrc . value }
0 commit comments