aboutsummaryrefslogtreecommitdiffstats
path: root/src/angular/form-elements/text-elements
diff options
context:
space:
mode:
Diffstat (limited to 'src/angular/form-elements/text-elements')
-rw-r--r--src/angular/form-elements/text-elements/base-text-element.component.ts46
-rw-r--r--src/angular/form-elements/text-elements/input/input.component.html.ts19
-rw-r--r--src/angular/form-elements/text-elements/input/input.component.ts18
-rw-r--r--src/angular/form-elements/text-elements/textarea/textarea.component.html.ts18
-rw-r--r--src/angular/form-elements/text-elements/textarea/textarea.component.ts14
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();
+ }
+}