import React, { FC, HTMLAttributes, ElementType } from 'react';
import classNames from 'classnames';
export interface SpinnerProps extends HTMLAttributes {
/** Utilizzarlo in caso di utilizzo di componenti personalizzati */
tag?: ElementType;
/** Classi aggiuntive da usare per il componente Spinner */
className?: string;
/** Utilizzato per indicare lo stato attivo di caricamento (animato) */
active?: boolean;
/** Utilizzato per ottenere la versione ridotta del componente Spinner */
small?: boolean;
/** Utilizzato per ottenere una animazione alternativa in fase di caricamento */
double?: boolean;
/** Etichetta con testo da mostrare ai dispositivi screen reader */
label?: string;
testId?: string;
}
export const Spinner: FC = ({
className,
tag = 'span',
active = false,
small = false,
double = false,
label = 'Caricamento',
testId,
...attributes
}) => {
const Tag = tag;
const wrapperClasses = classNames('progress-spinner', {
'progress-spinner-active': active,
'size-sm': small,
'progress-spinner-double': double
});
const classes = classNames(className, 'visually-hidden');
if (double) {
return (
{label}
);
}
return (
{label}
);
};