<div class="rtds-trascinamento-oggetti">
<div class="rtds-trascinamento-oggetti__button-area rtds-flex rtds-flex-col rtds-py-6 rtds-px-8 rtds-items-center rtds-justify-center rtds-gap-4 md:rtds-gap-6 rtds-border-dashed rtds-border-2 rtds-rounded-md">
<div class="rtds-trascinamento-oggetti__description">
<p class="rtds-trascinamento-oggetti__help rtds-text-sm md:rtds-text-base">Clicca il pulsante qui sotto per aprire il catalogo oppure trascina qui un oggetto.</p>
</div>
<button type="button" class="rtds-btn
rtds-btn--icon-left rtds-group/button rtds-trascinamento-oggetti__button rtds-btn rtds-btn--outlined rtds-border-gray-03 rtds-cursor-pointer rtds-gap-2">
<svg class="rtds-icon rtds-fill-current rtds-w-4 rtds-h-4" aria-hidden="true" focusable="false" role="img">
<use href="../../icons.svg#outline--book-open" />
</svg>
Apri il catalogo
</button>
</div>
</div>
<div class="rtds-trascinamento-oggetti{% if has_dragged_content %} has-dragged-content{% endif %}">
<div class="rtds-trascinamento-oggetti__button-area rtds-flex rtds-flex-col rtds-py-6 rtds-px-8 rtds-items-center rtds-justify-center rtds-gap-4 md:rtds-gap-6 rtds-border-dashed rtds-border-2 rtds-rounded-md">
<div class="rtds-trascinamento-oggetti__description">
<p class="rtds-trascinamento-oggetti__help rtds-text-sm md:rtds-text-base">Clicca il pulsante qui sotto per aprire il catalogo oppure trascina qui un oggetto.</p>
</div>
{% render '@button--icon-left', {
icon: 'outline--book-open',
size: 'rtds-w-5 rtds-h-5',
label: "Apri il catalogo",
classes: "rtds-trascinamento-oggetti__button rtds-btn rtds-btn--outlined rtds-border-gray-03 rtds-cursor-pointer rtds-gap-2"
} %}
</div>
</div>
{
"has_dragged_content": false
}
/**
* TRASCINAMENTO OGGETTI
* Componente per il trascinamento degli oggetti
*/
@layer components {
.rtds-trascinamento-oggetti {
--_trascinamento-oggetti-bg: var(--trascinamento-oggetti-bg, var(--color-background-01, var(--color-neutral-50)));
--_trascinamento-oggetti-border: var(--trascinamento-oggetti-border, var(--color-border-gray-03, var(--color-neutral-600)));
--_trascinamento-oggetti-text: var(--trascinamento-oggetti-text, var(--color-content-03, var(--color-neutral-800)));
--_trascinamento-oggetti-btn-bg: var(--trascinamento-oggetti-btn-bg, transparent);
--_trascinamento-oggetti-btn-text: var(--trascinamento-oggetti-btn-text, var(--color-content-01, var(--color-neutral-900)));
}
.rtds-trascinamento-oggetti__button-area {
background-color: var(--_trascinamento-oggetti-bg);
border-color: var(--_trascinamento-oggetti-border);
}
.rtds-trascinamento-oggetti__description {
color: var(--_trascinamento-oggetti-text);
}
.rtds-trascinamento-oggetti__button {
background-color: var(--_trascinamento-oggetti-btn-bg);
color: var(--_trascinamento-oggetti-btn-text);
}
/* Stato has-dragged-content */
.has-dragged-content {
--trascinamento-oggetti-bg: var(--color-focusring);
--trascinamento-oggetti-border: var(--color-border-gray-04, var(--color-neutral-800));
--trascinamento-oggetti-text: var(--color-content-inverse, var(--color-neutral-50));
--trascinamento-oggetti-btn-bg: var(--color-background-inverse, var(--color-neutral-50));
--trascinamento-oggetti-btn-text: var(--color-content-placeholder, var(--color-secondary-500));
}
}
Componente per il caricamento di file basato sul Design System di Designers Italia, variante “Lista file” con rappresentazione statica degli stati.
Il componente Upload è un organismo che permette la rappresentazione dell’interfaccia di caricamento file con una struttura semantica ul/li seguendo esattamente le specifiche di Designers Italia. Il componente mostra diversi stati dei file (successo, caricamento, errore) in modo puramente visuale.
Utilizza questo componente quando è necessario mostrare l’interfaccia di caricamento file, come:
<ul class="upload-file-list"> e <li class="upload-file">visually-hidden per screen readerIl componente Upload utilizza il componente File separato (@file) per gestire la rappresentazione di ogni singolo file. Consulta la documentazione del componente File per maggiori dettagli sui parametri e comportamenti specifici.
Il componente è puramente rappresentativo e non include logica JavaScript. Mostra stati statici definiti nella configurazione. La lista dei file utilizza il componente separato @file per ogni elemento.
La lista dei file utilizza il componente @file:
<ul class="rtds-upload__file-list">
</ul>Ogni file viene renderizzato tramite il componente File che supporta i seguenti stati:
loading: File in caricamentoloading-error: Errore durante caricamento loading-completed: Caricamento completatodownload: File disponibile per downloadIl componente rispetta le linee guida WCAG 2.1:
visually-hidden per contestolabel (string)label: "Carica documenti"multiple (boolean)truemultiple: falseaccept (string)"image/*,.pdf,.doc,.docx""image/*"".pdf"".pdf,.doc,.docx,.txt"helpText (string)helpText: "Dimensione massima: 5MB per file"maxFileSize (string)"10MB""5MB", "2GB", "500KB"files (array)files:
- name: "documento.pdf"
size: "1.2MB"
status: "loading-completed" # loading, loading-error, loading-completed, download
progress: 100 # obbligatorio per stati loading
errorMessage: "Messaggio di errore" # solo per loading-errorcontext:
label: 'Carica documenti'context:
files:
- name: 'documento-caricamento.pdf'
size: '2.1MB'
status: 'loading'
progress: 65
- name: 'file-completato.jpg'
size: '850KB'
status: 'loading-completed'
progress: 100
- name: 'file-errore.pdf'
size: '15MB'
status: 'loading-error'
progress: 30
errorMessage: 'File troppo grande. Max 10MB'
- name: 'documento-download.docx'
size: '2.1MB'
status: 'download'.rtds-upload: Container principale.rtds-upload__button-area: Area pulsante di caricamento.rtds-upload__button: Pulsante di caricamento.rtds-upload__file-list: Lista file (ul)Le classi per i singoli file sono gestite dal componente File:
.rtds-upload__file: Singolo file (li).rtds-upload__file.loading: File in caricamento.rtds-upload__file.loading-error: File con errore.rtds-upload__file.loading-completed: File completato.rtds-upload__file.download: File per download.upload-file.success {
/* Verde per successo */
}
.upload-file.uploading {
/* Blu per caricamento + progress bar */
}
.upload-file.error {
/* Rosso per errore */
}Il componente è completamente responsive:
### Con File Mostrati
rtds-visually-hidden per contestortds-Per integrare funzionalità JavaScript:
La struttura HTML è pronta per essere estesa con JavaScript mantenendo compatibilità con Designers Italia.