Ga naar hoofdinhoud

DSO Toolkit v101.0.0 ๐Ÿ˜บ

ยท 3 minuten leestijd
Xiangju Zou
DSO Toolkit Maintainer
Chris van der Leij
DSO Toolkit Maintainer

Deze release bevat BREAKING changes voor Angular-gebruikers en de volgende componenten:

  • Form Group
  • Document Header

Angular 21 of 22 vereistโ€‹

Breaking: De ondersteuning voor Angular 20 is verwijderd. De nieuwe Signal Forms-adapters gebruiken @angular/forms/signals, dat pas vanaf Angular 21 beschikbaar is. Omdat de adapters onderdeel zijn van het hoofdpackage @dso-toolkit/angular, vereist deze package nu Angular 21 of 22.

Signal Formsโ€‹

Voor Angular Signal Forms zijn de adapters beschikbaar via @dso-toolkit/angular. Importeer de gewone DSO-componenten en de Signal Forms-adapters uit hetzelfde package:

import {
DsoDatePicker,
DsoDatePickerFieldControl,
DsoSelectable,
DsoSelectableCheckboxFieldControl,
DsoSelectableRadioGroupFieldControl,
} from "@dso-toolkit/angular";

Gebruik de adapters samen met Angulars FormField-directive:

import { Component, signal } from "@angular/core";
import { FormField, form } from "@angular/forms/signals";

@Component({
standalone: true,
imports: [DsoDatePicker, DsoSelectable, DsoDatePickerFieldControl, DsoSelectableCheckboxFieldControl, FormField],
template: `
<dso-date-picker [formField]="myForm.datum" minDate="01-01-2024" maxDate="31-12-2024" />
<dso-selectable type="checkbox" [formField]="myForm.akkoord" />
`,
})
export class ExampleComponent {
model = signal({ datum: "", akkoord: false });
myForm = form(this.model);
}

Bij een Date Picker met [formField] gebruik je minDate en maxDate voor datumgrenzen. De namen min en max zijn binnen Angular Signal Forms gereserveerd voor numerieke formuliergrenzen. Angular geeft die getallen ook door aan de gegenereerde Date Picker-proxy. Daarom accepteren min en max in Core naast datumstrings ook getallen; getallen stellen geen datumgrens in. De FormField-adapter geeft de datumstrings via minDate en maxDate door aan de Date Picker.

Voor radio-Selectables komt [formField] op een fieldset met dsoSelectableRadioGroup. Zo behouden de radio's hun vaste value en beheert de groep de formulierwaarde:

<fieldset dsoSelectableRadioGroup [formField]="myForm.keuze">
<legend>Maak een keuze</legend>
<dso-selectable type="radio" name="keuze" value="ja">Ja</dso-selectable>
<dso-selectable type="radio" name="keuze" value="nee">Nee</dso-selectable>
</fieldset>

Importeer hiervoor ook DsoSelectableRadioGroupFieldControl en voeg keuze toe aan je formuliermodel.

Form Groupโ€‹

Breaking: In het HTML/CSS component Form Group (Static) schrijven wij nog het gebruik voor van een icon-only Button. Dit gaan we vervangen door een Icon Button (dso-icon-button).

Migratiepadโ€‹

Gebruik het Web Component Icon Button.

โŒ
<div class="form-group dso-static">
<div class="dso-label-container">
<label class="control-label" for="mijn-id"> Kleur van object </label>
<dso-info-button label="Toelichting bij veld"></dso-info-button>
</div>
<div class="dso-field-container">
rood

<button type="button" class="dso-tertiary">
<span class="sr-only">Edit</span><dso-icon icon="pencil"></dso-icon>
</button>
</div>
</div>

โœ…
<div class="form-group dso-static">
<div class="dso-label-container">
<label class="control-label" for="mijn-id"> Kleur van object </label>
<dso-info-button label="Toelichting bij veld"></dso-info-button>
</div>
<div class="dso-field-container">
rood

<dso-icon-button variant="tertiary" icon="pencil" label="Edit"></dso-icon-button>
</div>
</div>

Document Headerโ€‹

Breaking: In het HTML/CSS component Document Header schrijven wij nog het gebruik voor van een icon-only Button. Dit gaan we vervangen door een Icon Button (dso-icon-button).

Migratiepadโ€‹

Gebruik het Web Component Icon Button.

โŒ
<dso-responsive-element class="dso-document-header">
...
<div class="dso-document-header-container">
...
<button type="button" class="dso-document-header-map-action">
<span class="sr-only">Actie</span><dso-icon icon="map-location"></dso-icon>
</button>
...
</div>
</dso-responsive-element>

โœ…
<dso-responsive-element class="dso-document-header">
...
<div class="dso-document-header-container">
...
<dso-icon-button variant="tertiary" icon="map-location" label="Actie"></dso-icon-button>
...
</div>
</dso-responsive-element>