(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@nativescript/angular'), require('nativescript-ui-dataform')) :
    typeof define === 'function' && define.amd ? define('nativescript-ui-dataform-angular', ['exports', '@angular/core', '@nativescript/angular', 'nativescript-ui-dataform'], factory) :
    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['nativescript-ui-dataform-angular'] = {}, global.ng.core, global['ns-angular'], global['ns-ui-dataform']));
}(this, (function (exports, core, angular, nativescriptUiDataform) { 'use strict';

    var RadDataFormComponent = /** @class */ (function () {
        function RadDataFormComponent(_elementRef) {
            this._elementRef = _elementRef;
            this._dataForm = _elementRef.nativeElement;
        }
        Object.defineProperty(RadDataFormComponent.prototype, "nativeElement", {
            get: function () {
                return this._dataForm;
            },
            enumerable: false,
            configurable: true
        });
        Object.defineProperty(RadDataFormComponent.prototype, "dataForm", {
            get: function () {
                return this._dataForm;
            },
            enumerable: false,
            configurable: true
        });
        return RadDataFormComponent;
    }());
    RadDataFormComponent.decorators = [
        { type: core.Component, args: [{
                    selector: "RadDataForm",
                    template: ""
                },] }
    ];
    RadDataFormComponent.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKEntityPropertyDirective = /** @class */ (function () {
        function TKEntityPropertyDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._entityProperty = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKEntityPropertyDirective.prototype, "entityProperty", {
            get: function () {
                return this._entityProperty;
            },
            enumerable: false,
            configurable: true
        });
        return TKEntityPropertyDirective;
    }());
    TKEntityPropertyDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKEntityProperty"
                },] }
    ];
    TKEntityPropertyDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKDataFormGridLayoutDirective = /** @class */ (function () {
        function TKDataFormGridLayoutDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._dataFormGridLayout = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKDataFormGridLayoutDirective.prototype, "dataFormGridLayout", {
            get: function () {
                return this._dataFormGridLayout;
            },
            enumerable: false,
            configurable: true
        });
        return TKDataFormGridLayoutDirective;
    }());
    TKDataFormGridLayoutDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKDataFormGridLayout"
                },] }
    ];
    TKDataFormGridLayoutDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKDataFormStackLayoutDirective = /** @class */ (function () {
        function TKDataFormStackLayoutDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._dataFormStackLayout = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKDataFormStackLayoutDirective.prototype, "dataFormStackLayout", {
            get: function () {
                return this._dataFormStackLayout;
            },
            enumerable: false,
            configurable: true
        });
        return TKDataFormStackLayoutDirective;
    }());
    TKDataFormStackLayoutDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKDataFormStackLayout"
                },] }
    ];
    TKDataFormStackLayoutDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyGroupDirective = /** @class */ (function () {
        function TKPropertyGroupDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._propertyGroup = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKPropertyGroupDirective.prototype, "propertyGroup", {
            get: function () {
                return this._propertyGroup;
            },
            enumerable: false,
            configurable: true
        });
        return TKPropertyGroupDirective;
    }());
    TKPropertyGroupDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKPropertyGroup"
                },] }
    ];
    TKPropertyGroupDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyEditorDirective = /** @class */ (function () {
        function TKPropertyEditorDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._propertyEditor = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKPropertyEditorDirective.prototype, "propertyEditor", {
            get: function () {
                return this._propertyEditor;
            },
            enumerable: false,
            configurable: true
        });
        return TKPropertyEditorDirective;
    }());
    TKPropertyEditorDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKPropertyEditor"
                },] }
    ];
    TKPropertyEditorDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKCustomPropertyEditorDirective = /** @class */ (function () {
        function TKCustomPropertyEditorDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._propertyEditor = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKCustomPropertyEditorDirective.prototype, "propertyEditor", {
            get: function () {
                return this._propertyEditor;
            },
            enumerable: false,
            configurable: true
        });
        return TKCustomPropertyEditorDirective;
    }());
    TKCustomPropertyEditorDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKCustomPropertyEditor"
                },] }
    ];
    TKCustomPropertyEditorDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyEditorParamsDirective = /** @class */ (function () {
        function TKPropertyEditorParamsDirective(_elementRef) {
            this._elementRef = _elementRef;
            this._propertyEditorParams = this._elementRef.nativeElement;
        }
        Object.defineProperty(TKPropertyEditorParamsDirective.prototype, "propertyEditorParams", {
            get: function () {
                return this._propertyEditorParams;
            },
            enumerable: false,
            configurable: true
        });
        return TKPropertyEditorParamsDirective;
    }());
    TKPropertyEditorParamsDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "TKPropertyEditorParams"
                },] }
    ];
    TKPropertyEditorParamsDirective.ctorParameters = function () { return [
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKEditorParamsDirective = /** @class */ (function () {
        function TKEditorParamsDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKEditorParamsDirective.prototype.ngOnInit = function () {
            var editorParams = this._elementRef.nativeElement;
            this.owner.propertyEditor.params = editorParams;
        };
        return TKEditorParamsDirective;
    }());
    TKEditorParamsDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tKEditorParams]"
                },] }
    ];
    TKEditorParamsDirective.ctorParameters = function () { return [
        { type: TKPropertyEditorDirective, decorators: [{ type: core.Inject, args: [TKPropertyEditorDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKDataFormPropertyDirective = /** @class */ (function () {
        function TKDataFormPropertyDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKDataFormPropertyDirective.prototype.ngOnInit = function () {
            var property = this._elementRef.nativeElement;
            if (this.owner.dataForm.properties) {
                this.owner.dataForm.properties.push(property);
            }
            else {
                this.owner.dataForm.properties = new Array(property);
            }
        };
        return TKDataFormPropertyDirective;
    }());
    TKDataFormPropertyDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkDataFormProperty]"
                },] }
    ];
    TKDataFormPropertyDirective.ctorParameters = function () { return [
        { type: RadDataFormComponent, decorators: [{ type: core.Inject, args: [RadDataFormComponent,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyGroupLayoutDirective = /** @class */ (function () {
        function TKPropertyGroupLayoutDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKPropertyGroupLayoutDirective.prototype.ngOnInit = function () {
            var layout = this._elementRef.nativeElement;
            this.owner.propertyGroup.layout = layout;
        };
        return TKPropertyGroupLayoutDirective;
    }());
    TKPropertyGroupLayoutDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkPropertyGroupLayout]"
                },] }
    ];
    TKPropertyGroupLayoutDirective.ctorParameters = function () { return [
        { type: TKPropertyGroupDirective, decorators: [{ type: core.Inject, args: [TKPropertyGroupDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKDataFormGroupsDirective = /** @class */ (function () {
        function TKDataFormGroupsDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKDataFormGroupsDirective.prototype.ngOnInit = function () {
            var property = this._elementRef.nativeElement;
            if (this.owner.dataForm.groups) {
                this.owner.dataForm.groups.push(property);
            }
            else {
                this.owner.dataForm.groups = new Array(property);
            }
        };
        return TKDataFormGroupsDirective;
    }());
    TKDataFormGroupsDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkDataFormGroups]"
                },] }
    ];
    TKDataFormGroupsDirective.ctorParameters = function () { return [
        { type: RadDataFormComponent, decorators: [{ type: core.Inject, args: [RadDataFormComponent,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyGroupTitleStyleDirective = /** @class */ (function () {
        function TKPropertyGroupTitleStyleDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKPropertyGroupTitleStyleDirective.prototype.ngOnInit = function () {
            var titleStyle = this._elementRef.nativeElement;
            this.owner.propertyGroup.titleStyle = titleStyle;
        };
        return TKPropertyGroupTitleStyleDirective;
    }());
    TKPropertyGroupTitleStyleDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkPropertyGroupTitleStyle]"
                },] }
    ];
    TKPropertyGroupTitleStyleDirective.ctorParameters = function () { return [
        { type: TKPropertyGroupDirective, decorators: [{ type: core.Inject, args: [TKPropertyGroupDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyEditorStyleDirective = /** @class */ (function () {
        function TKPropertyEditorStyleDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKPropertyEditorStyleDirective.prototype.ngOnInit = function () {
            var style = this._elementRef.nativeElement;
            this.owner.propertyEditor.propertyEditorStyle = style;
        };
        return TKPropertyEditorStyleDirective;
    }());
    TKPropertyEditorStyleDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkPropertyEditorStyle]"
                },] }
    ];
    TKPropertyEditorStyleDirective.ctorParameters = function () { return [
        { type: TKPropertyEditorDirective, decorators: [{ type: core.Inject, args: [TKPropertyEditorDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKCustomPropertyEditorStyleDirective = /** @class */ (function () {
        function TKCustomPropertyEditorStyleDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKCustomPropertyEditorStyleDirective.prototype.ngOnInit = function () {
            var style = this._elementRef.nativeElement;
            this.owner.propertyEditor.propertyEditorStyle = style;
        };
        return TKCustomPropertyEditorStyleDirective;
    }());
    TKCustomPropertyEditorStyleDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkCustomPropertyEditorStyle]"
                },] }
    ];
    TKCustomPropertyEditorStyleDirective.ctorParameters = function () { return [
        { type: TKCustomPropertyEditorDirective, decorators: [{ type: core.Inject, args: [TKCustomPropertyEditorDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKPropertyGroupPropertiesDirective = /** @class */ (function () {
        function TKPropertyGroupPropertiesDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKPropertyGroupPropertiesDirective.prototype.ngOnInit = function () {
            var property = this._elementRef.nativeElement;
            if (this.owner.propertyGroup.properties) {
                this.owner.propertyGroup.properties.push(property);
            }
            else {
                this.owner.propertyGroup.properties = new Array(property);
            }
        };
        return TKPropertyGroupPropertiesDirective;
    }());
    TKPropertyGroupPropertiesDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkPropertyGroupProperties]"
                },] }
    ];
    TKPropertyGroupPropertiesDirective.ctorParameters = function () { return [
        { type: TKPropertyGroupDirective, decorators: [{ type: core.Inject, args: [TKPropertyGroupDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKEntityPropertyEditorDirective = /** @class */ (function () {
        function TKEntityPropertyEditorDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKEntityPropertyEditorDirective.prototype.ngOnInit = function () {
            var editor = this._elementRef.nativeElement;
            this.owner.entityProperty.editor = editor;
        };
        return TKEntityPropertyEditorDirective;
    }());
    TKEntityPropertyEditorDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkEntityPropertyEditor]"
                },] }
    ];
    TKEntityPropertyEditorDirective.ctorParameters = function () { return [
        { type: TKEntityPropertyDirective, decorators: [{ type: core.Inject, args: [TKEntityPropertyDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var TKEntityPropertyValidatorsDirective = /** @class */ (function () {
        function TKEntityPropertyValidatorsDirective(owner, _elementRef) {
            this.owner = owner;
            this._elementRef = _elementRef;
        }
        TKEntityPropertyValidatorsDirective.prototype.ngOnInit = function () {
            var validator = this._elementRef.nativeElement;
            if (this.owner.entityProperty.validators) {
                this.owner.entityProperty.validators.push(validator);
            }
            else {
                this.owner.entityProperty.validators = new Array(validator);
            }
        };
        return TKEntityPropertyValidatorsDirective;
    }());
    TKEntityPropertyValidatorsDirective.decorators = [
        { type: core.Directive, args: [{
                    selector: "[tkEntityPropertyValidators]"
                },] }
    ];
    TKEntityPropertyValidatorsDirective.ctorParameters = function () { return [
        { type: TKEntityPropertyDirective, decorators: [{ type: core.Inject, args: [TKEntityPropertyDirective,] }] },
        { type: core.ElementRef, decorators: [{ type: core.Inject, args: [core.ElementRef,] }] }
    ]; };
    var DATAFORM_DIRECTIVES = [RadDataFormComponent, TKDataFormPropertyDirective,
        TKEntityPropertyEditorDirective, TKEntityPropertyDirective, TKDataFormGroupsDirective,
        TKPropertyGroupPropertiesDirective, TKPropertyGroupDirective, TKPropertyGroupTitleStyleDirective,
        TKPropertyEditorDirective, TKPropertyEditorStyleDirective, TKEntityPropertyValidatorsDirective,
        TKDataFormGridLayoutDirective, TKDataFormStackLayoutDirective, TKPropertyGroupLayoutDirective,
        TKCustomPropertyEditorDirective, TKCustomPropertyEditorStyleDirective, TKPropertyEditorParamsDirective,
        TKEditorParamsDirective];
    angular.registerElement("RadDataForm", function () { return nativescriptUiDataform.RadDataForm; });
    angular.registerElement("TKEntityProperty", function () { return nativescriptUiDataform.EntityProperty; });
    angular.registerElement("TKPropertyEditor", function () { return nativescriptUiDataform.PropertyEditor; });
    angular.registerElement("TKPropertyEditorParams", function () { return nativescriptUiDataform.PropertyEditorParams; });
    angular.registerElement("TKCustomPropertyEditor", function () { return nativescriptUiDataform.CustomPropertyEditor; });
    angular.registerElement("TKPropertyGroup", function () { return nativescriptUiDataform.PropertyGroup; });
    angular.registerElement("TKGroupTitleStyle", function () { return nativescriptUiDataform.GroupTitleStyle; });
    angular.registerElement("TKPropertyEditorStyle", function () { return nativescriptUiDataform.PropertyEditorStyle; });
    angular.registerElement("TKPropertyValidator", function () { return nativescriptUiDataform.PropertyValidator; });
    angular.registerElement("TKNonEmptyValidator", function () { return nativescriptUiDataform.NonEmptyValidator; });
    angular.registerElement("TKMaximumLengthValidator", function () { return nativescriptUiDataform.MaximumLengthValidator; });
    angular.registerElement("TKMinimumLengthValidator", function () { return nativescriptUiDataform.MinimumLengthValidator; });
    angular.registerElement("TKEmailValidator", function () { return nativescriptUiDataform.EmailValidator; });
    angular.registerElement("TKRangeValidator", function () { return nativescriptUiDataform.RangeValidator; });
    angular.registerElement("TKPhoneValidator", function () { return nativescriptUiDataform.PhoneValidator; });
    angular.registerElement("TKIsTrueValidator", function () { return nativescriptUiDataform.IsTrueValidator; });
    angular.registerElement("TKRegExValidator", function () { return nativescriptUiDataform.RegExValidator; });
    angular.registerElement("TKDataFormGridLayout", function () { return nativescriptUiDataform.DataFormGridLayout; });
    angular.registerElement("TKDataFormStackLayout", function () { return nativescriptUiDataform.DataFormStackLayout; });
    var NativeScriptUIDataFormModule = /** @class */ (function () {
        function NativeScriptUIDataFormModule() {
        }
        return NativeScriptUIDataFormModule;
    }());
    NativeScriptUIDataFormModule.decorators = [
        { type: core.NgModule, args: [{
                    declarations: [DATAFORM_DIRECTIVES],
                    exports: [DATAFORM_DIRECTIVES]
                },] }
    ];

    /**
     * Generated bundle index. Do not edit.
     */

    exports.DATAFORM_DIRECTIVES = DATAFORM_DIRECTIVES;
    exports.NativeScriptUIDataFormModule = NativeScriptUIDataFormModule;
    exports.RadDataFormComponent = RadDataFormComponent;
    exports.TKCustomPropertyEditorDirective = TKCustomPropertyEditorDirective;
    exports.TKCustomPropertyEditorStyleDirective = TKCustomPropertyEditorStyleDirective;
    exports.TKDataFormGridLayoutDirective = TKDataFormGridLayoutDirective;
    exports.TKDataFormGroupsDirective = TKDataFormGroupsDirective;
    exports.TKDataFormPropertyDirective = TKDataFormPropertyDirective;
    exports.TKDataFormStackLayoutDirective = TKDataFormStackLayoutDirective;
    exports.TKEditorParamsDirective = TKEditorParamsDirective;
    exports.TKEntityPropertyDirective = TKEntityPropertyDirective;
    exports.TKEntityPropertyEditorDirective = TKEntityPropertyEditorDirective;
    exports.TKEntityPropertyValidatorsDirective = TKEntityPropertyValidatorsDirective;
    exports.TKPropertyEditorDirective = TKPropertyEditorDirective;
    exports.TKPropertyEditorParamsDirective = TKPropertyEditorParamsDirective;
    exports.TKPropertyEditorStyleDirective = TKPropertyEditorStyleDirective;
    exports.TKPropertyGroupDirective = TKPropertyGroupDirective;
    exports.TKPropertyGroupLayoutDirective = TKPropertyGroupLayoutDirective;
    exports.TKPropertyGroupPropertiesDirective = TKPropertyGroupPropertiesDirective;
    exports.TKPropertyGroupTitleStyleDirective = TKPropertyGroupTitleStyleDirective;

    Object.defineProperty(exports, '__esModule', { value: true });

})));
//# sourceMappingURL=nativescript-ui-dataform-angular.umd.js.map
