{"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[]) {\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) as string;\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 | null {\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 | string {\n\t\tif (typeof date === 'string') date = this.strToDate(date) as Date;\n\t\telse {\n\t\t\tif (date) date = this.copyDate(date);\n\t\t\tif (date && typeof days === 'number') return new Date(date.setDate(date.getDate() + days));\n\t\t}\n\n\t\treturn date;\n\t}\n\n\tdateToStr(date: Date | string, format: string = 'dd/MM/yyyy'): null | 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) as 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) as 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) as 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) as 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'): null | string {\n\t\tdate = this.strToDate(date) as 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: HTMLInputElement) {\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: string, str: string, strToRep: string){\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 keyof typeof AgTableFilterType]) 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    standalone: false\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            return true;\n        }\n        else {\n            const 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            e.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 ?? 0))\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            const input = e.target as HTMLInputElement;\n    \n            this.pasting = true;\n            setTimeout(() => {\n                this.pasting = false;\n                const value = this.helper.onlyNumbers(input.value, [this.dateFormat ?? '']);\n                const 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): { validValue: string, formatedValue: string } {\n        let object = {\n            validValue: currentValue,\n            formatedValue: '',\n        };\n        if (currentValue.length !== (this.dateFormat?.length ?? 0)) {\n            let newValue = '';\n            if (this.dateSeparator) {\n                for(var i = 0; i < (this.dateFormat?.length ?? 0); 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\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    standalone: false\n})\nexport class TranslatePipe implements PipeTransform {\n    constructor(\n        private langService: AgTableLangService\n    ) {\n    }\n\n    transform(prop: string, dict?: { [key: string]: any }, replaceObj?: { [key: string]: any }): any {\n        let text = '';\n\n        this.langService.getText(prop, (dict ?? {}), false).subscribe((result: any) => {\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  standalone: false\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  public 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: any) => {\n            return {\n              text: x,\n              value: x\n            };\n          });\n        } else {\n          this.options = (this.options as any).map((x: any) => {\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=\"frmControl && 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=\"frmControl && 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=\"frmControl && type === 'text'\"\n    class=\"ag-table-filter-input\"\n    [formControl]=\"frmControl\"\n    type=\"text\"\n    [placeholder]=\"placeholder ? placeholder : ''\"\n/>\n\n<input *ngIf=\"frmControl && 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=\"frmControl && 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';\nimport { AgTableRowComponent } from '../public_api';\n\n//@dynamic\n@Component({\n\tselector: 'ag-table-col',\n\ttemplateUrl: './ag-table-col.component.html',\n\tstandalone: false\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;\n\n\t@Input('custom-filter') public customFilter?: { field: string, mode?: AgTableFilterMode, value?: any } |\n\t\t{ field: string, mode?: AgTableFilterMode, value?: any }[] |\n\t\tstring |\n\t\tstring[];\n\t@Input() public filter: AgTableFilterType | string = AgTableFilterType.NONE;\n\t@Input() public field: string = '';\n\t@Input() public mode?: AgTableFilterMode;\n\t@Input() public placeholder = '';\n\t@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\t\t@Input('ready-only') public readOnly: boolean = false;\n\t@Input('min-date') public minDate: Date;\n\t\t@Input('max-date') public maxDate: Date;\n\t\t@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;\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\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(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 ?? false) && this.parent.colSorting?.col === this || false; }\n\tpublic get isSortAsc() { return this.isSorting && (this.parent?.colSorting?.asc ?? false); }\n\n\tconstructor(\n\t\tprivate helper: Helper,\n\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\tngAfterViewInit() {\n\t\tif (!this.optionAllLabel)\n\t\t\tthis.optionAllLabel = this.langService.getText('ALL_OPTION', this.dictionary);\n\n\t\tif (!this.dateFormat)\n\t\t\tthis.dateFormat = this.langService.getText('DATE_FORMAT', this.dictionary);\n\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\t}\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 ? undefined : this.sort;\n\n\t\t\t\tif (this.sort !== 'asc' && this.sort !== 'desc')\n\t\t\t\t\tthis.sort = undefined;\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 = undefined;\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 as string)?.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 = undefined;\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 = undefined;\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 = undefined;\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 = undefined;\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: number) {\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();\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) => x.getWidthUnit() !== ''))\n\t\t\t\t\tunit = this.parent?.cols.find((x) => (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 ?? 0;\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\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\t((this.parent?.parent?.body?.rows ?? []) as AgTableRowComponent[]).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>\n","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  selector: 'ag-table-header',\n  templateUrl: './ag-table-header.component.html',\n  standalone: false\n})\nexport class AgTableHeaderComponent implements OnInit, OnDestroy, AfterViewInit {\n  @HostBinding('class.ag-table-header') public class: boolean = true;\n\n  @ContentChildren(AgTableColComponent) private queryCols!: QueryList<AgTableColComponent>;\n\n  public get cols() { return this.queryCols ? this.queryCols.toArray() : []; }\n\n  public get height() { return (this.el) ? `${this.el.children[0].clientHeight}px` : '0px'; }\n\n  public get visible() { return (this.elRef && this.el) ? this.el.style.visibility !== 'hidden' : false; }\n  public set visible(value: boolean) {\n    if ((this.elRef && this.el))\n      this.el.style.visibility = (value ? '' : 'hidden');\n  }\n\n  public parent: any;\n\n  public dictionary = TRANSLATION;\n\n  public frmFilter: FormGroup;\n\n  public colSorting?: { col: AgTableColComponent, asc: boolean };\n\n  public get filterCtrls(): { [key: string]: FormControl } {\n    return ((this.frmFilter && this.frmFilter.controls) ? this.frmFilter.controls : null) as { [key: string]: FormControl };\n  }\n\n  public get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n  constructor(\n    public elRef: ElementRef<HTMLElement>,\n    private helper: Helper,\n    private fb: FormBuilder\n  ) {\n    this.frmFilter = this.fb.group({ none: [null] });\n  }\n\n  ngOnInit() {\n  }\n\n  ngAfterViewInit() {\n  }\n\n  private makeForm() {\n    let objControls = {} as { [keyt: string]: FormControl<any> };\n\n    this.cols.forEach((col) => {\n      if (col.canFilter) {\n        if (col.field) {\n          objControls[col.field] = col.makeFormControl();\n\n          if (col.disableFilter) {\n            objControls[col.field].disable();\n          }\n        }\n        else {\n          (col.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n            objControls[custom.field] = col.makeFormControl(custom.value ? custom.value : null);\n\n            if (col.disableFilter) {\n              objControls[col.field].disable();\n            }\n          });\n        }\n      }\n    });\n\n    if (Object.keys(objControls).length === 0)\n      objControls['none'] = this.fb.control(null);\n\n    this.frmFilter = this.fb.group(objControls);\n\n    if (this.parent && this.parent.loading)\n      this.frmFilter.disable();\n  }\n\n  public enableForm() {\n    this.cols.forEach((col) => {\n      if (col.canFilter) {\n        if (col.field)\n          this.checkFilterStatus(col.field, col);\n        else if (col.customFilter)\n          (col.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n            this.checkFilterStatus(custom.field, col);\n          });\n      }\n    });\n  }\n\n  private checkFilterStatus(field: string, col: AgTableColComponent) {\n    let control = this.filterCtrls[field];\n\n    if (control) {\n      if (col.disableFilter)\n        control.disable();\n      else\n        control.enable();\n    }\n  }\n\n  private checkDefaultValue(field: string, value: string, col: AgTableColComponent) {\n    let control = this.filterCtrls[field];\n\n    if (control && value)\n      control.setValue(col.filterValue);\n  }\n\n  public onRender(parent: any) {\n    this.parent = parent;\n    this.configureChildrens();\n    this.queryCols.changes.subscribe(this.configureChildrens.bind(this));\n    this.onBodyWidthChange(this.parent.lastBodyWidth);\n  }\n\n  public configureChildrens() {\n    this.makeForm();\n    this.cols.forEach((col, index) => {\n      col.onRender(this, index);\n\n      if (col.field)\n        this.checkDefaultValue(col.field, col.filterValue, col);\n      else if (col.customFilter)\n        (col.customFilter as { field: string, mode?: AgTableFilterMode, value?: any }[]).forEach((custom) => {\n          this.checkDefaultValue(custom.field, custom.value, col);\n        });\n    });\n\n    if (this.colSorting) {\n      if (this.parent.initialized)\n        this.parent.onSortChange();\n    }\n    else if (this.cols.some(x => x.sort === 'asc' || x.sort === 'desc')) {\n      const colSort = this.cols.find(x => x.sort === 'asc' || x.sort === 'desc');\n      this.colSorting = {\n        col: colSort!,\n        asc: colSort!.sort === 'asc'\n      };\n      colSort!.sort = undefined;\n      if (this.parent.initialized)\n        this.parent.onSortChange();\n    }\n\n    if (this.parent)\n      this.parent.definePaddingTop();\n  }\n\n  public getColByField(field: string) {\n    return this.cols.find(col => {\n      if (col.field)\n        return col.field === field;\n      else if (col.customFilter)\n        return (col.customFilter as any[]).some(x => x.field === field);\n      return false;\n    });\n  }\n\n  public getColFilterModeByField(field: string) {\n    let col = this.getColByField(field);\n    if (col) {\n      if (col.field)\n        return col.mode;\n      else if (col.customFilter) {\n        let customFilter = (col.customFilter as any[]).find(x => x.field === field);\n        if (customFilter)\n          return customFilter.mode;\n      }\n    }\n\n    return AgTableFilterMode.CONTAINS;\n  }\n\n  public getFormDataModel() {\n    const formValue = this.frmFilter.value as { [key: string]: any };\n    const dataModel = {} as { [key: string]: any };\n\n    for (const field in formValue) {\n      let value = formValue[field];\n      if (!isNullOrUndefined(value) && value !== '')\n        dataModel[field] = value;\n    }\n\n    return dataModel;\n  }\n\n  public onBodyWidthChange(currentWidth: string) {\n    if (currentWidth && this.el) {\n      let currentWidthNumber = this.helper.onlyNumberAndToFloat(currentWidth);\n      let minWidthIsDefined = !!(this.parent && this.parent.minWidth);\n      let headerWidth = this.el.clientWidth;\n\n      if (minWidthIsDefined) {\n        this.el.style.width = currentWidth;\n        headerWidth = this.parent.el.clientWidth;\n      }\n      else\n        this.el.style.width = '';\n\n      if (this.cols.length > 0) {\n        this.cols.forEach(col => col.setWidth());\n\n        const lastCol = this.cols[this.cols.length - 1];\n\n        if (headerWidth > currentWidthNumber) {\n          this.el.style.paddingRight = minWidthIsDefined ? '' : ((headerWidth - currentWidthNumber) + 'px');\n          lastCol.el!.style.paddingRight = '0px';\n        }\n        else {\n          this.el.style.paddingRight = '';\n          lastCol.el!.style.paddingRight = '';\n        }\n      }\n    }\n  }\n\n  ngOnDestroy() {\n  }\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\tstandalone: false\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;\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 ?? 0) < this.parent.parent.parent.header.cols.length)\n\t\t\t\treturn this.parent.parent.parent.header.cols[(this.cellIndex ?? 0)];\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: number) {\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\n\t\t\t\tnewMaxWidth = ((this.helper.onlyNumberAndToFloat(newWidth) * this.parent!.parent!.el!.clientWidth) / 100) + 'px';\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  selector: 'ag-table-row',\n  templateUrl: './ag-table-row.component.html',\n  standalone: false\n})\nexport class AgTableRowComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n  @HostBinding('class.ag-table-row') public class: boolean = true;\n\n  @ContentChildren(AgTableCellComponent) private queryCells?: QueryList<AgTableCellComponent>;\n\n  @Input('no-truncate') public noTruncate: boolean = false;\n\n  private set _height(value: string) {\n    if (this.el) {\n      this.el.style.minHeight = value;\n      this.el.style.height = value;\n    }\n  }\n  private get _height() { return (this.el) ? this.el.style.minHeight : 'auto'; }\n\n  public get cells() { return this.queryCells ? this.queryCells.toArray() : []; }\n\n  public parent?: AgTableBodyComponent;\n\n  public virtualIndex!: number;\n  public index!: number;\n\n  public dictionary = TRANSLATION;\n\n  private subscription?: Subscription;\n\n  public get el() { return (this.elRef && this.elRef.nativeElement) ? this.elRef.nativeElement : null; }\n\n  constructor(\n    private elRef: ElementRef<HTMLElement>,\n    private viewContainer: ViewContainerRef,\n  ) {\n  }\n\n  ngOnInit() {\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes) {\n      if ('noTruncate' in changes) {\n        this.noTruncate = (typeof this.noTruncate === 'string' && (this.noTruncate === '' || this.noTruncate === 'true')) ? true : this.noTruncate;\n        if (this.cells.length)\n          this.cells.forEach(cell => {\n            cell.truncate = !cell.noTruncate && !this.noTruncate;\n          });\n      }\n    }\n  }\n\n  ngAfterViewInit() {\n  }\n\n  public onRender(parent: AgTableBodyComponent, virtualIndex: number) {\n    this.parent = parent;\n    this.virtualIndex = virtualIndex;\n    this.index = this.parent.getRowIndexBasedVirtual(virtualIndex);\n    this._height = this.parent.rowHeight;\n    this.configureChildrens();\n    this.defineClass();\n\n    if (this.subscription) this.subscription.unsubscribe();\n    this.subscription = this.queryCells?.changes.subscribe(this.configureChildrens.bind(this));\n  }\n\n  public configureChildrens() {\n    this.cells.forEach((cell, index) => {\n      cell.onRender(this, index);\n    });\n  }\n\n  private defineClass() {\n    if (this.index >= 0) {\n      let position = this.index + 1;\n      let currentClassName = 'ag-table-row-' + ((position % 2) === 0 ? 'even' : 'odd');\n      let previousClassName = 'ag-table-row-' + ((position % 2) === 0 ? 'odd' : 'even');\n\n      if (!this.el?.classList.contains(currentClassName))\n        this.el?.classList.add(currentClassName);\n\n      if (this.el?.classList.contains(previousClassName))\n        this.el?.classList.remove(previousClassName);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.subscription) this.subscription.unsubscribe();\n  }\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';\nimport { AgTableComponent } from '../ag-table/ag-table.component';\n\n@Injectable()\nexport class AgTableVirtualScrollService {\n\n\tconstructor(private helper: Helper) {\n\t}\n\n\tpublic defineItens(body: AgTableBodyComponent) {\n\t\tconst vs = body.virtualScroll!;\n\t\tconst table = body.parent;\n\n\t\tconst 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\tconst vs = body.virtualScroll!;\n\t\tfor (let i = 0; i < body.itemsContainerEl.nativeElement.children.length; i++) {\n\t\t\tlet children = body.itemsContainerEl.nativeElement.children[i];\n\t\t\tlet realIndex = vs.currentStartIndex + i;\n\t\t\tif (!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\tconst 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\tconst vs = body.virtualScroll!;\n\t\tconst rowHeight = parseInt(this.helper.onlyNumbers(body.rowHeight));\n\n\t\tconst 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 as AgTableComponent).filteredItems.reduce((prev, curr, i) => {\n\t\t\tconst height = vs.previousItemsHeight[i];\n\t\t\treturn prev + (height ? height : rowHeight);\n\t\t}, 0);\n\n\t\tif (vs.currentSrollTop >= rowHeight) {\n\t\t\tlet paddingTop = 0;\n\t\t\tlet itemsThatAreGone = 0;\n\t\t\tlet initialScroll = vs.currentSrollTop;\n\n\t\t\tfor (let h of vs.previousItemsHeight) {\n\t\t\t\tlet height = h ? h : rowHeight;\n\t\t\t\tif (initialScroll >= height) {\n\t\t\t\t\tpaddingTop += height;\n\t\t\t\t\tinitialScroll -= height;\n\t\t\t\t\titemsThatAreGone++;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tobj.paddingTop = paddingTop;\n\t\t\tobj.itemsThatAreGone = itemsThatAreGone;\n\t\t}\n\n\t\treturn obj;\n\t}\n\n\tpublic preparePreviousItemAfterDataChange(body: AgTableBodyComponent) {\n\t\tconst table = body.parent;\n\t\tconst vs = body.virtualScroll!;\n\n\t\tif (!table.infinity)\n\t\t\tvs.previousItemsHeight = new Array(table.filteredItems.length).fill(null);\n\t\telse {\n\t\t\tlet anothers = table.filteredItems.length - vs.previousItemsHeight.length;\n\t\t\tif (anothers > 0)\n\t\t\t\tvs.previousItemsHeight = [...vs.previousItemsHeight, ...(Array.from({ length: anothers }).fill(null))] as number[];\n\t\t}\n\t}\n\n\tpublic canApplyVirtualScroll(body: AgTableBodyComponent) {\n\t\tconst 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\tconst vs = body.virtualScroll!;\n\t\tconst rowHeight = parseInt(this.helper.onlyNumbers(body.rowHeight));\n\t\tconst 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  standalone: false\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\tstandalone: false\n})\nexport class AgTableBodyComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\t@HostBinding('class.ag-table-body') public class: boolean = true;\n\t@HostBinding('class.clickable') public clickable: boolean = false;\n\t@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\t@ContentChildren(AgTableRowComponent) private queryRows!: QueryList<AgTableRowComponent>;\n\n\tprivate 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\tpublic scrollEnabled: boolean = false;\n\n\tpublic 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\t\tthis.virtualScroll = new AgTableVirtualScrollModel({\n\t\t\tcontainerSrollEl: this.elRef\n\t\t});\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\t\tif ('rowHeight' in changes) {\n\t\t\tif (this.helper.onlyNumbers(this.rowHeight) === this.rowHeight)\n\t\t\t\tthis.rowHeight += 'px';\n\n\t\t\tif (isNullOrUndefined(this.rowHeight) || this.rowHeight === '') {\n\t\t\t\tthis.rowHeight = this.minHeight + 'px';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet number = this.helper.onlyNumbers(this.rowHeight);\n\t\t\t\tlet unit = this.rowHeight.replace(number, '');\n\n\t\t\t\tif (unit !== 'px') {\n\t\t\t\t\tthis.rowHeight = this.minHeight + 'px';\n\t\t\t\t\tconsole.warn(`The row-height is invalid. The height must be informed in \"px\".`);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet number = parseInt(this.helper.onlyNumbers(this.rowHeight));\n\t\t\tif (number < this.minHeight) {\n\t\t\t\tthis.rowHeight = this.minHeight + 'px';\n\t\t\t\tconsole.warn(`The row-height is invalid because the minimum height should be \"${this.minHeight}px\".`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\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\t\tthis.eventsLineters.push(this.renderer.listen(this.elRef.nativeElement, 'mousewheel', this.onMouseWheel.bind(this)));\n\t\tthis.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 ?? 0;\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\tprivate onMouseWheel() {\n\t\tif (!this.dataVirtualScrollService.canApplyVirtualScroll(this))\n\t\t\tthis.onScroll();\n\t}\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 ?? 0\"></div>\n    <div #itemsContainer class=\"scrollable-content\"\n        [class.p-relative]=\"parent?.height === 'auto'\"\n        [style.transform]=\"'translateY(' + (virtualScroll?.paddingScroll ?? 0) + '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        if (!this.filters) this.filters = {};\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  standalone: false\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  public parent: any;\n\n  caption: string = '';\n  public pages: any[] = [];\n\n  public 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  public onRender(parent: any) {\n    this.parent = parent;\n    this.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\tstandalone: false\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 | string = false;\n\n\t/** THIS DEFINE IF WILL GO PAGINATE OR NOT */\n\t@Input() public paginate?: number;\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;\n\n\t/** SHOW LOADING SPINNER ABOVE THE DATA TABLE WHEN LOADING IS TRUE. */\n\t@Input() public loading?: boolean;\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 | string = 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 ?? 0));\n\t\t\treturn pages + (((this.dataLength / (this.paginate ?? 0)) > 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;\n\tpublic lastBodyHeight?: string;\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\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 as boolean;\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\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 ?? 0) && 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 = undefined;\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 = undefined;\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 = undefined;\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 = undefined;\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 ?? false;\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 ?? 0));\n\t\t\t\t\tif ((this.dataLength % (this.paginate ?? 0)) !== 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) > 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) > 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 } : undefined,\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 ?? 1) * (this.currentPage - 1)) + 1,\n\t\t\tend: ((page ?? 1) * (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 ?? false\"\n    [disabled]=\"loading ?? false\"\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 { 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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"}