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

import {
  CardModule,
  SearchInputModule,
  InputModule,
  LoadingModule,
  ModalModule,
  ButtonModule,
  CheckboxModule,
  DropdownModule,
  IconModule,
  SelectModule,
  DeleteDropdownFixedModule,
} from '@libs/ui';
import { SmallDoubleChoiceSwitchModule } from '@libs/ui/lib/small-double-choice-switch';

import { BarcodeSearchModule } from '../barcode-search/barcode-search.module';
import { CustomerAddBillingAddressComponent } from './pages/customer-add-billing-address/customer-add-billing-address.component';
import { CustomerAddDeliveryAddressComponent } from './pages/customer-add-delivery-address/customer-add-delivery-address.component';
import { CustomerBillingAddressComponent } from './pages/customer-billing-address/customer-billing-address.component';
import { CustomerDeliveryAddressComponent } from './pages/customer-delivery-address/customer-delivery-address.component';
import { CustomerEditBillingAddressComponent } from './pages/customer-edit-billing-address/customer-edit-billing-address.component';
import { CustomerEditComponent } from './pages/customer-edit/customer-edit.component';
import { CustomerEditDeliveryAddressComponent } from './pages/customer-edit-delivery-address/customer-edit-delivery-address.component';
import { CustomerOrderDetailComponent } from './pages/customer-order-detail/customer-order-detail.component';
import { CustomerRoutingModule } from './customer-routing.module';
import { CustomerSearchComponent } from './pages/customer-search/customer-search.component';
import { CustomerSearchResultComponent } from './pages/customer-search-result/customer-search-result.component';
import { NewsletterSignupModule } from '../newsletter-signup/newsletter-signup.module';
import { PrinterSelectionModule } from '../../components/printer-selection/printer-selection.module';
import { RecommendationsdModule } from '../recommendations/recommendations.module';
import { SharedModule } from '../../shared/shared.module';
import { ShelfModule } from '../shelf/shelf.module';

import { COMPONENTS, EXPORT_COMPONENTS } from './components';
import { CustomerSearchEmptyModalComponent } from './components/customer-search-empty-modal/customer-search-empty-modal.component';
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';

@NgModule({
  imports: [
    CommonModule,
    ScrollingModule,
    // ExperimentalScrollingModule,
    FormsModule,
    RouterModule,
    ReactiveFormsModule,
    SharedModule,
    NewsletterSignupModule,
    CardModule,
    SearchInputModule,
    InputModule,
    LoadingModule,
    ButtonModule,
    ModalModule,
    CheckboxModule,
    DropdownModule,
    DeleteDropdownFixedModule,
    PerfectScrollbarModule,
    IconModule,
    CustomerRoutingModule,
    SelectModule,
    RecommendationsdModule,
    BarcodeSearchModule,
    PrinterSelectionModule,
    ShelfModule,
    SmallDoubleChoiceSwitchModule,
  ],
  declarations: [
    ...COMPONENTS,
    CustomerSearchResultComponent,
    CustomerSearchComponent,
    CustomerBillingAddressComponent,
    CustomerEditBillingAddressComponent,
    CustomerAddBillingAddressComponent,
    CustomerAddDeliveryAddressComponent,
    CustomerDeliveryAddressComponent,
    CustomerEditDeliveryAddressComponent,
    CustomerEditComponent,
    CustomerOrderDetailComponent,
    CustomerSearchEmptyModalComponent,
  ],
  exports: [
    ...EXPORT_COMPONENTS,
    CustomerSearchResultComponent,
    CustomerSearchComponent,
    CustomerBillingAddressComponent,
    CustomerEditBillingAddressComponent,
    CustomerAddBillingAddressComponent,
    CustomerAddDeliveryAddressComponent,
    CustomerDeliveryAddressComponent,
    CustomerEditDeliveryAddressComponent,
    CustomerEditComponent,
    CustomerOrderDetailComponent,
  ],
})
export class CustomerModule {}
