@@ -9,13 +9,13 @@ import {
99 cssClass ,
1010 cssVar ,
1111 getSlide ,
12- getSlideIndex ,
1312 getSlideKey ,
1413 hasSlides ,
1514 isImageSlide ,
1615 makeInertWhen ,
1716 parseLengthPercentage ,
1817 translateLabel ,
18+ translateSlideCounter ,
1919} from "../utils.js" ;
2020import { ImageSlide } from "../components/index.js" ;
2121import { useController } from "./Controller/index.js" ;
@@ -33,10 +33,9 @@ function cssSlidePrefix(value?: string) {
3333type CarouselSlideProps = {
3434 slide : Slide ;
3535 offset : number ;
36- index : number ;
3736} ;
3837
39- function CarouselSlide ( { slide, offset, index } : CarouselSlideProps ) {
38+ function CarouselSlide ( { slide, offset } : CarouselSlideProps ) {
4039 const containerRef = React . useRef < HTMLDivElement > ( null ) ;
4140
4241 const { currentIndex, slides } = useLightboxState ( ) ;
@@ -84,10 +83,6 @@ function CarouselSlide({ slide, offset, index }: CarouselSlideProps) {
8483 ) : null ;
8584 } ;
8685
87- const slideLabel = translateLabel ( labels , "{{index}} of {{slidesLength}}" )
88- . replace ( "{{index}}" , String ( index + 1 ) )
89- . replace ( "{{slidesLength}}" , String ( slides . length ) ) ;
90-
9186 return (
9287 < div
9388 ref = { containerRef }
@@ -100,7 +95,7 @@ function CarouselSlide({ slide, offset, index }: CarouselSlideProps) {
10095 style = { style }
10196 role = "region"
10297 aria-roledescription = { translateLabel ( labels , "Slide" ) }
103- aria-label = { slideLabel }
98+ aria-label = { translateSlideCounter ( labels , slides , currentIndex + offset ) }
10499 >
105100 { renderSlide ( ) }
106101 </ div >
@@ -121,10 +116,7 @@ export function Carousel({ carousel, labels }: ComponentProps) {
121116 const paddingValue = parseLengthPercentage ( carousel . padding ) ;
122117
123118 const preload = calculatePreload ( carousel , slides , 1 ) ;
124- const items : ( { key : React . Key } & (
125- | { slide : Slide ; offset : number ; index : number }
126- | { slide ?: never ; offset ?: never ; index ?: number }
127- ) ) [ ] = [ ] ;
119+ const items : ( { key : React . Key } & ( { slide : Slide ; offset : number } | { slide ?: never ; offset ?: never } ) ) [ ] = [ ] ;
128120
129121 if ( hasSlides ( slides ) ) {
130122 for ( let index = currentIndex - preload ; index <= currentIndex + preload ; index += 1 ) {
@@ -137,7 +129,6 @@ export function Carousel({ carousel, labels }: ComponentProps) {
137129 ? {
138130 key : [ `${ key } ` , getSlideKey ( slide ) ] . filter ( Boolean ) . join ( "|" ) ,
139131 offset : index - currentIndex ,
140- index : getSlideIndex ( index , slides . length ) ,
141132 slide,
142133 }
143134 : { key } ,
@@ -161,8 +152,8 @@ export function Carousel({ carousel, labels }: ComponentProps) {
161152 aria-roledescription = { translateLabel ( labels , "Carousel" ) }
162153 aria-label = { translateLabel ( labels , "Photo gallery" ) }
163154 >
164- { items . map ( ( { key, slide, offset, index } ) =>
165- slide ? < CarouselSlide key = { key } slide = { slide } offset = { offset } index = { index } /> : < Placeholder key = { key } /> ,
155+ { items . map ( ( { key, slide, offset } ) =>
156+ slide ? < CarouselSlide key = { key } slide = { slide } offset = { offset } /> : < Placeholder key = { key } /> ,
166157 ) }
167158 </ div >
168159 ) ;
0 commit comments