UNPKG

@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
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=