@@ -15,6 +15,7 @@ import Dialog from '../../vc-dialog';
15
15
import { type IDialogChildProps , dialogPropTypes } from '../../vc-dialog/IDialogPropTypes' ;
16
16
import { getOffset } from '../../vc-util/Dom/css' ;
17
17
import addEventListener from '../../vc-util/Dom/addEventListener' ;
18
+ import KeyCode from '../../_util/KeyCode' ;
18
19
import { warning } from '../../vc-util/warning' ;
19
20
import useFrameSetState from './hooks/useFrameSetState' ;
20
21
import getFixScaleEleTransPosition from './getFixScaleEleTransPosition' ;
@@ -221,6 +222,32 @@ const Preview = defineComponent({
221
222
lastWheelZoomDirection . value = { wheelDirection } ;
222
223
} ;
223
224
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
+
224
251
let removeListeners = ( ) => { } ;
225
252
onMounted ( ( ) => {
226
253
watch (
@@ -235,6 +262,7 @@ const Preview = defineComponent({
235
262
const onScrollWheelListener = addEventListener ( window , 'wheel' , onWheelMove , {
236
263
passive : false ,
237
264
} ) ;
265
+ const onKeyDownListener = addEventListener ( window , 'keydown' , onKeyDown , false ) ;
238
266
239
267
try {
240
268
// Resolve if in iframe lost event
@@ -257,6 +285,7 @@ const Preview = defineComponent({
257
285
onMouseUpListener . remove ( ) ;
258
286
onMouseMoveListener . remove ( ) ;
259
287
onScrollWheelListener . remove ( ) ;
288
+ onKeyDownListener . remove ( ) ;
260
289
261
290
/* istanbul ignore next */
262
291
if ( onTopMouseUpListener ) onTopMouseUpListener . remove ( ) ;
@@ -310,6 +339,7 @@ const Preview = defineComponent({
310
339
>
311
340
< img
312
341
onMousedown = { onMouseDown }
342
+ onDblclick = { onDoubleClick }
313
343
ref = { imgRef }
314
344
class = { `${ props . prefixCls } -img` }
315
345
src = { combinationSrc . value }
0 commit comments