Ajout de fichier
L’ajout de fichier est un élément d’interaction avec l’interface qui permet à l’usager de sélectionner et d’envoyer un ou plusieurs fichiers.
HTML
Structure du composant
Le composant Ajout de fichier permet aux utilisateurs de sélectionner et envoyer un ou plusieurs fichiers.
Sa structure est la suivante :
-
Le composant ajout de fichier est un élément HTML
<div>
défini par la classefr-upload-group
et contenant :-
Le libellé est un élément HTML de type
<label>
, obligatoire :-
Défini par la classe
fr-label
. -
Il dispose de l'attribut
for
dont la valeur est égale à l'ID du champ de fichier. -
Il doit inclure un texte explicatif, obligatoire, dans
un élément HTML
<span>
défini par la classefr-hint-text
.
-
Défini par la classe
-
Le champ de fichier est un élément HTML
<input>
de typefile
, obligatoire :-
Défini par la classe
fr-upload
. -
Il dispose d'un attribut
id
obligatoire, pour être lié au libellé et d'un attributname
dont la valeur est libre. -
Il peut disposer d'un attribut
aria-describedby
dont la valeur est égale à l'ID du groupe de messages. -
Il peut disposer d'un attribut
multiple
dans le cas d'un composant ajout de fichiers multiples.
-
Défini par la classe
-
Le groupe de messages est un élément HTML
<div>
défini par la classefr-messages-group
.-
Il dispose d'un attribut
id
pour être lié au champ de fichier et d'un attributaria-live="polite"
. -
Le groupe de messages peut contenir un message d'erreur
de type
<p>
défini par les classesfr-message
etfr-message--error
.
-
Il dispose d'un attribut
-
Le libellé est un élément HTML de type
Exemple de structure HTML
<div class="fr-upload-group">
<label class="fr-label" for="file-upload">
Ajouter un fichier
<span class="fr-hint-text">Indication : taille maximale : 500 Mo. Formats supportés : jpg, png, pdf. Plusieurs fichiers possibles. Lorem ipsum dolor sit amet, consectetur adipiscing.</span>
</label>
<input class="fr-upload" aria-describedby="file-upload-messages" type="file" id="file-upload" name="file-upload">
<div class="fr-messages-group" id="file-upload-messages" aria-live="polite"></div>
</div>
CSS
Installation du CSS
Pour fonctionner correctement, les styles CSS du core et de
l'ajout de fichier doivent être importés. L'import doit se faire
avant le contenu de la page dans la partie
<head>
, et de
préférence avec le fichier minifié, car plus léger.
<link href="dist/core/core.min.css" rel="stylesheet">
<link href="dist/component/upload/upload.min.css" rel="stylesheet">
NB : Il est aussi possible d'importer le CSS global du DSFR
dsfr.min.css
.
Pour fonctionner sur Internet Explorer 11, un fichier legacy peut aussi être importé :
<link href="dist/core/core.legacy.min.css" rel="stylesheet">
<link href="dist/component/upload/upload.legacy.min.css" rel="stylesheet">
Variante d'ajout de fichier avec erreur
Le composant Ajout de fichier peut être affiché en état d'erreur
avec l'utilisation de la classe
fr-upload-group--error
et comporter dans le groupe de messages un message d'erreur.
Exemple de variante d'ajout de fichier avec erreur
<div class="fr-upload-group fr-upload-group--error">
<label class="fr-label" for="file-upload-with-error">
Ajouter un fichier
<span class="fr-hint-text">Indication : taille maximale : 500 Mo. Formats supportés : jpg, png, pdf. Plusieurs fichiers possibles. Lorem ipsum dolor sit amet, consectetur adipiscing.</span>
</label>
<input class="fr-upload" aria-describedby="file-upload-with-error-messages" type="file" id="file-upload-with-error" name="file-upload-with-error">
<div class="fr-messages-group" id="file-upload-with-error-messages" aria-live="polite">
<p class="fr-message fr-message--error">Format de fichier non supporté</p>
</div>
</div>
Variante d'ajout de fichiers multiples
Afin de pouvoir sélectionner plusieurs fichiers, il faut ajouter
l'attribut multiple
à la
balise input
Exemple de variante d'ajout de fichiers multiples
<div class="fr-upload-group">
<label class="fr-label" for="file-upload-multiple">
Ajouter des fichiers
<span class="fr-hint-text">Indication : taille maximale : 500 Mo. Formats supportés : jpg, png, pdf. Plusieurs fichiers possibles. Lorem ipsum dolor sit amet, consectetur adipiscing.</span>
</label>
<input class="fr-upload" aria-describedby="file-upload-multiple-messages" multiple type="file" id="file-upload-multiple" name="file-upload-multiple">
<div class="fr-messages-group" id="file-upload-multiple-messages" aria-live="polite">
</div>
</div>
Variante d'ajout de fichier désactivé
Le composant Ajout de fichier peut être désactivé avec
l'utilisation de la classe
fr-upload-group--disabled
et comporter dans le groupe de messages un message d'erreur.
Exemple de variante d'ajout de fichier désactivé
<div class="fr-upload-group fr-upload-group--disabled">
<!-- Contenu de l'ajout de fichier désactivé -->
</div>
JavaScript
Le composant Ajout de fichier ne nécessite pas l'utilisation de JavaScript pour son fonctionnement de base.