@@ -136,8 +136,12 @@ export namespace FooterProps {
136136
137137 export type Logo = {
138138 alt : string ;
139- href : string ;
139+ /**
140+ * @deprecated use linkProps instead
141+ */
142+ href ?: string ;
140143 imgUrl : string ;
144+ linkProps ?: RegisteredLinkProps & { title : string } ;
141145 } ;
142146 }
143147}
@@ -371,29 +375,45 @@ export const Footer = memo(
371375 classes . partnersMain
372376 ) }
373377 >
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+ } ) ( ) }
397417 </ div >
398418 { subPartnersLogos . length !== 0 && (
399419 < div
@@ -403,34 +423,48 @@ export const Footer = memo(
403423 ) }
404424 >
405425 < 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
414432 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
420464 ) }
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+ } ) }
434468 </ ul >
435469 </ div >
436470 ) }
0 commit comments