metacubexd/src/components/ProxyCardGroups.tsx

29 lines
809 B
TypeScript
Raw Normal View History

2023-09-01 18:31:44 +08:00
import InfiniteScroll from 'solid-infinite-scroll'
import { createMemo, createSignal } from 'solid-js'
import { ProxyNodeCard } from '~/components'
2023-09-01 18:31:44 +08:00
export const ProxyCardGroups = (props: {
2023-09-03 06:08:53 +08:00
proxyNames: string[]
2023-09-01 18:37:19 +08:00
now?: string
onClick?: (name: string) => void
}) => {
const [maxRender, setMaxRender] = createSignal(100)
2023-09-03 06:08:53 +08:00
const proxyNames = createMemo(() => props.proxyNames.slice(0, maxRender()))
2023-09-01 18:31:44 +08:00
return (
<InfiniteScroll
2023-09-03 06:08:53 +08:00
each={proxyNames()}
hasMore={proxyNames().length < props.proxyNames.length}
2023-09-01 18:31:44 +08:00
next={() => setMaxRender(maxRender() + 30)}
>
{(proxy) => (
2023-09-01 18:37:19 +08:00
<ProxyNodeCard
proxyName={proxy}
isSelected={props.now === proxy}
2023-09-07 10:41:42 +08:00
onClick={props.onClick && (() => props.onClick?.(proxy))}
2023-09-01 18:37:19 +08:00
/>
2023-09-01 18:31:44 +08:00
)}
</InfiniteScroll>
)
}