/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React, { useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiButtonEmpty, EuiPopover, EuiIcon, EuiContextMenuPanel, EuiContextMenuItem, } from '@elastic/eui'; // pagination import ReactPaginate from 'react-paginate'; // theme import { uiSettingsService } from '../../../../../common/utils'; // constants import { GRID_PAGE_RANGE_DISPLAY, GRID_PAGE_SIZES, } from '../../../../../common/constants/explorer'; export const GridFooter = ({ onPageSizeChanged, pageSize, activePage, goToPage, pageCount, }: { onPageSizeChanged: (val: number) => void; goToPage: ({ selected }: { selected: number }) => void; pageSize: number; activePage: number; pageCount: number; }) => { return ( } forcePage={activePage} onPageChange={goToPage} pageRangeDisplayed={GRID_PAGE_RANGE_DISPLAY} pageCount={pageCount} previousLabel={} renderOnZeroPageCount={null} /> ); }; export const PageSizePopover = ({ onPageSizeChanged, pageSize, }: { onPageSizeChanged: (size: number) => void; pageSize: number; }) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false); const onButtonClick = () => setIsPopoverOpen((isPopoverOpen) => !isPopoverOpen); const closePopover = () => setIsPopoverOpen(false); const button = ( Rows per page: {pageSize} ); const items = () => { return GRID_PAGE_SIZES.map((i: number) => ( { onPageSizeChanged(i); closePopover(); }} > {i} rows )); }; return ( ); };