{"version":3,"file":"bhplugin-ng-datatable.mjs","sources":["../../lib/modals.ts","../../lib/slot.directive.ts","../../lib/column-filter.ts","../../lib/icon-check.ts","../../lib/icon-dash.ts","../../lib/icon-filter.ts","../../lib/column-header.ts","../../lib/icon-loader.ts","../../lib/ng-datatable.ts","../../lib/ng-datatable.html","../../lib/ng-datatable.module.ts","../../public-api.ts","../../bhplugin-ng-datatable.ts"],"sourcesContent":["export class colDef {\r\n    isUnique?: boolean;\r\n    field: string;\r\n    title?: string;\r\n    value?: any;\r\n    condition?: any;\r\n    type?: string; // string|date|number|bool\r\n    width?: string | undefined;\r\n    minWidth?: string | undefined;\r\n    maxWidth?: string | undefined;\r\n    hide?: boolean;\r\n    filter?: boolean; // column filter\r\n    search?: boolean; // global search\r\n    sort?: boolean;\r\n    html?: boolean;\r\n    cellRenderer?: any; // [Function, string]\r\n    headerClass?: string;\r\n    cellClass?: string;\r\n}\r\n\r\nexport class Pager {\r\n    public totalRows: number;\r\n    public currentPage: number;\r\n    public pageSize: number;\r\n    public maxPage: number;\r\n    public startPage: number;\r\n    public endPage: number;\r\n    public stringFormat: string;\r\n    public pages: any;\r\n}\r\n","import { TemplateRef, Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[slot]',\r\n})\r\nexport class SlotDirective {\r\n    @Input('slot') fieldName: string;\r\n    @Input('slotValue') value: any;\r\n\r\n    constructor(public templateRef: TemplateRef<any>) {}\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'column-filter',\r\n    template: `\r\n        <div class=\"bh-filter-menu bh-absolute bh-z-[1] bh-bg-white bh-shadow-md bh-rounded-md bh-top-full bh-right-0 bh-w-32 bh-mt-1\">\r\n            <div class=\"bh-text-[13px] bh-font-normal bh-rounded bh-overflow-hidden\" (click)=\"closeMethod(); $event.stopPropagation()\">\r\n                <button type=\"button\" [class.active]=\"column.condition === ''\" (click)=\"select('')\">No filter</button>\r\n                <ng-container *ngIf=\"column.type === 'string'\">\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'contain'\" (click)=\"select('contain')\">Contain</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'not_contain'\" (click)=\"select('not_contain')\">Not contain</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'equal'\" (click)=\"select('equal')\">Equal</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'not_equal'\" (click)=\"select('not_equal')\">Not equal</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'start_with'\" (click)=\"select('start_with')\">Starts with</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'end_with'\" (click)=\"select('end_with')\">Ends with</button>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"column.type === 'number'\">\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'equal'\" (click)=\"select('equal')\">Equal</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'not_equal'\" (click)=\"select('not_equal')\">Not Equal</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'greater_than'\" (click)=\"select('greater_than')\">Greater than</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'greater_than_equal'\" (click)=\"select('greater_than_equal')\">Greater than or equal</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'less_than'\" (click)=\"select('less_than')\">Less than</button>\r\n                    <button type=\"button\" [class.active]=\"column.condition === 'less_than_equal'\" (click)=\"select('less_than_equal')\">Less than or equal</button>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"column.type === 'date'\">\r\n                    <button type=\"button\" [ngClass]=\"{ active: column.condition === 'equal' }\" (click)=\"select('equal')\">Equal</button>\r\n                    <button type=\"button\" [ngClass]=\"{ active: column.condition === 'not_equal' }\" (click)=\"select('not_equal')\">Not equal</button>\r\n                    <button type=\"button\" [ngClass]=\"{ active: column.condition === 'greater_than' }\" (click)=\"select('greater_than')\">Greater than</button>\r\n                    <button type=\"button\" [ngClass]=\"{ active: column.condition === 'less_than' }\" (click)=\"select('less_than')\">Less than</button>\r\n                </ng-container>\r\n\r\n                <button type=\"button\" [ngClass]=\"{ active: column.condition === 'is_null' }\" (click)=\"select('is_null')\">Is null</button>\r\n                <button type=\"button\" [ngClass]=\"{ active: column.condition === 'is_not_null' }\" (click)=\"select('is_not_null')\">Not null</button>\r\n            </div>\r\n        </div>\r\n    `,\r\n})\r\nexport class ColumnFilterComponent {\r\n    @Input() column: any;\r\n    @Output('close') close: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output('filterChange') filterChange: EventEmitter<any> = new EventEmitter<any>();\r\n    constructor() {}\r\n\r\n    ngOnInit() {\r\n        document.addEventListener('click', this.closeMethod.bind(this));\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        document.removeEventListener('click', this.closeMethod.bind(this));\r\n    }\r\n\r\n    closeMethod() {\r\n        this.close.emit();\r\n    }\r\n\r\n    select(condition: any) {\r\n        this.column.condition = condition;\r\n        if (condition === '') {\r\n            this.column.value = '';\r\n        }\r\n\r\n        this.filterChange.emit(this.column);\r\n    }\r\n}\r\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\n@Component({\r\n    selector: 'icon-check',\r\n    template: `\r\n        <ng-template #template>\r\n            <svg [ngClass]=\"class\" version=\"1.1\" viewBox=\"0 0 17 12\">\r\n                <g fill=\"none\" fill-rule=\"evenodd\">\r\n                    <g transform=\"translate(-9 -11)\" fill=\"currentColor\" fill-rule=\"nonzero\">\r\n                        <path\r\n                            d=\"m25.576 11.414c0.56558 0.55188 0.56558 1.4439 0 1.9961l-9.404 9.176c-0.28213 0.27529-0.65247 0.41385-1.0228 0.41385-0.37034 0-0.74068-0.13855-1.0228-0.41385l-4.7019-4.588c-0.56584-0.55188-0.56584-1.4442 0-1.9961 0.56558-0.55214 1.4798-0.55214 2.0456 0l3.679 3.5899 8.3812-8.1779c0.56558-0.55214 1.4798-0.55214 2.0456 0z\"\r\n                        />\r\n                    </g>\r\n                </g>\r\n            </svg>\r\n        </ng-template>\r\n    `,\r\n})\r\nexport class IconCheckComponent {\r\n    @ViewChild('template', { static: true }) template: any;\r\n    @Input() class: any;\r\n    constructor(private viewContainerRef: ViewContainerRef) {}\r\n    ngOnInit() {\r\n        this.viewContainerRef.createEmbeddedView(this.template);\r\n    }\r\n}\r\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\n@Component({\r\n    selector: 'icon-dash',\r\n    template: `\r\n        <ng-template #template>\r\n            <svg [ngClass]=\"class\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" stroke-width=\"3\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\r\n            </svg>\r\n        </ng-template>\r\n    `,\r\n})\r\nexport class IconDashComponent {\r\n    @ViewChild('template', { static: true }) template: any;\r\n    @Input() class: any;\r\n    constructor(private viewContainerRef: ViewContainerRef) {}\r\n    ngOnInit() {\r\n        this.viewContainerRef.createEmbeddedView(this.template);\r\n    }\r\n}\r\n","import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\n@Component({\r\n    selector: 'icon-filter',\r\n    template: `\r\n        <ng-template #template>\r\n            <svg [ngClass]=\"class\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                <polygon points=\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"></polygon>\r\n            </svg>\r\n        </ng-template>\r\n    `,\r\n})\r\nexport class IconFilterComponent {\r\n    @ViewChild('template', { static: true }) template: any;\r\n    @Input() class: any;\r\n    constructor(private viewContainerRef: ViewContainerRef) {}\r\n    ngOnInit() {\r\n        this.viewContainerRef.createEmbeddedView(this.template);\r\n    }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { colDef } from './modals';\r\n\r\n@Component({\r\n    selector: 'column-header',\r\n    template: `\r\n        <ng-template #template>\r\n            <tr>\r\n                <th\r\n                    *ngIf=\"all.hasCheckbox\"\r\n                    [class]=\"'bh-w-px'\"\r\n                    [ngClass]=\"{\r\n                        'bh-sticky bh-bg-blue-light bh-z-[1]': all.stickyHeader || all.stickyFirstColumn,\r\n                        'bh-top-0': all.stickyHeader,\r\n                        'bh-left-0': all.stickyFirstColumn\r\n                    }\"\r\n                >\r\n                    <div class=\"bh-checkbox\">\r\n                        <input #selectedAll type=\"checkbox\" (click)=\"selectAll.emit(selectedAll.checked); $event.stopPropagation()\" />\r\n                        <div>\r\n                            <icon-check class=\"check\"></icon-check>\r\n                            <icon-dash class=\"intermediate\"></icon-dash>\r\n                        </div>\r\n                    </div>\r\n                </th>\r\n\r\n                <ng-container *ngFor=\"let col of all.columns; let j = index\">\r\n                    <th\r\n                        *ngIf=\"!col.hide\"\r\n                        [class]=\"'bh-select-none bh-z-[1]'\"\r\n                        [ngClass]=\"[\r\n                            all.sortable && col.sort ? 'bh-cursor-pointer' : '',\r\n                            j === 0 && all.stickyFirstColumn ? 'bh-sticky bh-left-0 bh-bg-blue-light' : '',\r\n                            all.hasCheckbox && j === 0 && all.stickyFirstColumn ? 'bh-left-[52px]' : ''\r\n                        ]\"\r\n                        [style]=\"{ width: col.width, 'min-width': col.minWidth, 'max-width': col.maxWidth }\"\r\n                    >\r\n                        <div class=\"bh-flex bh-items-center\" [ngClass]=\"[col.headerClass ? col.headerClass : '']\" (click)=\"all.sortable && col.sort && sortChange.emit(col.field)\">\r\n                            {{ col.title }}\r\n                            <span *ngIf=\"all.sortable && col.sort\" class=\"bh-ml-3 bh-sort bh-flex bh-items-center\" [ngClass]=\"[all.sortColumn, all.sortDirection]\">\r\n                                <svg width=\"16\" height=\"16\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n                                    <polygon\r\n                                        points=\"3.11,6.25 10.89,6.25 7,1.75\"\r\n                                        fill=\"currentColor\"\r\n                                        class=\"bh-text-black/20\"\r\n                                        [ngClass]=\"[all.sortColumn === col.field && all.sortDirection === 'asc' ? '!bh-text-primary' : '']\"\r\n                                    ></polygon>\r\n                                    <polygon\r\n                                        points=\"7,12.25 10.89,7.75 3.11,7.75\"\r\n                                        fill=\"currentColor\"\r\n                                        class=\"bh-text-black/20\"\r\n                                        [ngClass]=\"[all.sortColumn === col.field && all.sortDirection === 'desc' ? '!bh-text-primary' : '']\"\r\n                                    ></polygon>\r\n                                </svg>\r\n                            </span>\r\n                        </div>\r\n\r\n                        <ng-container *ngIf=\"all.columnFilter && !isFooter\">\r\n                            <div *ngIf=\"col.filter\" class=\"bh-filter bh-relative\">\r\n                                <input *ngIf=\"col.type === 'string'\" [(ngModel)]=\"col.value\" type=\"text\" class=\"bh-form-control\" (keyup)=\"filterChange.emit()\" />\r\n                                <input *ngIf=\"col.type === 'number'\" [(ngModel)]=\"col.value\" type=\"number\" class=\"bh-form-control\" (keyup)=\"filterChange.emit()\" />\r\n                                <input *ngIf=\"col.type === 'date'\" [(ngModel)]=\"col.value\" type=\"date\" class=\"bh-form-control\" (change)=\"filterChange.emit()\" />\r\n                                <select *ngIf=\"col.type === 'bool'\" [(ngModel)]=\"col.value\" class=\"bh-form-control\" (change)=\"filterChange.emit()\" (click)=\"isOpenFilter = null\">\r\n                                    <option [ngValue]=\"undefined\">All</option>\r\n                                    <option [ngValue]=\"true\">True</option>\r\n                                    <option [ngValue]=\"false\">False</option>\r\n                                </select>\r\n\r\n                                <button *ngIf=\"col.type !== 'bool'\" type=\"button\" (click)=\"toggleFilterMenu(col); $event.stopPropagation()\">\r\n                                    <icon-filter class=\"bh-w-4\"></icon-filter>\r\n                                </button>\r\n\r\n                                <column-filter\r\n                                    [ngClass]=\"{ 'bh-hidden': isOpenFilter !== col.field }\"\r\n                                    [column]=\"col\"\r\n                                    (close)=\"toggleFilterMenu()\"\r\n                                    (filterChange)=\"filterChange.emit()\"\r\n                                ></column-filter>\r\n                            </div>\r\n                        </ng-container>\r\n                    </th>\r\n                </ng-container>\r\n            </tr>\r\n        </ng-template>\r\n    `,\r\n})\r\nexport class ColumnHeaderComponent {\r\n    @ViewChild('template', { static: true }) template: any;\r\n    @ViewChild('selectedAll') selectedAll: any;\r\n\r\n    @Input() all: any;\r\n    @Input() isFooter: any;\r\n    @Input() checkAll: any;\r\n\r\n    @Output('selectAll') selectAll: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output('sortChange') sortChange: EventEmitter<any> = new EventEmitter<any>();\r\n    @Output('filterChange') filterChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    isOpenFilter: any = null;\r\n\r\n    constructor(private viewContainerRef: ViewContainerRef) {}\r\n\r\n    ngOnInit() {\r\n        this.viewContainerRef.createEmbeddedView(this.template);\r\n        this.checkboxChange();\r\n    }\r\n\r\n    checkboxChange() {\r\n        if (this.selectedAll) {\r\n            this.selectedAll.nativeElement.indeterminate = this.checkAll !== 0 ? !this.checkAll : false;\r\n            this.selectedAll.nativeElement.checked = this.checkAll;\r\n        }\r\n    }\r\n\r\n    toggleFilterMenu(col?: colDef) {\r\n        if (col) {\r\n            if (this.isOpenFilter === col.field) {\r\n                this.isOpenFilter = null;\r\n            } else {\r\n                this.isOpenFilter = col.field;\r\n            }\r\n        } else {\r\n            this.isOpenFilter = null;\r\n        }\r\n    }\r\n}\r\n","import { Component } from '@angular/core';\r\n@Component({\r\n    selector: 'icon-loader',\r\n    template: `\r\n        <svg width=\"84\" height=\"84\" viewBox=\"0 0 24 24\" class=\"bh-loader bh-text-primary\">\r\n            <circle cx=\"18\" cy=\"12\" r=\"0\" fill=\"currentColor\">\r\n                <animate\r\n                    attributeName=\"r\"\r\n                    begin=\".67\"\r\n                    calcMode=\"spline\"\r\n                    dur=\"1.5s\"\r\n                    keySplines=\"0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8\"\r\n                    repeatCount=\"indefinite\"\r\n                    values=\"0;2;0;0\"\r\n                />\r\n            </circle>\r\n            <circle cx=\"12\" cy=\"12\" r=\"0\" fill=\"currentColor\">\r\n                <animate\r\n                    attributeName=\"r\"\r\n                    begin=\".33\"\r\n                    calcMode=\"spline\"\r\n                    dur=\"1.5s\"\r\n                    keySplines=\"0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8\"\r\n                    repeatCount=\"indefinite\"\r\n                    values=\"0;2;0;0\"\r\n                />\r\n            </circle>\r\n            <circle cx=\"6\" cy=\"12\" r=\"0\" fill=\"currentColor\">\r\n                <animate\r\n                    attributeName=\"r\"\r\n                    begin=\"0\"\r\n                    calcMode=\"spline\"\r\n                    dur=\"1.5s\"\r\n                    keySplines=\"0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8\"\r\n                    repeatCount=\"indefinite\"\r\n                    values=\"0;2;0;0\"\r\n                />\r\n            </circle>\r\n        </svg>\r\n    `,\r\n})\r\nexport class IconLoaderComponent {\r\n    constructor() {}\r\n}\r\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    EventEmitter,\n    Input,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { Pager, colDef } from './modals';\nimport { SlotDirective } from './slot.directive';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n    selector: 'ng-datatable',\n    templateUrl: './ng-datatable.html',\n    styleUrls: ['./style.css'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgDataTableComponent {\n    // props\n    @Input() loading: boolean = false;\n    @Input() isServerMode: boolean = false;\n    @Input() skin: string = 'bh-table-striped bh-table-hover';\n    @Input() totalRows: number = 0;\n    @Input() rows: Array<any> = [];\n    @Input() columns: Array<colDef> = [];\n    @Input() hasCheckbox: boolean = false;\n    @Input() search: string = '';\n    @Input() page: number = 1;\n    @Input() pageSize: number = 10;\n    @Input() pageSizeOptions: Array<number> = [10, 20, 30, 50, 100];\n    @Input() showPageSize: boolean = true;\n    @Input() rowClass: string | Function = '';\n    @Input() cellClass: string | Function = '';\n    @Input() sortable: boolean = false;\n    @Input() sortColumn: string = 'id';\n    @Input() sortDirection: string = 'asc';\n    @Input() columnFilter: boolean = false;\n    @Input() pagination: boolean = true;\n    @Input() showNumbers: boolean = true;\n    @Input() showNumbersCount: number = 5;\n    @Input() showFirstPage: boolean = true;\n    @Input() showLastPage: boolean = true;\n    @Input() firstArrow: string = '';\n    @Input() lastArrow: string = '';\n    @Input() nextArrow: string = '';\n    @Input() previousArrow: string = '';\n    @Input() paginationInfo: string = 'Showing {0} to {1} of {2} entries';\n    @Input() noDataContent: string = 'No data available';\n    @Input() stickyHeader: boolean = false;\n    @Input() height: string = '500px';\n    @Input() stickyFirstColumn: boolean = false;\n    @Input() cloneHeaderInFooter: boolean = false;\n    @Input() selectRowOnClick: boolean = false;\n\n    // events\n    @Output() changeServer = new EventEmitter<any>();\n    @Output() sortChange = new EventEmitter<any>();\n    @Output() searchChange = new EventEmitter<any>();\n    @Output() pageChange = new EventEmitter<any>();\n    @Output() pageSizeChange = new EventEmitter<any>();\n    @Output() rowSelect = new EventEmitter<any>();\n    @Output() filterChange = new EventEmitter<any>();\n    @Output() rowClick = new EventEmitter<any>();\n    @Output() rowDBClick = new EventEmitter<any>();\n\n    // variables\n    filterItems: Array<any> = [];\n    currentPage = this.page;\n    currentPageSize = this.pagination ? this.pageSize : this.rows.length;\n    oldPageSize = this.pageSize;\n    currentSortColumn = this.sortColumn;\n    oldSortColumn = this.sortColumn;\n    currentSortDirection = this.sortDirection;\n    oldSortDirection = this.sortDirection;\n    filterRowCount = this.totalRows;\n\n    selectedAll: any = null;\n    currentLoader = this.loading;\n    currentSearch = this.search;\n    oldColumns: colDef[];\n    uniqueKey: string = '';\n\n    constructor(private sanitizer: DomSanitizer) {}\n    ngOnInit() {\n        this.initDeafultValues();\n        this.changeRows();\n    }\n    ngOnChanges(changes: SimpleChanges) {\n        // watch loading\n        if (changes['loading'] && !changes['loading'].firstChange) {\n            this.currentLoader = this.loading;\n        }\n\n        // watch rows and columns\n        if ((changes['rows'] && !changes['rows'].firstChange) || (changes['columns'] && !changes['columns'].firstChange)) {\n            if (!this.isServerMode) {\n                this.currentPage = 1;\n                this.oldColumns = this.noReact(this.columns);\n            }\n            this.changeRows();\n        }\n\n        // watch page\n        if (!this.isServerMode) {\n            if (changes['page'] && !changes['page'].firstChange) {\n                this.movePage(this.page);\n            }\n        }\n\n        // watch pagesize\n        if (changes['pageSize'] && !changes['pageSize'].firstChange) {\n            this.currentPageSize = this.pagination ? this.pageSize : this.rows.length;\n            if (!this.isServerMode) {\n                this.changePageSize();\n            }\n        }\n\n        // watch search\n        if (changes['search'] && !changes['search'].firstChange) {\n            this.currentSearch = this.search;\n            this.changeSearch();\n        }\n\n        // watch sort column and direction\n        if (!this.isServerMode) {\n            if ((changes['sortColumn'] && !changes['sortColumn'].firstChange) || (changes['sortDirection'] && !changes['sortDirection'].firstChange)) {\n                this.sortChangeMethod(this.sortColumn, this.sortDirection);\n            }\n        }\n    }\n\n    initDeafultValues() {\n        this.currentLoader = this.loading;\n        this.currentSearch = this.search;\n        this.currentSortColumn = this.sortColumn;\n        this.currentSortDirection = this.sortDirection;\n        this.filterRowCount = this.totalRows;\n\n        this.currentPage = this.page;\n        if (this.pagination) {\n            const exists = this.pageSizeOptions.find((d) => d === this.pageSize);\n            this.currentPageSize = exists ? this.pageSize : 10;\n        } else {\n            this.currentPageSize = this.rows.length;\n        }\n\n        this.oldPageSize = this.pageSize;\n        this.oldSortColumn = this.sortColumn;\n        this.oldSortDirection = this.sortDirection;\n\n        // set default columns values\n        for (const item of this.columns || []) {\n            const type = item.type?.toLowerCase() || 'string';\n            item.type = type;\n            item.isUnique = item.isUnique !== undefined ? item.isUnique : false;\n            item.hide = item.hide !== undefined ? item.hide : false;\n            item.filter = item.filter !== undefined ? item.filter : true;\n            item.search = item.search !== undefined ? item.search : true;\n            item.sort = item.sort !== undefined ? item.sort : true;\n            item.html = item.html !== undefined ? item.html : false;\n            item.condition = !type || type === 'string' ? 'contain' : 'equal';\n        }\n\n        this.oldColumns = this.noReact(this.columns);\n\n        this.setUniqueKey();\n    }\n    props: any;\n    get getProps() {\n        return {\n            loading: this.currentLoader,\n            isServerMode: this.isServerMode,\n            skin: this.skin,\n            totalRows: this.filterRowCount,\n            rows: this.rows,\n            columns: this.columns,\n            hasCheckbox: this.hasCheckbox,\n            search: this.currentSearch,\n            page: this.currentPage,\n            pageSize: this.currentPageSize,\n            pageSizeOptions: this.pageSizeOptions,\n            showPageSize: this.showPageSize,\n            rowClass: this.rowClass,\n            cellClass: this.cellClass,\n            sortable: this.sortable,\n            sortColumn: this.currentSortColumn,\n            sortDirection: this.currentSortDirection,\n            columnFilter: this.columnFilter,\n            pagination: this.pagination,\n            showNumbers: this.showNumbers,\n            showNumbersCount: this.showNumbersCount,\n            showFirstPage: this.showFirstPage,\n            showLastPage: this.showLastPage,\n            firstArrow: this.firstArrow,\n            lastArrow: this.lastArrow,\n            nextArrow: this.nextArrow,\n            previousArrow: this.previousArrow,\n            paginationInfo: this.paginationInfo,\n            noDataContent: this.noDataContent,\n            stickyHeader: this.stickyHeader,\n            height: this.height,\n            stickyFirstColumn: this.stickyFirstColumn,\n            cloneHeaderInFooter: this.cloneHeaderInFooter,\n            selectRowOnClick: this.selectRowOnClick,\n        };\n    }\n\n    isFunction(value: any): value is Function {\n        return typeof value === 'function';\n    }\n\n    stringFormat() {\n        const args: any[] = [this.filterRowCount ? this.offset() : 0, this.limit(), this.filterRowCount];\n        return this.paginationInfo.replace(/{(\\d+)}/g, (match, number) => {\n            return typeof args[number] != 'undefined' ? args[number] : match;\n        });\n    }\n    setUniqueKey() {\n        const col = this.columns.find((d) => d.isUnique);\n        this.uniqueKey = col?.field || '';\n    }\n\n    maxPage() {\n        const totalPages = this.currentPageSize < 1 ? 1 : Math.ceil(this.filterRowCount / this.currentPageSize);\n        return Math.max(totalPages || 0, 1);\n    }\n    offset() {\n        return (this.currentPage - 1) * this.currentPageSize + 1;\n    }\n    limit() {\n        const limit = this.currentPage * this.currentPageSize;\n        return this.filterRowCount >= limit ? limit : this.filterRowCount;\n    }\n\n    pager: Pager = new Pager();\n    getPager() {\n        // total pages\n        let totalPages = this.maxPage();\n\n        // pages\n        let startPage: number, endPage: number;\n        let isMaxSized = typeof this.showNumbersCount !== 'undefined' && this.showNumbersCount < totalPages;\n        // recompute if maxSize\n        if (isMaxSized) {\n            // Current page is displayed in the middle of the visible ones\n            startPage = Math.max(this.currentPage - Math.floor(this.showNumbersCount / 2), 1);\n            endPage = startPage + this.showNumbersCount - 1;\n\n            // Adjust if limit is exceeded\n            if (endPage > totalPages) {\n                endPage = totalPages;\n                startPage = endPage - this.showNumbersCount + 1;\n            }\n        } else {\n            startPage = 1;\n            endPage = totalPages;\n        }\n\n        const pages = Array.from(Array(endPage + 1 - startPage).keys()).map((i) => startPage + i);\n\n        return <Pager>{\n            totalRows: this.isServerMode ? this.totalRows : this.filterItems.length,\n            currentPage: this.currentPage,\n            pageSize: this.pageSize,\n            maxPage: totalPages,\n            startPage: startPage,\n            endPage: endPage,\n            stringFormat: this.stringFormat(),\n            pages: pages,\n        };\n    }\n    setPager() {\n        this.pager = this.getPager();\n    }\n\n    filterRows() {\n        let result = [];\n        let rows = this.rows || [];\n\n        if (this.isServerMode) {\n            this.filterRowCount = this.totalRows || 0;\n            result = rows;\n        } else {\n            this.columns?.forEach((d) => {\n                if (d.filter && ((d.value !== undefined && d.value !== null && d.value !== '') || d.condition === 'is_null' || d.condition === 'is_not_null')) {\n                    // string filters\n                    if (d.type === 'string') {\n                        if (d.value && !d.condition) {\n                            d.condition = 'contain';\n                        }\n\n                        if (d.condition === 'contain') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field)?.toString().toLowerCase().includes(d.value.toLowerCase());\n                            });\n                        } else if (d.condition === 'not_contain') {\n                            rows = rows.filter((item) => {\n                                return !this.cellValue(item, d.field)?.toString().toLowerCase().includes(d.value.toLowerCase());\n                            });\n                        } else if (d.condition === 'equal') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field)?.toString().toLowerCase() === d.value.toLowerCase();\n                            });\n                        } else if (d.condition === 'not_equal') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field)?.toString().toLowerCase() !== d.value.toLowerCase();\n                            });\n                        } else if (d.condition === 'start_with') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field)?.toString().toLowerCase().indexOf(d.value.toLowerCase()) === 0;\n                            });\n                        } else if (d.condition === 'end_with') {\n                            rows = rows.filter((item) => {\n                                return (\n                                    this.cellValue(item, d.field)\n                                        ?.toString()\n                                        .toLowerCase()\n                                        .substr(d.value.length * -1) === d.value.toLowerCase()\n                                );\n                            });\n                        }\n                    }\n\n                    // number filters\n                    else if (d.type === 'number') {\n                        if (d.value && !d.condition) {\n                            d.condition = 'equal';\n                        }\n\n                        if (d.condition === 'equal') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field) && parseFloat(this.cellValue(item, d.field)) === parseFloat(d.value);\n                            });\n                        } else if (d.condition === 'not_equal') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field) && parseFloat(this.cellValue(item, d.field)) !== parseFloat(d.value);\n                            });\n                        } else if (d.condition === 'greater_than') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field) && parseFloat(this.cellValue(item, d.field)) > parseFloat(d.value);\n                            });\n                        } else if (d.condition === 'greater_than_equal') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field) && parseFloat(this.cellValue(item, d.field)) >= parseFloat(d.value);\n                            });\n                        } else if (d.condition === 'less_than') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field) && parseFloat(this.cellValue(item, d.field)) < parseFloat(d.value);\n                            });\n                        } else if (d.condition === 'less_than_equal') {\n                            rows = rows.filter((item) => {\n                                return this.cellValue(item, d.field) && parseFloat(this.cellValue(item, d.field)) <= parseFloat(d.value);\n                            });\n                        }\n                    }\n\n                    // date filters\n                    if (d.type === 'date') {\n                        if (d.value && !d.condition) {\n                            d.condition = 'equal';\n                        }\n\n                        if (d.condition === 'equal') {\n                            rows = rows.filter((item: any) => {\n                                return this.cellValue(item, d.field) && this.dateFormat(this.cellValue(item, d.field)) === d.value;\n                            });\n                        } else if (d.condition === 'not_equal') {\n                            rows = rows.filter((item: any) => {\n                                return this.cellValue(item, d.field) && this.dateFormat(this.cellValue(item, d.field)) !== d.value;\n                            });\n                        } else if (d.condition === 'greater_than') {\n                            rows = rows.filter((item: any) => {\n                                return this.cellValue(item, d.field) && this.dateFormat(this.cellValue(item, d.field)) > d.value;\n                            });\n                        } else if (d.condition === 'less_than') {\n                            rows = rows.filter((item: any) => {\n                                return this.cellValue(item, d.field) && this.dateFormat(this.cellValue(item, d.field)) < d.value;\n                            });\n                        }\n                    }\n\n                    // boolean filters\n                    else if (d.type === 'bool') {\n                        rows = rows.filter((item: any) => {\n                            return this.cellValue(item, d.field) === d.value;\n                        });\n                    }\n\n                    if (d.condition === 'is_null') {\n                        rows = rows.filter((item: any) => {\n                            return this.cellValue(item, d.field) == null || this.cellValue(item, d.field) === '';\n                        });\n                        d.value = '';\n                    } else if (d.condition === 'is_not_null') {\n                        d.value = '';\n                        rows = rows.filter((item: any) => {\n                            return this.cellValue(item, d.field);\n                        });\n                    }\n                }\n            });\n\n            if (this.currentSearch && rows.length) {\n                let final: Array<any> = [];\n\n                const keys = (this.columns || [])\n                    .filter((d: any) => d.search && !d.hide)\n                    .map((d: any) => {\n                        return d.field;\n                    });\n\n                for (let j = 0; j < rows.length; j++) {\n                    for (let i = 0; i < keys.length; i++) {\n                        if (this.cellValue(rows[j], keys[i])?.toString().toLowerCase().includes(this.currentSearch.toLowerCase())) {\n                            final.push(rows[j]);\n                            break;\n                        }\n                    }\n                }\n\n                rows = final;\n            }\n\n            // sort rows\n            const collator = new Intl.Collator(undefined, {\n                numeric: true,\n                sensitivity: 'base',\n            });\n            const sortOrder = this.currentSortDirection === 'desc' ? -1 : 1;\n\n            rows.sort((a: any, b: any): number => {\n                const valA = this.currentSortColumn?.split('.').reduce((obj, key) => obj?.[key], a);\n                const valB = this.currentSortColumn?.split('.').reduce((obj, key) => obj?.[key], b);\n\n                return collator.compare(valA, valB) * sortOrder;\n            });\n\n            this.filterRowCount = rows.length || 0;\n            result = rows.slice(this.offset() - 1, <number>this.limit());\n        }\n\n        this.filterItems = result || [];\n\n        this.setPager();\n    }\n\n    // page change\n    movePage(page: number = 1) {\n        if (this.currentLoader || page < 1 || page > this.maxPage()) {\n            return;\n        }\n        this.currentPage = page;\n        this.clearSelectedRows();\n\n        if (this.isServerMode) {\n            this.changeForServer('page');\n        } else {\n            this.filterRows();\n            this.pageChange.emit(this.currentPage);\n        }\n    }\n\n    // row update\n    changeRows() {\n        this.clearSelectedRows();\n        this.filterRows();\n    }\n\n    // pagesize changed\n    changePageSize() {\n        this.currentPage = 1;\n\n        this.clearSelectedRows();\n\n        if (this.isServerMode) {\n            this.changeForServer('pagesize', true);\n        } else {\n            this.filterRows();\n            this.pageSizeChange.emit(this.currentPageSize);\n        }\n    }\n\n    // sorting\n    sortChangeMethod(field: string, dir = '') {\n        let direction = dir || 'asc';\n        if (field === this.currentSortColumn) {\n            if (this.currentSortDirection === 'asc') {\n                direction = 'desc';\n            }\n        }\n        const offset = (this.currentPage - 1) * this.currentPageSize;\n        const limit = this.currentPageSize;\n        this.currentSortColumn = field;\n        this.currentSortDirection = direction;\n\n        this.clearSelectedRows();\n\n        if (this.isServerMode) {\n            this.changeForServer('sort');\n        } else {\n            this.filterRows();\n            this.sortChange.emit({ offset, limit, field, direction });\n        }\n    }\n\n    // checkboax\n    @ViewChild('header1') header1: any;\n    @ViewChild('header2') header2: any;\n    checkboxChange() {\n        this.checkIfAllSelected();\n        const rows = this.getSelectedRows();\n        this.rowSelect.emit(rows);\n    }\n\n    selectAll(checked: any, isAll = false) {\n        this.filterItems.map((d: any) => (d.selected = checked));\n        if (isAll) {\n            this.checkboxChange();\n        } else {\n            this.checkIfAllSelected();\n        }\n    }\n    checkIfAllSelected() {\n        const cnt = this.filterItems.filter((d) => d.selected);\n        this.selectedAll = cnt.length && cnt.length === this.filterItems.length;\n\n        setTimeout(() => {\n            this.header1?.checkboxChange();\n            if (this.cloneHeaderInFooter) {\n                this.header2?.checkboxChange();\n            }\n        });\n    }\n\n    // columns filter\n    filterChangeMethod() {\n        this.currentPage = 1;\n        this.clearSelectedRows();\n\n        if (this.isServerMode) {\n            this.changeForServer('filter', true);\n        } else {\n            this.filterRows();\n            this.filterChange.emit(this.columns);\n        }\n    }\n\n    // search\n    changeSearch() {\n        this.currentPage = 1;\n        this.clearSelectedRows();\n\n        if (this.isServerMode) {\n            this.changeForServer('search', true);\n        } else {\n            this.filterRows();\n            this.searchChange.emit(this.currentSearch);\n        }\n    }\n\n    cellValue(item: any, field: string = '') {\n        return field?.split('.').reduce((obj, key) => obj?.[key], item);\n    }\n\n    dateFormat(date: any) {\n        try {\n            if (!date) {\n                return '';\n            }\n            const dt = new Date(date);\n            const day = dt.getDate();\n            const month = dt.getMonth() + 1;\n            const year = dt.getFullYear();\n\n            return year + '-' + (month > 9 ? month : '0' + month) + '-' + (day > 9 ? day : '0' + day);\n        } catch {}\n        return '';\n    }\n\n    //row click\n    timer: any = null;\n    delay: number = 230;\n    onRowClick(item: any, index: number) {\n        clearTimeout(this.timer);\n        this.timer = setTimeout(() => {\n            if (this.selectRowOnClick) {\n                if (this.isRowSelected(index)) {\n                    this.unselectRow(index);\n                } else {\n                    this.selectRow(index);\n                }\n\n                this.checkboxChange();\n            }\n            this.rowClick.emit(item);\n        }, this.delay);\n    }\n\n    onRowDoubleClick(item: any) {\n        clearTimeout(this.timer);\n        this.rowDBClick.emit(item);\n    }\n\n    // emit change event for server side pagination\n    changeForServer(changeType: string, isResetPage = false) {\n        if (this.isServerMode) {\n            if (changeType === 'page') {\n                this.setPager();\n            }\n\n            this.setDefaultCondition();\n\n            const res = {\n                current_page: Number(isResetPage ? 1 : this.currentPage),\n                pagesize: Number(this.currentPageSize),\n                offset: Number((this.currentPage - 1) * <number>this.currentPageSize),\n                sort_column: this.currentSortColumn,\n                sort_direction: this.currentSortDirection,\n                search: this.currentSearch,\n                column_filters: this.columns,\n                change_type: changeType,\n            };\n            this.changeServer.emit(res);\n        }\n    }\n\n    // set default conditions when values exists and condition empty\n    setDefaultCondition() {\n        for (let i = 0; i < this.columns.length; i++) {\n            let d = this.columns[i];\n\n            if (d.filter && ((d.value !== undefined && d.value !== null && d.value !== '') || d.condition === 'is_null' || d.condition === 'is_not_null')) {\n                if (d.type === 'string' && d.value && !d.condition) {\n                    d.condition = 'contain';\n                }\n                if (d.type === 'number' && d.value && !d.condition) {\n                    d.condition = 'equal';\n                }\n                if (d.type === 'date' && d.value && !d.condition) {\n                    d.condition = 'equal';\n                }\n            }\n        }\n    }\n\n    // methods\n    reset() {\n        this.columns = this.noReact(this.oldColumns);\n        this.currentSearch = '';\n        this.currentPage = 1;\n        this.currentPageSize = this.oldPageSize;\n        this.currentSortColumn = this.oldSortColumn;\n        this.currentSortDirection = this.oldSortDirection;\n\n        this.clearSelectedRows();\n\n        if (this.isServerMode) {\n            this.changeForServer('reset', true);\n        } else {\n            this.filterRows();\n        }\n    }\n    getSelectedRows() {\n        return this.filterItems.filter((d) => d.selected);\n    }\n    getColumnFilters() {\n        return this.columns;\n    }\n    clearSelectedRows() {\n        if (this.filterItems) {\n            this.selectAll(false);\n        }\n    }\n    selectRow(index: number) {\n        if (!this.isRowSelected(index)) {\n            const rows = this.filterItems.find((d: any, i: number) => i === index);\n            if (rows) {\n                rows.selected = true;\n            }\n        }\n    }\n    unselectRow(index: number) {\n        if (this.isRowSelected(index)) {\n            const rows = this.filterItems.find((d: any, i: number) => i === index);\n            rows.selected = false;\n        }\n    }\n    isRowSelected(index: number): boolean {\n        const rows = this.filterItems.find((d: any, i: number) => i === index);\n        if (rows) {\n            return rows.selected;\n        }\n        return false;\n    }\n\n    // trackby\n    trackFilterItems(index: number, item: any) {\n        return this.uniqueKey ? item[this.uniqueKey] : (this.currentPage - 1) * this.pageSize + index;\n    }\n\n    // slots\n    @ContentChildren(SlotDirective) slots: QueryList<SlotDirective>;\n    @ViewChild('defaultTemplate', { static: true }) defaultTemplate: TemplateRef<any>;\n    slotsMap: Map<string, TemplateRef<any>> = new Map<string, TemplateRef<any>>();\n\n    ngAfterContentInit() {\n        this.slots.forEach((template) => {\n            const fieldName = template.fieldName;\n            if (fieldName) {\n                this.slotsMap.set(fieldName, template.templateRef);\n            }\n        });\n    }\n    hasSlot(fieldName: string = ''): boolean {\n        return this.slotsMap.has(fieldName);\n    }\n    getSlot(fieldName: string = ''): TemplateRef<any> {\n        return this.slotsMap.get(fieldName) || this.defaultTemplate;\n    }\n\n    // Sanitize and trust the HTML content\n    sanitizeHtml(html: string): SafeHtml {\n        return this.sanitizer.bypassSecurityTrustHtml(html);\n    }\n\n    noReact(value: any) {\n        return JSON.parse(JSON.stringify(value));\n    }\n\n    getRange(size: number): number[] {\n        return Array.from({ length: size }, (_, index) => index + 1);\n    }\n}\n","<div class=\"bh-datatable bh-antialiased bh-relative bh-text-black bh-text-sm bh-font-normal\">\n    <div class=\"bh-table-responsive\" [ngClass]=\"{'bh-min-h-[300px]': currentLoader }\" [style]=\"{ height: stickyHeader && height }\">\n        <table [ngClass]=\"[skin]\">\n            <thead [ngClass]=\"{ 'bh-sticky bh-top-0 bh-z-10': stickyHeader }\">\n                <column-header\n                    #header1\n                    [all]=\"getProps\"\n                    [checkAll]=\"selectedAll\"\n                    (selectAll)=\"selectAll($event, true)\"\n                    (sortChange)=\"sortChangeMethod($event)\"\n                    (filterChange)=\"filterChangeMethod()\"\n                ></column-header>\n            </thead>\n\n            <tbody>\n                <ng-container *ngIf=\"filterRowCount\">\n                    <tr\n                        *ngFor=\"let item of filterItems; let i = index; trackBy:trackFilterItems.bind(this)\"\n                        [ngClass]=\"[(isFunction(rowClass) ? rowClass(item) : rowClass), selectRowOnClick? 'bh-cursor-pointer':'']\"\n                        (click)=\"onRowClick(item, i)\"\n                        (dblclick)=\"onRowDoubleClick(item)\"\n                    >\n                        <td *ngIf=\"hasCheckbox\" [ngClass]=\"{'bh-sticky bh-left-0 bh-bg-blue-light': stickyFirstColumn}\">\n                            <div class=\"bh-checkbox\" (click)=\"$event.stopPropagation();\">\n                                <input type=\"checkbox\" value=\"{{item[uniqueKey] ? item[uniqueKey] : i}}\" [(ngModel)]=\"item.selected\" (change)=\"checkboxChange();\" />\n                                <div>\n                                    <icon-check class=\"check\"></icon-check>\n                                </div>\n                            </div>\n                        </td>\n                        <ng-container *ngFor=\"let col of columns; let j = index\">\n                            <td\n                                *ngIf=\"!col.hide\"\n                                [ngClass]=\"[\n                                    (isFunction(cellClass) ? cellClass(item) : cellClass),\n                                    j === 0 && stickyFirstColumn ? 'bh-sticky bh-left-0 bh-bg-blue-light' : '',\n                                    hasCheckbox && j === 0 && stickyFirstColumn ? 'bh-left-[52px]' : '',\n                                    col.cellClass ? col.cellClass : ''\n                                    ]\"\n                            >\n                                <ng-container *ngIf=\"hasSlot(col.field)\">\n                                    <ng-container [ngTemplateOutlet]=\"getSlot(col.field)\" [ngTemplateOutletContext]=\"{ data: item }\"></ng-container>\n                                </ng-container>\n                                <div *ngIf=\"!hasSlot(col.field) && col.cellRenderer\" [innerHTML]=\"sanitizeHtml(col.cellRenderer(item))\"></div>\n                                <ng-container *ngIf=\"!hasSlot(col.field) && !col.cellRenderer\"> {{ cellValue(item, col.field) }} </ng-container>\n                            </td>\n                        </ng-container>\n                    </tr>\n                </ng-container>\n                <tr *ngIf=\"!filterRowCount && !currentLoader\">\n                    <td [attr.colspan]=\"columns.length + 1\">{{ noDataContent }}</td>\n                </tr>\n\n                <ng-container *ngIf=\"!filterRowCount && currentLoader\">\n                    <tr *ngFor=\"let k of getRange(pageSize)\" class=\"!bh-bg-white bh-h-11 !bh-border-transparent\">\n                        <td [attr.colspan]=\"columns.length + 1\" class=\"!bh-p-0 !bh-border-transparent\">\n                            <div class=\"bh-skeleton-box bh-h-8\"></div>\n                        </td>\n                    </tr>\n                </ng-container>\n            </tbody>\n\n            <tfoot *ngIf=\"cloneHeaderInFooter\" [ngClass]=\"{ 'bh-sticky bh-bottom-0': stickyHeader }\">\n                <column-header\n                    #header2\n                    [all]=\"getProps\"\n                    [isFooter]=\"true\"\n                    [checkAll]=\"selectedAll\"\n                    (selectAll)=\"selectAll($event)\"\n                    (sortChange)=\"sortChangeMethod($event)\"\n                    (filterChange)=\"filterChangeMethod()\"\n                ></column-header>\n            </tfoot>\n        </table>\n\n        <div *ngIf=\"filterRowCount && currentLoader\" class=\"bh-absolute bh-inset-0 bh-bg-blue-light/50 bh-grid bh-place-content-center\">\n            <icon-loader></icon-loader>\n        </div>\n    </div>\n\n    <div *ngIf=\"pagination && filterRowCount\" class=\"bh-pagination bh-py-5\">\n        <div class=\"bh-flex bh-items-center bh-flex-wrap bh-flex-col sm:bh-flex-row bh-gap-4\">\n            <div class=\"bh-pagination-info bh-flex bh-items-center\">\n                <span class=\"bh-mr-2\"> {{ pager.stringFormat }} </span>\n                <select *ngIf=\"showPageSize\" [(ngModel)]=\"currentPageSize\" class=\"bh-pagesize\" (ngModelChange)=\"changePageSize()\">\n                    <option *ngFor=\"let option of pageSizeOptions\" [value]=\"option\">{{ option }}</option>\n                </select>\n            </div>\n\n            <div class=\"bh-pagination-number sm:bh-ml-auto bh-inline-flex bh-items-center bh-space-x-1\">\n                <button *ngIf=\"showFirstPage\" type=\"button\" class=\"bh-page-item first-page\" [class.disabled]=\"currentPage <= 1\" (click)=\"movePage(1)\">\n                    <span *ngIf=\"firstArrow\" [innerHTML]=\"sanitizeHtml(firstArrow)\"></span>\n                    <svg *ngIf=\"!firstArrow\" aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n                        <g fill=\"currentColor\" fill-rule=\"evenodd\">\n                            <path d=\"M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\" />\n                            <path d=\"M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\" />\n                        </g>\n                    </svg>\n                </button>\n                <button type=\"button\" class=\"bh-page-item previous-page\" [class.disabled]=\"currentPage <= 1\" (click)=\"movePage(currentPage - 1)\">\n                    <span *ngIf=\"previousArrow\" [innerHTML]=\"sanitizeHtml(previousArrow)\"></span>\n                    <svg *ngIf=\"!previousArrow\" aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n                        <path\n                            fill=\"currentColor\"\n                            fill-rule=\"evenodd\"\n                            d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"\n                        />\n                    </svg>\n                </button>\n\n                <ng-container *ngIf=\"showNumbers\">\n                    <button\n                        *ngFor=\"let page of pager.pages\"\n                        type=\"button\"\n                        class=\"bh-page-item\"\n                        [class.disabled]=\"currentPage === page\"\n                        [class.bh-active]=\"page === currentPage\"\n                        (click)=\"movePage(page)\"\n                    >\n                        {{ page }}\n                    </button>\n                </ng-container>\n\n                <button type=\"button\" class=\"bh-page-item next-page\" [class.disabled]=\"currentPage >= maxPage()\" (click)=\"movePage(currentPage + 1)\">\n                    <span *ngIf=\"nextArrow\" [innerHTML]=\"sanitizeHtml(nextArrow)\"> </span>\n                    <svg *ngIf=\"!nextArrow\" aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n                        <path\n                            fill=\"currentColor\"\n                            fill-rule=\"evenodd\"\n                            d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8L4.646 2.354a.5.5 0 0 1 0-.708z\"\n                        />\n                    </svg>\n                </button>\n\n                <button *ngIf=\"showLastPage\" type=\"button\" class=\"bh-page-item last-page\" [class.disabled]=\"currentPage >= maxPage()\" (click)=\"movePage(maxPage())\">\n                    <span *ngIf=\"lastArrow\" [innerHTML]=\"sanitizeHtml(lastArrow)\"> </span>\n                    <svg *ngIf=\"!lastArrow\" aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n                        <g fill=\"currentColor\" fill-rule=\"evenodd\">\n                            <path d=\"M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8L3.646 2.354a.5.5 0 0 1 0-.708z\" />\n                            <path d=\"M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8L7.646 2.354a.5.5 0 0 1 0-.708z\" />\n                        </g>\n                    </svg>\n                </button>\n            </div>\n        </div>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { NgDataTableComponent } from './ng-datatable';\nimport { ColumnFilterComponent } from './column-filter';\nimport { ColumnHeaderComponent } from './column-header';\nimport { IconCheckComponent } from './icon-check';\nimport { IconDashComponent } from './icon-dash';\nimport { IconFilterComponent } from './icon-filter';\nimport { IconLoaderComponent } from './icon-loader';\n\n// directive\nimport { SlotDirective } from './slot.directive';\n\n@NgModule({\n    imports: [CommonModule, FormsModule],\n    declarations: [\n        NgDataTableComponent,\n        ColumnFilterComponent,\n        ColumnHeaderComponent,\n        IconCheckComponent,\n        IconDashComponent,\n        IconFilterComponent,\n        IconLoaderComponent,\n        SlotDirective,\n    ],\n    exports: [NgDataTableComponent, ColumnFilterComponent, ColumnHeaderComponent, IconCheckComponent, IconDashComponent, IconFilterComponent, IconLoaderComponent, SlotDirective],\n})\nexport class DataTableModule {}\n","/*\r\n * Public API Surface of ng-datatable\r\n */\r\nexport * from './lib/ng-datatable.module';\r\nexport * from './lib/ng-datatable';\r\nexport * from './lib/column-filter';\r\nexport * from './lib/column-header';\r\nexport * from './lib/icon-check';\r\nexport * from './lib/icon-dash';\r\nexport * from './lib/icon-filter';\r\nexport * from './lib/icon-loader';\r\n\r\nexport * from './lib/modals';\r\nexport * from './lib/slot.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.ColumnFilterComponent","i4.IconCheckComponent","i5.IconDashComponent","i6.IconFilterComponent","i1","i2","i3","i4.ColumnHeaderComponent","i5.IconCheckComponent","i6.IconLoaderComponent"],"mappings":"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"}