import React from 'react' import { TypeGuards } from '@codeleap/types' import { ActivityIndicator } from '../ActivityIndicator' import { Text } from '../Text' import { AnyRecord, useNestedStylesByKey, IJSX, StyledComponentProps } from '@codeleap/styles' import { MobileStyleRegistry } from '../../Registry' import { useStylesFor } from '../../hooks' import { PaginationIndicatorProps } from './types' export * from './styles' export * from './types' export const PaginationIndicator = (props: PaginationIndicatorProps) => { const { hasMore, isFetching, noMoreItemsText, style, activityIndicator, } = { ...PaginationIndicator.defaultProps, ...props, } const styles = useStylesFor(PaginationIndicator.styleRegistryName, style) const loaderStyles = useNestedStylesByKey('loader', styles) if (isFetching) { return activityIndicator || } if (!hasMore) { if (TypeGuards.isString(noMoreItemsText) || TypeGuards.isNumber(noMoreItemsText)) { return } return noMoreItemsText } return null } PaginationIndicator.styleRegistryName = 'PaginationIndicator' PaginationIndicator.elements = ['text', 'loader'] PaginationIndicator.rootElement = 'text' PaginationIndicator.withVariantTypes = (styles: S) => { return PaginationIndicator as (props: StyledComponentProps) => IJSX } PaginationIndicator.defaultProps = {} as PaginationIndicatorProps MobileStyleRegistry.registerComponent(PaginationIndicator)