import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { TranslateModule } from '@ngx-translate/core';
import { DirtyGuard, XdfGalleryModule } from '@xdf/gallery';
import { XdfSettingsModule } from '@xdf/settings';
import {
  MatButtonModule, MatCheckboxModule, MatFormFieldModule, MatIconModule,
  MatInputModule, MatMenuModule, MatPaginatorModule, MatProgressSpinnerModule,
  MatSelectModule, MatSortModule, MatTableModule, MatTabsModule, MatTooltipModule
} from '@angular/material';
import { NgScrollbarModule } from 'ngx-scrollbar';

import { CalendarRoutingModule } from './calendar-routing.module';
import { CalendarExceptionDialogComponent } from './components/calendar-exception-grid/views/calendar-exception-dialog/calendar-exception-dialog.component';
import { CalendarExceptionDialogService } from './calendar-form/services/calendar-exception-dialog.service';
import { XdfLayoutsModule } from '@xdf/layouts';
import { CalendarService } from './services/calendar.service';
import { CalendarExceptionResolver } from './resolvers/calendar-exception.resolver';
import { CalendarFormComponent } from './calendar-form/calendar-form.component';
import { CalendarExceptionGridComponent } from './components/calendar-exception-grid/calendar-exception-grid.component';
import { CalendarExceptionTableComponent } from './components/calendar-exception-grid/views/calendar-exception-table/calendar-exception-table.component';
import { CalendarConfigLayoutComponent } from './components/calendar-config-layout/calendar-config-layout.component';
import { WeekSchedulerFormComponent } from './components/week-scheduler-form/week-scheduler-form.component';
import { CalendarExceptionFindByKeyService } from './services/calendar-exception-find-by-key.service';
import { DatePickerAnualComponent } from './components/calendar-exception-grid/views/date-picker-anual/date-picker-anual.component';



@NgModule({
  declarations: [
     CalendarFormComponent,
    // SchedulerWeeklyDialogComponent,
    DatePickerAnualComponent,
    CalendarExceptionDialogComponent,
    CalendarExceptionGridComponent,
    CalendarExceptionTableComponent,
    CalendarConfigLayoutComponent,
    WeekSchedulerFormComponent ],
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    TranslateModule,
    XdfGalleryModule,
    XdfSettingsModule,
    CalendarRoutingModule,
    MatTableModule,
    NgScrollbarModule,
    MatCheckboxModule,
    MatIconModule,
    MatTabsModule,
    MatTooltipModule,
    MatButtonModule,
    MatMenuModule,
    MatSelectModule,
    MatPaginatorModule,
    MatProgressSpinnerModule,
    MatSortModule,
    MatFormFieldModule,
    MatInputModule,
    XdfLayoutsModule
  ],
  entryComponents: [
    CalendarExceptionDialogComponent
  ],
  providers: [
    { provide: DirtyGuard, useClass: DirtyGuard },
    CalendarExceptionDialogService,
    CalendarService,
    CalendarExceptionResolver,
    CalendarExceptionFindByKeyService
  ]
})
export class CalendarModule { }
