diff options
Diffstat (limited to 'src/angular/form-elements/text-elements')
5 files changed, 115 insertions, 0 deletions
diff --git a/src/angular/form-elements/text-elements/base-text-element.component.ts b/src/angular/form-elements/text-elements/base-text-element.component.ts new file mode 100644 index 0000000..a87238f --- /dev/null +++ b/src/angular/form-elements/text-elements/base-text-element.component.ts @@ -0,0 +1,46 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { FormControl } from "@angular/forms"; +import { ValidatableComponent } from "../validation/validatable.component"; +import 'rxjs/add/operator/debounceTime'; + +export class BaseTextElementComponent extends ValidatableComponent implements OnInit { + + @Output('valueChange') public baseEmitter: EventEmitter<any> = new EventEmitter<any>(); + @Input() public label: string; + @Input() public value: any; + @Input() public name: string; + @Input() public classNames: string; + @Input() public disabled: boolean; + @Input() public placeHolder: string; + @Input() public required: boolean; + @Input() public minLength: number; + @Input() public maxLength: number; + @Input() public debounceTime: number; + @Input() public testId: string; + + public control: FormControl; + + constructor() { + super(); + this.control = new FormControl('', []); + this.debounceTime = 0; + this.placeHolder = ''; + } + + ngOnInit() { + this.control.valueChanges. + debounceTime(this.debounceTime) + .subscribe((newValue: any) => { + this.baseEmitter.emit(this.value); + }); + } + + public getValue(): any { + return this.value; + } + + onKeyPress(value: string) { + this.valueChanged(this.value); + } + +} diff --git a/src/angular/form-elements/text-elements/input/input.component.html.ts b/src/angular/form-elements/text-elements/input/input.component.html.ts new file mode 100644 index 0000000..bb5d788 --- /dev/null +++ b/src/angular/form-elements/text-elements/input/input.component.html.ts @@ -0,0 +1,19 @@ +export const template = ` +<div class="sdc-input "> + <label class="sdc-input__label" *ngIf="label" [ngClass]="{'required':required}">{{label}}</label> + <input + class="sdc-input__input {{classNames}}" + [ngClass]="{'error': (!valid && dirty), 'disabled':disabled}" + [attr.name]="name ? name : null" + [placeholder]="placeHolder" + [(ngModel)]="value" + [maxlength]="maxLength" + [minlength]="minLength" + [type]="type" + [formControl]="control" + [attr.disabled]="disabled ? 'disabled' : null" + (input)="onKeyPress($event.target.value)" + [attr.data-tests-id]="testId" + /> +</div> +`; diff --git a/src/angular/form-elements/text-elements/input/input.component.ts b/src/angular/form-elements/text-elements/input/input.component.ts new file mode 100644 index 0000000..48b177b --- /dev/null +++ b/src/angular/form-elements/text-elements/input/input.component.ts @@ -0,0 +1,18 @@ +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { template } from "./input.component.html"; +import { BaseTextElementComponent } from "../base-text-element.component"; +import 'rxjs/add/operator/debounceTime'; + +@Component({ + selector: 'sdc-input', + template: template, +}) +export class InputComponent extends BaseTextElementComponent { + @Input() public type: string; + + constructor() { + super(); + this.type = 'text'; + } + +} diff --git a/src/angular/form-elements/text-elements/textarea/textarea.component.html.ts b/src/angular/form-elements/text-elements/textarea/textarea.component.html.ts new file mode 100644 index 0000000..7e976b2 --- /dev/null +++ b/src/angular/form-elements/text-elements/textarea/textarea.component.html.ts @@ -0,0 +1,18 @@ +export const template = ` +<div class="sdc-textarea"> + <label class="sdc-textarea__label" *ngIf="label" [ngClass]="{'required':required}">{{label}}</label> + <textarea + class="sdc-textarea__textarea {{classNames}}" + [ngClass]="{'error': (!valid && dirty), 'disabled':disabled}" + [attr.name]="name ? name : null" + [placeholder]="placeHolder" + [(ngModel)]="value" + [maxlength]="maxLength" + [minlength]="minLength" + [formControl]="control" + [attr.disabled]="disabled ? 'disabled' : null" + (input)="onKeyPress($event.target.value)" + [attr.data-tests-id]="testId"> + </textarea> +</div> +`; diff --git a/src/angular/form-elements/text-elements/textarea/textarea.component.ts b/src/angular/form-elements/text-elements/textarea/textarea.component.ts new file mode 100644 index 0000000..e8f0700 --- /dev/null +++ b/src/angular/form-elements/text-elements/textarea/textarea.component.ts @@ -0,0 +1,14 @@ +import { Component } from "@angular/core"; +import { template } from './textarea.component.html'; +import { BaseTextElementComponent } from "../base-text-element.component"; + +@Component({ + selector: 'sdc-textarea', + template: template, +}) + +export class TextareaComponent extends BaseTextElementComponent { + constructor() { + super(); + } +} |