/** * WordPress dependencies */ import { Button, Modal, Spinner } from '@safe-wordpress/components'; import { _x } from '@safe-wordpress/i18n'; /** * Internal dependencies */ import './style.scss'; export type LoadingModalProps = { readonly children?: JSX.Element | ReadonlyArray< JSX.Element >; readonly className?: string; readonly isLoading?: boolean; readonly loadingErrorMessage?: string; readonly onClose: () => void; readonly title: string; }; export const LoadingModal = ( { children, className, isLoading, loadingErrorMessage, onClose, title, }: LoadingModalProps ): JSX.Element => ( void null } > { isLoading && (
) } { !! loadingErrorMessage && (
{ loadingErrorMessage }
) } { ! isLoading && ! loadingErrorMessage && children }
); // ======= // HELPERS // ======= function getTitle( title: string, isLoading?: boolean, loadingErrorMessage?: string ) { if ( isLoading ) { return _x( 'Loading…', 'text', 'nelio-content' ); } if ( !! loadingErrorMessage ) { return _x( 'Error', 'text', 'nelio-content' ); } return title; }