import React, { FC, HTMLAttributes, ElementType, ReactNode } from 'react';
import classNames from 'classnames';
export interface LinkListProps extends HTMLAttributes {
/** Da utilizzare in caso di titolo principale della lista. Passare una componente React da mostrare come titolo */
header?: ReactNode;
/** Classi aggiuntive da usare per il componente lista del LinkList */
className?: string;
/** Classi aggiuntive da usare per il componente wrapper del LinkList */
wrapperClassName?: string;
/**
* Utilizzarlo in caso di utilizzo di componenti personalizzati per il wrapper della lista.
* Nota: viene ignorato quando usato in lista annidate.
* */
tag?: ElementType;
/** Quando abilitato gestisce una lista in cui ciascun elemento è composto da più componenti/elementi. */
multiline?: boolean;
/** Da utilizzare per una lista annidata */
sublist?: boolean;
/** Da utilizzare per una lista di avatar */
avatar?: boolean;
/** Quando attivo rimuove il componente contenitore della ListList. Utile per alcuni tipi di liste annidate. */
noWrapper?: boolean;
testId?: string;
}
export const LinkList: FC = ({
className,
wrapperClassName,
tag = 'div',
multiline,
header,
sublist,
avatar,
noWrapper,
testId,
...attributes
}) => {
const Tag = tag;
const wrapperClasses = classNames('link-list-wrapper', wrapperClassName, {
multiline: multiline
});
const classes = classNames(className, {
'link-list': !sublist,
'link-sublist': sublist,
'avatar-group': avatar
});
if (noWrapper) {
return ;
}
if (sublist) {
return (
<>
{header}
>
);
}
return (
{header}
);
};