import { CommonModule, JsonPipe } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatRadioModule } from '@angular/material/radio';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatSliderModule } from '@angular/material/slider';
import { RouterModule, Routes } from '@angular/router';
import {
  BCI_SHARED_INTL_PROVIDER,
  BciComponentModule,
  BciDurationPickerComponent,
  BciSharedModule
} from '@bci-web-core/core';
import { CheckboxDemoComponent, MatCheckboxDemoNestedChecklistComponent } from './checkbox-demo/checkbox-demo';
import { ChipListAutocompleteDemoComponent } from './chip-list-autocomplete-demo/chip-list-autocomplete-demo.component';
import { DatepickerDemoComponent } from './datepicker-demo/datepicker-demo';
import { InputFieldDemoComponent } from './input-field-demo/input-field-demo';
import { OverviewFormControlsComponent } from './overview-form-controls/overview-form-controls.component';
import { PicklistDemoComponent } from './picklist-demo/picklist-demo.component';
import { PicklistDemoModule } from './picklist-demo/picklist-demo.module';
import { RadioButtonDemoComponent } from './radio-button-demo/radio-button-demo';
import { SliderDemoComponent } from './slider-demo/slider-demo';
import { SplitterDemoComponent } from './splitter-demo/splitter-demo.component';
import { SwitchDemoComponent } from './switch-demo/switch-demo';
import { MultiFileSelectDemoComponent } from './multi-file-select-demo/multi-file-select-demo.component';
import { ListDemoComponent } from './list-demo/list-demo';
import { DropdownDemoComponent } from './dropdown-demo/dropdown-demo';
import { DropdownBetaDemoComponent } from './dropdown-beta-demo/dropdown-beta-demo';
import { BciCorePicklistDemoComponent } from './bci-core-picklist-demo/bci-core-picklist-demo.component';
import { MatMenuModule } from '@angular/material/menu';
import { BciCorePicklistDemoModule } from './bci-core-picklist-demo/bci-core-picklist-demo.module';
import { BciDurationPickerDemoComponent } from "./bci-duration-picker-demo/bci-duration-picker-demo.component";
import { BciDurationPickerModalExampleComponent } from "./bci-duration-picker-demo/modal-example/bci-duration-picker-modal-example.component";
import { MatExpansionModule } from "@angular/material/expansion";
import { MatDialogModule } from "@angular/material/dialog";
import { MultiSelectorDemoComponent } from './multi-selector-demo/multi-selector-demo.component';
import {MatOptionModule} from "@angular/material/core";

const routes: Routes = [
  {
    path: '',
    component: OverviewFormControlsComponent,
  },
  {
    path: 'checkbox-demo',
    component: CheckboxDemoComponent,
    pathMatch: 'full',
  },
  {
    path: 'datetimepicker-demo',
    component: DatepickerDemoComponent,
  },
  {
    path: 'input-field-demo',
    component: InputFieldDemoComponent,
  },
  {
    path: 'picklist-demo',
    component: PicklistDemoComponent,
  },
  {
    path: 'bci-core-picklist-demo',
    component: BciCorePicklistDemoComponent,
  },
  {
    path: 'radio-button-demo',
    component: RadioButtonDemoComponent,
  },
  {
    path: 'dropdown-demo',
    component: DropdownDemoComponent,
  },
  {
    path: 'dropdown-beta-demo',
    component: DropdownBetaDemoComponent,
  },
  {
    path: 'slider-demo',
    component: SliderDemoComponent,
  },
  {
    path: 'switch-demo',
    component: SwitchDemoComponent,
  },
  {
    path: 'chip-list-autocomplete-demo',
    component: ChipListAutocompleteDemoComponent,
  },
  {
    path: 'multi-file-select-demo',
    component: MultiFileSelectDemoComponent,
  },
  {
    path: 'multi-selector-demo',
    component: MultiSelectorDemoComponent,
  },
  {
    path: 'list-demo',
    component: ListDemoComponent,
  },
  {
    path: 'duration-picker-demo',
    component: BciDurationPickerDemoComponent,
  },
];

@NgModule({
  declarations: [
    OverviewFormControlsComponent,
    CheckboxDemoComponent,
    MatCheckboxDemoNestedChecklistComponent,
    DatepickerDemoComponent,
    InputFieldDemoComponent,
    RadioButtonDemoComponent,
    DropdownDemoComponent,
    DropdownBetaDemoComponent,
    SliderDemoComponent,
    SplitterDemoComponent,
    SwitchDemoComponent,
    ChipListAutocompleteDemoComponent,
    MultiFileSelectDemoComponent,
    ListDemoComponent,
    BciDurationPickerDemoComponent,
    BciDurationPickerModalExampleComponent,
    MultiSelectorDemoComponent,
  ],
  imports: [
    RouterModule.forChild(routes),
    CommonModule,
    BciSharedModule,
    BciComponentModule,
    PicklistDemoModule,
    BciCorePicklistDemoModule,
    MatCheckboxModule,
    MatInputModule,
    MatDatepickerModule,
    ReactiveFormsModule,
    MatButtonToggleModule,
    MatIconModule,
    MatSlideToggleModule,
    MatRadioModule,
    MatSelectModule,
    MatSliderModule,
    MatMenuModule,
    BciDurationPickerComponent,
    MatExpansionModule,
    MatDialogModule,
    MatOptionModule,
    JsonPipe
  ],
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  providers: [BCI_SHARED_INTL_PROVIDER]
})
export class FormControlsModule {}
