diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 6316853..9ceace2 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -27,8 +27,17 @@ export default function Home() { dragFree: true }) + const [moreJobsEmblaRef, moreJobsEmblaApi] = useEmblaCarousel({ + align: "start", + loop: false, + skipSnaps: false, + dragFree: true + }) + const [prevBtnDisabled, setPrevBtnDisabled] = useState(true) const [nextBtnDisabled, setNextBtnDisabled] = useState(true) + const [moreJobsPrevBtnDisabled, setMoreJobsPrevBtnDisabled] = useState(true) + const [moreJobsNextBtnDisabled, setMoreJobsNextBtnDisabled] = useState(true) useEffect(() => { async function fetchJobs() { @@ -54,11 +63,24 @@ export default function Home() { if (emblaApi) emblaApi.scrollNext() }, [emblaApi]) + const scrollMoreJobsPrev = useCallback(() => { + if (moreJobsEmblaApi) moreJobsEmblaApi.scrollPrev() + }, [moreJobsEmblaApi]) + + const scrollMoreJobsNext = useCallback(() => { + if (moreJobsEmblaApi) moreJobsEmblaApi.scrollNext() + }, [moreJobsEmblaApi]) + const onSelect = useCallback((emblaApi: any) => { setPrevBtnDisabled(!emblaApi.canScrollPrev()) setNextBtnDisabled(!emblaApi.canScrollNext()) }, []) + const onMoreJobsSelect = useCallback((emblaApi: any) => { + setMoreJobsPrevBtnDisabled(!emblaApi.canScrollPrev()) + setMoreJobsNextBtnDisabled(!emblaApi.canScrollNext()) + }, []) + useEffect(() => { if (!emblaApi) return onSelect(emblaApi) @@ -66,6 +88,13 @@ export default function Home() { emblaApi.on("select", onSelect) }, [emblaApi, onSelect]) + useEffect(() => { + if (!moreJobsEmblaApi) return + onMoreJobsSelect(moreJobsEmblaApi) + moreJobsEmblaApi.on("reInit", onMoreJobsSelect) + moreJobsEmblaApi.on("select", onMoreJobsSelect) + }, [moreJobsEmblaApi, onMoreJobsSelect]) + return (
@@ -177,19 +206,43 @@ export default function Home() {

{t("home.moreJobs.title")}

- - - + + + + +
-
- {loading ? ( -
Carregando vagas...
- ) : jobs.slice(0, 8).map((job, index) => ( - - ))} +
+
+ {loading ? ( +
Carregando vagas...
+ ) : jobs.slice(0, 8).map((job, index) => ( +
+ +
+ ))} +