import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';

import { HypermediaForm } from './components';
import { AboveFormDirective, AfterFieldDirective, BeforeFieldDirective, BelowFormDirective, FieldDirective, FormDirective, InputDirective } from './directives';
import { SuccessMessageDirective } from './directives/success-message.directive';
import { FormFieldComponent } from './components/form-field.component';
import { FormFieldsComponent } from './components/form-fields.component';
import { DefaultFieldDirective } from './directives/default-field.directive';
import { OrderingService } from './services/ordering.service';
import { FormValueDirective } from './directives/form-value.directive';

const PUBLIC_DECLARATIONS = [
    HypermediaForm,

    FormDirective,
    InputDirective,
    AfterFieldDirective,
    FieldDirective,
    BeforeFieldDirective,
    SuccessMessageDirective,

    AboveFormDirective,
    BelowFormDirective,

    FormFieldsComponent,
    FormFieldComponent,

    DefaultFieldDirective,
    FormValueDirective
];

@NgModule({
    imports: [CommonModule, TranslateModule, FormsModule],
    declarations: PUBLIC_DECLARATIONS,
    providers: [OrderingService],
    exports: PUBLIC_DECLARATIONS
})
export class HypermediaFormsModule {

}
