Newer
Older
import { graphql, useStaticQuery } from "gatsby";
import React, { useState, useEffect } from "react";
interface Props {
className?: string;
delay?: number;
}
const Partners = (props: Props) => {
const { className = "", delay } = props;
const [index, setIndex] = useState(1);
const dataDirectus = useStaticQuery(graphql`
query myQuery {
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const images = partners.filter((item) => item.id);
const nbr_image: number = images.length;
const updateIndex = (newIndex: number) => {
if (newIndex < 0) {
newIndex = nbr_image - 1;
} else if (newIndex >= nbr_image) {
newIndex = 0;
}
setIndex(newIndex);
};
useEffect(() => {
const interval = setInterval(() => {
if (delay != 0) {
updateIndex(index + 1);
}
}, delay);
return () => {
if (interval) {
clearInterval(interval);
}
};
});
return (
<div className={`block relative ${className}`}>
<div className={`carousel w-1/4 ml-10`}>
<div
className={`whitespace-nowrap w-1/2`}
style={{
transform:
nbr_image > 2 ? `translateX(-${index * 60}%)` : `translateX(0)`,
}}
>
{partners.map((partner: any) => (
<div
className={`carousel-item relative w-full inline-block`}
key={partner.id}
>
<img src={partner.logo} className="w-full h-[80px]" />
</div>
))}
</div>
</div>
<div className={`absolute flex justify-between pl-5 pr-5 w-[32.4%] top-5`}>
<button
onClick={() => updateIndex(index - 1)}
className={`bg-neutral rounded-3xl w-5 h-10 text-base-100`}
>
❮
</button>
<button
onClick={() => updateIndex(index + 1)}
className={`bg-neutral rounded-3xl w-5 h-10 text-base-100`}
>
❯
</button>
</div>
</div>
);
};
export default Partners;