import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';

import { NgbModule } from '@ng-bootstrap/ng-bootstrap';

import { DynaformComponent } from './dynaform.component';
import { DynafieldDirective } from './directives/dynafield.directive';
import { DynaformService } from './services/dynaform.service';
import { ModelMapperService } from './services/model-mapper.service';

import * as formFieldComponents from './components';
const ffcArr = Object.values(formFieldComponents); // Array of all the Form Field Components

import { DateInputsModule } from '@progress/kendo-angular-dateinputs';

@NgModule({
	imports: [
		CommonModule,
		FormsModule,
		ReactiveFormsModule,
		RouterModule.forChild([]),
		NgbModule,
		DateInputsModule
	],
	declarations: [
		DynaformComponent,
		DynafieldDirective,
		...ffcArr
	],
	entryComponents: ffcArr,
	providers: [
		DynaformService,
		ModelMapperService
	],
	exports: [
		FormsModule,
		ReactiveFormsModule,
		DynaformComponent,
		DynafieldDirective,
		ffcArr
	]
})
export class DynaformModule { }