{"version":3,"file":"ng-devui-data-table.mjs","sources":["../../devui/data-table/data-table.token.ts","../../devui/data-table/data-table-row.token.ts","../../devui/data-table/force-update-reason.model.ts","../../devui/data-table/editor-host.directive.ts","../../devui/data-table/tmpl/data-table-cell-edit-tmpl.component.ts","../../devui/data-table/tmpl/data-table-cell-view-tmpl.component.ts","../../devui/data-table/tmpl/data-table-head-cell-tmpl.component.ts","../../devui/data-table/tmpl/data-table-column-tmpl.component.ts","../../devui/data-table/display-cell-value.pipe.ts","../../devui/data-table/data-table-cell.component.ts","../../devui/data-table/data-table-cell.component.html","../../devui/data-table/data-table-row.component.ts","../../devui/data-table/data-table-row.component.html","../../devui/data-table/data-table-body.component.ts","../../devui/data-table/data-table-body.component.html","../../devui/data-table/data-table.model.ts","../../devui/data-table/table/head/th/th.token.ts","../../devui/data-table/table/head/th/filter/filter.component.ts","../../devui/data-table/table/head/th/filter/filter.component.html","../../devui/data-table/table/head/th/sort/sort.component.ts","../../devui/data-table/table/head/th/sort/sort.component.html","../../devui/data-table/table/head/th/th.component.ts","../../devui/data-table/table/head/th/th.component.html","../../devui/data-table/data-table-head.component.ts","../../devui/data-table/data-table-head.component.html","../../devui/data-table/table/body/tbody.component.ts","../../devui/data-table/table/body/tbody.component.html","../../devui/data-table/table/row/tr.component.ts","../../devui/data-table/table/row/tr.component.html","../../devui/data-table/table/head/thead.component.ts","../../devui/data-table/table/head/thead.component.html","../../devui/data-table/data-table.component.ts","../../devui/data-table/data-table.component.html","../../devui/data-table/table-option-modal.component.ts","../../devui/data-table/table-option-modal.component.html","../../devui/data-table/table-option-toggle.component.ts","../../devui/data-table/table-option-toggle.component.html","../../devui/data-table/table/body/td/td.service.ts","../../devui/data-table/table/body/td/td.component.ts","../../devui/data-table/table/body/td/td.component.html","../../devui/data-table/tmpl/data-table-cell-tmpl.component.ts","../../devui/data-table/data-table.module.ts","../../devui/data-table/utils/utils.ts","../../devui/data-table/ng-devui-data-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DATA_TABLE = new InjectionToken('DATA_TABLE');\n","import { InjectionToken } from '@angular/core';\n\nexport const DATA_TABLE_ROW = new InjectionToken('DATA_TABLE_ROW');\n","export enum ForceUpdateReason {\r\n  RowUpdate = 0,\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[dEditorHost]',\n})\nexport class EditorDirective {\n  constructor(public viewContainerRef: ViewContainerRef) { }\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'd-cell-edit',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableCellEditTmplComponent {\n\n  @ContentChild(TemplateRef) template: TemplateRef<any>;\n\n  dataPicker;\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'd-cell',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableCellViewTmplComponent {\n\n  @ContentChild(TemplateRef) template: TemplateRef<any>;\n\n}\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'd-head-cell',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableHeadCellTmplComponent {\n\n  @ContentChild(TemplateRef) template: TemplateRef<any>;\n\n}\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ContentChild,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { FilterConfig } from '../data-table.model';\r\nimport { DataTableCellEditTmplComponent } from './data-table-cell-edit-tmpl.component';\r\nimport { DataTableCellViewTmplComponent } from './data-table-cell-view-tmpl.component';\r\nimport { DataTableHeadCellTmplComponent } from './data-table-head-cell-tmpl.component';\r\n\r\n@Component({\r\n  selector: 'd-column',\r\n  template: '',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DataTableColumnTmplComponent implements OnChanges, OnDestroy {\r\n  @Input() advancedHeader: Array<{\r\n    header: string;\r\n    rowspan: number;\r\n    colspan: number;\r\n    [prop: string]: any;\r\n  }>;\r\n  @Input() headCellApplyAll = false;\r\n  @Input() maxWidth: string;\r\n  @Input() minWidth: string;\r\n  @Input() field: string;\r\n  @Input() header: string;\r\n  @Input() sortable: boolean;\r\n  @Input() editable: boolean;\r\n  @Input() filterable: boolean;\r\n  @Input() closeFilterWhenScroll: boolean;\r\n  @Input() cellClass: string;\r\n  @Input() nestedColumnIndent = 16;\r\n  @Input() width: string;\r\n  // @Input() fixed?: boolean;\r\n  @Input() fixedLeft?: string;\r\n  @Input() fixedRight?: string;\r\n  @Input() extraOptions: any;\r\n  @Input() order: number = Number.MAX_VALUE;\r\n  @Input() nestedColumn = false;\r\n  /**\r\n   * 传入筛选列表\r\n   */\r\n  @Input() filterList: Array<FilterConfig>;\r\n  @Output() filterChange = new EventEmitter<FilterConfig[]>();\r\n  @Output() filterToggle = new EventEmitter<{\r\n    isOpen: boolean;\r\n    checklist: FilterConfig[];\r\n  }>();\r\n  @Input() filterMultiple = true;\r\n  @Input() filterIconActive: boolean;\r\n  @Input() filterBoxWidth: any;\r\n  @Input() filterBoxHeight: any;\r\n  @Input() beforeFilter: (value) => boolean | Promise<boolean> | Observable<boolean>;\r\n  @ContentChild(DataTableCellViewTmplComponent) cellCmp: DataTableCellViewTmplComponent;\r\n  @ContentChild(DataTableCellEditTmplComponent) cellEditCmp: DataTableCellEditTmplComponent;\r\n  @ContentChild(DataTableHeadCellTmplComponent) headCellTmpl: DataTableHeadCellTmplComponent;\r\n  @Input() customFilterTemplate: TemplateRef<any>;\r\n  @Input() extraFilterTemplate: TemplateRef<any>;\r\n  @Input() searchFn: (term: string) => Observable<Array<any>>;\r\n  orderChange = new EventEmitter<SimpleChanges>();\r\n  widthChange = new EventEmitter<SimpleChanges>();\r\n  _formatter: (item: any, row?: any) => string;\r\n\r\n  // 鼠标是否移动到当前表头单元格\r\n  selected = false;\r\n\r\n  // @deprecated\r\n  @Input() fieldType = 'text';\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { order, width } = changes;\r\n    if (order) {\r\n      this.orderChange.emit(order.currentValue);\r\n    }\r\n    if (width) {\r\n      this.widthChange.emit(width.currentValue);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.orderChange.unsubscribe();\r\n  }\r\n\r\n  emitFilterData(filterData) {\r\n    this.filterChange.emit(filterData);\r\n  }\r\n\r\n  emitFilterToggle(data: { isOpen: boolean; checklist: FilterConfig[] }) {\r\n    this.filterToggle.emit(data);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { I18nFormat } from 'ng-devui/i18n';\nimport { formatDate } from 'ng-devui/utils';\nimport type { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\n\n@Pipe({ name: 'disPlayCellValuePipe' })\nexport class DisPlayCellValuePipe implements PipeTransform {\n  datePicker = {\n    format: {\n      date: 'y-MM-dd',\n      time: 'y-MM-dd HH:mm',\n    },\n  };\n\n  transform(rowItem, rowIndex, column: DataTableColumnTmplComponent, lang?: string): any {\n    if (!column || !column.field) {\n      return null;\n    }\n\n    if (column.field === '$index') {\n      return rowIndex + 1;\n    }\n\n    if (lang) {\n      const format = I18nFormat.localFormat[lang];\n      this.datePicker.format.date = format.short;\n      this.datePicker.format.time = format.medinum;\n    }\n\n    const cellItem = rowItem[column.field];\n\n    switch (column.fieldType) {\n    case 'date': {\n      let pattern;\n      if (column.extraOptions && column.extraOptions.dateFormat) {\n        pattern = column.extraOptions.dateFormat;\n      } else {\n        pattern = column.extraOptions && column.extraOptions.showTime ? this.datePicker.format.time : this.datePicker.format.date;\n      }\n      return cellItem ? formatDate(new Date(cellItem), pattern) : '';\n    }\n    case 'select':\n    case 'treeSelect':\n      if (column.extraOptions && column.extraOptions.multiple) {\n        if (cellItem && cellItem.length > 0) {\n          let displayValue;\n          if (column.extraOptions.filterKey) {\n            displayValue = cellItem.map((item) => item[column.extraOptions.filterKey]).join(';');\n          } else {\n            displayValue = cellItem.join(';');\n          }\n          return displayValue;\n        } else {\n          return '--';\n        }\n      } else {\n        let displayValue;\n        if (column.extraOptions && column.extraOptions.filterKey) {\n          displayValue = cellItem ? cellItem[column.extraOptions.filterKey] : cellItem;\n        } else {\n          displayValue = cellItem;\n        }\n        return displayValue === 0 ? 0 : displayValue || '--';\n      }\n    default:\n      if (cellItem === null || cellItem === undefined || cellItem === '') {\n        return '--';\n      } else {\n        return cellItem;\n      }\n    }\n  }\n}\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ComponentFactoryResolver,\r\n  ElementRef,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  SimpleChange,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { I18nFormat, I18nService } from 'ng-devui/i18n';\r\nimport { InputNumberComponent } from 'ng-devui/input-number';\r\nimport { SelectComponent } from 'ng-devui/select';\r\nimport { TreeSelectComponent } from 'ng-devui/tree-select';\r\nimport { stopPropagationIfExist } from 'ng-devui/utils';\r\nimport { Subject, Subscription, fromEvent } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { DATA_TABLE_ROW } from './data-table-row.token';\r\nimport { DATA_TABLE } from './data-table.token';\r\nimport { EditorDirective } from './editor-host.directive';\r\nimport { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\r\n\r\n@Component({\r\n  selector: 'd-data-table-cell,[dDataTableCell]',\r\n  templateUrl: './data-table-cell.component.html',\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DataTableCellComponent implements OnInit, OnChanges, OnDestroy {\r\n  @ViewChild(EditorDirective) editorHost: EditorDirective;\r\n  @Input() rowIndex: number;\r\n  @Input() colIndex: number;\r\n  @Input() column: DataTableColumnTmplComponent;\r\n  @Input() rowItem: any;\r\n  @Input() editModel: string;\r\n  @Input() isEditRow: boolean;\r\n  @Input() timeout: number;\r\n  @Input() tableLevel: number;\r\n\r\n  @HostBinding('class.editable-cell') get isEditable() {\r\n    return this.column.editable && !this.isCellEdit && this.column.extraOptions?.editableTip !== 'btn' && !this.fieldEditDenied;\r\n  }\r\n  isCellEdit: boolean;\r\n  forceUpdateSubscription: Subscription;\r\n  documentClickSubscription: Subscription;\r\n  tdMousedownSubscription: Subscription;\r\n  tdMouseupSubscription: Subscription;\r\n  clickInTd: boolean;\r\n  cellEditorClickSubscription: Subscription;\r\n  cellActionSubscription: Subscription;\r\n  clickCount = 0; // 记录点击次数\r\n  timeoutId; // 延时id\r\n  fieldEditDenied: boolean;\r\n  templateEditorActive: boolean; // 通过模板生成的编辑控件激活\r\n  dynamicEditorActive: boolean; // 动态生成的编辑控件激活\r\n  unsubscribe$ = new Subject<void>();\r\n  lang: any;\r\n\r\n  constructor(\r\n    @Inject(DATA_TABLE) public dt: any,\r\n    @Inject(DATA_TABLE_ROW) public rowComponent: any,\r\n    private i18n: I18nService,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    private cellRef: ElementRef,\r\n    private ngZone: NgZone\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.forceUpdateSubscription = this.rowComponent.forceUpdateEvent.subscribe(() => this.forceUpdate());\r\n    if (this.column.editable) {\r\n      this.tdMousedownSubscription = fromEvent(this.cellRef.nativeElement, 'mousedown').subscribe(() => {\r\n        this.clickInTd = true;\r\n      });\r\n\r\n      this.tdMouseupSubscription = fromEvent(this.cellRef.nativeElement, 'mouseup').subscribe(() => {\r\n        this.clickInTd = false;\r\n      });\r\n    }\r\n    this.ngZone.runOutsideAngular(() => {\r\n      this.cellRef.nativeElement.addEventListener('mouseup', this.onCellClick.bind(this));\r\n      this.cellRef.nativeElement.addEventListener('dblclick', this.onCellDBClick.bind(this));\r\n    });\r\n    this.lang = I18nFormat.getLocaleAndLang().currentLanguage;\r\n    this.i18n\r\n      .langChange()\r\n      .pipe(takeUntil(this.unsubscribe$))\r\n      .subscribe(() => {\r\n        this.lang = I18nFormat.getLocaleAndLang().currentLanguage;\r\n      });\r\n  }\r\n\r\n  ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\r\n    const rowItem = changes.rowItem;\r\n    if (rowItem) {\r\n      this.updateEditable(rowItem);\r\n    }\r\n  }\r\n\r\n  updateEditable(rowItem) {\r\n    const currentConfig = rowItem.currentValue.$editDeniedConfig;\r\n    if (!currentConfig) {\r\n      if (this.fieldEditDenied) {\r\n        this.fieldEditDenied = false;\r\n      }\r\n    } else {\r\n      const index = currentConfig.findIndex((config: string) => {\r\n        return config === this.column.field;\r\n      });\r\n      if (index === -1) {\r\n        if (this.fieldEditDenied) {\r\n          this.fieldEditDenied = false;\r\n        }\r\n      } else {\r\n        if (!this.fieldEditDenied) {\r\n          this.fieldEditDenied = true;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  onCellClick($event) {\r\n    const cellSelectedEventArg = {\r\n      rowIndex: this.rowIndex,\r\n      colIndex: this.colIndex,\r\n      column: this.column,\r\n      rowItem: this.rowItem,\r\n      cellComponent: this,\r\n      rowComponent: this.rowComponent,\r\n      event: $event,\r\n    };\r\n\r\n    this.clickCount++;\r\n    if (this.clickCount === 1) {\r\n      this.timeoutId = setTimeout(() => {\r\n        if (this.clickCount === 1) {\r\n          this.dt.onCellClick(cellSelectedEventArg);\r\n        }\r\n        this.clickCount = 0;\r\n        clearTimeout(this.timeoutId);\r\n      }, this.timeout);\r\n    }\r\n  }\r\n\r\n  onCellDBClick($event) {\r\n    const cellSelectedEventArg = {\r\n      rowIndex: this.rowIndex,\r\n      colIndex: this.colIndex,\r\n      column: this.column,\r\n      rowItem: this.rowItem,\r\n      cellComponent: this,\r\n      rowComponent: this.rowComponent,\r\n    };\r\n    this.dt.onCellDBClick(cellSelectedEventArg);\r\n  }\r\n\r\n  forceUpdate() {\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  finishCellEdit($event?: Event) {\r\n    if (this.editModel !== 'cell') {\r\n      return;\r\n    }\r\n\r\n    this.isCellEdit = false;\r\n    this.editorHost.viewContainerRef.clear();\r\n    this.dynamicEditorActive = false;\r\n    this.templateEditorActive = false;\r\n\r\n    if (this.documentClickSubscription) {\r\n      this.unSubscription(this.documentClickSubscription);\r\n    }\r\n\r\n    if (this.cellEditorClickSubscription) {\r\n      this.unSubscription(this.cellEditorClickSubscription);\r\n    }\r\n    stopPropagationIfExist($event);\r\n\r\n    this.dt.onCellEditEnd({\r\n      rowIndex: this.rowIndex,\r\n      colIndex: this.colIndex,\r\n      column: this.column,\r\n      rowItem: this.rowItem,\r\n      cellComponent: this,\r\n      rowComponent: this.rowComponent,\r\n    });\r\n  }\r\n\r\n  isCellEditEnable(column, rowItem) {\r\n    if (this.editModel === 'cell') {\r\n      return this.isCellEdit;\r\n    }\r\n\r\n    return this.isEditRow;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.forceUpdateSubscription) {\r\n      this.unSubscription(this.forceUpdateSubscription);\r\n    }\r\n    if (this.documentClickSubscription) {\r\n      this.unSubscription(this.documentClickSubscription);\r\n    }\r\n    if (this.cellEditorClickSubscription) {\r\n      this.unSubscription(this.cellEditorClickSubscription);\r\n    }\r\n    if (this.cellActionSubscription) {\r\n      this.unSubscription(this.cellActionSubscription);\r\n    }\r\n    if (this.tdMousedownSubscription) {\r\n      this.unSubscription(this.tdMousedownSubscription);\r\n    }\r\n    if (this.tdMouseupSubscription) {\r\n      this.unSubscription(this.tdMouseupSubscription);\r\n    }\r\n    if (this.unsubscribe$) {\r\n      this.unsubscribe$.unsubscribe();\r\n    }\r\n  }\r\n\r\n  private unSubscription(sbscription: Subscription) {\r\n    if (sbscription) {\r\n      sbscription.unsubscribe();\r\n      /* eslint-disable-next-line no-param-reassign */\r\n      sbscription = null;\r\n    }\r\n  }\r\n\r\n  creatCellEditor() {\r\n    let componentFactory;\r\n    let editorComponent;\r\n    switch (this.column.fieldType) {\r\n    case 'number':\r\n      editorComponent = InputNumberComponent;\r\n      break;\r\n    case 'select':\r\n      editorComponent = SelectComponent;\r\n      break;\r\n    case 'treeSelect':\r\n      editorComponent = TreeSelectComponent;\r\n      break;\r\n    default:\r\n      this.templateEditorActive = true;\r\n    }\r\n\r\n    if (editorComponent) {\r\n      componentFactory = this.componentFactoryResolver.resolveComponentFactory(editorComponent);\r\n      const viewContainerRef = this.editorHost.viewContainerRef;\r\n      viewContainerRef.clear();\r\n      const componentRef = viewContainerRef.createComponent<{ writeValue: Function; registerOnChange: Function }>(componentFactory);\r\n      const componentInstance = componentRef.instance;\r\n      if (this.column.extraOptions) {\r\n        componentFactory.inputs.forEach((input) => {\r\n          if (this.column.extraOptions[input.templateName]) {\r\n            componentInstance[input.propName] = this.column.extraOptions[input.templateName];\r\n          }\r\n        });\r\n      }\r\n      componentInstance.writeValue(this.rowItem[this.column.field]);\r\n      componentInstance.registerOnChange((value) => {\r\n        this.rowItem[this.column.field] = value;\r\n        if (this.column.extraOptions && this.column.extraOptions.finishEditingAfterValueChange) {\r\n          this.finishCellEdit();\r\n        }\r\n      });\r\n      this.dynamicEditorActive = true;\r\n    }\r\n  }\r\n\r\n  cellEditing($event) {\r\n    $event.stopPropagation();\r\n    $event.preventDefault();\r\n    let beforeEdit = Promise.resolve(undefined);\r\n    if (this.dt.beforeCellEdit) {\r\n      beforeEdit = this.dt.beforeCellEdit(this.rowItem, this.column);\r\n    }\r\n    beforeEdit.then((extraOptions?: any) => {\r\n      if (extraOptions) {\r\n        this.column.extraOptions = extraOptions;\r\n      }\r\n      this.dt.cellEditorClickEvent.emit($event);\r\n      const cellSelectedEventArg = {\r\n        rowIndex: this.rowIndex,\r\n        colIndex: this.colIndex,\r\n        column: this.column,\r\n        rowItem: this.rowItem,\r\n        cellComponent: this,\r\n        rowComponent: this.rowComponent,\r\n      };\r\n      if (this.column.editable && this.editModel === 'cell') {\r\n        this.isCellEdit = true;\r\n        this.creatCellEditor();\r\n        this.documentClickSubscription = this.dt.documentClickEvent.subscribe((event) => {\r\n          const containTarget = !this.cellRef.nativeElement.contains(event.target) && !this.clickInTd;\r\n          const flag = this.dt.beforeCellEditEnd && containTarget ? this.dt.beforeCellEditEnd(this.rowItem, this.column) : true;\r\n          if ((event === 'cancel' || containTarget) && flag) {\r\n            this.ngZone.run(() => {\r\n              this.finishCellEdit();\r\n            });\r\n          }\r\n          this.clickInTd = false;\r\n        });\r\n        this.cellEditorClickSubscription = this.dt.cellEditorClickEvent.subscribe((event) => {\r\n          const containTarget = this.cellRef.nativeElement.contains(event.target);\r\n          const flag = this.dt.beforeCellEditEnd && !containTarget ? this.dt.beforeCellEditEnd(this.rowItem, this.column) : true;\r\n          if (!containTarget && flag) {\r\n            this.finishCellEdit();\r\n          }\r\n        });\r\n        this.dt.onCellEditStart(cellSelectedEventArg);\r\n      }\r\n    });\r\n  }\r\n\r\n  toggleChildTable(rowItem) {\r\n    rowItem.$isChildTableOpen = !rowItem.$isChildTableOpen;\r\n    this.dt.setRowChildToggleStatus(rowItem, rowItem.$isChildTableOpen);\r\n  }\r\n}\r\n","<ng-template *ngIf=\"!column.editable || fieldEditDenied\" [ngTemplateOutlet]=\"cellViewTemp\"></ng-template>\n\n<ng-container *ngIf=\"column.editable && !fieldEditDenied\">\n  <div *ngIf=\"!isCellEdit && column.extraOptions?.editableTip === 'btn'\" class=\"cell-container\">\n    <div class=\"cell-container-inner not-break modify-holder\">\n      <ng-template [ngTemplateOutlet]=\"cellViewTemp\"></ng-template>\n      <span class=\"cell-modify\" (click)=\"cellEditing($event)\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16px\" height=\"16px\" version=\"1.1\">\n          <g fill=\"none\" fill-rule=\"evenodd\" stroke=\"none\" stroke-width=\"1\">\n            <path\n              d=\"M 9.48528 3.41421 L 10.8995 2 L 13.7279 4.82843 L 12.3137 6.24264 L 9.48528 3.41421 Z M 5.24264 13.3137 L 2.41421 13.3137 L 2.41421 10.4853 L 8.77817 4.12132 L 11.6066 6.94975 L 5.24264 13.3137 Z\"\n            />\n          </g>\n        </svg>\n      </span>\n    </div>\n  </div>\n  <div *ngIf=\"!isCellEdit && column.extraOptions?.editableTip !== 'btn'\" class=\"cell-editable\" (click)=\"cellEditing($event)\">\n    <ng-template [ngTemplateOutlet]=\"cellViewTemp\"></ng-template>\n  </div>\n  <div [ngClass]=\"{ 'edit-padding-fix': dynamicEditorActive }\">\n    <ng-template dEditorHost></ng-template>\n  </div>\n  <ng-template\n    *ngIf=\"templateEditorActive\"\n    [ngTemplateOutlet]=\"column.cellEditCmp ? column.cellEditCmp.template : column.fieldType === 'date' ? dateEditTempate : textEditTempate\"\n    [ngTemplateOutletContext]=\"{\n      rowIndex: rowIndex,\n      colIndex: colIndex,\n      column: column,\n      rowItem: rowItem,\n      $implicit: this,\n      row: rowComponent\n    }\"\n  >\n  </ng-template>\n</ng-container>\n\n<ng-template #cellViewTemp>\n  <ng-container *ngIf=\"column.nestedColumn\">\n    <span *ngIf=\"tableLevel > 0\" class=\"cell-placeholder\" [ngStyle]=\"{ width: tableLevel * column.nestedColumnIndent + 'px' }\"></span>\n    <span [style.visibility]=\"rowItem.children ? 'visible' : 'hidden'\" class=\"childtable-toggler\" (click)=\"toggleChildTable(rowItem)\">\n      <ng-container *ngIf=\"rowItem['$isChildTableOpen']\">\n        <svg\n          *ngIf=\"!column.extraOptions?.iconFoldTable\"\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          class=\"svg-icon svg-icon-close\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n            <rect x=\"4\" y=\"7\" width=\"8\" height=\"2\"></rect>\n          </g>\n        </svg>\n\n        <span *ngIf=\"column.extraOptions?.iconFoldTable\" [innerHTML]=\"column.extraOptions?.iconFoldTable | safe : 'html'\"></span>\n      </ng-container>\n      <ng-container *ngIf=\"!rowItem['$isChildTableOpen']\">\n        <svg\n          *ngIf=\"!column.extraOptions?.iconUnFoldTable\"\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          class=\"svg-icon svg-icon-open-folder\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n            <path\n              d=\"M8.75,4 L8.75,7.25 L12,7.25 L12,8.75 L8.749,8.75 L8.75,12 L7.25,12 L7.249,8.75 L4,8.75 L4,7.25 L7.25,7.25 L7.25,4 L8.75,4 Z\"\n            ></path>\n          </g>\n        </svg>\n        <span *ngIf=\"column.extraOptions?.iconUnFoldTable\" [innerHTML]=\"column.extraOptions?.iconUnFoldTable | safe : 'html'\"></span>\n      </ng-container>\n    </span>\n  </ng-container>\n  <ng-template\n    [ngTemplateOutlet]=\"column.cellCmp ? column.cellCmp.template : textViewTemplate\"\n    [ngTemplateOutletContext]=\"{\n      rowIndex: rowIndex,\n      colIndex: colIndex,\n      column: column,\n      rowItem: rowItem,\n      cellItem: rowItem[column.field],\n      cellValue: rowItem | disPlayCellValuePipe : rowIndex : column : lang,\n      $implicit: this,\n      row: rowComponent,\n      tableLevel: tableLevel\n    }\"\n  >\n  </ng-template>\n</ng-template>\n\n<ng-template let-cellValue=\"cellValue\" #textViewTemplate>\n  <span [attr.title]=\"cellValue\">{{ cellValue }}</span>\n</ng-template>\n\n<ng-template let-rowIndex=\"rowIndex\" let-colIndex=\"colIndex\" let-rowItem=\"rowItem\" let-column=\"column\" let-cell=\"\" #textEditTempate>\n  <form class=\"form-inline edit-padding-fix\">\n    <div class=\"form-group full-width\">\n      <div class=\"input-group full-width\">\n        <input\n          [dAutoFocus]=\"cell && cell.isCellEdit\"\n          [type]=\"column.fieldType\"\n          class=\"devui-form-control\"\n          [name]=\"column.field\"\n          [(ngModel)]=\"rowItem[column.field]\"\n          [attr.maxlength]=\"column.extraOptions?.maxlength\"\n          [attr.minlength]=\"column.extraOptions?.minlength\"\n          [attr.pattern]=\"column.extraOptions?.pattern\"\n          (keydown.enter)=\"cell && cell.finishCellEdit($event)\"\n          [placeholder]=\"column.placeholder || ''\"\n        />\n      </div>\n    </div>\n  </form>\n</ng-template>\n\n<ng-template let-rowIndex=\"rowIndex\" let-colIndex=\"colIndex\" let-rowItem=\"rowItem\" let-column=\"column\" let-cell=\"\" #dateEditTempate>\n  <form class=\"form-inline edit-padding-fix\">\n    <div class=\"devui-form-group\">\n      <div class=\"devui-input-group devui-dropdown-origin\">\n        <input\n          class=\"devui-form-control search\"\n          [name]=\"column.field\"\n          [(ngModel)]=\"rowItem[column.field]\"\n          dDatepicker\n          appendToBody\n          [dateFormat]=\"column.extraOptions?.dateFormat\"\n          #datePicker=\"datepicker\"\n          (ngModelChange)=\"!column.extraOptions?.showTime && cell && cell.finishCellEdit()\"\n          [maxDate]=\"column.extraOptions?.maxDate\"\n          [minDate]=\"column.extraOptions?.minDate\"\n          [cssClass]=\"column.extraOptions?.cssClass\"\n          [dateConfig]=\"column.extraOptions?.dateConfig\"\n          [locale]=\"column.extraOptions?.locale\"\n          [customViewTemplate]=\"column.extraOptions?.customViewTemplate\"\n          [disabled]=\"column.extraOptions?.disabled\"\n          [placeholder]=\"column.placeholder || ''\"\n          [autoOpen]=\"true\"\n          [showTime]=\"column.extraOptions?.showTime\"\n        />\n        <div class=\"devui-input-group-addon\" (click)=\"datePicker.toggle()\">\n          <i class=\"icon icon-calendar\"></i>\n        </div>\n      </div>\n    </div>\n  </form>\n</ng-template>\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\nimport { DATA_TABLE_ROW } from './data-table-row.token';\r\nimport { DATA_TABLE } from './data-table.token';\r\nimport { ForceUpdateReason } from './force-update-reason.model';\r\nimport { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\r\n\r\n@Component({\r\n  selector: 'd-data-table-row, [dDataTableRow]',\r\n  templateUrl: './data-table-row.component.html',\r\n  styleUrls: ['./data-table-row.component.scss'],\r\n  preserveWhitespaces: false,\r\n  providers: [\r\n    {\r\n      provide: DATA_TABLE_ROW,\r\n      useExisting: forwardRef(() => DataTableRowComponent),\r\n    },\r\n  ],\r\n})\r\nexport class DataTableRowComponent implements OnInit {\r\n  @Input() rowItem: any;\r\n  @HostBinding('style.font-weight') fontWeight = 'normal';\r\n  @HostBinding('style.vertical-align') verticalAlign = 'middle';\r\n  @Input() selectable: boolean;\r\n  @Input() checkable: boolean;\r\n  @Input() showExpandToggle: boolean;\r\n  @Input() rowIndex: number;\r\n  @Input() allChecked: boolean;\r\n  @Input() columns: DataTableColumnTmplComponent[];\r\n  @Input() editModel: string;\r\n  @Input() editRowItem: any;\r\n  @Input() resizeable: boolean;\r\n  @Input() timeout: number;\r\n  @Input() tableLevel: number;\r\n  @Input() nestedIndex: string;\r\n  @Input() generalRowHoveredData: boolean;\r\n  @Output() detailChange = new EventEmitter<any>();\r\n\r\n  forceUpdateEvent = new EventEmitter<ForceUpdateReason>();\r\n\r\n  clickCount = 0; // 记录点击次数\r\n  timeoutId; // 延时id\r\n\r\n  constructor(\r\n    @Inject(DATA_TABLE) public dt: any,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private rowRef: ElementRef,\r\n    private ngZone: NgZone\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.ngZone.runOutsideAngular(() => {\r\n      this.rowRef.nativeElement.addEventListener('mouseup', this.onRowClick.bind(this));\r\n      this.rowRef.nativeElement.addEventListener('dblclick', this.onRowDBClick.bind(this));\r\n      if (this.generalRowHoveredData) {\r\n        this.rowRef.nativeElement.addEventListener('mouseenter', this.onRowMouseEnter.bind(this));\r\n        this.rowRef.nativeElement.addEventListener('mouseleave', this.onRowMouseLeave.bind(this));\r\n      }\r\n    });\r\n  }\r\n\r\n  forceUpdate() {\r\n    this.changeDetectorRef.markForCheck();\r\n    this.forceUpdateEvent.emit(ForceUpdateReason.RowUpdate);\r\n  }\r\n\r\n  onRowClick($event) {\r\n    this.clickCount++;\r\n    if (this.clickCount === 1) {\r\n      this.timeoutId = setTimeout(() => {\r\n        if (this.clickCount === 1) {\r\n          this.dt.onRowClick({\r\n            rowIndex: this.rowIndex,\r\n            nestedIndex: this.nestedIndex,\r\n            rowItem: this.rowItem,\r\n            rowComponent: this,\r\n            event: $event,\r\n          });\r\n        }\r\n        this.clickCount = 0;\r\n        clearTimeout(this.timeoutId);\r\n      }, this.timeout);\r\n    }\r\n  }\r\n\r\n  onRowDBClick($event) {\r\n    this.dt.onRowDBClick({ rowIndex: this.rowIndex, nestedIndex: this.nestedIndex, rowItem: this.rowItem, rowComponent: this });\r\n  }\r\n\r\n  onRowMouseEnter($event) {\r\n    this.ngZone.run(() => {\r\n      this.rowItem.$hovered = true;\r\n    });\r\n  }\r\n\r\n  onRowMouseLeave($event) {\r\n    this.ngZone.run(() => {\r\n      this.rowItem.$hovered = false;\r\n    });\r\n  }\r\n\r\n  onRowCheckChange($event, rowIndex, nestedIndex, rowItem) {\r\n    rowItem.$checked = $event;\r\n    rowItem.$halfChecked = false;\r\n    this.dt.setRowCheckStatus({ rowItem, rowIndex, nestedIndex, checked: $event });\r\n  }\r\n\r\n  toggle() {\r\n    if (this.rowItem.$isDetailOpen === undefined) {\r\n      this.rowItem.$isDetailOpen = !!this.rowItem.$expandConfig?.expand;\r\n    }\r\n    this.rowItem.$isDetailOpen = !this.rowItem.$isDetailOpen;\r\n    if (this.rowItem.$expandConfig) {\r\n      this.rowItem.$expandConfig.expand = !this.rowItem.$expandConfig.expand;\r\n    }\r\n    this.detailChange.emit({ state: this.rowItem.$isDetailOpen, index: this.rowIndex });\r\n    this.dt.onDetailToggle({ state: this.rowItem.$isDetailOpen, index: this.rowIndex });\r\n  }\r\n\r\n  trackByFn(index, item) {\r\n    return index;\r\n  }\r\n}\r\n","<td *ngIf=\"showExpandToggle\" class=\"devui-detail-cell\" [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\" [style.left]=\"0\">\n  <div *ngIf=\"rowItem.detail || rowItem?.$expandConfig\" (click)=\"toggle()\">\n    <span class=\"expand-icon-wrapper\" *ngIf=\"!rowItem['$isDetailOpen'] && !rowItem.$expandConfig?.expand\">\n      <svg\n        width=\"16px\"\n        height=\"16px\"\n        viewBox=\"0 0 16 16\"\n        version=\"1.1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      >\n        <g id=\"操作/collapse2\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n          <polygon\n            id=\"路径\"\n            fill=\"#293040\"\n            fill-rule=\"nonzero\"\n            transform=\"translate(8.146447, 8.000000) scale(-1, 1) translate(-8.146447, -8.000000) \"\n            points=\"11.7071068 12.2928932 10.2928932 13.7071068 4.58578644 8 10.2928932 2.29289322 11.7071068 3.70710678 7.41421356 8\"\n          ></polygon>\n        </g>\n      </svg>\n    </span>\n    <span class=\"expand-icon-wrapper\" *ngIf=\"(rowItem && rowItem['$isDetailOpen']) || rowItem.$expandConfig?.expand\">\n      <svg\n        width=\"16px\"\n        height=\"16px\"\n        viewBox=\"0 0 16 16\"\n        version=\"1.1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      >\n        <g id=\"操作/chevron_down\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n          <polygon id=\"chevron_down\" fill=\"#293040\" points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\n        </g>\n      </svg>\n    </span>\n  </div>\n</td>\n<td\n  *ngIf=\"checkable\"\n  class=\"devui-checkable-cell\"\n  [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\"\n  [style.left]=\"showExpandToggle && columns[0]?.fixedLeft ? '36px' : '0'\"\n>\n  <d-checkbox\n    [ngModelOptions]=\"{ standalone: true }\"\n    (ngModelChange)=\"onRowCheckChange($event, rowIndex, nestedIndex, rowItem)\"\n    [ngModel]=\"rowItem.$checked\"\n    [halfchecked]=\"rowItem.$halfChecked\"\n    [disabled]=\"rowItem.$checkDisabled || rowItem.$disabled\"\n    dTooltip\n    [content]=\"rowItem.$checkBoxTips\"\n    [position]=\"['top', 'right', 'bottom', 'left']\"\n    [showAnimation]=\"true\"\n    (mouseup)=\"$event.stopPropagation()\"\n  >\n  </d-checkbox>\n</td>\n<ng-container *ngFor=\"let column of columns; let colIndex = index; trackBy: trackByFn\">\n  <td\n    dDataTableCell\n    [rowIndex]=\"rowIndex\"\n    [colIndex]=\"colIndex\"\n    [column]=\"column\"\n    [rowItem]=\"rowItem\"\n    [editModel]=\"rowItem.$$editModel || editModel\"\n    [isEditRow]=\"rowItem.$$edit\"\n    [timeout]=\"timeout\"\n    [tableLevel]=\"tableLevel\"\n    class=\"{{ column.cellClass ? column.cellClass : '' }}\"\n    [ngClass]=\"{\n      'devui-sticky-left-cell': column.fixedLeft,\n      'devui-sticky-right-cell': column.fixedRight,\n      'devui-last-sticky-left-cell': column.fixedLeft && !columns[colIndex + 1]?.fixedLeft,\n      'devui-first-sticky-right-cell': column.fixedRight && !columns[colIndex - 1]?.fixedRight\n    }\"\n    [style.left]=\"column.fixedLeft ? column.fixedLeft : null\"\n    [style.right]=\"column.fixedRight ? column.fixedRight : null\"\n  ></td>\n</ng-container>\n","import { Component, Inject, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { TableExpandConfig, TableWidthConfig } from './data-table.model';\r\nimport { DATA_TABLE } from './data-table.token';\r\nimport { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\r\n\r\n@Component({\r\n  selector: 'd-data-table-body, [dDataTableBody]',\r\n  templateUrl: './data-table-body.component.html',\r\n  styleUrls: ['./data-table-body.component.scss'],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DataTableBodyComponent implements OnChanges {\r\n  @Input() checkable: boolean;\r\n  @Input() showExpandToggle: boolean;\r\n  @Input() allChecked: boolean;\r\n  @Input() selectable: boolean;\r\n  @Input() editModel: string;\r\n  @Input() editRowItem: any;\r\n  @Input() dataSource: any[] = [];\r\n  @Input() resizeable: boolean;\r\n  @Input() columns: DataTableColumnTmplComponent[];\r\n  @Input() detailTemplateRef: TemplateRef<any>;\r\n  @Input() timeout: number;\r\n  @Input() type: string;\r\n  @Input() rowHoveredHighlight: boolean;\r\n  @Input() tableLevel: number;\r\n  @Input() nestedIndex = '-1';\r\n  @Input() virtualScroll;\r\n  @Input() tableWidthConfig: TableWidthConfig[];\r\n  @Input() headerExpandConfig: TableExpandConfig;\r\n  @Input() generalRowHoveredData: boolean;\r\n  childTdColspan: number;\r\n\r\n  constructor(@Inject(DATA_TABLE) public dt: any) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.columns && this.columns) {\r\n      let columnSpan = this.columns.length;\r\n      if (this.showExpandToggle) {\r\n        columnSpan += 1;\r\n      }\r\n      if (this.checkable) {\r\n        columnSpan += 1;\r\n      }\r\n      this.childTdColspan = columnSpan;\r\n    }\r\n  }\r\n\r\n  trackByFn(index, item) {\r\n    return index;\r\n  }\r\n}\r\n","<tr *ngIf=\"headerExpandConfig?.expand\">\n  <td [attr.colspan]=\"tableWidthConfig.length\">\n    <ng-template\n      [ngTemplateOutlet]=\"headerExpandConfig?.expandTemplateRef || default\"\n      [ngTemplateOutletContext]=\"{ $implicit: this, columns: columns }\"\n    >\n    </ng-template>\n    <ng-template #default>\n      <div>{{ headerExpandConfig?.description }}</div>\n    </ng-template>\n  </td>\n</tr>\n<ng-container *ngIf=\"!virtualScroll; else scrollViewTpl\">\n  <ng-container *ngFor=\"let rowItem of dataSource; trackBy: trackByFn; let rowIndex = index\">\n    <ng-template [ngTemplateOutlet]=\"trTable\" [ngTemplateOutletContext]=\"{ rowItem: rowItem, rowIndex: rowIndex }\"> </ng-template>\n  </ng-container>\n</ng-container>\n\n<ng-template #scrollViewTpl>\n  <ng-container *cdkVirtualFor=\"let rowItem of dataSource; trackBy: trackByFn; let rowIndex = index\">\n    <ng-template [ngTemplateOutlet]=\"trTable\" [ngTemplateOutletContext]=\"{ rowItem: rowItem || {}, rowIndex: rowIndex }\"> </ng-template>\n  </ng-container>\n</ng-template>\n\n<ng-template #trTable let-rowIndex=\"rowIndex\" let-rowItem=\"rowItem\">\n  <tr\n    *ngIf=\"!rowItem?.$draggable\"\n    dDataTableRow\n    [generalRowHoveredData]=\"generalRowHoveredData\"\n    [resizeable]=\"resizeable\"\n    [checkable]=\"checkable\"\n    [rowIndex]=\"rowIndex\"\n    [rowItem]=\"rowItem\"\n    [columns]=\"columns\"\n    [editRowItem]=\"editRowItem\"\n    [editModel]=\"editModel\"\n    [allChecked]=\"allChecked\"\n    [showExpandToggle]=\"showExpandToggle\"\n    [timeout]=\"timeout\"\n    [tableLevel]=\"tableLevel\"\n    [nestedIndex]=\"nestedIndex\"\n    class=\"{{ rowItem.$rowClass ? rowItem.$rowClass : '' }}\"\n    [ngClass]=\"{ 'table-row-selected': rowItem.$checked }\"\n  ></tr>\n  <tr\n    *ngIf=\"rowItem?.$draggable\"\n    dDataTableRow\n    dDraggable\n    [generalRowHoveredData]=\"generalRowHoveredData\"\n    [resizeable]=\"resizeable\"\n    [checkable]=\"checkable\"\n    [rowIndex]=\"rowIndex\"\n    [rowItem]=\"rowItem\"\n    [columns]=\"columns\"\n    [editRowItem]=\"editRowItem\"\n    [editModel]=\"editModel\"\n    [allChecked]=\"allChecked\"\n    [showExpandToggle]=\"showExpandToggle\"\n    [timeout]=\"timeout\"\n    [tableLevel]=\"tableLevel\"\n    [nestedIndex]=\"nestedIndex\"\n    class=\"{{ rowItem.$rowClass ? rowItem.$rowClass : '' }}\"\n    [ngClass]=\"{ 'table-row-selected': rowItem.$checked }\"\n    [dragData]=\"{ data: rowItem }\"\n    [dragScope]=\"rowItem?.$draggable['scope']\"\n    [dragOverClass]=\"rowItem?.$draggable['class']\"\n    [dragHandle]=\"rowItem?.$draggable['handler']\"\n  ></tr>\n  <tr *ngIf=\"rowItem && rowItem['$isDetailOpen'] && rowItem.detail\">\n    <td [attr.colspan]=\"checkable ? 2 : 1\"></td>\n    <td [attr.colspan]=\"columns.length\" class=\"detail-content\" [style.padding]=\"'13px'\">\n      <ng-template\n        [ngTemplateOutlet]=\"detailTemplateRef || default\"\n        [ngTemplateOutletContext]=\"{ $implicit: this, detail: rowItem.detail, rowIndex: rowIndex, rowItem: rowItem }\"\n      >\n      </ng-template>\n      <ng-template #default let-detail=\"detail\" let-rowIndex=\"rowIndex\" let-rowItem=\"rowItem\">\n        <div>{{ detail }}</div>\n      </ng-template>\n    </td>\n  </tr>\n  <tr class=\"expand-row\" *ngIf=\"rowItem?.$expandConfig?.expand\">\n    <td *ngIf=\"checkable\"></td>\n    <td *ngIf=\"showExpandToggle\"></td>\n    <td [attr.colspan]=\"columns.length\">\n      <ng-template\n        [ngTemplateOutlet]=\"rowItem.$expandConfig?.expandTemplateRef || default\"\n        [ngTemplateOutletContext]=\"{ $implicit: this, columns: columns, rowIndex: rowIndex, rowItem: rowItem }\"\n      >\n      </ng-template>\n      <ng-template #default>\n        <div>{{ rowItem.$expandConfig?.description }}</div>\n      </ng-template>\n    </td>\n  </tr>\n  <tr class=\"child-table\" *ngIf=\"rowItem && rowItem['$isChildTableOpen'] && rowItem['children']\">\n    <td [attr.colspan]=\"childTdColspan\">\n      <table\n        class=\"devui-table {{ type ? 'table-' + type : '' }} {{ rowHoveredHighlight ? 'table-hover' : '' }}\"\n        style=\"table-layout: fixed\"\n      >\n        <colgroup>\n          <col [style.width]=\"config.width\" *ngFor=\"let config of tableWidthConfig\" />\n        </colgroup>\n        <tbody\n          dDataTableBody\n          [dataSource]=\"rowItem['children']\"\n          [resizeable]=\"resizeable\"\n          [columns]=\"columns\"\n          [checkable]=\"checkable\"\n          [allChecked]=\"allChecked\"\n          [selectable]=\"selectable\"\n          [editModel]=\"editModel\"\n          [editRowItem]=\"editRowItem\"\n          [showExpandToggle]=\"showExpandToggle\"\n          [detailTemplateRef]=\"detailTemplateRef\"\n          [timeout]=\"timeout\"\n          [type]=\"type\"\n          [rowHoveredHighlight]=\"rowHoveredHighlight\"\n          [tableLevel]=\"tableLevel + 1\"\n          [nestedIndex]=\"nestedIndex + ',' + rowIndex\"\n          [tableWidthConfig]=\"tableWidthConfig\"\n          [generalRowHoveredData]=\"generalRowHoveredData\"\n        ></tbody>\n      </table>\n    </td>\n  </tr>\n</ng-template>\n","import { TemplateRef } from '@angular/core';\nimport type { DataTableCellComponent } from './data-table-cell.component';\nimport type { DataTableRowComponent } from './data-table-row.component';\nimport type { TableThComponent } from './table/head/th/th.component';\nimport type { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\n\nexport interface CellSelectedEventArg {\n  rowIndex: number;\n  colIndex: number;\n  column: DataTableColumnTmplComponent;\n  rowItem: any;\n  cellComponent: DataTableCellComponent;\n  rowComponent: DataTableRowComponent;\n}\n\nexport enum SortDirection {\n  ASC = 'ASC',\n  DESC = 'DESC',\n  default = ''\n}\n\nexport interface RowSelectedEventArg {\n  rowIndex: number;\n  nestedIndex: string;\n  rowItem: any;\n  rowComponent: DataTableRowComponent;\n  event?: MouseEvent;\n}\n\nexport interface SortEventArg {\n  field?: string;\n  direction: SortDirection;\n  column?: DataTableColumnTmplComponent;\n  th?: TableThComponent;\n}\n\nexport interface RowCheckChangeEventArg {\n  rowIndex: number;\n  nestedIndex: string;\n  rowItem: any;\n  checked: boolean;\n}\n\nexport interface ColumnDefs {\n  render: (data: any, row: any) => any;\n  target: string;\n}\n\nexport interface FilterConfig {\n  id?: number | string;\n  name: string;\n  value: any;\n  checked?: boolean; // for Multiple\n  selected?: boolean; // for Radio\n}\n\nexport interface CheckableRelation {\n  upward: boolean;\n  downward: boolean;\n}\n\nexport interface TableExpandConfig {\n  expand?: boolean;\n  expandTemplateRef?: TemplateRef<any>;\n  description?: string;\n}\n\nexport interface ColumnResizeEventArg {\n  currentColumn: DataTableColumnTmplComponent;\n  nextColumn: DataTableColumnTmplComponent;\n}\n\nexport enum ColumnAdjustStrategy {\n  disable = 0, // 不可调整\n  mouseup = 1, // 列宽在鼠标松开时变化\n  mousemove = 2 // 列宽随着鼠标移动变化\n}\n\nexport interface TableCheckStatusArg {\n  pageAllChecked?: boolean;\n  pageHalfChecked?: boolean;\n}\n\nexport interface TableWidthConfig {\n  field: string;\n  width: string;\n}\n\nexport enum EditableTip {\n  hover = 'hover',\n  btn = 'btn'\n}\n\nexport interface RowToggleStatusEventArg {\n  rowItem: any;\n  open: boolean;\n}\n\nexport interface TableCheckOptions {\n  label: string;\n  onChecked: Function;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const TABLE_TH = new InjectionToken('TABLE_TH');\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { DropDownDirective } from 'ng-devui/dropdown';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { BehaviorSubject, Observable, Subscription, of } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { FilterConfig } from '../../../../data-table.model';\r\nimport { TABLE_TH } from '../th.token';\r\n\r\n@Component({\r\n  selector: 'd-table-filter',\r\n  templateUrl: './filter.component.html',\r\n  styleUrls: ['./filter.component.scss'],\r\n})\r\nexport class FilterComponent implements OnInit, OnChanges, OnDestroy {\r\n  @Input() beforeFilter: (value) => boolean | Promise<boolean> | Observable<boolean>;\r\n  @Input() customFilterTemplate: TemplateRef<any>;\r\n  @Input() extraFilterTemplate: TemplateRef<any>;\r\n  @Input() searchFn: (term: string) => Observable<Array<any>>;\r\n  @Input() filterList: Array<FilterConfig>;\r\n  @Input() filterIconActive: boolean;\r\n  @Input() filterMultiple = true;\r\n  @Input() filterBoxWidth: any;\r\n  @Input() filterBoxHeight: any;\r\n  @Input() column: any; // 为配置column方式兼容自定义过滤模板context\r\n  @Input() closeWhenScroll: boolean;\r\n  @Input() showFilterIcon = false;\r\n\r\n  @Output() filterIconActiveChange = new EventEmitter<boolean>(true);\r\n  @Output() filterChange = new EventEmitter<FilterConfig[]>();\r\n  @Output() filterToggle = new EventEmitter<{\r\n    isOpen: boolean;\r\n    checklist: FilterConfig[];\r\n  }>();\r\n\r\n  @HostBinding('class.devui-icon-show')\r\n  get canShow() {\r\n    return this.showFilterIcon || this.filterIconActive || this.filterIconActiveInner;\r\n  }\r\n\r\n  isDirty = false;\r\n\r\n  get filterWidthNum() {\r\n    return parseInt(this.filterBoxWidth || 250);\r\n  }\r\n\r\n  @ViewChild('filterDropdown') filterDropdown;\r\n  private sourceSubject: BehaviorSubject<any>;\r\n  private sourceSubscription: Subscription;\r\n  private filterSubscription: Subscription;\r\n  private i18nSubscription: Subscription;\r\n  private searchElement;\r\n  checkedListForFilter = [];\r\n  filterListDisplay = [];\r\n  searchText = '';\r\n  selectedItem: any;\r\n  isFilterHidden = false;\r\n  filterHalfChecked: boolean;\r\n  filterAllChecked: boolean;\r\n  i18nCommonText: I18nInterface['common'];\r\n  filterIconActiveInner: boolean;\r\n  DEBONCE_TIME = 300;\r\n  document: Document;\r\n  filterPadding = 26;\r\n\r\n  constructor(\r\n    private ref: ChangeDetectorRef,\r\n    private i18n: I18nService,\r\n    @Inject(TABLE_TH) private thComponent: any,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.i18nCommonText = this.i18n.getI18nText().common;\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (!this.searchFn) {\r\n      this.searchFn = (item) => {\r\n        return of((this.filterList ? this.filterList : []).filter((value) => value.name.toLowerCase().includes(item.toLowerCase())));\r\n      };\r\n    }\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nCommonText = data.common;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { filterList, filterMultiple, filterIconActive } = changes;\r\n    if (filterList || filterMultiple || filterIconActive) {\r\n      if (this.filterIconActive !== undefined) {\r\n        return;\r\n      }\r\n      if (this.filterList) {\r\n        if (!this.filterMultiple) {\r\n          this.selectedItem = this.filterList.filter((item) => item.selected)[0];\r\n          this.filterIconActiveInner = this.selectedItem !== undefined && !!Object.keys(this.selectedItem).length;\r\n        } else {\r\n          const checkedList = this.filterList.filter((item) => item.checked);\r\n          if (checkedList.length) {\r\n            this.filterIconActiveInner = true;\r\n          } else {\r\n            this.filterIconActiveInner = false;\r\n          }\r\n        }\r\n      }\r\n      this.filterIconActiveChange.emit(this.filterIconActiveInner);\r\n    }\r\n  }\r\n\r\n  closeFilter(dropdown: DropDownDirective) {\r\n    dropdown.toggle();\r\n  }\r\n\r\n  getFilterDataMultiple() {\r\n    // 兼容当前当用户未传入id时，使用name做重名判断\r\n    let keyValue = '';\r\n    if (this.checkedListForFilter.length) {\r\n      keyValue = Object.prototype.hasOwnProperty.call(this.checkedListForFilter[0], 'id') ? 'id' : 'name';\r\n    }\r\n    const checkedList = this.removeDuplication(this.checkedListForFilter, keyValue).filter((item) => item.checked);\r\n    this.setFilterIconActive(checkedList);\r\n    this.filterChange.emit(checkedList);\r\n  }\r\n\r\n  resetFilterData() {\r\n    this.isDirty = false;\r\n    this.filterList.forEach((t) => {\r\n      t.checked = false;\r\n    });\r\n    this.filterListDisplay.forEach((t) => {\r\n      t.checked = false;\r\n    });\r\n    this.setFilterIconActive([]);\r\n    this.filterChange.emit(this.filterList);\r\n  }\r\n\r\n  removeDuplication(array, key) {\r\n    const hash = {};\r\n    return array.reduceRight((item, next) => {\r\n      if (!hash[next[key]]) {\r\n        hash[next[key]] = true;\r\n        item.push(next);\r\n      }\r\n      return item;\r\n    }, []);\r\n  }\r\n\r\n  setFilterIconActive(checkedData) {\r\n    if (Array.isArray(checkedData) ? checkedData.length : checkedData) {\r\n      this.filterIconActiveInner = true;\r\n    } else {\r\n      this.filterIconActiveInner = false;\r\n    }\r\n    this.filterIconActiveChange.emit(this.filterIconActiveInner);\r\n  }\r\n\r\n  getFilterDataRadio(item) {\r\n    this.selectedItem = item;\r\n    this.setFilterIconActive(item);\r\n    this.filterChange.emit(item);\r\n  }\r\n\r\n  canFilter(isOpen) {\r\n    let changeResult = Promise.resolve(true);\r\n\r\n    if (this.beforeFilter) {\r\n      const result: any = this.beforeFilter(isOpen);\r\n      if (typeof result !== 'undefined') {\r\n        if (result.then) {\r\n          changeResult = result;\r\n        } else if (result.subscribe) {\r\n          changeResult = (result as Observable<boolean>).toPromise();\r\n        } else {\r\n          changeResult = Promise.resolve(result);\r\n        }\r\n      }\r\n    }\r\n\r\n    return changeResult;\r\n  }\r\n\r\n  resetSources() {\r\n    this.checkedListForFilter = [];\r\n    if (this.sourceSubscription) {\r\n      this.sourceSubscription.unsubscribe();\r\n    }\r\n    if (this.filterSubscription) {\r\n      this.filterSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  onContainerScroll = () => {\r\n    this.closeFilter(this.filterDropdown);\r\n  };\r\n\r\n  showFilterContent($event) {\r\n    if (this.closeWhenScroll) {\r\n      const tableViewElement = this.thComponent.tableViewRefElement.nativeElement.querySelector('.devui-scrollbar.scroll-view');\r\n      if ($event) {\r\n        this.document.addEventListener('scroll', this.onContainerScroll);\r\n        if (tableViewElement) {\r\n          tableViewElement.addEventListener('scroll', this.onContainerScroll);\r\n        }\r\n      } else {\r\n        this.document.removeEventListener('scroll', this.onContainerScroll);\r\n        if (tableViewElement) {\r\n          tableViewElement.removeEventListener('scroll', this.onContainerScroll);\r\n        }\r\n      }\r\n    }\r\n    this.searchText = '';\r\n    this.canFilter(!$event).then((change) => {\r\n      if (!$event) {\r\n        this.resetSources();\r\n        return;\r\n      }\r\n      if (!change) {\r\n        this.isFilterHidden = true;\r\n        return;\r\n      }\r\n      this.isFilterHidden = false;\r\n      if (!this.customFilterTemplate) {\r\n        this.registerFilterChange();\r\n      }\r\n    });\r\n    let keyValue = '';\r\n    if (this.checkedListForFilter.length) {\r\n      keyValue = Object.prototype.hasOwnProperty.call(this.checkedListForFilter[0], 'id') ? 'id' : 'name';\r\n    }\r\n    const checkedList = this.removeDuplication(this.checkedListForFilter, keyValue).filter((item) => item.checked);\r\n    this.filterToggle.emit({\r\n      isOpen: $event,\r\n      checklist: checkedList,\r\n    });\r\n  }\r\n\r\n  filterCheckAll($event) {\r\n    this.filterHalfChecked = false;\r\n    this.isDirty = true;\r\n    // 全选时只针对当前面板操作，全不选时针对所有数据\r\n    if ($event) {\r\n      this.filterListDisplay.forEach((item) => {\r\n        item.checked = $event;\r\n        this.checkedListForFilter.push(item);\r\n      });\r\n    } else {\r\n      this.filterListDisplay.forEach((item) => {\r\n        item.checked = $event;\r\n      });\r\n      this.filterList.forEach((item) => {\r\n        item.checked = $event;\r\n        this.checkedListForFilter.push(item);\r\n      });\r\n    }\r\n  }\r\n\r\n  setHalfChecked() {\r\n    this.filterHalfChecked = false;\r\n    const checked = this.filterListDisplay.filter((item) => item.checked);\r\n    if (checked.length && checked.length === this.filterListDisplay.length) {\r\n      this.filterAllChecked = true;\r\n    } else if (checked.length > 0) {\r\n      this.filterHalfChecked = true;\r\n    } else {\r\n      this.filterAllChecked = false;\r\n      this.filterHalfChecked = false;\r\n    }\r\n  }\r\n\r\n  checkboxChange($event, item) {\r\n    this.checkedListForFilter.push(item);\r\n    this.isDirty = true;\r\n    this.setHalfChecked();\r\n  }\r\n\r\n  onSearch(value) {\r\n    return this.sourceSubject.next(value);\r\n  }\r\n\r\n  registerFilterChange(): void {\r\n    this.sourceSubject = new BehaviorSubject<any>('');\r\n    this.sourceSubscription = this.sourceSubject.pipe(switchMap((term) => this.searchFn(term))).subscribe((options) => {\r\n      this.filterListDisplay = options;\r\n      this.checkedListForFilter.push(...options.filter((item) => item.checked));\r\n      this.setHalfChecked();\r\n      this.ref.markForCheck();\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    this.resetSources();\r\n  }\r\n}\r\n","<span\n  dDropDown\n  appendToBody\n  [appendToBodyDirections]=\"['centerDown', 'centerUp', 'rightDown', 'leftDown', 'rightUp', 'leftUp']\"\n  [closeScope]=\"'blank'\"\n  (toggleEvent)=\"showFilterContent($event)\"\n  #filterDropdown=\"d-dropdown\"\n>\n  <span dDropDownToggle>\n    <i\n      class=\"filter-icon\"\n      [ngClass]=\"{\n        'filter-icon-active': filterIconActive === undefined ? filterIconActiveInner : filterIconActive,\n        'filter-icon-visiable': showFilterIcon\n      }\"\n    >\n      <svg\n        width=\"16px\"\n        height=\"16px\"\n        viewBox=\"0 0 16 16\"\n        version=\"1.1\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      >\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n          <g>\n            <polygon points=\"10.0085775 7 10.0085775 15 6 13 6 7 2 3 2 1 14 1 14 3\"></polygon>\n          </g>\n        </g>\n      </svg>\n    </i>\n  </span>\n  <div\n    dDropDownMenu\n    class=\"devui-dropdown-menu\"\n    [ngClass]=\"{ 'filter-content-hidden': isFilterHidden }\"\n    [style.width]=\"filterBoxWidth || '250px'\"\n    [ngStyle]=\"{ 'min-height': filterBoxHeight ? filterBoxHeight : '60px' }\"\n  >\n    <ng-template\n      *ngIf=\"filterDropdown.isOpen\"\n      [ngTemplateOutlet]=\"customFilterTemplate || (filterMultiple ? filterContentTmplForMultiple : filterContentTmplForRadio)\"\n      [ngTemplateOutletContext]=\"{\n        $implicit: this,\n        filterListDisplay: filterListDisplay,\n        dropdown: filterDropdown,\n        column: column\n      }\"\n    >\n    </ng-template>\n  </div>\n</span>\n\n<ng-template #filterContentTmplForMultiple let-filterListMultiple=\"filterListDisplay\" let-dropdown=\"dropdown\">\n  <div class=\"data-table-column-filter-content filter-bg filter-font-color\" [style.width]=\"filterBoxWidth\" [style.height]=\"filterBoxHeight\">\n    <div class=\"filter-search-container\">\n      <d-search\n        [iconPosition]=\"'left'\"\n        [style.width]=\"filterWidthNum - filterPadding + 'px'\"\n        [isKeyupSearch]=\"true\"\n        [styleType]=\"'gray'\"\n        [placeholder]=\"i18nCommonText?.searchPlaceholder\"\n        (searchFn)=\"onSearch($event)\"\n      ></d-search>\n    </div>\n    <div class=\"filter-options\">\n      <d-checkbox\n        style=\"display: inline-block\"\n        [label]=\"i18nCommonText?.checkAll\"\n        (change)=\"filterCheckAll($event)\"\n        [halfchecked]=\"filterHalfChecked\"\n        [(ngModel)]=\"filterAllChecked\"\n      >\n      </d-checkbox>\n      <ng-container *ngIf=\"extraFilterTemplate\">\n        <ng-template\n          [ngTemplateOutlet]=\"extraFilterTemplate\"\n          [ngTemplateOutletContext]=\"{ checked: filterAllChecked, halfChecked: filterHalfChecked }\"\n        >\n        </ng-template>\n      </ng-container>\n      <div class=\"line\"></div>\n      <cdk-virtual-scroll-viewport\n        itemSize=\"30\"\n        minBufferPx=\"300\"\n        maxBufferPx=\"500\"\n        class=\"normal-filter-list-container devui-scrollbar\"\n        [style.height]=\"filterBoxHeight ? 'calc(' + filterBoxHeight + ' - 180px)' : 30 * (filterListMultiple?.length || 1) + 'px'\"\n        [style.maxHeight]=\"filterBoxHeight ? 'none' : '250px'\"\n      >\n        <div *cdkVirtualFor=\"let item of filterListMultiple\" class=\"checkbox-group\">\n          <d-checkbox [label]=\"item.name\" [(ngModel)]=\"item.checked\" (change)=\"checkboxChange($event, item)\"> </d-checkbox>\n        </div>\n        <div class=\"no-data-container\" *ngIf=\"!filterListMultiple?.length\">{{ i18nCommonText?.noData }}</div>\n      </cdk-virtual-scroll-viewport>\n    </div>\n    <div class=\"line\"></div>\n    <div class=\"filter-operation\">\n      <d-button\n        bsStyle=\"common\"\n        class=\"reset-btn\"\n        [disabled]=\"!isDirty && !filterHalfChecked && !filterAllChecked\"\n        (btnClick)=\"resetFilterData(); closeFilter(dropdown)\"\n        >{{ i18nCommonText?.reset }}</d-button\n      >\n      <d-button class=\"button-style\" (click)=\"getFilterDataMultiple(); closeFilter(dropdown)\">{{ i18nCommonText?.btnOk }}</d-button>\n    </div>\n  </div>\n</ng-template>\n<ng-template #filterContentTmplForRadio let-filterListRadio=\"filterListDisplay\" let-dropdown=\"dropdown\">\n  <div class=\"data-table-column-filter-content filter-bg filter-font-color\" [style.width]=\"filterBoxWidth\" [style.height]=\"filterBoxHeight\">\n    <div class=\"filter-search-container\">\n      <d-search\n        [iconPosition]=\"'left'\"\n        [style.width]=\"filterWidthNum - filterPadding + 'px'\"\n        [isKeyupSearch]=\"true\"\n        [styleType]=\"'gray'\"\n        [placeholder]=\"i18nCommonText?.searchPlaceholder\"\n        (searchFn)=\"onSearch($event)\"\n      ></d-search>\n    </div>\n    <div class=\"filter-options\" role=\"menu\">\n      <div class=\"normal-filter-list-container devui-scrollbar\" role=\"menuitem\" [style.maxHeight]=\"filterBoxHeight ? 'none' : '350px'\">\n        <div\n          [title]=\"item.name\"\n          *ngFor=\"let item of filterListRadio\"\n          class=\"drop-down-item\"\n          [ngClass]=\"{ 'filter-item-active': selectedItem === item }\"\n          (click)=\"getFilterDataRadio(item); closeFilter(dropdown)\"\n        >\n          {{ item.name }}\n        </div>\n      </div>\n    </div>\n  </div>\n</ng-template>\n","import { Component, EventEmitter, HostBinding, Input, OnInit, Output } from '@angular/core';\nimport { SortDirection, SortEventArg } from '../../../../data-table.model';\n\n@Component({\n  selector: 'd-table-sort',\n  templateUrl: './sort.component.html',\n  styleUrls: ['./sort.component.scss']\n})\nexport class SortComponent implements OnInit {\n  @Input() sortDirection: SortDirection;\n  @HostBinding('class.devui-icon-show')\n  @Input() showSortIcon = false;\n  @Output() sortEvent = new EventEmitter<SortEventArg>();\n\n  @HostBinding('class.devui-icon-show')\n  get canShow() {\n    return this.showSortIcon || (this.sortDirection === 'ASC') || (this.sortDirection === 'DESC');\n  }\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n  sort() {\n    switch (this.sortDirection) {\n    case SortDirection.ASC:\n      this.sortDirection = SortDirection.DESC;\n      break;\n    case 'DESC':\n      this.sortDirection = SortDirection.default;\n      break;\n    case SortDirection.default:\n    default:\n      this.sortDirection = SortDirection.ASC;\n    }\n    this.sortEvent.emit({ direction: this.sortDirection });\n  }\n}\n","<span (click)=\"sort()\" class=\"sort-clickable\">\n  <i\n    class=\"datatable-svg\"\n    [ngClass]=\"{\n      'sort-icon-default': !sortDirection,\n      'sort-icon-asc': sortDirection === 'ASC',\n      'sort-icon-desc': sortDirection === 'DESC',\n      'sort-icon-default-visible': showSortIcon\n    }\"\n  >\n    <svg\n      width=\"16px\"\n      height=\"16px\"\n      viewBox=\"0 0 16 16\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    >\n      <defs>\n        <circle id=\"sort-svg-path-1\" cx=\"8\" cy=\"8\" r=\"8\"></circle>\n        <filter x=\"-34.4%\" y=\"-21.9%\" width=\"168.8%\" height=\"168.8%\" filterUnits=\"objectBoundingBox\" id=\"filter-2\">\n          <feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\"></feOffset>\n          <feGaussianBlur stdDeviation=\"1.5\" in=\"shadowOffsetOuter1\" result=\"shadowBlurOuter1\"></feGaussianBlur>\n          <feColorMatrix\n            values=\"0 0 0 0 0   0 0 0 0 0   0 0 0 0 0  0 0 0 0.085309222 0\"\n            type=\"matrix\"\n            in=\"shadowBlurOuter1\"\n          ></feColorMatrix>\n        </filter>\n      </defs>\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <use fill-rule=\"evenodd\" xlink:href=\"#sort-svg-path-1\"></use>\n        <polygon points=\"8 4 11 7 5 7\"></polygon>\n        <polygon points=\"8 12 5 9 11 9\"></polygon>\n      </g>\n    </svg>\n  </i>\n</span>\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  TemplateRef\r\n} from '@angular/core';\r\nimport { fromEvent, Observable, Subscription } from 'rxjs';\r\nimport { FilterConfig, SortDirection, SortEventArg } from '../../../data-table.model';\r\nimport { TABLE_TH } from './th.token';\r\n\r\n@Component({\r\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dHeadCell]',\r\n  templateUrl: './th.component.html',\r\n  styleUrls: ['./th.component.scss'],\r\n  providers: [\r\n    {\r\n    provide: TABLE_TH,\r\n      useExisting: forwardRef(() => TableThComponent),\r\n    },\r\n  ],\r\n})\r\nexport class TableThComponent implements OnChanges, OnDestroy {\r\n  @HostBinding('class.resizeable') resizeEnabledClass = false;\r\n  @HostBinding('class.operable') operableClass = false;\r\n  @HostBinding('class.sort-active') sortActiveClass = false;\r\n  @HostBinding('class.filter-active') filterActiveClass = false;\r\n  @HostBinding('class.devui-sticky-left-cell') stickyLeftClass = false;\r\n  @HostBinding('class.devui-sticky-right-cell') stickyRightClass = false;\r\n  @HostBinding('style.left') stickyLeftStyle: string;\r\n  @HostBinding('style.right') stickyRightStyle: string;\r\n\r\n  @Input() resizeEnabled: boolean;\r\n  @Input() filterable: boolean;\r\n  @Input() beforeFilter: (value) => boolean | Promise<boolean> | Observable<boolean>;\r\n  @Input() customFilterTemplate: TemplateRef<any>;\r\n  @Input() extraFilterTemplate: TemplateRef<any>;\r\n  @Input() searchFn: (term: string) => Observable<Array<any>>;\r\n  @Input() showFilterIcon = true;\r\n  @Input() filterList: Array<FilterConfig>;\r\n  @Input() filterIconActive: boolean;\r\n  @Input() filterMultiple = true;\r\n  @Input() closeFilterWhenScroll: boolean;\r\n  @Input() filterBoxWidth: any;\r\n  @Input() filterBoxHeight: any;\r\n  @Output() filterChange = new EventEmitter<FilterConfig[]>();\r\n  @Output() filterToggle = new EventEmitter<{\r\n    isOpen: boolean;\r\n    checklist: FilterConfig[];\r\n  }>();\r\n\r\n  @HostBinding('class.can-sort')\r\n  @Input() sortable: boolean;\r\n  @Input() sortDirection: SortDirection;\r\n  @Input() showSortIcon = true;\r\n  @Output() sortDirectionChange = new EventEmitter<SortDirection>();\r\n  @Output() sortChange = new EventEmitter<SortEventArg>();\r\n\r\n  @Input() colDraggable: boolean;\r\n\r\n  @Input() nestedColumn: boolean;\r\n  /**\r\n   * @depreted 存在xxs风险，使用方需根据自身场景做好防护\r\n   */\r\n  @Input() iconFoldTable: string;\r\n  /**\r\n   * @depreted 存在xxs风险，使用方需根据自身场景做好防护\r\n   */\r\n  @Input() iconUnFoldTable: string;\r\n\r\n  @Input() tableViewRefElement: ElementRef;\r\n\r\n  @Output() resizeEndEvent: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() resizeStartEvent: EventEmitter<any> = new EventEmitter<any>();\r\n  @Output() resizingEvent: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n  @Input() minWidth: string;\r\n  @Input() maxWidth: string;\r\n\r\n  @Input() fixedLeft: string;\r\n  @Input() fixedRight: string;\r\n  @HostBinding('class.devui-last-sticky-left-cell')\r\n  @Input() isLastFixedLeft: boolean;\r\n  @HostBinding('class.devui-first-sticky-right-cell')\r\n  @Input() isFirstFixedRight: boolean;\r\n\r\n  resizeBarRefElement: HTMLElement;\r\n  element: HTMLElement;\r\n  subscription: Subscription;\r\n  resizing = false;\r\n  resizeNodeEvent: any;\r\n  resizeOverlay: HTMLElement;\r\n  nextElement: any;\r\n  initialWidth: number;\r\n  initialOffset: number;\r\n  totalWidth: number;\r\n  mouseDownScreenX: number;\r\n  resizeHandleElement: HTMLElement;\r\n  tableElement: HTMLElement;\r\n  tableHeaderElement: HTMLElement;\r\n\r\n  // 以下为内部传递参数，不对外暴露\r\n  @Input() childrenTableOpen: boolean;\r\n  @Output() toggleChildrenTableEvent = new EventEmitter<boolean>();\r\n  @Output() tapEvent = new EventEmitter<any>();\r\n  @Input() column: any; // 为配置column方式兼容自定义过滤模板context\r\n  document: Document;\r\n\r\n  constructor(\r\n    element: ElementRef,\r\n    private renderer2: Renderer2,\r\n    private zone: NgZone,\r\n    private cdr: ChangeDetectorRef,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.element = element.nativeElement;\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { resizeEnabled, filterable, sortable, colDraggable, filterIconActive, sortDirection, fixedLeft, fixedRight } = changes;\r\n    if (resizeEnabled) {\r\n      if (this.resizeEnabled) {\r\n        this.resizeEnabledClass = true;\r\n        if (!this.resizeHandleElement) {\r\n          this.resizeHandleElement = this.renderer2.createElement('span');\r\n          this.renderer2.addClass(this.resizeHandleElement, 'resize-handle');\r\n          this.renderer2.appendChild(this.element.firstChild, this.resizeHandleElement);\r\n          this.resizeNodeEvent = this.renderer2.listen(this.resizeHandleElement, 'click', (event) => event.stopPropagation());\r\n        }\r\n      } else {\r\n        this.resizeEnabledClass = false;\r\n      }\r\n    }\r\n\r\n    if (filterable || sortable || resizeEnabled || colDraggable) {\r\n      if (this.filterable || this.sortable || this.resizeEnabled || this.colDraggable) {\r\n        this.operableClass = true;\r\n      } else {\r\n        this.operableClass = false;\r\n      }\r\n    }\r\n\r\n    if (filterIconActive) {\r\n      if (this.filterIconActive) {\r\n        this.filterActiveClass = true;\r\n      } else {\r\n        this.filterActiveClass = false;\r\n      }\r\n    }\r\n\r\n    if (sortDirection) {\r\n      if (this.sortDirection === SortDirection.ASC || this.sortDirection === SortDirection.DESC) {\r\n        this.sortActiveClass = true;\r\n      } else {\r\n        this.sortActiveClass = false;\r\n      }\r\n    }\r\n\r\n    if (fixedLeft) {\r\n      if (this.fixedLeft) {\r\n        this.stickyLeftClass = true;\r\n        this.stickyLeftStyle = this.fixedLeft;\r\n      } else {\r\n        this.stickyLeftClass = false;\r\n        this.stickyLeftStyle = null;\r\n      }\r\n    }\r\n    if (fixedRight) {\r\n      if (this.fixedRight) {\r\n        this.stickyRightClass = true;\r\n        this.stickyRightStyle = this.fixedRight;\r\n      } else {\r\n        this.stickyRightClass = false;\r\n        this.stickyRightStyle = null;\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._destroySubscription();\r\n    if (this.resizeNodeEvent) {\r\n      this.resizeNodeEvent();\r\n    }\r\n  }\r\n\r\n  onFilterIconActive(active) {\r\n    this.filterActiveClass = active;\r\n  }\r\n\r\n  onTap(event) {\r\n    this.tapEvent.emit(event);\r\n  }\r\n\r\n  toggleChildrenTable() {\r\n    this.childrenTableOpen = !this.childrenTableOpen;\r\n    this.toggleChildrenTableEvent.emit(this.childrenTableOpen);\r\n  }\r\n\r\n  emitFilterData(filterData) {\r\n    this.filterChange.emit(filterData);\r\n  }\r\n\r\n  emitFilterToggle(data: { isOpen: boolean; checklist: FilterConfig[] }) {\r\n    this.filterToggle.emit(data);\r\n  }\r\n\r\n  onSort(event: SortEventArg) {\r\n    this.sortDirection = event.direction;\r\n    if (event.direction === SortDirection.default) {\r\n      this.sortActiveClass = false;\r\n    } else {\r\n      this.sortActiveClass = true;\r\n    }\r\n    this.sortDirectionChange.emit(event.direction);\r\n    this.sortChange.emit({ ...event, th: this });\r\n  }\r\n\r\n  clearSortOrder() {\r\n    this.sortDirection = SortDirection.default;\r\n    this.sortActiveClass = false;\r\n  }\r\n\r\n  @HostListener('mousedown', ['$event'])\r\n  onMousedown(event: MouseEvent): void {\r\n    const isHandle = (<HTMLElement>event.target).classList.contains('resize-handle');\r\n\r\n    if (isHandle) {\r\n      this.resizeStartEvent.emit(event); // emit begin resize event\r\n\r\n      this.initialWidth = this.element.clientWidth;\r\n      this.initialOffset = this.element.offsetLeft;\r\n      this.mouseDownScreenX = event.clientX;\r\n      event.stopPropagation();\r\n      this.nextElement = this.element.nextElementSibling;\r\n      this.resizing = true;\r\n      this.totalWidth = this.nextElement ? this.initialWidth + this.nextElement.clientWidth : this.initialWidth;\r\n\r\n      // create resizeOverlay\r\n      this.resizeOverlay = this.renderer2.createElement('div');\r\n      this.renderer2.appendChild(this.element.firstElementChild, this.resizeOverlay);\r\n      this.renderer2.addClass(this.resizeOverlay, 'resize-overlay');\r\n      this.renderer2.listen(this.resizeOverlay, 'click', (clickEvent: Event) => clickEvent.stopPropagation());\r\n\r\n      this.renderer2.addClass(this.tableViewRefElement.nativeElement, 'table-view-selector');\r\n\r\n      const resizeBar = this.renderer2.createElement('div');\r\n      this.renderer2.addClass(resizeBar, 'resize-bar');\r\n\r\n      this.tableElement = this.tableViewRefElement.nativeElement.querySelector('.devui-scrollbar table');\r\n\r\n      if (this.isLastFixedLeft || this.isFirstFixedRight) {\r\n        this.renderer2.addClass(this.tableViewRefElement.nativeElement, 'd-table-on-resize');\r\n      }\r\n\r\n      this.initialOffset = this.initialOffset - this.tableElement.parentElement.scrollLeft;\r\n      if (this.tableElement) {\r\n        this.renderer2.appendChild(this.tableElement, resizeBar);\r\n        this.renderer2.setStyle(resizeBar, 'display', 'block');\r\n        this.renderer2.setStyle(resizeBar, 'left', this.initialOffset + this.initialWidth - 2 + 'px');\r\n        this.resizeBarRefElement = resizeBar;\r\n      }\r\n\r\n      this.tableHeaderElement = this.tableViewRefElement.nativeElement.querySelector('.table-fix-header');\r\n\r\n      if (this.tableHeaderElement) {\r\n        this.renderer2.appendChild(this.tableHeaderElement, resizeBar);\r\n        this.renderer2.setStyle(resizeBar, 'display', 'block');\r\n        this.renderer2.setStyle(resizeBar, 'left', this.initialOffset + this.initialWidth - 2 + 'px');\r\n      }\r\n\r\n      this.renderer2.addClass(this.element, 'hover-bg');\r\n\r\n      const mouseup = fromEvent(this.document, 'mouseup');\r\n      this.subscription = mouseup.subscribe((ev: MouseEvent) => this.onMouseup(ev));\r\n\r\n      this.zone.runOutsideAngular(() => {\r\n        this.document.addEventListener('mousemove', this.bindMousemove);\r\n      });\r\n    }\r\n  }\r\n\r\n  onMouseup(event: MouseEvent): void {\r\n    this.zone.run(() => {\r\n      const movementX = event.clientX - this.mouseDownScreenX;\r\n      const newWidth = this.initialWidth + movementX;\r\n\r\n      const finalWidth = this.getFinalWidth(newWidth);\r\n      this.resizing = false;\r\n\r\n      // destroy overlay\r\n      this.renderer2.removeChild(this.element, this.resizeOverlay);\r\n\r\n      this.renderer2.removeClass(this.tableViewRefElement.nativeElement, 'table-view-selector');\r\n\r\n      this.renderer2.removeClass(this.tableViewRefElement.nativeElement, 'd-table-on-resize');\r\n\r\n      this.renderer2.removeClass(this.element, 'hover-bg');\r\n      if (this.tableElement) {\r\n        this.renderer2.removeChild(this.tableElement, this.resizeBarRefElement);\r\n      }\r\n\r\n      if (this.tableHeaderElement) {\r\n        this.renderer2.removeChild(this.tableHeaderElement, this.resizeBarRefElement);\r\n      }\r\n\r\n      this.resizeEndEvent.emit({ width: finalWidth, beforeWidth: this.initialWidth });\r\n    });\r\n    if (this.subscription && !this.subscription.closed) {\r\n      this._destroySubscription();\r\n    }\r\n\r\n    this.document.removeEventListener('mousemove', this.bindMousemove);\r\n  }\r\n\r\n  bindMousemove = (e) => {\r\n    this.move(e);\r\n  };\r\n\r\n  move(event: MouseEvent): void {\r\n\r\n    const movementX = event.clientX - this.mouseDownScreenX;\r\n    const newWidth = this.initialWidth + movementX;\r\n\r\n    const finalWidth = this.getFinalWidth(newWidth);\r\n    if (this.resizeBarRefElement) {\r\n      this.renderer2.setStyle(this.resizeBarRefElement, 'left', `${finalWidth + this.initialOffset}px`);\r\n    }\r\n    this.resizingEvent.emit({ width: finalWidth });\r\n  }\r\n\r\n  private getFinalWidth(newWidth: number): number {\r\n    const minWidth = this.handleWidth(this.minWidth);\r\n    const maxWidth = this.handleWidth(this.maxWidth);\r\n\r\n    const overMinWidth = !this.minWidth || newWidth >= minWidth;\r\n    const underMaxWidth = !this.maxWidth || newWidth <= maxWidth;\r\n\r\n    const result = !underMaxWidth ? maxWidth : newWidth;\r\n    const finalWidth = !overMinWidth ? minWidth : result;\r\n    return finalWidth;\r\n  }\r\n\r\n  private handleWidth(width: string | number) {\r\n    if (!width) {\r\n      return;\r\n    }\r\n    if (typeof width === 'number') {\r\n      return width;\r\n    }\r\n    if (width.includes('%')) {\r\n      const tableWidth = this.tableViewRefElement.nativeElement.clientWidth;\r\n      return (tableWidth * parseInt(width, 10)) / 100;\r\n    }\r\n    return parseInt(width.replace(/[^\\d]+/, ''), 10);\r\n  }\r\n\r\n  private _destroySubscription() {\r\n    if (this.subscription) {\r\n      this.subscription.unsubscribe();\r\n      this.subscription = undefined;\r\n    }\r\n  }\r\n}\r\n","<div class=\"header-container\">\n  <i class=\"drag-icon\" (mousedown)=\"onTap($event)\">\n    <svg\n      width=\"16px\"\n      height=\"16px\"\n      viewBox=\"0 0 16 16\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    >\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M4.5,1.5 L5.5,1.5 C6.05228475,1.5 6.5,1.94771525 6.5,2.5 L6.5,3.5 C6.5,4.05228475 6.05228475,4.5 5.5,4.5 L4.5,4.5 C3.94771525,4.5 3.5,4.05228475 3.5,3.5 L3.5,2.5 C3.5,1.94771525 3.94771525,1.5 4.5,1.5 Z M10.5,1.5 L11.5,1.5 C12.0522847,1.5 12.5,1.94771525 12.5,2.5 L12.5,3.5 C12.5,4.05228475 12.0522847,4.5 11.5,4.5 L10.5,4.5 C9.94771525,4.5 9.5,4.05228475 9.5,3.5 L9.5,2.5 C9.5,1.94771525 9.94771525,1.5 10.5,1.5 Z M4.5,6.5 L5.5,6.5 C6.05228475,6.5 6.5,6.94771525 6.5,7.5 L6.5,8.5 C6.5,9.05228475 6.05228475,9.5 5.5,9.5 L4.5,9.5 C3.94771525,9.5 3.5,9.05228475 3.5,8.5 L3.5,7.5 C3.5,6.94771525 3.94771525,6.5 4.5,6.5 Z M10.5,6.5 L11.5,6.5 C12.0522847,6.5 12.5,6.94771525 12.5,7.5 L12.5,8.5 C12.5,9.05228475 12.0522847,9.5 11.5,9.5 L10.5,9.5 C9.94771525,9.5 9.5,9.05228475 9.5,8.5 L9.5,7.5 C9.5,6.94771525 9.94771525,6.5 10.5,6.5 Z M4.5,11.5 L5.5,11.5 C6.05228475,11.5 6.5,11.9477153 6.5,12.5 L6.5,13.5 C6.5,14.0522847 6.05228475,14.5 5.5,14.5 L4.5,14.5 C3.94771525,14.5 3.5,14.0522847 3.5,13.5 L3.5,12.5 C3.5,11.9477153 3.94771525,11.5 4.5,11.5 Z M10.5,11.5 L11.5,11.5 C12.0522847,11.5 12.5,11.9477153 12.5,12.5 L12.5,13.5 C12.5,14.0522847 12.0522847,14.5 11.5,14.5 L10.5,14.5 C9.94771525,14.5 9.5,14.0522847 9.5,13.5 L9.5,12.5 C9.5,11.9477153 9.94771525,11.5 10.5,11.5 Z\"\n          fill=\"#C7CAD0\"\n        ></path>\n      </g>\n    </svg>\n  </i>\n  <ng-container *ngIf=\"nestedColumn\">\n    <span class=\"childtable-toggler\" (click)=\"toggleChildrenTable()\">\n      <ng-container *ngIf=\"childrenTableOpen\">\n        <svg\n          *ngIf=\"!iconFoldTable\"\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          class=\"svg-icon svg-icon-close\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n            <rect x=\"4\" y=\"7\" width=\"8\" height=\"2\"></rect>\n          </g>\n        </svg>\n        <span class=\"customized-icon\" *ngIf=\"iconFoldTable\" [innerHTML]=\"iconFoldTable | safe : 'html'\"></span>\n      </ng-container>\n      <ng-container *ngIf=\"!childrenTableOpen\">\n        <svg\n          *ngIf=\"!iconUnFoldTable\"\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          class=\"svg-icon svg-icon-open-folder\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n            <path\n              d=\"M8.75,4 L8.75,7.25 L12,7.25 L12,8.75 L8.749,8.75 L8.75,12 L7.25,12 L7.249,8.75 L4,8.75 L4,7.25 L7.25,7.25 L7.25,4 L8.75,4 Z\"\n            ></path>\n          </g>\n        </svg>\n        <span class=\"customized-icon\" *ngIf=\"iconUnFoldTable\" [innerHTML]=\"iconUnFoldTable | safe : 'html'\"></span>\n      </ng-container>\n    </span>\n  </ng-container>\n  <span class=\"title\">\n    <ng-content></ng-content>\n  </span>\n  <d-table-sort *ngIf=\"sortable\" [sortDirection]=\"sortDirection\" [showSortIcon]=\"showSortIcon\" (sortEvent)=\"onSort($event)\"></d-table-sort>\n  <d-table-filter\n    *ngIf=\"filterable\"\n    [showFilterIcon]=\"showFilterIcon\"\n    [beforeFilter]=\"beforeFilter\"\n    [customFilterTemplate]=\"customFilterTemplate\"\n    [extraFilterTemplate]=\"extraFilterTemplate\"\n    [column]=\"column\"\n    [searchFn]=\"searchFn\"\n    [filterList]=\"filterList\"\n    [filterIconActive]=\"filterIconActive\"\n    (filterIconActiveChange)=\"onFilterIconActive($event)\"\n    [filterMultiple]=\"filterMultiple\"\n    [closeWhenScroll]=\"closeFilterWhenScroll\"\n    [filterBoxWidth]=\"filterBoxWidth\"\n    [filterBoxHeight]=\"filterBoxHeight\"\n    (filterChange)=\"emitFilterData($event)\"\n    (filterToggle)=\"emitFilterToggle($event)\"\n  ></d-table-filter>\n</div>\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  DoCheck,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  IterableDiffers,\r\n  KeyValueDiffers,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  QueryList,\r\n  SimpleChanges,\r\n  ViewChildren,\r\n} from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { Subscription } from 'rxjs';\r\nimport { SortDirection, SortEventArg, TableCheckOptions } from './data-table.model';\r\nimport { DATA_TABLE } from './data-table.token';\r\nimport { TableThComponent } from './table/head/th/th.component';\r\nimport { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\r\n\r\n@Component({\r\n  selector: 'd-data-table-head,[dDataTableHead]',\r\n  templateUrl: './data-table-head.component.html',\r\n  styleUrls: ['./data-table-head.component.scss'],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DataTableHeadComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy, DoCheck {\r\n  @Input() checkable: boolean;\r\n  @Input() headerCheckDisabled: boolean;\r\n  @Input() headerCheckVisible: boolean;\r\n  @Input() checkOptions: TableCheckOptions[];\r\n  @Input() checkOptionsIndex = 1050;\r\n  @Input() showExpandToggle: boolean;\r\n  @Input() pageAllChecked: boolean;\r\n  @Input() columns: DataTableColumnTmplComponent[];\r\n  @Input() multiSort: SortEventArg[] = [];\r\n  @Input() resizeable: boolean;\r\n  @Input() maxHeight: string;\r\n  @Input() showSortIcon: boolean;\r\n  @Input() showFilterIcon: boolean;\r\n  @Input() colDropFreezeTo: number;\r\n  @Input() colDraggable: boolean;\r\n  @Input() fixHeader: boolean;\r\n  @Input() dataSource: any[] = [];\r\n  @Input() tableViewRefElement: ElementRef;\r\n  @Input() tableBodyEl: ElementRef;\r\n  @Input() checkableColumn: DataTableColumnTmplComponent;\r\n  @Input() showExpandToggleColumn: DataTableColumnTmplComponent;\r\n  @Output() headClickSortEvent = new EventEmitter<SortEventArg>();\r\n  @Output() resizeHandlerEvent = new EventEmitter<any>();\r\n  @Input() halfChecked: boolean;\r\n  @Input() childrenTableOpen: boolean;\r\n  @Input() selectOptionOnCheckbox = false;\r\n  @Output() beginResizeHandlerEvent = new EventEmitter<any>();\r\n  @Output() resizingHandlerEvent = new EventEmitter<any>();\r\n  @Output() dragTableEndEvent = new EventEmitter<any>();\r\n\r\n  @ViewChildren(TableThComponent) thList: QueryList<TableThComponent>;\r\n\r\n  objDiffer: {};\r\n\r\n  curLabel = '';\r\n  showTip = false;\r\n\r\n  isDrag: boolean;\r\n  dragBoxLeft;\r\n  dragCellRef: HTMLElement;\r\n\r\n  searchQuery: { [key: string]: any } = {};\r\n  multiSortArray: SortEventArg[] = [];\r\n  sortField: string;\r\n  sortDirection: 'ASC' | 'DESC' | '';\r\n  isDetailOpen: boolean;\r\n  rowItem = undefined;\r\n  mirror;\r\n  bindDrag;\r\n  lastDropTarget;\r\n  originCellIndex;\r\n  lastCellIndex;\r\n  originTable;\r\n  fixOriginTable;\r\n  fakeTable;\r\n  mainFakeTable;\r\n  classes = {\r\n    originTable: 'sindu_origin_table',\r\n    draggableTable: 'sindu_dragger',\r\n    dragging: 'sindu_dragging',\r\n    static: 'sindu_static',\r\n    handle: 'sindu_handle',\r\n  };\r\n  el;\r\n  grabbed;\r\n  source;\r\n  item;\r\n  initialSibling;\r\n  currentSibling;\r\n  offsetX;\r\n  offsetY;\r\n  bodyOverflow;\r\n  oldCoord = 0;\r\n  mirrorContainer;\r\n  // 用于多行多列头部\r\n  rowCount;\r\n  rowCountArray;\r\n  fixFakeTableEl;\r\n  fixTableOffsetTop;\r\n  childTables = [];\r\n  dataSourceChange = false;\r\n\r\n  scrollViewEl;\r\n  scrollViewRect;\r\n  fixTableScrollViewEl;\r\n  animationRequestId;\r\n  colOffset = 0;\r\n  secondHeaderOffset = 0;\r\n  cellMapOffset = 0;\r\n  cellMap = {};\r\n  iterableDiffer;\r\n  searchText = '';\r\n\r\n  i18nCommonText: I18nInterface['common'];\r\n  filterHalfChecked: boolean;\r\n  filterAllChecked: boolean;\r\n  filterListDisplay = [];\r\n  isFilterHidden = false;\r\n  columnForFilter;\r\n  private i18nSubscription: Subscription;\r\n  checkedListForFilter = [];\r\n  document: Document;\r\n  documentElement: HTMLElement;\r\n  constructor(\r\n    @Inject(DATA_TABLE) public dt: any,\r\n    private zone: NgZone,\r\n    private element: ElementRef,\r\n    private differs: KeyValueDiffers,\r\n    private iterableDiffers: IterableDiffers,\r\n    private ref: ChangeDetectorRef,\r\n    private i18n: I18nService,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.i18nCommonText = this.i18n.getI18nText().common;\r\n    this.document = this.doc;\r\n    this.documentElement = this.doc.documentElement;\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.colDraggable) {\r\n      this.iterableDiffer = this.iterableDiffers.find([]).create(null);\r\n      this.objDiffer = {};\r\n      this.dataSource.forEach((data, index) => {\r\n        this.objDiffer[index] = this.differs.find(data).create();\r\n      });\r\n    }\r\n\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nCommonText = data.common;\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { columns, tableBodyEl } = changes;\r\n    if ((columns || changes.multiSort) && this.columns) {\r\n      this.multiSortArray = [];\r\n      this.columns.forEach((column) => {\r\n        if (column.sortable) {\r\n          const sortIndex = this.multiSort.findIndex((item) => item.field === column.field);\r\n          this.multiSortArray.push({\r\n            field: column.field,\r\n            direction: sortIndex !== -1 ? this.multiSort[sortIndex].direction : SortDirection.default,\r\n          });\r\n        }\r\n      });\r\n    }\r\n    if (columns && this.columns) {\r\n      this.rowCount = Math.max(\r\n        ...this.columns.map((column) => {\r\n          if (column.advancedHeader) {\r\n            return column.advancedHeader.length;\r\n          } else {\r\n            return 0;\r\n          }\r\n        })\r\n      );\r\n      if (this.rowCount > 0) {\r\n        this.rowCountArray = new Array(this.rowCount);\r\n        this.initAdvanceHeader();\r\n      }\r\n      if (this.colDraggable) {\r\n        this.rerenderTables();\r\n      }\r\n    }\r\n    if (changes && changes.dataSource) {\r\n      if (this.colDraggable) {\r\n        this.rerenderTables();\r\n      }\r\n    }\r\n\r\n    if (this.colDraggable && tableBodyEl && this.tableBodyEl) {\r\n      if (this.fixHeader && this.tableBodyEl && this.dataSource.length) {\r\n        this.fixOriginTable = this.tableBodyEl.nativeElement;\r\n        this.renderFixFakeTableEl();\r\n        this.fixFakeTableEl.style.display = 'none';\r\n        this.fixTableScrollViewEl = this.fixOriginTable.parentNode.parentNode;\r\n        this.ref.markForCheck();\r\n      }\r\n    }\r\n  }\r\n\r\n  ngDoCheck() {\r\n    if (!this.colDraggable) {\r\n      return;\r\n    }\r\n    this.dataSource.forEach((elt, index) => {\r\n      const objDiffer = this.objDiffer[index];\r\n      if (!objDiffer) {\r\n        return;\r\n      }\r\n      const objChanges = objDiffer.diff(elt);\r\n      if (objChanges) {\r\n        objChanges.forEachChangedItem((changeItem) => {\r\n          if (changeItem.key === '$isChildTableOpen' && elt.children && elt.children.length) {\r\n            this.rerenderTables();\r\n          }\r\n\r\n          if (changeItem.key === 'children') {\r\n            this.rerenderTables();\r\n          }\r\n        });\r\n      }\r\n    });\r\n\r\n    const changes = this.iterableDiffer.diff(this.columns);\r\n    if (changes) {\r\n      this.createCellMap();\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.colDraggable) {\r\n      // set mirror container to table-wrap element\r\n      this.mirrorContainer = this.element.nativeElement.parentNode.parentNode;\r\n      this.bodyOverflow = this.documentElement.style.overflow;\r\n      this.detecteOriginTable();\r\n      setTimeout(() => {\r\n        // wait for table render ready\r\n        this.renderFakeTable();\r\n        this.el.style.display = 'none';\r\n      });\r\n      this.documentElement.addEventListener('resize', this.renderFakeTable);\r\n      this.createCellMap();\r\n      this.scrollViewEl = this.originTable.parentNode.parentNode;\r\n      this.scrollViewRect = this.scrollViewEl.getBoundingClientRect();\r\n    }\r\n  }\r\n\r\n  createCellMap() {\r\n    let cellIndex = 0;\r\n    this.columns.forEach((column, index) => {\r\n      if (!column.advancedHeader) {\r\n        this.cellMap[cellIndex] = { name: column.field, sortKey: [index] };\r\n        cellIndex++;\r\n      } else {\r\n        if (column.advancedHeader[0].colspan) {\r\n          this.cellMap[cellIndex] = {\r\n            name: column.field,\r\n            isAdvanceHeader: true,\r\n            sortKey: [index],\r\n            headerLength: column.advancedHeader[0].colspan,\r\n          };\r\n          cellIndex++;\r\n        } else {\r\n          Object.keys(this.cellMap).forEach((key) => {\r\n            const item = this.cellMap[key];\r\n            if (item.isAdvanceHeader && item.sortKey.length < item.headerLength) {\r\n              item.sortKey.push(index);\r\n            }\r\n          });\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.colDraggable) {\r\n      this.documentElement.removeEventListener('resize', this.renderFakeTable);\r\n    }\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  onHeadClick(event: SortEventArg, column: DataTableColumnTmplComponent) {\r\n    event.field = column.field;\r\n    delete event.th;\r\n    this.headClickSortEvent.emit(event);\r\n  }\r\n\r\n  onCheckAllChange() {\r\n    this.dt.onCheckAllChange(this.pageAllChecked);\r\n  }\r\n\r\n  onSearchQueryChange() {\r\n    this.dt.onSearchQueryChange(this.searchQuery);\r\n  }\r\n\r\n  canFilterable(column: DataTableColumnTmplComponent) {\r\n    return column.field && column.field !== '$index' && column.filterable;\r\n  }\r\n\r\n  getIfExistMultiSort(field): any {\r\n    const column = this.columns.find((item) => item.field === field);\r\n    return !!column.sortable;\r\n  }\r\n\r\n  getSortDirection(field): any {\r\n    if (!this.multiSortArray) {\r\n      return false;\r\n    }\r\n    const filterField = this.multiSortArray.filter((item) => {\r\n      return item.field === field;\r\n    });\r\n    if (filterField.length !== 0) {\r\n      return filterField[0].direction;\r\n    } else {\r\n      return undefined;\r\n    }\r\n  }\r\n\r\n  onResize($event, column) {\r\n    this.resizeHandlerEvent.emit({\r\n      ...$event,\r\n      field: column.field,\r\n    });\r\n  }\r\n\r\n  onBeginResize($event) {\r\n    const thRenderWidthList = [];\r\n    this.thList.forEach((th) => {\r\n      thRenderWidthList.push({ field: th.element.getAttribute('field'), width: th.element.clientWidth });\r\n    });\r\n    this.beginResizeHandlerEvent.emit({ event: $event, thRenderWidthList });\r\n  }\r\n\r\n  onResizing($event, column) {\r\n    this.resizingHandlerEvent.emit({\r\n      ...$event,\r\n      field: column.field,\r\n    });\r\n  }\r\n\r\n  // 初始化多行表头，为了兼容resizeable对表头互相影响数据做了记录\r\n  initAdvanceHeader() {\r\n    if (this.resizeable) {\r\n      this.columns.forEach((column: any, colIndex) => {\r\n        if (column.advancedHeader) {\r\n          column.advancedHeader.forEach((item, rowIndex) => {\r\n            item.$rowIndex = rowIndex;\r\n            item.$colIndex = colIndex;\r\n            item.$cols = new Array(item.colspan).fill(1).map((v, i) => colIndex + i);\r\n          });\r\n        }\r\n        column.$colIndex = colIndex;\r\n      });\r\n    }\r\n  }\r\n\r\n  trackByFn(index, item) {\r\n    return index;\r\n  }\r\n\r\n  onTap(e) {\r\n    e.preventDefault();\r\n    this.originCellIndex = this.findCellIndex(e);\r\n    setTimeout(() => {\r\n      // fix chrome bug, mousedown的时候会错误的触发mousemove\r\n      this.documentElement.addEventListener('mousemove', this.handleMousemove);\r\n      this.documentElement.addEventListener('mouseup', () => {\r\n        this.documentElement.removeEventListener('mousemove', this.handleMousemove);\r\n      });\r\n    });\r\n  }\r\n\r\n  handleMousemove = (e) => {\r\n    e.preventDefault();\r\n    this.documentElement.removeEventListener('mousemove', this.handleMousemove);\r\n    this.documentElement.addEventListener('mousedown', this.grab);\r\n    this.documentElement.addEventListener('mouseup', this.release);\r\n    setTimeout(() => {\r\n      // fix chrome bug, mousedown的时候会错误的触发mousemove\r\n      this.dispatchMousedown();\r\n    });\r\n  };\r\n\r\n  grab = (e) => {\r\n    e.preventDefault();\r\n    this.documentElement.removeEventListener('mousedown', this.grab);\r\n    this.addClass(this.documentElement, 'gu-unselectable');\r\n    const context = this.canStart(e.target);\r\n    this.grabbed = context;\r\n    this.documentElement.addEventListener('mousemove', this.startBecauseMouseMoved);\r\n  };\r\n\r\n  startBecauseMouseMoved = (e) => {\r\n    e.preventDefault();\r\n    if (!this.grabbed) {\r\n      return;\r\n    }\r\n    this.documentElement.removeEventListener('mousemove', this.startBecauseMouseMoved);\r\n    this.documentElement.addEventListener('mousemove', this.drag);\r\n    this.source = this.grabbed.source;\r\n    this.item = this.grabbed.item;\r\n    this.initialSibling = this.currentSibling = this.nextEl(this.grabbed.item);\r\n    this.addClass(this.item, 'gu-transit');\r\n    this.el.style.display = 'flex';\r\n    this.el.style.position = 'relative';\r\n    this.originTable.style.display = 'none';\r\n    if (this.fixHeader) {\r\n      this.fixTableOffsetTop = this.fixOriginTable.parentNode.parentNode.scrollTop;\r\n      this.fixFakeTableEl.style.display = 'flex';\r\n      this.fixOriginTable.style.display = 'none';\r\n      this.fixFakeTableEl.style.position = 'relative';\r\n    }\r\n    this.offsetX = 15;\r\n    this.offsetY = 15;\r\n    this.renderMirrorImage(this.item);\r\n  };\r\n\r\n  release = (e) => {\r\n    e.preventDefault();\r\n    this.grabbed = null;\r\n    this.documentElement.removeEventListener('mousemove', this.drag);\r\n    this.documentElement.removeEventListener('mouseup', this.release);\r\n    const to = Array.from(this.el.children).indexOf(this.item);\r\n    this.removeMirrorImage();\r\n    this.el.style.display = 'none';\r\n    this.originTable.style.display = 'table';\r\n    if (this.fixHeader) {\r\n      this.fixFakeTableEl.style.display = 'none';\r\n      this.fixOriginTable.style.display = 'table';\r\n      this.fixFakeTableEl.style.position = 'absolute';\r\n    }\r\n    this.documentElement.style.overflow = this.bodyOverflow;\r\n    this.documentElement.removeEventListener('mouseup', this.release);\r\n    if (this.item) {\r\n      this.rmClass(this.item, 'gu-transit');\r\n    }\r\n    this.sortColumn(this.originCellIndex.x, to);\r\n    cancelAnimationFrame(this.animationRequestId);\r\n  };\r\n\r\n  sortColumn = (from, to) => {\r\n    if (from === to) {\r\n      return;\r\n    }\r\n    let offset = 0;\r\n    if (this.checkable) {\r\n      offset++;\r\n    }\r\n    if (this.showExpandToggle) {\r\n      offset++;\r\n    }\r\n    from = from - offset;\r\n    to = to - offset;\r\n    let toCell = this.cellMap[to].sortKey[0];\r\n    let fromCell = this.cellMap[from].sortKey[0];\r\n    let loopCount = 1;\r\n    if (this.cellMap[from].isAdvanceHeader) {\r\n      loopCount = this.cellMap[from].headerLength;\r\n      if (from > to) {\r\n        fromCell = this.cellMap[from].sortKey[this.cellMap[from].headerLength - 1];\r\n      }\r\n    }\r\n    if (this.cellMap[to].isAdvanceHeader && from < to) {\r\n      toCell = this.cellMap[to].sortKey[this.cellMap[to].headerLength - 1];\r\n    }\r\n    for (let i = 0; i < loopCount; i++) {\r\n      this.dragTableEndEvent.emit({ from: fromCell, to: toCell });\r\n    }\r\n  };\r\n\r\n  sort = ({ list, from, to }) => {\r\n    if (!list[from] && !list[to]) {\r\n      return;\r\n    }\r\n    if (from < to) {\r\n      this.appendSibling({ target: list[from], origin: list[to] });\r\n    } else {\r\n      this.insertBeforeSibling({ target: list[from], origin: list[to] });\r\n    }\r\n  };\r\n\r\n  appendSibling({ target, origin }) {\r\n    if (!target) {\r\n      return;\r\n    }\r\n    target.parentNode.insertBefore(target, origin ? origin.nextElementSibling : null);\r\n  }\r\n\r\n  getOffset(el) {\r\n    const rect = el.getBoundingClientRect();\r\n    return {\r\n      left: rect.left + this.getScroll('scrollLeft', 'pageXOffset'),\r\n      top: rect.top + this.getScroll('scrollTop', 'pageYOffset'),\r\n    };\r\n  }\r\n  getScroll(scrollProp, offsetProp) {\r\n    if (typeof window !== undefined && typeof window[offsetProp] !== 'undefined') {\r\n      return window[offsetProp];\r\n    }\r\n    if (this.documentElement.clientHeight) {\r\n      return this.documentElement[scrollProp];\r\n    }\r\n    return this.document.body[scrollProp];\r\n  }\r\n\r\n  dispatchMousedown() {\r\n    const { el, originCellIndex } = this;\r\n    el.children[originCellIndex.x].dispatchEvent(this.getTouchyEvent());\r\n  }\r\n\r\n  getTouchyEvent() {\r\n    let event;\r\n    // This is true only for IE,firefox\r\n    if (this.document.createEvent) {\r\n      // To create a mouse event , first we need to create an event and then initialize it.\r\n      event = this.document.createEvent('MouseEvent');\r\n      event.initMouseEvent('mousedown', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\r\n    } else {\r\n      event = new MouseEvent('mousedown', {\r\n        view: window,\r\n        bubbles: true,\r\n        cancelable: true,\r\n      });\r\n    }\r\n    return event;\r\n  }\r\n\r\n  removeMirrorImage() {\r\n    if (this.mirror) {\r\n      this.documentElement.removeEventListener('mousemove', this.grab);\r\n      this.getParent(this.mirror).removeChild(this.mirror);\r\n      this.mirror = null;\r\n      setTimeout(() => {\r\n        this.rmClass(this.mirrorContainer, 'gu-unselectable');\r\n        this.rmClass(this.documentElement, 'gu-unselectable');\r\n      });\r\n    }\r\n  }\r\n\r\n  canStart(item) {\r\n    while (this.getParent(item) && this.isContainer(this.getParent(item)) === false) {\r\n      item = this.getParent(item); // drag target should be a top element\r\n      if (!item) {\r\n        return;\r\n      }\r\n    }\r\n    const source = this.getParent(item);\r\n    if (!source) {\r\n      return;\r\n    }\r\n    return {\r\n      item: item,\r\n      source: source,\r\n    };\r\n  }\r\n\r\n  detecteOriginTable() {\r\n    let target = this.element.nativeElement;\r\n    while (target.nodeName !== 'TABLE') {\r\n      target = target.parentElement;\r\n    }\r\n    this.originTable = target;\r\n    if (this.fixHeader && this.tableBodyEl) {\r\n      this.fixOriginTable = this.tableBodyEl.nativeElement;\r\n      this.detecteChildTables(this.fixOriginTable);\r\n    } else {\r\n      this.detecteChildTables(this.originTable);\r\n    }\r\n  }\r\n\r\n  rerenderTables = () => {\r\n    this.dataSourceChange = true;\r\n    if (this.fixHeader && this.tableBodyEl && this.dataSource.length) {\r\n      this.fixOriginTable = this.tableBodyEl.nativeElement;\r\n      setTimeout(() => {\r\n        this.renderFixFakeTableEl();\r\n        this.fixFakeTableEl.style.display = 'none';\r\n      });\r\n    } else {\r\n      this.detecteOriginTable();\r\n      setTimeout(() => {\r\n        this.renderFakeTable();\r\n        this.el.style.display = 'none';\r\n      });\r\n    }\r\n  };\r\n\r\n  renderFakeTable() {\r\n    if (this.el && !this.dataSourceChange) {\r\n      return;\r\n    }\r\n    this.childTables = [];\r\n    this.detecteChildTables(this.originTable);\r\n    const fakeTable = this.buildFakeTable(this.originTable);\r\n    this.fakeTable = fakeTable;\r\n    const el = fakeTable.reduce((previous, current) => {\r\n      const li = this.document.createElement('li');\r\n      if (current) {\r\n        li.appendChild(current);\r\n      }\r\n      return previous.appendChild(li) && previous;\r\n    }, this.document.createElement('ul'));\r\n    this.el = el;\r\n    this.renderEl(el, this.originTable, fakeTable);\r\n  }\r\n\r\n  renderFixFakeTableEl() {\r\n    if (this.fixFakeTableEl && !this.dataSourceChange) {\r\n      return;\r\n    }\r\n    const fakeTable = this.buildFakeTable(this.fixOriginTable);\r\n    this.mainFakeTable = fakeTable;\r\n    const el = fakeTable.reduce((previous, current) => {\r\n      const li = this.document.createElement('li');\r\n      li.appendChild(current);\r\n      return previous.appendChild(li) && previous;\r\n    }, this.document.createElement('ul'));\r\n    this.fixFakeTableEl = el;\r\n    this.renderEl(el, this.fixOriginTable, this.mainFakeTable);\r\n  }\r\n  buildFakeTable(table) {\r\n    this.colOffset = 0;\r\n    this.secondHeaderOffset = 0;\r\n    return Array.from(table.rows[0].children).map((cell, index) => {\r\n      return this.getColumnAsTableByIndex(table, index, (<any>cell).colSpan, (<any>cell).rowSpan);\r\n    });\r\n  }\r\n\r\n  renderEl(el, originEl, fakeTables) {\r\n    if (typeof window === undefined) {\r\n      return;\r\n    }\r\n    this.sizeColumnFake(fakeTables, originEl);\r\n    this.css(el, {\r\n      position: 'absolute',\r\n    });\r\n    if (originEl.parentNode.children[0].nodeName === 'UL') {\r\n      originEl.parentNode.removeChild(originEl.parentNode.children[0]);\r\n      this.insertBeforeSibling({ target: el, origin: originEl });\r\n    } else {\r\n      this.insertBeforeSibling({ target: el, origin: originEl });\r\n    }\r\n\r\n    // render every wrapper of table(element li)\r\n    const spacing = window.getComputedStyle(originEl).getPropertyValue('border-spacing').split(' ')[0];\r\n    const attr = 'margin-right';\r\n    const length = el.children.length;\r\n    Array.from(el.children).forEach((li, dex) => {\r\n      if (spacing && dex < length - 1) {\r\n        (<any>li).style[attr] = `-${spacing}`;\r\n      }\r\n    });\r\n    this.addClass(el.parentElement, this.classes.dragging);\r\n    this.addClass(el, this.classes.draggableTable);\r\n    this.addClass(el, 'sindu_column');\r\n  }\r\n\r\n  sizeColumnFake(fakeTables, originEl) {\r\n    // calculate width of every column\r\n    Array.from(originEl.rows[0].children).forEach((cell, index) => {\r\n      if (!fakeTables[index]) {\r\n        return;\r\n      }\r\n      const w = (<any>cell).getBoundingClientRect().width;\r\n      const t = fakeTables[index];\r\n      this.css(t, { width: `${w}px` });\r\n      this.css(t.rows[0].children[0], { width: `${w}px` });\r\n    });\r\n  }\r\n\r\n  css(el, cssList) {\r\n    Object.keys(cssList).forEach((k) => {\r\n      el.style[k] = cssList[k];\r\n    });\r\n    return el;\r\n  }\r\n\r\n  insertBeforeSibling({ target, origin }) {\r\n    if (!target) {\r\n      return;\r\n    }\r\n    origin.parentNode.insertBefore(target, origin);\r\n  }\r\n\r\n  findCellIndex(e) {\r\n    let target = e.target;\r\n    while (target.nodeName !== 'TH') {\r\n      target = target.parentElement || target.parentNode;\r\n    }\r\n    return { x: target.cellIndex, y: target.parentElement.rowIndex };\r\n  }\r\n\r\n  renderMirrorImage(target) {\r\n    if (this.mirror) {\r\n      return;\r\n    }\r\n\r\n    this.mirror = target.cloneNode(true);\r\n    const getFixTableTotalHeight = () => {\r\n      return this.fixOriginTable.parentNode.parentNode.parentNode.getBoundingClientRect().height;\r\n    };\r\n    const getTableTotalHeight = () => {\r\n      return this.originTable.parentNode.parentNode.parentNode.getBoundingClientRect().height;\r\n    };\r\n    // 固定表头表格时，对拖动内容进行截取\r\n    if (this.fixHeader) {\r\n      const to = Array.from(this.el.children).indexOf(target);\r\n      const fixTarget = this.fixFakeTableEl.children[to].children[0].cloneNode(true);\r\n      const fixTargetContainer = this.document.createElement('div');\r\n      const mirrorHeight = Math.min(parseInt(this.maxHeight, 10), getFixTableTotalHeight());\r\n      fixTargetContainer.style.height = mirrorHeight + 'px';\r\n      fixTargetContainer.style.overflow = 'hidden';\r\n      fixTargetContainer.appendChild(fixTarget);\r\n      fixTarget.style.maxHeight = this.maxHeight;\r\n      fixTarget.style.top = '-' + this.fixTableOffsetTop + 'px';\r\n      this.mirror.appendChild(fixTargetContainer);\r\n    }\r\n\r\n    // 设置最大高度，但不是固定表头的表格\r\n    if (!this.fixHeader && this.maxHeight) {\r\n      const mirrorHeight = Math.min(parseInt(this.maxHeight, 10), getTableTotalHeight());\r\n      this.mirror.style.height = mirrorHeight + 'px';\r\n      this.mirror.style.overflow = 'hidden';\r\n    }\r\n    this.mirror.style.visibility = 'hidden';\r\n    const thNode = this.mirror.querySelector('th');\r\n    this.addClass(thNode, 'hover');\r\n    this.rmClass(this.mirror, 'gu-transit');\r\n    this.addClass(this.mirror, 'gu-mirror');\r\n    this.mirrorContainer.appendChild(this.mirror);\r\n    this.addClass(this.mirrorContainer, 'gu-unselectable');\r\n  }\r\n\r\n  lookupClass(className) {\r\n    const cache = {};\r\n    const start = '(?:^|\\\\s)';\r\n    const end = '(?:\\\\s|$)';\r\n    let cached = cache[className];\r\n    if (cached) {\r\n      cached.lastIndex = 0;\r\n    } else {\r\n      cache[className] = cached = new RegExp(start + className + end, 'g');\r\n    }\r\n    return cached;\r\n  }\r\n\r\n  addClass(el, className) {\r\n    const current = el.className;\r\n    if (!current.length) {\r\n      el.className = className;\r\n    } else if (!this.lookupClass(className).test(current)) {\r\n      el.className += ' ' + className;\r\n    }\r\n  }\r\n\r\n  rmClass(el, className) {\r\n    el.className = el.className.replace(this.lookupClass(className), ' ').trim();\r\n  }\r\n\r\n  drag = (e) => {\r\n    e.preventDefault();\r\n    if (!this.mirror) {\r\n      return;\r\n    }\r\n    const clientX = this.getCoord('clientX', e);\r\n    const clientY = this.getCoord('clientY', e);\r\n    if (this.animationRequestId) {\r\n      cancelAnimationFrame(this.animationRequestId);\r\n      this.animationRequestId = null;\r\n    }\r\n    this.handleScroll(clientX, clientY, e);\r\n    this.documentElement.style.overflow = 'hidden';\r\n\r\n    const x = clientX - this.offsetX;\r\n    const y = clientY - this.offsetY;\r\n    this.mirror.style.left = x + 'px';\r\n    this.mirror.style.top = y + 'px';\r\n    this.mirror.style.visibility = 'visible';\r\n\r\n    const elementBehindCursor = this.getElementBehindPoint(this.mirror, clientX, clientY);\r\n    const dropTarget = this.findDropTarget(elementBehindCursor, clientX, clientY);\r\n    if (!dropTarget) {\r\n      return;\r\n    }\r\n\r\n    const immediate = this.getImmediateChild(dropTarget, elementBehindCursor);\r\n    let reference;\r\n    if (immediate) {\r\n      reference = this.getReference(dropTarget, immediate, clientX);\r\n    }\r\n\r\n    const changed = dropTarget !== null && dropTarget !== this.lastDropTarget;\r\n    if (changed || dropTarget === null) {\r\n      this.lastDropTarget = dropTarget;\r\n    }\r\n    if ((reference === null && changed) || (reference !== this.item && reference !== this.nextEl(this.item))) {\r\n      let mover;\r\n      const nowCord = e.pageX;\r\n      if (nowCord < this.oldCoord) {\r\n        mover = reference; // upward or right\r\n      } else {\r\n        const result = reference.previousElementSibling ? reference.previousElementSibling : reference;\r\n        mover = reference ? result : dropTarget.lastElementChild;\r\n      }\r\n      this.oldCoord = nowCord;\r\n\r\n      let from;\r\n      let to;\r\n      let moverIndex;\r\n      let fixItemRect;\r\n      let fixItem;\r\n      let fixMoverRect;\r\n      let fixMover;\r\n      if (this.fixHeader) {\r\n        from = Array.from(this.el.children).indexOf(this.item);\r\n        to = Array.from(this.el.children).indexOf(reference);\r\n        moverIndex = Array.from(this.el.children).indexOf(mover);\r\n        fixItem = Array.from(this.fixFakeTableEl.children)[from];\r\n        fixItemRect = fixItem.getBoundingClientRect();\r\n        fixMover = Array.from(this.fixFakeTableEl.children)[moverIndex];\r\n        fixMoverRect = moverIndex !== -1 && fixMover.getBoundingClientRect();\r\n      }\r\n\r\n      const moverRect = mover && mover.getBoundingClientRect();\r\n      const itemRact = this.item.getBoundingClientRect();\r\n      this.moveTarget(dropTarget, this.item, reference);\r\n      if (this.fixHeader) {\r\n        this.moveTarget(this.fixFakeTableEl, Array.from(this.fixFakeTableEl.children)[from], Array.from(this.fixFakeTableEl.children)[to]);\r\n      }\r\n      if (mover && moverRect) {\r\n        this.animate(moverRect, mover, 300);\r\n        this.animate(itemRact, this.item, 300);\r\n      }\r\n      if (this.fixHeader && moverIndex !== -1 && fixMoverRect) {\r\n        this.animate(fixMoverRect, fixMover, 300);\r\n        this.animate(fixItemRect, fixItem, 300);\r\n      }\r\n    }\r\n  };\r\n\r\n  handleScroll(x, y, e) {\r\n    this.scrollViewRect = this.scrollViewEl.getBoundingClientRect();\r\n    let fixTableScrollViewRect;\r\n    if (this.fixHeader) {\r\n      this.fixTableScrollViewEl = this.fixOriginTable.parentNode.parentNode;\r\n      fixTableScrollViewRect = this.fixTableScrollViewEl.getBoundingClientRect();\r\n    }\r\n    let scrollLeft = this.scrollViewEl.scrollLeft;\r\n    const range = 150;\r\n    const scrollToLeft = () => {\r\n      scrollLeft -= 50;\r\n      if (this.fixHeader) {\r\n        this.fixTableScrollViewEl.scrollTo(scrollLeft, 0);\r\n      }\r\n      this.scrollViewEl.scrollTo(scrollLeft, 0);\r\n      this.animationRequestId = requestAnimationFrame(scrollToLeft);\r\n      this.documentElement.dispatchEvent(e);\r\n    };\r\n\r\n    const scrollToRight = () => {\r\n      scrollLeft += 50;\r\n      if (this.fixHeader) {\r\n        this.fixTableScrollViewEl.scrollTo(scrollLeft, 0);\r\n      }\r\n      this.scrollViewEl.scrollTo(scrollLeft, 0);\r\n      this.animationRequestId = requestAnimationFrame(scrollToRight);\r\n      this.documentElement.dispatchEvent(e);\r\n    };\r\n    if (!this.fixHeader && (y < this.scrollViewRect.top || y > this.scrollViewRect.bottom)) {\r\n      return;\r\n    }\r\n    if (this.fixHeader && (y < this.scrollViewRect.top || y > fixTableScrollViewRect.bottom)) {\r\n      return;\r\n    }\r\n\r\n    if (this.scrollViewRect.left < x && x < this.scrollViewRect.left + range) {\r\n      this.animationRequestId = requestAnimationFrame(scrollToLeft);\r\n    }\r\n    if (this.scrollViewRect.right - range < x && x < this.scrollViewRect.right) {\r\n      this.animationRequestId = requestAnimationFrame(scrollToRight);\r\n    }\r\n  }\r\n\r\n  moveTarget(container, target, reference) {\r\n    container.insertBefore(target, reference);\r\n  }\r\n\r\n  getParent(el) {\r\n    return el.parentNode === this.document ? null : el.parentNode;\r\n  }\r\n\r\n  getEventHost(e) {\r\n    if (e.targetTouches && e.targetTouches.length) {\r\n      return e.targetTouches[0];\r\n    }\r\n    if (e.changedTouches && e.changedTouches.length) {\r\n      return e.changedTouches[0];\r\n    }\r\n    return e;\r\n  }\r\n\r\n  getCoord(coord, e) {\r\n    const host = this.getEventHost(e);\r\n    return host[coord];\r\n  }\r\n\r\n  getLongestRow = (table) => {\r\n    let result = table.rows[0];\r\n    Array.from(table.rows).forEach((row) => {\r\n      const rowL = (<any>row).children.length;\r\n      const resultL = result.children.length;\r\n      result = rowL > resultL ? row : result;\r\n    });\r\n    return result;\r\n  };\r\n  getColumnAsTableByIndex(table, selectedColIndex, colSpan, rowSpan) {\r\n    const skipRowIndexList = this.getDataBetween(0, 0 + rowSpan);\r\n    const cTable = table.cloneNode(true);\r\n    cTable.removeChild(cTable.firstChild); // remove colgroup\r\n    if (this.fixHeader) {\r\n      cTable.deleteCaption();\r\n    } else if (!this.fixHeader && cTable.tBodies.length > 1) {\r\n      cTable.removeChild(cTable.tBodies[0]);\r\n    }\r\n    this.origin2DragItem(cTable);\r\n    const empty = (node) => {\r\n      while (node.firstChild) {\r\n        node.removeChild(node.firstChild);\r\n      }\r\n    };\r\n    const insertBodyColList = this.getDataBetween(selectedColIndex - 1 + this.colOffset, selectedColIndex + this.colOffset + colSpan);\r\n    const insertHeaderColList = this.getDataBetween(\r\n      selectedColIndex + this.secondHeaderOffset - 1,\r\n      selectedColIndex + this.secondHeaderOffset + colSpan - rowSpan + 1\r\n    );\r\n    const getTreeTableCol = (row, rowIndex) => {\r\n      const target = this.getChildTableColumn((<any>row).children[0].children[0], selectedColIndex);\r\n      empty((<any>row).children[0]);\r\n      (<any>row).children[0].appendChild(target);\r\n    };\r\n    const getMultipleHCol = (row, rowIndex) => {\r\n      if (rowIndex === 0) {\r\n        const target = (<any>row).children[selectedColIndex];\r\n        empty(row);\r\n        if (target) {\r\n          (<any>row).appendChild(target);\r\n        }\r\n        return;\r\n      }\r\n      if (rowIndex === 1) {\r\n        const targets = insertHeaderColList.map((colIndex) => {\r\n          return (<any>row).children[colIndex];\r\n        });\r\n        empty(row);\r\n        targets.forEach((target) => {\r\n          if (target) {\r\n            (<any>row).appendChild(target);\r\n          }\r\n        });\r\n        return;\r\n      } else {\r\n        const targets = insertBodyColList.map((colIndex) => {\r\n          return (<any>row).children[colIndex];\r\n        });\r\n        empty(row);\r\n        targets.forEach((target) => {\r\n          if (target) {\r\n            (<any>row).appendChild(target);\r\n          }\r\n        });\r\n      }\r\n    };\r\n\r\n    const getNormalTableCol = (row, rowIndex) => {\r\n      if (rowIndex === 0) {\r\n        const target = (<any>row).children[selectedColIndex];\r\n        empty(row);\r\n        if (target) {\r\n          (<any>row).appendChild(target);\r\n        }\r\n      } else {\r\n        const target = (<any>row).children[selectedColIndex + this.colOffset];\r\n        empty(row);\r\n        if (target && skipRowIndexList.indexOf(rowIndex) === -1) {\r\n          (<any>row).appendChild(target);\r\n        }\r\n      }\r\n    };\r\n\r\n    Array.from(cTable.rows).forEach((row, rowIndex) => {\r\n      if ((<any>row).classList.contains('child-table')) {\r\n        getTreeTableCol(row, rowIndex);\r\n      } else {\r\n        if (colSpan > 1) {\r\n          getMultipleHCol(row, rowIndex);\r\n        } else {\r\n          getNormalTableCol(row, rowIndex);\r\n        }\r\n      }\r\n      this.css(row, { height: `${table.rows[rowIndex].getBoundingClientRect().height}px` });\r\n    });\r\n    this.colOffset += colSpan - 1;\r\n    this.secondHeaderOffset = rowSpan > 1 ? this.secondHeaderOffset - 1 : this.secondHeaderOffset;\r\n    return cTable;\r\n  }\r\n\r\n  getDataBetween(form, end) {\r\n    const result = [];\r\n    for (let i = form + 1; i < end; i++) {\r\n      result.push(i);\r\n    }\r\n    return result;\r\n  }\r\n\r\n  getChildTableColumn = (table, index) => {\r\n    const cTable = table.cloneNode(true);\r\n    this.origin2DragItem(cTable);\r\n    const empty = (node) => {\r\n      while (node.firstChild) {\r\n        node.removeChild(node.firstChild);\r\n      }\r\n    };\r\n    Array.from(cTable.rows).forEach((row) => {\r\n      if ((<any>row).classList.contains('child-table')) {\r\n        const target = this.getChildTableColumn((<any>row).children[0].children[0], index);\r\n        empty((<any>row).children[0]);\r\n        (<any>row).children[0].appendChild(target);\r\n      } else {\r\n        const target = (<any>row).children[index];\r\n        empty(row);\r\n        if (target) {\r\n          (<any>row).appendChild(target);\r\n        }\r\n      }\r\n    });\r\n    this.sizeChildColumnFake(cTable, table, index);\r\n    return cTable;\r\n  };\r\n\r\n  sizeChildColumnFake(fakeTable, originEl, index) {\r\n    // calculate width of every column\r\n    const cell = Array.from(this.originTable.rows[0].children)[index];\r\n    const w = (<any>cell).getBoundingClientRect().width;\r\n    this.css(fakeTable, { width: `${w}px` });\r\n    this.css(fakeTable.rows[0].children[0], { width: `${w}px` });\r\n\r\n    // calculate height of every cell\r\n    const rowHeights = Array.from(originEl.rows).map((row) => (<any>row).children[0].getBoundingClientRect().height);\r\n    Array.from(fakeTable.rows).forEach((row, rowIndex) => {\r\n      this.css(row, { height: `${rowHeights[rowIndex]}px` });\r\n    });\r\n  }\r\n\r\n  detecteChildTables = (table) => {\r\n    Array.from(table.rows).forEach((row, index) => {\r\n      if ((<any>row).classList.contains('child-table')) {\r\n        const childTable = (<any>table.rows[index]).children[0].children[0];\r\n        this.childTables.push(childTable);\r\n        this.detecteChildTables(childTable);\r\n      }\r\n    });\r\n  };\r\n  origin2DragItem(liTable) {\r\n    this.css(liTable, { 'table-layout': 'fixed', width: 'initial', height: 'initial', padding: 0, margin: 0 });\r\n    ['width', 'height', 'id'].forEach((p) => {\r\n      liTable.removeAttribute(p);\r\n    });\r\n  }\r\n\r\n  getElementBehindPoint(point, x, y) {\r\n    const p = point || {};\r\n    const state = p.className;\r\n    p.className += ' gu-hide';\r\n    const el = this.document.elementFromPoint(x, y);\r\n    p.className = state;\r\n    return el;\r\n  }\r\n\r\n  findDropTarget(elementBehindCursor, clientX, clientY) {\r\n    let target = elementBehindCursor;\r\n    const accepted = () => {\r\n      const droppable = this.isContainer(target);\r\n      if (droppable === false) {\r\n        return false;\r\n      }\r\n\r\n      const immediate = this.getImmediateChild(target, elementBehindCursor);\r\n      if (!immediate) {\r\n        return false;\r\n      }\r\n      const reference = this.getReference(target, immediate, clientX);\r\n      const initial = this.isInitialPlacement(target, reference);\r\n      if (initial) {\r\n        return true; // should always be able to drop it right back where it was\r\n      }\r\n      return true;\r\n    };\r\n\r\n    while (target && !accepted()) {\r\n      target = this.getParent(target);\r\n    }\r\n    return target;\r\n  }\r\n\r\n  getReference = (dropTarget, target, x) => {\r\n    const resolve = (after) => {\r\n      return after ? this.nextEl(target) : target;\r\n    };\r\n\r\n    const inside = () => {\r\n      // faster, but only available if dropped inside a child element\r\n      const rect = target.getBoundingClientRect();\r\n      return resolve(x > rect.left + this.getRectWidth(rect) / 2);\r\n    };\r\n\r\n    const outside = () => {\r\n      // slower, but able to figure out any position\r\n      const len = dropTarget.children.length;\r\n      let i;\r\n      let el;\r\n      let rect;\r\n      for (i = 0; i < len; i++) {\r\n        el = dropTarget.children[i];\r\n        rect = el.getBoundingClientRect();\r\n        if (rect.left + rect.width / 2 > x) {\r\n          return el;\r\n        }\r\n      }\r\n      return null;\r\n    };\r\n\r\n    const reference = target !== dropTarget ? inside() : outside();\r\n    return reference;\r\n  };\r\n\r\n  getRectWidth(rect) {\r\n    return rect.width || rect.right - rect.left;\r\n  }\r\n  getRectHeight(rect) {\r\n    return rect.height || rect.bottom - rect.top;\r\n  }\r\n\r\n  nextEl(el) {\r\n    return el.nextElementSibling || manually();\r\n    function manually() {\r\n      let sibling = el;\r\n      do {\r\n        sibling = sibling.nextSibling;\r\n      } while (sibling && sibling.nodeType !== 1);\r\n      return sibling;\r\n    }\r\n  }\r\n\r\n  isInitialPlacement(target, s) {\r\n    let sibling;\r\n    if (s !== undefined) {\r\n      sibling = s;\r\n    } else if (this.mirror) {\r\n      sibling = this.currentSibling;\r\n    } else {\r\n      sibling = this.nextEl(this.item);\r\n    }\r\n    return target === this.source && sibling === this.initialSibling;\r\n  }\r\n\r\n  isContainer(el) {\r\n    return el === this.el;\r\n  }\r\n\r\n  getImmediateChild = (dropTarget, target) => {\r\n    let immediate = target;\r\n    const isElementDropFreeze = (element) => {\r\n      const index = Array.from(element.parentNode.children).indexOf(element);\r\n      return index < this.colDropFreezeTo;\r\n    };\r\n    while (immediate !== dropTarget && this.getParent(immediate) !== dropTarget) {\r\n      immediate = this.getParent(immediate);\r\n    }\r\n    if (immediate === this.documentElement || isElementDropFreeze(immediate)) {\r\n      return null;\r\n    }\r\n    return immediate;\r\n  };\r\n\r\n  animate(prevRect, target, time) {\r\n    if (time) {\r\n      if (!prevRect || !target) {\r\n        return;\r\n      }\r\n      const currentRect = target.getBoundingClientRect();\r\n      target.style.transition = 'none';\r\n      target.style.transform = 'translate3d(' + (prevRect.left - currentRect.left) + 'px,' + (prevRect.top - currentRect.top) + 'px,0)';\r\n      target.style.transition = 'all ' + time + 'ms cubic-bezier(0.755, 0.05, 0.855, 0.06)';\r\n      target.style.transform = 'translate3d(0,0,0)';\r\n      clearTimeout(target.animated);\r\n      target.animated = setTimeout(() => {\r\n        target.style.transition = '';\r\n        target.style.transform = '';\r\n        target.animated = false;\r\n      }, time);\r\n    }\r\n  }\r\n\r\n  toggleChildrenTable(event) {\r\n    this.childrenTableOpen = !this.childrenTableOpen;\r\n    this.dt.onToggleAllChildrenTable(this.childrenTableOpen);\r\n  }\r\n\r\n  onOptionSelect(option: TableCheckOptions) {\r\n    if (option.onChecked) {\r\n      option.onChecked();\r\n    }\r\n  }\r\n}\r\n","<ng-container>\n  <ng-template [ngTemplateOutlet]=\"defaultHeadTemplate\" [ngTemplateOutletContext]=\"{ $implicit: this }\" *ngIf=\"!(rowCount > 0)\">\n  </ng-template>\n  <ng-template\n    [ngTemplateOutlet]=\"AdvancedHeadTmpl\"\n    [ngTemplateOutletContext]=\"{ $implicit: this, rows: rowCountArray }\"\n    *ngIf=\"rowCount > 0\"\n  >\n  </ng-template>\n</ng-container>\n\n<!-- begin:template: header label template-->\n<ng-template #defaultHeadTemplate let-head=\"\">\n  <tr>\n    <th\n      *ngIf=\"showExpandToggle\"\n      class=\"devui-detail-cell\"\n      [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\"\n      [style.left]=\"0\"\n    ></th>\n    <th\n      *ngIf=\"checkable\"\n      class=\"devui-checkable-cell\"\n      [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\"\n      [style.left]=\"showExpandToggle && columns[0]?.fixedLeft ? '16px' : '0'\"\n    >\n      <ng-container *ngIf=\"!checkOptions || !checkOptions.length || !selectOptionOnCheckbox\">\n        <d-checkbox\n          *ngIf=\"headerCheckVisible\"\n          class=\"check-box-all\"\n          [name]=\"'checkAll'\"\n          [disabled]=\"headerCheckDisabled\"\n          (change)=\"onCheckAllChange()\"\n          [(ngModel)]=\"pageAllChecked\"\n          [halfchecked]=\"halfChecked\"\n        >\n        </d-checkbox>\n      </ng-container>\n      <div *ngIf=\"checkOptions && checkOptions.length > 0\" dDropDown appendToBody [trigger]=\"'hover'\" class=\"select-options\">\n        <div dDropDownToggle *ngIf=\"selectOptionOnCheckbox\">\n          <d-checkbox\n            *ngIf=\"headerCheckVisible\"\n            class=\"check-box-all\"\n            [name]=\"'checkAll'\"\n            [disabled]=\"headerCheckDisabled\"\n            (change)=\"onCheckAllChange()\"\n            [(ngModel)]=\"pageAllChecked\"\n            [halfchecked]=\"halfChecked\"\n            dPopover\n            [position]=\"'right'\"\n            [zIndex]=\"checkOptionsIndex\"\n            [visible]=\"checkOptions?.length && showTip\"\n            [content]=\"checkboxTemplate\"\n          ></d-checkbox>\n          <ng-template #checkboxTemplate>\n            <div>\n              <span>{{ curLabel }}</span>\n              <svg\n                width=\"16px\"\n                height=\"16px\"\n                class=\"close-icon\"\n                (click)=\"showTip = false\"\n                viewBox=\"0 0 16 16\"\n                version=\"1.1\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n                xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n              >\n                <g _ngcontent-sjo-c218=\"\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                  <path\n                    _ngcontent-sjo-c218=\"\"\n                    d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\n                    id=\"形状\"\n                    fill=\"#D5D5DB\"\n                    fill-rule=\"nonzero\"\n                  ></path>\n                </g>\n              </svg>\n            </div>\n          </ng-template>\n        </div>\n        <div *ngIf=\"!selectOptionOnCheckbox\" dDropDownToggle>\n          <svg\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            height=\"16px\"\n            version=\"1.1\"\n            viewBox=\"0 0 16 16\"\n            width=\"16px\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g fill=\"none\" fill-rule=\"evenodd\" id=\"chevron_down\" stroke=\"none\" stroke-width=\"1\">\n              <polygon points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\n            </g>\n          </svg>\n        </div>\n        <ul dDropDownMenu class=\"devui-dropdown-menu\" role=\"menu\">\n          <li\n            *ngFor=\"let option of checkOptions\"\n            [ngClass]=\"{ active: curLabel === option.label }\"\n            role=\"menuitem\"\n            (click)=\"onOptionSelect(option); curLabel = option.label; showTip = true\"\n          >\n            <a class=\"devui-dropdown-item\">{{ option.label }}</a>\n          </li>\n        </ul>\n      </div>\n    </th>\n    <th\n      dHeadCell\n      *ngFor=\"let column of columns; trackBy: trackByFn; let last = last; let colIndex = index\"\n      [minWidth]=\"column.minWidth\"\n      [maxWidth]=\"column.maxWidth\"\n      [attr.field]=\"column.field\"\n      [showSortIcon]=\"showSortIcon\"\n      [showFilterIcon]=\"showFilterIcon\"\n      [sortable]=\"getIfExistMultiSort(column.field)\"\n      [sortDirection]=\"getSortDirection(column.field)\"\n      (sortChange)=\"onHeadClick($event, column)\"\n      [filterable]=\"canFilterable(column)\"\n      [closeFilterWhenScroll]=\"column.closeFilterWhenScroll\"\n      [filterList]=\"column.filterList\"\n      [column]=\"column\"\n      [filterMultiple]=\"column.filterMultiple\"\n      [filterBoxWidth]=\"column.filterBoxWidth\"\n      [filterBoxHeight]=\"column.filterBoxHeight\"\n      [filterIconActive]=\"column.filterIconActive\"\n      [beforeFilter]=\"column.beforeFilter\"\n      [customFilterTemplate]=\"column.customFilterTemplate\"\n      [extraFilterTemplate]=\"column.extraFilterTemplate\"\n      [searchFn]=\"column.searchFn\"\n      (filterChange)=\"column.emitFilterData($event)\"\n      (filterToggle)=\"column.emitFilterToggle($event)\"\n      [fixedLeft]=\"column.fixedLeft\"\n      [isLastFixedLeft]=\"column.fixedLeft && !columns[colIndex + 1]?.fixedLeft\"\n      [fixedRight]=\"column.fixedRight\"\n      [isFirstFixedRight]=\"column.fixedRight && !columns[colIndex - 1]?.fixedRight\"\n      [nestedColumn]=\"column.extraOptions?.showHeadTableToggler\"\n      (toggleChildrenTableEvent)=\"toggleChildrenTable($event)\"\n      (tapEvent)=\"onTap($event)\"\n      [iconFoldTable]=\"column.extraOptions?.iconFoldTable\"\n      [iconUnFoldTable]=\"column.extraOptions?.iconUnFoldTable\"\n      [tableViewRefElement]=\"tableViewRefElement\"\n      [colDraggable]=\"colDraggable && colIndex > head?.colDropFreezeTo - 1\"\n      [childrenTableOpen]=\"childrenTableOpen\"\n      class=\"{{ column.cellClass ? column.cellClass : '' }}\"\n      [ngClass]=\"{\n        sindu_handle: colDraggable && colIndex > head?.colDropFreezeTo - 1,\n        'drop-freeze': colDraggable && colIndex < head?.colDropFreezeTo\n      }\"\n      [resizeEnabled]=\"resizeable\"\n      (resizeEndEvent)=\"onResize($event, column)\"\n      (resizeStartEvent)=\"onBeginResize($event)\"\n      (resizingEvent)=\"onResizing($event, column)\"\n    >\n      <span *ngIf=\"!column.headCellTmpl?.template\" [attr.title]=\"column.header\">{{ column.header }}</span>\n      <ng-container *ngIf=\"column.headCellTmpl?.template\">\n        <ng-template\n          [ngTemplateOutlet]=\"column.headCellTmpl?.template\"\n          [ngTemplateOutletContext]=\"{ column: column, $implicit: head }\"\n        ></ng-template>\n      </ng-container>\n    </th>\n  </tr>\n</ng-template>\n<!--end:tempate-->\n\n<ng-template let-head=\"\" let-rows=\"rows\" #AdvancedHeadTmpl>\n  <tr *ngFor=\"let rowContex of rows; let rowIndex = index\">\n    <th\n      *ngIf=\"showExpandToggle && rowIndex === 0\"\n      class=\"devui-detail-cell\"\n      [attr.rowspan]=\"rows?.length || 1\"\n      [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\"\n      [style.left]=\"0\"\n    ></th>\n    <th\n      *ngIf=\"checkable && rowIndex === 0\"\n      class=\"devui-checkable-cell\"\n      [attr.rowspan]=\"rows?.length || 1\"\n      [ngClass]=\"{ 'devui-sticky-left-cell': columns[0]?.fixedLeft }\"\n      [style.left]=\"showExpandToggle && columns[0]?.fixedLeft ? '16px' : '0'\"\n    >\n      <d-checkbox\n        *ngIf=\"headerCheckVisible\"\n        class=\"check-box-all\"\n        [name]=\"'checkAll'\"\n        [disabled]=\"headerCheckDisabled\"\n        (change)=\"onCheckAllChange()\"\n        [(ngModel)]=\"pageAllChecked\"\n        [halfchecked]=\"halfChecked\"\n      >\n      </d-checkbox>\n      <div *ngIf=\"checkOptions && checkOptions.length > 0\" dDropDown appendToBody [trigger]=\"'hover'\" class=\"select-options\">\n        <div dDropDownToggle>\n          <svg\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            height=\"16px\"\n            version=\"1.1\"\n            viewBox=\"0 0 16 16\"\n            width=\"16px\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <g fill=\"none\" fill-rule=\"evenodd\" id=\"chevron_down\" stroke=\"none\" stroke-width=\"1\">\n              <polygon points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\n            </g>\n          </svg>\n        </div>\n        <ul dDropDownMenu class=\"devui-dropdown-menu\" role=\"menu\">\n          <li *ngFor=\"let option of checkOptions\" role=\"menuitem\" (click)=\"onOptionSelect(option)\">\n            <a class=\"devui-dropdown-item\">{{ option.label }}</a>\n          </li>\n        </ul>\n      </div>\n    </th>\n    <ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let colIndex = index; let last = last\">\n      <th\n        dHeadCell\n        *ngIf=\"column.advancedHeader && column.advancedHeader[rowIndex]?.rowspan && column.advancedHeader[rowIndex]?.colspan\"\n        [attr.rowspan]=\"column.advancedHeader[rowIndex]?.rowspan\"\n        [attr.colspan]=\"column.advancedHeader[rowIndex]?.colspan\"\n        [style.textAlign]=\"\n          rowIndex !== column.advancedHeader.length - 1 &&\n          (column.advancedHeader[rowIndex]?.rowspan > 0 || column.advancedHeader[rowIndex]?.colspan > 0)\n            ? 'center'\n            : ''\n        \"\n        [minWidth]=\"column.minWidth\"\n        [attr.field]=\"column.field\"\n        [maxWidth]=\"column.maxWidth\"\n        [resizeEnabled]=\"resizeable && rowIndex === column.advancedHeader.length - 1 && !last\"\n        (resizeEndEvent)=\"onResize($event, column)\"\n        (resizeStartEvent)=\"onBeginResize($event)\"\n        (resizingEvent)=\"onResizing($event, column)\"\n        [showSortIcon]=\"showSortIcon\"\n        [showFilterIcon]=\"showFilterIcon\"\n        [sortable]=\"getIfExistMultiSort(column.field) && rowIndex === column.advancedHeader.length - 1\"\n        [sortDirection]=\"getSortDirection(column.field)\"\n        (sortChange)=\"onHeadClick($event, column)\"\n        [filterable]=\"canFilterable(column) && rowIndex === column.advancedHeader.length - 1\"\n        [closeFilterWhenScroll]=\"column.closeFilterWhenScroll\"\n        [filterList]=\"column.filterList\"\n        [column]=\"column\"\n        [filterMultiple]=\"column.filterMultiple\"\n        [filterBoxWidth]=\"column.filterBoxWidth\"\n        [filterBoxHeight]=\"column.filterBoxHeight\"\n        [filterIconActive]=\"column.filterIconActive\"\n        [beforeFilter]=\"column.beforeFilter\"\n        [customFilterTemplate]=\"column.customFilterTemplate\"\n        [extraFilterTemplate]=\"column.extraFilterTemplate\"\n        [searchFn]=\"column.searchFn\"\n        (filterChange)=\"column.emitFilterData($event)\"\n        (filterToggle)=\"column.emitFilterToggle($event)\"\n        [fixedLeft]=\"column.fixedLeft\"\n        [isLastFixedLeft]=\"column.fixedLeft && !columns[colIndex + 1]?.fixedLeft\"\n        [fixedRight]=\"column.fixedRight\"\n        [isFirstFixedRight]=\"column.fixedRight && !columns[colIndex - 1]?.fixedRight\"\n        [nestedColumn]=\"column.extraOptions?.showHeadTableToggler\"\n        (toggleChildrenTableEvent)=\"toggleChildrenTable($event)\"\n        (tapEvent)=\"onTap($event)\"\n        [iconFoldTable]=\"column.extraOptions?.iconFoldTable\"\n        [iconUnFoldTable]=\"column.extraOptions?.iconUnFoldTable\"\n        [tableViewRefElement]=\"tableViewRefElement\"\n        [colDraggable]=\"colDraggable && colIndex > head?.colDropFreezeTo - 1\"\n        [childrenTableOpen]=\"childrenTableOpen\"\n        [ngClass]=\"{\n          sindu_handle: colDraggable && colIndex > head?.colDropFreezeTo - 1,\n          'drop-freeze': colDraggable && colIndex < head?.colDropFreezeTo\n        }\"\n      >\n        <span\n          *ngIf=\"(rowIndex < rows.length - 1 && !column.headCellApplyAll) || !column.headCellTmpl?.template\"\n          [attr.title]=\"column.advancedHeader[rowIndex].header\"\n          >{{ column.advancedHeader[rowIndex].header }}</span\n        >\n        <ng-container *ngIf=\"column.headCellTmpl?.template && (rowIndex === rows.length - 1 || column.headCellApplyAll)\">\n          <ng-template\n            [ngTemplateOutlet]=\"column.headCellTmpl?.template\"\n            [ngTemplateOutletContext]=\"{\n              column: column,\n              $implicit: head,\n              rowIndex: rowIndex,\n              colIndex: colIndex\n            }\"\n          >\n          </ng-template>\n        </ng-container>\n      </th>\n      <th\n        dHeadCell\n        *ngIf=\"!column.advancedHeader && rowIndex === 0\"\n        [minWidth]=\"column.minWidth\"\n        [maxWidth]=\"column.maxWidth\"\n        [attr.field]=\"column.field\"\n        [showSortIcon]=\"showSortIcon\"\n        [showFilterIcon]=\"showFilterIcon\"\n        [sortable]=\"getIfExistMultiSort(column.field)\"\n        [sortDirection]=\"getSortDirection(column.field)\"\n        (sortChange)=\"onHeadClick($event, column)\"\n        [filterable]=\"canFilterable(column)\"\n        [closeFilterWhenScroll]=\"column.closeFilterWhenScroll\"\n        [filterList]=\"column.filterList\"\n        [column]=\"column\"\n        [filterMultiple]=\"column.filterMultiple\"\n        [filterBoxWidth]=\"column.filterBoxWidth\"\n        [filterBoxHeight]=\"column.filterBoxHeight\"\n        [filterIconActive]=\"column.filterIconActive\"\n        [beforeFilter]=\"column.beforeFilter\"\n        [customFilterTemplate]=\"column.customFilterTemplate\"\n        [extraFilterTemplate]=\"column.extraFilterTemplate\"\n        [searchFn]=\"column.searchFn\"\n        (filterChange)=\"column.emitFilterData($event)\"\n        (filterToggle)=\"column.emitFilterToggle($event)\"\n        [fixedLeft]=\"column.fixedLeft\"\n        [isLastFixedLeft]=\"column.fixedLeft && !columns[colIndex + 1]?.fixedLeft\"\n        [fixedRight]=\"column.fixedRight\"\n        [isFirstFixedRight]=\"column.fixedRight && !columns[colIndex - 1]?.fixedRight\"\n        [nestedColumn]=\"column.extraOptions?.showHeadTableToggler\"\n        (toggleChildrenTableEvent)=\"toggleChildrenTable($event)\"\n        (tapEvent)=\"onTap($event)\"\n        [iconFoldTable]=\"column.extraOptions?.iconFoldTable\"\n        [iconUnFoldTable]=\"column.extraOptions?.iconUnFoldTable\"\n        [tableViewRefElement]=\"tableViewRefElement\"\n        [colDraggable]=\"colDraggable && colIndex > head?.colDropFreezeTo - 1\"\n        [childrenTableOpen]=\"childrenTableOpen\"\n        [ngClass]=\"{\n          sindu_handle: colDraggable && colIndex > head?.colDropFreezeTo - 1,\n          'drop-freeze': colDraggable && colIndex < head?.colDropFreezeTo\n        }\"\n        [resizeEnabled]=\"resizeable\"\n        (resizeEndEvent)=\"onResize($event, column)\"\n        (resizeStartEvent)=\"onBeginResize($event)\"\n        (resizingEvent)=\"onResizing($event, column)\"\n        [attr.rowspan]=\"rows?.length || 1\"\n      >\n        <span *ngIf=\"!column.headCellTmpl?.template\" [attr.title]=\"column.header\">{{ column.header }}</span>\n        <ng-container *ngIf=\"column.headCellTmpl?.template\">\n          <ng-template\n            [ngTemplateOutlet]=\"column.headCellTmpl?.template\"\n            [ngTemplateOutletContext]=\"{ column: column, $implicit: head }\"\n          ></ng-template>\n        </ng-container>\n      </th>\n    </ng-container>\n    <!-- <th width=\"0\"  *ngIf=\"resizeable\"></th> -->\n  </tr>\n</ng-template>\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\nimport { TableWidthConfig } from '../../data-table.model';\nimport { TableTrComponent } from '../row/tr.component';\n\n@Component({\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\n  selector: '[dTableBody]',\n  templateUrl: './tbody.component.html',\n  styleUrls: ['./tbody.component.scss']\n})\nexport class TableTbodyComponent implements OnInit {\n  @Input() dataSource: any[] = [];\n  @Input() rowTemplete: TemplateRef<any>;\n  @Input() nestedLayer = 0;\n  @Input() nestedIndex = '-1';\n  @Input() virtualScroll;\n  @Input() tableWidthConfig: TableWidthConfig[];\n  @Input() minHeight: string;\n  @Input() minHeightStretchRow: TemplateRef<any>;\n\n  @ContentChild(TemplateRef) rowTempleteForSelect: TemplateRef<TableTrComponent>;\n\n  constructor() {}\n\n  ngOnInit() {}\n\n  trackByFn(index) {\n    return index;\n  }\n}\n","<ng-container *ngIf=\"!virtualScroll; else scrollViewTpl\">\n  <ng-container *ngFor=\"let rowItem of dataSource; trackBy: trackByFn; let rowIndex = index\">\n    <ng-template\n      [ngTemplateOutlet]=\"trTable\"\n      [ngTemplateOutletContext]=\"{ rowItem: rowItem, rowIndex: rowIndex, nestedLayer: nestedLayer, nestedIndex: nestedIndex }\"\n    >\n    </ng-template>\n  </ng-container>\n</ng-container>\n\n<ng-template #scrollViewTpl>\n  <ng-container *cdkVirtualFor=\"let rowItem of dataSource; trackBy: trackByFn; let rowIndex = index\">\n    <ng-template\n      [ngTemplateOutlet]=\"trTable\"\n      [ngTemplateOutletContext]=\"{ rowItem: rowItem, rowIndex: rowIndex, nestedLayer: nestedLayer, nestedIndex: nestedIndex }\"\n    >\n    </ng-template>\n  </ng-container>\n</ng-template>\n\n<ng-template #trTable let-rowIndex=\"rowIndex\" let-rowItem=\"rowItem\" let-nestedLayer=\"nestedLayer\" let-nestedIndex=\"nestedIndex\">\n  <ng-template\n    [ngTemplateOutlet]=\"rowTemplete\"\n    [ngTemplateOutletContext]=\"{ rowItem: rowItem, rowIndex: rowIndex, nestedLayer: nestedLayer, nestedIndex: nestedIndex }\"\n  ></ng-template>\n  <tr class=\"child-table\" *ngIf=\"rowItem['children'] && rowItem['$isChildTableOpen']\" [style.height]=\"minHeight ? '40px' : null\">\n    <td [attr.colspan]=\"tableWidthConfig.length\">\n      <table class=\"devui-table\" style=\"table-layout: fixed\">\n        <colgroup>\n          <col [style.width]=\"config.width\" *ngFor=\"let config of tableWidthConfig\" />\n        </colgroup>\n        <tbody\n          dTableBody\n          [rowTemplete]=\"rowTemplete\"\n          [dataSource]=\"rowItem['children']\"\n          [tableWidthConfig]=\"tableWidthConfig\"\n          [nestedLayer]=\"nestedLayer + 1\"\n          [nestedIndex]=\"nestedIndex + ',' + rowIndex\"\n        ></tbody>\n      </table>\n    </td>\n  </tr>\n</ng-template>\n\n<ng-template [ngTemplateOutlet]=\"minHeightStretchRow\"></ng-template>\n","import {\n  AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, OnInit, Output, QueryList, Renderer2\n} from '@angular/core';\nimport { RowCheckChangeEventArg, TableCheckOptions } from '../../data-table.model';\nimport { TableThComponent } from '../head/th/th.component';\n\n@Component({\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\n  selector: '[dTableRow]',\n  templateUrl: './tr.component.html',\n  styleUrls: ['./tr.component.scss']\n})\nexport class TableTrComponent implements OnInit, AfterViewInit {\n  @ContentChildren(TableThComponent) thList: QueryList<TableThComponent>;\n  headerCheckable: boolean;\n  headerCheckDisabled: boolean;\n  headerRowspan = 1;\n  headerCheckOptions: TableCheckOptions[];\n  checkOptionsIndex = 1050;\n  curLabel = '';\n  showTip = false;\n  selectOptionOnCheckbox = false;\n\n  headerChecked: boolean;\n  headerHalfChecked: boolean;\n  firstTh: TableThComponent;\n\n  @Output() headerCheckStatusEvent = new EventEmitter<boolean>();\n  @Output() checkStatusEvent = new EventEmitter<RowCheckChangeEventArg>();\n  constructor(\n    private eleRef: ElementRef,\n    private render2: Renderer2,\n    private cdr: ChangeDetectorRef\n  ) { }\n\n  ngOnInit() {\n  }\n\n  ngAfterViewInit() {\n    if (this.thList) {\n      this.firstTh = this.thList.first;\n    }\n    this.initFixedColumnStatus();\n    this.cdr.detectChanges();\n  }\n\n  initFixedColumnStatus() {\n    const fixLeftList = this.eleRef.nativeElement.querySelectorAll('.devui-sticky-left-cell');\n    const fixRightList = this.eleRef.nativeElement.querySelectorAll('.devui-sticky-right-cell');\n    if (fixLeftList?.length) {\n      const lastEle = fixLeftList[fixLeftList.length - 1];\n      this.render2.addClass(lastEle, 'devui-last-sticky-left-cell');\n    }\n\n    if (fixRightList?.length) {\n      const firstEle = fixRightList[0];\n      this.render2.addClass(firstEle, 'devui-first-sticky-right-cell');\n    }\n\n\n  }\n\n  onHeaderCheckChange(checked) {\n    this.headerChecked = checked;\n    this.headerHalfChecked = false;\n    this.headerCheckStatusEvent.emit(checked);\n  }\n\n  onOptionSelect(option: TableCheckOptions) {\n    if (option.onChecked) {\n      option.onChecked();\n    }\n  }\n}\n","<th\n  *ngIf=\"headerCheckable\"\n  [attr.rowspan]=\"headerRowspan\"\n  class=\"devui-checkable-cell\"\n  [ngClass]=\"{ 'devui-sticky-left-cell': firstTh?.fixedLeft }\"\n  [style.left]=\"'0px'\"\n>\n  <d-checkbox\n    *ngIf=\"!headerCheckOptions || !headerCheckOptions.length || !selectOptionOnCheckbox\"\n    class=\"check-box-all\"\n    [name]=\"'checkbox'\"\n    (change)=\"onHeaderCheckChange($event)\"\n    [(ngModel)]=\"headerChecked\"\n    [halfchecked]=\"headerHalfChecked\"\n    [disabled]=\"headerCheckDisabled\"\n  ></d-checkbox>\n\n  <div *ngIf=\"headerCheckOptions && headerCheckOptions.length > 0\" dDropDown appendToBody [trigger]=\"'hover'\" class=\"select-options\">\n    <div dDropDownToggle *ngIf=\"selectOptionOnCheckbox\">\n      <d-checkbox\n        class=\"check-box-all\"\n        [name]=\"'checkbox'\"\n        (change)=\"onHeaderCheckChange($event)\"\n        [(ngModel)]=\"headerChecked\"\n        [halfchecked]=\"headerHalfChecked\"\n        [disabled]=\"headerCheckDisabled\"\n        dPopover\n        [zIndex]=\"checkOptionsIndex\"\n        [position]=\"'right'\"\n        [visible]=\"headerCheckOptions?.length && showTip\"\n        [content]=\"checkboxTemplate\"\n      ></d-checkbox>\n      <ng-template #checkboxTemplate>\n        <div>\n          <span>{{ curLabel }}</span>\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            class=\"close-icon\"\n            (click)=\"showTip = false\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g _ngcontent-sjo-c218=\"\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n              <path\n                _ngcontent-sjo-c218=\"\"\n                d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\n                id=\"形状\"\n                fill=\"#D5D5DB\"\n                fill-rule=\"nonzero\"\n              ></path>\n            </g>\n          </svg>\n        </div>\n      </ng-template>\n    </div>\n    <div *ngIf=\"!selectOptionOnCheckbox\" dDropDownToggle>\n      <svg\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        height=\"16px\"\n        version=\"1.1\"\n        viewBox=\"0 0 16 16\"\n        width=\"16px\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n      >\n        <g fill=\"none\" fill-rule=\"evenodd\" id=\"chevron_down\" stroke=\"none\" stroke-width=\"1\">\n          <polygon points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\n        </g>\n      </svg>\n    </div>\n    <ul dDropDownMenu class=\"devui-dropdown-menu\" role=\"menu\">\n      <li\n        *ngFor=\"let option of headerCheckOptions\"\n        [ngClass]=\"{ active: curLabel === option.label }\"\n        role=\"menuitem\"\n        (click)=\"onOptionSelect(option); curLabel = option.label; showTip = true\"\n      >\n        <a class=\"devui-dropdown-item\">{{ option.label }}</a>\n      </li>\n    </ul>\n  </div>\n</th>\n<ng-content></ng-content>\n","import {\r\n  AfterContentInit,\r\n  Component,\r\n  ContentChildren,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  QueryList,\r\n  SimpleChanges,\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableCheckOptions, TableCheckStatusArg } from '../../data-table.model';\r\nimport { TableTrComponent } from '../row/tr.component';\r\nimport { TableThComponent } from './th/th.component';\r\n\r\n@Component({\r\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dTableHead]',\r\n  templateUrl: './thead.component.html',\r\n})\r\nexport class TableTheadComponent implements OnInit, AfterContentInit, OnDestroy, OnChanges {\r\n  @Input() checkable: boolean;\r\n  @Input() checkDisabled: boolean;\r\n  @Input() checkOptions: TableCheckOptions[];\r\n  @Input() checkOptionsIndex = 1050;\r\n  @Input() selectOptionOnCheckbox = false;\r\n  @ContentChildren(TableTrComponent) headerRowList: QueryList<TableTrComponent>;\r\n  @ContentChildren(TableThComponent, { descendants: true }) thList: QueryList<TableThComponent>;\r\n\r\n  headerFirstRow: TableTrComponent;\r\n  nestedTh: TableThComponent;\r\n  toggleTableSubscription: Subscription;\r\n  checkStatusSubscription: Subscription;\r\n  headerCheckStatusEvent = new EventEmitter<boolean>();\r\n  headerChildrenTableToggleEvent = new EventEmitter<boolean>();\r\n\r\n  constructor() {}\r\n\r\n  ngOnInit() {}\r\n\r\n  ngAfterContentInit() {\r\n    if (this.headerRowList) {\r\n      this.headerFirstRow = this.headerRowList.first;\r\n      if (this.headerFirstRow) {\r\n        this.headerFirstRow.headerRowspan = this.headerRowList.length;\r\n        this.headerFirstRow.headerCheckable = this.checkable;\r\n        this.headerFirstRow.headerCheckDisabled = this.checkDisabled;\r\n        this.headerFirstRow.headerCheckOptions = this.checkOptions;\r\n        this.headerFirstRow.checkOptionsIndex = this.checkOptionsIndex;\r\n        this.headerFirstRow.selectOptionOnCheckbox = this.selectOptionOnCheckbox;\r\n\r\n        this.checkStatusSubscription = this.headerFirstRow.headerCheckStatusEvent.subscribe((status) => {\r\n          this.headerCheckStatusEvent.emit(status);\r\n        });\r\n      }\r\n    }\r\n    if (this.thList) {\r\n      this.setNestedThToggle();\r\n      this.thList.changes.subscribe((list) => {\r\n        this.setNestedThToggle();\r\n      });\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { checkable, checkDisabled, checkOptions } = changes;\r\n    if (\r\n      (checkable && !checkable.isFirstChange()) ||\r\n      (checkDisabled && !checkDisabled.isFirstChange()) ||\r\n      (checkOptions && !checkOptions.isFirstChange())\r\n    ) {\r\n      if (this.headerFirstRow) {\r\n        this.headerFirstRow.headerRowspan = this.headerRowList.length;\r\n        this.headerFirstRow.headerCheckable = this.checkable;\r\n        this.headerFirstRow.headerCheckDisabled = this.checkDisabled;\r\n        this.headerFirstRow.headerCheckOptions = this.checkOptions;\r\n        this.headerFirstRow.selectOptionOnCheckbox = this.selectOptionOnCheckbox;\r\n      }\r\n    }\r\n  }\r\n\r\n  setNestedThToggle() {\r\n    this.nestedTh = this.thList.find((th) => {\r\n      return th.nestedColumn;\r\n    });\r\n\r\n    if (this.nestedTh) {\r\n      this.toggleTableSubscription = this.nestedTh.toggleChildrenTableEvent.subscribe((childrenTableOpen) => {\r\n        this.headerChildrenTableToggleEvent.emit(childrenTableOpen);\r\n      });\r\n    }\r\n  }\r\n\r\n  setHeaderCheckStatus(status: TableCheckStatusArg) {\r\n    if (status.pageAllChecked !== undefined) {\r\n      this.headerFirstRow.headerChecked = status.pageAllChecked;\r\n    }\r\n\r\n    if (status.pageHalfChecked !== undefined) {\r\n      this.headerFirstRow.headerHalfChecked = status.pageHalfChecked;\r\n    }\r\n  }\r\n\r\n  setHeaderToggleStatus(open: boolean) {\r\n    if (this.nestedTh) {\r\n      this.nestedTh.childrenTableOpen = open;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.checkStatusSubscription) {\r\n      this.checkStatusSubscription.unsubscribe();\r\n      this.checkStatusSubscription = null;\r\n    }\r\n    if (this.toggleTableSubscription) {\r\n      this.toggleTableSubscription.unsubscribe();\r\n      this.toggleTableSubscription = null;\r\n    }\r\n  }\r\n}\r\n","<ng-content></ng-content>\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ContentChildren,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  QueryList,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { switchMap, takeUntil } from 'rxjs/operators';\r\nimport { DataTableHeadComponent } from './data-table-head.component';\r\nimport {\r\n  CellSelectedEventArg,\r\n  CheckableRelation,\r\n  ColumnResizeEventArg,\r\n  RowCheckChangeEventArg,\r\n  RowSelectedEventArg,\r\n  SortEventArg,\r\n  TableCheckOptions,\r\n  TableCheckStatusArg,\r\n  TableExpandConfig,\r\n  TableWidthConfig,\r\n} from './data-table.model';\r\nimport { DATA_TABLE } from './data-table.token';\r\nimport { TableTbodyComponent } from './table/body/tbody.component';\r\nimport { TableThComponent } from './table/head/th/th.component';\r\nimport { TableTheadComponent } from './table/head/thead.component';\r\nimport { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\r\n\r\nconst SCROLL_BAR_WIDTH = 8;\r\n\r\n@Component({\r\n  selector: 'd-data-table',\r\n  templateUrl: './data-table.component.html',\r\n  styleUrls: ['./data-table.component.scss', './data-table.component.color.scss'],\r\n  // changeDetection: ChangeDetectionStrategy.OnPush,\r\n  exportAs: 'dataTable',\r\n  preserveWhitespaces: false,\r\n  providers: [\r\n    {\r\n    provide: DATA_TABLE,\r\n      useExisting: forwardRef(() => DataTableComponent),\r\n    },\r\n  ],\r\n})\r\nexport class DataTableComponent implements OnDestroy, OnInit, OnChanges, AfterContentInit, AfterViewInit {\r\n  /**\r\n   * 【可选】Datatable是否提供勾选行的功能\r\n   */\r\n  @Input() checkable: boolean;\r\n  /**\r\n   * 【可选】表头checkbox是否disabled\r\n   */\r\n  @Input() headerCheckDisabled: boolean;\r\n  /**\r\n   * 【可选】表头checkbox是否可见\r\n   */\r\n  @Input() headerCheckVisible = true;\r\n  /**\r\n   * 【可选】表头选中的下拉项及操作\r\n   */\r\n  @Input() checkOptions: TableCheckOptions[];\r\n\r\n  @Input() checkOptionsIndex = 1050;\r\n\r\n  @Input() selectOptionOnCheckbox = false;\r\n  /**\r\n   * 【可选】是否提供显示行详情的功能\r\n   */\r\n  @Input() showExpandToggle: boolean;\r\n  /**\r\n   * 【可选】是否固定表头（在表格超过容器最大高度时，表格可滚动时生效）\r\n   */\r\n  @Input() fixHeader: boolean;\r\n  /**\r\n   * 【可选】表格在超出容器时，是否可以通过滚动查看表格内容\r\n   */\r\n  @Input() scrollable: boolean;\r\n  /**\r\n   * 【可选】默认表格使用的表格类型，可选值为'cell' @deprecated\r\n   */\r\n  @Input() editModel = 'cell';\r\n  /**\r\n   * 【可选】限制表格最大宽度，默认撑满父容器\r\n   */\r\n  @Input() maxWidth: string;\r\n  /**\r\n   * 【可选】限制最大高度，默认\r\n   */\r\n  @Input() maxHeight: string;\r\n  /**\r\n   * 表格类型 @deprecated\r\n   */\r\n  @Input() type: any;\r\n  /**\r\n   * 鼠标悬浮行时是否高亮\r\n   */\r\n  @Input() rowHoveredHighlight = true;\r\n  /**\r\n   * 鼠标悬浮行时$hovered是否记录到rowItem中\r\n   */\r\n  @Input() generalRowHoveredData;\r\n  /**\r\n   * 表格自定义样式\r\n   */\r\n  @Input() cssClass: string;\r\n  /**\r\n   * 表格宽度\r\n   */\r\n  @Input() tableWidth = '100%';\r\n  /**\r\n   * 表格高度\r\n   */\r\n  @Input() tableHeight: string;\r\n  /**\r\n   * 固定表头指定高度是否包含表头的高度，`tableHeight`设置的高度默认是表格body的高度\r\n   */\r\n  @Input() containFixHeaderHeight = false;\r\n  /**\r\n   * 【可选】是否限制多列排序的输出限制为一项\r\n   */\r\n  @Input() onlyOneColumnSort: boolean;\r\n  /**\r\n   * 【可选】多列选择数组，用来指导那几列会被排序\r\n   */\r\n  @Input() multiSort: SortEventArg[] = [];\r\n  /**\r\n   * 【可选】是否可以拖拽调整列宽\r\n   */\r\n  @Input() resizeable: boolean;\r\n  /**\r\n   * 【可选】用来自定义表格是否可以拖动\r\n   */\r\n  @Input() colDraggable: boolean;\r\n  /**\r\n   * 【可选】用来自定义不可拖拽的前几列\r\n   */\r\n  @Input() colDropFreezeTo = 0;\r\n  /**\r\n   * 【可选】用来自定义详情页的模板 @deprecated\r\n   */\r\n  @Input() detailTemplateRef: TemplateRef<any>;\r\n  /**\r\n   * 【可选】同时绑定单击、双击事件时，用于区分点击的时间间隔,默认300ms，两个事件不同时使用可以指定为0\r\n   */\r\n  @Input() timeout = 300;\r\n  /**\r\n   * 【可选】配置表头操作未激活状态下是否显示操作区域，默认不显示\r\n   */\r\n  @Input() showOperationArea = false;\r\n  /**\r\n   * 【可选】是否显示排序未激活图标，默认显示,\r\n   */\r\n  @Input() showSortIcon = true;\r\n  /**\r\n   * 【可选】是否显示筛选未激活图标，默认显示,\r\n   */\r\n  @Input() showFilterIcon = true;\r\n  /**\r\n   * 多列选择Change事件，用来更新多列选择数组, column param\r\n   * */\r\n  @Output() multiSortChange = new EventEmitter<SortEventArg[]>();\r\n  /**\r\n   * 表格单元格点击事件\r\n   */\r\n  @Output() cellClick = new EventEmitter<CellSelectedEventArg>();\r\n  /**\r\n   * 表格单元格双击事件\r\n   */\r\n  @Output() cellDBClick = new EventEmitter<CellSelectedEventArg>();\r\n  /**\r\n   * 表格行点击事件\r\n   */\r\n  @Output() rowClick = new EventEmitter<RowSelectedEventArg>();\r\n  /**\r\n   * 表格行双击事件\r\n   */\r\n  @Output() rowDBClick = new EventEmitter<RowSelectedEventArg>();\r\n  /**\r\n  * 行detail toggle事件\r\n  */\r\n  @Output() detialToggle = new EventEmitter<any>();\r\n  /**\r\n   * 表格单元格开始编辑前的拦截事件\r\n   */\r\n  @Input() beforeCellEdit: (rowItem: any, column: any) => Promise<any>;\r\n  /**\r\n   * 表格单元格开始编辑后的拦截事件\r\n   */\r\n  @Input() beforeCellEditEnd: (rowItem: any, column: any) => boolean;\r\n  /**\r\n   * 表格单元格开始编辑事件\r\n   */\r\n  @Output() cellEditStart = new EventEmitter<CellSelectedEventArg>();\r\n  /**\r\n   * 表格单元格结束编辑事件\r\n   */\r\n  @Output() cellEditEnd = new EventEmitter<CellSelectedEventArg>();\r\n  /**\r\n   * 某行的勾选状态变化事件\r\n   */\r\n  @Output() rowCheckChange = new EventEmitter<RowCheckChangeEventArg>();\r\n  /**\r\n   * 当前页码全勾选状态变化事件\r\n   */\r\n  @Output() checkAllChange = new EventEmitter<boolean>();\r\n  /**\r\n   * 延迟懒加载完成事件\r\n   */\r\n  @Output() loadMore = new EventEmitter<any>();\r\n  /**\r\n   * 列宽变化事件\r\n   */\r\n  @Output() resize = new EventEmitter<ColumnResizeEventArg>();\r\n  /**\r\n   * 当前表格层级，默认为0，在树形表格场景下自增长\r\n   * 内部嵌套使用，不对外暴露\r\n   */\r\n  @Input() tableLevel = 0;\r\n  /**\r\n   * 配置树形表格的父子选中是否互相关联\r\n   * upward：选中子关联父\r\n   * downward： 选中父关联子\r\n   */\r\n  @Input() checkableRelation: CheckableRelation = { upward: true, downward: true };\r\n  /**\r\n   * 异步加载子列表\r\n   */\r\n  @Input() loadChildrenTable: (rowItem: any) => Promise<any>;\r\n  /**\r\n   * 异步加载全部子列表\r\n   */\r\n  @Input() loadAllChildrenTable: () => Promise<any>;\r\n  /**\r\n   * 是否虚拟滚动\r\n   */\r\n  @Input() virtualScroll;\r\n  /**\r\n   * 配置header的展开内容\r\n   */\r\n  @Input() headerExpandConfig: TableExpandConfig;\r\n  /**\r\n   * 子列表关闭事件\r\n   */\r\n  @Output() childrenTableClose = new EventEmitter<any>();\r\n  /**\r\n   * 全部子列表关闭事件\r\n   */\r\n  @Output() allChildrenTableClose = new EventEmitter<any>();\r\n  /**\r\n   * 虚拟滚动配置\r\n   */\r\n  @Input() virtualItemSize = 40;\r\n  @Input() virtualMinBufferPx = 80;\r\n  @Input() virtualMaxBufferPx = 200;\r\n\r\n  /**\r\n   * 懒加载\r\n   */\r\n  @Input() lazy: boolean;\r\n  /**\r\n   * 列宽配置\r\n   */\r\n  @Input() tableWidthConfig: TableWidthConfig[] = [];\r\n  /**\r\n   * 表头是否有背景色\r\n   */\r\n  @Input() headerBg: boolean;\r\n  /**\r\n   * 表格布局\r\n   */\r\n  @Input() tableLayout: 'fixed' | 'auto' = 'fixed';\r\n  /**\r\n   * 表格边框类型，默认有行边框，bordered：全边框，borderless：无边框\r\n   */\r\n  @Input() borderType: '' | 'bordered' | 'borderless' = '';\r\n  /**\r\n   * 表格是否展示为斑马纹间隔\r\n   */\r\n  @Input() striped: boolean;\r\n  /**\r\n   * 表格内部滚动事件\r\n   */\r\n  @Output() tableScrollEvent = new EventEmitter<Event>();\r\n\r\n  @Input() minHeight: string;\r\n\r\n  @Output() columnDragEnd = new EventEmitter<any>();\r\n\r\n  /**\r\n   * 表格尺寸，sm对应行高40px， md对应行高48px，lg对应行高56px\r\n   */\r\n  @Input() size: 'mini' | 'xs' | 'sm' | 'md' | 'lg' = 'sm';\r\n\r\n  @Input() shadowType: 'normal' | 'embed' = 'embed';\r\n\r\n  @Input() tableOverflowType: 'overlay' | 'auto' = 'auto';\r\n\r\n  @ContentChildren(DataTableColumnTmplComponent) columns: QueryList<DataTableColumnTmplComponent>;\r\n  @ContentChild(TableTheadComponent) innerHeader: TableTheadComponent;\r\n  @ContentChild(TableTbodyComponent) innerBody: TableTbodyComponent;\r\n  @ContentChildren(TableThComponent, { descendants: true }) thList: QueryList<TableThComponent>;\r\n  @ContentChild('noResultTemplateRef') noResultTemplate: TemplateRef<any>;\r\n  @ViewChild('fixHeaderContainerRef') fixHeaderContainerRefElement: ElementRef;\r\n  @ViewChild('tableView', { static: true }) tableViewRefElement: ElementRef;\r\n  @ViewChild('cdkVirtualScrollViewport') virtualScrollViewport: CdkVirtualScrollViewport;\r\n  @ViewChild('normalScroll') normalScrollElement: ElementRef;\r\n  @ViewChild('scrollViewTpl') vitualScrollElement: TemplateRef<any>;\r\n  @ViewChild(DataTableHeadComponent) columnHeaderComponent: DataTableHeadComponent;\r\n  @ViewChild('devuiNormalScrollBody', { read: ElementRef }) devuiNormalScrollBody: ElementRef;\r\n\r\n  @HostBinding('style.height') get hostHeight() {\r\n    return this.tableHeight && this.dataSource.length ? this.tableHeight : null;\r\n  }\r\n\r\n  @HostBinding('class.devui-table-shadow') get hasShadow() {\r\n    return this.shadowType === 'normal';\r\n  }\r\n\r\n  hasWidthScroll: boolean;\r\n\r\n  hasHeightScroll: boolean;\r\n\r\n  _dataSource: any[] = [];\r\n  _pageAllChecked = false;\r\n  selectable = true;\r\n  allChecked: number[] = [];\r\n  selectedRowItem: any;\r\n  selectedColumnItem: any;\r\n  isCellEdit: boolean;\r\n  editRowItem: any;\r\n  documentClickEvent = new EventEmitter<any>();\r\n  cellEditorClickEvent = new EventEmitter<Event>();\r\n  _hideColumn: string[] = [];\r\n  _columns: DataTableColumnTmplComponent[];\r\n  displayDataSource: any[];\r\n  headertoggleTableSubscription: Subscription;\r\n  headerCheckStatusSubscription: Subscription;\r\n  searchQueryChange = new EventEmitter<{ [key: string]: any }>();\r\n  halfChecked = false;\r\n  childrenTableOpen: boolean;\r\n  private scrollY = 0;\r\n  BUILTIN_COL_WIDTH = '41px';\r\n  BUILTIN_COL_WIDTH_EXTRA = '55px';\r\n\r\n  tableBodyEl: ElementRef;\r\n  onDocumentClickListen: any;\r\n\r\n  _tableTotalWidth = 0;\r\n  _lastColSize = 0;\r\n\r\n  @ViewChild('tableBody') set content(content: ElementRef) {\r\n    setTimeout(() => {\r\n      this.tableBodyEl = content;\r\n      if (this.virtualScroll) {\r\n        this.initVirtualBodyHeight();\r\n      }\r\n    });\r\n  }\r\n\r\n  @Input() set dataSource(dataSource: any[]) {\r\n    if (dataSource === null || !dataSource) {\r\n    /* eslint-disable-next-line no-param-reassign */\r\n      dataSource = [];\r\n    }\r\n    this._dataSource = dataSource;\r\n    const hasChecked = this.dataSource.some(this.hasChecked);\r\n    const hasUnChecked = this.dataSource.some(this.hasUnChecked);\r\n    this._pageAllChecked = dataSource && dataSource.length > 0 && !hasUnChecked;\r\n    this.halfChecked = hasChecked && hasUnChecked;\r\n\r\n    if (this.innerHeader) {\r\n      this.innerHeader.setHeaderCheckStatus({ pageAllChecked: this._pageAllChecked, pageHalfChecked: this.halfChecked });\r\n    }\r\n\r\n    // 固定表头时，数据从无数据到有数据，需要更新滚动位置，避免对齐偏移\r\n    if (this.fixHeader) {\r\n      setTimeout(() => {\r\n        this.onBodyScroll();\r\n      });\r\n    }\r\n\r\n    if (this.virtualScroll) {\r\n      this.initVirtualBodyHeight();\r\n    }\r\n    this.initScrollStatus();\r\n  }\r\n\r\n  get dataSource() {\r\n    return this._dataSource;\r\n  }\r\n\r\n  @Input() set hideColumn(hideColumn: string[]) {\r\n    this._hideColumn = hideColumn;\r\n    if (this._columns) {\r\n      this.updateColumns();\r\n    }\r\n  }\r\n\r\n  get hideColumn() {\r\n    return this._hideColumn;\r\n  }\r\n\r\n  @Input() set pageAllChecked(pageAllChecked: boolean) {\r\n    if (this.dataSource) {\r\n      this._dataSource = this.setCheckedStatus(this.dataSource, pageAllChecked);\r\n    }\r\n    this._pageAllChecked = pageAllChecked;\r\n    this.halfChecked = this.dataSource.some(this.hasChecked) && this.dataSource.some(this.hasUnChecked);\r\n  }\r\n\r\n  get pageAllChecked() {\r\n    return this._pageAllChecked;\r\n  }\r\n\r\n  virtualBodyHeight;\r\n  document: Document;\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private ngZone: NgZone,\r\n    private renderer: Renderer2,\r\n    private cdr: ChangeDetectorRef,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.onDocumentClickListen = this.onDocumentClick.bind(this);\r\n    this.document = this.doc;\r\n  }\r\n\r\n  initVirtualBodyHeight() {\r\n    setTimeout(() => {\r\n      if (this.virtualScrollViewport) {\r\n        this.virtualScrollViewport.checkViewportSize();\r\n      }\r\n    });\r\n    if (this.tableHeight && this.tableHeight !== 'auto') {\r\n      this.virtualBodyHeight = this.tableHeight;\r\n      return;\r\n    }\r\n\r\n    if (!this.maxHeight) {\r\n      this.virtualBodyHeight = null;\r\n      return;\r\n    }\r\n\r\n    if (this.tableBodyEl) {\r\n      const tableHeader = this.tableBodyEl.nativeElement.querySelector('thead');\r\n      const tableHeaderHeight = tableHeader?.offsetHeight + SCROLL_BAR_WIDTH || 0;\r\n      const curTotalHeight = this.dataSource.length * this.virtualItemSize + tableHeaderHeight + SCROLL_BAR_WIDTH;\r\n      this.virtualBodyHeight = curTotalHeight < parseInt(this.maxHeight, 10) ? curTotalHeight + 'px' : this.maxHeight;\r\n      return;\r\n    }\r\n  }\r\n\r\n  private getColumns() {\r\n    const cols = this.columns.filter((column) => {\r\n      return !this.hideColumn.some((field) => column.field === field);\r\n      });\r\n    cols.sort((first, second) => first.order - second.order);\r\n    return cols;\r\n  }\r\n\r\n  // life hook start\r\n  ngOnInit() {\r\n    this.ngZone.runOutsideAngular(() => {\r\n      this.document.addEventListener('click', this.onDocumentClickListen);\r\n    });\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { checkable, showExpandToggle, tableHeight, maxHeight, virtualScroll } = changes;\r\n    if (checkable) {\r\n      const checkColIndex = this.tableWidthConfig.findIndex((config) => {\r\n        return config.field === 'checkbox';\r\n      });\r\n      if (this.checkable) {\r\n        if (checkColIndex < 0) {\r\n          if (this.showExpandToggle) {\r\n            this.tableWidthConfig.splice(1, 0, { field: 'checkbox', width: this.BUILTIN_COL_WIDTH });\r\n          } else {\r\n            this.tableWidthConfig.unshift({ field: 'checkbox', width: this.BUILTIN_COL_WIDTH });\r\n          }\r\n        }\r\n      } else {\r\n        if (checkColIndex > -1) {\r\n          this.tableWidthConfig.splice(checkColIndex, 1);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (showExpandToggle) {\r\n      const expandColIndex = this.tableWidthConfig.findIndex((config) => {\r\n        return config.field === 'expand';\r\n      });\r\n      if (this.showExpandToggle) {\r\n        if (expandColIndex < 0) {\r\n          this.tableWidthConfig.unshift({ field: 'expand', width: this.BUILTIN_COL_WIDTH });\r\n        }\r\n      } else {\r\n        if (expandColIndex > -1) {\r\n          this.tableWidthConfig.splice(expandColIndex, 1);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (\r\n      this.virtualScroll &&\r\n      ((tableHeight && !tableHeight.firstChange) || (maxHeight && !maxHeight.firstChange) || (virtualScroll && !virtualScroll.firstChange))\r\n    ) {\r\n      this.initVirtualBodyHeight();\r\n    }\r\n  }\r\n\r\n  onDocumentClick($event: Event) {\r\n    this.documentClickEvent.emit($event);\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    if (this.columns.length > 0) {\r\n      this.updateColumns();\r\n      this.columns.forEach((col) => {\r\n        col.orderChange.subscribe(() => {\r\n          this.updateColumns();\r\n        });\r\n        col.widthChange.subscribe(() => {\r\n          this.updateColumns();\r\n        });\r\n      });\r\n    }\r\n\r\n    if (this.innerHeader) {\r\n      this.headerCheckStatusSubscription = this.innerHeader.headerCheckStatusEvent.subscribe((status) => {\r\n        this.onCheckAllChange(status);\r\n      });\r\n      this.headertoggleTableSubscription = this.innerHeader.headerChildrenTableToggleEvent.subscribe((status) => {\r\n        this.onToggleAllChildrenTable(status);\r\n      });\r\n    } else {\r\n      this.columns.changes.subscribe(() => {\r\n        this.updateColumns();\r\n      });\r\n    }\r\n\r\n    setTimeout(() => {\r\n      this.initScrollStatus();\r\n    });\r\n  }\r\n\r\n  public initScrollStatus() {\r\n    if (this.tableOverflowType !== 'overlay') {\r\n      return;\r\n    }\r\n    const ele = this.virtualScroll ? this.virtualScrollViewport?.elementRef?.nativeElement : this.normalScrollElement?.nativeElement;\r\n    this.hasWidthScroll = ele && ele.scrollWidth > ele.clientWidth;\r\n    this.hasHeightScroll = ele && ele.scrollHeight > ele.clientHeight;\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.thList.forEach((th) => {\r\n      th.tableViewRefElement = this.tableViewRefElement;\r\n    });\r\n    this.thList.changes.subscribe((list) => {\r\n      list.forEach((th) => {\r\n        th.tableViewRefElement = this.tableViewRefElement;\r\n      });\r\n    });\r\n    if (this.onlyOneColumnSort) {\r\n      this.resetThSortOrder();\r\n    }\r\n    setTimeout(() => {\r\n      this.initScrollClass();\r\n    });\r\n  }\r\n\r\n  // 初始化时判断是否存在横向滚动，并加上相应类名\r\n  initScrollClass() {\r\n    const ele = this.normalScrollElement?.nativeElement || this.vitualScrollElement?.elementRef?.nativeElement;\r\n    if (ele.clientWidth !== ele.scrollWidth) {\r\n      this.setScrollViewClass('left');\r\n    }\r\n  }\r\n\r\n  private resetThSortOrder() {\r\n    merge(...this.thList?.map((th) => th.sortChange))\r\n      .pipe(takeUntil(this.thList.changes))\r\n      .subscribe((sortEvent: SortEventArg) => {\r\n        this.thList.filter((th) => th !== sortEvent.th).forEach((th) => th.clearSortOrder());\r\n    });\r\n\r\n    this.thList.changes.pipe(switchMap(() => merge(...this.thList.map((th) => th.sortChange)))).subscribe((sortEvent: SortEventArg) => {\r\n      this.thList.filter((th) => th !== sortEvent.th).forEach((th) => th.clearSortOrder());\r\n    });\r\n  }\r\n\r\n  public updateColumns() {\r\n    this._columns = this.getColumns();\r\n    this.tableWidthConfig = [];\r\n    if (this.showExpandToggle) {\r\n      this.tableWidthConfig.push({ field: 'expand', width: this.BUILTIN_COL_WIDTH });\r\n    }\r\n    if (this.checkable) {\r\n      if (this.checkOptions && this.checkOptions.length > 0) {\r\n        this.tableWidthConfig.push({ field: 'checkbox', width: this.BUILTIN_COL_WIDTH_EXTRA });\r\n      } else {\r\n        this.tableWidthConfig.push({ field: 'checkbox', width: this.BUILTIN_COL_WIDTH });\r\n      }\r\n    }\r\n\r\n    this._columns.forEach((col) => {\r\n      this.tableWidthConfig.push({ field: col.field, width: col.width });\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unSubscription();\r\n    this.document.removeEventListener('click', this.onDocumentClickListen);\r\n  }\r\n\r\n  onHandleSort(column: SortEventArg) {\r\n    if (this.multiSort && this.multiSort.length > 0) {\r\n      const multiSortIndex = this.multiSort.findIndex((item) => item.field === column.field);\r\n      if (multiSortIndex !== -1) {\r\n        this.multiSort.splice(multiSortIndex, 1);\r\n      }\r\n\r\n      if (column.direction === '') {\r\n        this.multiSortChange.emit(this.multiSort);\r\n        return;\r\n      }\r\n\r\n      if (!this.onlyOneColumnSort) {\r\n        this.multiSort.push(column);\r\n      } else {\r\n        this.multiSort = [column];\r\n      }\r\n    } else {\r\n      this.multiSort = [column];\r\n    }\r\n    this.multiSortChange.emit(this.multiSort);\r\n  }\r\n\r\n  onCellClick($event: CellSelectedEventArg) {\r\n    this.selectedRowItem = $event.rowItem;\r\n    this.selectedColumnItem = $event.column;\r\n    this.ngZone.run(() => {\r\n      this.cellClick.emit($event);\r\n    });\r\n  }\r\n\r\n  onCellEditStart($event: CellSelectedEventArg) {\r\n    this.isCellEdit = true;\r\n    this.cellEditStart.emit($event);\r\n  }\r\n\r\n  onCellEditEnd($event: CellSelectedEventArg) {\r\n    this.isCellEdit = false;\r\n    this.cellEditEnd.emit($event);\r\n  }\r\n\r\n  onCellDBClick($event: CellSelectedEventArg) {\r\n    this.ngZone.run(() => {\r\n      this.cellDBClick.emit($event);\r\n    });\r\n  }\r\n\r\n  onRowClick($event: RowSelectedEventArg) {\r\n    this.selectedRowItem = $event.rowItem;\r\n    this.ngZone.run(() => {\r\n      this.rowClick.emit($event);\r\n    });\r\n  }\r\n\r\n  onRowDBClick($event: RowSelectedEventArg) {\r\n    this.ngZone.run(() => {\r\n      this.rowDBClick.emit($event);\r\n    });\r\n  }\r\n\r\n  onDetailToggle($event: any) {\r\n    this.detialToggle.emit($event);\r\n  }\r\n\r\n  // 判断数据是否存在选中状态\r\n  private hasChecked = (data) => {\r\n    if (data.$checked) {\r\n      return true;\r\n    }\r\n    if (data.children) {\r\n      return data.children.some(this.hasChecked);\r\n    }\r\n  };\r\n\r\n  // 判断数据是否存在未选中状态\r\n  private hasUnChecked = (data) => {\r\n    if (!data.$checked) {\r\n      return true;\r\n    }\r\n    if (data.children) {\r\n      return data.children.some(this.hasUnChecked);\r\n    }\r\n  };\r\n\r\n  setRowCheckStatus($event: RowCheckChangeEventArg) {\r\n    // 处理children的选中\r\n    if ($event.rowItem.children && this.checkableRelation.downward) {\r\n      this.setCheckedStatus($event.rowItem.children, $event.checked);\r\n    }\r\n\r\n    // 处理parents的选中\r\n    if (this.checkableRelation.upward) {\r\n      const nestedIndexArray = $event.nestedIndex.split(',');\r\n      nestedIndexArray.shift();\r\n      const nestedIndexArrayToInt = nestedIndexArray.map((value) => {\r\n        return parseInt(value, 10);\r\n      });\r\n      // 通过选中行的父级索引设置父的选中状态\r\n      this.setParentCheckStatus(nestedIndexArrayToInt);\r\n    }\r\n\r\n    // 处理整个table header的选中\r\n    const hasChecked = this.dataSource.some(this.hasChecked);\r\n    if ($event) {\r\n      const hasUnChecked = this.dataSource.some(this.hasUnChecked);\r\n      this._pageAllChecked = !hasUnChecked;\r\n      this.halfChecked = hasChecked && hasUnChecked;\r\n    } else {\r\n      this._pageAllChecked = false;\r\n      this.halfChecked = hasChecked;\r\n    }\r\n\r\n    if (this.innerHeader) {\r\n      this.innerHeader.setHeaderCheckStatus({ pageAllChecked: this._pageAllChecked, pageHalfChecked: this.halfChecked });\r\n    }\r\n    this.rowCheckChange.emit($event);\r\n  }\r\n\r\n  private setParentCheckStatus(nestedIndex) {\r\n    if (nestedIndex.length > 0) {\r\n      const topIndex = nestedIndex[0];\r\n      const topParent = this.dataSource[topIndex];\r\n      const argNestedIndex = [...nestedIndex];\r\n      argNestedIndex.shift();\r\n      const lastParent = this.findLastParent(topParent, argNestedIndex);\r\n      this.setSelfCheckStatus(lastParent);\r\n\r\n      nestedIndex.pop();\r\n      if (nestedIndex.length > 0) {\r\n        this.setParentCheckStatus(nestedIndex);\r\n      }\r\n    }\r\n  }\r\n\r\n  private findLastParent(source, indexArray) {\r\n    if (source && indexArray.length > 0) {\r\n      const topIndex = indexArray[0];\r\n      const topParent = source.children[topIndex];\r\n      indexArray.shift();\r\n      return this.findLastParent(topParent, indexArray);\r\n    } else {\r\n      return source;\r\n    }\r\n  }\r\n\r\n  private setSelfCheckStatus(data) {\r\n    if (data && data.children) {\r\n      const hasUnChecked = data.children.some((child) => {\r\n        return !child.$checked;\r\n      });\r\n\r\n      const hasChecked = data.children.some((child) => {\r\n        return child.$checked || child.$halfChecked;\r\n      });\r\n\r\n      data.$checked = !hasUnChecked;\r\n      data.$halfChecked = hasUnChecked && hasChecked;\r\n    }\r\n  }\r\n\r\n  private setCheckedStatus(data, checked, toggle?: boolean) {\r\n    return data.map((item) => {\r\n      if (!(item.$checkDisabled || item.$disabled)) {\r\n        if ((toggle && item.$checked === undefined) || !toggle) {\r\n          item.$checked = checked;\r\n          item.$halfChecked = false;\r\n        }\r\n      }\r\n\r\n      if (item.children) {\r\n        item.children = this.setCheckedStatus(item.children, checked, toggle);\r\n      }\r\n      return item;\r\n    });\r\n  }\r\n\r\n  onCheckAllChange($event: boolean) {\r\n    this.pageAllChecked = $event;\r\n    this.checkAllChange.emit($event);\r\n  }\r\n\r\n  onSearchQueryChange($event: { [key: string]: any }) {\r\n    this.searchQueryChange.emit($event);\r\n  }\r\n\r\n  getSelectedRowItem(): any[] {\r\n    return this.selectedRowItem;\r\n  }\r\n\r\n  onLoadMore(event) {\r\n    this.loadMore.emit(this);\r\n  }\r\n\r\n  private updateColumnsWidth() {\r\n    this.tableWidthConfig = [];\r\n    if (this.showExpandToggle) {\r\n      const expandWidth = this.elementRef.nativeElement.querySelector('.devui-detail-cell').clientWidth;\r\n      this.tableWidthConfig.push({ field: 'expand', width: expandWidth + 'px' });\r\n    }\r\n    if (this.checkable) {\r\n      const list = this.elementRef.nativeElement.querySelectorAll('.devui-checkable-cell');\r\n      const checkboxWidth = list[list.length - 1].clientWidth;\r\n      this.tableWidthConfig.push({ field: 'checkbox', width: checkboxWidth + 'px' });\r\n    }\r\n    this._columns.forEach((col) => {\r\n      this.tableWidthConfig.push({ field: col.field, width: col.width });\r\n    });\r\n  }\r\n\r\n  beginResizeHandlerEvent($event) {\r\n    const thRenderWidthList = $event.thRenderWidthList;\r\n    if (thRenderWidthList.length > 0) {\r\n      this._tableTotalWidth = this.elementRef.nativeElement.querySelector('.table-wrap').offsetWidth - 8;\r\n      // 兼容d-column表头分组场景\r\n      const reverseThList = thRenderWidthList.reverse();\r\n      this._columns.forEach((column) => {\r\n        const thItem = reverseThList.find((th) => th.field === column.field);\r\n        if (thItem) {\r\n          column.width = thItem.width + 'px';\r\n        }\r\n      });\r\n\r\n      if (!this._lastColSize) {\r\n        this._lastColSize = parseInt(this._columns.slice(-1)[0].width, 10);\r\n      }\r\n      this.updateColumnsWidth();\r\n    }\r\n    this.onDocumentClick($event.event);\r\n  }\r\n\r\n  onResizingFixedHandler({ field, width }) {\r\n    if (this.resizeable) {\r\n      const index = this.tableWidthConfig.findIndex((config) => {\r\n        return config.field === field;\r\n      });\r\n      if (index > -1) {\r\n        setTimeout(() => {\r\n          this.tableWidthConfig[index].width = width + 'px';\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  onResizeHandler({ width, field }) {\r\n    if (width < 0) {\r\n      return;\r\n    }\r\n    const index = this.tableWidthConfig.findIndex((config) => {\r\n      return config.field === field;\r\n    });\r\n    if (index > -1) {\r\n      this.tableWidthConfig[index].width = width + 'px';\r\n    }\r\n    const curTotal = this.tableWidthConfig.reduce((pre, cur) => {\r\n      const value = pre + parseInt(cur.width, 10);\r\n      return value;\r\n    }, 0);\r\n    let columnResizeEventArg;\r\n    this._columns = this._columns.map((column, colIndex) => {\r\n      if (column.field === field) {\r\n        column.width = parseInt(width, 10) + 'px';\r\n        columnResizeEventArg = { currentColumn: column, nextColumn: this._columns[colIndex + 1] };\r\n        this.resize.emit(columnResizeEventArg);\r\n      }\r\n      return column;\r\n    });\r\n\r\n    const changeSize = curTotal - this._tableTotalWidth;\r\n    const lastCol = this._columns.slice(-1)[0];\r\n    const lastColWidth = parseInt(lastCol.width, 10);\r\n    if (changeSize < 0 && columnResizeEventArg.nextColumn) {\r\n      const newSize = parseInt(lastCol.width) - changeSize + 'px';\r\n      lastCol.width = newSize;\r\n      this.tableWidthConfig[this.tableWidthConfig.length - 1].width = newSize;\r\n    } else if (this._lastColSize < lastColWidth) {\r\n      const lastChange = lastColWidth - this._lastColSize > changeSize ? changeSize : lastColWidth - this._lastColSize;\r\n      lastCol.width = lastColWidth - lastChange + 'px';\r\n      this.tableWidthConfig[this.tableWidthConfig.length - 1].width = lastColWidth - lastChange + 'px';\r\n    }\r\n  }\r\n\r\n  handleDragTable({ from, to }) {\r\n    this.columnDragEnd.emit({ from, to });\r\n    const sortArray = (array, fromE, toE) => {\r\n      if (fromE < toE) {\r\n        const fromEData = array[fromE];\r\n        for (let i = 0; i < array.length; i++) {\r\n          if (i >= fromE && i < toE) {\r\n            this.ngZone.run(() => {\r\n              array[i] = array[i + 1];\r\n            });\r\n          }\r\n        }\r\n        this.ngZone.run(() => {\r\n          array[toE] = fromEData;\r\n        });\r\n      }\r\n\r\n      if (fromE > toE) {\r\n        const fromEData = array[fromE];\r\n        for (let i = array.length; i > 0; i--) {\r\n          if (i <= fromE && i > toE) {\r\n            array[i] = array[i - 1];\r\n          }\r\n        }\r\n        array[toE] = fromEData;\r\n      }\r\n    };\r\n    sortArray(this._columns, from, to);\r\n    this._columns.forEach((item, index) => {\r\n      item.order = index;\r\n    });\r\n  }\r\n\r\n  onBodyScroll(event?: Event) {\r\n    const target = <HTMLElement>event?.target\r\n      || this.normalScrollElement?.nativeElement\r\n      || this.virtualScrollViewport?.elementRef.nativeElement;\r\n\r\n    if (this.isCellEdit) {\r\n      // Y轴滚动距离超过tr高度时取消目前编辑状态\r\n      if (this.scrollY === 0) {\r\n        this.scrollY = target.scrollTop;\r\n      }\r\n      const offset = target.scrollTop - this.scrollY;\r\n      if (offset > 40 || offset < -40) {\r\n        this.cancelEditingStatus();\r\n        this.scrollY = 0;\r\n      }\r\n    }\r\n\r\n    const scrollLeft = target.scrollLeft;\r\n    if (scrollLeft === 0) {\r\n      if (target.clientWidth === target.scrollWidth) {\r\n        this.setScrollViewClass('none');\r\n      } else {\r\n        this.setScrollViewClass('left');\r\n      }\r\n    } else if (Math.abs(scrollLeft + target.clientWidth - target.scrollWidth) < 1) {\r\n      this.setScrollViewClass('right');\r\n    } else {\r\n      this.setScrollViewClass('middle');\r\n    }\r\n\r\n    if (this.fixHeader) {\r\n      (<HTMLElement>this.fixHeaderContainerRefElement.nativeElement).scrollLeft = scrollLeft;\r\n    }\r\n\r\n    this.tableScrollEvent.emit(event);\r\n  }\r\n\r\n  private setScrollViewClass(position: string) {\r\n    const element = this.tableViewRefElement.nativeElement;\r\n    const className = 'devui-table-scroll-' + position;\r\n    const elClassList = element.classList;\r\n    if (!elClassList.contains(className)) {\r\n      for (let index = 0; index < elClassList.length; index++) {\r\n        const clName = elClassList[index];\r\n        if (clName.startsWith('devui-table-scroll-')) {\r\n          this.renderer.removeClass(element, clName);\r\n        }\r\n      }\r\n      this.renderer.addClass(element, className);\r\n    }\r\n  }\r\n\r\n  private unSubscription() {\r\n    if (this.headerCheckStatusSubscription) {\r\n      this.headerCheckStatusSubscription.unsubscribe();\r\n      this.headerCheckStatusSubscription = null;\r\n    }\r\n\r\n    if (this.headertoggleTableSubscription) {\r\n      this.headertoggleTableSubscription.unsubscribe();\r\n      this.headertoggleTableSubscription = null;\r\n    }\r\n  }\r\n\r\n  setRowChildToggleStatus(rowItem: any, open: boolean) {\r\n    if (open) {\r\n      let loadChildrenResult = Promise.resolve(true);\r\n      if (this.loadChildrenTable) {\r\n        loadChildrenResult = this.loadChildrenTable(rowItem);\r\n      }\r\n      loadChildrenResult.then(() => {\r\n        // 异步加载子表格是检查选中状态\r\n        if (rowItem.$checked && this.checkableRelation.downward) {\r\n          this.setCheckedStatus(rowItem.children, rowItem.$checked, true);\r\n        }\r\n      });\r\n    } else {\r\n      this.childrenTableClose.emit(rowItem);\r\n    }\r\n  }\r\n\r\n  setTableChildrenToggleStatus(open: boolean) {\r\n    this.onToggleAllChildrenTable(open);\r\n    if (this.innerHeader) {\r\n      this.innerHeader.setHeaderToggleStatus(open);\r\n    } else {\r\n      this.childrenTableOpen = open;\r\n    }\r\n  }\r\n\r\n  private travelChildrenToggleStatus(data, open: boolean) {\r\n    return data.map((item) => {\r\n      if (item.children) {\r\n        item.$isChildTableOpen = open;\r\n        item.children = this.travelChildrenToggleStatus(item.children, open);\r\n      }\r\n      return item;\r\n    });\r\n  }\r\n\r\n  // 切换表头的子表格展开收起\r\n  onToggleAllChildrenTable(open: boolean) {\r\n    this.childrenTableOpen = open;\r\n    if (open) {\r\n      let loadAllChildrenResult = Promise.resolve(true);\r\n      if (this.loadAllChildrenTable) {\r\n        loadAllChildrenResult = this.loadAllChildrenTable();\r\n      }\r\n      loadAllChildrenResult.then(() => {\r\n        this.dataSource.forEach((item) => {\r\n          if (item.$checked && item.children) {\r\n            this.setCheckedStatus(item.children, true, true);\r\n          }\r\n        });\r\n        this.travelChildrenToggleStatus(this.dataSource, open);\r\n      });\r\n    } else {\r\n      this.travelChildrenToggleStatus(this.dataSource, open);\r\n      this.allChildrenTableClose.emit();\r\n    }\r\n  }\r\n\r\n  cancelEditingStatus() {\r\n    this.documentClickEvent.emit('cancel');\r\n  }\r\n\r\n  private collectCheckedRows(dist: Array<any>, source: Array<any>) {\r\n    source.forEach((row) => {\r\n      if (row.$checked) {\r\n        dist.push(row);\r\n      }\r\n      if (row.children) {\r\n        this.collectCheckedRows(dist, row.children);\r\n      }\r\n    });\r\n  }\r\n\r\n  getCheckedRows() {\r\n    if (this.checkableRelation.upward) {\r\n      // 如果children的选中状态关联parent的选中状态,只需返回最外层的数据\r\n      return this.dataSource ? this.dataSource.filter((item) => item.$checked || item.$halfChecked) : [];\r\n    } else {\r\n      // 如果children的选中状态不关联parent的选中状态,遍历dataSource,将所有的选中行平级返回\r\n      const checkedRows = [];\r\n      this.collectCheckedRows(checkedRows, this.dataSource);\r\n      return checkedRows;\r\n    }\r\n  }\r\n\r\n  setTableCheckStatus(status: TableCheckStatusArg) {\r\n    if (status.pageAllChecked !== undefined) {\r\n      // 设置全选\r\n      if (this.dataSource) {\r\n        this._dataSource = this.setCheckedStatus(this.dataSource, status.pageAllChecked);\r\n      }\r\n      this._pageAllChecked = status.pageAllChecked;\r\n      if (status.pageAllChecked) {\r\n        // 全选为true\r\n        this.halfChecked = false;\r\n      } else {\r\n        this.halfChecked = this.dataSource.some(this.hasChecked) && this.dataSource.some(this.hasUnChecked);\r\n      }\r\n    }\r\n\r\n    if (status.pageHalfChecked !== undefined) {\r\n      // 设置半选\r\n      this.halfChecked = status.pageHalfChecked;\r\n    }\r\n\r\n    if (this.innerHeader) {\r\n      this.innerHeader.setHeaderCheckStatus({ pageAllChecked: this._pageAllChecked, pageHalfChecked: this.halfChecked });\r\n    }\r\n  }\r\n\r\n  // 更新cdk虚拟滚动viewport size并重新渲染，解决父层高度变化渲染数据size没有更新问题\r\n  updateVirtualScrollSize() {\r\n    this.virtualScrollViewport.checkViewportSize();\r\n  }\r\n}\r\n","<div class=\"devui-data-table {{ cssClass }}\">\r\n  <div\r\n    class=\"devui-table-view {{ containFixHeaderHeight ? 'contain-fix-height' : '' }}\"\r\n    [ngClass]=\"{\r\n      'has-width-scroll': hasWidthScroll,\r\n      'has-height-scroll': hasHeightScroll\r\n    }\"\r\n    #tableView\r\n  >\r\n    <div\r\n      *ngIf=\"fixHeader\"\r\n      #fixHeaderContainerRef\r\n      class=\"table-wrap devui-fix-header\"\r\n      [ngClass]=\"{\r\n        'shadow-fix-header': headerBg\r\n      }\"\r\n      [style.overflow-x]=\"dataSource?.length ? 'hidden' : 'auto'\"\r\n      [style.overflow-y]=\"dataSource?.length ? 'scroll' : 'hidden'\"\r\n      [style.max-height]=\"maxHeight ? maxHeight : null\"\r\n      [style.max-width]=\"maxWidth ? maxWidth : null\"\r\n      [style.width]=\"!maxWidth ? tableWidth : null\"\r\n    >\r\n      <table\r\n        class=\"devui-table devui-table-{{ size }} {{ borderType ? 'table-' + borderType : '' }} {{ fixHeader ? 'table-fix-header' : '' }} {{\r\n          headerBg ? 'header-bg' : ''\r\n        }} {{ striped ? 'table-striped' : '' }}\"\r\n        [ngClass]=\"{ 'area-active': showOperationArea }\"\r\n        [style.table-layout]=\"tableLayout\"\r\n      >\r\n        <colgroup>\r\n          <col *ngFor=\"let config of tableWidthConfig\" [style.width]=\"config.width\" />\r\n        </colgroup>\r\n        <ng-container *ngTemplateOutlet=\"HeaderContent\"></ng-container>\r\n        <ng-template *ngIf=\"!innerHeader\" [ngTemplateOutlet]=\"headerTpl\"></ng-template>\r\n      </table>\r\n    </div>\r\n\r\n    <div\r\n      #normalScroll\r\n      cdkScrollable\r\n      dLazyLoad\r\n      [enableLazyLoad]=\"lazy\"\r\n      (loadMore)=\"onLoadMore($event)\"\r\n      *ngIf=\"!virtualScroll; else scrollViewTpl\"\r\n      class=\"devui-scrollbar\"\r\n      [style.overflow-x]=\"dataSource?.length || !fixHeader ? 'auto' : 'hidden'\"\r\n      [ngClass]=\"{\r\n        'scroll-view': scrollable,\r\n        'overflow-overlay': tableOverflowType === 'overlay',\r\n        'table-wrap': !fixHeader\r\n      }\"\r\n      [style.height]=\"tableHeight ? tableHeight : null\"\r\n      [style.max-height]=\"maxHeight ? maxHeight : null\"\r\n      [style.max-width]=\"maxWidth ? maxWidth : null\"\r\n      [style.width]=\"!maxWidth ? tableWidth : null\"\r\n      (scroll)=\"onBodyScroll($event)\"\r\n    >\r\n      <table\r\n        #tableBody\r\n        class=\"devui-table devui-table-{{ size }} {{ borderType ? 'table-' + borderType : '' }} {{\r\n          rowHoveredHighlight ? 'table-hover' : ''\r\n        }} {{ headerBg ? 'header-bg' : '' }} {{ striped ? 'table-striped' : '' }}\"\r\n        [ngClass]=\"{ 'area-active': showOperationArea }\"\r\n        [style.table-layout]=\"tableLayout\"\r\n        [style.height]=\"minHeight ? minHeight : null\"\r\n        [style.position]=\"tableOverflowType === 'overlay' ? null : 'relative'\"\r\n      >\r\n        <colgroup>\r\n          <col *ngFor=\"let config of tableWidthConfig\" [style.width]=\"config.width\" />\r\n        </colgroup>\r\n        <ng-container *ngIf=\"!fixHeader\">\r\n          <ng-container *ngTemplateOutlet=\"HeaderContent\"></ng-container>\r\n          <ng-template *ngIf=\"!innerHeader\" [ngTemplateOutlet]=\"headerTpl\"></ng-template>\r\n        </ng-container>\r\n        <tbody\r\n          dTableBody\r\n          dSortable\r\n          *ngIf=\"innerBody\"\r\n          [dataSource]=\"dataSource\"\r\n          [tableWidthConfig]=\"tableWidthConfig\"\r\n          [rowTemplete]=\"innerBody.rowTempleteForSelect\"\r\n          [minHeight]=\"minHeight\"\r\n          [minHeightStretchRow]=\"innerBody.minHeightStretchRow\"\r\n        ></tbody>\r\n        <tbody\r\n          *ngIf=\"!innerBody\"\r\n          dDataTableBody\r\n          #devuiNormalScrollBody\r\n          [dataSource]=\"dataSource\"\r\n          [resizeable]=\"resizeable\"\r\n          [columns]=\"_columns\"\r\n          [checkable]=\"checkable\"\r\n          [allChecked]=\"_pageAllChecked\"\r\n          [selectable]=\"selectable\"\r\n          [editModel]=\"editModel\"\r\n          [editRowItem]=\"editRowItem\"\r\n          [showExpandToggle]=\"showExpandToggle\"\r\n          [detailTemplateRef]=\"detailTemplateRef\"\r\n          [timeout]=\"timeout\"\r\n          [type]=\"type\"\r\n          [rowHoveredHighlight]=\"rowHoveredHighlight\"\r\n          [tableLevel]=\"tableLevel\"\r\n          [tableWidthConfig]=\"tableWidthConfig\"\r\n          [headerExpandConfig]=\"headerExpandConfig\"\r\n          [generalRowHoveredData]=\"generalRowHoveredData\"\r\n        ></tbody>\r\n      </table>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<div\r\n  class=\"devui-no-result-wrapper\"\r\n  [ngClass]=\"{ 'overlay-table-no-result': tableOverflowType === 'overlay' || !scrollable }\"\r\n  *ngIf=\"!dataSource?.length && noResultTemplate != null\"\r\n>\r\n  <ng-template [ngTemplateOutlet]=\"noResultTemplate\" [ngTemplateOutletContext]=\"{ $implicit: this }\"></ng-template>\r\n</div>\r\n\r\n<ng-template #scrollViewTpl>\r\n  <cdk-virtual-scroll-viewport\r\n    #cdkVirtualScrollViewport\r\n    dLazyLoad\r\n    [enableLazyLoad]=\"lazy\"\r\n    (loadMore)=\"onLoadMore($event)\"\r\n    [itemSize]=\"virtualItemSize\"\r\n    [minBufferPx]=\"virtualMinBufferPx\"\r\n    [maxBufferPx]=\"virtualMaxBufferPx\"\r\n    class=\"devui-scrollbar viewport-wrapper\"\r\n    [ngClass]=\"{\r\n      'scroll-view': scrollable,\r\n      'overflow-overlay': tableOverflowType === 'overlay',\r\n      'virtual-scroll-wrap': !fixHeader\r\n    }\"\r\n    [style.height]=\"virtualBodyHeight\"\r\n    [style.max-height]=\"maxHeight ? maxHeight : null\"\r\n    [style.max-width]=\"maxWidth ? maxWidth : null\"\r\n    [style.width]=\"!maxWidth ? tableWidth : null\"\r\n    (scroll)=\"onBodyScroll($event)\"\r\n  >\r\n    <table\r\n      #tableBody\r\n      class=\"devui-table devui-table-{{ size }} {{ borderType ? 'table-' + borderType : '' }} {{\r\n        rowHoveredHighlight ? 'table-hover' : ''\r\n      }} {{ headerBg ? 'header-bg' : '' }} {{ striped ? 'table-striped' : '' }}\"\r\n      [ngClass]=\"{ 'area-active': showOperationArea }\"\r\n      [style.table-layout]=\"tableLayout\"\r\n      [style.height]=\"minHeight ? minHeight : null\"\r\n    >\r\n      <colgroup>\r\n        <col *ngFor=\"let config of tableWidthConfig\" [style.width]=\"config.width\" />\r\n      </colgroup>\r\n      <ng-container *ngIf=\"!fixHeader\">\r\n        <ng-container *ngTemplateOutlet=\"HeaderContent\"></ng-container>\r\n        <ng-template *ngIf=\"!innerHeader\" [ngTemplateOutlet]=\"headerTpl\"></ng-template>\r\n      </ng-container>\r\n      <tbody\r\n        dTableBody\r\n        dSortable\r\n        *ngIf=\"innerBody\"\r\n        [dataSource]=\"dataSource\"\r\n        [tableWidthConfig]=\"tableWidthConfig\"\r\n        [virtualScroll]=\"virtualScroll\"\r\n        [rowTemplete]=\"innerBody.rowTempleteForSelect\"\r\n        [minHeight]=\"minHeight\"\r\n        [minHeightStretchRow]=\"innerBody.minHeightStretchRow\"\r\n      ></tbody>\r\n      <tbody\r\n        *ngIf=\"!innerBody\"\r\n        dDataTableBody\r\n        [dataSource]=\"dataSource\"\r\n        [resizeable]=\"resizeable\"\r\n        [columns]=\"_columns\"\r\n        [checkable]=\"checkable\"\r\n        [allChecked]=\"_pageAllChecked\"\r\n        [selectable]=\"selectable\"\r\n        [editModel]=\"editModel\"\r\n        [editRowItem]=\"editRowItem\"\r\n        [showExpandToggle]=\"showExpandToggle\"\r\n        [detailTemplateRef]=\"detailTemplateRef\"\r\n        [timeout]=\"timeout\"\r\n        [type]=\"type\"\r\n        [rowHoveredHighlight]=\"rowHoveredHighlight\"\r\n        [tableLevel]=\"tableLevel\"\r\n        [virtualScroll]=\"virtualScroll\"\r\n        [tableWidthConfig]=\"tableWidthConfig\"\r\n        [headerExpandConfig]=\"headerExpandConfig\"\r\n        [generalRowHoveredData]=\"generalRowHoveredData\"\r\n      ></tbody>\r\n    </table>\r\n  </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<ng-template #headerTpl>\r\n  <thead\r\n    dDataTableHead\r\n    [resizeable]=\"resizeable\"\r\n    [checkOptionsIndex]=\"checkOptionsIndex\"\r\n    [tableViewRefElement]=\"tableViewRefElement\"\r\n    [tableBodyEl]=\"tableBodyEl\"\r\n    [multiSort]=\"multiSort\"\r\n    [columns]=\"_columns\"\r\n    [pageAllChecked]=\"_pageAllChecked\"\r\n    [checkable]=\"checkable\"\r\n    [checkOptions]=\"checkOptions\"\r\n    [selectOptionOnCheckbox]=\"selectOptionOnCheckbox\"\r\n    [headerCheckDisabled]=\"headerCheckDisabled\"\r\n    [headerCheckVisible]=\"headerCheckVisible\"\r\n    [showExpandToggle]=\"showExpandToggle\"\r\n    [showSortIcon]=\"showSortIcon\"\r\n    [showFilterIcon]=\"showFilterIcon\"\r\n    (resizeHandlerEvent)=\"onResizeHandler($event)\"\r\n    (headClickSortEvent)=\"onHandleSort($event)\"\r\n    [halfChecked]=\"halfChecked\"\r\n    [maxHeight]=\"maxHeight\"\r\n    (beginResizeHandlerEvent)=\"beginResizeHandlerEvent($event)\"\r\n    (resizingHandlerEvent)=\"onResizingFixedHandler($event)\"\r\n    [fixHeader]=\"fixHeader\"\r\n    (dragTableEndEvent)=\"handleDragTable($event)\"\r\n    [dataSource]=\"dataSource\"\r\n    [colDropFreezeTo]=\"colDropFreezeTo\"\r\n    [colDraggable]=\"colDraggable\"\r\n    [childrenTableOpen]=\"childrenTableOpen\"\r\n  ></thead>\r\n</ng-template>\r\n<ng-template #HeaderContent><ng-content select=\"thead\"></ng-content></ng-template>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { ColData } from './table-option-toggle.component';\r\n\r\n@Component({\r\n  selector: 'd-table-option-modal',\r\n  templateUrl: './table-option-modal.component.html',\r\n  styleUrls: ['./table-option-modal.component.scss', './table-option-toggle.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TableOptionModalComponent implements OnInit {\r\n  @Input() data: any;\r\n\r\n  get showStyleSetting() {\r\n    return !!Object.keys(this.data.styleSetting).length;\r\n  }\r\n\r\n  get selectedCols() {\r\n    return this._columnsData.filter((t) => t.checked);\r\n  }\r\n\r\n  _columnsData: Array<ColData> = [];\r\n  columnsCache: Array<ColData> = [];\r\n  _styleSetting: any = {};\r\n\r\n  filterKey = '';\r\n\r\n  allChecked = false;\r\n  halfCheck = false;\r\n\r\n  constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n  judgeNameFIlter(name: string) {\r\n    return name.toUpperCase().includes(this.filterKey.toUpperCase());\r\n  }\r\n\r\n  onCheckedChanges() {\r\n    this.allChecked = true;\r\n    this.halfCheck = false;\r\n    this.columnsCache.forEach((t) => {\r\n      if (!t.checked) {\r\n        this.allChecked = false;\r\n      }\r\n\r\n      if (t.checked) {\r\n        this.halfCheck = true;\r\n      }\r\n    });\r\n    this.halfCheck = this.halfCheck && !this.allChecked ? true : false;\r\n  }\r\n\r\n  onAllCheckChanges(checked: boolean) {\r\n    this.halfCheck = false;\r\n    this.allChecked = checked;\r\n    this.columnsCache.forEach((t) => {\r\n      if (t.disabled) {\r\n        return;\r\n      }\r\n      t.checked = checked;\r\n    });\r\n  }\r\n\r\n  onSearch(value: string) {\r\n    this.filterKey = value;\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._columnsData = this.data.columnsData;\r\n    this.columnsCache = [...this._columnsData];\r\n    this._styleSetting = this.data.styleSetting;\r\n    this.onCheckedChanges();\r\n  }\r\n\r\n  searchIndex(col) {\r\n    return this.data.columnsData.findIndex((t) => t.header === col?.header);\r\n  }\r\n\r\n  onDrop(e) {\r\n    let index = this.searchIndex(this.selectedCols[e.dropIndex]);\r\n    const fromIndex = this.searchIndex(this.selectedCols[e.dragFromIndex]);\r\n    if (-1 !== index) {\r\n      if (-1 !== fromIndex && index > fromIndex) {\r\n        index--;\r\n      }\r\n      this._columnsData.splice(index, 0, fromIndex === -1 ? e.dragData : this._columnsData.splice(fromIndex, 1)[0]);\r\n    } else {\r\n      this._columnsData.push(this._columnsData.splice(fromIndex, 1)[0]);\r\n    }\r\n  }\r\n\r\n  onCardActiveChanges(active: boolean, status: 'xs' | 'sm' | 'md') {\r\n    this._styleSetting.size = active ? status : 'none';\r\n  }\r\n\r\n  styleSettingChanges(checked, type: 'border' | 'striped' | 'shadow') {\r\n    switch (type) {\r\n    case 'border':\r\n      this._styleSetting.borderType = checked ? '' : 'borderless';\r\n      break;\r\n    case 'shadow':\r\n      this._styleSetting.shadowType = checked ? 'normal' : 'embed';\r\n      break;\r\n    case 'striped':\r\n      this._styleSetting.striped = checked;\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  close() {\r\n    this.data.onClose();\r\n  }\r\n\r\n  ensure() {\r\n    this.data.onEnsure(this._columnsData, this._styleSetting);\r\n  }\r\n}\r\n","<div class=\"devui-option-modal\">\n  <div class=\"devui-option-modal-body\">\n    <div class=\"devui-option-modal-selected-col\">\n      <p class=\"devui-option-title\">{{ data.i18nText?.tableSetting }}</p>\n      <d-search style=\"width: 100%\" [isKeyupSearch]=\"true\" (searchFn)=\"onSearch($event)\"></d-search>\n\n      <p class=\"devui-option-subtitle\" style=\"margin-top: 16px\">{{ data.i18nText?.colCanSelect }}</p>\n      <d-checkbox\n        *ngIf=\"!filterKey\"\n        [label]=\"'All Check'\"\n        [isShowTitle]=\"true\"\n        [ngModel]=\"allChecked\"\n        [halfchecked]=\"halfCheck\"\n        (ngModelChange)=\"onAllCheckChanges($event)\"\n      >\n      </d-checkbox>\n      <ng-container *ngFor=\"let data of columnsCache\">\n        <d-checkbox\n          *ngIf=\"judgeNameFIlter(data.header)\"\n          [label]=\"data.header\"\n          [isShowTitle]=\"true\"\n          [(ngModel)]=\"data.checked\"\n          [disabled]=\"data.disabled\"\n          (ngModelChange)=\"onCheckedChanges()\"\n        >\n        </d-checkbox>\n      </ng-container>\n    </div>\n\n    <div class=\"devui-option-modal-style\">\n      <div class=\"devui-option-panel\">\n        <div class=\"devui-option-panel-style-setting\" *ngIf=\"showStyleSetting\">\n          <div class=\"devui-option-panel-style-header\">\n            <p class=\"devui-option-subtitle\">{{ data.i18nText?.styles }}</p>\n            <div class=\"devui-option-size-wrapper\" *ngIf=\"data.styleSetting.size !== undefined\">\n              <div\n                class=\"devui-option-size-card\"\n                (click)=\"_styleSetting.size = 'xs'\"\n                [ngClass]=\"{ 'devui-option-item-active': _styleSetting.size === 'xs' }\"\n              >\n                <svg\n                  width=\"32px\"\n                  height=\"32px\"\n                  viewBox=\"0 0 32 32\"\n                  version=\"1.1\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                >\n                  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <path\n                      d=\"M3.2,11.6 C3.6418278,11.6 4,11.9581722 4,12.4 L4,13.2 C4,13.6418278 3.6418278,14 3.2,14 L2.4,14 C1.9581722,14 1.6,13.6418278 1.6,13.2 L1.6,12.4 C1.6,11.9581722 1.9581722,11.6 2.4,11.6 L3.2,11.6 Z M13.6,11.6 C14.0418278,11.6 14.4,11.9581722 14.4,12.4 L14.4,13.2 C14.4,13.6418278 14.0418278,14 13.6,14 L5.6,14 C5.1581722,14 4.8,13.6418278 4.8,13.2 L4.8,12.4 C4.8,11.9581722 5.1581722,11.6 5.6,11.6 L13.6,11.6 Z M3.2,8.4 C3.6418278,8.4 4,8.7581722 4,9.2 L4,10 C4,10.4418278 3.6418278,10.8 3.2,10.8 L2.4,10.8 C1.9581722,10.8 1.6,10.4418278 1.6,10 L1.6,9.2 C1.6,8.7581722 1.9581722,8.4 2.4,8.4 L3.2,8.4 Z M13.6,8.4 C14.0418278,8.4 14.4,8.7581722 14.4,9.2 L14.4,10 C14.4,10.4418278 14.0418278,10.8 13.6,10.8 L5.6,10.8 C5.1581722,10.8 4.8,10.4418278 4.8,10 L4.8,9.2 C4.8,8.7581722 5.1581722,8.4 5.6,8.4 L13.6,8.4 Z M3.2,5.2 C3.6418278,5.2 4,5.5581722 4,6 L4,6.8 C4,7.2418278 3.6418278,7.6 3.2,7.6 L2.4,7.6 C1.9581722,7.6 1.6,7.2418278 1.6,6.8 L1.6,6 C1.6,5.5581722 1.9581722,5.2 2.4,5.2 L3.2,5.2 Z M13.6,5.2 C14.0418278,5.2 14.4,5.5581722 14.4,6 L14.4,6.8 C14.4,7.2418278 14.0418278,7.6 13.6,7.6 L5.6,7.6 C5.1581722,7.6 4.8,7.2418278 4.8,6.8 L4.8,6 C4.8,5.5581722 5.1581722,5.2 5.6,5.2 L13.6,5.2 Z M3.2,2 C3.6418278,2 4,2.3581722 4,2.8 L4,3.6 C4,4.0418278 3.6418278,4.4 3.2,4.4 L2.4,4.4 C1.9581722,4.4 1.6,4.0418278 1.6,3.6 L1.6,2.8 C1.6,2.3581722 1.9581722,2 2.4,2 L3.2,2 Z M13.6,2 C14.0418278,2 14.4,2.3581722 14.4,2.8 L14.4,3.6 C14.4,4.0418278 14.0418278,4.4 13.6,4.4 L5.6,4.4 C5.1581722,4.4 4.8,4.0418278 4.8,3.6 L4.8,2.8 C4.8,2.3581722 5.1581722,2 5.6,2 L13.6,2 Z\"\n                      fill=\"#BECCFA\"\n                    ></path>\n                  </g>\n                </svg>\n                <d-checkbox\n                  [isShowTitle]=\"false\"\n                  [ngModel]=\"_styleSetting.size === 'xs'\"\n                  (ngModelChange)=\"onCardActiveChanges($event, 'xs')\"\n                  (click)=\"$event.stopPropagation()\"\n                ></d-checkbox>\n                <p>{{ data.i18nText?.compact }}</p>\n              </div>\n              <div\n                class=\"devui-option-size-card\"\n                (click)=\"_styleSetting.size = 'sm'\"\n                [ngClass]=\"{ 'devui-option-item-active': _styleSetting.size === 'sm' }\"\n              >\n                <svg\n                  width=\"32px\"\n                  height=\"32px\"\n                  viewBox=\"0 0 32 32\"\n                  version=\"1.1\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                >\n                  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <path\n                      d=\"M3.2,10.8 C3.6418278,10.8 4,11.1581722 4,11.6 L4,12.4 C4,12.8418278 3.6418278,13.2 3.2,13.2 L2.4,13.2 C1.9581722,13.2 1.6,12.8418278 1.6,12.4 L1.6,11.6 C1.6,11.1581722 1.9581722,10.8 2.4,10.8 L3.2,10.8 Z M13.6,10.8 C14.0418278,10.8 14.4,11.1581722 14.4,11.6 L14.4,12.4 C14.4,12.8418278 14.0418278,13.2 13.6,13.2 L5.6,13.2 C5.1581722,13.2 4.8,12.8418278 4.8,12.4 L4.8,11.6 C4.8,11.1581722 5.1581722,10.8 5.6,10.8 L13.6,10.8 Z M3.2,6.8 C3.6418278,6.8 4,7.1581722 4,7.6 L4,8.4 C4,8.8418278 3.6418278,9.2 3.2,9.2 L2.4,9.2 C1.9581722,9.2 1.6,8.8418278 1.6,8.4 L1.6,7.6 C1.6,7.1581722 1.9581722,6.8 2.4,6.8 L3.2,6.8 Z M13.6,6.8 C14.0418278,6.8 14.4,7.1581722 14.4,7.6 L14.4,8.4 C14.4,8.8418278 14.0418278,9.2 13.6,9.2 L5.6,9.2 C5.1581722,9.2 4.8,8.8418278 4.8,8.4 L4.8,7.6 C4.8,7.1581722 5.1581722,6.8 5.6,6.8 L13.6,6.8 Z M3.2,2.8 C3.6418278,2.8 4,3.1581722 4,3.6 L4,4.4 C4,4.8418278 3.6418278,5.2 3.2,5.2 L2.4,5.2 C1.9581722,5.2 1.6,4.8418278 1.6,4.4 L1.6,3.6 C1.6,3.1581722 1.9581722,2.8 2.4,2.8 L3.2,2.8 Z M13.6,2.8 C14.0418278,2.8 14.4,3.1581722 14.4,3.6 L14.4,4.4 C14.4,4.8418278 14.0418278,5.2 13.6,5.2 L5.6,5.2 C5.1581722,5.2 4.8,4.8418278 4.8,4.4 L4.8,3.6 C4.8,3.1581722 5.1581722,2.8 5.6,2.8 L13.6,2.8 Z\"\n                      fill=\"#BECCFA\"\n                    ></path>\n                  </g>\n                </svg>\n                <d-checkbox\n                  [isShowTitle]=\"false\"\n                  [ngModel]=\"_styleSetting.size === 'sm'\"\n                  (ngModelChange)=\"onCardActiveChanges($event, 'sm')\"\n                  (click)=\"$event.stopPropagation()\"\n                ></d-checkbox>\n                <p>{{ data.i18nText?.standard }}</p>\n              </div>\n              <div\n                class=\"devui-option-size-card\"\n                (click)=\"_styleSetting.size = 'md'\"\n                [ngClass]=\"{ 'devui-option-item-active': _styleSetting.size === 'md' }\"\n              >\n                <svg\n                  width=\"32px\"\n                  height=\"32px\"\n                  viewBox=\"0 0 32 32\"\n                  version=\"1.1\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                >\n                  <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <path\n                      d=\"M3.2,9.6 C3.6418278,9.6 4,9.9581722 4,10.4 L4,11.2 C4,11.6418278 3.6418278,12 3.2,12 L2.4,12 C1.9581722,12 1.6,11.6418278 1.6,11.2 L1.6,10.4 C1.6,9.9581722 1.9581722,9.6 2.4,9.6 L3.2,9.6 Z M13.6,9.6 C14.0418278,9.6 14.4,9.9581722 14.4,10.4 L14.4,11.2 C14.4,11.6418278 14.0418278,12 13.6,12 L5.6,12 C5.1581722,12 4.8,11.6418278 4.8,11.2 L4.8,10.4 C4.8,9.9581722 5.1581722,9.6 5.6,9.6 L13.6,9.6 Z M3.2,4 C3.6418278,4 4,4.3581722 4,4.8 L4,5.6 C4,6.0418278 3.6418278,6.4 3.2,6.4 L2.4,6.4 C1.9581722,6.4 1.6,6.0418278 1.6,5.6 L1.6,4.8 C1.6,4.3581722 1.9581722,4 2.4,4 L3.2,4 Z M13.6,4 C14.0418278,4 14.4,4.3581722 14.4,4.8 L14.4,5.6 C14.4,6.0418278 14.0418278,6.4 13.6,6.4 L5.6,6.4 C5.1581722,6.4 4.8,6.0418278 4.8,5.6 L4.8,4.8 C4.8,4.3581722 5.1581722,4 5.6,4 L13.6,4 Z\"\n                      id=\"形状结合\"\n                      fill=\"#BECCFA\"\n                    ></path>\n                  </g>\n                </svg>\n                <d-checkbox\n                  [isShowTitle]=\"false\"\n                  [ngModel]=\"_styleSetting.size === 'md'\"\n                  (ngModelChange)=\"onCardActiveChanges($event, 'md')\"\n                  (click)=\"$event.stopPropagation()\"\n                ></d-checkbox>\n                <p>{{ data.i18nText?.loose }}</p>\n              </div>\n            </div>\n            <div class=\"devui-option-form\" *ngIf=\"data.styleSetting.borderType !== undefined\">\n              <span>{{ data.i18nText?.divideLine }}</span>\n              <d-toggle [checked]=\"data.styleSetting.borderType === ''\" (change)=\"styleSettingChanges($event, 'border')\"></d-toggle>\n            </div>\n\n            <div class=\"devui-option-form\" *ngIf=\"data.styleSetting.striped !== undefined\">\n              <span>{{ data.i18nText?.striped }}</span>\n              <d-toggle [checked]=\"data.styleSetting.striped\" (change)=\"styleSettingChanges($event, 'striped')\"></d-toggle>\n            </div>\n\n            <div class=\"devui-option-form\" *ngIf=\"data.styleSetting.shadowType !== undefined\">\n              <span>{{ data.i18nText?.tableShadow }}</span>\n              <d-toggle [checked]=\"data.styleSetting.shadowType === 'normal'\" (change)=\"styleSettingChanges($event, 'shadow')\"></d-toggle>\n            </div>\n          </div>\n        </div>\n        <div class=\"devui-option-panel-col-drag\">\n          <p class=\"devui-option-subtitle\">{{ data.i18nText?.colSelected }}</p>\n\n          <div\n            *ngIf=\"data.colSort\"\n            dDroppable\n            [switchWhileCrossEdge]=\"true\"\n            [dropScope]=\"'drag-place'\"\n            (dropEvent)=\"onDrop($event)\"\n            dSortable\n          >\n            <div\n              *ngFor=\"let data of selectedCols\"\n              class=\"devui-option-drag-item\"\n              [ngClass]=\"{ disabled: data.disabled }\"\n              dDraggable\n              [disabled]=\"data.disabled\"\n              [dragScope]=\"'drag-place'\"\n              [dragHandleClass]=\"'devui-option-drag-handle'\"\n              [dragData]=\"data\"\n            >\n              <ng-template\n                [ngTemplateOutlet]=\"colItem\"\n                [ngTemplateOutletContext]=\"{\n                  colsData: data,\n                  canDrag: true\n                }\"\n              ></ng-template>\n            </div>\n          </div>\n          <div *ngIf=\"!data.colSort\">\n            <div *ngFor=\"let data of selectedCols\" class=\"devui-option-drag-item\">\n              <ng-template\n                [ngTemplateOutlet]=\"colItem\"\n                [ngTemplateOutletContext]=\"{\n                  colsData: data,\n                  canDrag: false\n                }\"\n              ></ng-template>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"devui-option-modal-footer\">\n    <d-button bsStyle=\"primary\" (click)=\"ensure()\" bsSize=\"lg\" style=\"margin-right: 8px\"> {{ data.i18nText?.ensure }} </d-button>\n    <d-button bsStyle=\"common\" (click)=\"close()\" bsSize=\"lg\"> {{ data.i18nText?.cancel }} </d-button>\n  </div>\n</div>\n\n<ng-template #colItem let-colsData=\"colsData\" let-canDrag=\"canDrag\">\n  <svg\n    *ngIf=\"canDrag\"\n    class=\"devui-option-drag-handle\"\n    width=\"16px\"\n    height=\"16px\"\n    viewBox=\"0 0 16 16\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  >\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <g fill=\"#5170FF\" fill-rule=\"nonzero\">\n        <path\n          d=\"M5.5,0 C6.32842712,-1.3527075e-16 7,0.596953667 7,1.33333333 C7,2.069713 6.32842712,2.66666667 5.5,2.66666667 C4.67157288,2.66666667 4,2.069713 4,1.33333333 C4,0.596953667 4.67157288,1.3527075e-16 5.5,0 Z M5.5,4.44444444 C6.32842712,4.44444444 7,5.04139811 7,5.77777778 C7,6.51415744 6.32842712,7.11111111 5.5,7.11111111 C4.67157288,7.11111111 4,6.51415744 4,5.77777778 C4,5.04139811 4.67157288,4.44444444 5.5,4.44444444 Z M5.5,8.88888889 C6.32842712,8.88888889 7,9.48584256 7,10.2222222 C7,10.9586019 6.32842712,11.5555556 5.5,11.5555556 C4.67157288,11.5555556 4,10.9586019 4,10.2222222 C4,9.48584256 4.67157288,8.88888889 5.5,8.88888889 Z M5.5,13.3333333 C6.32842712,13.3333333 7,13.930287 7,14.6666667 C7,15.4030463 6.32842712,16 5.5,16 C4.67157288,16 4,15.4030463 4,14.6666667 C4,13.930287 4.67157288,13.3333333 5.5,13.3333333 Z M10.5,0 C11.3284271,-1.3527075e-16 12,0.596953667 12,1.33333333 C12,2.069713 11.3284271,2.66666667 10.5,2.66666667 C9.67157288,2.66666667 9,2.069713 9,1.33333333 C9,0.596953667 9.67157288,1.3527075e-16 10.5,0 Z M10.5,4.44444444 C11.3284271,4.44444444 12,5.04139811 12,5.77777778 C12,6.51415744 11.3284271,7.11111111 10.5,7.11111111 C9.67157288,7.11111111 9,6.51415744 9,5.77777778 C9,5.04139811 9.67157288,4.44444444 10.5,4.44444444 Z M10.5,8.88888889 C11.3284271,8.88888889 12,9.48584256 12,10.2222222 C12,10.9586019 11.3284271,11.5555556 10.5,11.5555556 C9.67157288,11.5555556 9,10.9586019 9,10.2222222 C9,9.48584256 9.67157288,8.88888889 10.5,8.88888889 Z M10.5,13.3333333 C11.3284271,13.3333333 12,13.930287 12,14.6666667 C12,15.4030463 11.3284271,16 10.5,16 C9.67157288,16 9,15.4030463 9,14.6666667 C9,13.930287 9.67157288,13.3333333 10.5,13.3333333 Z\"\n        ></path>\n      </g>\n    </g>\n  </svg>\n  <span class=\"devui-option-drag-label\">{{ colsData.header }}</span>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { ModalService } from 'ng-devui/modal';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { Subscription } from 'rxjs';\r\nimport { TableOptionModalComponent } from './table-option-modal.component';\r\n\r\nexport interface ColData {\r\n  header: string;\r\n  checked: boolean;\r\n  category?: string;\r\n  disabled?: boolean;\r\n  [prop: string]: any;\r\n}\r\n\r\nexport interface TableStyleData {\r\n  size?: 'xs' | 'sm' | 'md';\r\n  borderType?: '' | 'borderless';\r\n  striped?: boolean;\r\n  shadowType?: 'embed' | 'normal';\r\n}\r\n\r\n@Component({\r\n  selector: 'd-table-option-toggle',\r\n  templateUrl: './table-option-toggle.component.html',\r\n  styleUrls: ['./table-option-toggle.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TableOptionToggleComponent implements OnInit, OnDestroy {\r\n  @Input() set columnsData(value: Array<ColData>) {\r\n    this._columnsData = cloneDeep(value);\r\n  }\r\n  @Input() showCategory: boolean;\r\n  @Input() colSort = true;\r\n  @Input() styleSetting: TableStyleData = {};\r\n  @Input() toggleMode: 'dropdown' | 'modal' = 'dropdown';\r\n  @Input() modalWidth = '600px';\r\n\r\n  @Output() colChanges: EventEmitter<Array<ColData>> = new EventEmitter<Array<ColData>>();\r\n  @Output() styleChanges: EventEmitter<TableStyleData> = new EventEmitter<TableStyleData>();\r\n\r\n  _columnsData = [];\r\n\r\n  checkedList;\r\n\r\n  get showStyleSetting() {\r\n    return !!Object.keys(this.styleSetting).length;\r\n  }\r\n\r\n  get sizeStatus() {\r\n    return (this.styleSetting as any)?.size;\r\n  }\r\n\r\n  set sizeStatus(value) {\r\n    if (!this.styleSetting) {\r\n      this.styleSetting = {};\r\n    }\r\n    this.styleSetting.size = value;\r\n  }\r\n\r\n  i18nText: I18nInterface['datatable'];\r\n  i18nLocale: I18nInterface['locale'];\r\n  i18nSubscription: Subscription;\r\n\r\n  constructor(private modalService: ModalService, private cdr: ChangeDetectorRef, private i18n: I18nService) {}\r\n\r\n  ngOnInit(): void {\r\n    this.i18nText = this.i18n.getI18nText().datatable;\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.datatable;\r\n      this.i18nLocale = data.locale;\r\n      this.cdr.markForCheck();\r\n    });\r\n  }\r\n\r\n  onToggle(event) {\r\n    console.log(event);\r\n  }\r\n\r\n  toggleActive(item) {\r\n    if (item.disabled) {\r\n      return;\r\n    }\r\n    item.checked = !item.checked;\r\n    this.emitData();\r\n  }\r\n\r\n  onCardActiveChanges(active: boolean, status: 'xs' | 'sm' | 'md') {\r\n    this.sizeStatus = active ? status : 'none';\r\n  }\r\n\r\n  emitStyles() {\r\n    this.styleChanges.emit(this.styleSetting as TableStyleData);\r\n  }\r\n\r\n  emitData() {\r\n    this.colChanges.emit(this._columnsData);\r\n  }\r\n\r\n  styleSettingChanges(checked, type: 'border' | 'striped' | 'shadow') {\r\n    switch (type) {\r\n    case 'border':\r\n      this.styleSetting.borderType = checked ? '' : 'borderless';\r\n      break;\r\n    case 'shadow':\r\n      this.styleSetting.shadowType = checked ? 'normal' : 'embed';\r\n      break;\r\n    case 'striped':\r\n      this.styleSetting.striped = checked;\r\n      break;\r\n    default:\r\n    }\r\n\r\n    this.emitStyles();\r\n  }\r\n\r\n  onDrop(e) {\r\n    let index = e.dropIndex;\r\n    const fromIndex = e.dragFromIndex;\r\n    if (-1 !== index) {\r\n      if (-1 !== fromIndex && index > fromIndex) {\r\n        index--;\r\n      }\r\n      this._columnsData.splice(index, 0, fromIndex === -1 ? e.dragData : this._columnsData.splice(fromIndex, 1)[0]);\r\n    } else {\r\n      this._columnsData.push(e.dragData);\r\n    }\r\n\r\n    this.colChanges.emit(this._columnsData);\r\n  }\r\n\r\n  openModal() {\r\n    const results = this.modalService.open({\r\n      id: 'modal-modal',\r\n      width: this.modalWidth,\r\n      backdropCloseable: true,\r\n      component: TableOptionModalComponent,\r\n      data: {\r\n        columnsData: this._columnsData,\r\n        showCategory: this.showCategory,\r\n        styleSetting: cloneDeep(this.styleSetting),\r\n        colSort: this.colSort,\r\n        i18nText: this.i18nText,\r\n        onClose: () => {\r\n          results.modalInstance.hide();\r\n        },\r\n        onEnsure: (columnsData, styleSetting) => {\r\n          this._columnsData = columnsData;\r\n          this.colChanges.emit(columnsData);\r\n          this.styleChanges.emit(styleSetting);\r\n          results.modalInstance.hide();\r\n          this.cdr.detectChanges();\r\n        },\r\n      },\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","<div *ngIf=\"toggleMode === 'dropdown'\" class=\"btn-group\" dDropDown (toggleEvent)=\"onToggle($event)\" appendToBody>\n  <div dDropDownToggle class=\"devui-option-toggle\">\n    <ng-template [ngTemplateOutlet]=\"host\"></ng-template>\n  </div>\n  <div dDropDownMenu class=\"devui-option-panel\" (click)=\"$event.stopPropagation()\">\n    <p class=\"devui-option-title\">{{ i18nText?.tableSetting }}</p>\n    <div class=\"devui-option-panel-style-setting\" *ngIf=\"showStyleSetting\">\n      <div class=\"devui-option-panel-style-header\">\n        <p class=\"devui-option-subtitle\">{{ i18nText?.styles }}</p>\n        <div class=\"devui-option-size-wrapper\" *ngIf=\"styleSetting.size !== undefined\">\n          <div class=\"devui-option-size-card\" (click)=\"sizeStatus = 'xs'\" [ngClass]=\"{ 'devui-option-item-active': sizeStatus === 'xs' }\">\n            <svg\n              width=\"32px\"\n              height=\"32px\"\n              viewBox=\"0 0 32 32\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <path\n                  d=\"M3.2,11.6 C3.6418278,11.6 4,11.9581722 4,12.4 L4,13.2 C4,13.6418278 3.6418278,14 3.2,14 L2.4,14 C1.9581722,14 1.6,13.6418278 1.6,13.2 L1.6,12.4 C1.6,11.9581722 1.9581722,11.6 2.4,11.6 L3.2,11.6 Z M13.6,11.6 C14.0418278,11.6 14.4,11.9581722 14.4,12.4 L14.4,13.2 C14.4,13.6418278 14.0418278,14 13.6,14 L5.6,14 C5.1581722,14 4.8,13.6418278 4.8,13.2 L4.8,12.4 C4.8,11.9581722 5.1581722,11.6 5.6,11.6 L13.6,11.6 Z M3.2,8.4 C3.6418278,8.4 4,8.7581722 4,9.2 L4,10 C4,10.4418278 3.6418278,10.8 3.2,10.8 L2.4,10.8 C1.9581722,10.8 1.6,10.4418278 1.6,10 L1.6,9.2 C1.6,8.7581722 1.9581722,8.4 2.4,8.4 L3.2,8.4 Z M13.6,8.4 C14.0418278,8.4 14.4,8.7581722 14.4,9.2 L14.4,10 C14.4,10.4418278 14.0418278,10.8 13.6,10.8 L5.6,10.8 C5.1581722,10.8 4.8,10.4418278 4.8,10 L4.8,9.2 C4.8,8.7581722 5.1581722,8.4 5.6,8.4 L13.6,8.4 Z M3.2,5.2 C3.6418278,5.2 4,5.5581722 4,6 L4,6.8 C4,7.2418278 3.6418278,7.6 3.2,7.6 L2.4,7.6 C1.9581722,7.6 1.6,7.2418278 1.6,6.8 L1.6,6 C1.6,5.5581722 1.9581722,5.2 2.4,5.2 L3.2,5.2 Z M13.6,5.2 C14.0418278,5.2 14.4,5.5581722 14.4,6 L14.4,6.8 C14.4,7.2418278 14.0418278,7.6 13.6,7.6 L5.6,7.6 C5.1581722,7.6 4.8,7.2418278 4.8,6.8 L4.8,6 C4.8,5.5581722 5.1581722,5.2 5.6,5.2 L13.6,5.2 Z M3.2,2 C3.6418278,2 4,2.3581722 4,2.8 L4,3.6 C4,4.0418278 3.6418278,4.4 3.2,4.4 L2.4,4.4 C1.9581722,4.4 1.6,4.0418278 1.6,3.6 L1.6,2.8 C1.6,2.3581722 1.9581722,2 2.4,2 L3.2,2 Z M13.6,2 C14.0418278,2 14.4,2.3581722 14.4,2.8 L14.4,3.6 C14.4,4.0418278 14.0418278,4.4 13.6,4.4 L5.6,4.4 C5.1581722,4.4 4.8,4.0418278 4.8,3.6 L4.8,2.8 C4.8,2.3581722 5.1581722,2 5.6,2 L13.6,2 Z\"\n                  fill=\"#BECCFA\"\n                ></path>\n              </g>\n            </svg>\n            <d-checkbox\n              [isShowTitle]=\"false\"\n              [ngModel]=\"sizeStatus === 'xs'\"\n              (ngModelChange)=\"onCardActiveChanges($event, 'xs')\"\n              (click)=\"$event.stopPropagation()\"\n            ></d-checkbox>\n            <p>{{ i18nText?.compact }}</p>\n          </div>\n          <div class=\"devui-option-size-card\" (click)=\"sizeStatus = 'sm'\" [ngClass]=\"{ 'devui-option-item-active': sizeStatus === 'sm' }\">\n            <svg\n              width=\"32px\"\n              height=\"32px\"\n              viewBox=\"0 0 32 32\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <path\n                  d=\"M3.2,10.8 C3.6418278,10.8 4,11.1581722 4,11.6 L4,12.4 C4,12.8418278 3.6418278,13.2 3.2,13.2 L2.4,13.2 C1.9581722,13.2 1.6,12.8418278 1.6,12.4 L1.6,11.6 C1.6,11.1581722 1.9581722,10.8 2.4,10.8 L3.2,10.8 Z M13.6,10.8 C14.0418278,10.8 14.4,11.1581722 14.4,11.6 L14.4,12.4 C14.4,12.8418278 14.0418278,13.2 13.6,13.2 L5.6,13.2 C5.1581722,13.2 4.8,12.8418278 4.8,12.4 L4.8,11.6 C4.8,11.1581722 5.1581722,10.8 5.6,10.8 L13.6,10.8 Z M3.2,6.8 C3.6418278,6.8 4,7.1581722 4,7.6 L4,8.4 C4,8.8418278 3.6418278,9.2 3.2,9.2 L2.4,9.2 C1.9581722,9.2 1.6,8.8418278 1.6,8.4 L1.6,7.6 C1.6,7.1581722 1.9581722,6.8 2.4,6.8 L3.2,6.8 Z M13.6,6.8 C14.0418278,6.8 14.4,7.1581722 14.4,7.6 L14.4,8.4 C14.4,8.8418278 14.0418278,9.2 13.6,9.2 L5.6,9.2 C5.1581722,9.2 4.8,8.8418278 4.8,8.4 L4.8,7.6 C4.8,7.1581722 5.1581722,6.8 5.6,6.8 L13.6,6.8 Z M3.2,2.8 C3.6418278,2.8 4,3.1581722 4,3.6 L4,4.4 C4,4.8418278 3.6418278,5.2 3.2,5.2 L2.4,5.2 C1.9581722,5.2 1.6,4.8418278 1.6,4.4 L1.6,3.6 C1.6,3.1581722 1.9581722,2.8 2.4,2.8 L3.2,2.8 Z M13.6,2.8 C14.0418278,2.8 14.4,3.1581722 14.4,3.6 L14.4,4.4 C14.4,4.8418278 14.0418278,5.2 13.6,5.2 L5.6,5.2 C5.1581722,5.2 4.8,4.8418278 4.8,4.4 L4.8,3.6 C4.8,3.1581722 5.1581722,2.8 5.6,2.8 L13.6,2.8 Z\"\n                  fill=\"#BECCFA\"\n                ></path>\n              </g>\n            </svg>\n            <d-checkbox\n              [isShowTitle]=\"false\"\n              [ngModel]=\"sizeStatus === 'sm'\"\n              (ngModelChange)=\"onCardActiveChanges($event, 'sm')\"\n              (click)=\"$event.stopPropagation()\"\n            ></d-checkbox>\n            <p>{{ i18nText?.standard }}</p>\n          </div>\n          <div class=\"devui-option-size-card\" (click)=\"sizeStatus = 'md'\" [ngClass]=\"{ 'devui-option-item-active': sizeStatus === 'md' }\">\n            <svg\n              width=\"32px\"\n              height=\"32px\"\n              viewBox=\"0 0 32 32\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <path\n                  d=\"M3.2,9.6 C3.6418278,9.6 4,9.9581722 4,10.4 L4,11.2 C4,11.6418278 3.6418278,12 3.2,12 L2.4,12 C1.9581722,12 1.6,11.6418278 1.6,11.2 L1.6,10.4 C1.6,9.9581722 1.9581722,9.6 2.4,9.6 L3.2,9.6 Z M13.6,9.6 C14.0418278,9.6 14.4,9.9581722 14.4,10.4 L14.4,11.2 C14.4,11.6418278 14.0418278,12 13.6,12 L5.6,12 C5.1581722,12 4.8,11.6418278 4.8,11.2 L4.8,10.4 C4.8,9.9581722 5.1581722,9.6 5.6,9.6 L13.6,9.6 Z M3.2,4 C3.6418278,4 4,4.3581722 4,4.8 L4,5.6 C4,6.0418278 3.6418278,6.4 3.2,6.4 L2.4,6.4 C1.9581722,6.4 1.6,6.0418278 1.6,5.6 L1.6,4.8 C1.6,4.3581722 1.9581722,4 2.4,4 L3.2,4 Z M13.6,4 C14.0418278,4 14.4,4.3581722 14.4,4.8 L14.4,5.6 C14.4,6.0418278 14.0418278,6.4 13.6,6.4 L5.6,6.4 C5.1581722,6.4 4.8,6.0418278 4.8,5.6 L4.8,4.8 C4.8,4.3581722 5.1581722,4 5.6,4 L13.6,4 Z\"\n                  id=\"形状结合\"\n                  fill=\"#BECCFA\"\n                ></path>\n              </g>\n            </svg>\n            <d-checkbox\n              [isShowTitle]=\"false\"\n              [ngModel]=\"sizeStatus === 'md'\"\n              (ngModelChange)=\"onCardActiveChanges($event, 'md')\"\n              (click)=\"$event.stopPropagation()\"\n            ></d-checkbox>\n            <p>{{ i18nText?.loose }}</p>\n          </div>\n        </div>\n        <div class=\"devui-option-form\" *ngIf=\"styleSetting.borderType !== undefined\">\n          <span>{{ i18nText?.divideLine }}</span>\n          <d-toggle [checked]=\"styleSetting.borderType === ''\" (change)=\"styleSettingChanges($event, 'border')\"></d-toggle>\n        </div>\n\n        <div class=\"devui-option-form\" *ngIf=\"styleSetting.striped !== undefined\">\n          <span>{{ i18nText?.striped }}</span>\n          <d-toggle [checked]=\"styleSetting.striped\" (change)=\"styleSettingChanges($event, 'striped')\"></d-toggle>\n        </div>\n\n        <div class=\"devui-option-form\" *ngIf=\"styleSetting.shadowType !== undefined\">\n          <span>{{ i18nText?.tableShadow }}</span>\n          <d-toggle [checked]=\"styleSetting.shadowType === 'normal'\" (change)=\"styleSettingChanges($event, 'shadow')\"></d-toggle>\n        </div>\n      </div>\n    </div>\n    <div class=\"devui-option-panel-col-drag\">\n      <p class=\"devui-option-subtitle\">{{ i18nText?.colCanSelect }}</p>\n\n      <div *ngIf=\"colSort\" dDroppable [switchWhileCrossEdge]=\"true\" [dropScope]=\"'drag-place'\" (dropEvent)=\"onDrop($event)\" dSortable>\n        <div\n          *ngFor=\"let data of _columnsData\"\n          class=\"devui-option-drag-item\"\n          [ngClass]=\"{ disabled: data.disabled }\"\n          dDraggable\n          [dragScope]=\"'drag-place'\"\n          [dragHandleClass]=\"'devui-option-drag-handle'\"\n          [dragData]=\"data\"\n          [disabled]=\"data.disabled\"\n          (click)=\"toggleActive(data)\"\n        >\n          <ng-template\n            [ngTemplateOutlet]=\"colItem\"\n            [ngTemplateOutletContext]=\"{\n              colsData: data,\n              canDrag: true\n            }\"\n          ></ng-template>\n        </div>\n      </div>\n      <div *ngIf=\"!colSort\">\n        <div *ngFor=\"let data of _columnsData\" class=\"devui-option-drag-item\" (click)=\"toggleActive(data)\">\n          <ng-template\n            [ngTemplateOutlet]=\"colItem\"\n            [ngTemplateOutletContext]=\"{\n              colsData: data,\n              canDrag: false\n            }\"\n          ></ng-template>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div *ngIf=\"toggleMode === 'modal'\" (click)=\"openModal()\">\n  <ng-template [ngTemplateOutlet]=\"host\"></ng-template>\n</div>\n\n<ng-template #host>\n  <ng-content></ng-content>\n</ng-template>\n<ng-template #colItem let-colsData=\"colsData\" let-canDrag=\"canDrag\">\n  <svg\n    *ngIf=\"canDrag\"\n    class=\"devui-option-drag-handle\"\n    width=\"16px\"\n    height=\"16px\"\n    viewBox=\"0 0 16 16\"\n    version=\"1.1\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n  >\n    <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n      <g fill=\"#5170FF\" fill-rule=\"nonzero\">\n        <path\n          d=\"M5.5,0 C6.32842712,-1.3527075e-16 7,0.596953667 7,1.33333333 C7,2.069713 6.32842712,2.66666667 5.5,2.66666667 C4.67157288,2.66666667 4,2.069713 4,1.33333333 C4,0.596953667 4.67157288,1.3527075e-16 5.5,0 Z M5.5,4.44444444 C6.32842712,4.44444444 7,5.04139811 7,5.77777778 C7,6.51415744 6.32842712,7.11111111 5.5,7.11111111 C4.67157288,7.11111111 4,6.51415744 4,5.77777778 C4,5.04139811 4.67157288,4.44444444 5.5,4.44444444 Z M5.5,8.88888889 C6.32842712,8.88888889 7,9.48584256 7,10.2222222 C7,10.9586019 6.32842712,11.5555556 5.5,11.5555556 C4.67157288,11.5555556 4,10.9586019 4,10.2222222 C4,9.48584256 4.67157288,8.88888889 5.5,8.88888889 Z M5.5,13.3333333 C6.32842712,13.3333333 7,13.930287 7,14.6666667 C7,15.4030463 6.32842712,16 5.5,16 C4.67157288,16 4,15.4030463 4,14.6666667 C4,13.930287 4.67157288,13.3333333 5.5,13.3333333 Z M10.5,0 C11.3284271,-1.3527075e-16 12,0.596953667 12,1.33333333 C12,2.069713 11.3284271,2.66666667 10.5,2.66666667 C9.67157288,2.66666667 9,2.069713 9,1.33333333 C9,0.596953667 9.67157288,1.3527075e-16 10.5,0 Z M10.5,4.44444444 C11.3284271,4.44444444 12,5.04139811 12,5.77777778 C12,6.51415744 11.3284271,7.11111111 10.5,7.11111111 C9.67157288,7.11111111 9,6.51415744 9,5.77777778 C9,5.04139811 9.67157288,4.44444444 10.5,4.44444444 Z M10.5,8.88888889 C11.3284271,8.88888889 12,9.48584256 12,10.2222222 C12,10.9586019 11.3284271,11.5555556 10.5,11.5555556 C9.67157288,11.5555556 9,10.9586019 9,10.2222222 C9,9.48584256 9.67157288,8.88888889 10.5,8.88888889 Z M10.5,13.3333333 C11.3284271,13.3333333 12,13.930287 12,14.6666667 C12,15.4030463 11.3284271,16 10.5,16 C9.67157288,16 9,15.4030463 9,14.6666667 C9,13.930287 9.67157288,13.3333333 10.5,13.3333333 Z\"\n        ></path>\n      </g>\n    </g>\n  </svg>\n  <span class=\"devui-option-drag-label\">{{ colsData.header }}</span>\n  <d-checkbox\n    [ngClass]=\"{ 'devui-option-item-active': colsData.checked }\"\n    [isShowTitle]=\"false\"\n    [(ngModel)]=\"colsData.checked\"\n    [disabled]=\"colsData.disabled\"\n    (click)=\"$event.stopPropagation(); emitData()\"\n  ></d-checkbox>\n</ng-template>\n","import { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class TableTdService {\n  tableCellClickEvent = new EventEmitter<Event>();\n  constructor() { }\n}\n","import { Component,\r\n  ElementRef,\r\n  EventEmitter, HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  SimpleChanges, } from '@angular/core';\r\nimport { Observable, Subscription, fromEvent } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { EditableTip } from '../../../data-table.model';\r\nimport { TableTdService } from './td.service';\r\n\r\n@Component({\r\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dTableCell]',\r\n  templateUrl: './td.component.html',\r\n  styleUrls: ['./td.component.scss'],\r\n})\r\nexport class TableTdComponent implements OnChanges, OnDestroy {\r\n  @HostBinding('class.devui-sticky-left-cell') stickyLeftClass: boolean;\r\n  @HostBinding('class.devui-sticky-right-cell') stickyRightClass: boolean;\r\n  @HostBinding('style.left') stickyLeftStyle: string;\r\n  @HostBinding('style.right') stickyRightStyle: string;\r\n  @Input() editable: boolean;\r\n  @Input() editableTip = EditableTip.hover;\r\n  @Input() nestedColumn = false;\r\n  @Input() nestedLayer: number;\r\n  @Input() field: string;\r\n  @Input() rowItem: any;\r\n  @Input() fixedLeft: string;\r\n  @Input() fixedRight: string;\r\n  @Input() iconFoldTable: string;\r\n  @Input() iconUnFoldTable: string;\r\n  @Input() nestedColumnIndent = 16;\r\n  @Input() beforeEditStart: (rowItem, field) => boolean | Promise<boolean> | Observable<boolean>;\r\n  @Input() beforeEditEnd: (rowItem, field) => boolean | Promise<boolean> | Observable<boolean>;\r\n  @Output() toggleChildTableEvent = new EventEmitter<boolean>();\r\n  @Input() editing: boolean;\r\n  @Output() editStatusEvent = new EventEmitter<boolean>();\r\n  /**\r\n   * 编辑状态调整 @deprecated\r\n   */\r\n  @Output() editingChange = new EventEmitter<boolean>();\r\n\r\n  @HostBinding('class.editable-cell') get isEditable() {\r\n    return this.editable && !this.editing && this.editableTip !== 'btn';\r\n  }\r\n\r\n  private documentClickSubscription: Subscription;\r\n  private tdMousedownSubscription: Subscription;\r\n  private tdMouseupSubscription: Subscription;\r\n  private clickInTd: boolean;\r\n  private tdClickSubscription: Subscription;\r\n  private currentEditing = false;\r\n\r\n  constructor(private elementRef: ElementRef, private tdService: TableTdService) {}\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { fixedLeft, fixedRight, editing } = changes;\r\n    if (fixedLeft) {\r\n      if (this.fixedLeft) {\r\n        this.stickyLeftClass = true;\r\n        this.stickyLeftStyle = this.fixedLeft;\r\n      } else {\r\n        this.stickyLeftClass = false;\r\n        this.stickyLeftStyle = null;\r\n      }\r\n    }\r\n\r\n    if (fixedRight) {\r\n      if (this.fixedRight) {\r\n        this.stickyRightClass = true;\r\n        this.stickyRightStyle = this.fixedRight;\r\n      } else {\r\n        this.stickyRightClass = false;\r\n        this.stickyRightStyle = null;\r\n      }\r\n    }\r\n\r\n    if (editing?.currentValue && !this.currentEditing) {\r\n      this.bindEditClickEvent();\r\n    }\r\n  }\r\n\r\n  startEditing(event) {\r\n    event.stopPropagation();\r\n    event.preventDefault();\r\n    let beforePromise = Promise.resolve(true);\r\n    if (this.beforeEditStart) {\r\n      const result: any = this.beforeEditStart(this.rowItem, this.field);\r\n      if (typeof result !== 'undefined') {\r\n        if (result.then) {\r\n          beforePromise = result;\r\n        } else if (result.subscribe) {\r\n          beforePromise = (result as Observable<boolean>).toPromise();\r\n        } else {\r\n          beforePromise = Promise.resolve(result);\r\n        }\r\n      }\r\n    }\r\n\r\n    beforePromise.then((canStart) => {\r\n      if (canStart) {\r\n        this.editing = true;\r\n        this.currentEditing = true;\r\n        this.editingChange.emit(true);\r\n        this.editStatusEvent.emit(true);\r\n        this.tdService.tableCellClickEvent.emit(event);\r\n        this.bindEditClickEvent();\r\n      }\r\n    });\r\n  }\r\n\r\n  bindEditClickEvent() {\r\n    this.documentClickSubscription = fromEvent(document, 'click')\r\n      .pipe(\r\n      tap((e: Event) => {\r\n        e.stopPropagation();\r\n      })\r\n      )\r\n      .subscribe((clickEvent) => {\r\n      if (!this.elementRef.nativeElement.contains(clickEvent.target) && !this.clickInTd) {\r\n        this.finishCellEdit();\r\n      }\r\n      this.clickInTd = false;\r\n    });\r\n    this.tdMousedownSubscription = fromEvent(this.elementRef.nativeElement, 'mousedown').subscribe((event) => {\r\n      this.clickInTd = true;\r\n    });\r\n\r\n    this.tdMouseupSubscription = fromEvent(this.elementRef.nativeElement, 'mouseup').subscribe((event) => {\r\n      this.clickInTd = false;\r\n    });\r\n\r\n    this.tdClickSubscription = this.tdService.tableCellClickEvent.subscribe((clickEvent) => {\r\n      if (!this.elementRef.nativeElement.contains(clickEvent.target)) {\r\n        this.finishCellEdit();\r\n      }\r\n    });\r\n  }\r\n\r\n  removeEditClickEvent() {\r\n    if (this.documentClickSubscription) {\r\n      this.documentClickSubscription.unsubscribe();\r\n      this.documentClickSubscription = null;\r\n    }\r\n    if (this.tdClickSubscription) {\r\n      this.tdClickSubscription.unsubscribe();\r\n      this.tdClickSubscription = null;\r\n    }\r\n  }\r\n\r\n  finishCellEdit() {\r\n    let beforePromise = Promise.resolve(true);\r\n    if (this.beforeEditEnd) {\r\n      const result: any = this.beforeEditEnd(this.rowItem, this.field);\r\n      if (typeof result !== 'undefined') {\r\n        if (result.then) {\r\n          beforePromise = result;\r\n        } else if (result.subscribe) {\r\n          beforePromise = (result as Observable<boolean>).toPromise();\r\n        } else {\r\n          beforePromise = Promise.resolve(result);\r\n        }\r\n      }\r\n    }\r\n    beforePromise.then((canEnd) => {\r\n      if (canEnd) {\r\n        this.editing = false;\r\n        this.currentEditing = false;\r\n        this.editingChange.emit(false);\r\n        this.editStatusEvent.emit(false);\r\n        this.removeEditClickEvent();\r\n      }\r\n    });\r\n  }\r\n\r\n  toggleChildTable(rowItem) {\r\n    rowItem.$isChildTableOpen = !rowItem.$isChildTableOpen;\r\n    this.toggleChildTableEvent.emit(rowItem.$isChildTableOpen);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.documentClickSubscription) {\r\n      this.documentClickSubscription.unsubscribe();\r\n      this.documentClickSubscription = null;\r\n    }\r\n    if (this.tdClickSubscription) {\r\n      this.tdClickSubscription.unsubscribe();\r\n      this.tdClickSubscription = null;\r\n    }\r\n\r\n    if (this.tdMousedownSubscription) {\r\n      this.tdMousedownSubscription.unsubscribe();\r\n      this.tdMousedownSubscription = null;\r\n    }\r\n\r\n    if (this.tdMouseupSubscription) {\r\n      this.tdMouseupSubscription.unsubscribe();\r\n      this.tdMouseupSubscription = null;\r\n    }\r\n  }\r\n}\r\n","<ng-container *ngIf=\"editable && !editing\">\n  <div *ngIf=\"editableTip === 'btn'\" class=\"cell-container\">\n    <div class=\"cell-container-inner not-break modify-holder\">\n      <ng-template\n        [ngTemplateOutlet]=\"nestedTmp\"\n        [ngTemplateOutletContext]=\"{ nestedColumn: nestedColumn, rowItem: rowItem, nestedLayer: nestedLayer }\"\n      ></ng-template>\n      <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n      <span class=\"cell-modify\" (click)=\"startEditing($event)\">\n        <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16px\" height=\"16px\" version=\"1.1\">\n          <g fill=\"none\" fill-rule=\"evenodd\" stroke=\"none\" stroke-width=\"1\">\n            <path\n              d=\"M 9.48528 3.41421 L 10.8995 2 L 13.7279 4.82843 L 12.3137 6.24264 L 9.48528 3.41421 Z M 5.24264 13.3137 L 2.41421 13.3137 L 2.41421 10.4853 L 8.77817 4.12132 L 11.6066 6.94975 L 5.24264 13.3137 Z\"\n            />\n          </g>\n        </svg>\n      </span>\n    </div>\n  </div>\n\n  <div *ngIf=\"editableTip !== 'btn'\" class=\"cell-editable not-break\" (click)=\"startEditing($event)\">\n    <ng-template\n      [ngTemplateOutlet]=\"nestedTmp\"\n      [ngTemplateOutletContext]=\"{ nestedColumn: nestedColumn, rowItem: rowItem, nestedLayer: nestedLayer }\"\n    ></ng-template>\n    <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n  </div>\n</ng-container>\n\n<ng-container *ngIf=\"!editable || editing\">\n  <ng-template\n    [ngTemplateOutlet]=\"nestedTmp\"\n    [ngTemplateOutletContext]=\"{ nestedColumn: nestedColumn, rowItem: rowItem, nestedLayer: nestedLayer }\"\n  ></ng-template>\n  <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-container>\n\n<ng-template #content><ng-content></ng-content></ng-template>\n\n<ng-template #nestedTmp let-nestedColumn=\"nestedColumn\" let-rowItem=\"rowItem\" let-nestedLayer=\"nestedLayer\">\n  <ng-container *ngIf=\"nestedColumn\">\n    <span *ngIf=\"nestedLayer > 0\" class=\"cell-placeholder\" [ngStyle]=\"{ width: nestedLayer * nestedColumnIndent + 'px' }\"></span>\n    <span [style.visibility]=\"rowItem.children ? 'visible' : 'hidden'\" class=\"childtable-toggler\" (click)=\"toggleChildTable(rowItem)\">\n      <ng-container *ngIf=\"rowItem['$isChildTableOpen']\">\n        <svg\n          *ngIf=\"!iconFoldTable\"\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          class=\"svg-icon svg-icon-close\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n            <rect x=\"4\" y=\"7\" width=\"8\" height=\"2\"></rect>\n          </g>\n        </svg>\n        <span *ngIf=\"iconFoldTable\" [innerHTML]=\"iconFoldTable | safe: 'html'\"></span>\n      </ng-container>\n      <ng-container *ngIf=\"!rowItem['$isChildTableOpen']\">\n        <svg\n          *ngIf=\"!iconUnFoldTable\"\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          class=\"svg-icon svg-icon-open-folder\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"2\"></rect>\n            <path\n              d=\"M8.75,4 L8.75,7.25 L12,7.25 L12,8.75 L8.749,8.75 L8.75,12 L7.25,12 L7.249,8.75 L4,8.75 L4,7.25 L7.25,7.25 L7.25,4 L8.75,4 Z\"\n            ></path>\n          </g>\n        </svg>\n        <span *ngIf=\"iconUnFoldTable\" [innerHTML]=\"iconUnFoldTable | safe: 'html'\"></span>\n      </ng-container>\n    </span>\n  </ng-container>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input } from '@angular/core';\nimport { DataTableCellEditTmplComponent } from './data-table-cell-edit-tmpl.component';\nimport { DataTableCellViewTmplComponent } from './data-table-cell-view-tmpl.component';\n\n@Component({\n  selector: 'd-cell-template',\n  template: '',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableCellTmplComponent {\n  @Input() type: string;\n  @ContentChild(DataTableCellViewTmplComponent) view: DataTableCellViewTmplComponent;\n  @ContentChild(DataTableCellEditTmplComponent) edit: DataTableCellEditTmplComponent;\n\n}\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BadgeModule } from 'ng-devui/badge';\nimport { ButtonModule } from 'ng-devui/button';\nimport { CheckBoxModule } from 'ng-devui/checkbox';\nimport { DCommonModule } from 'ng-devui/common';\nimport { DatepickerModule } from 'ng-devui/datepicker';\nimport { DragDropModule } from 'ng-devui/dragdrop';\nimport { DropDownModule } from 'ng-devui/dropdown';\nimport { InputNumberModule } from 'ng-devui/input-number';\nimport { PaginationModule } from 'ng-devui/pagination';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { SearchModule } from 'ng-devui/search';\nimport { SelectModule } from 'ng-devui/select';\nimport { ToggleModule } from 'ng-devui/toggle';\nimport { TooltipModule } from 'ng-devui/tooltip';\nimport { TreeSelectModule } from 'ng-devui/tree-select';\nimport { LazyLoadModule, SafePipeModule } from 'ng-devui/utils';\nimport { WindowRefModule } from 'ng-devui/window-ref';\nimport { DataTableBodyComponent } from './data-table-body.component';\nimport { DataTableCellComponent } from './data-table-cell.component';\nimport { DataTableHeadComponent } from './data-table-head.component';\nimport { DataTableRowComponent } from './data-table-row.component';\nimport { DataTableComponent } from './data-table.component';\nimport { DisPlayCellValuePipe } from './display-cell-value.pipe';\nimport { EditorDirective } from './editor-host.directive';\nimport { TableOptionModalComponent } from './table-option-modal.component';\nimport { TableOptionToggleComponent } from './table-option-toggle.component';\nimport { TableTbodyComponent } from './table/body/tbody.component';\nimport { TableTdComponent } from './table/body/td/td.component';\nimport { TableTdService } from './table/body/td/td.service';\nimport { FilterComponent } from './table/head/th/filter/filter.component';\nimport { SortComponent } from './table/head/th/sort/sort.component';\nimport { TableThComponent } from './table/head/th/th.component';\nimport { TableTheadComponent } from './table/head/thead.component';\nimport { TableTrComponent } from './table/row/tr.component';\nimport { DataTableCellEditTmplComponent } from './tmpl/data-table-cell-edit-tmpl.component';\nimport { DataTableCellTmplComponent } from './tmpl/data-table-cell-tmpl.component';\nimport { DataTableCellViewTmplComponent } from './tmpl/data-table-cell-view-tmpl.component';\nimport { DataTableColumnTmplComponent } from './tmpl/data-table-column-tmpl.component';\nimport { DataTableHeadCellTmplComponent } from './tmpl/data-table-head-cell-tmpl.component';\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    WindowRefModule,\n    ScrollingModule,\n    PaginationModule,\n    DCommonModule,\n    DatepickerModule,\n    SelectModule,\n    CheckBoxModule,\n    ButtonModule,\n    InputNumberModule,\n    DropDownModule,\n    PopoverModule,\n    TreeSelectModule,\n    SafePipeModule,\n    TooltipModule,\n    DragDropModule,\n    LazyLoadModule,\n    ToggleModule,\n    SearchModule,\n    BadgeModule\n  ],\n  exports: [\n    DataTableComponent,\n    DataTableColumnTmplComponent,\n    DataTableCellViewTmplComponent,\n    DataTableCellEditTmplComponent,\n    DataTableBodyComponent,\n    DataTableHeadComponent,\n    DataTableCellComponent,\n    DataTableRowComponent,\n    DataTableCellTmplComponent,\n    DataTableHeadCellTmplComponent,\n    TableThComponent,\n    FilterComponent,\n    SortComponent,\n    TableTheadComponent,\n    TableTrComponent,\n    TableTbodyComponent,\n    TableTdComponent,\n    TableOptionToggleComponent,\n    TableOptionModalComponent\n  ],\n  declarations: [\n    DataTableComponent,\n    DataTableColumnTmplComponent,\n    DataTableCellViewTmplComponent,\n    DataTableCellEditTmplComponent,\n    DataTableBodyComponent,\n    DataTableHeadComponent,\n    DataTableCellComponent,\n    DataTableRowComponent,\n    DataTableCellTmplComponent,\n    DataTableHeadCellTmplComponent,\n    DisPlayCellValuePipe,\n    EditorDirective,\n    TableThComponent,\n    FilterComponent,\n    SortComponent,\n    TableTheadComponent,\n    TableTrComponent,\n    TableTbodyComponent,\n    TableTdComponent,\n    TableOptionToggleComponent,\n    TableOptionModalComponent\n  ],\n\n  providers: [ TableTdService ],\n})\nexport class DataTableModule {\n}\n","import { ElementRef } from '@angular/core';\r\nimport { TableWidthConfig } from '../data-table.model';\r\n\r\nexport const simDeepClone = (obj) => {\r\n  if (obj === null) {\r\n    return null;\r\n  }\r\n  if (typeof obj === 'object') {\r\n    return JSON.parse(JSON.stringify(obj));\r\n  } else if (typeof obj === 'string') {\r\n    try {\r\n      return JSON.parse(obj);\r\n    } catch (e) {\r\n      console.error(e);\r\n    }\r\n  } else {\r\n    return obj;\r\n  }\r\n};\r\n\r\nexport function tableResizeFunc(tableWidthConfig: TableWidthConfig[], ele: ElementRef) {\r\n  let _totalWidth = 0;\r\n  let lastWidth = 0;\r\n  let firstResize = true;\r\n  return function onResize({ width, beforeWidth }, field) {\r\n    const index = tableWidthConfig.findIndex((config) => {\r\n      return config.field === field;\r\n    });\r\n    if (index > -1) {\r\n      if (firstResize) {\r\n        firstResize = false;\r\n        const ratio = beforeWidth / parseInt(tableWidthConfig[index].width, 10);\r\n        tableWidthConfig.forEach((t) => {\r\n          t.width = parseInt(t.width, 10) * ratio + 'px';\r\n        });\r\n        _totalWidth = ele.nativeElement.querySelector('.table-wrap').offsetWidth - 8;\r\n        lastWidth = parseInt(tableWidthConfig.slice(-1)[0].width);\r\n      }\r\n      tableWidthConfig[index].width = width + 'px';\r\n\r\n      let newWidthTotal = 0;\r\n      tableWidthConfig.forEach((t) => {\r\n        newWidthTotal += parseInt(t.width, 10);\r\n      });\r\n\r\n      const lastCol = tableWidthConfig[tableWidthConfig.length - 1];\r\n      const lastColWidth = parseInt(lastCol.width, 10);\r\n      const changeValue = newWidthTotal - _totalWidth;\r\n      if (changeValue < 0) {\r\n        lastCol.width = lastColWidth + _totalWidth - newWidthTotal + 'px';\r\n      } else if (lastColWidth > lastWidth) {\r\n        const lastChange = lastColWidth - lastWidth > changeValue ? changeValue : lastColWidth - lastWidth;\r\n        lastCol.width = lastColWidth - lastChange + 'px';\r\n      }\r\n    }\r\n  };\r\n}\r\n\r\nexport const highPerformanceFilter = (arr, func) => {\r\n  let res = [];\r\n  const arrLength = arr.length;\r\n  // 经过调查，在小于10000或大于99999条数据的时候，for循环速度比filter速度会快7至8倍左右\r\n  if (arrLength < 10000 || arrLength > 99999) {\r\n    for (let a = 0; a < arrLength; a++) {\r\n      if (func(arr[a], a)) {\r\n        res.push(arr[a]);\r\n      }\r\n    }\r\n  } else {\r\n    res = arr.filter(func);\r\n  }\r\n  return res;\r\n};\r\n\r\n// 生成随机Id\r\nexport const generateId = () => {\r\n  let timeStamp = new Date().getTime();\r\n  if (window.performance && typeof window.performance.now === 'function') {\r\n    timeStamp += performance.now();\r\n  }\r\n  const id = 'aaaaaaaaaaaaaaabaaaaaaaaaaaaaaa'.replace(/[ab]/g, (item) => {\r\n    const res = (timeStamp + Math.random() * 16) % 16 | 0;\r\n    timeStamp = Math.floor(timeStamp / 16);\r\n    return (item === 'a' ? res : (res & 0x3) | 0x8).toString(16);\r\n  });\r\n  return id;\r\n};\r\n\r\nexport const highPerformanceExpandObjectInArray = (oldObj, attr) => {\r\n  oldObj[Symbol.iterator] = () => {\r\n    return {\r\n      next: function next() {\r\n        const array = Reflect.ownKeys(oldObj);\r\n        if (this.index < array.length - 1) {\r\n          const key = array[this.index];\r\n          this.index++;\r\n          return { value: oldObj[key] };\r\n        } else {\r\n          return { done: true };\r\n        }\r\n      },\r\n      index: 0,\r\n    };\r\n  };\r\n  if (attr) {\r\n    const newObj = [];\r\n    for (let i = 0; i < attr.length; i++) {\r\n      if (Object.prototype.hasOwnProperty.call(oldObj, attr[i])) {\r\n        newObj.push(oldObj[attr[i]]);\r\n      }\r\n    }\r\n    return newObj;\r\n  }\r\n  return [...oldObj];\r\n};\r\n\r\n// 将一些公共方法拆分出来\r\nexport const getNodeIndex = (nodeId, treeTableArray) => {\r\n  // 找到节点在总数据中的位置的方法\r\n  return treeTableArray.findIndex((v) => v.node_id === nodeId);\r\n};\r\n\r\nexport class FindChild {\r\n  // 寻找子节点\r\n  allChildCol: any = [];\r\n\r\n  getChildrenOfItem(node, treeTableArray) {\r\n    // 找到节点下的子节点的方法\r\n    const data: any = highPerformanceFilter(treeTableArray, (item) => item.parent_node_id === node.node_id);\r\n    return data;\r\n  }\r\n\r\n  getAllChildrenOfItem(node, treeTableArray) {\r\n    // 找到节点下所有子集的方法\r\n    this.allChildCol = [];\r\n    this.getAllChildrenData(node, treeTableArray);\r\n    return this.allChildCol;\r\n  }\r\n\r\n  getAllChildrenData(node, treeTableArray) {\r\n    const childData = this.getChildrenOfItem(node, treeTableArray);\r\n    const newArray = [...childData];\r\n    newArray.push(node);\r\n    this.allChildCol = [...this.allChildCol, ...newArray];\r\n    for (let i = 0; i < childData.length; i++) {\r\n      if (childData[i].node_type) {\r\n        this.getAllChildrenData(childData[i], treeTableArray);\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nexport const distinct = (recordArr, nodeArr) => {\r\n  // 数组去重的方法\r\n  const arr = recordArr.concat(nodeArr);\r\n  const result = [];\r\n  const obj = {};\r\n  for (const i of arr) {\r\n    if (!obj[i.node_id]) {\r\n      result.push(i);\r\n      obj[i.node_id] = 1;\r\n    }\r\n  }\r\n  return result;\r\n};\r\n\r\nexport const highPerformanceMap = (arr, func) => {\r\n  let res = [];\r\n  const arrLength = arr.length;\r\n  if (arrLength < 10000 || arrLength > 99999) {\r\n    for (let a = 0; a < arrLength; a++) {\r\n      const rs = func(arr[a], a);\r\n      if (rs) {\r\n        res.push(rs);\r\n      }\r\n    }\r\n  } else {\r\n    res = arr.map(func);\r\n  }\r\n  return res;\r\n};\r\n\r\nexport const flatTreeData = (dataSource: any[]) => {\r\n  const flatData = [];\r\n  const travelObj = (arr, parentId) => {\r\n    arr.forEach((item) => {\r\n      if (item.children) {\r\n        const obj = {\r\n          id: generateId(),\r\n          node_id: generateId(),\r\n          node_type: 1,\r\n          parent_node_id: parentId,\r\n          ...item,\r\n        };\r\n        const children = obj.children;\r\n        delete obj.children;\r\n        flatData.push(obj);\r\n        travelObj(children, obj.node_id);\r\n      } else {\r\n        const obj = {\r\n          id: generateId(),\r\n          node_id: generateId(),\r\n          node_type: 0,\r\n          parent_node_id: parentId,\r\n          ...item,\r\n        };\r\n        flatData.push(obj);\r\n      }\r\n    });\r\n  };\r\n\r\n  travelObj(dataSource, null);\r\n\r\n  return flatData;\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i6.EditorDirective","i7","i8.DisPlayCellValuePipe","i1","i3","i4","i5.DataTableCellComponent","i4.DataTableRowComponent","i5","i2.FilterComponent","i3.SortComponent","i6","i7.TableThComponent","i5.DataTableBodyComponent","i6.DataTableHeadComponent","i7.TableTbodyComponent","i8","i1.TableTdService"],"mappings":"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"}