govuk-angular
Version:
Angular components port of govuk-frontend nunjucks macros.
97 lines (93 loc) • 8.9 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { emptyLabel } from '../label/label';
import { emptyHint } from '../hint/hint';
import { emptyErrorMessage } from '../error/error-message.model';
import * as i0 from "@angular/core";
import * as i1 from "../field/field.component";
import * as i2 from "@angular/forms";
import * as i3 from "@angular/common";
/**
* Input component with error handling.
*
* ```javascript
* <govuk-input [id]="'with-date-fill'"
* [(model)]="model.date"
* [label]="{text:'What is the date today?', classes: 'govuk-label--m'}"
* [linkAction]="{ text:'Use todays date', action: today } "
* [hint]="{ text: 'Try the link below '}"
* [classes]="'govuk-input--width-10'"
* maxlength="10"></govuk-input>
* ```
*/
export class GovUKTextAreaComponent {
constructor() {
this.rows = '5';
this.label = emptyLabel();
this.hint = emptyHint();
this.errorMessage = emptyErrorMessage();
this.modelChange = new EventEmitter();
this.maxlength = 50;
}
}
GovUKTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: GovUKTextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
GovUKTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.2", type: GovUKTextAreaComponent, selector: "govuk-textarea", inputs: { id: "id", name: "name", classes: "classes", type: "type", rows: "rows", describeBy: "describeBy", label: "label", hint: "hint", errorMessage: "errorMessage", model: "model", maxlength: "maxlength" }, outputs: { modelChange: "modelChange" }, ngImport: i0, template: `
<govuk-field [id]="id" [label]="label" [hint]="hint" [errorMessage]="errorMessage">
<textarea [id]="id"
[attr.name]="name || id"
[attr.rows]="rows"
class="govuk-textarea {{classes}}"
[ngClass]="{'govuk-textarea--error' : errorMessage.text}"
[attr.aria-describedby]="describeBy"
[attr.maxlength]="maxlength"
[attr.type]="type"
[(ngModel)]="model"
(ngModelChange)="modelChange.emit($event)" >
</textarea>
<govuk-field>
`, isInline: true, components: [{ type: i1.GovUKFieldComponent, selector: "govuk-field", inputs: ["id", "name", "classes", "hint", "errorMessage", "label"] }], directives: [{ type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: GovUKTextAreaComponent, decorators: [{
type: Component,
args: [{
selector: 'govuk-textarea',
template: `
<govuk-field [id]="id" [label]="label" [hint]="hint" [errorMessage]="errorMessage">
<textarea [id]="id"
[attr.name]="name || id"
[attr.rows]="rows"
class="govuk-textarea {{classes}}"
[ngClass]="{'govuk-textarea--error' : errorMessage.text}"
[attr.aria-describedby]="describeBy"
[attr.maxlength]="maxlength"
[attr.type]="type"
[(ngModel)]="model"
(ngModelChange)="modelChange.emit($event)" >
</textarea>
<govuk-field>
`
}]
}], propDecorators: { id: [{
type: Input
}], name: [{
type: Input
}], classes: [{
type: Input
}], type: [{
type: Input
}], rows: [{
type: Input
}], describeBy: [{
type: Input
}], label: [{
type: Input
}], hint: [{
type: Input
}], errorMessage: [{
type: Input
}], model: [{
type: Input
}], modelChange: [{
type: Output
}], maxlength: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ292dWstYW5ndWxhci9zcmMvbGliL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQVMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFRLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBZ0IsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7QUFDL0U7Ozs7Ozs7Ozs7OztHQVlHO0FBcUJILE1BQU0sT0FBTyxzQkFBc0I7SUFwQm5DO1FBNEJXLFNBQUksR0FBRyxHQUFHLENBQUM7UUFJWCxVQUFLLEdBQVUsVUFBVSxFQUFFLENBQUM7UUFFNUIsU0FBSSxHQUFTLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQWlCLGlCQUFpQixFQUFFLENBQUM7UUFHaEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTFDLGNBQVMsR0FBRyxFQUFFLENBQUM7S0FDekI7O21IQXJCWSxzQkFBc0I7dUdBQXRCLHNCQUFzQixpVEFsQnZCOzs7Ozs7Ozs7Ozs7Ozs7O0NBZ0JYOzJGQUVZLHNCQUFzQjtrQkFwQmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7O0NBZ0JYO2lCQUNBOzhCQUVVLEVBQUU7c0JBQVYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUUsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlbXB0eUxhYmVsLCBMYWJlbCB9IGZyb20gJy4uL2xhYmVsL2xhYmVsJztcbmltcG9ydCB7IEdvdlVLRGF0YUNhcHR1cmUgfSBmcm9tICcuLi9kYXRhLWNhcHR1cmUuY29tcG9uZW50JztcbmltcG9ydCB7IGVtcHR5SGludCwgSGludCB9IGZyb20gJy4uL2hpbnQvaGludCc7XG5pbXBvcnQgeyBlbXB0eUVycm9yTWVzc2FnZSwgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vZXJyb3IvZXJyb3ItbWVzc2FnZS5tb2RlbCc7XG4vKipcbiAqIElucHV0IGNvbXBvbmVudCB3aXRoIGVycm9yIGhhbmRsaW5nLlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqICAgIDxnb3Z1ay1pbnB1dCBbaWRdPVwiJ3dpdGgtZGF0ZS1maWxsJ1wiXG4gKiAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwibW9kZWwuZGF0ZVwiXG4gKiAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInt0ZXh0OidXaGF0IGlzIHRoZSBkYXRlIHRvZGF5PycsIGNsYXNzZXM6ICdnb3Z1ay1sYWJlbC0tbSd9XCJcbiAqICAgICAgICAgICAgICAgICBbbGlua0FjdGlvbl09XCJ7IHRleHQ6J1VzZSB0b2RheXMgZGF0ZScsIGFjdGlvbjogdG9kYXkgfSBcIlxuICogICAgICAgICAgICAgICAgIFtoaW50XT1cInsgdGV4dDogJ1RyeSB0aGUgbGluayBiZWxvdyAnfVwiXG4gKiAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiJ2dvdnVrLWlucHV0LS13aWR0aC0xMCdcIlxuICogICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjEwXCI+PC9nb3Z1ay1pbnB1dD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnb3Z1ay10ZXh0YXJlYScsXG4gIHRlbXBsYXRlOiBgXG48Z292dWstZmllbGQgW2lkXT1cImlkXCIgW2xhYmVsXT1cImxhYmVsXCIgW2hpbnRdPVwiaGludFwiIFtlcnJvck1lc3NhZ2VdPVwiZXJyb3JNZXNzYWdlXCI+XG5cbiAgPHRleHRhcmVhIFtpZF09XCJpZFwiXG4gICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lIHx8IGlkXCJcbiAgICAgICAgICBbYXR0ci5yb3dzXT1cInJvd3NcIlxuICAgICAgICAgIGNsYXNzPVwiZ292dWstdGV4dGFyZWEge3tjbGFzc2VzfX1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstdGV4dGFyZWEtLWVycm9yJyA6IGVycm9yTWVzc2FnZS50ZXh0fVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJkZXNjcmliZUJ5XCJcbiAgICAgICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgICBbYXR0ci50eXBlXT1cInR5cGVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWxcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGVsQ2hhbmdlLmVtaXQoJGV2ZW50KVwiID5cbjwvdGV4dGFyZWE+XG5cbjxnb3Z1ay1maWVsZD5cbmBcbn0pXG5leHBvcnQgY2xhc3MgR292VUtUZXh0QXJlYUNvbXBvbmVudCBpbXBsZW1lbnRzIEdvdlVLRGF0YUNhcHR1cmU8c3RyaW5nPiB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xuXG4gIC8qKiBUeXBlIG9mIGlucHV0IGNvbnRyb2wgdG8gcmVuZGVyLiBEZWZhdWx0cyB0byAndGV4dCcgKi9cbiAgQElucHV0KCkgdHlwZTogJ3RleHQnO1xuXG4gIEBJbnB1dCgpIHJvd3MgPSAnNSc7XG5cbiAgQElucHV0KCkgZGVzY3JpYmVCeT86IHN0cmluZztcblxuICBASW5wdXQoKSBsYWJlbDogTGFiZWwgPSBlbXB0eUxhYmVsKCk7XG5cbiAgQElucHV0KCkgaGludDogSGludCA9IGVtcHR5SGludCgpO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZSA9IGVtcHR5RXJyb3JNZXNzYWdlKCk7XG5cbiAgQElucHV0KCkgbW9kZWw6IHN0cmluZztcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQElucHV0KCkgbWF4bGVuZ3RoID0gNTA7XG59XG4iXX0=