{"version":3,"file":"inok-ng-table-sortable.mjs","sources":["../../../projects/ng-table-sortable/src/lib/ng-table-sortable.service.ts","../../../projects/ng-table-sortable/src/lib/ng-table-sortable.component.ts","../../../projects/ng-table-sortable/src/lib/ng-table-sortable.component.html","../../../projects/ng-table-sortable/src/lib/ng-table-sortable.directive.ts","../../../projects/ng-table-sortable/src/lib/ng-table-sortable.module.ts","../../../projects/ng-table-sortable/src/lib/utils.ts","../../../projects/ng-table-sortable/src/public_api.ts","../../../projects/ng-table-sortable/src/inok-ng-table-sortable.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport {Subject} from 'rxjs';\r\n\r\nimport {ColumnSort} from './interfaces/column-sort.interface';\r\n\r\n@Injectable()\r\nexport class NgTableSortableService {\r\n  private columnsList: ColumnSort[] = [];\r\n  private columnSortedSource = new Subject<ColumnSort[]>();\r\n\r\n  columnSorted$ = this.columnSortedSource.asObservable();\r\n\r\n  columnSorted(column: ColumnSort, append: boolean): void {\r\n    if (append) {\r\n      const index: number = this.columnsList.findIndex((evt: ColumnSort) => evt.sortColumn === column.sortColumn);\r\n      if (index > -1) {\r\n        this.columnsList.splice(index, 1);\r\n      }\r\n      this.columnsList.push(column);\r\n    } else {\r\n      this.columnsList = [column];\r\n    }\r\n    this.columnSortedSource.next(this.columnsList);\r\n  }\r\n\r\n  cleanSortColumns(): void {\r\n    this.columnsList = [];\r\n  }\r\n\r\n  addSortColumn(column: ColumnSort): void {\r\n    this.columnsList.push(column);\r\n  }\r\n\r\n  updateSortColumns(): void {\r\n    this.columnSortedSource.next(this.columnsList);\r\n  }\r\n\r\n  getSortColumns(): ColumnSort[] {\r\n    return [...this.columnsList];\r\n  }\r\n}\r\n","import {Component, HostListener, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\n\r\nimport {NgTableSortableService} from './ng-table-sortable.service';\r\nimport {ColumnSort} from './interfaces/column-sort.interface';\r\n\r\n@Component({\r\n  selector: '[sortable-column]',\r\n  templateUrl: './ng-table-sortable.component.html',\r\n  styleUrls: ['./ng-table-sortable.component.less']\r\n})\r\nexport class NgTableSortableComponent implements OnInit, OnDestroy {\r\n  private columnSortedSubscription: Subscription;\r\n  sortDirection = '';\r\n\r\n  @Input('sortable-column') columnName: string;\r\n  @Input('sort-disabled') sortDisabled = false;\r\n\r\n  @HostListener('click', ['$event']) sort(event) {\r\n    if (!this.sortDisabled) {\r\n      this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\r\n      this.sortableService.columnSorted({\r\n        sortColumn: this.columnName, sortDirection: this.sortDirection\r\n      }, event.ctrlKey);\r\n    }\r\n  }\r\n\r\n  constructor(private sortableService: NgTableSortableService) {}\r\n\r\n  ngOnInit() {\r\n    if (!this.sortDisabled) {\r\n      this.onChangeColumns(this.sortableService.getSortColumns());\r\n      this.columnSortedSubscription = this.sortableService.columnSorted$.subscribe(this.onChangeColumns.bind(this));\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.columnSortedSubscription) {\r\n      this.columnSortedSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  onChangeColumns(columns: ColumnSort[]): void {\r\n    const currentColumn: ColumnSort = columns.find((column: ColumnSort) => this.columnName === column.sortColumn);\r\n    if (currentColumn) {\r\n      this.sortDirection = currentColumn.sortDirection;\r\n    } else {\r\n      this.sortDirection = '';\r\n    }\r\n  }\r\n}\r\n","<div *ngIf=\"!sortDisabled\" class=\"sorting-wrapper\">\r\n  <div class=\"sorting-header\">\r\n    <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\r\n    <span class=\"sorting-direction\"\r\n          [ngClass]=\"{'glyphicon': sortDirection,\r\n                      'glyphicon-chevron-up': sortDirection === 'asc',\r\n                      'glyphicon-chevron-down': sortDirection === 'desc',\r\n                      'no-sort': !sortDirection}\">\r\n  </span>\r\n  </div>\r\n</div>\r\n\r\n<span *ngIf=\"sortDisabled\">\r\n  <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\r\n</span>\r\n\r\n<ng-template #headerTpl><ng-content></ng-content></ng-template>\r\n","import {Directive, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges} from '@angular/core';\r\nimport {Subscription} from 'rxjs';\r\n\r\nimport {ColumnSort} from './interfaces/column-sort.interface';\r\nimport {NgTableSortableService} from './ng-table-sortable.service';\r\n\r\n@Directive({\r\n  selector: '[sortable-table]',\r\n  providers: [NgTableSortableService]\r\n})\r\nexport class NgTableSortableDirective implements OnChanges, OnDestroy {\r\n  private columnSortedSubscription: Subscription;\r\n\r\n  @Input('sortable-table') sortingList: string[] = [];\r\n\r\n  @Output() sorted = new EventEmitter<ColumnSort[]>();\r\n\r\n  constructor(private sortableService: NgTableSortableService) {\r\n    this.columnSortedSubscription = this.sortableService.columnSorted$.subscribe(\r\n      (columns: ColumnSort[]) => {\r\n        this.sorted.emit(columns);\r\n      }\r\n    );\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    this.updateSortingList();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.columnSortedSubscription.unsubscribe();\r\n  }\r\n\r\n  private updateSortingList(): void {\r\n    this.sortableService.cleanSortColumns();\r\n    if (this.sortingList.length) {\r\n      this.sortingList.forEach(\r\n        (sort: string) => {\r\n          this.sortableService.addSortColumn(this.formatSortString(sort));\r\n        }\r\n      );\r\n    }\r\n    this.sortableService.updateSortColumns();\r\n  }\r\n\r\n  private formatSortString(sort: string): ColumnSort {\r\n    const column: ColumnSort = {\r\n      sortColumn: sort,\r\n      sortDirection: 'asc'\r\n    };\r\n    if (column.sortColumn[0] === '-') {\r\n      column.sortDirection = 'desc';\r\n      column.sortColumn = sort.slice(1);\r\n    }\r\n    return column;\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\n\r\nimport { NgTableSortableComponent } from './ng-table-sortable.component';\r\nimport {NgTableSortableDirective} from './ng-table-sortable.directive';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgTableSortableComponent,\r\n    NgTableSortableDirective\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  providers: [],\r\n  exports: [\r\n    NgTableSortableComponent,\r\n    NgTableSortableDirective\r\n  ]\r\n})\r\nexport class NgTableSortableModule { }\r\n","import {ColumnSort} from './interfaces/column-sort.interface';\r\n\r\nexport const sortTableData = (sorts: ColumnSort[]) => {\r\n  return function (obj1, obj2) {\r\n    let i = 0;\r\n    let result = 0;\r\n    const numberOfSorts = sorts.length;\r\n\r\n    while (result === 0 && i < numberOfSorts) {\r\n      result = sortLine(sorts[i])(obj1, obj2);\r\n      i++;\r\n    }\r\n    return result;\r\n  };\r\n};\r\n\r\nconst sortLine = (sort: ColumnSort) => {\r\n  const sortOrder = (sort.sortDirection === 'asc') ? 1 : -1;\r\n  return function(a, b) {\r\n    const columnA = a[sort.sortColumn];\r\n    const columnB = b[sort.sortColumn];\r\n    if (columnA === columnB) {\r\n      return 0;\r\n    }\r\n    if (columnA === null) {\r\n      return sortOrder;\r\n    }\r\n    if (columnB === null) {\r\n      return -1 * sortOrder;\r\n    }\r\n    if (typeof columnA === 'string') {\r\n      return columnA.localeCompare(columnB) * sortOrder;\r\n    }\r\n    const result = (columnA < columnB) ? -1 : (columnA > columnB) ? 1 : 0;\r\n    return result * sortOrder;\r\n  };\r\n};\r\n","/*\r\n * Public API Surface of ng-table-sortable\r\n */\r\n\r\nexport * from './lib/ng-table-sortable.service';\r\nexport * from './lib/ng-table-sortable.component';\r\nexport * from './lib/ng-table-sortable.module';\r\nexport * from './lib/ng-table-sortable.directive';\r\nexport * from './lib/utils';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.NgTableSortableService"],"mappings":"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"}