import { DragDropModule } from '@angular/cdk/drag-drop';
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

import { NzOutletModule } from 'ng-zorro-antd/core/outlet';
import { NzDividerModule } from 'ng-zorro-antd/divider';
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
import { NzFormModule } from 'ng-zorro-antd/form';
import { NzIconModule } from 'ng-zorro-antd/icon';
import { NzInputModule } from 'ng-zorro-antd/input';
import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
import { NzSelectModule } from 'ng-zorro-antd/select';
import { NzTableModule } from 'ng-zorro-antd/table';
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
import { BixiEditableTableComponent } from './editable-table.component';
import { BixiEditableTemplateComponent } from './editable-template.component';
import { EditableTemplateDirective } from './editable-template.directive';
import { EditableTemplateService } from './editable-template.service';


const COMPONENTS = [
  BixiEditableTemplateComponent
];
const ZORRO_MODULES = [
  NzDropDownModule,
  NzIconModule,
  NzInputModule,
  NzDividerModule,
  NzTableModule,
  NzToolTipModule,
  NzFormModule,
  NzSelectModule,
  NzPopconfirmModule,
  NzOutletModule
];
const DIRECTIVE = [
  EditableTemplateDirective
];

@NgModule({
  imports: [CommonModule, ReactiveFormsModule, FormsModule, DragDropModule, ...ZORRO_MODULES],
  declarations: [BixiEditableTableComponent, ...COMPONENTS, ...DIRECTIVE],
  providers: [EditableTemplateService],
  exports: [BixiEditableTableComponent, ...DIRECTIVE]
})
export class BixiEditableTableModule { }
