UNPKG

@mui/material

Version:

Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.

263 lines (261 loc) 10.6 kB
import * as React from 'react'; import { SxProps } from '@mui/system'; import { Theme } from "../styles/index.js"; import { OverridableComponent, OverrideProps } from "../OverridableComponent/index.js"; import { TablePaginationActionsProps, TablePaginationActionsSlots } from "./TablePaginationActions.js"; import { TableCellProps } from "../TableCell/index.js"; import { IconButtonProps } from "../IconButton/index.js"; import { SelectProps } from "../Select/index.js"; import { TablePaginationClasses } from "./tablePaginationClasses.js"; import { CreateSlotsAndSlotProps, SlotProps } from "../utils/types.js"; import { ToolbarProps } from "../Toolbar/index.js"; import { MenuItemProps } from "../MenuItem/index.js"; export interface LabelDisplayedRowsArgs { from: number; to: number; count: number; page: number; } export interface TablePaginationRootSlotPropsOverrides {} export interface TablePaginationToolbarSlotPropsOverrides {} export interface TablePaginationSpacerSlotPropsOverrides {} export interface TablePaginationSelectLabelSlotPropsOverrides {} export interface TablePaginationSelectSlotPropsOverrides {} export interface TablePaginationMenuItemSlotPropsOverrides {} export interface TablePaginationDisplayedRowsSlotPropsOverrides {} export interface TablePaginationActionsSlotPropsOverrides {} export interface TablePaginationSlots { /** * The component that renders the root slot. * [Follow this guide](https://mui.com/material-ui/api/table-cell/#props) to learn more about the requirements for this component. * @default TableCell */ root: React.ElementType; /** * The component that renders the toolbar slot. * [Follow this guide](https://mui.com/material-ui/api/toolbar/#props) to learn more about the requirements for this component. * @default Toolbar */ toolbar: React.ElementType; /** * The tag that renders the spacer slot. * @default 'div' */ spacer: React.ElementType; /** * The tag that renders the selectLabel slot. * @default 'p' */ selectLabel: React.ElementType; /** * The component that renders the select slot. * [Follow this guide](https://mui.com/material-ui/api/select/#props) to learn more about the requirements for this component. * @default Select */ select: React.ElementType; /** * The component that renders the select slot. * [Follow this guide](https://mui.com/material-ui/api/menu-item/#props) to learn more about the requirements for this component. * @default MenuItem */ menuItem: React.ElementType; /** * The tag that renders the displayedRows slot. * @default 'p' */ displayedRows: React.ElementType; /** * The slots that passed to the actions slot. */ actions: TablePaginationActionsSlots; } export type TablePaginationSlotsAndSlotProps = CreateSlotsAndSlotProps<TablePaginationSlots, { /** * Props forwarded to the root slot. * By default, the avaible props are based on the [TableCell](https://mui.com/material-ui/api/table-cell/#props) component. */ root: SlotProps<React.ElementType<TableCellProps>, TablePaginationRootSlotPropsOverrides, TablePaginationOwnerState>; /** * Props forwarded to the toolbar slot. * By default, the avaible props are based on the [Toolbar](https://mui.com/material-ui/api/toolbar/#props) component. */ toolbar: SlotProps<React.ElementType<ToolbarProps>, TablePaginationToolbarSlotPropsOverrides, TablePaginationOwnerState>; /** * Props forwarded to the spacer slot. * By default, the avaible props are based on the div element. */ spacer: SlotProps<'div', TablePaginationSpacerSlotPropsOverrides, TablePaginationOwnerState>; /** * Props forwarded to the selectLabel slot. * By default, the avaible props are based on the paragraph element. */ selectLabel: SlotProps<'p', TablePaginationSelectLabelSlotPropsOverrides, TablePaginationOwnerState>; /** * Props forwarded to the select slot. * By default, the avaible props are based on the [Select](https://mui.com/material-ui/api/select/#props) component. */ select: Partial<SelectProps> & TablePaginationSelectSlotPropsOverrides; /** * Props forwarded to the menuItem slot. * By default, the avaible props are based on the [MenuItem](https://mui.com/material-ui/api/menu-item/#props) component. */ menuItem: SlotProps<React.ElementType<MenuItemProps>, TablePaginationMenuItemSlotPropsOverrides, TablePaginationOwnerState>; /** * Props forwarded to the displayedRows slot. * By default, the avaible props are based on the paragraph element. */ displayedRows: SlotProps<'p', TablePaginationDisplayedRowsSlotPropsOverrides, TablePaginationOwnerState>; /** * Props forwarded to the actions slot. */ actions: TablePaginationActionsProps['slotProps'] & TablePaginationActionsSlotPropsOverrides; }>; /** * This type is kept for compatibility. Use `TablePaginationOwnProps` instead. */ export type TablePaginationBaseProps = Omit<TableCellProps, 'classes' | 'component' | 'children'>; export interface TablePaginationOwnProps extends TablePaginationBaseProps { /** * The component used for displaying the actions. * Either a string to use a HTML element or a component. * @default TablePaginationActions */ ActionsComponent?: React.ElementType<TablePaginationActionsProps>; /** * Props applied to the back arrow [`IconButton`](https://mui.com/material-ui/api/icon-button/) component. * * This prop is an alias for `slotProps.actions.previousButton` and will be overriden by it if both are used. * @deprecated Use `slotProps.actions.previousButton` instead. */ backIconButtonProps?: Partial<IconButtonProps>; /** * Override or extend the styles applied to the component. */ classes?: Partial<TablePaginationClasses>; /** * The total number of rows. * * To enable server side pagination for an unknown number of items, provide -1. */ count: number; /** * If `true`, the component is disabled. * @default false */ disabled?: boolean; /** * Accepts a function which returns a string value that provides a user-friendly name for the current page. * This is important for screen reader users. * * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/). * @param {string} type The link or button type to format ('first' | 'last' | 'next' | 'previous'). * @returns {string} * @default function defaultGetAriaLabel(type) { * return `Go to ${type} page`; * } */ getItemAriaLabel?: (type: 'first' | 'last' | 'next' | 'previous') => string; /** * Customize the displayed rows label. Invoked with a `{ from, to, count, page }` * object. * * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/). * @default function defaultLabelDisplayedRows({ from, to, count }) { * return `${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`; * } */ labelDisplayedRows?: (paginationInfo: LabelDisplayedRowsArgs) => React.ReactNode; /** * Customize the rows per page label. * * For localization purposes, you can use the provided [translations](https://mui.com/material-ui/guides/localization/). * @default 'Rows per page:' */ labelRowsPerPage?: React.ReactNode; /** * Props applied to the next arrow [`IconButton`](https://mui.com/material-ui/api/icon-button/) element. * * This prop is an alias for `slotProps.actions.nextButton` and will be overriden by it if both are used. * @deprecated Use `slotProps.actions.nextButton` instead. */ nextIconButtonProps?: Partial<IconButtonProps>; /** * Callback fired when the page is changed. * * @param {React.MouseEvent<HTMLButtonElement> | null} event The event source of the callback. * @param {number} page The page selected. */ onPageChange: (event: React.MouseEvent<HTMLButtonElement> | null, page: number) => void; /** * Callback fired when the number of rows per page is changed. * * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback. */ onRowsPerPageChange?: React.ChangeEventHandler<HTMLTextAreaElement | HTMLInputElement>; /** * The zero-based index of the current page. */ page: number; /** * The number of rows per page. * * Set -1 to display all the rows. */ rowsPerPage: number; /** * Customizes the options of the rows per page select field. If less than two options are * available, no select field will be displayed. * Use -1 for the value with a custom label to show all the rows. * @default [10, 25, 50, 100] */ rowsPerPageOptions?: ReadonlyArray<number | { value: number; label: string; }>; /** * Props applied to the rows per page [`Select`](https://mui.com/material-ui/api/select/) element. * * This prop is an alias for `slotProps.select` and will be overriden by it if both are used. * @deprecated Use `slotProps.select` instead. * * @default {} */ SelectProps?: Partial<SelectProps>; /** * If `true`, show the first-page button. * @default false */ showFirstButton?: boolean; /** * If `true`, show the last-page button. * @default false */ showLastButton?: boolean; /** * The system prop that allows defining system overrides as well as additional CSS styles. */ sx?: SxProps<Theme>; } export interface TablePaginationOwnerState extends TablePaginationOwnProps {} export interface TablePaginationTypeMap<AdditionalProps, RootComponent extends React.ElementType> { props: AdditionalProps & TablePaginationOwnProps & TablePaginationSlotsAndSlotProps; defaultComponent: RootComponent; } /** * A `TableCell` based component for placing inside `TableFooter` for pagination. * * Demos: * * - [Pagination](https://mui.com/material-ui/react-pagination/) * - [Table](https://mui.com/material-ui/react-table/) * * API: * * - [TablePagination API](https://mui.com/material-ui/api/table-pagination/) * - inherits [TableCell API](https://mui.com/material-ui/api/table-cell/) */ declare const TablePagination: OverridableComponent<TablePaginationTypeMap<{}, React.JSXElementConstructor<TablePaginationBaseProps>>>; export type TablePaginationProps<RootComponent extends React.ElementType = React.JSXElementConstructor<TablePaginationBaseProps>, AdditionalProps = {}> = OverrideProps<TablePaginationTypeMap<AdditionalProps, RootComponent>, RootComponent> & { component?: React.ElementType; }; export default TablePagination;