@@ -6,19 +6,30 @@ import { getItemSetItemKey, getItemSetKey } from '../utils/utils';
66import { MOBILE_WIDTH } from '../constants' ;
77import { useCarouselContext } from '../context/CarouselContext' ;
88
9- export function CarouselSliderPage ( { itemSet, itemSetIndex } ) {
9+ export function CarouselSliderPage ( {
10+ itemSet,
11+ itemSetIndex,
12+ } : {
13+ itemSet : React . ReactElement [ ] ;
14+ itemSetIndex : number ;
15+ } ) {
1016 const { currentSlide, width, itemsShownOnDesktop, itemsShownOnMobile } =
1117 useCarouselContext ( ) ;
12- const styleWidth = ` ${
13- 100 / ( width > MOBILE_WIDTH ? itemsShownOnDesktop : itemsShownOnMobile )
14- } %`;
18+ const itemsPerSlide =
19+ ( width > MOBILE_WIDTH ? itemsShownOnDesktop : itemsShownOnMobile ) ?? 1 ;
20+ const styleWidth = ` ${ 100 / itemsPerSlide } %`;
1521 return (
1622 < li
1723 ref = { ( node ) =>
1824 node && itemSetIndex !== currentSlide && node . setAttribute ( 'inert' , '' )
1925 }
2026 aria-hidden = { itemSetIndex !== currentSlide }
21- key = { getItemSetKey ( itemSet , itemSetIndex ) }
27+ key = { getItemSetKey (
28+ itemSetIndex ,
29+ 'id' in itemSet && typeof itemSet . id === 'string'
30+ ? itemSet . id
31+ : undefined ,
32+ ) }
2233 className = { classNames (
2334 styles . slide ,
2435 itemSetIndex === currentSlide && styles . slideSelected ,
@@ -27,7 +38,13 @@ export function CarouselSliderPage({ itemSet, itemSetIndex }) {
2738 < div className = { styles . slideItems } >
2839 { itemSet . map ( ( item , itemIndex ) => (
2940 < div
30- key = { getItemSetItemKey ( item , itemSetIndex , itemIndex ) }
41+ key = { getItemSetItemKey (
42+ itemIndex ,
43+ 'id' in itemSet && typeof itemSet . id === 'string'
44+ ? itemSet . id
45+ : undefined ,
46+ String ( itemSetIndex ) ,
47+ ) }
3148 className = { styles . slideItem }
3249 style = { {
3350 width : styleWidth ,
0 commit comments