File tree Expand file tree Collapse file tree 3 files changed +42
-3
lines changed
Expand file tree Collapse file tree 3 files changed +42
-3
lines changed Original file line number Diff line number Diff line change 5858 height : 40px ;
5959 color : #fff ;
6060 background : rgba (0 , 0 , 0 , 0.3 );
61+ border : 0 ;
62+ padding : 0 ;
6163 border-radius : 9999px ;
6264 transform : translateY (-50% );
6365 cursor : pointer ;
66+ font : inherit ;
6467
6568 &-disabled {
6669 cursor : default ;
104107 &-action {
105108 color : #fff ;
106109 cursor : pointer ;
110+ border : 0 ;
111+ padding : 0 ;
112+ background : transparent ;
113+ font : inherit ;
107114
108115 &-disabled {
109116 cursor : default ;
Original file line number Diff line number Diff line change @@ -211,7 +211,20 @@ const ImageInternal: CompoundedComponent<ImageProps> = props => {
211211
212212 if ( event . key === 'Enter' || event . key === ' ' ) {
213213 event . preventDefault ( ) ;
214- onPreview ( event as any ) ;
214+
215+ const rect = ( event . target as HTMLDivElement ) . getBoundingClientRect ( ) ;
216+ const left = rect . x + rect . width / 2 ;
217+ const top = rect . y + rect . height / 2 ;
218+
219+ if ( groupContext ) {
220+ groupContext . onPreview ( imageId , src , left , top ) ;
221+ } else {
222+ setMousePosition ( {
223+ x : left ,
224+ y : top ,
225+ } ) ;
226+ triggerPreviewOpen ( true ) ;
227+ }
215228 }
216229 } ;
217230
@@ -226,8 +239,13 @@ const ImageInternal: CompoundedComponent<ImageProps> = props => {
226239 onClick = { canPreview ? onPreview : onClick }
227240 role = { canPreview ? 'button' : otherProps . role }
228241 tabIndex = { canPreview && otherProps . tabIndex == null ? 0 : otherProps . tabIndex }
229- aria-label = { canPreview ? ( alt || 'Preview image' ) : otherProps [ 'aria-label' ] }
230- onKeyDown = { onPreviewKeyDown }
242+ aria-label = {
243+ canPreview ? ( otherProps [ 'aria-label' ] ?? alt ?? 'Preview image' ) : otherProps [ 'aria-label' ]
244+ }
245+ onKeyDown = { event => {
246+ onPreviewKeyDown ( event ) ;
247+ ( otherProps as any ) . onKeyDown ?.( event ) ;
248+ } }
231249 style = { {
232250 width,
233251 height,
Original file line number Diff line number Diff line change @@ -1162,6 +1162,20 @@ describe('Preview', () => {
11621162 expect ( document . querySelector ( '.rc-image-preview' ) ) . toBeTruthy ( ) ;
11631163 } ) ;
11641164
1165+ it ( 'Pressing Space on image wrapper should open preview' , ( ) => {
1166+ const { container } = render ( < Image src = "src" alt = "keyboard open space" /> ) ;
1167+
1168+ const wrapper = container . querySelector ( '.rc-image' ) as HTMLElement ;
1169+ wrapper . focus ( ) ;
1170+ fireEvent . keyDown ( wrapper , { key : ' ' } ) ;
1171+
1172+ act ( ( ) => {
1173+ jest . runAllTimers ( ) ;
1174+ } ) ;
1175+
1176+ expect ( document . querySelector ( '.rc-image-preview' ) ) . toBeTruthy ( ) ;
1177+ } ) ;
1178+
11651179 it ( 'Preview dialog should have role dialog and receive focus' , ( ) => {
11661180 render ( < Image src = "src" alt = "dialog a11y" preview = { { open : true } } /> ) ;
11671181
You can’t perform that action at this time.
0 commit comments