From e4c9e14f6295343bce7262665fa54ba4085cad30 Mon Sep 17 00:00:00 2001 From: Virtute90 <32056724+Virtute90@users.noreply.github.com> Date: Thu, 1 Aug 2024 12:05:54 +0200 Subject: [PATCH] feat: add list component --- src/List/List.tsx | 40 + src/List/ListItem.tsx | 86 + src/index.ts | 8 +- .../Components/LinkList/LinkList.stories.tsx | 2 +- stories/Components/List.stories.tsx | 246 + stories/Documentation/List.mdx | 75 + test/List.test.tsx | 249 + test/__snapshots__/Storybook.test.tsx.snap | 4618 +++++++++++------ 8 files changed, 3652 insertions(+), 1672 deletions(-) create mode 100644 src/List/List.tsx create mode 100644 src/List/ListItem.tsx create mode 100644 stories/Components/List.stories.tsx create mode 100644 stories/Documentation/List.mdx create mode 100644 test/List.test.tsx diff --git a/src/List/List.tsx b/src/List/List.tsx new file mode 100644 index 000000000..72761e02a --- /dev/null +++ b/src/List/List.tsx @@ -0,0 +1,40 @@ +import classNames from 'classnames'; +import React, { ElementType, FC, HTMLAttributes } from 'react'; + +export interface ListProps extends HTMLAttributes { + /** Classi aggiuntive da usare per il componente lista del List */ + className?: string; + /** Classi aggiuntive da usare per il componente wrapper del List */ + 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 attivo rimuove il componente contenitore della ListList. Utile per alcuni tipi di liste annidate. */ + noWrapper?: boolean; + testId?: string; +} + +export const List: FC = ({ + className, + wrapperClassName, + tag = 'div', + noWrapper, + testId, + ...attributes +}) => { + const Tag = tag; + const wrapperClasses = classNames('it-list-wrapper', wrapperClassName); + const classes = classNames(className, 'it-list'); + + if (noWrapper) { + return `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ConAvatar 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ListaIcona 1`] = `
  • - avataralt - - Link list 2 - +
    + + + icon + + + +
    +
    + + Link + +
  • - avataralt - - Link list 3 disabled - +
    + + + icon + + + +
    +
    + + Link attivo + +
  • @@ -33410,640 +33582,798 @@ exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ConAvata
    `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ConCheckbox 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ListaImmagine 1`] = `
    `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ConSwitch 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ListaMetadata 1`] = `
    -
    -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ControlliComponent 1`] = ` -
    - +
  • - - - +
  • + +
  • - - - + + +
  • - - + +
    + - - icon - - - - - Link list 3 disabled + Link attivo - + +
  • +
  • + +
  • `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ControlliSecondariComponent 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ListaSemplice 1`] = `
    +
  • - - - Link list 2 - - - + Link + +
  • - - - Link list 3 disabled - - - - + Link attivo + + +
  • `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste EsempioMultiline 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste ListaTestoAzioniMultipleMetadata 1`] = `
    +
  • - - - - Link list 2 + + Testo 2 + + Lorem ipsum dolor sit amet. + - - -

    - Lorem ipsum dolor sit amet, consectetur adipiscing elit… -

    -
    -
  • -
  • - + + + + + icon + + + + + + + + icon + + + + + + + + icon + + + + + + +
  • - - - - Link list 3 disabled - - - -

    - Lorem ipsum dolor sit amet, consectetur adipiscing elit… -

    -
    -
  • - - - -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste HeaderEDividerConLink 1`] = ` -
    - +
  • - - - Link list 4 - - + +
  • `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste HeaderEDividerNoLink 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini ElementoSingolo 1`] = `
    +
    + -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste NavigationComponentFixed 1`] = ` -
    - +
    - - Link list 2 + + Didascalia - - -
  • +
    +
    +
    + Alternative Text +
    +
    +
    - - Link list 3 + + Didascalia
    -
  • - + + `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste PrimaryESecondaryAction 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini GrigliaStandard 1`] = `
    +
    + + + +
    +
    - - - - Link list 2 - - - - -
  • - +
    + Alternative Text +
    +
  • +
    + + + +
    +
    - - - - Link list 3 disabled - - - - - -
    -
    -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste Sizing 1`] = ` -
    - +
    + + + +
    +
    - - Link list 2 - - - -
  • - +
    +
    +
    + Alternative Text +
    +
    +
    +
    +
  • +
    +
    +
    - - Link list 3 - - - -
  • - -
  • -
  • - +
    +
    +
    + Alternative Text +
    +
    +
    +
    +
  • +
    +
    +
    - - Link list 4 - - - - + +
    +
    +
    + Alternative Text +
    +
    +
    +
    +
    +
    + `; -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste TitoloLista 1`] = ` +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini Masonry 1`] = `
    + + icon + + + + +
    - - - -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini ElementoSingolo 1`] = ` -
    - - -
    - -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini GrigliaStandard 1`] = ` -
    - -
    -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini Masonry 1`] = ` -
    -
    -
    @@ -34774,7 +34822,7 @@ exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immag > Alternative Text
    @@ -34880,7 +34928,7 @@ exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immag > Alternative Text
    @@ -35231,178 +35279,19 @@ exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immag
    - - - - - - -`; - -exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini Proporzionale 1`] = ` -
    -
    -
    +
    +
    +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immagini Proporzionale 1`] = ` +
    +
    +
    @@ -35797,165 +35686,1556 @@ exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di Immag
    + + +
    +
    + +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link _Esempi 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link _StatoAttivo 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link _StatoDisabilitato 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link CollapseExample 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link ConAvatar 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link ConCheckbox 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link ConSwitch 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link ControlliComponent 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link ControlliSecondariComponent 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link EsempioMultiline 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link HeaderEDividerConLink 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link HeaderEDividerNoLink 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link NavigationComponentFixed 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link PrimaryESecondaryAction 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link Sizing 1`] = ` +
    + +
    +`; + +exports[`Stories Snapshots Documentazione/Organizzare i contenuti/Liste di link TitoloLista 1`] = ` +
    + -
    + `;