in uui/components/widgets/Paginator.tsx [23:76]
export function Paginator(props: PaginatorProps) {
const renderPaginator = (params: PaginatorRenderParams) => (
<nav role="navigation" className={ cx(css.root, 'uui-paginator', `uui-size-${props.size || settings.sizes.defaults.paginator}`) } { ...params.rawProps }>
<Button
size={ props.size || settings.sizes.defaults.paginator as ButtonProps['size'] }
icon={ ArrowLeftIcon }
onClick={ params.goToPrev }
isDisabled={ params.isFirst || props.isDisabled }
fill="outline"
color="secondary"
/>
{params.pages.map((page, index) => {
if (page.type === 'spacer') {
return (
<Button
cx={ cx(css.spacer, css.page) }
size={ props.size || settings.sizes.defaults.paginator as ButtonProps['size'] }
key={ `${index}_spacer` }
caption="..."
fill="ghost"
color="secondary"
tabIndex={ -1 }
isDisabled={ props.isDisabled }
/>
);
} else {
return (
<Button
cx={ cx(css[`mode-${!page.isActive && 'ghost'}`], css.page) }
size={ props.size || settings.sizes.defaults.paginator as ButtonProps['size'] }
key={ page.pageNumber }
caption={ page.pageNumber }
onClick={ () => page.onClick?.() }
rawProps={ { 'aria-current': page.isActive } }
fill={ (page.isActive && 'outline') || 'ghost' }
color="primary"
isDisabled={ props.isDisabled }
/>
);
}
})}
<Button
size={ props.size || settings.sizes.defaults.paginator as ButtonProps['size'] }
icon={ ArrowRightIcon }
onClick={ params.goToNext }
isDisabled={ params.isLast || props.isDisabled }
fill="outline"
color="secondary"
/>
</nav>
);
return <UuiPaginator { ...props } render={ renderPaginator } />;
}