<div class="rtds-dialog">
<div role="dialog" id="openModalShare" aria-labelledby="openModalShareLabel" aria-modal="true" class="rtds-hidden">
<div class="rtds-dialog__header">
<h2 id="openModalShareLabel" class="rtds-dialog__title">
Condividi sui social
</h2>
<button type="button" class="rtds-btn
rtds-btn--icon rtds-btn--l rtds-dialog__close-button" id="close-modal-share-button" onclick="closeDialog(this)"><svg class="rtds-icon rtds-fill-current rtds-w-6 rtds-h-6 md:rtds-w-8 md:rtds-h-8" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#mini--x-mark" />
</svg>
<span class="rtds-sr-only">
Chiudi la modale
</span>
</button>
</div>
<div class="rtds-dialog__content" tabindex="0">
<div class="rtds-social-links rtds-flex">
<ul class="rtds-flex rtds-items-center rtds-gap-2">
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-p-2 xl:rtds-p-1 rtds-text-social-facebook rtds-link--lg">
<span class="rtds-sr-only">Condividi il contenuto su Facebook</span>
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-10 lg:rtds-h-10" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#solid--facebook" />
</svg>
</a>
</li>
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-p-2 xl:rtds-p-1 rtds-text-social-instagram rtds-link--lg">
<span class="rtds-sr-only">Condividi il contenuto su Instagram</span>
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-10 lg:rtds-h-10" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#solid--instagram" />
</svg>
</a>
</li>
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-p-2 xl:rtds-p-1 rtds-text-social-linkedin rtds-link--lg">
<span class="rtds-sr-only">Condividi il contenuto su LinkedIn</span>
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-10 lg:rtds-h-10" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#solid--linkedin" />
</svg>
</a>
</li>
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-p-2 xl:rtds-p-1 rtds-text-social-x rtds-link--lg">
<span class="rtds-sr-only">Condividi il contenuto su X</span>
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-10 lg:rtds-h-10" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#solid--x" />
</svg>
</a>
</li>
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-p-2 xl:rtds-p-1 rtds-text-social-youtube rtds-link--lg">
<span class="rtds-sr-only">Condividi il contenuto su YouTube</span>
<svg class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-10 lg:rtds-h-10" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#solid--youtube" />
</svg>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
{% extends '@modal-dialog' %}
{% block contentInner %}
{% render '@social-links', socialLinks, true %}
{% endblock contentInner %}
{
"dialogId": "openModalShare",
"label": "Condividi sui social",
"closeButton": {
"variant": "--icon",
"context": {
"label": "Chiudi la modale",
"icon": "mini--x-mark",
"id": "close-modal-share-button",
"classes": "rtds-btn--l rtds-dialog__close-button",
"iconSize": "rtds-w-6 rtds-h-6 md:rtds-w-8 md:rtds-h-8",
"callback": "closeDialog(this)"
}
},
"buttons": [
{
"label": "Annulla",
"callback": "closeDialog(this)",
"classes": "rtds-btn--outlined"
}
],
"socialLinks": {
"wrapperClasses": "rtds-flex",
"listGap": "rtds-gap-2",
"linkIconSize": "rtds-w-8 rtds-h-8 lg:rtds-w-10 lg:rtds-h-10",
"itemClasses": "rtds-flex rtds-items-center",
"itemLinkClasses": "rtds-text-2xl rtds-p-2 xl:rtds-p-1",
"items": [
{
"label": "Condividi il contenuto su Facebook",
"icon": "solid--facebook",
"color": "rtds-text-social-facebook"
},
{
"label": "Condividi il contenuto su Instagram",
"icon": "solid--instagram",
"color": "rtds-text-social-instagram"
},
{
"label": "Condividi il contenuto su LinkedIn",
"icon": "solid--linkedin",
"color": "rtds-text-social-linkedin"
},
{
"label": "Condividi il contenuto su X",
"icon": "solid--x",
"color": "rtds-text-social-x"
},
{
"label": "Condividi il contenuto su YouTube",
"icon": "solid--youtube",
"color": "rtds-text-social-youtube"
}
]
}
}
Finestra modale per la condivisione di contenuti sui social network. Estende il componente @modal-dialog aggiungendo una lista di link social nel corpo della modale.
Il componente estende @modal-dialog e renderizza al suo interno il componente @social-links. L’apertura e chiusura sono gestite tramite l’ID del dialogo (dialogId).
@modal-dialog — modale base che fornisce struttura, overlay e accessibilità@social-links — lista di link ai social networkContesto di sviluppo Fractal/Nunjucks — Questa sezione riguarda esclusivamente i parametri del context .config.yml usati durante lo sviluppo nella libreria. Non descrive attributi HTML da usare nei temi o ambienti di implementazione.
dialogId (stringa, obbligatorio): ID univoco del dialogo, usato per collegare il pulsante di apertura (aria-controls) alla modalelabel (stringa, opzionale): Titolo della modale. Default: "Condividi sui social"buttons (array, opzionale): Pulsanti nel footer della modale. Ogni item accetta:label (stringa): Testo del pulsantecallback (stringa): Funzione JavaScript da chiamare al click (es. closeDialog(this))classes (stringa): Classi CSS del pulsante (es. rtds-btn--outlined)socialLinks.wrapperClasses (stringa): Classi CSS per il wrapper della listasocialLinks.listGap (stringa): Gap tra gli elementi (es. rtds-gap-2)socialLinks.linkIconSize (stringa): Dimensioni icone dei link (es. rtds-w-8 rtds-h-8)socialLinks.itemClasses (stringa): Classi CSS per ogni itemsocialLinks.itemLinkClasses (stringa): Classi CSS per ogni linksocialLinks.items (array): Lista dei social network, ognuno con:label (stringa): Testo accessibile del link (es. "Condividi su Facebook")icon (stringa): ID icona dallo sprite SVG (es. solid--facebook)color (stringa): Classe colore (es. rtds-text-social-facebook)Livello AA — criteri pertinenti:
role="dialog", aria-modal="true" e aria-labelledby da @modal-dialoglabel che descriva l’azione e la destinazione (non solo il nome del social)@modal-dialog@modal-dialog — eredita tutta la struttura ARIA della modale base@social-links| Attributo | Valori | Condizione |
|---|---|---|
role="dialog" |
— | ereditato da @modal-dialog |
aria-modal="true" |
— | ereditato da @modal-dialog |
aria-labelledby |
"Label" |
ereditato da @modal-dialog |
@modal-dialog:focus-visible è sempre visibile e non viene rimosso via CSSlabel descrittive (es. "Condividi su Facebook", non solo "Facebook")label (default: "Condividi sui social")<!-- Pulsante che apre la modale -->
<button
type="button"
aria-controls="openModalShare"
class="rtds-btn rtds-btn--primary"
>
Condividi
</button>
<!-- La modale viene renderizzata tramite Fractal/Nunjucks -->
<div class="rtds-dialog">
<div role="dialog" id="openModalShare" aria-labelledby="openModalShareLabel" aria-modal="true" class="rtds-hidden">
<div class="rtds-dialog__header">
<h2 id="openModalShareLabel" class="rtds-dialog__title">
Condividi sui social
</h2>
</div>
<div class="rtds-dialog__content" tabindex="0">
<div class="rtds-social-links rtds-grid rtds-gap-1 md:rtds-flex md:rtds-gap-6 ">
<ul class="rtds-flex rtds-items-center rtds-gap-4">
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-content-05 rtds-p-2 xl:rtds-p-1 rtds-text-social-facebook rtds-link--lg">
<span class="rtds-sr-only">Condividi su Facebook</span>
<svg
class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-6 lg:rtds-h-6"
aria-hidden="true"
focusable="false"
role="img"
>
<use href="../../icons.svg#solid--facebook" />
</svg>
</a>
</li>
<li class="rtds-flex rtds-items-center">
<a href="" class="rtds-link rtds-text-2xl rtds-content-05 rtds-p-2 xl:rtds-p-1 rtds-text-social-linkedin rtds-link--lg">
<span class="rtds-sr-only">Condividi su LinkedIn</span>
<svg
class="rtds-icon rtds-fill-current rtds-w-8 rtds-h-8 lg:rtds-w-6 lg:rtds-h-6"
aria-hidden="true"
focusable="false"
role="img"
>
<use href="../../icons.svg#solid--linkedin" />
</svg>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>