Single Directory Component SDC

Nella cartella principale del tema deve esserci una sottocartella components/ con dentro una cartella per ogni component e i file .yml e .twig (eventualmente anche .css e .js), ad esempio nome_tema/components/button/button.component.yml e nome_tema/components/button/button.twig (il nome del file non è button.html.twig ma è button.twig).

Per includere un component in un template usare:

{# verificare questo esempio che probabilmente non è corretto #}
{# https://www.drupal.org/docs/develop/theming-drupal/using-single-directory-components/using-your-new-single-directory-component #}
{{ include('nome_tema:nome_component', {
  props: { {# props per dati strutturati e slots per dati non strutturati #}
    message: 'Ciao!'
  }
}) }}

Nel file .component.yml devono essere specificati i seguenti dati:

  • $schema: utile all'IDE per funzionalità di autocomplete, link alla documentazione e riconoscimento degli errori
  • name: il nome del componente
  • description: descrizione del componente
  • props: le proprietà che il componente accetta (numeri, booleani, oggetti strutturati)
  • slots: markup da inserire nel componente
  • group: etichetta se si vogliono raggruppare i componenti
  • status: experimental | stable | deprecated | obsolete
  • dependencies: array di librerie
  • libraryOverrides: per fare l'override di librerie CSS/JS
  • replaces: dichiara che il componente sostituisce un altro componente

Le chiavi definite in props.properties e in slots diventano variabili disponibili nel template del componente. Le props sono dati strutturati validabili tramite JSON Schema; gli slot sono contenuti/render array o markup da inserire nel componente.