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

import { FlexLayoutModule } from '@angular/flex-layout';

import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatListModule } from '@angular/material/list';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatTabsModule } from '@angular/material/tabs';
import { MatRadioModule } from '@angular/material/radio';

import { CallComponent } from './components/call.component';
import { DeviceComponent } from './components/device.component';
import { GeneralComponent } from './components/general.component';
import { NotificationComponent } from './components/notification.component';
import { PermissionComponent } from './components/permission.component';
import { PrivacyComponent } from './components/privacy.component';
import { ChatComponent } from './components/chat.component';
import { TranslateModule } from '@ngx-translate/core';

const COMPONENTS = [
  CallComponent,
  DeviceComponent,
  GeneralComponent,
  NotificationComponent,
  PermissionComponent,
  PrivacyComponent,
  ChatComponent
];
const SERVICES = [];

@NgModule({
  imports: [
    CommonModule,
    ReactiveFormsModule,
    FlexLayoutModule,
    MatCheckboxModule,
    MatFormFieldModule,
    MatInputModule,
    MatListModule,
    MatSelectModule,
    MatSlideToggleModule,
    MatTabsModule,
    MatRadioModule,

    TranslateModule
  ],
  exports: [...COMPONENTS],
  declarations: [...COMPONENTS]
})
export class UCapUiSettingsModule {
  public static forRoot(): ModuleWithProviders<UCapUiSettingsModule> {
    return {
      ngModule: UCapUiSettingsModule,
      providers: [...SERVICES]
    };
  }
}
