Aller au contenu principal

Réutilisabilité

Un use est un objet (conforme au use du canvas) :

ChampRequisDescription
nameOui¹Le metadata.name du composant. Clé de résolution principale.
idNonÉpingle GUID durable ; gagne sur name quand les deux sont présents.
styleNonStyle nommé en cascade vers les éléments de contenu inclus de niveau supérieur qui n'en déclarent aucun.
dataNon$data scoped intégrés dans le composant (voir Flux de données).
overrideNonPrécédence de fusion de configuration — voir Règles de fusion.

¹ Soit name, soit id doit être présent.

Utilisation au niveau du contenu

Insérez un composant à une position spécifique — son contenu remplace le use en place. Ici use est un objet unique :

{
"document": {
"content": [
{ "use": { "name": "company-header" } },
{ "h1": "Invoice #$data.invoice.number" },
{ "use": { "name": "line-items-table", "data": { "rows": "$data.lineItems" } } },
{ "use": { "name": "signature-block", "style": "muted" } }
]
}
}

Utilisation au niveau racine

Énumérez les composants à la racine du document pour fusionner leur configuration (mise en page, en-tête, pied de page, styles, polices) et assembler leur contenu. À la racine du document, use est un tableau — les entrées se composent dans l'ordre de la liste, leur contenu placé avant celui du document :

{
"document": {
"use": [
{ "name": "letterhead", "override": true }
],
"content": [
{ "h1": "My Document" }
]
}
}

Un composant de configuration seule (un en-tête avec header/footer/styles et content vide) ne contribue que son cadre. Un composant porteur de contenu contribue aussi son contenu.

Flux de données

Par défaut, un composant hérite du contexte $data complet du parent. Le champ data sur un use scopes un contexte par instance qui est intégrés dans le contenu du composant — exactement comme un use.data du canvas s'intègre dans un symbole :

{ "use": {
"name": "address-block",
"data": {
"name": "$data.recipient.name",
"city": "$data.recipient.city"
}
} }

À l'intérieur du composant, $data.name et $data.city se résolvent à partir du mappage délimité. Les jetons hors de portée passent par la passe de données globales ultérieures du document.

ScénarioComportement
Aucun champ dataLe composant hérite du contexte $data complet du parent
"data": { "items": "$data.lineItems" }Le composant voit $data.items mappé à partir de lineItems du parent
"data": { "name": "$data.approver.name" }Le composant voit $data.name comme une valeur scalaire

Cascade de styles

use.style nomme un style qui est estampillé sur les éléments de contenu inclus de niveau supérieur qui ne déclarent aucun style propre — la même cascade qu'un style g/use du canvas. Les blocs d'un composant qui définissent leur propre style le conservent ; le reste hérite du défaut de la section. Une poignée style une section incluse complète sans éditer le composant.

Règles de fusion

Lorsqu'un composant se compose dans un document, sa configuration fusionne avec le parent :

PropriétéDéfaut (override false)override: true
Mise en page / En-tête / Pied de page / MétadonnéesL'hôte gagne si défini, sinon héritéLe composant gagne s'il a défini une valeur
Styles / PolicesAjouté s'il n'est pas déjà défini (l'hôte gagne sur la clé)Le composant remplace les entrées du même nom
Contenu (utilisation au niveau du contenu)Remplace l'élément use en place
Contenu (utilisation au niveau racine)Concaténé avant le contenu du document, dans l'ordre de la liste

La valeur par défaut est host-wins : un document conserve la configuration qu'il déclare. Définissez override: true quand un composant devrait posséder le cadre — par ex. un en-tête qui fournit l'en-tête/pied de page même si l'hôte avait déclaré des espaces réservés.