1- import React , { ForwardedRef } from 'react' ;
1+ import type { ReactElement } from 'react' ;
2+ import { forwardRef , createElement , ForwardedRef } from 'react' ;
23import PropTypes from 'prop-types' ;
34import { useIntl } from 'react-intl' ;
45import classNames from 'classnames' ;
@@ -22,7 +23,7 @@ export interface OverflowScrollContextProps {
2223
2324export interface ChipCarouselProps {
2425 className ?: string ;
25- items : Array < React . ReactElement > ;
26+ items : Array < ReactElement > ;
2627 ariaLabel : string ;
2728 disableOpacityMasks ?: boolean ;
2829 onScrollPrevious ?: ( ) => void ;
@@ -33,7 +34,7 @@ export interface ChipCarouselProps {
3334 gap ?: number ;
3435}
3536
36- const ChipCarousel = React . forwardRef ( ( {
37+ const ChipCarousel = forwardRef ( ( {
3738 className,
3839 items,
3940 ariaLabel,
@@ -49,32 +50,33 @@ const ChipCarousel = React.forwardRef(({
4950 const intl = useIntl ( ) ;
5051
5152 return (
52- < div
53- className = { classNames ( 'pgn__chip-carousel' , className , gap ? `pgn__chip-carousel-gap__${ gap } ` : '' ) }
54- { ...props }
55- ref = { ref }
56- >
57- < OverflowScroll
58- ariaLabel = { ariaLabel }
59- hasInteractiveChildren
60- disableScroll = { ! canScrollHorizontal }
61- disableOpacityMasks = { disableOpacityMasks }
62- onScrollPrevious = { onScrollPrevious }
63- onScrollNext = { onScrollNext }
64- offset = { offset }
65- offsetType = { offsetType }
53+ (
54+ < div
55+ className = { classNames ( 'pgn__chip-carousel' , className , gap ? `pgn__chip-carousel-gap__${ gap } ` : '' ) }
56+ { ...props }
57+ ref = { ref }
6658 >
67- < OverflowScrollContext . Consumer >
68- { ( {
69- setOverflowRef,
70- isScrolledToStart,
71- isScrolledToEnd,
72- scrollToPrevious,
73- scrollToNext,
74- } : OverflowScrollContextProps ) => (
75- < >
59+ < OverflowScroll
60+ ariaLabel = { ariaLabel }
61+ hasInteractiveChildren
62+ disableScroll = { ! canScrollHorizontal }
63+ disableOpacityMasks = { disableOpacityMasks }
64+ onScrollPrevious = { onScrollPrevious }
65+ onScrollNext = { onScrollNext }
66+ offset = { offset }
67+ offsetType = { offsetType }
68+ >
69+ < OverflowScrollContext . Consumer >
70+ { ( {
71+ setOverflowRef,
72+ isScrolledToStart,
73+ isScrolledToEnd,
74+ scrollToPrevious,
75+ scrollToNext,
76+ } : OverflowScrollContextProps ) => (
7677 < >
77- { ! isScrolledToStart && (
78+ < >
79+ { ! isScrolledToStart && (
7880 < IconButton
7981 size = "sm"
8082 className = "pgn__chip-carousel__left-control"
@@ -83,8 +85,8 @@ const ChipCarousel = React.forwardRef(({
8385 alt = { intl . formatMessage ( messages . scrollToPrevious ) }
8486 onClick = { scrollToPrevious }
8587 />
86- ) }
87- { ! isScrolledToEnd && (
88+ ) }
89+ { ! isScrolledToEnd && (
8890 < IconButton
8991 size = "sm"
9092 className = "pgn__chip-carousel__right-control"
@@ -93,25 +95,26 @@ const ChipCarousel = React.forwardRef(({
9395 alt = { intl . formatMessage ( messages . scrollToNext ) }
9496 onClick = { scrollToNext }
9597 />
96- ) }
98+ ) }
99+ </ >
100+ < div ref = { setOverflowRef } className = "d-flex" >
101+ < OverflowScroll . Items >
102+ { items ?. map ( ( item , id ) => {
103+ const { children } = item ?. props || { } ;
104+ if ( ! children ) {
105+ return null ;
106+ }
107+ // eslint-disable-next-line react/no-array-index-key
108+ return createElement ( Chip , { ...item . props , key : id } ) ;
109+ } ) }
110+ </ OverflowScroll . Items >
111+ </ div >
97112 </ >
98- < div ref = { setOverflowRef } className = "d-flex" >
99- < OverflowScroll . Items >
100- { items ?. map ( ( item , id ) => {
101- const { children } = item ?. props || { } ;
102- if ( ! children ) {
103- return null ;
104- }
105- // eslint-disable-next-line react/no-array-index-key
106- return React . createElement ( Chip , { ...item . props , key : id } ) ;
107- } ) }
108- </ OverflowScroll . Items >
109- </ div >
110- </ >
111- ) }
112- </ OverflowScrollContext . Consumer >
113- </ OverflowScroll >
114- </ div >
113+ ) }
114+ </ OverflowScrollContext . Consumer >
115+ </ OverflowScroll >
116+ </ div >
117+ )
115118 ) ;
116119} ) ;
117120
0 commit comments