import {Directive, Host, Attribute, OnInit,Optional} from "@angular/core";
import {CoreFormInput} from "../core-form-input/core-form-input.component";
import {AbstractControl} from "@angular/forms";
import {CoreFormDropDown} from "../core-form-dropdown/core-form-dropdown";
import {CoreFormControlBase} from "../CoreFormControlBase";

@Directive(
    {
        selector: 'validation-only-number'
    }
)
export class CoreFormValidationOnlyNumber implements OnInit
{
    private host:CoreFormControlBase;

    ngOnInit():any
    {
        if (this.host != null)
            this.host.addFormValidator(
                {ValidationName: 'validation-only-number', ValidationMessage: this.validationOnlyNumberMessage}, CoreFormValidationOnlyNumber.OnlyNumberValidator);
        return undefined;
    }


    constructor(@Optional() @Host() private inputHost:CoreFormInput ,
                @Optional() @Host() private dropDownHost:CoreFormDropDown,
                @Attribute("message") private validationOnlyNumberMessage:string )
    {
        this.host = inputHost || dropDownHost;
    }


    public static OnlyNumberValidator( c:AbstractControl ):{ [s:string]:boolean }
    {
        if (!/^[0-9]+$/.test(c.value))
            return {"validation-only-number": true};
        else return null;

    }
}