/*
* 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 (
);
};