{"version":3,"file":"ag-table.mjs","sources":["../../projects/lib/ag-table/ag-table.component.trans.ts","../../projects/lib/ag-table-header/ag-table-header.component.trans.ts","../../projects/lib/enums/ag-table-filter-mode.enum.ts","../../projects/lib/ag-table-col/ag-table-col.component.trans.ts","../../projects/lib/enums/ag-table-filter-type.enum.ts","../../projects/lib/services/helper.ts","../../projects/lib/settings/ag-table-settings.abstract.ts","../../projects/lib/settings/ag-table-custom.settings.ts","../../projects/lib/settings/ag-table.settings.ts","../../projects/lib/services/ag-table-lang.service.ts","../../projects/lib/constants/filter-types.const.ts","../../projects/lib/ag-table-filter/ag-table-filter.component.trans.ts","../../projects/lib/directives/date-format-directive.ts","../../projects/lib/pipes/translate.pipe.ts","../../projects/lib/ag-table-filter/ag-table-filter.component.ts","../../projects/lib/ag-table-filter/ag-table-filter.component.html","../../projects/lib/ag-table-col/ag-table-col.component.ts","../../projects/lib/ag-table-col/ag-table-col.component.html","../../projects/lib/ag-table-header/ag-table-header.component.ts","../../projects/lib/ag-table-header/ag-table-header.component.html","../../projects/lib/ag-table-body/ag-table-body.component.trans.ts","../../projects/lib/ag-table-row/ag-table-row.component.trans.ts","../../projects/lib/ag-table-cell/ag-table-cell.component.trans.ts","../../projects/lib/ag-table-cell/ag-table-cell.component.ts","../../projects/lib/ag-table-cell/ag-table-cell.component.html","../../projects/lib/ag-table-row/ag-table-row.component.ts","../../projects/lib/ag-table-row/ag-table-row.component.html","../../projects/lib/models/ag-table-virtual-scroll.model.ts","../../projects/lib/events/ag-table-data-render.event.ts","../../projects/lib/services/ag-table-virtual-scroll.service.ts","../../projects/lib/ag-table-spinner/ag-table-spinner.component.trans.ts","../../projects/lib/ag-table-spinner/ag-table-spinner.component.ts","../../projects/lib/ag-table-spinner/ag-table-spinner.component.html","../../projects/lib/ag-table-body/ag-table-body.component.ts","../../projects/lib/ag-table-body/ag-table-body.component.html","../../projects/lib/enums/ag-table-change-action.enum.ts","../../projects/lib/events/ag-table-event.event.ts","../../projects/lib/ag-table-paginate/ag-table-paginate.component.trans.ts","../../projects/lib/ag-table-paginate/ag-table-paginate.component.ts","../../projects/lib/ag-table-paginate/ag-table-paginate.component.html","../../projects/lib/services/ag-table-prepare.service.ts","../../projects/lib/ag-table/ag-table.component.ts","../../projects/lib/ag-table/ag-table.component.html","../../projects/lib/ag-table.module.ts","../../projects/lib/ag-table.ts"],"sourcesContent":["export const TRANSLATION = {\n};\n","export const TRANSLATION = {\n    TITULO: {\n        ptBR: 'TITULO'\n    }\n};\n","export enum AgTableFilterMode {\n    CONTAINS = 'contains',\n    EQUALS = 'equals',\n    STARTS_WITH = 'startsWith',\n    ENDS_WITH = 'endsWith'\n}\n","export const TRANSLATION = {\n    ALL_OPTION: {\n        ptBR: 'Todos',\n        enUS: 'All'\n    },\n    DATE_FORMAT: {\n        ptBR: 'dd/MM/yyyy',\n        enUS: 'yyyy/MM/dd'\n    }\n};\n","export enum AgTableFilterType {\n    NONE = 'none',\n    TEXT = 'text',\n    SELECT = 'select',\n    DATE = 'date',\n    CURRENCY = 'currency',\n    // NUMBER = 'number',\n}\n","import { Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Injectable()\nexport class Helper {\n\tprivate datePipe: DatePipe;\n\n\tconstructor(\n\t) {\n\t\tthis.datePipe = new DatePipe('en-US');\n\t}\n\tpadLeft(text: string, qtty: number = 2, char: string | number = 0) {\n\t\tif (!isNullOrUndefined(text))\n\t\t\twhile (text.length < qtty)\n\t\t\t\ttext = char + text;\n\n\t\treturn text;\n\t}\n\n\tpadRight(text: string, qtty: number = 2, char: string | number = 0) {\n\t\tif (!isNullOrUndefined(text))\n\t\t\twhile (text.length < qtty)\n\t\t\t\ttext += char;\n\n\t\treturn text;\n\t}\n\n\trandomNumber(min = 1, max = 9999) {\n\t\tlet number = Math.floor(Math.random() * max);\n\n\t\treturn Math.max(number, min);\n\t}\n\n\tonlyNumbers(text: string, exceptions: string[] = null) {\n\t\tif (!isNullOrUndefined(text)) {\n\t\t\tlet expression = (exceptions && exceptions.length) ? ('[^\\\\d|' + exceptions.join('|') + ']') : '[^\\\\d]';\n\t\t\treturn text.replace(new RegExp(expression, 'g'), '');\n\t\t}\n\t\treturn '';\n\t}\n\n\tonlyAlphaNumeric(text: string) {\n\t\tif (!isNullOrUndefined(text))\n\t\t\treturn text.replace(/[^a-zA-Z0-9]+/g, '');\n\t\treturn '';\n\t}\n\n\tonlyNumberAndToFloat(text: string) {\n\t\tif (text) {\n\t\t\tlet strNumber = text.replace(/[^\\d.\\d]/g, '');\n\t\t\tlet number = parseFloat(strNumber);\n\t\t\tif (!isNaN(number))\n\t\t\t\treturn number;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tremoveAccents(text: string) {\n\t\treturn text ? text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : '';\n\t}\n\n\tdateIsValid(date: string | Date, dateFormat?: string): boolean {\n\t\treturn !isNullOrUndefined(this.strToDate(date, dateFormat));\n\t}\n\n\ttoAmericanDate(date: string | Date, separator: string = '-'): string {\n\t\tif (date instanceof Date) date = this.dateToStr(date);\n\t\tif (this.dateIsValid(date)) {\n\t\t\tlet dateStr = date as string;\n\t\t\tif (dateStr && (dateStr.includes('-') || dateStr.includes('/'))) {\n\t\t\t\tif (dateStr.includes('/')) dateStr = dateStr.replace(/\\//g, '-');\n\n\t\t\t\tconst dateSplited = dateStr.split('-');\n\t\t\t\tif (dateSplited.length >= 3) {\n\t\t\t\t\tconst year = parseInt((dateSplited[0].length === 4) ? dateSplited[0] : dateSplited[2]);\n\t\t\t\t\tconst month = parseInt(dateSplited[1]);\n\t\t\t\t\tconst day = parseInt((dateSplited[0].length === 4) ? dateSplited[2] : dateSplited[0]);\n\n\t\t\t\t\tconst arrayDate = [year, (month > 9 ? month : ('0' + month)), (day > 9 ? day : ('0' + day))];\n\t\t\t\t\treturn arrayDate.join(separator);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn date as string;\n\t}\n\n\tstrToDate(date: string | Date, dateFormat?: string): Date {\n\t\tif (typeof date === 'string' && (date.length >= 8 || dateFormat)) {\n\t\t\tlet dateStr = (date as string);\n\t\t\tif (dateStr && (dateStr.includes('-') || dateStr.includes('/'))) {\n\t\t\t\tif (dateStr.includes('/'))\n\t\t\t\t\tdateStr = dateStr.replace(/\\//g, '-');\n\t\t\t\tdateStr = dateStr.substr(0, 10);\n\n\t\t\t\tif (dateFormat)\n\t\t\t\t\tdateFormat = dateFormat.replace(/\\//g, '-');\n\n\t\t\t\tconst dateSplited = dateStr.split('-');\n\t\t\t\tconst length = dateSplited.length;\n\t\t\t\tif (length >= 1) {\n\t\t\t\t\tlet year = 1111;\n\t\t\t\t\tlet month = 11;\n\t\t\t\t\tlet day = 11;\n\n\t\t\t\t\tif (length >= 3) {\n\t\t\t\t\t\tyear = parseInt((dateSplited[0].length === 4) ? dateSplited[0] : dateSplited[2]);\n\t\t\t\t\t\tmonth = parseInt(dateSplited[1]);\n\t\t\t\t\t\tday = parseInt((dateSplited[0].length === 4) ? dateSplited[2] : dateSplited[0]);\n\t\t\t\t\t}\n\t\t\t\t\telse if (dateFormat) {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tfor(let format of dateFormat.split('-')) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tif (format.toLowerCase().startsWith('y'))\n\t\t\t\t\t\t\t\t\tyear = parseInt(dateSplited[i]);\n\t\t\t\t\t\t\t\telse if (format.toLowerCase().startsWith('m'))\n\t\t\t\t\t\t\t\t\tmonth = parseInt(dateSplited[i]);\n\t\t\t\t\t\t\t\telse if (format.toLowerCase().startsWith('d'))\n\t\t\t\t\t\t\t\t\tday = parseInt(dateSplited[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch {}\n\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst arrayDate = [year, (month > 9 ? month : ('0' + month)), (day > 9 ? day : ('0' + day))];\n\t\t\t\t\tdateStr = arrayDate.join('-');\n\n\t\t\t\t\tif (dateStr)\n\t\t\t\t\t\treturn new Date(year, month - 1, day, 0, 0, 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (date instanceof Date)\n\t\t\treturn date as Date;\n\n\t\treturn null;\n\t}\n\n\tsetDaysToDate(date: Date | string, days: number): Date {\n\t\tif (typeof date === 'string') date = this.strToDate(date);\n\t\telse if (date) date = this.copyDate(date);\n\n\t\tif (date && typeof days === 'number')\n\t\t\treturn new Date(date.setDate(date.getDate() + days));\n\n\t\treturn date;\n\t}\n\n\tdateToStr(date: Date | string, format: string = 'dd/MM/yyyy'): string {\n\t\tif (!format) format = 'dd/MM/yyyy';\n\t\tformat = format.replace(/mm/g, 'MM');\n\n\t\tif (date) {\n\t\t\tif (typeof date === 'string')\n\t\t\t\tdate = this.strToDate(date);\n\n\t\t\treturn this.datePipe.transform(date, format);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetDateToday(withHours: boolean = false) {\n\t\tlet today = new Date();\n\t\tif (withHours)\n\t\t\treturn today;\n\t\telse\n\t\t\treturn new Date(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0);\n\t}\n\n\tgetYearOfDate(date: Date | string) {\n\t\tdate = this.strToDate(date);\n\n\t\tif (date) return date.getFullYear();\n\t\treturn 0;\n\t}\n\n\tgetMonthOfDate(date: Date | string) {\n\t\tdate = this.strToDate(date);\n\n\t\tif (date) return date.getMonth() + 1;\n\t\treturn 0;\n\t}\n\n\tgetDayOfDate(date: Date | string) {\n\t\tdate = this.strToDate(date);\n\n\t\tif (date) return date.getDate();\n\t\treturn 0;\n\t}\n\n\tcopyDate(date: Date): Date {\n\t\tif (date)\n\t\t\treturn new Date(date.toString());\n\t\treturn date;\n\t}\n\n\tdateFormat(date: Date | string, format: string = 'dd/MM/yyyy'): string {\n\t\tdate = this.strToDate(date);\n\n\t\tif (date) return this.datePipe.transform(date, format);\n\n\t\treturn null;\n\t}\n\n\tstrToDoubleCurrency(strCurrency: string): number {\n\t\tstrCurrency = strCurrency.replace(/[,.]/g, (m) => m === ',' ? '.' : ',');\n\n\t\treturn Number(strCurrency);\n\t}\n\n\tcopy(obj: any) {\n\t\tif (obj) return JSON.parse(JSON.stringify(obj));\n\t\telse return obj;\n\t}\n\n\tcopyToClipboard(inputElement) {\n\t\tinputElement.focus();\n\t\tinputElement.select();\n\t\tlet successful = document.execCommand('copy');\n\t}\n\n\tgetDiffOfDate(dateBegin: Date, dateEnd: Date, returnType: string = 'days'): number {\n\t\tif (dateBegin && dateEnd) {\n\n\t\t\tlet delta = Math.abs(dateEnd.getTime() - dateBegin.getTime()) / 1000;\n\n\t\t\tlet days = Math.floor(delta / 86400);\n\t\t\tdelta -= days * 86400;\n\n\t\t\tlet hours = Math.floor(delta / 3600) % 24;\n\t\t\tdelta -= hours * 3600;\n\n\t\t\tlet minutes = Math.floor(delta / 60) % 60;\n\t\t\tdelta -= minutes * 60;\n\n\t\t\tlet seconds = Math.floor(delta % 60);\n\n\t\t\tif (returnType === 'days')\n\t\t\t\treturn days;\n\t\t\telse if (returnType === 'hours')\n\t\t\t\treturn hours;\n\t\t\telse if (returnType === 'minutes')\n\t\t\t\treturn minutes;\n\t\t\telse if (returnType === 'seconds')\n\t\t\t\treturn seconds;\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tpublic stringReplace(source, str, strToRep){\n\t\treturn source.replace(str, strToRep).toString();\n\t}\n}\n\nexport function isObject(val: any) {\n\tif (val === null) { return false;}\n    return ( (typeof val === 'function') || (typeof val === 'object') );\n}\n\nexport function isNullOrUndefined(val: any) {\n\treturn val === null || typeof val === 'undefined'\n}\n","export abstract class AgTableSettingsAbstract {\n    public lang: string = 'en-US';\n    public filterDebounceTime: number = 500;\n}","import { Injectable } from '@angular/core';\nimport { AgTableSettingsAbstract } from './ag-table-settings.abstract';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AgTableCustomSettings extends AgTableSettingsAbstract {\n}\n","import { Injectable } from '@angular/core';\nimport { AgTableCustomSettings } from './ag-table-custom.settings';\nimport { AgTableSettingsAbstract } from './ag-table-settings.abstract';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AgTableSettings extends AgTableSettingsAbstract {\n\n    constructor(customSettings: AgTableCustomSettings) {\n        super();\n        if (customSettings)\n            Object.assign(this, customSettings);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subscriber } from 'rxjs';\nimport { AgTableSettings } from '../settings/ag-table.settings';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AgTableLangService {\n\n    private set lang(value: string) { this.settings.lang = value; }\n    private get lang() { return this.settings.lang; }\n\n    private get langTranslation() { return this.lang.replace(/-/g, '').trim(); }\n\n    constructor(\n        private settings: AgTableSettings\n    ) {\n    }\n\n    public setLang(lang: string, reloadPage: boolean = false) {\n        this.lang = lang;\n\n        if (reloadPage)\n            location.reload();\n    }\n\n    public getLang(): string { return this.lang; }\n\n    public getText(value: string, dict: { [key: string]: any }, asString: boolean = true) {\n\n        let getText = (arg?: Subscriber<string>) => {\n            let observ = arg ? arg as Subscriber<string> : null;\n\n            if (!dict || JSON.stringify(dict) !== '{}') {\n                let helper = this.processValue(value, dict);\n\n                // tslint:disable-next-line:quotemark\n                if (typeof helper === \"object\") {\n                    let text = `-- WITHOUT TRANSLATION [${value}] --`;\n                    if (observ)\n                        observ.next(text);\n                    else\n                        return text;\n                }\n                else {\n                    if (observ)\n                        observ.next(helper);\n                    else\n                        return helper;\n                }\n            }\n            else {\n                if (observ) {\n                    if (dict && value in dict && this.langTranslation in dict[value])\n                        observ.next(dict[value][this.langTranslation]);\n                    else\n                        observ.next('');\n                }\n                else {\n                    if (dict && value in dict && this.langTranslation in dict[value])\n                        return dict[value][this.langTranslation];\n                    else\n                        return '';\n                }\n            }\n\n            if (observ) return () => observ.unsubscribe();\n        };\n\n        if (!asString)\n            return new Observable<string>(getText);\n        else\n            return getText();\n    }\n\n    private processValue(prop: string, dict?: any): string {\n\n        const positions = prop.split('.');\n        let helper = null;\n\n        if (dict && JSON.stringify(dict) !== '{}'){\n            helper = dict;\n\n            for (let _prop of positions){\n                if (_prop in helper)\n                    helper = helper[_prop];\n            }\n\n            if (this.langTranslation in helper)\n                helper = helper[this.langTranslation];\n        }\n\n        return helper ? helper : '';\n    }\n}\n","import { AgTableFilterType } from '../enums/ag-table-filter-type.enum';\n\nexport const FILTER_TYPES = Object.keys(AgTableFilterType).map(key => AgTableFilterType[key]) as string[];","export const TRANSLATION = {\n    CURRENCY_PH: {\n        ptBR: 'R$',\n        enUS: 'USD'\n    },\n    DATE_FORMAT: {\n        ptBR: 'dd/MM/yyyy',\n        enUS: 'yyyy/MM/dd'\n    },\n    YEAR_INITIAL: {\n        ptBR: 'a',\n        enUS: 'y',\n    }\n};\n","import { Directive, HostListener, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { Helper, isNullOrUndefined } from '../services/helper';\nimport { AgTableSettings } from '../settings/ag-table.settings';\nimport { AbstractControl } from '@angular/forms';\n\n@Directive({\n    selector: '[date-format]'\n})\n\nexport class DateFormatDirective implements OnChanges {\n    private regex: RegExp;\n    private keyCodesAccepts: number[] = [8, 9, 37, 38, 39, 40];\n\n    private datePipe: DatePipe;\n\n    private dateSeparator: string;\n\n    private ctrlDown: boolean = false;\n    private pasting: boolean = false;\n\n    @Input('date-format') dateFormat: string;\n    @Input('control') formControl: AbstractControl;\n\n    constructor(\n        private helper: Helper,\n        private settings: AgTableSettings\n    ) {\n        this.datePipe = new DatePipe(settings.lang);\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if ('dateFormat' in changes) {\n            let regexStr = '';\n            if (this.dateFormat) {\n                if (!this.dateFormat.includes('-') && !this.dateFormat.includes('/')) {\n                    if (this.dateFormat.toLowerCase() === 'dd')\n                        regexStr += '([0-2]\\\\d{1}|3[0-1])';\n                    else if (this.dateFormat.toLowerCase() === 'mm')\n                        regexStr += '(0\\\\d{1}|1[0-2])';\n                    else if (this.dateFormat.toLowerCase() === 'yyyy')\n                        regexStr += '\\\\d{4}';\n                }\n                else if (this.dateFormat.includes('-') || this.dateFormat.includes('/')) {\n                    this.dateSeparator = this.dateFormat.includes('-') ? '-' : '/';\n                    let splitted = this.dateFormat.split(this.dateSeparator);\n                    splitted.forEach((division) => {\n                        let divisionRegex = '';\n                        if (division.toLowerCase() === 'dd')\n                            divisionRegex = '([0-2]\\\\d{1}|3[0-1])';\n                        else if (division.toLowerCase() === 'mm')\n                            divisionRegex = '(0\\\\d{1}|1[0-2])';\n                        else if (division.toLowerCase() === 'yyyy')\n                            divisionRegex = '\\\\d{4}';\n        \n                        if (divisionRegex)\n                            regexStr += (regexStr !== '' ? this.dateSeparator : '') + divisionRegex;\n                    });\n                }\n            }\n            \n            if (regexStr === '') {\n                this.dateSeparator = '/';\n                this.dateFormat = 'dd/MM/yyyy';\n                regexStr = '([0-2]\\\\d{1}|3[0-1])/(0\\d{1}|1[0-2])/\\\\d{4}';\n            }\n            \n            this.regex = new RegExp(regexStr, 'g');\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    onKeydown(e: any) {\n        let input = e.target as HTMLInputElement;\n\n        let code = e.keyCode;\n        let key = e.key.toLowerCase();\n\n        if (code == 17 || code == 91)\n            this.ctrlDown = true;\n        \n        if (this.keyCodesAccepts.some(x => x === code) || (this.ctrlDown && (code == 86 || code == 67 || key === 'a' || key === 'x'))) {\n            if ((this.ctrlDown && key === 'x') || code === 8) {\n                if ((input.selectionStart === 0 && input.selectionEnd === input.value.length) || input.value.length === 1)\n                    setTimeout(() => this.onBlur(e));\n            }\n        }\n        else {\n            let object = this.generateValue(input.value, e.key);\n            if (!isNullOrUndefined(object.validValue.match(this.regex))) {\n                input.value = object.formatedValue;\n\n                if (input.value.length === this.dateFormat.length)\n                    this.onBlur(e);\n            }\n            \n            event.preventDefault();\n            return false;\n        }\n    }\n\n    @HostListener('keyup', ['$event'])\n    onKeyup(e: any) {\n        if (e.keyCode == 17 || e.keyCode == 91)\n            this.ctrlDown = false;\n    }\n\n    @HostListener('paste', ['$event'])\n    onPaste(e: any) {\n        if (!this.pasting) {\n            let input = e.target as HTMLInputElement;\n            let prevValue = input.value;\n    \n            this.pasting = true;\n            setTimeout(() => {\n                this.pasting = false;\n                let value = this.helper.onlyNumbers(input.value, [this.dateFormat]);\n                let object = this.generateValue(value);\n                if (!isNullOrUndefined(object.validValue.match(this.regex))) {\n                    input.value = object.formatedValue;\n\n                    if (input.value.length === this.dateFormat.length)\n                        this.onBlur(e);\n                }\n                else\n                    input.value = prevValue;\n            });\n        }\n    }\n\n    @HostListener('cut', ['$event'])\n    onCut(e: any) {\n        if (!this.pasting) {\n            let input = e.target as HTMLInputElement;\n    \n            this.pasting = true;\n            setTimeout(() => {\n                this.pasting = false;\n                let value = this.helper.onlyNumbers(input.value, [this.dateFormat]);\n                let object = this.generateValue(value);\n                if (!isNullOrUndefined(object.validValue.match(this.regex))) {\n                    input.value = object.formatedValue;\n                }\n                else\n                    input.value = '';\n\n                this.onBlur(e);\n            });\n        }\n    }\n\n    @HostListener('blur', ['$event'])\n    onBlur(e: any) {\n        if (this.formControl) {\n            let input = e.target as HTMLInputElement;\n            this.formControl.setValue(input.value);\n        }\n    }\n\n    private generateValue(currentValue: string, nextChar: string = null): { validValue: string, formatedValue: string } {\n        let object = {\n            validValue: currentValue,\n            formatedValue: '',\n        };\n        if (currentValue.length !== this.dateFormat.length) {\n            let newValue = '';\n            if (this.dateSeparator) {\n                for(var i = 0; i < this.dateFormat.length; i++) {\n                    let format = this.dateFormat[i];\n                    let length = i + 1;\n    \n                    if (length <= currentValue.length)\n                        newValue += currentValue[i];\n                    else if ((length - 1) === currentValue.length) {\n                        if (format === this.dateSeparator) {\n                            newValue += format;\n                            if (nextChar) i++;\n                        }\n\n                        newValue += nextChar ? nextChar : '1';\n\n                        object.formatedValue = newValue;\n                    }\n                    else\n                        newValue += (format !== this.dateSeparator) ? '1' : format;\n                }\n            }\n            else {\n                \n            }\n\n            object.validValue = newValue;\n        }\n        \n        if (!object.formatedValue)\n            object.formatedValue = object.validValue;\n\n        return object;\n    }\n\n    maskDate(value: string) {\n    }\n}\n","import { Pipe, PipeTransform, Injectable } from '@angular/core';\nimport { AgTableLangService } from '../services/ag-table-lang.service';\n@Injectable({\n    providedIn: 'root'\n})\n@Pipe({\n    name: 'translate',\n    pure: false\n})\nexport class TranslatePipe implements PipeTransform {\n    constructor(\n        private langService: AgTableLangService\n    ) {\n    }\n\n    transform(prop: string, dict: { [key: string]: any } = null, replaceObj?: { [key: string]: any }): any {\n        let text = '';\n\n        this.langService.getText(prop, dict, false).subscribe(result => {\n            if (result !== undefined && typeof(result) === 'string') {\n                if (replaceObj && (typeof replaceObj).includes('object')) {\n                    for (let property in replaceObj)\n                        result = result.replace(`{{${property}}}`, replaceObj[property]);\n                }\n                text = result;\n            }\n        });\n        return text;\n    }\n}\n","import { Component, Input, EventEmitter, Output, OnInit, OnChanges, SimpleChanges, OnDestroy, HostBinding, AfterViewInit } from '@angular/core';\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport { AgTableFilterType } from '../enums/ag-table-filter-type.enum';\nimport { FILTER_TYPES } from '../constants/filter-types.const';\nimport { Helper, isNullOrUndefined, isObject } from '../services/helper';\nimport { TRANSLATION } from './ag-table-filter.component.trans';\nimport { AgTableLangService } from '../services/ag-table-lang.service';\nimport { AgTableSettings } from '../settings/ag-table.settings';\n\n@Component({\n    selector: 'ag-table-filter',\n    templateUrl: './ag-table-filter.component.html'\n})\nexport class AgTableFilterComponent implements OnInit, OnChanges, OnDestroy {\n    @HostBinding('class.ag-table-filter') public class: boolean = true;\n\n    public currentFilter: any = '';\n    @Input() public type = '';\n    @Input() public placeholder = '';\n    @Input() public dateFormat: string = '';\n    @Input() public optionAllLabel: string = '';\n    @Input() public options: { text: string, value: any }[] | any[] = [];\n    @Input() public frmControl: FormControl;\n\n    /* DISABLED\n    @Input() public readOnly: boolean = false;\n    @Input() public minDate: Date;\n    @Input() public maxDate: Date;\n    @Input() public dateSeparator: string = '/'; */\n\n    @Output() public onChange = new EventEmitter<any>();\n    @Output() public onRender = new EventEmitter<void>();\n\n    private subscription: Subscription;\n    public formFilter: FormGroup;\n    public selectAllOptionValue: any = null;\n\n    private get debounceTime(): number {\n        if (this.type === 'date' || this.type === 'select')\n            return 0;\n        else\n            return this.settings.filterDebounceTime;\n    }\n\n\tpublic dictionary = TRANSLATION;\n\n    constructor(\n        private helper: Helper,\n        private langService: AgTableLangService,\n        private settings: AgTableSettings,\n    ) {\n    }\n\n    ngOnInit() {\n        setTimeout(() => {\n            this.onRender.emit();\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n\n        if ('options' in changes) {\n            if (!Array.isArray(this.options)) {\n                console.warn('The options of a filter of type \"select\" was set invalid.');\n                this.options = [];\n            }\n            else if (this.options.length) {\n                if (!isObject(this.options[0])) {\n                    this.options = (this.options as any).map((x) => {\n                        return {\n                            text: x,\n                            value: x\n                        };\n                    });\n                } else {\n                    this.options = (this.options as any).map((x) => {\n                        return {\n                            text: ('text' in x) ? x.text : x.value,\n                            value: ('id' in x) ? x.id : x.value\n                        };\n                    });\n                }\n            }\n        }\n\n        if ('type' in changes) {\n            if (FILTER_TYPES.every(x => x !== this.type))\n                this.type = AgTableFilterType.TEXT;\n        }\n        \n        if ('placeholder' in changes) {\n            if (!this.placeholder && this.type === 'date')\n                this.placeholder = this.dateFormat.replace(/y/g, this.langService.getText('YEAR_INITIAL', this.dictionary)).toUpperCase();\n        }\n\n        if ('frmControl' in changes) {\n            if (this.subscription)\n                this.subscription.unsubscribe();\n\n            if (this.frmControl) {\n                this.currentFilter = this.frmControl.value;\n                this.subscription = this.frmControl.valueChanges.pipe(\n                    debounceTime(this.debounceTime),\n                    map(this.prepareData.bind(this))\n                ).subscribe((toFilter) => {\n                    if (toFilter && this.frmControl.enable)\n                        this.onChange.emit(this.currentFilter);\n                });\n            }\n            else\n                this.currentFilter = null;\n        }\n    }\n\n    prepareData() {\n        if (this.frmControl.disabled) {\n            this.frmControl.disable();\n            return false;\n        }\n\n        if (this.type === 'select') {\n            if (this.frmControl.value === 'undefined' || this.frmControl.value === 'null') {\n                this.currentFilter = this.selectAllOptionValue;\n                this.frmControl.setValue(this.currentFilter);\n                return true;\n            }\n        }\n\n        if (this.frmControl.value !== this.currentFilter) {\n            if (this.type === 'date') {\n                if (this.frmControl.value && !this.helper.dateIsValid(this.frmControl.value, this.dateFormat)) {\n                    this.currentFilter = this.selectAllOptionValue;\n                    this.frmControl.setValue(null);\n                    return false;\n                }\n            }\n\n            this.currentFilter = this.frmControl.value;\n\n            if (typeof this.currentFilter === 'string' && this.currentFilter !== '') {\n                if (this.currentFilter === 'null') {\n                    this.currentFilter = null;\n                    this.frmControl.setValue(this.currentFilter);\n                }\n                else if (this.currentFilter === 'undefined') {\n                    this.currentFilter = undefined;\n                    this.frmControl.setValue(this.currentFilter);\n                }\n                else if (this.helper.onlyNumbers(this.currentFilter) === this.currentFilter) {\n                    this.currentFilter = parseInt(this.currentFilter);\n                    this.frmControl.setValue(this.currentFilter);\n                }\n            }\n        }\n        else\n            return false;\n\n        return true;\n    }\n\n    private isEmptyValue(value: any) {\n        return isNullOrUndefined(value) || value.toString() === '';\n    }\n\n    ngOnDestroy() {\n        if (this.subscription)\n            this.subscription.unsubscribe();\n    }\n}\n","<input *ngIf=\"type === 'currency'\"\n    class=\"ag-table-filter-input\"\n    type=\"text\"\n    autocomplete=\"off\"\n    [formControl]=\"frmControl\"\n    [placeholder]=\"placeholder ? placeholder : (('CURRENCY_PH' | translate:dictionary) + ' 0,00')\"\n/>\n\n<select *ngIf=\"type === 'select'\" \n    class=\"ag-table-filter-select\"\n    [formControl]=\"frmControl\">\n    <option [value]=\"selectAllOptionValue\">{{optionAllLabel}}</option>\n    <option *ngFor=\"let option of options\" [value]=\"option.value\">{{option.text}}</option>\n</select>\n\n<input *ngIf=\"type === 'text'\"\n    class=\"ag-table-filter-input\"\n    [formControl]=\"frmControl\"\n    type=\"text\"\n    [placeholder]=\"placeholder ? placeholder : ''\"\n/>\n\n<input *ngIf=\"type === 'date'\"\n    class=\"ag-table-filter-input\"\n    [control]=\"frmControl\"\n    [date-format]=\"dateFormat\"\n    type=\"text\"\n    [placeholder]=\"placeholder ? placeholder : dateFormat.toUpperCase()\"\n/>\n\n<input *ngIf=\"type === 'number'\"\n    class=\"ag-table-filter-input\"\n    [formControl]=\"frmControl\"\n    type=\"text\"\n    OnlyNumber\n    [placeholder]=\"placeholder ? placeholder : ''\"\n/>\n","import { Component, OnInit, HostBinding, Input, OnChanges, SimpleChanges, ElementRef, AfterViewInit } from '@angular/core';\nimport { TRANSLATION } from './ag-table-col.component.trans';\nimport { AgTableHeaderComponent } from '../ag-table-header/ag-table-header.component';\nimport { FormBuilder } from '@angular/forms';\nimport { AgTableFilterMode } from '../enums/ag-table-filter-mode.enum';\nimport { AgTableFilterType } from '../enums/ag-table-filter-type.enum';\nimport { Helper, isNullOrUndefined, isObject } from './../services/helper';\nimport { AgTableLangService } from '../services/ag-table-lang.service';\n\n//@dynamic\n@Component({\n\tselector: 'ag-table-col',\n\ttemplateUrl: './ag-table-col.component.html'\n})\nexport class AgTableColComponent implements OnInit, OnChanges, AfterViewInit {\n\t@HostBinding('class.ag-table-col') public _class: boolean = true;\n\n\t@Input() public width: string = null;\n\n\t@Input('custom-filter') public customFilter: { field: string, mode?: AgTableFilterMode, value?: any } |\n\t\t\t\t\t\t\t\t\t\t\t\t { field: string, mode?: AgTableFilterMode, value?: any }[] |\n\t\t\t\t\t\t\t\t\t\t\t\t string |\n\t\t\t\t\t\t\t\t\t\t\t\t string[];\n\t@Input() public filter: AgTableFilterType = AgTableFilterType.NONE;\n\t@Input() public field: string = '';\n    @Input() public mode: AgTableFilterMode = null;\n    @Input() public placeholder = '';\n    @Input('date-format') public dateFormat: string = '';\n\t@Input('option-all-label') public optionAllLabel: string = '';\n\t@Input() public options: { text: string, value: any }[] | any[] = [];\n\n\t/* DISABLED\n    @Input('ready-only') public readOnly: boolean = false;\n\t@Input('min-date') public minDate: Date;\n    @Input('max-date') public maxDate: Date;\n    @Input('date-separator') public dateSeparator: string = '/'; */\n\n\t@Input('no-sort') public noSort: boolean = false;\n\t@Input('no-truncate') public noTruncate: boolean = false;\n\t@Input('sort') public sort: string = null;\n\t@Input('disable-filter') public disableFilter: boolean = false;\n\t@Input('filter-value') public filterValue: any = null;\n\n\tpublic set _width(value: string) {\n\t\tif (this.el){\n\t\t\tthis.el.style.width = value;\n\n\t\t\tif (value && value.endsWith('%'))\n\t\t\t\tthis.el.style.maxWidth = ((this.helper.onlyNumberAndToFloat(value) * this.parent.el.clientWidth) / 100) + 'px';\n\t\t\telse\n\t\t\t\tthis.el.style.maxWidth = value;\n\t\t}\n\t}\n\tpublic get _width() { return (this.elRef && this.el) ? this.el.style.width : 'auto'; }\n\t\n\tpublic get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n\tpublic dictionary = TRANSLATION;\n\n\tpublic colIndex: number = 0;\n\tpublic parent: AgTableHeaderComponent;\n\tpublic canFiltering: boolean = false;\n\tpublic fields: string[] = [];\n\n\tpublic get canFilter() {\n\t\treturn (this.filter && this.filter !== AgTableFilterType.NONE && this.filter.toString() !== '') ||\n\t\t\t\t(this.customFilter && (this.customFilter as any[]).length > 0);\n\t}\n\n\tpublic filterActive: boolean = false;\n\n\tpublic get isSorting() { return this.parent && this.parent.colSorting && this.parent.colSorting.col === this; }\n\tpublic get isSortAsc() { return this.isSorting && this.parent.colSorting.asc; }\n\n\tconstructor(\n\t\tprivate helper: Helper,\n\t\t\tprivate langService: AgTableLangService,\n\t\tprivate fb: FormBuilder,\n\t\tprivate elRef: ElementRef<HTMLElement>\n\t) {\n\t}\n\n\tngOnInit() {\n\t}\n\n    ngAfterViewInit() {\n        if (!this.optionAllLabel)\n            this.optionAllLabel = this.langService.getText('ALL_OPTION', this.dictionary);\n\n        if (!this.dateFormat)\n\t\t\tthis.dateFormat = this.langService.getText('DATE_FORMAT', this.dictionary);\n\t\t\t\n\t\tif (!this.noSort && !this.field && (!this.customFilter || !(this.customFilter as any[]).length)) {\n\t\t\tthis.filter = AgTableFilterType.NONE;\n\t\t\tconsole.warn(`The ordering will not applied because the [field] of column has not been defined.`);\n\t\t}\n    }\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (!changes || 'width' in changes) {\n\t\t\tif (!this.widthIsValid())\n\t\t\t\tthis.width = 'auto';\n\n\t\t\tif (this.widthIsValid() && this.helper.onlyNumbers(this.width) === this.width)\n\t\t\t\tthis.width += 'px';\n\t\t\tif (this.parent && this.parent.cols) {\n\t\t\t\tlet unit = this.getWidthUnit();\n\t\t\t\tif (unit !== '' && this.parent.cols.some((x) => x.getWidthUnit() !== '' && x.getWidthUnit() !== unit)) {\n\t\t\t\t\tlet anotherUnit = this.parent.cols.find((x) => x.getWidthUnit() !== '' && x.getWidthUnit() !== unit).getWidthUnit();\n\t\t\t\t\tconsole.warn(`A another column has width defined with like \"${anotherUnit}\". So this [width] was redefined as \"auto\".`);\n\t\t\t\t\tthis.width = 'auto';\n\t\t\t\t\tthis.setWidth();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.getWidthUnit() === '%') {\n\t\t\t\tif (parseFloat(this.width.replace(this.getWidthUnit(), '')) >= 100){\n\t\t\t\t\tconsole.warn(`The columns cannot have width equal or greater than 100%.`);\n\t\t\t\t\tthis.width = 'auto';\n\t\t\t\t\tthis.setWidth();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.setWidth();\n\t\t}\n\n\t\tif (changes) {\n\t\t\tif ('noSort' in changes)\n\t\t\t\tthis.noSort = (typeof this.noSort === 'string' && (this.noSort === '' || this.noSort === 'true')) ? true : this.noSort;\n\t\t\tif ('noTruncate' in changes)\n\t\t\t\tthis.noTruncate = (typeof this.noTruncate === 'string' && (this.noTruncate === '' || this.noTruncate === 'true')) ? true : this.noTruncate;\n\n\t\t\tif ('sort' in changes) {\n\t\t\t\tthis.sort = !this.sort ? null : this.sort;\n\n\t\t\t\tif (this.sort !== 'asc' && this.sort !== 'desc')\n\t\t\t\t\tthis.sort = null;\n\n\t\t\t\tif (this.parent) {\n\t\t\t\t\tthis.parent.colSorting = {\n\t\t\t\t\t\tcol: this,\n\t\t\t\t\t\tasc: this.sort === 'asc'\n\t\t\t\t\t};\n\t\t\t\t\tthis.sort = null;\n\t\t\t\t\tthis.parent.parent.onSortChange();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ('filter' in changes) {\n\t\t\t\tif (!this.filter && this.filter.toString() !== '')\n\t\t\t\t\tthis.filter = AgTableFilterType.NONE;\n\t\t\t\telse if (this.filter.toString() === '')\n\t\t\t\t\tthis.filter = AgTableFilterType.TEXT;\n\n\t\t\t\tif (this.filter !== AgTableFilterType.NONE && !this.mode) {\n\t\t\t\t\tswitch (this.filter) {\n\t\t\t\t\t\tcase AgTableFilterType.TEXT:\n\t\t\t\t\t\tcase AgTableFilterType.CURRENCY:\n\t\t\t\t\t\t\tthis.mode = AgTableFilterMode.CONTAINS;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase AgTableFilterType.SELECT:\n\t\t\t\t\t\tcase AgTableFilterType.DATE:\n\t\t\t\t\t\t\tthis.mode = AgTableFilterMode.EQUALS;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthis.mode = AgTableFilterMode.CONTAINS;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.parent) {\n\t\t\t\t\tif (this.field && this.parent.filterCtrls[this.field]) {\n\t\t\t\t\t\tif (this.disableFilter)\n\t\t\t\t\t\t\tthis.parent.filterCtrls[this.field].disable();\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.parent.filterCtrls[this.field].enable();\n\t\t\t\t\t}\n\t\t\t\t\telse if (this.customFilter)\n\t\t\t\t\t\t(this.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n\t\t\t\t\t\t\tif (this.disableFilter)\n\t\t\t\t\t\t\t\tthis.parent.filterCtrls[custom.field].disable();\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tthis.parent.filterCtrls[custom.field].enable();\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.canFilter && !this.field) {\n\t\t\t\t\tthis.filter = AgTableFilterType.NONE;\n\t\t\t\t\tconsole.warn(`The filter will not applied because the [field] of column has not been defined.`);\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.parent)\n\t\t\t\t\t\tthis.parent.parent.definePaddingTop();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ('customFilter' in changes) {\n\t\t\t\tif (this.canFilter && this.field) {\n\t\t\t\t\tconsole.warn(`The [custom-filter] will not applied because the [filter] has already been defined.`);\n\t\t\t\t\tthis.customFilter = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (this.customFilter && (isObject(this.customFilter) || typeof this.customFilter === 'string')) {\n\t\t\t\t\t\tif (isObject(this.customFilter) && !Array.isArray(this.customFilter))\n\t\t\t\t\t\t\tthis.customFilter = [(this.customFilter as any)];\n\t\t\t\t\t\telse if (Array.isArray(this.customFilter) && ((this.customFilter as any[]).length > 0 && typeof this.customFilter[0] === 'string'))\n\t\t\t\t\t\t\tthis.customFilter = (this.customFilter as string[]).map(field => ({ field }));\n\t\t\t\t\t\telse if (!isObject(this.customFilter))\n\t\t\t\t\t\t\tthis.customFilter = [{ field: this.customFilter}] as any[];\n\n\t\t\t\t\t\tif (!Array.isArray(this.customFilter) || !(this.customFilter as any[]).every(x => (isObject(x) && x.field) ? true : false)){\n\t\t\t\t\t\t\tconsole.warn(`The [custom-filter] will not applied because field has not been informed or is invalid. The value should look like this: { field: string, mode?: string }`);\n\t\t\t\t\t\t\tthis.customFilter = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (!this.noSort)\n\t\t\t\t\t\t\t\tthis.noSort = (this.customFilter as any[]).length > 1;\n\n\t\t\t\t\t\t\t(this.customFilter as any[]).forEach((filter) => {\n\t\t\t\t\t\t\t\tif (!filter.mode)\n\t\t\t\t\t\t\t\t\tfilter.mode = AgTableFilterMode.CONTAINS;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\tif (this.parent)\n\t\t\t\t\t\t\t\t\tthis.parent.parent.definePaddingTop();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.warn(`The [custom-filter] will not applied because value is invalid. The value should look like this: { field: string, mode?: string }`);\n\t\t\t\t\t\tthis.customFilter = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic makeFormControl(defaultValue: any = null) {\n\t\treturn this.fb.control(defaultValue);\n\t}\n\n\tpublic onFiltering() {\n\t\tif (this.parent && this.parent.parent) {\n\t\t\tif (this.parent) {\n\t\t\t\tif (this.field)\n\t\t\t\t\tthis.filterActive = (this.parent.filterCtrls[this.field] && this.parent.filterCtrls[this.field].value !== null && this.parent.filterCtrls[this.field].value !== '');\n\t\t\t\telse if (this.customFilter)\n\t\t\t\t\tthis.filterActive = (this.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).some((custom) => {\n\t\t\t\t\t\treturn this.parent.filterCtrls[custom.field] && this.parent.filterCtrls[custom.field].value !== null && this.parent.filterCtrls[custom.field].value !== '';\n\t\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis.filterActive = false;\n\n\t\t\tthis.parent.parent.onFilterChange();\n\t\t}\n\t}\n\n\tpublic onFilterRender() {\n\t\tif (this.parent)\n\t\t\tthis.parent.parent.definePaddingTop();\n\t}\n\n\tpublic toggleSort() {\n\t\tif (this.parent && this.parent.parent && !this.parent.parent.loading) {\n\t\t\tlet asc;\n\t\t\tif (this.isSorting) {\n\t\t\t\tif (this.parent.colSorting.asc) {\n\t\t\t\t\tasc = false;\n\t\t\t\t\tthis.parent.colSorting = {\n\t\t\t\t\t\tcol: this,\n\t\t\t\t\t\tasc: asc\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tthis.parent.colSorting = null;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tasc = true;\n\t\t\t\tthis.parent.colSorting = {\n\t\t\t\t\tcol: this,\n\t\t\t\t\tasc: asc\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.parent.parent.onSortChange();\n\t\t}\n\t}\n\n\tprivate widthIsValid() {\n\t\treturn !isNullOrUndefined(this.width) && (typeof this.width === 'string') && this.width !== '' && this.width !== 'auto';\n\t}\n\n\tprivate getWidthUnit() {\n\t\treturn this.widthIsValid() ? this.width.replace(this.helper.onlyNumbers(this.width), '') : '';\n\t}\n\n\tpublic onRender(parent: AgTableHeaderComponent, index) {\n\t\tthis.parent = parent;\n\t\tthis.colIndex = index;\n\t\tthis.canFiltering = this.canFilter && !isNullOrUndefined(this.parent.filterCtrls);\n\t\tthis.fields = this.generateFieldsFilter();\n\t\tthis.setWidth();\n\t\tthis.ngOnChanges(null);\n\t}\n\n\tprivate generateFieldsFilter() {\n\t\tif (this.canFilter) {\n\t\t\tif (this.field)\n\t\t\t\treturn [this.field];\n\t\t\telse\n\t\t\t\treturn (this.customFilter as any[]).map((custom) => custom.field);\n\t\t}\n\t\treturn [];\n\t}\n\n\tpublic setWidth() {\n\t\tif (this.parent && this.parent.parent.body.itemsContainerEl && this.parent.parent.body.itemsContainerEl.nativeElement) {\n\t\t\tif (!this.widthIsValid()) {\n\t\t\t\tlet unit = '';\n\t\t\t\tif (this.parent.cols.some((x, i) => x.getWidthUnit() !== ''))\n\t\t\t\tunit = this.parent.cols.find((x, i) => x.getWidthUnit() !== '').getWidthUnit();\n\n\t\t\t\tif (unit === 'px') {\n\t\t\t\t\tlet colsWithWidth = this.parent.cols.filter((x, i) => i !== this.colIndex && x.widthIsValid());\n\t\t\t\t\tlet widthDiff = colsWithWidth.reduce((prev, curr) => prev + parseFloat(this.helper.onlyNumbers(curr.width)), 0);\n\t\t\t\t\tlet containerWidth = this.parent.el.clientWidth;\n\t\t\t\t\tthis._width = (containerWidth - widthDiff) / Math.abs(this.parent.cols.length - colsWithWidth.length) + 'px';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!unit) unit = '%';\n\t\t\t\t\tlet colsWithWidth = this.parent.cols.filter((x, i) => i !== this.colIndex && x.widthIsValid());\n\t\t\t\t\tlet widthDiff = colsWithWidth.reduce((prev, curr) => prev + parseFloat(this.helper.onlyNumbers(curr.width)), 0);\n\t\t\t\t\tthis._width = (100 - widthDiff) / Math.abs(this.parent.cols.length - colsWithWidth.length) + unit;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\tthis._width = this.width;\n\t\t}\n\t\telse\n\t\t\tthis._width = 'auto';\n\n\t\tthis.setCellsWidth();\n\t}\n\n\tprivate setCellsWidth() {\n\t\tif (this.parent && this.parent.parent.body && this.parent.parent.body.rows.length) {\n\t\t\tthis.parent.parent.body.rows.forEach(row => {\n\t\t\t\tlet cell = row.cells.find(cell => cell.cellIndex === this.colIndex);\n\t\t\t\tif (cell)\n\t\t\t\t\tcell.setWidth();\n\t\t\t});\n\t\t}\n\t}\n}\n","<span *ngIf=\"!noSort\" class=\"ag-table-col-sort\" (click)=\"toggleSort()\" [class.sort-none]=\"!isSorting\" [class.sort-asc]=\"isSorting && isSortAsc\" [class.sort-desc]=\"isSorting && !isSortAsc\"></span>\n\n<div class=\"w-auto\" [class.text-truncate]=\"!noTruncate && !customFilter\">\n    <ng-content></ng-content>\n</div>\n\n<div *ngIf=\"canFiltering && parent?.filterCtrls\">\n    <ag-table-filter *ngFor=\"let field of fields\"\n        [frmControl]=\"parent?.filterCtrls[field]\"\n        [type]=\"filter\"\n        [placeholder]=\"placeholder\"\n        [dateFormat]=\"dateFormat\"\n        [optionAllLabel]=\"optionAllLabel\"\n        [options]=\"options\"\n        (onChange)=\"onFiltering()\" \n        (onRender)=\"onFilterRender()\"> \n    </ag-table-filter>\n</div>","import { Component, OnInit, HostBinding, QueryList, ContentChildren, AfterViewInit, ElementRef, OnDestroy } from '@angular/core';\nimport { TRANSLATION } from './ag-table-header.component.trans';\nimport { FormBuilder, FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { AgTableFilterMode } from '../enums/ag-table-filter-mode.enum';\nimport { AgTableColComponent } from '../ag-table-col/ag-table-col.component';\nimport { Helper, isNullOrUndefined } from '../services/helper';\n\n@Component({\n\tselector: 'ag-table-header',\n\ttemplateUrl: './ag-table-header.component.html'\n})\nexport class AgTableHeaderComponent implements OnInit, OnDestroy, AfterViewInit {\n\t@HostBinding('class.ag-table-header') public class: boolean = true;\n\n\t@ContentChildren(AgTableColComponent) private queryCols: QueryList<AgTableColComponent>;\n\n\tpublic get cols() { return this.queryCols ? this.queryCols.toArray() : []; }\n\n\tpublic get height() { return (this.el) ? `${this.el.children[0].clientHeight}px` : '0px'; }\n\n\tpublic get visible() { return (this.elRef && this.el) ? this.el.style.visibility !== 'hidden' : false; }\n\tpublic set visible(value: boolean) {\n\t\tif ((this.elRef && this.el))\n\t\t\tthis.el.style.visibility = (value ? '' : 'hidden');\n\t}\n\n\tpublic parent: any;\n\n\tpublic dictionary = TRANSLATION;\n\n\tpublic frmFilter: FormGroup;\n\n\tpublic colSorting: { col: AgTableColComponent, asc: boolean } = null;\n\n\tpublic get filterCtrls(): { [key: string]: FormControl } {\n\t\treturn ((this.frmFilter && this.frmFilter.controls) ? this.frmFilter.controls : null) as { [key: string]: FormControl };\n\t}\n\t\n\tpublic get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n\tconstructor(\n\t\tpublic elRef: ElementRef<HTMLElement>,\n\t\tprivate helper: Helper,\n\t\tprivate fb: FormBuilder\n\t) {\n\t\tthis.frmFilter = this.fb.group({ none: [null] });\n\t}\n\n\tngOnInit() {\n\t}\n\n\tngAfterViewInit() {\n\t}\n\n\tprivate makeForm() {\n\t\tlet objControls = {};\n\n\t\tthis.cols.forEach((col) => {\n\t\t\tif (col.canFilter) {\n\t\t\t\tif (col.field) {\n\t\t\t\t\tobjControls[col.field] = col.makeFormControl();\n\n\t\t\t\t\tif (col.disableFilter) {\n\t\t\t\t\t\tobjControls[col.field].disable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(col.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n\t\t\t\t\t\tobjControls[custom.field] = col.makeFormControl(custom.value ? custom.value : null);\n\n\t\t\t\t\t\tif (col.disableFilter) {\n\t\t\t\t\t\t\tobjControls[col.field].disable();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (Object.keys(objControls).length === 0)\n\t\t\tobjControls['none'] = this.fb.control(null);\n\n\t\tthis.frmFilter = this.fb.group(objControls);\n\n\t\tif (this.parent && this.parent.loading)\n\t\t\tthis.frmFilter.disable();\n\t}\n\n\tpublic enableForm() {\n\t\tthis.cols.forEach((col) => {\n\t\t\tif (col.canFilter) {\n\t\t\t\tif (col.field)\n\t\t\t\t\tthis.checkFilterStatus(col.field, col);\n\t\t\t\telse if (col.customFilter)\n\t\t\t\t\t(col.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n\t\t\t\t\t\tthis.checkFilterStatus(custom.field, col);\n\t\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate checkFilterStatus(field: string, col: AgTableColComponent) {\n\t\tlet control = this.filterCtrls[field];\n\n\t\tif (control) {\n\t\t\tif (col.disableFilter)\n\t\t\t\tcontrol.disable();\n\t\t\telse\n\t\t\t\tcontrol.enable();\n\t\t}\n\t}\n\n\tprivate checkDefaultValue(field: string, value: string, col: AgTableColComponent) {\n\t\tlet control = this.filterCtrls[field];\n\n\t\tif (control && value)\n\t\t\tcontrol.setValue(col.filterValue);\n\t}\n\n\tpublic onRender(parent: any) {\n\t\tthis.parent = parent;\n\t\tthis.configureChildrens();\n\t\tthis.queryCols.changes.subscribe(this.configureChildrens.bind(this));\n\t\tthis.onBodyWidthChange(this.parent.lastBodyWidth);\n\t}\n\n\tpublic configureChildrens() {\n\t\tthis.makeForm();\n\t\tthis.cols.forEach((col, index) => {\n\t\t\tcol.onRender(this, index);\n\n\t\t\tif (col.field)\n\t\t\t\tthis.checkDefaultValue(col.field, col.filterValue, col);\n\t\t\telse if (col.customFilter)\n\t\t\t\t(col.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n\t\t\t\t\tthis.checkDefaultValue(custom.field, custom.value, col);\n\t\t\t\t});\n\t\t});\n\n\t\tif (this.colSorting) {\n\t\t\tif (this.parent.initialized)\n\t\t\t\tthis.parent.onSortChange();\n\t\t}\n\t\telse if (this.cols.some(x => x.sort === 'asc' || x.sort === 'desc')) {\n\t\t\tlet colSort = this.cols.find(x => x.sort === 'asc' || x.sort === 'desc');\n\t\t\tthis.colSorting = {\n\t\t\t\tcol: colSort,\n\t\t\t\tasc: colSort.sort === 'asc'\n\t\t\t};\n\t\t\tcolSort.sort = null;\n\t\t\tif (this.parent.initialized)\n\t\t\t\tthis.parent.onSortChange();\n\t\t}\n\n\t\tif (this.parent)\n\t\t\tthis.parent.definePaddingTop();\n\t}\n\n\tpublic getColByField(field: string) {\n\t\treturn this.cols.find(col => {\n\t\t\tif (col.field)\n\t\t\t\treturn col.field === field;\n\t\t\telse if (col.customFilter)\n\t\t\t\treturn (col.customFilter as any[]).some(x => x.field === field);\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tpublic getColFilterModeByField(field: string) {\n\t\tlet col = this.getColByField(field);\n\t\tif (col) {\n\t\t\tif (col.field)\n\t\t\t\treturn col.mode;\n\t\t\telse if (col.customFilter) {\n\t\t\t\tlet customFilter = (col.customFilter as any[]).find(x => x.field === field);\n\t\t\t\tif (customFilter)\n\t\t\t\t\treturn customFilter.mode;\n\t\t\t}\n\t\t}\n\n\t\treturn AgTableFilterMode.CONTAINS;\n\t}\n\n\tpublic getFormDataModel() {\n\t\tlet formValue = this.frmFilter.value as { [key: string]: any };\n\t\tlet dataModel = {};\n\n\t\tfor (let field in formValue) {\n\t\t\tlet value = formValue[field];\n\t\t\tif (!isNullOrUndefined(value) && value !== '')\n\t\t\t\tdataModel[field] = value;\n\t\t}\n\n\t\treturn dataModel;\n\t}\n\n\tpublic onBodyWidthChange(currentWidth: string) {\n\t\tif (currentWidth && this.el) {\n\t\t\tlet currentWidthNumber = this.helper.onlyNumberAndToFloat(currentWidth);\n\t\t\tlet minWidthIsDefined = !!(this.parent && this.parent.minWidth);\n\t\t\tlet headerWidth = this.el.clientWidth;\n\n\t\t\tif (minWidthIsDefined) {\n\t\t\t\tthis.el.style.width = currentWidth;\n\t\t\t\theaderWidth = this.parent.el.clientWidth;\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis.el.style.width = '';\n\n\t\t\tif (this.cols.length > 0) {\n\t\t\t\tthis.cols.forEach(col => col.setWidth());\n\n\t\t\t\tlet lastCol = this.cols[this.cols.length - 1];\n\n\t\t\t\tif (headerWidth > currentWidthNumber) {\n\t\t\t\t\tthis.el.style.paddingRight = minWidthIsDefined ? '' : ((headerWidth - currentWidthNumber) + 'px');\n\t\t\t\t\tlastCol.el.style.paddingRight = '0px';\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tthis.el.style.paddingRight = '';\n\t\t\t\t\tlastCol.el.style.paddingRight = '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t}\n}\n","<form [formGroup]=\"frmFilter\">\n    <ng-content></ng-content>\n</form>","export const TRANSLATION = {\n    EMPTY: {\n        ptBR: 'Você não tem dados para serem exibidos.',\n        enUS: 'You do not have data to display.'\n    }\n};\n","export const TRANSLATION = {\n};\n","export const TRANSLATION = {\n};\n","import { Component, OnInit, HostBinding, Input, AfterViewInit, ChangeDetectorRef, AfterViewChecked, OnDestroy, ElementRef, SimpleChanges, OnChanges } from '@angular/core';\nimport { TRANSLATION } from './ag-table-cell.component.trans';\nimport { AgTableRowComponent } from '../ag-table-row/ag-table-row.component';\nimport { Helper, isNullOrUndefined } from '../services/helper';\n\n@Component({\n\tselector: 'ag-table-cell',\n\ttemplateUrl: './ag-table-cell.component.html'\n})\nexport class AgTableCellComponent implements OnInit, OnChanges, OnDestroy {\n\t@HostBinding('class.ag-table-cell') public class: boolean = true;\n\n\t@Input('no-truncate') public noTruncate: boolean = false;\n\n\tpublic get truncate() { return this.el.classList.contains('text-truncate'); }\n\tpublic set truncate(value: boolean) {\n\t\tif (this.el) {\n\t\t\tif (value)\n\t\t\t\tthis.el.classList.add('text-truncate');\n\t\t\telse\n\t\t\t\tthis.el.classList.remove('text-truncate');\n\t\t}\n\t}\n\n\tpublic cellIndex: number = null;\n\tpublic parent: AgTableRowComponent;\n\n\tprivate destroyed: boolean = false;\n\n\tpublic get col() {\n\t\tif (!isNullOrUndefined(this.cellIndex) &&\n\t\t\tthis.parent &&\n\t\t\tthis.parent.parent &&\n\t\t\tthis.parent.parent.parent &&\n\t\t\tthis.parent.parent.parent.header &&\n\t\t\tthis.parent.parent.parent.header.cols) {\n\t\t\tif (this.cellIndex < this.parent.parent.parent.header.cols.length)\n\t\t\t\treturn this.parent.parent.parent.header.cols[this.cellIndex];\n\t\t\telse {\n\t\t\t\tconsole.error('There are more cells than columns. Please fix this.');\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic dictionary = TRANSLATION;\n\n\tprivate get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n\tconstructor(\n\t\tprivate elRef: ElementRef<HTMLElement>,\n\t\tprivate helper: Helper,\n\t\tpublic detectorRef: ChangeDetectorRef\n\t) {\n\t\tthis.truncate = !this.noTruncate;\n\t}\n\n\tngOnInit() {\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes) {\n\t\t\tif ('noTruncate' in changes) {\n\t\t\t\tthis.noTruncate = (typeof this.noTruncate === 'string' && (this.noTruncate === '' || this.noTruncate === 'true')) ? true : this.noTruncate;\n\t\t\t\tthis.truncate = !this.noTruncate && (!this.parent || !this.parent.noTruncate);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onRender(parent: AgTableRowComponent, index) {\n\t\tthis.cellIndex = index;\n\t\tthis.parent = parent;\n\n\t\tthis.truncate = !this.noTruncate && (!this.parent || !this.parent.noTruncate);\n\n\t\tthis.setWidth();\n\t}\n\n\tpublic setWidth() {\n\t\tif (this.elRef && this.el) {\n\t\t\tlet newWidth = this.col ? this.col._width : 'auto';\n\t\t\tlet newMaxWidth = newWidth;\n\n\t\t\tif (newWidth && newWidth.endsWith('%'))\n\t\t\t\tnewMaxWidth = ((this.helper.onlyNumberAndToFloat(newWidth) * this.parent.parent.el.clientWidth) / 100) + 'px';\n\n\t\t\tif (newWidth !== this.el.style.width || newMaxWidth !== this.el.style.maxWidth) {\n\t\t\t\tthis.el.style.width = newWidth;\n\t\t\t\tthis.el.style.maxWidth = newMaxWidth;\n\t\t\t}\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t}\n}\n","<ng-content></ng-content>","import { Component, OnInit, HostBinding, QueryList, ContentChildren, AfterViewInit, OnDestroy, ElementRef, ViewContainerRef, ViewChild, SimpleChanges, OnChanges, Input } from '@angular/core';\nimport { TRANSLATION } from './ag-table-row.component.trans';\nimport { AgTableBodyComponent } from '../ag-table-body/ag-table-body.component';\nimport { AgTableCellComponent } from '../ag-table-cell/ag-table-cell.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n\tselector: 'ag-table-row',\n\ttemplateUrl: './ag-table-row.component.html'\n})\nexport class AgTableRowComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\t@HostBinding('class.ag-table-row') public class: boolean = true;\n\n\t@ContentChildren(AgTableCellComponent) private queryCells: QueryList<AgTableCellComponent>;\n\n\t@Input('no-truncate') public noTruncate: boolean = false;\n\n\tprivate set _height(value: string) {\n\t\tif (this.el){\n\t\t\tthis.el.style.minHeight = value;\n\t\t\tthis.el.style.height = value;\n\t\t}\n\t}\n\tprivate get _height() { return (this.el) ? this.el.style.minHeight : 'auto'; }\n\n\tpublic get cells() { return this.queryCells ? this.queryCells.toArray() : []; }\n\n\tpublic parent: AgTableBodyComponent;\n\n\tpublic virtualIndex: number;\n\tpublic index: number;\n\n\tpublic dictionary = TRANSLATION;\n\n\tprivate subscription: Subscription;\n\n\tpublic get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n\tconstructor(\n\t\tprivate elRef: ElementRef<HTMLElement>,\n\t\tprivate viewContainer: ViewContainerRef,\n\t) {\n\t}\n\n\tngOnInit() {\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes) {\n\t\t\tif ('noTruncate' in changes) {\n\t\t\t\tthis.noTruncate = (typeof this.noTruncate === 'string' && (this.noTruncate === '' || this.noTruncate === 'true')) ? true : this.noTruncate;\n\t\t\t\tif (this.cells.length)\n\t\t\t\t\tthis.cells.forEach(cell => {\n\t\t\t\t\t\tcell.truncate = !cell.noTruncate && !this.noTruncate;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tngAfterViewInit() {\n\t}\n\n\tpublic onRender(parent: AgTableBodyComponent, virtualIndex: number) {\n\t\tthis.parent = parent;\n\t\tthis.virtualIndex = virtualIndex;\n\t\tthis.index = this.parent.getRowIndexBasedVirtual(virtualIndex);\n\t\tthis._height = this.parent.rowHeight;\n\t\tthis.configureChildrens();\n\t\tthis.defineClass();\n\n\t\tif (this.subscription) this.subscription.unsubscribe();\n\t\tthis.subscription = this.queryCells.changes.subscribe(this.configureChildrens.bind(this));\n\t}\n\n\tpublic configureChildrens() {\n\t\tthis.cells.forEach((cell, index) => {\n\t\t\tcell.onRender(this, index);\n\t\t});\n\t}\n\n\tprivate defineClass() {\n\t\tif (this.index >= 0) {\n\t\t\tlet position = this.index + 1;\n\t\t\tlet currentClassName = 'ag-table-row-' + ((position % 2) === 0 ? 'even' : 'odd');\n\t\t\tlet previousClassName = 'ag-table-row-' + ((position % 2) === 0 ? 'odd' : 'even');\n\n\t\t\tif  (!this.el.classList.contains(currentClassName))\n\t\t\t\tthis.el.classList.add(currentClassName);\n\n\t\t\tif  (this.el.classList.contains(previousClassName))\n\t\t\t\tthis.el.classList.remove(previousClassName);\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.subscription) this.subscription.unsubscribe();\n\t}\n}\n","<ng-content></ng-content>","import { ElementRef } from '@angular/core';\n\nexport class AgTableVirtualScrollModel {\n    public currentStartIndex: number = 0;\n    public currentEndIndex: number = 0;\n    public totalHeightContent: number = 0;\n    public paddingScroll: number = 0;\n    public previousItemsHeight: number[] = [];\n    public containerSrollEl: ElementRef<HTMLElement>;\n\n    public get currentSrollTop(): number { return (this.containerSrollEl && this.containerSrollEl.nativeElement) ? this.containerSrollEl.nativeElement.scrollTop : 0; }\n\tpublic get scrollHeight(): number { return (this.containerSrollEl && this.containerSrollEl.nativeElement) ? this.containerSrollEl.nativeElement.scrollHeight : 0; }\n\tpublic get height(): number { return (this.containerSrollEl && this.containerSrollEl.nativeElement) ? this.containerSrollEl.nativeElement.clientHeight : 0; }\n\n    constructor(obj?: Partial<AgTableVirtualScrollModel>) {\n        if (obj) Object.assign(this, obj);\n    }\n}\n","export class AgTableDataRenderEvent<T> {\n    public items: T[] = [];\n    public length: number = 0;\n    public startIndex: number = 0;\n    public endIndex: number = 0;\n\n    constructor(obj: Partial<AgTableDataRenderEvent<T>>) {\n        Object.assign(this, obj);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { Helper } from './helper';\nimport { AgTableBodyComponent } from '../ag-table-body/ag-table-body.component';\nimport { AgTableDataRenderEvent } from '../events/ag-table-data-render.event';\n\n@Injectable()\nexport class AgTableVirtualScrollService {\n\n\tconstructor(private helper: Helper) {\n\t}\n\n\tpublic defineItens(body: AgTableBodyComponent) {\n\t\tlet vs = body.virtualScroll;\n\t\tlet table = body.parent;\n\n\t\tlet dimensions = this.defineDimensions(body);\n\n\t\tvs.paddingScroll = dimensions.paddingTop;\n\t\tvs.totalHeightContent = dimensions.heightAllItems;\n\t\tvs.currentStartIndex = dimensions.itemsThatAreGone;\n\t\tvs.currentEndIndex = vs.currentStartIndex + this.howManyCanAppear(body);\n\n\t\ttable.items = table.filteredItems.slice(vs.currentStartIndex, vs.currentEndIndex);\n\t\ttable.onDataRender.emit(new AgTableDataRenderEvent<any>({\n\t\t\titems: table.items,\n\t\t\tlength: table.items.length,\n\t\t\tstartIndex: vs.currentStartIndex,\n\t\t\tendIndex: vs.currentEndIndex\n\t\t}));\n\t\ttable.isDataEmpty = table.items.length === 0;\n\t}\n\n\tpublic onScrollChange(body: AgTableBodyComponent) {\n\t\tlet vs = body.virtualScroll;\n        for (let i = 0; i < body.itemsContainerEl.nativeElement.children.length; i++) {\n            let children = body.itemsContainerEl.nativeElement.children[i];\n            let realIndex = vs.currentStartIndex + i;\n            if (!vs.previousItemsHeight[realIndex])\n\t\t\t\tvs.previousItemsHeight[realIndex] = children.getBoundingClientRect().height;\n\t\t}\n\n\t\tthis.defineItens(body);\n\t}\n\n\tpublic reset(body: AgTableBodyComponent) {\n\t\tlet vs = body.virtualScroll;\n\t\tvs.previousItemsHeight = [];\n\t\tvs.totalHeightContent = 0;\n\t\tvs.paddingScroll = 0;\n\t}\n\n\tdefineDimensions(body: AgTableBodyComponent) {\n\t\tlet vs = body.virtualScroll;\n\t\tlet rowHeight = parseInt(this.helper.onlyNumbers(body.rowHeight));\n\n\t\tlet obj = {\n\t\t\tpaddingTop: 0,\n\t\t\titemsThatAreGone: 0,\n\t\t\theightAllItems: 0\n\t\t};\n\n\t\tobj.heightAllItems = body.parent.filteredItems.reduce((prev, curr, i) => {\n\t\t\tlet height = vs.previousItemsHeight[i];\n\t\t\treturn prev + (height ? height : rowHeight);\n\t\t}, 0);\n\n        if (vs.currentSrollTop >= rowHeight) {\n            let paddingTop = 0;\n            let itemsThatAreGone = 0;\n            let initialScroll = vs.currentSrollTop;\n\n            for (let h of vs.previousItemsHeight) {\n                let height = h ? h : rowHeight;\n                if (initialScroll >= height) {\n                    paddingTop += height;\n                    initialScroll -= height;\n                    itemsThatAreGone++;\n                }\n                else\n                    break;\n            }\n\n            obj.paddingTop = paddingTop;\n            obj.itemsThatAreGone = itemsThatAreGone;\n        }\n\n\t\treturn obj;\n\t}\n\n\tpublic preparePreviousItemAfterDataChange(body: AgTableBodyComponent) {\n\t\tlet table = body.parent;\n\t\tlet vs = body.virtualScroll;\n\n        if (!table.infinity)\n            vs.previousItemsHeight = new Array(table.filteredItems.length).fill(null);\n        else {\n            let anothers = table.filteredItems.length - vs.previousItemsHeight.length;\n            if (anothers > 0)\n                vs.previousItemsHeight = [ ...vs.previousItemsHeight, ...(new Array<number>(anothers).fill(null))];\n        }\n\t}\n\n\tpublic canApplyVirtualScroll(body: AgTableBodyComponent) {\n\t\tlet vs = body.virtualScroll;\n\n\t\tif (body.parent && body.parent._height !== 'auto')\n\t\t\treturn true;\n\t\telse {\n\t\t\tlet rowHeight = parseInt(this.helper.onlyNumbers(body.rowHeight));\n\t\t\tlet avaiableScrollHeight = vs.scrollHeight - vs.height;\n\n\t\t\tif (avaiableScrollHeight > rowHeight)\n\t\t\t\treturn (avaiableScrollHeight / rowHeight) >= 1.5;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic howManyCanAppear(body: AgTableBodyComponent) {\n\t\tlet vs = body.virtualScroll;\n\t\tlet rowHeight = parseInt(this.helper.onlyNumbers(body.rowHeight));\n\t\tlet height = vs.height ? vs.height : parseInt(this.helper.onlyNumbers(body.parent._height));\n\t\treturn Math.floor((isNaN(height) ? 0 : height) / rowHeight) + 1;\n\t}\n}\n","export const TRANSLATION = {\n};\n","import { Component, OnInit, HostBinding } from '@angular/core';\nimport { TRANSLATION } from './ag-table-spinner.component.trans';\n\n@Component({\n    selector: 'ag-table-spinner',\n    templateUrl: './ag-table-spinner.component.html'\n})\nexport class AgTableSpinnerComponent implements OnInit {\n    @HostBinding('class.ag-table-spinner') public class: boolean = true;\n\n    public dictionary = TRANSLATION;\n\n    constructor(\n    ) {\n    }\n\n    ngOnInit() {\n    }\n}\n","<svg width=\"100\" height=\"100\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n\t<circle cx=\"50\" cy=\"50\" r=\"25\" stroke-linecap=\"round\"/>\n</svg>","import { Component, OnInit, HostBinding, ContentChildren, QueryList, AfterViewInit, Input, ElementRef, OnDestroy, Renderer2, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport { TRANSLATION } from './ag-table-body.component.trans';\nimport { AgTableRowComponent } from '../ag-table-row/ag-table-row.component';\nimport { Subscription } from 'rxjs';\nimport { AgTableVirtualScrollModel } from '../models/ag-table-virtual-scroll.model';\nimport { AgTableVirtualScrollService } from '../services/ag-table-virtual-scroll.service';\nimport { Helper, isNullOrUndefined } from './../services/helper';\nimport { AgTableLangService } from '../services/ag-table-lang.service';\n\n@Component({\n\tselector: 'ag-table-body',\n\ttemplateUrl: './ag-table-body.component.html'\n})\nexport class AgTableBodyComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\t@HostBinding('class.ag-table-body') public class: boolean = true;\n    @HostBinding('class.clickable') public clickable: boolean = false;\n    @HostBinding('class.height-is-auto') public get heightIsAuto() { return this.parent && this.parent.height === 'auto'; }\n\n\t@ViewChild('itemsContainer', { static: true }) public itemsContainerEl: ElementRef<HTMLElement>;\n\n    @ContentChildren(AgTableRowComponent) private queryRows: QueryList<AgTableRowComponent>;\n\n    private minHeight: number = 40;\n\n\t@Input('row-height') rowHeight: string = this.minHeight + 'px';\n\t@Input('empty-msg') emptyMsg: string = '';\n\n\tpublic get rows() { return this.queryRows ? this.queryRows.toArray() : []; }\n\n\tpublic get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n\tpublic parent: any;\n\n\tpublic dictionary = TRANSLATION;\n\n\tprivate subscription: Subscription;\n\n\tpublic scrollInBottom: boolean = false;\n    public scrollEnabled: boolean = false;\n\n    public virtualScroll: AgTableVirtualScrollModel;\n\n\tprivate lastScrollTop: number = -1;\n\n\tprivate eventsLineters: Function[] = [];\n\n\tconstructor(\n\t\tprivate langService: AgTableLangService,\n\t\tprivate renderer: Renderer2,\n\t\tprivate helper: Helper,\n\t\tpublic elRef: ElementRef<HTMLElement>,\n\t\tprivate dataVirtualScrollService: AgTableVirtualScrollService\n\t) {\n\t}\n\n\tngOnInit() {\n        this.virtualScroll = new AgTableVirtualScrollModel({\n            containerSrollEl: this.elRef\n        });\n\t}\n\n\tngAfterViewInit() {\n\t\tif (!this.emptyMsg)\n\t\t\tthis.emptyMsg = this.langService.getText('EMPTY', this.dictionary);\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n        if ('rowHeight' in changes) {\n            if (this.helper.onlyNumbers(this.rowHeight) === this.rowHeight)\n                this.rowHeight += 'px';\n\n            if (isNullOrUndefined(this.rowHeight) || this.rowHeight === '') {\n                this.rowHeight = this.minHeight + 'px';\n                return;\n            }\n            else {\n                let number = this.helper.onlyNumbers(this.rowHeight);\n                let unit = this.rowHeight.replace(number, '');\n\n                if (unit !== 'px') {\n                    this.rowHeight = this.minHeight + 'px';\n                    console.warn(`The row-height is invalid. The height must be informed in \"px\".`);\n                    return;\n                }\n            }\n\n            let number = parseInt(this.helper.onlyNumbers(this.rowHeight));\n            if (number < this.minHeight) {\n                this.rowHeight = this.minHeight + 'px';\n                console.warn(`The row-height is invalid because the minimum height should be \"${this.minHeight}px\".`);\n                return;\n            }\n        }\n\t}\n\n\tpublic onRender(parent: any) {\n\t\tthis.parent = parent;\n\t\tthis.configureChildrens();\n\t\tthis.applyListeners();\n\t\tthis.scrollEnabled = this.parent.loading;\n\n\t\tthis.parent.checkMinWidthcanApply();\n\n\t\tif (this.dataVirtualScrollService.canApplyVirtualScroll(this))\n\t\t\tthis.dataVirtualScrollService.defineItens(this);\n\t\telse\n\t\t\tthis.parent.items = this.parent.filteredItems;\n\n\t\tif (this.subscription) this.subscription.unsubscribe();\n\t\tthis.subscription = this.queryRows.changes.subscribe(this.configureChildrens.bind(this));\n\t}\n\n\tprivate configureChildrens() {\n\t\tthis.clickable = this.parent.clickable;\n\t\tthis.rows.forEach((row, index) => {\n\t\t\trow.onRender(this, index);\n\t\t});\n\t}\n\n\tprivate applyListeners() {\n\t\tif (this.eventsLineters && this.eventsLineters.length) {\n\t\t\tthis.eventsLineters.forEach((eventListener) => eventListener && eventListener());\n\t\t\tthis.eventsLineters = [];\n\t\t}\n\n\t\tthis.eventsLineters.push(this.renderer.listen(this.elRef.nativeElement, 'scroll', this.onScroll.bind(this)));\n        this.eventsLineters.push(this.renderer.listen(this.elRef.nativeElement, 'mousewheel', this.onMouseWheel.bind(this)));\n        this.eventsLineters.push(this.renderer.listen(this.elRef.nativeElement, 'DOMMouseScroll', this.onMouseWheel.bind(this)));\n\t}\n\n\tprivate dataTableInBottom() {\n\t\tlet element = this.elRef.nativeElement;\n\t\treturn element ? ((element.clientHeight + element.scrollTop) >= element.scrollHeight) : false;\n\t}\n\n\tprivate onScrollFinished() {\n\t\tif (this.parent.infinity && this.parent && !this.parent.dataAreOver) {\n\t\t\tthis.parent.currentPage++;\n\t\t\tthis.parent.emitGetData();\n\t\t}\n\t}\n\n\tpublic onScroll(ev?: any, forceChange: boolean = false) {\n\t\tif (!this.parent.loading) {\n\t\t\tif (this.dataTableInBottom()) {\n\t\t\t\tif (!this.scrollInBottom) {\n\t\t\t\t\tthis.scrollInBottom = true;\n\t\t\t\t\tthis.onScrollFinished();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis.scrollInBottom = false;\n\t\t}\n\n\t\tif (this.dataVirtualScrollService.canApplyVirtualScroll(this))\n\t\t\tif (forceChange || this.lastScrollTop !== this.virtualScroll.currentSrollTop) {\n\t\t\t\tthis.lastScrollTop = this.virtualScroll.currentSrollTop;\n\t\t\t\tthis.dataVirtualScrollService.onScrollChange(this);\n\t\t\t}\n\t}\n\n\tpublic backToTheTop() {\n\t\tthis.el.scrollTop = 0;\n\t}\n\n\tpublic getRowIndexBasedVirtual(virtualIndex: number) {\n\t\treturn this.virtualScroll.currentStartIndex + virtualIndex;\n\t}\n\n    private onMouseWheel() {\n\t\tif (!this.dataVirtualScrollService.canApplyVirtualScroll(this))\n\t\t\tthis.onScroll();\n    }\n\n\tpublic onBodyWidthChange(currentWidth: string) {\n\t\tif (currentWidth && this.el) {\n\t\t\tif (this.rows.length)\n\t\t\t\tthis.rows.forEach(row => {\n\t\t\t\t\trow.cells.forEach(cell => cell.setWidth());\n\t\t\t\t});\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tif (this.subscription)\n\t\t\tthis.subscription.unsubscribe();\n\n\t\tif (this.eventsLineters && this.eventsLineters.length) {\n\t\t\tthis.eventsLineters.forEach((eventListener) => eventListener && eventListener());\n\t\t\tthis.eventsLineters = [];\n\t\t}\n\t}\n}\n","\n<section [style.height]=\"parent?.items.length ? '100%' : 'auto'\">\n    <div class=\"total-padding\" [style.height.px]=\"virtualScroll.totalHeightContent\"></div>\n    <div #itemsContainer class=\"scrollable-content\"\n        [class.p-relative]=\"parent?.height === 'auto'\"\n        [style.transform]=\"'translateY(' + virtualScroll.paddingScroll + 'px)'\"\n        [style.top.px]=\"(parent?.infinity && parent?.loading && parent?.currentPage > 1) ? -80 : 0\"\n    >\n        <ng-content></ng-content>\n    </div>\n</section>\n\n<div class=\"ag-table-empty animated fadeIn\" *ngIf=\"(parent && !parent.loading && !parent.noEmptyView) && rows && rows.length <= 0\">\n    <span [innerHTML]=\"emptyMsg\"></span>   \n</div>\n\n<div *ngIf=\"parent?.infinity\" class=\"ag-table-infinity\" [class.ag-table-infinity-show]=\"parent?.loading && parent?.currentPage > 1\" [style.width.px]=\"itemsContainer.clientWidth\">\n    <div>\n        <ag-table-spinner></ag-table-spinner>\n    </div>\n</div>","export enum AgTableChangeAction {\n    INITIALIZE = 'initialization',\n    FILTER = 'filter',\n    ORDER = 'order',\n    PAGINATE = 'paginate'\n}\n","export class AgTableEvent {\n    page: number = 1;\n    pageSize: number = 0;\n    filters: { [key: string]: any };\n    order: {\n        field: string,\n        asc: boolean\n    } = {} as any;\n    resetData: boolean = false;\n\n    constructor(obj: Partial<AgTableEvent>) {\n        Object.assign(this, obj);\n    }\n}\n","export const TRANSLATION = {\n    TOTAL_CAPTION: {\n        ptBR: 'Exibindo de {{start}} até {{end}} de {{total}} .',\n        enUS: 'Displaying from {{start}} to {{end}} of {{total}} .'\n    },\n    WITHOUT_TOTAL_CAPTION: {\n        ptBR: 'Exibindo de {{start}} até {{end}} registros.',\n        enUS: 'Displaying from {{start}} to {{end}} records.'\n    }\n};\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges, HostBinding, ElementRef } from '@angular/core';\nimport { TRANSLATION } from './ag-table-paginate.component.trans';\n\n@Component({\n    selector: 'ag-table-paginate',\n    templateUrl: './ag-table-paginate.component.html'\n})\nexport class AgTablePaginateComponent implements OnInit, OnChanges {\n    @HostBinding('class.ag-table-paginate') public class: boolean = true;\n\n    @Input() public length: number = 0;\n    @Input() public current: number = 1;\n    @Input() public disabled: boolean = false;\n    @Input() public loading: boolean = false;\n    @Input() public objCaption: { start: number, end: number, total: number };\n    @Output() public change = new EventEmitter<number>();\n\n    public dictionary = TRANSLATION;\n    \n\tpublic parent: any;\n\n    caption: string;\n    public pages: any[] = [];\n\n\tpublic get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n    constructor(\n        private elRef: ElementRef<HTMLElement>\n    ) {\n    }\n\n    ngOnInit() {\n    }\n\n\tpublic onRender(parent: any) {\n        this.parent = parent;\n\t\tthis.parent.checkMinWidthcanApply();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if ('length' in changes || 'current' in changes)\n            this.generate();\n    }\n\n    pageClick(page: number | string) {\n        if (!this.disabled && (typeof page) !== 'string' && (page as number) >= 1 && (page as number) <= this.length && page !== this.current) {\n            this.current = page as number;\n            this.change.emit(this.current);\n            this.generate();\n        }\n    }\n\n    generate() {\n        let current = this.current,\n            last = this.length,\n            delta = 2,\n            left = current - delta,\n            right = current + delta + 1,\n            range = [],\n            rangeWithDots = [],\n            l;\n\n        if (this.current > 0 && this.length > 0) {\n            for (let i = 1; i <= last; i++) {\n                if (i === 1 || i === last || i >= left && i < right)\n                    range.push(i);\n            }\n\n            for (let i of range) {\n                if (l) {\n                    if (i - l === 2)\n                        rangeWithDots.push(l + 1);\n                    else if (i - l !== 1)\n                        rangeWithDots.push('...');\n                }\n                rangeWithDots.push(i);\n                l = i;\n            }\n        }\n\n        this.pages = rangeWithDots;\n    }\n}\n","<span *ngIf=\"objCaption && !loading\" class=\"caption animated fadeIn\" [class.p-b-7]=\"length <= 1 || pages.length === 0\">\n\t{{ (objCaption.total ? 'TOTAL_CAPTION' : 'WITHOUT_TOTAL_CAPTION') | translate:dictionary:objCaption }}\n</span>\n\n<ul *ngIf=\"length > 1 && pages.length > 0\">\n\t<li [class.disabled]=\"current <= 1\" class=\"animated fadeIn\">\n\t\t<button (click)=\"pageClick(current - 1)\">\n\t\t\t<i class=\"arrow-prev\"></i>\n\t\t</button>\n\t</li>\n\t<li *ngFor=\"let page of pages\" class=\"animated fadeIn\"\n\t\t[class.actived]=\"page === current\" [class.disabled]=\"disabled\" [class.interval]=\"page === '...'\">\n\t\t<button (click)=\"pageClick(page)\">\n\t\t\t<span>{{page}}</span>\n\t\t</button>\n\t</li>\n\t<li [class.disabled]=\"current >= length\" class=\"animated fadeIn\">\n\t\t<button (click)=\"pageClick(current + 1)\">\n\t\t\t<i class=\"arrow-next\"></i>\n\t\t</button>\n\t</li>\n</ul>","import { Injectable } from '@angular/core';\nimport { AgTableComponent } from '../ag-table/ag-table.component';\nimport { AgTableFilterMode } from '../enums/ag-table-filter-mode.enum';\nimport { AgTableChangeAction } from '../enums/ag-table-change-action.enum';\nimport { Helper, isNullOrUndefined, isObject } from './helper';\nimport { AgTableFilterType } from '../enums/ag-table-filter-type.enum';\n\n@Injectable()\nexport class AgTablePrepareService {\n\n\tconstructor(private helper: Helper) {\n\t}\n\n\tpublic apply(data: any[], agTableComp: any) {\n\t\tif (data && Array.isArray(data) && data.length) {\n\t\t\tif (!agTableComp.serverSide) {\n\t\t\t\tlet _data: any[];\n\n\t\t\t\tlet length = data.length;\n\t\t\t\tlet lengthPaginated = data.length;\n\n\t\t\t\tif (agTableComp.isFiltering) {\n\t\t\t\t\t_data = this.applyFilter(data, agTableComp);\n\t\t\t\t\tlength = _data.length;\n\t\t\t\t}\n\n\t\t\t\tif (agTableComp.isSorting) {\n\t\t\t\t\t_data = this.applySort(_data ? _data : data, agTableComp);\n\t\t\t\t\tlength = _data.length;\n\t\t\t\t}\n\n\t\t\t\tif (agTableComp.isPaging) {\n\t\t\t\t\t_data = this.applyPaginate(_data ? _data : data, agTableComp);\n\t\t\t\t\tlengthPaginated = _data.length;\n\t\t\t\t}\n\n\t\t\t\tagTableComp.setDataLength(length, lengthPaginated);\n\n\t\t\t\treturn _data ? _data : data;\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\t\telse {\n\t\t\tif (!agTableComp.serverSide)\n\t\t\t\tagTableComp.setDataLength(0, 0);\n\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate applyFilter(data: any[], table: any) {\n\t\tlet header = table.header;\n\t\tlet frm = header.frmFilter;\n\n\t\tif (table.actionChange === AgTableChangeAction.FILTER)\n\t\t\ttable.setCurrentPage(1);\n\n\t\tlet _data = data.filter((item) => {\n\n\t\t\tlet ok = true;\n\t\t\tfor (let field in frm.controls) {\n\n\t\t\t\tlet value: any;\n\t\t\t\tif (field.includes('.')) {\n\t\t\t\t\tlet fields = field.split('.');\n\t\t\t\t\tvalue = item[fields[0]];\n\t\t\t\t\tfields.slice(1).forEach(field => {\n\t\t\t\t\t\tif (isObject(value))\n\t\t\t\t\t\t\tvalue = (field in value) ? value[field] : null;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tvalue = item[field];\n\n\t\t\t\tlet filterCol = header.getColByField(field);\n\t\t\t\tlet filterMode = header.getColFilterModeByField(field);\n\n\t\t\t\tlet filterValue = frm.controls[field].value;\n\n\t\t\t\tif (filterCol && filterCol.filter === AgTableFilterType.DATE) {\n\t\t\t\t\tvalue = this.helper.dateFormat(value, filterCol.dateFormat);\n\t\t\t\t\tfilterValue = filterValue;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (filterValue || (typeof filterValue === 'number') || (typeof filterValue === 'boolean'))\n\t\t\t\t\t\tfilterValue = this.helper.removeAccents(filterValue.toString() as string).toUpperCase();\n\t\t\t\t\telse\n\t\t\t\t\t\tfilterValue = '';\n\n\t\t\t\t\tif (value || (typeof value === 'number') || (typeof value === 'boolean'))\n\t\t\t\t\t\tvalue = this.helper.removeAccents(value.toString() as string).toUpperCase();\n\t\t\t\t\telse\n\t\t\t\t\t\tvalue = '';\n\t\t\t\t}\n\n\t\t\t\tif (filterCol && !isNullOrUndefined(filterValue) && filterValue !== '') {\n\t\t\t\t\tfilterValue = this.helper.removeAccents(filterValue.toString() as string).toUpperCase();\n\t\t\t\t\tswitch (filterMode) {\n\t\t\t\t\t\tcase AgTableFilterMode.CONTAINS:\n\t\t\t\t\t\t\tok = value.includes(filterValue);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase AgTableFilterMode.EQUALS:\n\t\t\t\t\t\t\tok = value === filterValue;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase AgTableFilterMode.STARTS_WITH:\n\t\t\t\t\t\t\tok = value.startsWith(filterValue);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase AgTableFilterMode.ENDS_WITH:\n\t\t\t\t\t\t\tok = value.endsWith(filterValue);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!ok) break;\n\t\t\t}\n\n\t\t\treturn ok;\n\t\t});\n\n\t\treturn _data;\n\t}\n\n\tprivate applySort(data: any[], table: any) {\n\t\tif (table.actionChange === AgTableChangeAction.ORDER)\n\t\t\ttable.setCurrentPage(1);\n\n\t\tif (table.header.colSorting) {\n\t\t\tlet col = table.header.colSorting.col;\n\t\t\tlet asc = table.header.colSorting.asc;\n\n\t\t\tlet field = '';\n\n\t\t\tif (!col.field && col.customFilter && (col.customFilter as any[]).length) \n\t\t\t\tfield = (col.customFilter as any[])[0].field;\n\t\t\telse\n\t\t\t\tfield = col.field;\n\n\n\t\t\tlet dateRegex: RegExp = new RegExp('^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z)?$');\n\t\t\tlet _data = data.sort((a: any, b: any) => {\n                let valueA = a[field];\n                let valueB = b[field];\n\n                if (typeof valueA === 'string' && dateRegex.test(valueA))\n                    valueA = new Date(valueA);\n                if (typeof valueB === 'string' && dateRegex.test(valueB))\n\t\t\t\t\tvalueB = new Date(valueB);\n\n\t\t\t\tif (typeof valueA === 'string' && !isNaN(parseFloat(valueA)))\n\t\t\t\t\tvalueA = parseFloat(valueA);\n\t\t\t\tif (typeof valueB === 'string' && !isNaN(parseFloat(valueB)))\n\t\t\t\t\tvalueB = parseFloat(valueB);\n\n                if (valueA < valueB)\n                    return asc ? -1 : 1;\n                if (valueA > valueB)\n                    return asc ? 1 : -1;\n\n                return 0;\n\t\t\t});\n\t\t\treturn _data;\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprivate applyPaginate(data: any[], table: any) {\n\t\tlet currentPage = table.currentPage;\n\t\tlet size = table.paginate;\n\n\t\tlet begin = (currentPage - 1) * size;\n\t\tlet end = begin + size;\n\n\t\tlet _data = data.slice(begin, end);\n\n\t\treturn _data;\n\t}\n\n}\n","import { Component, OnInit, HostBinding, ContentChildren, QueryList, AfterViewInit, AfterContentChecked, Input, OnChanges, ElementRef, SimpleChanges, EventEmitter, Output, ViewChild, OnDestroy } from '@angular/core';\nimport { TRANSLATION } from './ag-table.component.trans';\nimport { AgTableHeaderComponent } from '../ag-table-header/ag-table-header.component';\nimport { AgTableBodyComponent } from '../ag-table-body/ag-table-body.component';\nimport { AgTableChangeAction } from '../enums/ag-table-change-action.enum';\nimport { AgTableEvent } from '../events/ag-table-event.event';\nimport { AgTablePrepareService } from '../services/ag-table-prepare.service';\nimport { AgTableVirtualScrollService } from '../services/ag-table-virtual-scroll.service';\nimport { AgTableDataRenderEvent } from '../events/ag-table-data-render.event';\nimport { Helper, isNullOrUndefined } from '../services/helper';\nimport { AgTablePaginateComponent } from '../ag-table-paginate/ag-table-paginate.component';\n\n//@dynamic\n@Component({\n\tselector: 'ag-table',\n\ttemplateUrl: './ag-table.component.html'\n})\nexport class AgTableComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit, AfterContentChecked {\n\t@HostBinding('class.ag-table') public class: boolean = true;\n\t@HostBinding('class.ag-table-empty') public get showEmptyView() { return this.isDataEmpty && !this.noEmptyView; }\n\n\t@ContentChildren(AgTableHeaderComponent) private queryHeader: QueryList<AgTableHeaderComponent>;\n\t@ContentChildren(AgTableBodyComponent) private queryBody: QueryList<AgTableBodyComponent>;\n\n\t@ViewChild(AgTablePaginateComponent, { static: false }) private paginateComp: AgTablePaginateComponent;\n\n\t@ViewChild('headerShadowEl', { static: true }) private headerShadowEl: ElementRef<HTMLElement>;\n\n\t/** THAT WILL DEFINE THE DATA TABLE HEIGHT, AND IT WILL HAS SCROLL BAR IN CASE OF OVERFLOW.*/\n\t@Input() public height: string = 'auto';\n\n\t/** IF THE ROWS IT WILL HAVE CLICK (JUST ENABLED HOVER EFFECT AND CURSOR AS POINTER) */\n\t@Input() public clickable: boolean;\n\n\t/** THIS DEFINE IF WILL GO PAGINATE OR NOT */\n\t@Input() public paginate: number = null;\n\n\t/** THIS DEFINE IF WILL GO BRING DATA BASED ON SCROLLING WHEN TO ARRIVE ON BOTTOM. (BUT USE THIS ONLY WITH SERVER-SIDE) */\n\t@Input() public infinity: number = null;\n\n\t/** SHOW LOADING SPINNER ABOVE THE DATA TABLE WHEN LOADING IS TRUE. */\n\t@Input() public loading: boolean = null;\n\n\t/** THE TOTAL DATA LENGTH. THIS IS USED FOR MAKE THE PAGINATION. */\n\t@Input('data-length') public dataLength: number = 0;\n\n\t/** DETERMINES WHETHER DATA WILL BE SWALLOWED VIA SERVER-SIDE */\n\t@Input('server-side') public serverSide: boolean = false;\n\n\t/** CALL REQUEST DATA ON INITIALIZATION DATA TABLE */\n\t@Input('get-data-init') public getDataOnInit: boolean = false;\n\n\t/** SET THE CURRENT PAGE WHEN USE PAGINATION */\n\t@Input('current-page') public currentPage: number = 1;\n\n\t/** NOTIFIES THAT THE DATA IS GONE (INFINITE-SCROLL ONLY). */\n\t@Input('data-are-over') public dataAreOver: boolean = false;\n\n\t/** SETS WHETHER TO DISPLAY EMPTY-VIEW OR NOT. */\n\t@Input('no-empty-view') public noEmptyView: boolean = false;\n\n\t/** SETS A MINIMUM HEIGHT IN AG-TABLE. */\n\t@Input('min-height') public minHeight: string = '';\n\n\t/** SETS A MINIMUM WIDTH IN AG-TABLE. WHEN THE MINIMUM WIDTH IS REACHED, THE SIDE TABLE WILL SCROLL HORIZONTALLY. */\n\t@Input('min-width') public minWidth: string = '';\n\n\t@Input('items') allItems: any[] = [];\n\n\t/** CALL/EMIT EVENT TO GET DATA (SERVER-SIDE) */\n\t@Output() public onGetData = new EventEmitter<AgTableEvent>();\n\n\t/** EMIT EVENT WICH ITEMS HAVEN BEEN RENDERED */\n\t@Output() public onDataRender = new EventEmitter<AgTableDataRenderEvent<any>>();\n\n\t/** EMIT EVENT WHEN THE ag-table HAS ALL BEEN RENDERED */\n\t@Output() public onTableRender = new EventEmitter<void>();\n\n\t@Output() public  filterActivated = new EventEmitter<boolean>();\n\n\tprivate get paddingTop() { return this.elRef && this.elRef.nativeElement ? this.elRef.nativeElement.style.paddingTop : '0px'; }\n\tprivate set paddingTop(value: string) { if (this.elRef && this.elRef.nativeElement) this.elRef.nativeElement.style.paddingTop = value; }\n\n\tpublic set _height(value: string) {\n\t\tthis.el.style.height = value;\n\n\t\tif (this.header) {\n\t\t\tif (value === '0' || value === '0px')\n\t\t\t\tthis.header.visible = false;\n\t\t\telse\n\t\t\t\tthis.header.visible = true;\n\t\t}\n\n\t\tthis.definePaddingTop();\n\t}\n\tpublic get _height() { return (this.el && this.el.style.height) ? this.el.style.height : 'auto'; }\n\n\tpublic set _minHeight(value: string) {\n\t\tthis.el.style.minHeight = value;\n\t\tthis.definePaddingTop();\n\t}\n\tpublic get _minHeight() { return (this.el && this.el.style.minHeight) ? this.el.style.minHeight : ''; }\n\n\tpublic items: any[] = [];\n\tpublic filteredItems: any[] = [];\n\n\tpublic get header() { return this.queryHeader ? this.queryHeader.first : null; }\n\tpublic get body() { return this.queryBody ? this.queryBody.first : null; }\n\n\tpublic get topShadow() {\n\t\tif (this.height !== 'auto') {\n\t\t\tlet body = (this.body) ? this.body.el : null;\n\t\t\tlet header = (this.header) ? this.header.el : null;\n\t\t\tif (body && header)\n\t\t\t\treturn body.scrollTop >= (header.clientHeight / 2);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic get bottomShadow() {\n\t\tif (this.height !== 'auto') {\n\t\t\tlet body = (this.body) ? this.body.el : null;\n\t\t\tlet header = (this.header) ? this.header.el : null;\n\t\t\tif (body && header)\n\t\t\t\treturn (body.scrollTop + body.clientHeight) < body.scrollHeight;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic get isPaging() { return this.paginate; }\n\n\tpublic get isSorting() { return this.header && this.header.colSorting; }\n\n\tpublic get isFiltering() { return ((this.header && this.header.cols) ? this.header.cols.some(x => x.canFilter) : false); }\n\n\tpublic get numPages() {\n\t\tif (this.dataLength && this.isPaging) {\n\t\t\tlet pages = Math.floor(this.dataLength / this.paginate);\n\t\t\treturn pages + (((this.dataLength / this.paginate) > pages) ? 1 : 0);\n\t\t}\n\t\telse\n\t\t\treturn 0;\n\t}\n\n\tpublic get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n\tpublic dictionary = TRANSLATION;\n\n\tpublic initialized: boolean = false;\n\n\tpublic isDataEmpty: boolean = false;\n\n\tprivate dataPaginatedLength: number = 0;\n\tpublic paginateCaptionConfig: { start: number, end: number, total: number };\n\tpublic actionChange: AgTableChangeAction = AgTableChangeAction.INITIALIZE;\n\n\tprivate DOMisVisible: boolean = false;\n\tprivate DOMcountVisibleChange: number = 0;\n\n\tprivate intervalListenerWidth: any;\n\n\tpublic lastBodyWidth: string = null;\n\tpublic lastBodyHeight: string = null;\n\n\tconstructor(\n\t\tpublic elRef: ElementRef<HTMLElement>,\n\t\tprivate helper: Helper,\n\t\tprivate dataPrepareService: AgTablePrepareService,\n\t\tprivate dataVirtualScrollService: AgTableVirtualScrollService\n\t) {\n\t}\n\n\tngOnInit() {\n\t}\n\n\tngAfterViewInit() {\n\t\tsetTimeout(() => {\n\t\t\tif (this.body.el) {\n\t\t\t\tthis.lastBodyWidth = this.body.el.clientWidth + 'px';\n\t\t\t\tthis.lastBodyHeight = this.body.el.clientHeight + 'px';\n\t\t\t}\n\n\t\t\tthis.body.onRender(this);\n\t\t\tthis.header.onRender(this);\n\t\t\tif (this.paginateComp) this.paginateComp.onRender(this);\n\n\t\t\tthis.queryHeader.changes.subscribe(() => this.definePaddingTop());\n\n\t\t\tthis.definePaddingTop();\n\n\t\t\tsetTimeout(() => this.onTableRender.emit());\n\n\t\t\tif (this.getDataOnInit)\n\t\t\t\tthis.emitGetData();\n\n\t\t\tif (this.infinity && !this.heightIsValid())\n\t\t\t\tconsole.warn(`The infinity scroll mode not working, because data table height has not been set.`);\n\n\t\t\tif (!this.infinity && this.body)\n\t\t\t\tthis.body.backToTheTop();\n\n\t\t\tthis.filterActivated.emit(false);\n\t\t\tthis.initialized = true;\n\t\t});\n\t}\n\n\tngAfterContentChecked() {\n\t\tif (this.elRef && this.elRef.nativeElement) {\n\t\t\tlet elem = this.elRef.nativeElement;\n\t\t\tlet visible = !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n\t\t\tif (visible !== this.DOMisVisible) {\n\t\t\t\tthis.DOMisVisible = visible;\n\n\t\t\t\tif (this.DOMisVisible && this.DOMcountVisibleChange > 0)\n\t\t\t\t\tthis.body.onScroll();\n\t\t\t\t\t\n\t\t\t\tthis.DOMcountVisibleChange++;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\tthis.DOMisVisible = false;\n\n\t\tthis.onCheckBodyDimensions();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tsetTimeout(() => {\n\t\t\tif ('serverSide' in changes)\n\t\t\t\tthis.serverSide = (typeof this.serverSide === 'string' && (this.serverSide === '' || this.serverSide === 'true')) ? true : this.serverSide;\n\n\t\t\tif ('noEmptyView' in changes)\n\t\t\t\tthis.noEmptyView = (typeof this.noEmptyView === 'string' && (this.noEmptyView === '' || this.noEmptyView === 'true')) ? true : this.noEmptyView;\n\n\t\t\tif ('clickable' in changes) {\n\t\t\t\tthis.clickable = (typeof this.clickable === 'string' && (this.clickable === '' || this.clickable === 'true')) ? true : this.clickable;\n\t\t\t\tif (this.body)\n\t\t\t\t\tthis.body.clickable = this.clickable;\n\t\t\t}\n\n\t\t\tif ('height' in changes) {\n\t\t\t\tif (this.height !== 'auto' && !this.heightIsValid()) {\n\t\t\t\t\tconsole.warn(`The height of table is invalid.`);\n\t\t\t\t\tthis.height = 'auto';\n\t\t\t\t}\n\n\t\t\t\tthis._height = this.height;\n\n\t\t\t\tthis.prepareItemsPagingAndFilter();\n\n\t\t\t\tif (!this.infinity && this.body)\n\t\t\t\t\tthis.body.backToTheTop();\n\t\t\t}\n\n\t\t\tif ('minHeight' in changes) {\n\t\t\t\tif (this.minHeight !== 'auto' && !this.minHeightIsValid()) {\n\t\t\t\t\tconsole.warn(`The minHeight of table is invalid.`);\n\t\t\t\t\tthis.minHeight = '';\n\t\t\t\t}\n\n\t\t\t\tthis._minHeight = this.minHeight;\n\n\t\t\t\tthis.prepareItemsPagingAndFilter();\n\n\t\t\t\tif (!this.infinity && this.body)\n\t\t\t\t\tthis.body.backToTheTop();\n\t\t\t}\n\n\t\t\tif ('minWidth' in changes) {\n\t\t\t\tif (!this.minWidthIsValid()) {\n\t\t\t\t\tconsole.warn(`The min-width of table is invalid.`);\n\t\t\t\t\tthis.minWidth = '';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!this.minWidthIsValid())\n\t\t\t\t\tthis.stopListenerWidth();\n\t\t\t\telse\n\t\t\t\t\tthis.startListenerWidth();\n\t\t\t}\n\n\t\t\tif ('currentPage' in changes) {\n\t\t\t\tif (typeof this.currentPage === 'string') {\n\t\t\t\t\tif (!isNaN(parseInt(this.currentPage)))\n\t\t\t\t\t\tthis.currentPage = parseInt(this.currentPage);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.warn(`The current-page value of table is invalid. The current-page value has been defined as 1.`);\n\t\t\t\t\t\tthis.currentPage = 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (typeof this.currentPage !== 'number' || this.currentPage <= 0) {\n\t\t\t\t\tconsole.warn(`The current-page value of table is invalid. The current-page value has been defined as 1.`);\n\t\t\t\t\tthis.currentPage = 1;\n\t\t\t\t}\n\n\t\t\t\tif (this.currentPage > this.paginate && this.currentPage < 1)\n\t\t\t\t\tthis.currentPage = 1;\n\n\t\t\t\tthis.onPageChange(this.currentPage, !this.serverSide);\n\t\t\t}\n\n\t\t\tif ('paginate' in changes) {\n\t\t\t\tif (typeof this.paginate === 'string') {\n\t\t\t\t\tif (!isNaN(parseInt(this.paginate)))\n\t\t\t\t\t\tthis.paginate = parseInt(this.paginate);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.warn(`The [paginate] value of table is invalid. The paginate has not been applied.`);\n\t\t\t\t\t\tthis.paginate = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.isPaging && this.infinity){\n\t\t\t\t\tconsole.warn(`The [paginate] has not been applied because [infinity] already has been defined.`);\n\t\t\t\t\tthis.paginate = null;\n\t\t\t\t}\n\n\t\t\t\tif (this.paginate) {\n\t\t\t\t\tif (this.currentPage > this.paginate)\n\t\t\t\t\t\tthis.currentPage = 1;\n\n\t\t\t\t\tif (this.serverSide)\n\t\t\t\t\t\tthis.updatePaginateConfig();\n\t\t\t\t}\n\n\t\t\t\tthis.onPageChange(this.currentPage, !this.serverSide);\n\t\t\t\tthis.definePaddingBottom();\n\t\t\t}\n\n\t\t\tif ('infinity' in changes) {\n\t\t\t\tif (typeof this.infinity === 'string') {\n\t\t\t\t\tif (!isNaN(parseInt(this.infinity)))\n\t\t\t\t\t\tthis.infinity = parseInt(this.infinity);\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.warn(`The [infinity] value of table is invalid. The infinity scroll has not been applied.`);\n\t\t\t\t\t\tthis.infinity = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.infinity && this.paginate){\n\t\t\t\t\tconsole.warn(`The [infinity] has not been applied because [paginate] already has been defined.`);\n\t\t\t\t\tthis.infinity = null;\n\t\t\t\t}\n\n\t\t\t\tthis.onPageChange(this.currentPage, !this.serverSide);\n\t\t\t\tthis.definePaddingBottom();\n\t\t\t}\n\n\t\t\tif ('dataLength' in changes) {\n\t\t\t\tif (isNullOrUndefined(this.dataLength))\n\t\t\t\t\tthis.dataLength = 0;\n\n\t\t\t\tthis.updatePaginateConfig();\n\t\t\t\tthis.definePaddingBottom();\n\t\t\t}\n\n\t\t\tif ('getDataOnInit' in changes)\n\t\t\t\tthis.getDataOnInit = (typeof this.getDataOnInit === 'string' && (this.getDataOnInit === '' || this.getDataOnInit === 'true')) ? true : this.getDataOnInit;\n\n\t\t\tif ('loading' in changes) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.body)\n\t\t\t\t\t\tthis.body.scrollEnabled = this.loading;\n\t\t\t\t});\n\n\t\t\t\tif (this._height.replace('px', '') === '0' && this.loading)\n\t\t\t\t\tthis.elRef.nativeElement.style.height = '50px';\n\n\t\t\t\tif (this.header && this.header.frmFilter) {\n\t\t\t\t\tif (this.loading)\n\t\t\t\t\t\tthis.header.frmFilter.disable();\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.header.enableForm();\n\t\t\t\t\t\tthis.updatePaginateConfig();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ('allItems' in changes) {\n\n\t\t\t\tif (!this.infinity && this.currentPage !== 1) {\n\t\t\t\t\tlet maxPages = Math.floor(this.dataLength / this.paginate);\n\t\t\t\t\tif ((this.dataLength % this.paginate) !== 0)\n\t\t\t\t\t\tmaxPages++;\n\n\t\t\t\t\tif (this.currentPage > maxPages || !this.currentPage) {\n\t\t\t\t\t\tthis.currentPage = (this.currentPage > maxPages) ? maxPages : 1;\n\n\t\t\t\t\t\tif (this.serverSide) {\n\t\t\t\t\t\t\tthis.onPageChange(this.currentPage);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.refreshRender();\n\t\t\t}\n\t\t}, 100);\n\t}\n\n\tprivate onCheckBodyDimensions() {\n\t\tthis.checkBodyWidthChange();\n\t\tthis.checkBodyHeightChange();\n\t}\n\n\tprivate checkBodyWidthChange() {\n\t\tif (this.el) {\n\t\t\tlet currentWidth = '100%';\n\t\t\tif (this.body && this.body.itemsContainerEl && this.body.itemsContainerEl.nativeElement)\n\t\t\t\tcurrentWidth = this.body.itemsContainerEl.nativeElement.clientWidth + 'px';\n\n\t\t\tif (currentWidth !== this.lastBodyWidth) {\n\t\t\t\tthis.lastBodyWidth = currentWidth;\n\t\t\t\tthis.header.onBodyWidthChange(currentWidth);\n\t\t\t\tthis.body.onBodyWidthChange(currentWidth);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate checkBodyHeightChange() {\n\t\tif (this.el && this._height !== 'auto') {\n\t\t\tlet currentHeight = this.el.clientHeight + 'px';\n\t\t\tif (currentHeight !== this.lastBodyHeight) {\n\t\t\t\tthis.lastBodyHeight = currentHeight;\n\t\t\t\tthis.refreshRender();\n\t\t\t}\n\t\t}\n\t}\n\n\n\tprivate definePaddingBottom() {\n\t\tif (this.el) {\n\t\t\tlet padding = '0px';\n\t\t\tif (!this.infinity && this.paginate !== null)\n\t\t\t\tpadding = '46px';\n\n\t\t\tif (padding !== this.elRef.nativeElement.style.paddingBottom)\n\t\t\t\tthis.el.style.paddingBottom = padding;\n\t\t}\n\t}\n\n\tpublic definePaddingTop(forceDefine: boolean = false) {\n\t\tif (this.el && this.header) {\n\t\t\tlet padding = '0px';\n\t\t\tif (this.header && this.header.el && this.header.visible)\n\t\t\t\tpadding = this.header.height;\n\n\t\t\tif (forceDefine || padding !== this.elRef.nativeElement.style.paddingTop) {\n\t\t\t\tthis.paddingTop = padding;\n\n\t\t\t\tif (this.headerShadowEl && this.headerShadowEl.nativeElement)\n\t\t\t\t\tthis.headerShadowEl.nativeElement.style.height = padding !== '0px' ? padding : 'auto';\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate heightIsValid() {\n\t\treturn !isNullOrUndefined(this.height) && (typeof this.height === 'string') && this.height !== '' && this.height !== 'auto';\n\t}\n\n\tpublic minHeightIsValid() {\n\t\treturn !isNullOrUndefined(this.minHeight) && (typeof this.minHeight === 'string') && this.minHeight !== '' && this.minHeight !== 'auto';\n\t}\n\n\tprivate minWidthIsValid() {\n\t\treturn !isNullOrUndefined(this.minWidth) && (typeof this.minWidth === 'string') && this.minWidth !== '' && this.minWidth !== 'auto';\n\t}\n\n\tprivate startListenerWidth() {\n\t\tthis.stopListenerWidth();\n\t\tthis.intervalListenerWidth = setInterval(() => {\n\t\t\tif (this.el && this.minWidthIsValid()) {\n\t\t\t\tlet width = this.el.clientWidth;\n\t\t\t\tlet minWidth = parseInt(this.helper.onlyNumbers(this.minWidth));\n\t\t\t\tif (width <= minWidth) {\n\t\t\t\t\tthis.el.style.overflowX = 'auto';\n\t\t\t\t\tthis.el.style.overflowY = 'hidden';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.el.style.overflowX = '';\n\t\t\t\t\tthis.el.style.overflowY = '';\n\t\t\t\t}\n\t\t\t}\n\t\t}, 250);\n\t}\n\n\tprivate stopListenerWidth() {\n\t\tif (this.intervalListenerWidth) {\n\t\t\tclearInterval(this.intervalListenerWidth);\n\t\t\tthis.intervalListenerWidth = null;\n\t\t}\n\t}\n\n\tpublic checkMinWidthcanApply() {\n\t\tif (this.minWidthIsValid()) {\n\t\t\tif (this.el)\n\t\t\t\tthis.body.el.style.minWidth = this.minWidth;\n\n\t\t\tif (this.paginateComp && this.paginateComp.el)\n\t\t\t\tthis.paginateComp.el.style.minWidth = this.minWidth;\n\t\t}\n\t\telse {\n\t\t\tif (this.body && this.body.el)\n\t\t\t\tthis.body.el.style.minWidth = '';\n\n\t\t\tif (this.paginateComp && this.paginateComp.el)\n\t\t\t\tthis.paginateComp.el.style.minWidth = '';\n\t\t}\n\t}\n\n\tpublic setDataLength(length: number, paginatedLength: number) {\n\t\tthis.dataLength = length;\n\t\tthis.dataPaginatedLength = paginatedLength;\n\t}\n\n\tpublic onPageChange(currentPage: number, emit: boolean = true) {\n\t\tif (this.isPaging) {\n\t\t\tthis.notifyChanges(AgTableChangeAction.PAGINATE);\n\n\t\t\tif (emit && this.serverSide) {\n\t\t\t\tthis.setCurrentPage(currentPage);\n\t\t\t\tthis.emitGetData();\n\t\t\t}\n\t\t\telse if (!this.serverSide) {\n\t\t\t\tthis.setCurrentPage(currentPage, false);\n\t\t\t\tthis.prepareItemsPagingAndFilter();\n\t\t\t\tthis.updatePaginateConfig();\n\t\t\t\tthis.body.backToTheTop();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onSortChange() {\n\t\tthis.notifyChanges(AgTableChangeAction.ORDER);\n\n\t\tif (this.serverSide) {\n\t\t\tthis.setCurrentPage(1);\n\t\t\tthis.emitGetData(this.infinity > 0);\n\t\t}\n\t\telse {\n\t\t\tthis.prepareItemsPagingAndFilter();\n\t\t\tthis.body.backToTheTop();\n\t\t}\n\t}\n\n\tpublic onFilterChange() {\n\t\tthis.notifyChanges(AgTableChangeAction.FILTER);\n\n\t\tif (this.header && this.header.cols) {\n\t\t\tif (this.header.cols.some(x => x.filterActive)) {\n\t\t\t\tthis.filterActivated.emit(true);\n\t\t\t} else {\n\t\t\t\tthis.filterActivated.emit(false);\n\t\t\t}\n\t\t}\n\n\t\tif (this.serverSide) {\n\t\t\tthis.setCurrentPage(1);\n\t\t\tthis.emitGetData(this.infinity > 0);\n\t\t}\n\t\telse {\n\t\t\tthis.prepareItemsPagingAndFilter();\n\t\t\tthis.updatePaginateConfig();\n\t\t\tthis.body.backToTheTop();\n\t\t}\n\t}\n\n\tprivate prepareItemsPagingAndFilter() {\n\t\tthis.filteredItems = this.dataPrepareService.apply(this.allItems, this);\n\n\t\tif (this.body && this.dataVirtualScrollService.canApplyVirtualScroll(this.body))\n\t\t\tthis.dataVirtualScrollService.defineItens(this.body);\n\t\telse {\n\t\t\tthis.items = this.filteredItems;\n\t\t\tthis.isDataEmpty = this.items.length === 0;\n\t\t\tthis.emitDataRender();\n\t\t}\n\t}\n\n\tpublic emitGetData(resetData: boolean = false) {\n\t\tif (resetData) {\n\t\t\tthis.currentPage = 1;\n\t\t\tthis.dataVirtualScrollService.reset(this.body);\n\t\t}\n\n\t\tlet colSort = this.header.colSorting;\n\n\t\tthis.onGetData.emit(new AgTableEvent({\n\t\t\tpage: this.currentPage,\n\t\t\tpageSize: this.paginate ? this.paginate : this.infinity,\n\t\t\tfilters: this.header.getFormDataModel(),\n\t\t\torder: colSort ? { field: colSort.col.field, asc: colSort.asc } : null,\n\t\t\tresetData: resetData\n\t\t}));\n\t}\n\n\tprivate emitDataRender() {\n\t\tthis.onDataRender.emit(new AgTableDataRenderEvent<any>({\n\t\t\titems: this.items,\n\t\t\tlength: this.items.length,\n\t\t\tstartIndex: 0,\n\t\t\tendIndex: this.items.length - 1\n\t\t}));\n\t}\n\n\tpublic setCurrentPage(page: number, updateConfig: boolean = true) {\n\t\tthis.currentPage = page;\n\t\tif (updateConfig)\n\t\t\tthis.updatePaginateConfig();\n\t}\n\n\tprivate updatePaginateConfig() {\n\t\tlet visibleLength = this.dataPaginatedLength;\n\n\t\tif (this.serverSide && this.body)\n\t\t\tvisibleLength = this.filteredItems.length;\n\n\t\tlet page = this.paginate ? this.paginate : this.infinity;\n\n\t\tthis.paginateCaptionConfig = {\n\t\t\tstart: (page * (this.currentPage - 1)) + 1,\n\t\t\tend: (page * (this.currentPage - 1)) + visibleLength,\n\t\t\ttotal: this.dataLength ? this.dataLength : 0\n\t\t};\n\t}\n\n\tprivate notifyChanges(action: AgTableChangeAction = AgTableChangeAction.INITIALIZE) {\n\t\tthis.actionChange = action;\n\t}\n\n\tpublic resetFilters(getData: boolean = false) {\n\t\tfor (let ctrlName in this.header.filterCtrls) {\n\t\t\tthis.header.filterCtrls[ctrlName].reset();\n\t\t}\n\t\tif (getData)\n\t\t\tthis.emitGetData(true);\n\t}\n\n\tpublic refreshRender() {\n\t\tif (this.body) {\n\t\t\tif (!this.body.parent)\n\t\t\t\tthis.body.parent = this;\n\n\t\t\tthis.dataVirtualScrollService.preparePreviousItemAfterDataChange(this.body);\n\t\t}\n\n\t\tthis.prepareItemsPagingAndFilter();\n\t\tthis.updatePaginateConfig();\n\t\tthis.definePaddingBottom();\n\n\t\tif (!this.infinity && this.body)\n\t\t\tthis.body.backToTheTop();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.stopListenerWidth();\n\t}\n}\n","<div #headerShadowEl class=\"top-shadow animated fadeIn\" [class.to-drop]=\"topShadow\"></div>\n\n<ng-content></ng-content>\n\n<ag-table-paginate *ngIf=\"!infinity && paginate !== null\"\n    class=\"animated fadeIn\"\n    [class.to-drop]=\"bottomShadow\"\n    [class.on-infinity]=\"infinity\"\n    [length]=\"(isPaging && numPages) ? numPages : 1\"\n    [current]=\"(isPaging && numPages) ? currentPage : 1\"\n    [objCaption]=\"(isPaging && numPages) ? paginateCaptionConfig : { start: 1, end: dataLength, total: 0 }\"\n    [loading]=\"loading\"\n    [disabled]=\"loading\"\n    (change)=\"onPageChange($event)\">\n</ag-table-paginate>\n\n<div *ngIf=\"loading && (!infinity || currentPage === 1)\" class=\"ag-table-loading animated fadeIn\">\n    <ag-table-spinner></ag-table-spinner>\n</div>","import { Injectable, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { AgTableComponent } from './ag-table/ag-table.component';\nimport { AgTableBodyComponent } from './ag-table-body/ag-table-body.component';\nimport { AgTableRowComponent } from './ag-table-row/ag-table-row.component';\nimport { AgTableHeaderComponent } from './ag-table-header/ag-table-header.component';\nimport { AgTableCellComponent } from './ag-table-cell/ag-table-cell.component';\nimport { AgTableColComponent } from './ag-table-col/ag-table-col.component';\nimport { AgTablePaginateComponent } from './ag-table-paginate/ag-table-paginate.component';\nimport { AgTableFilterComponent } from './ag-table-filter/ag-table-filter.component';\nimport { AgTablePrepareService } from './services/ag-table-prepare.service';\nimport { AgTableVirtualScrollService } from './services/ag-table-virtual-scroll.service';\nimport { Helper } from './services/helper';\nimport { AgTableSpinnerComponent } from './ag-table-spinner/ag-table-spinner.component';\nimport { AgTableLangService } from './services/ag-table-lang.service';\nimport { AgTableSettings } from './settings/ag-table.settings';\nimport { AgTableCustomSettings } from './settings/ag-table-custom.settings';\nimport { TranslatePipe } from './pipes/translate.pipe';\nimport { DateFormatDirective } from './directives/date-format-directive';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        RouterModule,\n        FormsModule,\n        ReactiveFormsModule,\n    ],\n    declarations: [\n        AgTableComponent,\n        AgTableHeaderComponent,\n        AgTableBodyComponent,\n        AgTableRowComponent,\n        AgTableCellComponent,\n        AgTableColComponent,\n        AgTableFilterComponent,\n        AgTablePaginateComponent,\n        AgTableSpinnerComponent,\n        // Pipes\n        TranslatePipe,\n        // Directives\n        DateFormatDirective\n    ],\n    exports: [\n        AgTableComponent,\n        AgTableHeaderComponent,\n        AgTableBodyComponent,\n        AgTableRowComponent,\n        AgTableCellComponent,\n        AgTableColComponent\n    ],\n    bootstrap: [],\n    providers: [\n        AgTablePrepareService,\n        AgTableVirtualScrollService,\n        AgTableCustomSettings,\n        AgTableSettings,\n        AgTableLangService,\n        Helper\n    ]\n})\nexport class AgTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["TRANSLATION","i1.AgTableCustomSettings","i1.AgTableSettings","i1.Helper","i2.AgTableSettings","i1.AgTableLangService","i2.AgTableLangService","i3.AgTableSettings","i6.DateFormatDirective","i7.TranslatePipe","i3","i5.AgTableFilterComponent","i2","i2.Helper","i3.AgTableVirtualScrollService","i5.AgTableSpinnerComponent","i1","i2.TranslatePipe","i2.AgTablePrepareService","i5.AgTablePaginateComponent","i6.AgTableSpinnerComponent"],"mappings":"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"}