@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
88 lines • 8.68 kB
JavaScript
import { Component, Input } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Base class for all ControlValueAccessor classes defined in Forms package. Contains common logic and utility functions.
* Le type de `value` est : T | undefined, undefined par défaut. Par exemple si on manipule un input de type number, celui-ci
* sera initialisé à undefined par défaut.
*/
// Même si on ne précise pas undefined, à l'exécution, c'est quand même le cas.
// Même si on indique un type number, à l'exécution, si l'utilisateur saisie "1a", value sera de type string
export class DefaultValueAccessorComponent {
constructor() {
/**
* Permet de désactiver le champ.
*/
this.disabled = false;
/** @internal */
this.fnOnChange = (_) => { };
/** @internal */
this.fnOnTouched = () => { };
}
get value() {
return this._value;
}
/**
* La valeur gérée par le champ de formulaire.
*/
set value(value) {
this._value = value;
this.fnOnChange(this.value);
}
/**
* Writes a new value to the element.
* This method is called by the forms API to write to the view when programmatic changes from model to view are requested.
*
* @internal
*/
writeValue(value) {
this._value = value;
}
/**
* Registers a callback function that is called when the control's value changes in the UI.
* When the value changes in the UI, call the registered function to allow the forms API to update itself:
* host: {
* '(change)': '_onChange($event.target.value)'
* }
* @internal
*/
registerOnChange(fn) {
this.fnOnChange = fn;
}
/**
* Registers a callback function that is called by the forms API on initialization to update the form model on blur.
* On blur (or equivalent), your class should call the registered function to allow the forms API to update itself:
* host: {
* '(blur)': '_onTouched()'
* }
* @internal
*/
registerOnTouched(fn) {
this.fnOnTouched = fn;
}
/** @internal */
onBlur() {
this.fnOnTouched();
}
/**
* Function that is called by the forms API when the control status changes to or from 'DISABLED'.
* Depending on the status, it enables or disables the appropriate DOM element.
*
* @internal
*/
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultValueAccessorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DefaultValueAccessorComponent, selector: "ng-component", inputs: { disabled: "disabled", value: "value" }, ngImport: i0, template: '', isInline: true }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultValueAccessorComponent, decorators: [{
type: Component,
args: [{
template: '',
}]
}], propDecorators: { disabled: [{
type: Input
}], value: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC12YWx1ZS1hY2Nlc3Nvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvZGVmYXVsdC12YWx1ZS1hY2Nlc3Nvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR2pEOzs7O0dBSUc7QUFDSCwrRUFBK0U7QUFDL0UsNEdBQTRHO0FBSTVHLE1BQU0sT0FBZ0IsNkJBQTZCO0lBSG5EO1FBSUU7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBaUUxQixnQkFBZ0I7UUFDaEIsZUFBVSxHQUFHLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXRDLGdCQUFnQjtRQUNoQixnQkFBVyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQUN4QjtJQWxFQyxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBYSxLQUFLLENBQUMsS0FBb0I7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEtBQW9CO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZ0JBQWdCLENBQUMsRUFBb0I7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOytHQW5FbUIsNkJBQTZCO21HQUE3Qiw2QkFBNkIsc0dBRnZDLEVBQUU7OzRGQUVRLDZCQUE2QjtrQkFIbEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjs4QkFLVSxRQUFRO3NCQUFoQixLQUFLO2dCQVdPLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgQ29udHJvbFZhbHVlQWNjZXNzb3IgY2xhc3NlcyBkZWZpbmVkIGluIEZvcm1zIHBhY2thZ2UuIENvbnRhaW5zIGNvbW1vbiBsb2dpYyBhbmQgdXRpbGl0eSBmdW5jdGlvbnMuXG4gKiBMZSB0eXBlIGRlIGB2YWx1ZWAgZXN0IDogVCB8IHVuZGVmaW5lZCwgdW5kZWZpbmVkIHBhciBkw6lmYXV0LiBQYXIgZXhlbXBsZSBzaSBvbiBtYW5pcHVsZSB1biBpbnB1dCBkZSB0eXBlIG51bWJlciwgY2VsdWktY2lcbiAqIHNlcmEgaW5pdGlhbGlzw6kgw6AgdW5kZWZpbmVkIHBhciBkw6lmYXV0LlxuICovXG4vLyBNw6ptZSBzaSBvbiBuZSBwcsOpY2lzZSBwYXMgdW5kZWZpbmVkLCDDoCBsJ2V4w6ljdXRpb24sIGMnZXN0IHF1YW5kIG3Dqm1lIGxlIGNhcy5cbi8vIE3Dqm1lIHNpIG9uIGluZGlxdWUgdW4gdHlwZSBudW1iZXIsIMOgIGwnZXjDqWN1dGlvbiwgc2kgbCd1dGlsaXNhdGV1ciBzYWlzaWUgXCIxYVwiLCB2YWx1ZSBzZXJhIGRlIHR5cGUgc3RyaW5nXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEZWZhdWx0VmFsdWVBY2Nlc3NvckNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFBlcm1ldCBkZSBkw6lzYWN0aXZlciBsZSBjaGFtcC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IFQgfCB1bmRlZmluZWQ7XG5cbiAgZ2V0IHZhbHVlKCk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMYSB2YWxldXIgZ8OpcsOpZSBwYXIgbGUgY2hhbXAgZGUgZm9ybXVsYWlyZS5cbiAgICovXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2YWx1ZTogVCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5mbk9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cbiAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBmb3JtcyBBUEkgdG8gd3JpdGUgdG8gdGhlIHZpZXcgd2hlbiBwcm9ncmFtbWF0aWMgY2hhbmdlcyBmcm9tIG1vZGVsIHRvIHZpZXcgYXJlIHJlcXVlc3RlZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBUIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sJ3MgdmFsdWUgY2hhbmdlcyBpbiB0aGUgVUkuXG4gICAqIFdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgaW4gdGhlIFVJLCBjYWxsIHRoZSByZWdpc3RlcmVkIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBmb3JtcyBBUEkgdG8gdXBkYXRlIGl0c2VsZjpcbiAgICogaG9zdDoge1xuICAgKiAgICAnKGNoYW5nZSknOiAnX29uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpJ1xuICAgKiB9XG4gICAqICBAaW50ZXJuYWxcbiAgICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmZuT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSB0aGUgZm9ybXMgQVBJIG9uIGluaXRpYWxpemF0aW9uIHRvIHVwZGF0ZSB0aGUgZm9ybSBtb2RlbCBvbiBibHVyLlxuICAgKiBPbiBibHVyIChvciBlcXVpdmFsZW50KSwgeW91ciBjbGFzcyBzaG91bGQgY2FsbCB0aGUgcmVnaXN0ZXJlZCBmdW5jdGlvbiB0byBhbGxvdyB0aGUgZm9ybXMgQVBJIHRvIHVwZGF0ZSBpdHNlbGY6XG4gICAqIGhvc3Q6IHtcbiAgICogICAgJyhibHVyKSc6ICdfb25Ub3VjaGVkKCknXG4gICAqIH1cbiAgICogIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLmZuT25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLmZuT25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgYnkgdGhlIGZvcm1zIEFQSSB3aGVuIHRoZSBjb250cm9sIHN0YXR1cyBjaGFuZ2VzIHRvIG9yIGZyb20gJ0RJU0FCTEVEJy5cbiAgICogRGVwZW5kaW5nIG9uIHRoZSBzdGF0dXMsIGl0IGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGFwcHJvcHJpYXRlIERPTSBlbGVtZW50LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgZm5PbkNoYW5nZSA9IChfOiBUIHwgdW5kZWZpbmVkKSA9PiB7fTtcblxuICAvKiogQGludGVybmFsICovXG4gIGZuT25Ub3VjaGVkID0gKCkgPT4ge307XG59XG4iXX0=