{"version":3,"file":"deliverysolutions-ng-datatable.mjs","sources":["../../../projects/ng-datatable/src/lib/DataTable.ts","../../../projects/ng-datatable/src/lib/Paginator.ts","../../../projects/ng-datatable/src/lib/BootstrapPaginator.ts","../../../projects/ng-datatable/src/lib/DefaultSorter.ts","../../../projects/ng-datatable/src/lib/DataTableModule.ts","../../../projects/ng-datatable/src/public-api.ts","../../../projects/ng-datatable/src/deliverysolutions-ng-datatable.ts"],"sourcesContent":["import {\n    Directive, Input, EventEmitter, SimpleChange, OnChanges, DoCheck, IterableDiffers,\n    IterableDiffer, Output\n} from \"@angular/core\";\nimport { ReplaySubject } from \"rxjs\";\n\n\nexport type SortOrder = \"asc\" | \"desc\";\nexport type SortByFunction = (data: any) => any;\nexport type SortBy = string | SortByFunction | (string | SortByFunction)[];\n\nexport interface SortEvent {\n    sortBy: SortBy;\n    sortOrder: string;\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 DataTable implements OnChanges, DoCheck {\n\n    private diff: IterableDiffer<any>;\n    @Input(\"mfData\") public inputData: any[] = [];\n\n    @Input(\"mfSortBy\") public sortBy: SortBy = \"\";\n    @Input(\"mfSortOrder\") public sortOrder: SortOrder = \"asc\";\n    @Output(\"mfSortByChange\") public sortByChange = new EventEmitter<SortBy>();\n    @Output(\"mfSortOrderChange\") public sortOrderChange = new EventEmitter<SortOrder>();\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(differs: IterableDiffers) {\n        this.diff = differs.find([]).create();\n    }\n\n    public getSort(): SortEvent {\n        return { sortBy: this.sortBy, sortOrder: this.sortOrder };\n    }\n\n    public setSort(sortBy: SortBy, sortOrder: SortOrder): void {\n        if (this.sortBy !== sortBy || this.sortOrder !== sortOrder) {\n            this.sortBy = sortBy;\n            this.sortOrder = [\"asc\", \"desc\"].indexOf(sortOrder) >= 0 ? sortOrder : \"asc\";\n            this.mustRecalculateData = true;\n            this.onSortChange.next({ sortBy: this.sortBy, sortOrder: this.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        const firstRowOnPage = (this.activePage - 1) * previousRowsOnPage + 1;\n        const newActivePage = Math.ceil(firstRowOnPage / currentRowsOnPage);\n        return newActivePage;\n    }\n\n    private recalculatePage() {\n        const 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\"].indexOf(this.sortOrder) < 0) {\n                console.warn(\"ng-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.diff.diff(this.inputData); // Update diff to prevent duplicate update in ngDoCheck\n            this.recalculatePage();\n            this.mustRecalculateData = true;\n        }\n    }\n\n    public ngDoCheck(): any {\n        const 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        const offset = (this.activePage - 1) * this.rowsOnPage;\n        // let data = this.inputData;\n        // const sortBy = this.sortBy;\n        // if (typeof sortBy === \"string\" || sortBy instanceof String) {\n        //     data = orderBy(data, this.caseInsensitiveIteratee(sortBy as string), [this.sortOrder]);\n        // } else {\n        //     data = orderBy(data, sortBy, [this.sortOrder]);\n        // }\n        // data = slice(data, offset, offset + this.rowsOnPage);\n\n        this.data = [...this.inputData]\n            .sort(this.sorter(this.sortBy, this.sortOrder))\n            .slice(offset, offset + this.rowsOnPage);\n    }\n\n    private caseInsensitiveIteratee(sortBy: string | SortByFunction) {\n        return (row: any): any => {\n            let value = row;\n            if (typeof sortBy === \"string\" || sortBy instanceof String) {\n                for (const sortByProperty of sortBy.split(\".\")) {\n                    if (value) {\n                        value = value[sortByProperty];\n                    }\n                }\n            } else if (typeof sortBy === \"function\") {\n                value = sortBy(value);\n            }\n\n            if (value && typeof value === \"string\" || value instanceof String) {\n                return value.toLowerCase();\n            }\n\n            return value;\n        };\n    }\n\n    private compare(left: any, right: any): number {\n        if (left === right) {\n            return 0;\n        }\n        if (left == null && right != null) {\n            return -1;\n        }\n        if (right == null) {\n            return 1;\n        }\n        return left > right ? 1 : -1;\n    }\n\n    private sorter<T>(sortBy: SortBy, sortOrder: SortOrder): (left: T, right: T) => number {\n        const order = sortOrder === \"desc\" ? -1 : 1;\n        if (Array.isArray(sortBy)) {\n            const iteratees = sortBy.map((entry) => this.caseInsensitiveIteratee(entry));\n            return (left, right) => {\n                for (const iteratee of iteratees) {\n                    const comparison = this.compare(iteratee(left), iteratee(right)) * order;\n                    if (comparison !== 0) {\n                        return comparison;\n                    }\n                }\n                return 0;\n            };\n        } else {\n            const iteratee = this.caseInsensitiveIteratee(sortBy);\n            return (left, right) => this.compare(iteratee(left), iteratee(right)) * order;\n        }\n    }\n}\n","import {Component, Input, SimpleChange, OnChanges, Optional} from \"@angular/core\";\nimport {DataTable, PageEvent} from \"./DataTable\";\n\n@Component({\n    selector: \"mfPaginator\",\n    template: `<ng-content></ng-content>`\n})\nexport class Paginator implements OnChanges {\n\n    @Input(\"mfTable\") inputMfTable: DataTable;\n\n    private mfTable: DataTable;\n\n    public activePage: number;\n    public rowsOnPage: number;\n    public dataLength = 0;\n    public lastPage: number;\n\n    public constructor(@Optional() private injectMfTable: DataTable) {\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","import {Component, Input, OnChanges} from \"@angular/core\";\nimport {DataTable} from \"./DataTable\";\n\n@Component({\n    selector: \"mfBootstrapPaginator\",\n    template: `\n    <mfPaginator #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    </mfPaginator>\n    `\n})\nexport class BootstrapPaginator implements OnChanges {\n    @Input() rowsOnPageSet: number[] = [];\n    @Input() mfTable: DataTable;\n\n    minRowsOnPage = 0;\n\n    ngOnChanges(changes: any): any {\n        if (changes.rowsOnPageSet) {\n            this.minRowsOnPage = this.rowsOnPageSet.reduce((previous, current) => current < previous ? current : previous);\n        }\n    }\n}\n","import {Component, Directive, EventEmitter, HostListener, Input, OnInit, Output} from \"@angular/core\";\nimport {DataTable, SortBy, SortEvent} from \"./DataTable\";\n\n@Component({\n    selector: \"mfDefaultSorter\",\n    template: `\n        <a style=\"cursor: pointer\" (click)=\"sort()\" (sortOnKeypress)=\"sort()\" class=\"text-nowrap\">\n            <ng-content></ng-content>\n            <span *ngIf=\"!isSortedByMeAsc && !isSortedByMeDesc\" class=\"fe-bold-transform90 fe-code\" aria-hidden=\"true\" aria-label=\"none\"></span>\n            <span *ngIf=\"isSortedByMeAsc\" class=\"fe-bold-black fe-chevron-up\" aria-hidden=\"true\" aria-label=\"asc\"></span>\n            <span *ngIf=\"isSortedByMeDesc\" class=\"fe-bold-black fe-chevron-down\" aria-hidden=\"true\" aria-label=\"desc\"></span>\n        </a>`\n})\nexport class DefaultSorter implements OnInit {\n    @Input(\"by\") sortBy: SortBy;\n\n    isSortedByMeAsc = false;\n    isSortedByMeDesc = false;\n\n    public constructor(private mfTable: DataTable) {\n    }\n\n    public ngOnInit(): void {\n        this.mfTable.onSortChange.subscribe((event: SortEvent) => {\n            /* eslint-disable eqeqeq */\n            this.isSortedByMeAsc = (event.sortBy == this.sortBy && event.sortOrder === \"asc\");\n            this.isSortedByMeDesc = (event.sortBy == this.sortBy && event.sortOrder === \"desc\");\n            /* eslint-enable eqeqeq */\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        return false;\n    }\n}\n\n@Directive({\n    selector: '[sortOnKeypress]'\n})\nexport class SortOnKeypressDirective {\n\n    @Output() sortOnKeypress: EventEmitter<void> = new EventEmitter();\n\n    constructor() { }\n\n    @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n        const key = event.key;\n        if (key === 'Enter' || key === 'Space') {\n            this.sortOnKeypress.emit();\n        }\n    }\n}\n","import {NgModule} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\n\nimport {DataTable} from \"./DataTable\";\nimport {DefaultSorter, SortOnKeypressDirective} from \"./DefaultSorter\";\nimport {Paginator} from \"./Paginator\";\nimport {BootstrapPaginator} from \"./BootstrapPaginator\";\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [\n        DataTable,\n        DefaultSorter,\n        Paginator,\n        BootstrapPaginator,\n        SortOnKeypressDirective,\n    ],\n    exports: [\n        DataTable,\n        DefaultSorter,\n        Paginator,\n        BootstrapPaginator\n    ]\n})\nexport class DataTableModule {\n\n}\n","/*\n * Public API Surface of ng-datatable\n */\n\nexport * from \"./lib/BootstrapPaginator\";\nexport * from \"./lib/Paginator\";\nexport * from \"./lib/DefaultSorter\";\nexport * from \"./lib/DataTable\";\nexport * from \"./lib/DataTableModule\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DataTable","i2.Paginator","i2"],"mappings":"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"}