Transcription
La transcription est un élément d’interaction avec l’interface permettant à l’usager d'afficher ou de masquer le texte traduisant un contenu média au sein d’une page.
HTML
Structure du composant
Le composant Transcription permet d'afficher et de masquer du contenu textuel.
Sa structure est la suivante :
-
Le conteneur de la transcription est un élément HTML
<div>
défini par la classefr-transcription
. -
Le bouton pour afficher/masquer le contenu est défini par la
classe
fr-transcription__btn
, et son libellé constitue le titre.- Le bouton doit être de type "button".
-
Le bouton dispose d'un attribut
aria-expanded
, sa valeur [true|false] défini si le collapse est ouvert ou fermé -
Le bouton est lié au collapse via l'attribut
aria-controls
, sa valeur doit correspondre à l'attributid
du collapse.
-
Le bloc refermable, défini par la classe
fr-collapse
, est une<div>
placée après le bouton. Il s'agit d'un élément générique du core utilisé par d'autres composants tels que la navigation ou l'accordéon.-
Il dispose d'un attribut
id
obligatoire, pour être lié au bouton d'ouverture. -
Le bloc refermable contient le pied de page de la
transcription, élément HTML
<div>
, défini par la classefr-transcription__footer
.-
Le pied de page contient un conteneur, élément HTML
<div>
, défini par la classefr-transcription__actions-group
pour inclure les boutons d'action.-
Le bouton d'ouverture de la modale est un élément
HTML
<button>
, défini par les classesfr-btn
etfr-btn--fullscreen
, et son titre est "Agrandir".- Le bouton doit être de type "button".
-
Le bouton dispose d'un attribut
aria-label
, dont la valeur est "Agrandir la transcription". -
Le bouton dispose d'un attribut
data-fr-opened
, sa valeur [true|false] défini si le collapse est ouvert ou fermé -
Le bouton est lié à la modale via l'attribut
aria-controls
, sa valeur doit correspondre à l'attributid
de la modale.
-
Le bouton d'ouverture de la modale est un élément
HTML
-
Le pied de page contient un conteneur, élément HTML
-
Le bloc refermable contient une modale, élément HTML
<dialog>
pour afficher le contenu en plein écran, définie par la classefr-modal
.-
Elle dispose d'un attribut
id
obligatoire, pour être lié au bouton d'ouverture. -
la modale est lié à son titre via l'attribut
aria-labelledby
, dont la valeur doit correspondre à l'attributid
du titre. -
Le contenu de la modale reprend la structure du
composant
Modale
et son contenu est libre, mais nécessite l'utilisation
des balises adéquates, il n'est pas correcte de placer
du texte directement dans une
<div>
.
-
Elle dispose d'un attribut
-
Il dispose d'un attribut
Exemple de structure HTML
<div class="fr-transcription">
<button type="button" class="fr-transcription__btn" aria-expanded="false" aria-controls="fr-transcription-collapse">Transcription</button>
<div class="fr-collapse" id="fr-transcription-collapse">
<div class="fr-transcription__footer">
<div class="fr-transcription__actions-group">
<button aria-controls="fr-transcription-modal" aria-label="Agrandir la transcription" data-fr-opened="false" type="button" class="fr-btn--fullscreen fr-btn">Agrandir</button>
</div>
</div>
<dialog id="fr-transcription-modal" class="fr-modal" aria-labelledby="fr-transcription-modal-title">
<div class="fr-container fr-container--fluid fr-container-md">
<div class="fr-grid-row fr-grid-row--center">
<div class="fr-col-12 fr-col-md-10 fr-col-lg-8">
<div class="fr-modal__body">
<div class="fr-modal__header">
<button aria-controls="fr-transcription-modal" title="Fermer" type="button" class="fr-btn--close fr-btn">Fermer</button>
</div>
<div class="fr-modal__content">
<h1 id="fr-transcription-modal-title" class="fr-modal__title">
Titre de la transcription
</h1>
<!-- Contenu de la transcription -->
</div>
</div>
</div>
</div>
</div>
</dialog>
</div>
</div>
CSS
Installation du CSS
Pour fonctionner correctement, les styles CSS du core et de la
transcription 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/transcription/transcription.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/transcription/transcription.legacy.min.css" rel="stylesheet">
JavaScript
Installation du JavaScript
Pour fonctionner le composant transcription nécessite l'utilisation de JavaScript. Chaque composant utilisant javascript possède un fichier Js spécifique et requiert le fichier Js du core.
Il est donc nécessaire d'importer ces fichiers à la fin de la page
(avant </body>
) :
<script type="module" src="dist/core/core.module.min.js"></script>
<script type="module" src="dist/component/transcription/transcription.module.min.js"></script>
NB: Il est aussi possible d'importer le Js global du DSFR
dsfr.module.js
Pour fonctionner sur Internet Explorer 11, un fichier legacy, en version nomodule ES5, peut aussi être importé :
<script type="text/javascript" nomodule href="dist/legacy/legacy.nomodule.min.js" ></script>
<script type="text/javascript" nomodule src="dist/core/core.nomodule.min.js"></script>
<script type="text/javascript" nomodule src="dist/component/transcription/transcription.nomodule.min.js"></script>
Une fois le JavaScript chargé, le composant fonctionne automatiquement.
Instances
Sur la transcription, les éléments suivants sont instanciés :
-
La transcription, via la classe :
fr-transcription
-
Le bouton d'ouverture de l'accordéon, via la classe
fr-transcription__btn
-
Le collapse, via la classe
fr-collapse
-
Le bouton d'ouverture de la modale, via l'attribut'
aria-controls
-
La modale, via la classe
fr-modal
Une fois chargé, le Js ajoute un attribut
data-fr-js-NOM_INSTANCE="true"
sur chacun des éléments instanciés
API
Il est possible d'interagir avec les instances du composants en JavaScript via une API.
Cette API est disponible depuis la méthode
window.dsfr(instance)
du
core.
Exemple :
const elem = document.getElementById('ID_COLLAPSE');
dsfr(elem).collapse.disclose();
L'ensemble des propriétés et méthodes disponibles sont définies ci-après :
transcription
Description | Défini si le fonctionnement de la transcription est activé ou non |
---|---|
Type | property |
Retour | Boolean |
Exemple |
dsfr(elem).transcription.isEnabled = false
|
collapseButton
Description | Replace le focus sur le bouton |
---|---|
Type | function |
Arguments | none |
Retour | Boolean |
Exemple |
dsfr(elem).collapseButton.focus()
|
Description | Retourne l'instance du dsfr parente, ici la transcription |
---|---|
Type | property |
Retour | object | null |
Exemple |
dsfr(elem).parent
|
Description | Renvoie le noeud HTML de l'élément. |
---|---|
Type | property |
Retour | DOMElement |
Exemple |
dsfr(elem).collapseButton.node
|
collapse
Description | Ferme le collapse |
---|---|
Type | function |
Arguments | none |
Retour | none |
Exemple |
dsfr(elem).collapse.conceal()
|
Description | Ouvre le collapse |
---|---|
Type | function |
Arguments | none |
Retour | none |
Exemple |
dsfr(elem).collapse.disclose()
|
Description | Retourne vrai si le collapse est ouvert |
---|---|
Type | property |
Retour | Boolean |
Exemple |
dsfr(elem).collapse.isDisclosed
|
Description | Défini si le fonctionnement de l'accordéon est activé ou non |
---|---|
Type | property |
Retour | Boolean |
Exemple |
dsfr(elem).collapse.isEnabled = false
|
Description | Retourne l'API du groupe, ou null s'il n'y a pas de groupe |
---|---|
Type | property |
Retour | object | null |
Exemple |
dsfr(elem).collapse.group
|
Description | Retourne un tableau de boutons d'ouverture du collapse |
---|---|
Type | property |
Retour | Array |
Exemple |
dsfr(elem).collapse.buttons
|
Description | Replace le focus sur le bouton du collapse |
---|---|
Type | function |
Arguments | none |
Retour | Boolean |
Exemple |
dsfr(elem).collapse.focus()
|
Description | Retourne l'instance du dsfr parent, ici la transcription |
---|---|
Type | property |
Retour | object | null |
Exemple |
dsfr(elem).parent
|
Description | Renvoie un tableau d'instances enfants |
---|---|
Type | property |
Retour | Array |
Exemple |
dsfr(elem).children
|
Description | Renvoie le noeud HTML de l'élément. |
---|---|
Type | property |
Retour | DOMElement |
Exemple |
dsfr(elem).collapse.node
|
modalButton
Description | Replace le focus sur le bouton |
---|---|
Type | function |
Arguments | none |
Retour | Boolean |
Exemple |
dsfr(elem).modalButton.focus()
|
Description | Retourne l'instance du dsfr parente, ici la transcription |
---|---|
Type | property |
Retour | object | null |
Exemple |
dsfr(elem).parent
|
Description | Renvoie le noeud HTML de l'élément. |
---|---|
Type | property |
Retour | DOMElement |
Exemple |
dsfr(elem).modalButton.node
|
modal
Description | Ferme la modale |
---|---|
Type | function |
Arguments | none |
Retour | none |
Exemple |
dsfr(elem).modal.conceal()
|
Description | Ouvre la modale |
---|---|
Type | function |
Arguments | none |
Retour | none |
Exemple |
dsfr(elem).modal.disclose()
|
Description | Retourne vrai si la modale est ouverte |
---|---|
Type | property |
Retour | Boolean |
Exemple |
dsfr(elem).modal.isDisclosed
|
Description | Défini si le fonctionnement de la modale est activé ou non |
---|---|
Type | property |
Retour | Boolean |
Exemple |
dsfr(elem).modal.isEnabled = false
|
Description | Retourne l'API du groupe, ou null s'il n'y a pas de groupe |
---|---|
Type | property |
Retour | object | null |
Exemple |
dsfr(elem).modal.group
|
Description | Retourne un tableau de boutons d'ouverture de la modal |
---|---|
Type | property |
Retour | Array |
Exemple |
dsfr(elem).modal.buttons
|
Description | Replace le focus sur le bouton de la modale |
---|---|
Type | function |
Arguments | none |
Retour | none |
Exemple |
dsfr(elem).modal.focus()
|
Description | Retourne l'instance du dsfr parent, ici la transcription |
---|---|
Type | property |
Retour | object | null |
Exemple |
dsfr(elem).parent
|
Description | Renvoie un tableau d'instances enfants |
---|---|
Type | property |
Retour | Array |
Exemple |
dsfr(elem).children
|
Description | Renvoie le noeud HTML de l'élément. |
---|---|
Type | property |
Retour | DOMElement |
Exemple |
dsfr(elem).collapse.node
|
Note de version
Voir les évolutions sur github
v1.10.0 - 19 juillet 2023
correctif title et label bouton Agrandir
- Retrait du title sur le bouton agrandir
- Ajout label agrandir dans les exemples de content
#708
a11y retour audit
- place le bouton d’agrandissement avant la modale et inverse les élements via css
-
ajoute
aria-label=”Agrandir la transcription”
sur le bouton d’agrandissement - remplace la balise dialog par une balise div
-
système d'activation / désactivation de la modale
avec ajout / retrait dynamique de
role="dialog"
à l'ouverture / fermeture de la modale - système de vérification et de correction pour l'accessible name de la modale, avec warning explicatifs
#684
déplacement bouton modale
- Pour déterminer le bouton primaire qui sert à l’ouverture, un disclosure filtre parmi les boutons qui lui sont reliés et retire ceux qui se trouve à l’intérieur du contenu du disclosure (ce sont les boutons de fermeture)
- Actuellement, la transcription a le bouton d'ouverture de modale à l'intérieur de son contenu, ce qui bloque le fonctionnement, le bouton n'étant pas reconnu comme primaire.
- Le correctif déplace le bouton après la dialog de la modal et restitue le fonctionnement de la transcription
#680
Ajustement sur l'état défaut et actif
Harmonisation avec la navigation sur Accordion, Sidemenu, Translate et Transcription :
- Passage icône et intitulé en action-high-blue-france
- Ajout background-open-blue-france sur le bouton lorsque l'élément est ouvert
- Icône “arrow-down-s-ligne” (la même que sur navigation)
- Accordion, Translate : Retrait changement de graisse (normal -> bold) à l'ouverture et graisse constante en medium
#564
v1.9.1 - 11 avril 2023
corrige largeur du bouton a l'ouverture de la modale
à l'ouverture de la modale de la transcription, le déplacement des éléments en position fixed change la taille du bouton de la transcription à sa taille minimum. La largeur étendue à 100% permet de la conserver constante.
#565