import { Component, createMemo, For } from "solid-js"; import { Page } from "@molgenis/vip-report-api"; const createPages = (page: number, pages: number): (number | null)[] => { if (pages <= 5) { return [...Array(pages).keys()]; } else if (page < 3) { return [0, 1, 2, null, pages - 1]; } else if (page > pages - 4) { return [0, null, pages - 3, pages - 2, pages - 1]; } else { return [0, null, page, null, pages - 1]; } }; export type PageChangeEvent = { page: number }; export type PageChangeCallback = (event: PageChangeEvent) => void; export const Pager: Component<{ page: Page; onPageChange: PageChangeCallback; }> = (props) => { const nrPages = createMemo(() => Math.ceil(props.page.totalElements / props.page.size)); const pages = createMemo(() => createPages(props.page.number, nrPages())); const page = createMemo(() => props.page); return ( <> {page().totalElements > page().size && ( )} ); };