Stijlen op Web Component attributes.
Het koppelvlak van een Web Component uit de DSO Toolkit bestaat voornamelijk uit attributen en properties, en events. Het is ook mogelijk om met CSS custom properties te werken. Het koppelvlak van de toolkit heeft (nog) geen CSS custom properties. In dit artikel gaan we alleen in op het werken met attributen en properties.
Een Web Component heeft twee typen attributen: Functioneel en/of stijlen.
Met Stencil worden functionele attributen en properties samengevoegd tot een "Prop". Stencil synchroniseert de waarde van een prop tussen een attribuut en property. Zie de documentatie voor Stencil voor meer informatie over de @Prop()
decorator.
In een Stencil Component wordt met @Prop()
het functionele koppelvlak gedefinieerd.
// component.tsx
export class DsoComponent {
@Prop()
groente?: string;
}
// afnemer.html
<dso-component groente="wortel"></dso-component>;
Attributen en properties die in een Stencil Component niet met een prop zijn gedefinieert mag niet op worden gestijld. Een noemenswaardig attribuut is het class
attribuut. Je zou kunnen zeggen dat dit attribuut al op HTMLElement
is gedefineerd en mag daarom niet nogmaals worden gedefineerd.
Om binnen een component te kunnen stijlen moet je in plaats van een class gebruik maken van attributen. Dit kan een functioneel attribuut zijn, maar je kan ook een stijlattribuut toevoegen. Dit kan met een Stencil Functional Component <Host>
.
Het is bad practice dat een Web Component op zijn host element classes gaat toevoegen/verwijderen. Zie https://web.dev/custom-elements-best-practices/ "Do not self-apply classes.".
// ❌
render() {
return (
<Host class="dso-fullscreen">
<div>[...]</div>
</Host>
);
}
// ✅
render() {
return (
<Host fullscreen>
<div>[...]</div>
</Host>
);
}