@@ -136,8 +136,12 @@ export namespace FooterProps {
136
136
137
137
export type Logo = {
138
138
alt : string ;
139
- href : string ;
139
+ /**
140
+ * @deprecated use linkProps instead
141
+ */
142
+ href ?: string ;
140
143
imgUrl : string ;
144
+ linkProps ?: RegisteredLinkProps & { title : string } ;
141
145
} ;
142
146
}
143
147
}
@@ -371,29 +375,45 @@ export const Footer = memo(
371
375
classes . partnersMain
372
376
) }
373
377
>
374
- { mainPartnersLogo !== undefined && (
375
- < a
376
- href = { mainPartnersLogo . href }
377
- target = "_blank"
378
- title = { `${ mainPartnersLogo . href } - ${ t (
379
- "open new window"
380
- ) } `}
381
- className = { cx (
382
- fr . cx ( "fr-footer__partners-link" , "fr-raw-link" ) ,
383
- classes . partnersLink
384
- ) }
385
- >
386
- < img
387
- alt = { mainPartnersLogo . alt }
388
- style = { { height : "5.625rem" } }
389
- src = { mainPartnersLogo . imgUrl }
390
- className = { cx (
391
- fr . cx ( "fr-footer__logo" ) ,
392
- classes . logo
393
- ) }
394
- />
395
- </ a >
396
- ) }
378
+ { mainPartnersLogo !== undefined &&
379
+ ( ( ) => {
380
+ const children = (
381
+ < img
382
+ alt = { mainPartnersLogo . alt }
383
+ style = { { height : "5.625rem" } } // should not be hardcoded. Can conflict with ContentSecurityPolicy when "unsafe-inline" is not allowed
384
+ src = { mainPartnersLogo . imgUrl }
385
+ className = { cx (
386
+ fr . cx ( "fr-footer__logo" ) ,
387
+ classes . logo
388
+ ) }
389
+ />
390
+ ) ;
391
+
392
+ const hasLinkProps =
393
+ mainPartnersLogo . linkProps !== undefined ||
394
+ mainPartnersLogo . href !== undefined ;
395
+
396
+ return hasLinkProps ? (
397
+ < Link
398
+ { ...mainPartnersLogo . linkProps }
399
+ href = {
400
+ mainPartnersLogo . href ??
401
+ mainPartnersLogo . linkProps ?. href
402
+ }
403
+ className = { cx (
404
+ fr . cx (
405
+ "fr-footer__partners-link" ,
406
+ "fr-raw-link"
407
+ ) ,
408
+ classes . partnersLink
409
+ ) }
410
+ >
411
+ { children }
412
+ </ Link >
413
+ ) : (
414
+ children
415
+ ) ;
416
+ } ) ( ) }
397
417
</ div >
398
418
{ subPartnersLogos . length !== 0 && (
399
419
< div
@@ -403,34 +423,48 @@ export const Footer = memo(
403
423
) }
404
424
>
405
425
< ul >
406
- { subPartnersLogos . map ( ( logo , i ) => (
407
- < li key = { i } >
408
- < a
409
- href = { logo . href }
410
- target = "_blank"
411
- title = { `${ logo . href } - ${ t (
412
- "open new window"
413
- ) } `}
426
+ { subPartnersLogos . map ( ( logo , i ) => {
427
+ const children = (
428
+ < img
429
+ alt = { logo . alt }
430
+ src = { logo . imgUrl }
431
+ style = { { "height" : "5.625rem" } } // should not be hardcoded. Can conflict with ContentSecurityPolicy when "unsafe-inline" is not allowed
414
432
className = { cx (
415
- fr . cx (
416
- "fr-footer__partners-link" ,
417
- "fr-raw-link"
418
- ) ,
419
- classes . partnersLink
433
+ fr . cx ( "fr-footer__logo" ) ,
434
+ classes . logo
435
+ ) }
436
+ />
437
+ ) ;
438
+
439
+ const hasLinkProps =
440
+ logo . linkProps !== undefined ||
441
+ logo . href !== undefined ;
442
+
443
+ return (
444
+ < li key = { i } >
445
+ { hasLinkProps ? (
446
+ < Link
447
+ { ...logo . linkProps }
448
+ href = {
449
+ logo . href ??
450
+ logo . linkProps ?. href
451
+ }
452
+ className = { cx (
453
+ fr . cx (
454
+ "fr-footer__partners-link" ,
455
+ "fr-raw-link"
456
+ ) ,
457
+ classes . partnersLink
458
+ ) }
459
+ >
460
+ { children }
461
+ </ Link >
462
+ ) : (
463
+ children
420
464
) }
421
- >
422
- < img
423
- alt = { logo . alt }
424
- src = { logo . imgUrl }
425
- style = { { "height" : "5.625rem" } }
426
- className = { cx (
427
- fr . cx ( "fr-footer__logo" ) ,
428
- classes . logo
429
- ) }
430
- />
431
- </ a >
432
- </ li >
433
- ) ) }
465
+ </ li >
466
+ ) ;
467
+ } ) }
434
468
</ ul >
435
469
</ div >
436
470
) }
0 commit comments