{"version":3,"file":"troplabs-angular-datatable.mjs","sources":["../../../projects/angular-datatable/src/lib/angular-datatable.directive.ts","../../../projects/angular-datatable/src/lib/default-sorter.component.ts","../../../projects/angular-datatable/src/lib/paginator.component.ts","../../../projects/angular-datatable/src/lib/bootstrap-paginator.component.ts","../../../projects/angular-datatable/src/lib/angular-datatable.module.ts","../../../projects/angular-datatable/src/public-api.ts","../../../projects/angular-datatable/src/troplabs-angular-datatable.ts"],"sourcesContent":["import { Directive, DoCheck, EventEmitter, Input, IterableDiffer, IterableDiffers, OnChanges, Output, SimpleChange } from '@angular/core';\nimport orderBy from 'lodash.orderby';\nimport { ReplaySubject } from 'rxjs';\n\nexport type SortOrder = 'asc' | 'desc';\nexport interface SortEvent {\n  sortBy: string | string[];\n  sortOrder: SortOrder\n}\n\nexport interface PageEvent {\n  activePage: number;\n  rowsOnPage: number;\n  dataLength: number;\n}\n\nexport interface DataEvent {\n  length: number;\n}\n\n@Directive({\n  selector: 'table[mfData]',\n  exportAs: 'mfDataTable'\n})\nexport class AngularDatatableDirective implements OnChanges, DoCheck {\n  private diff: IterableDiffer<any>;\n  @Input(\"mfData\") public inputData: any[] = [];\n\n  @Input(\"mfSortBy\") public sortBy: string | string[] = \"\";\n  @Input(\"mfSortOrder\") public sortOrder: SortOrder = \"asc\";\n  @Output(\"mfSortByChange\") public sortByChange = new EventEmitter<string | string[]>();\n  @Output(\"mfSortOrderChange\") public sortOrderChange = new EventEmitter<string>();\n\n  @Input(\"mfRowsOnPage\") public rowsOnPage = 1000;\n  @Input(\"mfActivePage\") public activePage = 1;\n\n  private mustRecalculateData = false;\n\n  public data: any[];\n\n  public onSortChange = new ReplaySubject<SortEvent>(1);\n  public onPageChange = new EventEmitter<PageEvent>();\n\n  public constructor(private differs: IterableDiffers) {\n    this.diff = differs.find([]).create(null);\n  }\n\n  public getSort(): SortEvent {\n    return { sortBy: this.sortBy, sortOrder: this.sortOrder };\n  }\n\n  public setSort(sortBy: string | string[], sortOrder: string): void {\n    if (this.sortBy !== sortBy || this.sortOrder !== sortOrder) {\n      this.sortBy = sortBy;\n      this.sortOrder = ([\"asc\", \"desc\"].includes(sortOrder) ? sortOrder : \"asc\") as SortOrder;\n      this.mustRecalculateData = true;\n      this.onSortChange.next({ sortBy: sortBy, sortOrder: sortOrder as SortOrder });\n      this.sortByChange.emit(this.sortBy);\n      this.sortOrderChange.emit(this.sortOrder);\n    }\n  }\n\n  public getPage(): PageEvent {\n    return { activePage: this.activePage, rowsOnPage: this.rowsOnPage, dataLength: this.inputData.length };\n  }\n\n  public setPage(activePage: number, rowsOnPage: number): void {\n    if (this.rowsOnPage !== rowsOnPage || this.activePage !== activePage) {\n      this.activePage = this.activePage !== activePage ? activePage : this.calculateNewActivePage(this.rowsOnPage, rowsOnPage);\n      this.rowsOnPage = rowsOnPage;\n      this.mustRecalculateData = true;\n      this.onPageChange.emit({\n        activePage: this.activePage,\n        rowsOnPage: this.rowsOnPage,\n        dataLength: this.inputData ? this.inputData.length : 0\n      });\n    }\n  }\n\n  private calculateNewActivePage(previousRowsOnPage: number, currentRowsOnPage: number): number {\n    let firstRowOnPage = (this.activePage - 1) * previousRowsOnPage + 1;\n    let newActivePage = Math.ceil(firstRowOnPage / currentRowsOnPage);\n    return newActivePage;\n  }\n\n  private recalculatePage() {\n    let lastPage = Math.ceil(this.inputData.length / this.rowsOnPage);\n    this.activePage = lastPage < this.activePage ? lastPage : this.activePage;\n    this.activePage = this.activePage || 1;\n\n    this.onPageChange.emit({\n      activePage: this.activePage,\n      rowsOnPage: this.rowsOnPage,\n      dataLength: this.inputData.length\n    });\n  }\n\n  public ngOnChanges(changes: { [key: string]: SimpleChange }): any {\n    if (changes[\"rowsOnPage\"]) {\n      this.rowsOnPage = changes[\"rowsOnPage\"].previousValue;\n      this.setPage(this.activePage, changes[\"rowsOnPage\"].currentValue);\n      this.mustRecalculateData = true;\n    }\n    if (changes[\"sortBy\"] || changes[\"sortOrder\"]) {\n      if (![\"asc\", \"desc\"].includes(this.sortOrder)) {\n        console.warn(\"angular2-datatable: value for input mfSortOrder must be one of ['asc', 'desc'], but is:\", this.sortOrder);\n        this.sortOrder = \"asc\";\n      }\n      if (this.sortBy) {\n        this.onSortChange.next({ sortBy: this.sortBy, sortOrder: this.sortOrder });\n      }\n      this.mustRecalculateData = true;\n    }\n    if (changes[\"inputData\"]) {\n      this.inputData = changes[\"inputData\"].currentValue || [];\n      this.recalculatePage();\n      this.mustRecalculateData = true;\n    }\n  }\n\n  public ngDoCheck(): any {\n    let changes = this.diff.diff(this.inputData);\n    if (changes) {\n      this.recalculatePage();\n      this.mustRecalculateData = true;\n    }\n    if (this.mustRecalculateData) {\n      this.fillData();\n      this.mustRecalculateData = false;\n    }\n  }\n\n  private fillData(): void {\n    this.activePage = this.activePage;\n    this.rowsOnPage = this.rowsOnPage;\n\n    let offset = (this.activePage - 1) * this.rowsOnPage;\n    let data = this.inputData;\n    var sortBy = this.sortBy;\n    if (typeof sortBy === 'string' || sortBy instanceof String) {\n      data = orderBy(data, this.caseInsensitiveIteratee(<string>sortBy), [this.sortOrder]);\n    } else {\n      data = orderBy(data, sortBy, [this.sortOrder]);\n    }\n    data = data.slice(offset, offset + this.rowsOnPage);\n    this.data = data;\n  }\n\n  private caseInsensitiveIteratee(sortBy: string) {\n    return (row: any): any => {\n      var value = row;\n      for (let sortByProperty of sortBy.split('.')) {\n        if (value) {\n          value = value[sortByProperty];\n        }\n      }\n      if (value && typeof value === 'string' || value instanceof String) {\n        return value.toLowerCase();\n      }\n      return value;\n    };\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { AngularDatatableDirective, SortEvent } from './angular-datatable.directive';\n\n@Component({\n  selector: 'mf-default-sorter',\n  template: `\n  <a style=\"cursor: pointer\" (click)=\"sort()\" class=\"text-nowrap\">\n      <ng-content></ng-content>\n      <span *ngIf=\"isSortedByMeAsc\" class=\"glyphicon glyphicon-triangle-top fa fa-sort-up\" aria-hidden=\"true\"></span>\n      <span *ngIf=\"isSortedByMeDesc\" class=\"glyphicon glyphicon-triangle-bottom fa fa-sort-down\" aria-hidden=\"true\"></span>\n  </a>`\n})\nexport class DefaultSorterComponent implements OnInit {\n  @Input(\"by\") sortBy: string;\n\n  isSortedByMeAsc: boolean = false;\n  isSortedByMeDesc: boolean = false;\n\n  public constructor(private mfTable: AngularDatatableDirective) {\n  }\n\n  public ngOnInit(): void {\n    this.mfTable.onSortChange.subscribe((event: SortEvent) => {\n      this.isSortedByMeAsc = (event.sortBy == this.sortBy && event.sortOrder == \"asc\");\n      this.isSortedByMeDesc = (event.sortBy == this.sortBy && event.sortOrder == \"desc\");\n    });\n  }\n\n  sort() {\n    if (this.isSortedByMeAsc) {\n      this.mfTable.setSort(this.sortBy, \"desc\");\n    } else {\n      this.mfTable.setSort(this.sortBy, \"asc\");\n    }\n  }\n}\n","import { Component, Input, OnChanges, Optional, SimpleChange } from '@angular/core';\nimport { AngularDatatableDirective, PageEvent } from './angular-datatable.directive';\n\n@Component({\n  selector: 'mf-paginator',\n  template: `<ng-content></ng-content>`\n})\nexport class PaginatorComponent implements OnChanges {\n\n  @Input(\"mfTable\") inputMfTable: AngularDatatableDirective;\n\n  private mfTable: AngularDatatableDirective;\n\n  public activePage: number;\n  public rowsOnPage: number;\n  public dataLength: number = 0;\n  public lastPage: number;\n\n  public constructor(@Optional() private injectMfTable: AngularDatatableDirective) {\n  }\n\n  public ngOnChanges(changes: { [key: string]: SimpleChange }): any {\n    this.mfTable = this.inputMfTable || this.injectMfTable;\n    this.onPageChangeSubscriber(this.mfTable.getPage());\n    this.mfTable.onPageChange.subscribe(this.onPageChangeSubscriber);\n  }\n\n  public setPage(pageNumber: number): void {\n    this.mfTable.setPage(pageNumber, this.rowsOnPage);\n  }\n\n  public setRowsOnPage(rowsOnPage: number): void {\n    this.mfTable.setPage(this.activePage, rowsOnPage);\n  }\n\n  private onPageChangeSubscriber = (event: PageEvent) => {\n    this.activePage = event.activePage;\n    this.rowsOnPage = event.rowsOnPage;\n    this.dataLength = event.dataLength;\n    this.lastPage = Math.ceil(this.dataLength / this.rowsOnPage);\n  };\n\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport min from 'lodash.min';\nimport { AngularDatatableDirective } from './angular-datatable.directive';\n\n@Component({\n  selector: 'mf-bootstrap-paginator',\n  template: `\n    <mf-paginator #p [mfTable]=\"mfTable\">\n        <ul class=\"pagination\" *ngIf=\"p.dataLength > p.rowsOnPage\">\n            <li class=\"page-item\" [class.disabled]=\"p.activePage <= 1\" (click)=\"p.setPage(1)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">&laquo;</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage > 4 && p.activePage + 1 > p.lastPage\" (click)=\"p.setPage(p.activePage - 4)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage-4}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage > 3 && p.activePage + 2 > p.lastPage\" (click)=\"p.setPage(p.activePage - 3)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage-3}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage > 2\" (click)=\"p.setPage(p.activePage - 2)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage-2}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage > 1\" (click)=\"p.setPage(p.activePage - 1)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage-1}}</a>\n            </li>\n            <li class=\"page-item active\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage + 1 <= p.lastPage\" (click)=\"p.setPage(p.activePage + 1)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage+1}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage + 2 <= p.lastPage\" (click)=\"p.setPage(p.activePage + 2)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage+2}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage + 3 <= p.lastPage && p.activePage < 3\" (click)=\"p.setPage(p.activePage + 3)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage+3}}</a>\n            </li>\n            <li class=\"page-item\" *ngIf=\"p.activePage + 4 <= p.lastPage && p.activePage < 2\" (click)=\"p.setPage(p.activePage + 4)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{p.activePage+4}}</a>\n            </li>\n            <li class=\"page-item\" [class.disabled]=\"p.activePage >= p.lastPage\" (click)=\"p.setPage(p.lastPage)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">&raquo;</a>\n            </li>\n        </ul>\n        <ul class=\"pagination pull-right float-sm-right\" *ngIf=\"p.dataLength > minRowsOnPage\">\n            <li class=\"page-item\" *ngFor=\"let rows of rowsOnPageSet\" [class.active]=\"p.rowsOnPage===rows\" (click)=\"p.setRowsOnPage(rows)\">\n                <a class=\"page-link\" style=\"cursor: pointer\">{{rows}}</a>\n            </li>\n        </ul>\n    </mf-paginator>\n    `\n})\nexport class BootstrapPaginatorComponent implements OnChanges {\n  @Input(\"rowsOnPageSet\") rowsOnPageSet = [];\n  @Input(\"mfTable\") mfTable: AngularDatatableDirective;\n\n  minRowsOnPage = 0;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.rowsOnPageSet) {\n      this.minRowsOnPage = min(this.rowsOnPageSet)\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from \"@angular/common\";\nimport { AngularDatatableDirective } from './angular-datatable.directive';\nimport { DefaultSorterComponent } from './default-sorter.component';\nimport { PaginatorComponent } from './paginator.component';\nimport { BootstrapPaginatorComponent } from './bootstrap-paginator.component';\n\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n  ],\n  declarations: [AngularDatatableDirective, DefaultSorterComponent, PaginatorComponent, BootstrapPaginatorComponent],\n  exports: [AngularDatatableDirective, DefaultSorterComponent, PaginatorComponent, BootstrapPaginatorComponent]\n})\nexport class AngularDatatableModule { }\n","/*\n * Public API Surface of angular-datatable\n */\n\nexport * from './lib/angular-datatable.module';\nexport * from './lib/angular-datatable.directive';\nexport * from './lib/default-sorter.component';\nexport * from './lib/paginator.component';\nexport * from './lib/bootstrap-paginator.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AngularDatatableDirective","i2","i2.PaginatorComponent"],"mappings":"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"}