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

import { ToastrModule } from 'ngx-toastr';
import { BsModalService } from 'ngx-bootstrap/modal';
import { NgSelectModule } from '@ng-select/ng-select';
import {
    ModalModule,
    TabsModule,
    AccordionModule,
    CollapseModule,
    PopoverModule,
    PaginationModule,
    BsDatepickerModule
} from 'ngx-bootstrap';
import { NgxJsonViewerModule } from 'ngx-json-viewer';
import { ScrollTopService } from './service/sroll-top.service';
import { PrettyOperatorService } from './service/pretty-operator.service';
import { FormLabelOperatorPipe } from './form-label-operator.pipe';

@NgModule({
    imports: [
        CommonModule,
        FormsModule,
        ReactiveFormsModule,
        ToastrModule.forRoot(),
        ModalModule.forRoot(),
        TabsModule.forRoot(),
        AccordionModule.forRoot(),
        CollapseModule.forRoot(),
        PopoverModule.forRoot(),
        PaginationModule.forRoot(),
        BsDatepickerModule.forRoot(),
        NgSelectModule,
        NgxJsonViewerModule,
        RouterModule
    ],
    exports: [
        CommonModule,
        FormsModule,
        ReactiveFormsModule,
        ToastrModule,
        ModalModule,
        TabsModule,
        AccordionModule,
        CollapseModule,
        PopoverModule,
        PaginationModule,
        BsDatepickerModule,
        NgSelectModule,
        NgxJsonViewerModule,
        FormLabelOperatorPipe
    ],
    providers: [
        BsModalService,
        ScrollTopService,
        PrettyOperatorService
    ],
    declarations: [
        FormLabelOperatorPipe
    ]
})
export class SharedModule { }