Skip to content

Commit 8d2d8e3

Browse files
Refactor CMSSlider component to use consistent naming for CMS items
- Updated variable names from `slideElements` to `items` for clarity and consistency across the CMSSlider and SlideItem components. - Adjusted the useCMSCollectionItems hook to reflect the new naming convention, enhancing code readability.
1 parent b9f5ecb commit 8d2d8e3

3 files changed

Lines changed: 21 additions & 24 deletions

File tree

cms-slider/src/components/CMSSlider/CMSSlider.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@ const CMSSlider = (props: CMSSliderProps) => {
3333
const parentRef = useRef<HTMLDivElement>(null);
3434

3535
// Extract CMS collection items from Webflow slot
36-
const { cmsCollectionComponentSlotRef, slideElements } =
37-
useCMSCollectionItems("cmsCollectionComponentSlot");
36+
const { cmsCollectionComponentSlotRef, items } = useCMSCollectionItems(
37+
"cmsCollectionComponentSlot"
38+
);
3839

3940
// Inject global styles into shadow DOM
4041
useShadowGlobalStyles(parentRef);
@@ -50,7 +51,7 @@ const CMSSlider = (props: CMSSliderProps) => {
5051
</div>
5152

5253
{/* Render slider once CMS items are extracted */}
53-
{slideElements && slideElements.length > 0 && (
54+
{items && items.length > 0 && (
5455
<SlickSlider
5556
infinite={infinite}
5657
slidesToShow={slidesToShow}
@@ -61,8 +62,8 @@ const CMSSlider = (props: CMSSliderProps) => {
6162
autoplaySpeed={autoplaySpeed}
6263
swipeToSlide={true}
6364
>
64-
{slideElements.map((slide, index) => (
65-
<SlideItem key={index} slide={slide} index={index} />
65+
{items.map((item, index) => (
66+
<SlideItem key={index} item={item} index={index} />
6667
))}
6768
</SlickSlider>
6869
)}

cms-slider/src/components/CMSSlider/SlideItem.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { useEffect, useRef } from "react";
33
/**
44
* Wrapper component that renders a single CMS collection item as a slide
55
*/
6-
const SlideItem = (props: { slide: HTMLDivElement; index: number }) => {
7-
const { slide, index } = props;
8-
const slideRef = useRef<HTMLDivElement>(null);
6+
const SlideItem = (props: { item: HTMLDivElement; index: number }) => {
7+
const { item, index } = props;
8+
const itemRef = useRef<HTMLDivElement>(null);
99

1010
// Append the cloned slide element to the container
1111
useEffect(() => {
12-
if (slideRef.current) {
13-
slideRef.current.appendChild(slide.cloneNode(true) as HTMLDivElement);
12+
if (itemRef.current) {
13+
itemRef.current.appendChild(item.cloneNode(true) as HTMLDivElement);
1414
}
15-
}, [slide]);
15+
}, [item]);
1616

17-
return <div ref={slideRef} data-index={index}></div>;
17+
return <div ref={itemRef} data-index={index}></div>;
1818
};
1919

2020
export default SlideItem;

cms-slider/src/components/CMSSlider/useCMSCollectionItems.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@ import { useEffect, useMemo, useRef, useState } from "react";
77
*/
88
export function useCMSCollectionItems(slotName: string) {
99
const cmsCollectionComponentSlotRef = useRef<HTMLDivElement>(null);
10-
const [slideElements, setSlideElements] = useState<HTMLDivElement[] | null>(
11-
null
12-
);
10+
const [items, setItems] = useState<HTMLDivElement[] | null>(null);
1311

1412
useEffect(() => {
15-
if (slideElements === null && cmsCollectionComponentSlotRef.current) {
13+
if (items === null && cmsCollectionComponentSlotRef.current) {
1614
// Find the slot element by name
1715
const slot = cmsCollectionComponentSlotRef.current.querySelector(
1816
`[name="${slotName}"]`
@@ -29,22 +27,20 @@ export function useCMSCollectionItems(slotName: string) {
2927
)
3028
) as HTMLDivElement[]
3129
).map((slide) => slide.cloneNode(true) as HTMLDivElement);
32-
setSlideElements(slides);
30+
setItems(slides);
3331
}
3432
}
3533
}
36-
}, [cmsCollectionComponentSlotRef.current, slideElements]);
34+
}, [cmsCollectionComponentSlotRef.current, items]);
3735

3836
// Filter out empty slides and memoize for performance
39-
const memoizedSlideElements = useMemo(
40-
() =>
41-
slideElements?.filter((slide) => slide && slide.children.length > 0) ??
42-
[],
43-
[slideElements]
37+
const memoizedItems = useMemo(
38+
() => items?.filter((item) => item && item.children.length > 0) ?? [],
39+
[items]
4440
);
4541

4642
return {
4743
cmsCollectionComponentSlotRef,
48-
slideElements: memoizedSlideElements,
44+
items: memoizedItems,
4945
};
5046
}

0 commit comments

Comments
 (0)