2022-04-24 02:58:54 +00:00
|
|
|
import BorderImage from "./borderImage";
|
|
|
|
import InfiniteScroll from "react-infinite-scroll-component";
|
|
|
|
import { useEffect, useState } from "react";
|
2022-04-17 01:14:14 +00:00
|
|
|
import styles from "../styles/Components.module.css";
|
|
|
|
|
2022-04-24 02:58:54 +00:00
|
|
|
const pageSize = 48;
|
|
|
|
|
2022-04-16 22:29:21 +00:00
|
|
|
export default function Select(props) {
|
2022-04-24 02:58:54 +00:00
|
|
|
const { data, total, onSelect, selected = {} } = props;
|
2022-04-24 03:20:03 +00:00
|
|
|
// console.log("data", data, "selected", selected, total);
|
2022-04-24 02:58:54 +00:00
|
|
|
|
|
|
|
const [scrollIndex, setScrollIndex] = useState(36);
|
|
|
|
const [scrollData, setScrollData] = useState([]);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
setScrollData(data.slice(0, pageSize - 1));
|
|
|
|
}, [data]);
|
|
|
|
|
|
|
|
const fetchMore = () => {
|
|
|
|
let newData = data.slice(scrollIndex, scrollIndex + pageSize);
|
|
|
|
setScrollData([...scrollData, ...newData]);
|
|
|
|
setScrollIndex(scrollIndex + pageSize);
|
|
|
|
};
|
|
|
|
|
2022-04-17 01:14:14 +00:00
|
|
|
return (
|
2022-04-24 02:58:54 +00:00
|
|
|
<InfiniteScroll
|
|
|
|
dataLength={scrollData?.length || 0}
|
|
|
|
next={fetchMore}
|
|
|
|
hasMore={total > scrollData?.length || 0}
|
|
|
|
height={"75vh"}
|
|
|
|
className={styles.select}
|
|
|
|
loader={<h4>Loading...</h4>}
|
|
|
|
endMessage={<h4>No more borders.</h4>}>
|
|
|
|
{scrollData &&
|
|
|
|
scrollData.map((border, index) => {
|
2022-04-17 01:14:14 +00:00
|
|
|
return (
|
2022-04-24 02:58:54 +00:00
|
|
|
<BorderImage
|
|
|
|
key={border.id}
|
|
|
|
border={border}
|
|
|
|
selected={selected}
|
|
|
|
onSelect={onSelect}
|
|
|
|
/>
|
2022-04-17 01:14:14 +00:00
|
|
|
);
|
|
|
|
})}
|
2022-04-24 02:58:54 +00:00
|
|
|
</InfiniteScroll>
|
2022-04-17 01:14:14 +00:00
|
|
|
);
|
2022-04-16 22:29:21 +00:00
|
|
|
}
|