Componente
Dropdown
Menu a tendina su <details>/<summary> nativi con daisyUI dropdown e menu: apertura, chiusura con Esc e tastiera senza JavaScript. La tacca .italia è una pseudo-classe before che eredita lo sfondo del menu.
- Riferimento
<it-dropdown>, <it-dropdown-item>- Classi
ita-dropdownita-menuita-menu-endita-menu-topita-menu-top-endita-menu-leftita-menu-rightita-menu-accentita-menu-fullita-menu-no-notchita-menu-item-lgita-chevron- Basato su (daisyUI)
dropdowndropdown-contentdropdown-enddropdown-topdropdown-leftdropdown-rightmenumenu-titlemenu-disabled- Solo CSS
- Niente Floating UI: il posizionamento è quello di daisyUI (dropdown-end, dropdown-top, dropdown-left, dropdown-right), quindi non c'è flip automatico. La tacca usa before:bg-inherit, così segue da sola il menu chiaro o scuro.
- Storybook
- Apri le storie di Dropdown
Varianti
Apri dropdown
Apri dropdown
Apri dropdown
Apri dropdown
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 flex flex-wrap items-start gap-3">
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details>
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-secondary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details>
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-success gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details>
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-danger gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details>
</div>Posizionamento
daisyUI posiziona il menu; la tacca segue l'allineamento.
Apri dropdown
Apri dropend
Apri dropstart
Apri dropup
Mostra il codice HTMLNascondi il codice HTML
<div class="flex flex-col items-start gap-4 pb-56 sm:grid sm:h-80 sm:grid-cols-3 sm:place-items-center sm:gap-2 sm:pb-0">
<div class="sm:col-start-2"><details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details></div>
<div class="sm:col-start-1 sm:row-start-2"><details class="dropdown ita-dropdown dropdown-right">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropend</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu ita-menu-right">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details></div>
<div class="sm:col-start-3 sm:row-start-2"><details class="dropdown ita-dropdown dropdown-left">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropstart</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu ita-menu-left">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details></div>
<div class="sm:col-start-2 sm:row-start-3"><details class="dropdown ita-dropdown dropdown-top">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropup</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu ita-menu-top">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details></div>
</div>Menu con voci attive
Apri dropdown
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 [&_details]:align-top"><details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#" aria-current="true"><span>Attivo<span class="sr-only"> attivo</span></span></a></li>
<li><a href="#"><span>Non attivo</span></a></li>
<li><a href="#"><span>Non attivo</span></a></li>
</ul>
</details></div>Menu con voci disabilitate
Apri dropdown
Dropdown disabilitato
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 flex flex-wrap items-start gap-3">
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li class="menu-disabled"><a href="#" aria-disabled="true" tabindex="-1"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details>
<details class="dropdown ita-dropdown" aria-disabled="true">
<summary class="ita-btn ita-btn-primary gap-2"><span>Dropdown disabilitato</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details>
</div>Menu con intestazioni e separatori
Apri dropdown
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 [&_details]:align-top"><details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li class="menu-title">Intestazione</li>
<li><a href="#"><span>Azione 1</span></a></li>
<li role="separator"></li>
<li><a href="#"><span>Azione 2</span></a></li>
</ul>
</details></div>Menu con voci grandi
Apri dropdown
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 [&_details]:align-top"><details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#" class="ita-menu-item-lg"><span>Azione 1</span></a></li>
<li><a href="#" class="ita-menu-item-lg"><span>Azione 2</span></a></li>
<li><a href="#" class="ita-menu-item-lg"><span>Azione 3</span></a></li>
</ul>
</details></div>Menu con icone
Icona a sinistra
Icona a destra
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 flex flex-wrap items-start gap-3">
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Icona a sinistra</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><svg class="shrink-0 fill-current" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12,4.9l1.5,4.6l0.2,0.7h5.7l-4,2.9l-0.6,0.4l0.2,0.7l1.5,4.7L12.6,16L12,15.6L11.4,16l-3.9,2.9L9,14.2l0.2-0.7l-0.6-0.4 l-4-2.9h5.7l0.2-0.7L12,4.9 M12,1.7L9.5,9.2H1.6L8,13.9l-2.4,7.6l6.4-4.7l6.4,4.7L16,13.9l6.4-4.7h-7.9L12,1.7z" /></svg> <span>Azione 1</span></a></li>
<li><a href="#"><svg class="shrink-0 fill-current" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12,4.9l1.5,4.6l0.2,0.7h5.7l-4,2.9l-0.6,0.4l0.2,0.7l1.5,4.7L12.6,16L12,15.6L11.4,16l-3.9,2.9L9,14.2l0.2-0.7l-0.6-0.4 l-4-2.9h5.7l0.2-0.7L12,4.9 M12,1.7L9.5,9.2H1.6L8,13.9l-2.4,7.6l6.4-4.7l6.4,4.7L16,13.9l6.4-4.7h-7.9L12,1.7z" /></svg> <span>Azione 2</span></a></li>
<li><a href="#"><svg class="shrink-0 fill-current" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12,4.9l1.5,4.6l0.2,0.7h5.7l-4,2.9l-0.6,0.4l0.2,0.7l1.5,4.7L12.6,16L12,15.6L11.4,16l-3.9,2.9L9,14.2l0.2-0.7l-0.6-0.4 l-4-2.9h5.7l0.2-0.7L12,4.9 M12,1.7L9.5,9.2H1.6L8,13.9l-2.4,7.6l6.4-4.7l6.4,4.7L16,13.9l6.4-4.7h-7.9L12,1.7z" /></svg> <span>Azione 3</span></a></li>
</ul>
</details>
<details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Icona a destra</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu">
<li><a href="#"><span>Azione 1</span> <svg class="shrink-0 fill-current" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12,4.9l1.5,4.6l0.2,0.7h5.7l-4,2.9l-0.6,0.4l0.2,0.7l1.5,4.7L12.6,16L12,15.6L11.4,16l-3.9,2.9L9,14.2l0.2-0.7l-0.6-0.4 l-4-2.9h5.7l0.2-0.7L12,4.9 M12,1.7L9.5,9.2H1.6L8,13.9l-2.4,7.6l6.4-4.7l6.4,4.7L16,13.9l6.4-4.7h-7.9L12,1.7z" /></svg></a></li>
<li><a href="#"><span>Azione 2</span> <svg class="shrink-0 fill-current" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12,4.9l1.5,4.6l0.2,0.7h5.7l-4,2.9l-0.6,0.4l0.2,0.7l1.5,4.7L12.6,16L12,15.6L11.4,16l-3.9,2.9L9,14.2l0.2-0.7l-0.6-0.4 l-4-2.9h5.7l0.2-0.7L12,4.9 M12,1.7L9.5,9.2H1.6L8,13.9l-2.4,7.6l6.4-4.7l6.4,4.7L16,13.9l6.4-4.7h-7.9L12,1.7z" /></svg></a></li>
<li><a href="#"><span>Azione 3</span> <svg class="shrink-0 fill-current" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12,4.9l1.5,4.6l0.2,0.7h5.7l-4,2.9l-0.6,0.4l0.2,0.7l1.5,4.7L12.6,16L12,15.6L11.4,16l-3.9,2.9L9,14.2l0.2-0.7l-0.6-0.4 l-4-2.9h5.7l0.2-0.7L12,4.9 M12,1.7L9.5,9.2H1.6L8,13.9l-2.4,7.6l6.4-4.7l6.4,4.7L16,13.9l6.4-4.7h-7.9L12,1.7z" /></svg></a></li>
</ul>
</details>
</div>Menu a tutta larghezza
Apri dropdown
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 w-full max-w-md"><details class="dropdown ita-dropdown w-full">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu ita-menu-full">
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details></div>Menu su sfondo accent
surface: "accent", il blu profondo dello slim header: la variante scura di Dev Kit Italia, con il colore deciso dal tema.
Apri dropdown
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 [&_details]:align-top"><details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Apri dropdown</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu ita-menu-accent">
<li class="menu-title">Intestazione</li>
<li><a href="#"><span>Azione 1</span></a></li>
<li><a href="#"><span>Azione 2</span></a></li>
<li><a href="#"><span>Azione 3</span></a></li>
</ul>
</details></div>Menu di azioni
role="menu" per un menu di comandi invece di una lista di link.
Modifica
Mostra il codice HTMLNascondi il codice HTML
<div class="h-64 [&_details]:align-top"><details class="dropdown ita-dropdown">
<summary class="ita-btn ita-btn-primary gap-2"><span>Modifica</span><svg class="ita-chevron" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M12 15.5 5.5 9 7 7.5l5 5 5-5L18.5 9z"/></svg></summary>
<ul class="dropdown-content menu ita-menu" role="menu">
<li><a href="#"><span>Copia</span></a></li>
<li><a href="#"><span>Taglia</span></a></li>
<li><a href="#"><span>Incolla</span></a></li>
<li role="separator"></li>
<li><a href="#"><span>Elimina</span></a></li>
</ul>
</details></div>