re base code
[sdc.git] / catalog-ui / src / app / ng2 / components / ui / form-components / ui-element-base.component.ts
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 import { Component, EventEmitter, Input, Output } from '@angular/core'
22 import { ValidationConfiguration } from "app/models";
23 import { FormControl, Validators } from '@angular/forms';
24
25 export interface UiElementBaseInterface {
26     onChange();
27 }
28
29 export interface IUiElementChangeEvent {
30     value: any;
31     isValid: boolean;
32 }
33
34 @Component({
35     template: ``,
36     styles: []
37 })
38 export class UiElementBase {
39
40     protected validation = ValidationConfiguration.validation;
41     protected control: FormControl;
42
43     @Input() value: any;
44     @Output() valueChange: EventEmitter<any> = new EventEmitter<any>();
45     @Output('elementChanged') baseEmitter: EventEmitter<IUiElementChangeEvent> = new EventEmitter<IUiElementChangeEvent>();
46
47     @Input() name: string;
48     @Input() type: string;
49     @Input() path: string;
50     @Input() pattern: any;
51     @Input() readonly:boolean;
52
53     @Input() testId:string;
54
55     constructor() {
56         //this.control = new FormControl('', [Validators.required]);
57         this.control = new FormControl('', []);
58
59         this.baseEmitter.subscribe((changeEvent: IUiElementChangeEvent) => {
60             this.valueChange.emit(changeEvent.value);
61         })
62     }
63
64     onChange() {
65         this.baseEmitter.emit({
66             value: this.value,
67             isValid: this.control.valid
68         });
69     }
70
71 }