import type { HTMLAttributes, ReactNode } from "react"; import type { GridListSize, UseGridListOptions } from "./useGridList"; /** * The children render function that will be provided the current grid list size * object and should return renderable elements. * * Note: The first time this is called, the `columns` and `cellWidth` will be * the `defaultSize`. Once the `GridList` has been fully mounted in the DOM, it * will begin the sizing calculations and update with the "real" values. This * doesn't cause any problems if you are only rendering client side, but it * might mess up server-side rendering, so it is recommended to update the * `defaultSize` when server-side rendering if this can be "known" service-side * in your app. */ export declare type RenderGridListChildren = (size: GridListSize) => ReactNode; export interface GridListProps extends HTMLAttributes, UseGridListOptions { /** * Boolean if the resize observer should stop tracking width changes within * the `GridList`. This should normally stay as `false` since tracking width * changes will allow for dynamic content being added to the list to not mess * up the grid calculation when the user is on an OS that shows scrollbars. */ disableHeightObserver?: boolean; /** * Boolean if the resize observer should stop tracking width changes within * the `GridList`. This should normally stay as `false` since tracking width * changes will allow for dynamic content being added to the list to not mess * up the grid calculation when the user is on an OS that shows scrollbars. */ disableWidthObserver?: boolean; /** * The children to display within the grid list. This can either be a callback * function that will provide the current calculated width for each cell that * should return renderable elements or any renderable elements that are sized * with the `--rmd-cell-width` css variable. */ children: ReactNode | RenderGridListChildren; /** * Boolean if the current cell sizing should automatically be cloned into each * child. This will only work if the `children` is renderable element or a * list of renderable elements that accept the `style` and `className` props. */ clone?: boolean; /** * Boolean if each child within the `GridList` should be wrapped with the * `GridListCell` component. This will only work if the `children` is not a * `function`. */ wrapOnly?: boolean; } /** * The `GridList` component is a different way to render a list of data where * the number of columns is dynamic and based on the max-width for each cell. * Instead of setting a percentage width to each cell based on the number of * columns, this will dynamically add columns to fill up the remaining space and * have each cell grow up to a set max-width. A really good use-case for this is * displaying a list of images or thumbnails and allowing the user to see a full * screen preview once selected/clicked. */ export declare const GridList: import("react").ForwardRefExoticComponent>;