{"version":3,"file":"ng-paginable.mjs","sources":["../../../projects/paginable/src/lib/utils.ts","../../../projects/paginable/src/lib/components/dropdown/dropdown.component.ts","../../../projects/paginable/src/lib/components/dropdown/dropdown.component.html","../../../projects/paginable/src/lib/interfaces/column-filter-event.ts","../../../projects/paginable/src/lib/assets/i18n/en.ts","../../../projects/paginable/src/lib/assets/i18n/es.ts","../../../projects/paginable/src/lib/constants/defaults.ts","../../../projects/paginable/src/lib/services/paginate-config.service.ts","../../../projects/paginable/src/lib/services/paginable.service.ts","../../../projects/paginable/src/lib/services/paginable-translation.service.ts","../../../projects/paginable/src/lib/translate.pipe.ts","../../../projects/paginable/src/lib/pipes/ucfirst.pipe.ts","../../../projects/paginable/src/lib/components/menu-filter/menu-filter.component.ts","../../../projects/paginable/src/lib/components/menu-filter/menu-filter.component.html","../../../projects/paginable/src/lib/service/modal.service.ts","../../../projects/paginable/src/lib/components/modal/modal.component.ts","../../../projects/paginable/src/lib/components/modal/modal.component.html","../../../projects/paginable/src/lib/utils/icons.ts","../../../projects/paginable/src/lib/components/icon/icon.component.ts","../../../projects/paginable/src/lib/components/icon/icon.component.html","../../../projects/paginable/src/lib/components/paginable-table-dropdown/paginable-table-dropdown.component.ts","../../../projects/paginable/src/lib/components/paginable-table-dropdown/paginable-table-dropdown.component.html","../../../projects/paginable/src/lib/components/paginable-table-range-input/paginable-table-range-input.component.ts","../../../projects/paginable/src/lib/components/paginable-table-range-input/paginable-table-range-input.component.html","../../../projects/paginable/src/lib/constants/breakpoints.ts","../../../projects/paginable/src/lib/directives/paginable-table-cell.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-error.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-expanding-row.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-filter.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-header.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-loading.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-not-found.directive.ts","../../../projects/paginable/src/lib/directives/paginable-table-row.directive.ts","../../../projects/paginable/src/lib/services/pagination.service.ts","../../../projects/paginable/src/lib/components/paginator/paginator.component.ts","../../../projects/paginable/src/lib/components/paginator/paginator.component.html","../../../projects/paginable/src/lib/directives/resizable.directive.ts","../../../projects/paginable/src/lib/components/resizable/resizable.component.ts","../../../projects/paginable/src/lib/components/resizable/resizable.component.html","../../../projects/paginable/src/lib/pipes/unwrap-async.pipe.ts","../../../projects/paginable/src/lib/pipes/is-observable.pipe.ts","../../../projects/paginable/src/lib/components/paginable-table/paginable-table.component.ts","../../../projects/paginable/src/lib/components/paginable-table/paginable-table.component.html","../../../projects/paginable/src/lib/directives/paginable-list-item.directive.ts","../../../projects/paginable/src/lib/directives/tooltip.directive.ts","../../../projects/paginable/src/lib/pipes/get.pipe.ts","../../../projects/paginable/src/lib/pipes/is-object.pipe.ts","../../../projects/paginable/src/lib/pipes/is-string.pipe.ts","../../../projects/paginable/src/lib/ng-paginable.module.ts","../../../projects/paginable/src/lib/list/paginable-list/paginable-list.component.ts","../../../projects/paginable/src/lib/list/paginable-list/paginable-list.component.html","../../../projects/paginable/src/lib/enums/selection-types.ts","../../../projects/paginable/src/lib/index.ts","../../../projects/paginable/src/public-api.ts","../../../projects/paginable/src/ng-paginable.ts"],"sourcesContent":["/**\n * Determines if two objects or two values are equivalent.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n *   comparing them with `equals`.\n *\n * @param o1 Object or value to compare.\n * @param o2 Object or value to compare.\n * @returns true if arguments are equal.\n */\nexport function equals(o1: any, o2: any): boolean {\n\tif (o1 === o2) {\n\t\treturn true;\n\t}\n\tif (o1 === null || o2 === null) {\n\t\treturn false;\n\t}\n\tif (o1 !== o1 && o2 !== o2) {\n\t\treturn true;\n\t} // NaN === NaN\n\tlet t1 = typeof o1,\n\t\tt2 = typeof o2,\n\t\tlength: number,\n\t\tkey: any,\n\t\tkeySet: any;\n\tif (t1 == t2 && t1 == 'object') {\n\t\tif (Array.isArray(o1)) {\n\t\t\tif (!Array.isArray(o2)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif ((length = o1.length) == o2.length) {\n\t\t\t\tfor (key = 0; key < length; key++) {\n\t\t\t\t\tif (!equals(o1[key], o2[key])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (Array.isArray(o2)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tkeySet = Object.create(null);\n\t\t\tfor (key in o1) {\n\t\t\t\tif (!equals(o1[key], o2[key])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tkeySet[key] = true;\n\t\t\t}\n\t\t\tfor (key in o2) {\n\t\t\t\tif (!(key in keySet) && typeof o2[key] !== 'undefined') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Checks if a value is defined and not null.\n *\n * @param {any} value - is of type `any`, which means it can accept any data type.\n *\n * @returns a boolean value.\n */\nexport function isDefined(value: any): boolean {\n\treturn typeof value !== 'undefined' && value !== null;\n}\n\n/**\n * Checks if the given item is an object and not an array.\n *\n * @param {any} item - is of type \"any\", which means it can be any data type.\n *\n * @returns a boolean value.\n */\nexport function isObject(item: any): boolean {\n\treturn item && typeof item === 'object' && !Array.isArray(item);\n}\n\n/**\n * Recursively merges two objects, combining their properties into a new object.\n *\n * @param {any} target - is the object that you want to merge the `source` object into.\n * @param {any} source - is an object that contains the properties and values that you want to merge into the `target` object.\n *\n * @returns the merged object, which is the result of merging the `target` and `source` objects.\n */\nexport function mergeDeep(target: any, source: any): any {\n\tlet output = Object.assign({}, target);\n\tif (isObject(target) && isObject(source)) {\n\t\tObject.keys(source).forEach((key: any) => {\n\t\t\tif (isObject(source[key])) {\n\t\t\t\tif (!(key in target)) {\n\t\t\t\t\tObject.assign(output, { [key]: source[key] });\n\t\t\t\t} else {\n\t\t\t\t\toutput[key] = mergeDeep(target[key], source[key]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tObject.assign(output, { [key]: source[key] });\n\t\t\t}\n\t\t});\n\t}\n\treturn output;\n}\n\n/**\n * Generates a unique ID of a specified length by randomly selecting characters from a predefined set of characters.\n *\n * @param {number} length - is the desired length of the generated unique ID.\n *\n * @returns a unique id string.\n */\nexport function generateUniqueId(length: number): string {\n\tconst characters =\n\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\tconst charactersLength = characters.length;\n\tlet result = '';\n\n\tfor (let i = 0; i < length; i++) {\n\t\tconst randomIndex = Math.floor(Math.random() * charactersLength);\n\t\tresult += characters.charAt(randomIndex);\n\t}\n\n\treturn result;\n}\n\n/**\n * Replaces placeholders in a string with corresponding values from a given object.\n *\n * @param {string} expr - a string that represents the expression to be interpolated. It may contain\n * placeholders that will be replaced with values from the `params` object.\n * @param {any} [params] - an optional object that contains the values to be interpolated into the `expr`\n * string. It is used to replace placeholders in the `expr` string with actual values.\n *\n * @returns returns the interpolated string. If `params` is not provided, it returns the original\n * `expr` string. If `params` is provided, it replaces placeholders in the `expr` string with corresponding values from `params`\n * and returns the interpolated string.\n */\nexport function interpolateString(\n\texpr: string,\n\tparams?: any,\n\ttemplateMatcher: RegExp = /{{\\s?([^{}\\s]*)\\s?}}/g\n) {\n\tif (!params) {\n\t\treturn expr;\n\t}\n\n\treturn expr.replace(templateMatcher, (substring: string, b: string) => {\n\t\tlet r = getValue(params, b);\n\t\treturn isDefined(r) ? r : substring;\n\t});\n}\n\n/**\n * Retrieves the value of a nested property from an object using dot notation.\n *\n * @param {any} target - the object from which you want to retrieve a value.\n * @param {string} key - a string that represents the property or nested properties of the `target` object that you want to\n * retrieve the value from. The `key` can be a single property name or a dot-separated string representing a nested property path.\n *\n * @returns the value of the specified key in the target object.\n */\nexport function getValue(target: any, key: string): any {\n\tlet keys = typeof key === 'string' ? key.split('.') : [key];\n\tkey = '';\n\tdo {\n\t\tkey += keys.shift();\n\t\tif (\n\t\t\tisDefined(target) &&\n\t\t\tisDefined(target[key]) &&\n\t\t\t(typeof target[key] === 'object' || !keys.length)\n\t\t) {\n\t\t\ttarget = target[key];\n\t\t\tkey = '';\n\t\t} else if (!keys.length) {\n\t\t\ttarget = undefined;\n\t\t} else {\n\t\t\tkey += '.';\n\t\t}\n\t} while (keys.length);\n\n\treturn target;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tEventEmitter,\n\tHostBinding,\n\tInput,\n\tOnInit,\n\tOutput,\n\tinject\n} from '@angular/core';\nimport { generateUniqueId } from '../../utils';\n\n@Component({\n\tselector: 'hub-ui-dropdown',\n\tstandalone: true,\n\timports: [CommonModule],\n\ttemplateUrl: './dropdown.component.html',\n\tstyleUrls: ['./dropdown.component.scss'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'dropdown'\n\t}\n})\nexport class DropdownComponent {\n\tprivate _cdr = inject(ChangeDetectorRef);\n\n\t@HostBinding() @Input() id = generateUniqueId(16);\n\n\t@Output() open = new EventEmitter<{\n\t\tid: string;\n\t}>();\n\n\t@Output() close = new EventEmitter<{\n\t\tid: string;\n\t}>();\n\n\tisOpened: boolean = false;\n\n\ttoggle() {\n\t\tthis.isOpened = !this.isOpened;\n\t\tthis._cdr.markForCheck();\n\t\tif (this.isOpened) {\n\t\t\tthis.open.next({ id: this.id });\n\t\t}\n\t}\n\n\tcloseDropdown() {\n\t\tthis.isOpened = false;\n\t\tthis._cdr.markForCheck();\n\t}\n\n\topenDropdown() {\n\t\tthis.isOpened = true;\n\t\tthis._cdr.markForCheck();\n\t}\n}\n","<button\n\tclass=\"btn dropdown__toggle\"\n\t[class.show]=\"isOpened\"\n\ttype=\"button\"\n\tdata-bs-toggle=\"dropdown\"\n\taria-expanded=\"false\"\n\t(click)=\"toggle()\"\n>\n\t<ng-content select=\".button\"></ng-content>\n</button>\n<ul\n\tclass=\"dropdown-menu dropdown__menu\"\n\t[class.show]=\"isOpened\"\n\t[attr.aria-hidden]=\"!isOpened\"\n>\n\t<ng-content select=\".content\"></ng-content>\n</ul>\n","export interface MenuFilterValue {\n\toperator: MenuFilterOperators;\n\trules: Array<MenuFilterRule>;\n}\n\nexport interface MenuFilterRule {\n\tvalue: string | null;\n\tmatchMode: MatchModes;\n}\n\nexport enum MenuFilterOperators {\n\tOr = 'or',\n\tAnd = 'and'\n}\n\nexport enum StringMatchModes {\n\tStartsWith = 'StartsWith',\n\tContains = 'Contains',\n\tNotContains = 'NotContains',\n\tEndsWith = 'EndsWith',\n\tEqual = 'Equal',\n\tNotEqual = 'NotEqual'\n}\n\nexport enum NumberMatchModes {\n\tGreaterThan = 'GreaterThan',\n\tGreaterThanOrEqual = 'GreaterThanOrEqual',\n\tLessThan = 'LessThan',\n\tLessThanOrEqual = 'LessThanOrEqual',\n\tEqual = 'Equal',\n\tNotEqual = 'NotEqual'\n}\n\nexport enum DateMatchModes {\n\tEqual = 'Equal',\n\tNotEqual = 'NotEqual',\n\tBefore = 'Before',\n\tBeforeOrEqual = 'BeforeOrEqual',\n\tAfter = 'After',\n\tAfterOrEqual = 'AfterOrEqual'\n}\n\nexport enum BooleanMatchModes {\n\tEqual = 'Equal',\n\tNotEqual = 'NotEqual'\n}\n\nexport enum NullMatchModes {\n\tIsNull = 'IsNull',\n\tIsNotNull = 'IsNotNull'\n}\n\nexport type MatchModes =\n\t| NullMatchModes\n\t| StringMatchModes\n\t| NumberMatchModes\n\t| DateMatchModes\n\t| BooleanMatchModes;\n","export const locale = {\n\tlang: 'en',\n\tdata: {\n\t\tLOADING: 'loading',\n\t\tSEARCH: 'search',\n\t\tROWS_PER_PAGE: 'rows per page',\n\t\tSHOWING_X_OF_Y_ROWS: 'Showing {{ amount }} of {{ total }} rows',\n\t\tNO_RESULTS_FOUND: 'No results found',\n\t\tBATCH_ACTIONS: 'Batch actions',\n\t\tAPPLY: 'Apply',\n\t\tERROR_OCURRED: 'Error ocurred getting data.',\n\t\tFROM: 'from',\n\t\tTO: 'to',\n\t\tSAVE: 'save',\n\t\tNEW_VIEW: 'new view',\n\t\tADD_VIEW: 'add view',\n\t\tEDIT_VIEW: 'edit view',\n\t\tDELETE_VIEW: 'delete view',\n\t\tSAVE_FILTERS: 'save filters',\n\t\tCANCEL: 'cancel',\n\t\tNO_VIEWS_CREATED: 'No views have been created',\n\t\tSELECT_VIEW: 'Select a view',\n\t\tCLEAN_FILTERS: 'Clean filters',\n\t\tNAME: 'name',\n\t\tA_VIEW_WILL_BE_CREATED:\n\t\t\t'A view will be created with the following configuration',\n\t\tMUST_PROVIDE_A_VIEW_NAME: 'Must provide a view name.',\n\t\tMUST_PROVIDE_VIEW_CONDITIONS:\n\t\t\t'Must provide the conditions of the view.',\n\t\tTODAY: 'today',\n\t\tYESTERDAY: 'yesterday',\n\t\tCURRENT_WEEK: 'current_week',\n\t\tLAST_WEEK: 'last_week',\n\t\tCURRENT_MONTH: 'current_month',\n\t\tLAST_MONTH: 'last_month',\n\t\tCURRENT_YEAR: 'current_year',\n\t\tLAST_YEAR: 'last_year',\n\t\tNO_ELEMENTS_FOUND: 'No elements found',\n\t\tSTAR_TYPING: 'Start typing to begin your search',\n\t\tOPERATIONS: {\n\t\t\tEQUAL_TO: 'Equal to',\n\t\t\tVARIABLE: 'Variable'\n\t\t},\n\t\tCLEAR: 'clean',\n\t\tADD_RULE: 'add condition',\n\t\tREMOVE_RULE: 'remove condition',\n\t\tMATCH_ALL: 'match all',\n\t\tMATCH_ANY: 'match any',\n\t\tMATCH_MODES: {\n\t\t\tGREATERTHAN: 'Greater than',\n\t\t\tGREATERTHANOREQUAL: 'Greater than or equal to',\n\t\t\tLESSTHAN: 'Less than',\n\t\t\tLESSTHANOREQUAL: 'Less than or equal to',\n\t\t\tEQUALS: 's',\n\t\t\tNOTEQUALS: 'Not equal to',\n\t\t\tEQUAL: 'Equal to',\n\t\t\tNOTEQUAL: 'Not equal to',\n\t\t\tBEFORE: 'Before',\n\t\t\tBEFOREOREQUAL: 'Before or equal to',\n\t\t\tAFTER: 'After',\n\t\t\tAFTEROREQUAL: 'After or equal to',\n\t\t\tSTARTSWITH: 'Starts with',\n\t\t\tCONTAINS: 'Contains',\n\t\t\tNOTCONTAINS: 'Does not contain',\n\t\t\tENDSWITH: 'Ends with'\n\t\t}\n\t},\n\tTRUE: 'true',\n\tFALSE: 'false'\n};\n","export const locale = {\n\tlang: 'es',\n\tdata: {\n\t\tLOADING: 'cargando',\n\t\tSEARCH: 'buscar',\n\t\tROWS_PER_PAGE: 'Filas por página',\n\t\tSHOWING_X_OF_Y_ROWS: 'Mostrando {{ amount }} de {{ total }} resultados',\n\t\tNO_RESULTS_FOUND: 'No se han encontrado resultados',\n\t\tBATCH_ACTIONS: 'Acciones en lote',\n\t\tAPPLY: 'Aplicar',\n\t\tERROR_OCURRED: 'Ha ocurrido un error obteniendo los datos.',\n\t\tFROM: 'desde',\n\t\tTO: 'hasta',\n\t\tSAVE: 'guardar',\n\t\tNEW_VIEW: 'nueva vista',\n\t\tADD_VIEW: 'añadir vista',\n\t\tEDIT_VIEW: 'editar vista',\n\t\tDELETE_VIEW: 'eliminar vista',\n\t\tSAVE_FILTERS: 'guardar filtros',\n\t\tCANCEL: 'cancelar',\n\t\tNO_VIEWS_CREATED: 'No hay vistas creadas',\n\t\tSELECT_VIEW: 'Selecciona una vista',\n\t\tCLEAN_FILTERS: 'Limpiar filtros',\n\t\tNAME: 'Nombre',\n\t\tA_VIEW_WILL_BE_CREATED:\n\t\t\t'La vista se creará con las siguientes condiciones',\n\t\tMUST_PROVIDE_A_VIEW_NAME: 'El nombre de la vista es requerido.',\n\t\tMUST_PROVIDE_VIEW_CONDITIONS: 'Debe añadir condiciones a la vista.',\n\t\tTODAY: 'hoy',\n\t\tYESTERDAY: 'ayer',\n\t\tCURRENT_WEEK: 'semana actual',\n\t\tLAST_WEEK: 'semana pasada',\n\t\tCURRENT_MONTH: 'mes actual',\n\t\tLAST_MONTH: 'mes pasado',\n\t\tCURRENT_YEAR: 'año actual',\n\t\tLAST_YEAR: 'año pasado',\n\t\tNO_ELEMENTS_FOUND: 'No se han encontrado elementos',\n\t\tSTAR_TYPING: 'Comienza a escribir para iniciar la búsqueda',\n\t\tOPERATIONS: {\n\t\t\tEQUAL_TO: 'Igual a',\n\t\t\tVARIABLE: 'Variable'\n\t\t},\n\t\tCLEAR: 'Limpiar',\n\t\tADD_RULE: 'Añadir condición',\n\t\tREMOVE_RULE: 'eliminar condición',\n\t\tMATCH_ALL: 'Coincidir todo',\n\t\tMATCH_ANY: 'Coincidir algo',\n\t\tMATCH_MODES: {\n\t\t\tGREATERTHAN: 'Mayor que',\n\t\t\tGREATERTHANOREQUAL: 'Mayor o igual que',\n\t\t\tLESSTHAN: 'Menor que',\n\t\t\tLESSTHANOREQUAL: 'Menor o igual que',\n\t\t\tEQUALS: 'Igual a',\n\t\t\tNOTEQUALS: 'No igual a',\n\t\t\tEQUAL: 'Igual a',\n\t\t\tNOTEQUAL: 'No igual a',\n\t\t\tBEFORE: 'Antes de',\n\t\t\tBEFOREOREQUAL: 'Antes o igual a',\n\t\t\tAFTER: 'Después de',\n\t\t\tAFTEROREQUAL: 'Después o igual a',\n\t\t\tSTARTSWITH: 'Comienza con',\n\t\t\tCONTAINS: 'Contiene',\n\t\t\tNOTCONTAINS: 'No contiene',\n\t\t\tENDSWITH: 'Termina con'\n\t\t}\n\t},\n\tTRUE: 'verdadero',\n\tFALSE: 'falso'\n};\n","import { PaginableTableConfig } from '../interfaces/paginable-table-config';\n\nexport const DEFAULT_LANGUAGE = navigator.language.split('-').at(0) ?? 'en';\nexport const DEFAULT_PAGINABLE_CONFIG: PaginableTableConfig = {\n\ttheme: null,\n\tmapping: {\n\t\tcurrentPage: 'currentPage',\n\t\tlastPage: 'lastPage',\n\t\tdata: 'data',\n\t\ttotal: 'total'\n\t},\n\tviews: {\n\t\tkey: 'paginable-table_view_'\n\t},\n\tlanguage: DEFAULT_LANGUAGE\n};\n","import { InjectionToken } from '@angular/core';\nimport { PaginableTableConfig } from '../interfaces/paginable-table-config';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\n// tslint:disable-next-line: variable-name\nexport const PaginateConfigService = new InjectionToken<PaginableTableConfig>('NbTableSorterConfig');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { DEFAULT_PAGINABLE_CONFIG } from '../constants/defaults';\nimport { PaginableTableConfig } from '../interfaces/paginable-table-config';\nimport { mergeDeep } from '../utils';\nimport { PaginateConfigService } from './paginate-config.service';\n\n@Injectable()\nexport class PaginableService {\n\tconfig!: Required<PaginableTableConfig>;\n\n\tget mapping(): any {\n\t\treturn this.config.mapping;\n\t}\n\n\tconstructor(\n\t\t@Optional()\n\t\t@Inject(PaginateConfigService)\n\t\tprivate _config = DEFAULT_PAGINABLE_CONFIG\n\t) {\n\t\tthis.initialize();\n\t}\n\n\tinitialize() {\n\t\tthis.config = mergeDeep(DEFAULT_PAGINABLE_CONFIG, this._config);\n\t}\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { locale as enLang } from '../assets/i18n/en';\nimport { locale as esLang } from '../assets/i18n/es';\nimport { PaginableService } from './paginable.service';\nimport { getValue } from '../utils';\n\n@Injectable()\nexport class PaginableTranslationService {\n\t#paginableSvc = inject(PaginableService);\n\n\tdefaultTranslations: Record<string, string | any> = [enLang, esLang].reduce(\n\t\t(acc, c) => {\n\t\t\tacc[c.lang] = c.data;\n\t\t\treturn acc;\n\t\t},\n\t\t{}\n\t);\n\n\ttranslations!: Record<string, string>;\n\n\tprivate translationSource = new Subject<any>();\n\n\ttranslationObserver = this.translationSource.asObservable();\n\n\tconstructor() {\n\t\tthis.initialize();\n\t}\n\n\tinitialize() {\n\t\tthis.setTranslations(\n\t\t\tthis.defaultTranslations[this.#paginableSvc.config.language] ??\n\t\t\t\tthis.defaultTranslations['en']\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves a value from a translations object based on a given key.\n\t *\n\t * @param {string} key - The `key` parameter in the `getTranslation` function is a string that represents the unique identifier or\n\t * key for the translation you want to retrieve from the translations object. This key is used to look up the corresponding\n\t * translation value in the translations object.\n\t *\n\t * @returns The value associated with the provided `key` from the `translations` object.\n\t */\n\tgetTranslation(key: string): any {\n\t\treturn getValue(this.translations, key);\n\t}\n\n\t/**\n\t * Merges the default English translations with the provided translations and updates the translation source.\n\t *\n\t * @param {Record<string, string> | any} translations - The `translations` parameter in the `setTranslation` method is a parameter that accepts\n\t * either an object of type `Record<string, string>` or any other type. If no value is provided, it defaults to an empty object\n\t * `{}`.\n\t */\n\tsetTranslations(translations: Record<string, string> | any = {}) {\n\t\tthis.translations = { ...enLang, ...translations };\n\t\tthis.translationSource.next(this.translations);\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tOnDestroy,\n\tPipe,\n\tPipeTransform,\n\tinject\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { PaginableTranslationService } from './services/paginable-translation.service';\nimport { equals, interpolateString, isDefined } from './utils';\n\n@Pipe({\n\tname: 'translate',\n\tstandalone: true,\n\tpure: false\n})\nexport class TranslatePipe implements PipeTransform, OnDestroy {\n\tprivate _ref = inject(ChangeDetectorRef);\n\tprivate _paginableTranslationSvc = inject(PaginableTranslationService);\n\n\tvalue: string = '';\n\tlastKey: string | null = null;\n\tlastParams: any[] = [];\n\n\ttranslationSubscription: Subscription | undefined;\n\n\t/**\n\t * Updates the value of a key by interpolating the translation and marking for change detection.\n\t *\n\t * @param {string} key - a string representing the translation key. This key is used to retrieve the translation value from the\n\t * translation service.\n\t * @param {Object} [interpolateParams] - an optional object that contains key-value pairs used for interpolating dynamic values\n\t * into the translated string. These values can be placeholders in the translation string that are replaced with actual values at runtime.\n\t */\n\tupdateValue(key: string, interpolateParams?: Object): void {\n\t\tconst value = interpolateString(\n\t\t\tthis._paginableTranslationSvc.getTranslation(key),\n\t\t\tinterpolateParams\n\t\t);\n\t\tthis.value = value !== undefined ? value : key;\n\t\tthis.lastKey = key;\n\t\tthis._ref.markForCheck();\n\t}\n\n\t/**\n\t * Takes a query string and optional arguments, checks if the query and arguments have changed since the last call, parses the\n\t * arguments if they are in string format, updates the value based on the query and arguments, and returns the value.\n\t *\n\t * @param {string} query - a string that represents the translation key or query that needs to be transformed.\n\t * @param {any[]} args - a rest parameter, which means it can accept any number of arguments. In this case, it is used to pass\n\t * additional parameters to the `transform` function. The `...args` syntax allows you to pass multiple arguments separated by\n\t * commas, and they will be collected into\n\t *\n\t * @returns the value of the translation for the given query and arguments.\n\t */\n\ttransform(query: string, ...args: any[]): any {\n\t\tif (!query || !query.length) {\n\t\t\treturn query;\n\t\t}\n\n\t\t// if we ask another time for the same key, return the last value\n\t\tif (equals(query, this.lastKey) && equals(args, this.lastParams)) {\n\t\t\treturn this.value;\n\t\t}\n\n\t\tlet interpolateParams: Object | undefined = undefined;\n\t\tif (isDefined(args[0]) && args.length) {\n\t\t\tif (typeof args[0] === 'string' && args[0].length) {\n\t\t\t\t// we accept objects written in the template such as {n:1}, {'n':1}, {n:'v'}\n\t\t\t\t// which is why we might need to change it to real JSON objects such as {\"n\":1} or {\"n\":\"v\"}\n\t\t\t\tlet validArgs: string = args[0]\n\t\t\t\t\t.replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, '\"$2\":')\n\t\t\t\t\t.replace(/:(\\s)?(\\')(.*?)(\\')/g, ':\"$3\"');\n\t\t\t\ttry {\n\t\t\t\t\tinterpolateParams = JSON.parse(validArgs);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (typeof args[0] === 'object' && !Array.isArray(args[0])) {\n\t\t\t\tinterpolateParams = args[0];\n\t\t\t}\n\t\t}\n\n\t\t// store the query, in case it changes\n\t\tthis.lastKey = query;\n\n\t\t// store the params, in case they change\n\t\tthis.lastParams = args;\n\n\t\t// set the value\n\t\tthis.updateValue(query, interpolateParams);\n\n\t\t// if there is a subscription to onLangChange, clean it\n\t\tthis._dispose();\n\n\t\tif (!this.translationSubscription) {\n\t\t\tthis.translationSubscription =\n\t\t\t\tthis._paginableTranslationSvc.translationObserver.subscribe(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tif (this.lastKey) {\n\t\t\t\t\t\t\tthis.lastKey = null;\n\t\t\t\t\t\t\tthis.updateValue(query, interpolateParams);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t\treturn this.value;\n\t}\n\n\t/**\n\t * Clean any existing subscription to change events\n\t */\n\tprivate _dispose(): void {\n\t\tif (typeof this.translationSubscription !== 'undefined') {\n\t\t\tthis.translationSubscription.unsubscribe();\n\t\t\tthis.translationSubscription = undefined;\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._dispose();\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'ucfirst',\n\tstandalone: true\n})\nexport class UcfirstPipe implements PipeTransform {\n\ttransform(value: string = ''): string {\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t}\n}\n","import { Component, Input, forwardRef, inject } from '@angular/core';\nimport {\n\tControlValueAccessor,\n\tFormArray,\n\tFormBuilder,\n\tFormGroup,\n\tNG_VALUE_ACCESSOR\n} from '@angular/forms';\nimport {\n\tBooleanMatchModes,\n\tDateMatchModes,\n\tMatchModes,\n\tMenuFilterOperators,\n\tMenuFilterRule,\n\tMenuFilterValue,\n\tNullMatchModes,\n\tNumberMatchModes,\n\tStringMatchModes\n} from '../../interfaces/column-filter-event';\nimport { PaginableTableHeader } from '../../interfaces/paginable-table-header';\nimport { DropdownComponent } from '../dropdown/dropdown.component';\n\n@Component({\n\tselector: 'menu-filter',\n\ttemplateUrl: './menu-filter.component.html',\n\tstyleUrls: ['./menu-filter.component.scss'],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => MenuFilterComponent),\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class MenuFilterComponent implements ControlValueAccessor {\n\t#fb = inject(FormBuilder);\n\t#parent = inject(DropdownComponent);\n\n\t#header!: PaginableTableHeader;\n\t@Input()\n\tget header(): PaginableTableHeader {\n\t\treturn this.#header;\n\t}\n\tset header(v: PaginableTableHeader) {\n\t\tthis.#header = v;\n\t\tthis.setMatchMode();\n\t\tthis.setDefaultValue();\n\t}\n\n\tform = this.#fb.group({\n\t\toperator: [MenuFilterOperators.And],\n\t\trules: this.#fb.array([])\n\t});\n\n\tget rulesFA(): FormArray {\n\t\treturn this.form.get('rules') as FormArray;\n\t}\n\n\tonChange = (value: MenuFilterValue | null) => {};\n\tonTouched = () => {};\n\n\tmatchModes: Array<MatchModes> = [];\n\tnullMatchModes = NullMatchModes;\n\n\tdefaultValue!: MenuFilterValue;\n\n\t/**\n\t * Clears existing rules, sets a default value if none is provided, adds rules based on the input value, and patches the form with the input value.\n\t * @param {MenuFilterValue} value - MenuFilterValue\n\t */\n\twriteValue(value: MenuFilterValue | null): void {\n\t\tthis.rulesFA.clear();\n\t\tif (!value) {\n\t\t\tvalue = this.defaultValue;\n\t\t}\n\t\tvalue.rules.forEach((_) => this.add());\n\t\tthis.form.patchValue(value);\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\t/**\n\t * Adds a new form group to a FormArray with default values or values provided as input.\n\t *\n\t * @param {MenuFilterRule} [value] - The `value` parameter in the `add` method is an optional parameter of type `MenuFilterRule`.\n\t * It is used to provide a value that will be patched into the form group created within the method. If a `value` is provided, it\n\t * will be used to patch the form group's\n\t */\n\tadd(value?: MenuFilterRule) {\n\t\tconst rulesFA = this.form.get('rules') as FormArray;\n\t\tconst ruleFG = this.#fb.group({\n\t\t\tvalue: [null],\n\t\t\tmatchMode: [this.matchModes[0]]\n\t\t});\n\t\tif (value) {\n\t\t\truleFG.patchValue(value as any);\n\t\t}\n\t\trulesFA.push(ruleFG);\n\t}\n\n\t/**\n\t * Clears all rules in a FormArray, adds a new rule, and applies the changes.\n\t */\n\tclear() {\n\t\tconst rulesFA = this.form.get('rules') as FormArray;\n\t\trulesFA.clear();\n\t\tthis.add();\n\t\tthis.apply();\n\t}\n\n\t/**\n\t * Filters rules based on certain conditions and then calls onChange with the filtered rules or null.\n\t */\n\tapply() {\n\t\tlet { operator, rules } = this.form.value as MenuFilterValue;\n\t\trules = rules?.filter(\n\t\t\t(rule) =>\n\t\t\t\t[NullMatchModes.IsNotNull, NullMatchModes.IsNull].includes(\n\t\t\t\t\trule.matchMode as any\n\t\t\t\t) ||\n\t\t\t\t(rule.value !== undefined && rule.value !== null)\n\t\t);\n\t\tthis.onChange(\n\t\t\trules.length\n\t\t\t\t? {\n\t\t\t\t\t\toperator,\n\t\t\t\t\t\trules\n\t\t\t\t  }\n\t\t\t\t: null\n\t\t);\n\t\tthis.#parent.closeDropdown();\n\t}\n\n\t/**\n\t * Determines the appropriate match modes based on the filter type and assigns them to the `matchModes` property.\n\t */\n\tsetMatchMode() {\n\t\tlet matchModes;\n\t\tswitch (this.header.filter?.type) {\n\t\t\tcase 'number':\n\t\t\t\tmatchModes = NumberMatchModes;\n\t\t\t\tbreak;\n\t\t\tcase 'date':\n\t\t\tcase 'date-range':\n\t\t\t\tmatchModes = DateMatchModes;\n\t\t\t\tbreak;\n\t\t\tcase 'boolean':\n\t\t\t\tmatchModes = BooleanMatchModes;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tmatchModes = StringMatchModes;\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.matchModes = { ...matchModes, ...NullMatchModes };\n\t}\n\n\t/**\n\t * Initializes a default value for a menu filter with an operator and a rule containing a null value and a match mode.\n\t */\n\tsetDefaultValue() {\n\t\tconst matchMode = Object.values(this.matchModes)[0];\n\t\tthis.defaultValue = {\n\t\t\toperator: MenuFilterOperators.And,\n\t\t\trules: [\n\t\t\t\t{\n\t\t\t\t\tvalue: null,\n\t\t\t\t\tmatchMode\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t}\n\n\t/**\n\t * Disables or enables a form control based on the selected match mode in a FormGroup.\n\t *\n\t * @param {FormGroup} group - The `group` parameter is a FormGroup object in Angular, which represents a collection of FormControl\n\t * instances. It is typically used to manage the form controls within a form.\n\t */\n\tenableOrDisableValueControl(group: FormGroup) {\n\t\tconst { matchMode } = group.value;\n\t\tif (Object.values(NullMatchModes).includes(matchMode)) {\n\t\t\tgroup.get('value')?.disable();\n\t\t} else {\n\t\t\tgroup.get('value')?.enable();\n\t\t}\n\t}\n}\n","<ng-container [formGroup]=\"form\">\n\t<li\n\t\t*ngIf=\"header.filter?.type !== 'boolean'\"\n\t\tclass=\"dropdown-item filter__operator\"\n\t>\n\t\t<select\n\t\t\tclass=\"form-select filter__operator__control\"\n\t\t\tformControlName=\"operator\"\n\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t>\n\t\t\t<option value=\"and\">{{ 'MATCH_ALL' | translate | ucfirst }}</option>\n\t\t\t<option value=\"or\">{{ 'MATCH_ANY' | translate | ucfirst }}</option>\n\t\t</select>\n\t</li>\n\t<ng-container formArrayName=\"rules\">\n\t\t<ng-container\n\t\t\t*ngFor=\"\n\t\t\t\tlet group of rulesFA?.controls;\n\t\t\t\tlet index = index;\n\t\t\t\tlet last = last\n\t\t\t\"\n\t\t\t[formGroupName]=\"index\"\n\t\t>\n\t\t\t<li class=\"dropdown-item filter__rule\">\n\t\t\t\t<div class=\"d-flex flex-column gap-2 mb-2\">\n\t\t\t\t\t<select\n\t\t\t\t\t\tclass=\"form-select filter__rule__mode\"\n\t\t\t\t\t\tformControlName=\"matchMode\"\n\t\t\t\t\t\t(change)=\"enableOrDisableValueControl(group)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t*ngFor=\"let mode of matchModes | keyvalue\"\n\t\t\t\t\t\t\t[value]=\"mode.key\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t'MATCH_MODES.' + mode.key\n\t\t\t\t\t\t\t\t\t| uppercase\n\t\t\t\t\t\t\t\t\t| translate\n\t\t\t\t\t\t\t\t\t| ucfirst\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t\t<div\n\t\t\t\t\t\t[ngSwitch]=\"header.filter?.type\"\n\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t![\n\t\t\t\t\t\t\t\tnullMatchModes.IsNull,\n\t\t\t\t\t\t\t\tnullMatchModes.IsNotNull\n\t\t\t\t\t\t\t].includes(group.get('matchMode').value)\n\t\t\t\t\t\t\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div *ngSwitchCase=\"'number'\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tclass=\"form-control filter__rule__value\"\n\t\t\t\t\t\t\t\tformControlName=\"value\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngSwitchCase=\"'number-range'\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tclass=\"form-control filter__rule__value\"\n\t\t\t\t\t\t\t\tformControlName=\"value\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngSwitchCase=\"'date'\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\tclass=\"form-control filter__rule__value\"\n\t\t\t\t\t\t\t\tformControlName=\"value\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div *ngSwitchCase=\"'date-range'\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t\t\tclass=\"form-control filter__rule__value\"\n\t\t\t\t\t\t\t\tformControlName=\"value\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<ng-container *ngSwitchCase=\"'boolean'\">\n\t\t\t\t\t\t\t<select\n\t\t\t\t\t\t\t\tclass=\"form-select form-control filter__rule__value\"\n\t\t\t\t\t\t\t\tformControlName=\"value\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<option [ngValue]=\"null\">\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\theader.filter.placeholder ??\n\t\t\t\t\t\t\t\t\t\t\t'SELECT_ONE'\n\t\t\t\t\t\t\t\t\t\t\t| translate\n\t\t\t\t\t\t\t\t\t\t\t| ucfirst\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t<option [ngValue]=\"true\">\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\theader.filter.trueLabel ??\n\t\t\t\t\t\t\t\t\t\t\t('TRUE' | translate | ucfirst)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t<option [ngValue]=\"false\">\n\t\t\t\t\t\t\t\t\t{{\n\t\t\t\t\t\t\t\t\t\theader.filter.falseLabel ??\n\t\t\t\t\t\t\t\t\t\t\t('FALSE' | translate | ucfirst)\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<div *ngSwitchDefault>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"form-control filter__rule__value\"\n\t\t\t\t\t\t\t\tformControlName=\"value\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\t*ngIf=\"rulesFA?.controls.length > 1\"\n\t\t\t\t\tclass=\"d-flex justify-content-end\"\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"btn btn-sm text-danger text-center w-100\"\n\t\t\t\t\t\t(click)=\"rulesFA.removeAt(index)\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<i class=\"fa-solid fa-trash me-2 mr-2\"></i\n\t\t\t\t\t\t>{{ 'REMOVE_RULE' | translate | ucfirst }}\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<li\n\t\t\t\t*ngIf=\"rulesFA?.controls.length > 1\"\n\t\t\t\tclass=\"filter__rule__divider\"\n\t\t\t>\n\t\t\t\t<hr class=\"dropdown-divider\" />\n\t\t\t</li>\n\t\t</ng-container>\n\t</ng-container>\n\t<li\n\t\tclass=\"dropdown-item filter__add-rule\"\n\t\t*ngIf=\"header.filter?.type !== 'boolean'\"\n\t>\n\t\t<button\n\t\t\tclass=\"btn btn-sm text-primary text-center w-100\"\n\t\t\t(click)=\"add(); $event.stopPropagation()\"\n\t\t>\n\t\t\t<i class=\"fa-solid fa-plus me-2 mr-2\"></i\n\t\t\t>{{ 'ADD_RULE' | translate | ucfirst }}\n\t\t</button>\n\t</li>\n\t<li class=\"dropdown-item filter__actions\">\n\t\t<div class=\"d-flex justify-content-between align-items-center gap-3\">\n\t\t\t<button\n\t\t\t\tclass=\"btn btn-outline-danger filter__actions__clear\"\n\t\t\t\t(click)=\"clear()\"\n\t\t\t>\n\t\t\t\t{{ 'CLEAR' | translate | ucfirst }}\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\tclass=\"btn btn-primary filter__actions__apply\"\n\t\t\t\t(click)=\"apply()\"\n\t\t\t>\n\t\t\t\t{{ 'APPLY' | translate | ucfirst }}\n\t\t\t</button>\n\t\t</div>\n\t</li>\n</ng-container>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class ModalService {\n\tprivate modals: any[] = [];\n\n\tadd(modal: any) {\n\t\t// add modal to array of active modals\n\t\tthis.modals.push(modal);\n\t}\n\n\tremove(id: string) {\n\t\t// remove modal from array of active modals\n\t\tthis.modals = this.modals.filter(x => x.id !== id);\n\t}\n\n\topen(id: string) {\n\t\t// open modal specified by id\n\t\tconst modal = this.modals.find(x => x.id === id);\n\t\tmodal.open();\n\t}\n\n\tclose(id: string) {\n\t\t// close modal specified by id\n\t\tconst modal = this.modals.find(x => x.id === id);\n\t\tmodal.close();\n\t}\n}\n","import {\n\tComponent,\n\tElementRef,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tViewEncapsulation\n} from '@angular/core';\nimport { ModalService } from '../../service/modal.service';\n\n@Component({\n\tselector: 'jw-modal',\n\ttemplateUrl: './modal.component.html',\n\tstyleUrls: ['./modal.component.scss'],\n\tencapsulation: ViewEncapsulation.None\n})\nexport class ModalComponent implements OnInit, OnDestroy {\n\t@Input() id!: string;\n\t@Input() title?: string;\n\t@Input() buttons: any[] = [];\n\tprivate element: any = this._el.nativeElement;\n\n\tconstructor(private _modalSvc: ModalService, private _el: ElementRef) {}\n\n\tngOnInit(): void {\n\t\t// ensure id attribute exists\n\t\tif (!this.id) {\n\t\t\tconsole.error('modal must have an id');\n\t\t\treturn;\n\t\t}\n\n\t\t// move element to bottom of page (just before </body>) so it can be displayed above everything else\n\t\tdocument.body.appendChild(this.element);\n\n\t\t// close modal on background click\n\t\tthis.element.addEventListener('click', (element) => {\n\t\t\tif (element.target.className === 'jw-modal') {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t});\n\n\t\t// add self (this modal instance) to the modal service so it's accessible from controllers\n\t\tthis._modalSvc.add(this);\n\t}\n\n\t// remove self from modal service when component is destroyed\n\tngOnDestroy(): void {\n\t\tthis._modalSvc.remove(this.id);\n\t\tthis.element.remove();\n\t}\n\n\t// open modal\n\topen(): void {\n\t\tthis.element.style.display = 'block';\n\t\tdocument.body.classList.add('jw-modal-open');\n\t}\n\n\t// close modal\n\tclose(): void {\n\t\tthis.element.style.display = 'none';\n\t\tdocument.body.classList.remove('jw-modal-open');\n\t}\n}\n","<div class=\"jw-modal modal-dialog modal-dialog-scrollable modal-lg\">\n\t<div class=\"modal-content\">\n\t\t<div class=\"modal-header\">\n\t\t\t<h5 class=\"modal-title\">{{ title }}</h5>\n\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\n\t\t\t\t(click)=\"close()\"></button>\n\t\t</div>\n\t\t<div class=\"modal-body\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t\t<div class=\"modal-footer\" *ngIf=\"buttons?.length\">\n\t\t\t<button type=\"button\" class=\"btn\" *ngFor=\"let button of buttons\" (click)=\"button.handler()\"\n\t\t\t\t[ngClass]=\"button.class\">{{ button.title | translate | ucfirst }}</button>\n\t\t</div>\n\t</div>\n</div>\n<div class=\"jw-modal-background\"></div>\n","/**\n * Checks if any Font Awesome base class is present in the input string.\n *\n * @param {string} input - The `containsFontAwesomeClass` function takes a string input and checks if it contains any of the Font\n * Awesome base classes such as 'fa-solid', 'fa-regular', 'fa-light', 'fa-duotone', 'fa-thin', or 'fa-brands'.\n *\n * @returns A boolean value - `true` if any of the Font Awesome base classes are\n * present in the input string, and `false` otherwise.\n */\nexport function containsFontAwesomeClass(input: string): boolean {\n\t// Define an array of Font Awesome base classes to check for\n\tconst faClasses = [\n\t\t'fa-solid',\n\t\t'fa-regular',\n\t\t'fa-light',\n\t\t'fa-duotone',\n\t\t'fa-thin',\n\t\t'fa-brands'\n\t];\n\n\t// Use a regular expression to check if any of the Font Awesome classes are present in the input string\n\tconst faClassRegex = new RegExp(`\\\\b(${faClasses.join('|')})\\\\b`, 'i');\n\n\t// Return true if any class matches, false otherwise\n\treturn faClassRegex.test(input);\n}\n\n/**\n * Checks if a string contains the 'bi' class using a regular expression in TypeScript.\n *\n * @param {string} input - The `input` parameter in the `containsBootstrapIconsClass` function is a string that represents a CSS\n * class or a list of CSS classes. The function checks if the input string contains the Bootstrap Icons class 'bi'.\n *\n * @returns returns a boolean value - `true` if the input string contains the 'bi'\n * class, and `false` otherwise.\n */\nexport function containsBootstrapIconsClass(input: string): boolean {\n\t// Define a regular expression pattern to match 'bi' class\n\tconst biClassRegex = /\\bbi\\b/;\n\n\t// Return true if the class matches, false otherwise\n\treturn biClassRegex.test(input);\n}\n","/**\n * @file icon.component.ts\n * @description Angular component for rendering icons with support for different icon libraries.\n */\n\nimport { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Icon } from '../../interfaces/paginable-table-header';\nimport { containsFontAwesomeClass } from '../../utils/icons';\n\n/**\n * Defines the supported icon types.\n * @typedef {'font-awesome' | 'material' | 'bootstrap'} IconType\n */\nexport type IconType = 'font-awesome' | 'material' | 'bootstrap';\n\n/**\n * @component HubIconComponent\n * @selector ng-hub-ui-icon\n * @description A versatile icon component that supports multiple icon libraries.\n *\n * @example\n * <ng-hub-ui-icon [config]=\"iconConfig\"></ng-hub-ui-icon>\n */\n@Component({\n\tselector: 'ng-hub-ui-icon',\n\tstandalone: true,\n\timports: [NgIf, NgClass],\n\ttemplateUrl: './icon.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class HubIconComponent implements Icon {\n\t/**\n\t * @input config\n\t * @description Sets the icon configuration. Can be a string or an Icon object.\n\t * @type {string | Icon}\n\t */\n\t@Input({ required: true })\n\tset config(value: string | Icon) {\n\t\tif (!value) {\n\t\t\tvalue = '';\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tthis.value = value;\n\t\t} else {\n\t\t\tthis.type = value.type ?? null;\n\t\t\tthis.variant = value.variant ?? '';\n\t\t\tthis.value = value.value ?? null;\n\t\t}\n\t}\n\n\t/**\n\t * @input type\n\t * @description The type of icon (font-awesome, material, or bootstrap).\n\t * @type {IconType}\n\t */\n\ttype: IconType;\n\n\t/**\n\t * @input value\n\t * @description The icon value or class name.\n\t * @type {string}\n\t */\n\tvalue: string;\n\n\t/**\n\t * @input variant\n\t * @description The variant of the icon (if applicable).\n\t * @type {string}\n\t */\n\tvariant: string;\n\n\t/**\n\t * @getter classlist\n\t * @description Computes the CSS classes for the icon based on its type and value.\n\t * @returns {string | null} The computed CSS class string or null if no value is set.\n\t */\n\tget classlist(): string | null {\n\t\tif (!this.value) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!this.type) {\n\t\t\treturn this.value;\n\t\t}\n\n\t\tconst classlist: Array<string> = [];\n\t\tif (['font-awesome', 'bootstrap'].includes(this.type)) {\n\t\t\tif (Array.isArray(this.value)) {\n\t\t\t\tclasslist.push(...this.value);\n\t\t\t} else {\n\t\t\t\tclasslist.push(...this.value.split(' '));\n\t\t\t}\n\t\t}\n\n\t\tswitch (this.type) {\n\t\t\tcase 'font-awesome':\n\t\t\t\tif (!containsFontAwesomeClass(classlist.join(' '))) {\n\t\t\t\t\tclasslist.push('fa');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'bootstrap':\n\t\t\t\tif (!containsFontAwesomeClass(classlist.join(' '))) {\n\t\t\t\t\tclasslist.push('bs');\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'material':\n\t\t\t\tclasslist.push('material-symbols-outlined');\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn classlist.join(' ');\n\t}\n\n\t/**\n\t * @getter content\n\t * @description Gets the content for material icons.\n\t * @returns {string | null} The icon content for material icons, or null for other types.\n\t */\n\tget content(): string | null {\n\t\treturn ['material'].includes(this.type) ? this.value : null;\n\t}\n}\n","<i *ngIf=\"value\" [ngClass]=\"classlist\">\n\t{{ content }}\n</i>\n","import {\n\tComponent,\n\tElementRef,\n\tHostListener,\n\tInput,\n\tinject\n} from '@angular/core';\nimport { PaginableTableDropdown } from '../../interfaces/paginable-table-dropdown';\n\n@Component({\n\tselector: 'paginable-table-dropdown',\n\ttemplateUrl: './paginable-table-dropdown.component.html',\n\tstyleUrls: ['./paginable-table-dropdown.component.scss']\n})\nexport class PaginableTableDropdownComponent<T = any> {\n\tprivate _elementRef = inject(ElementRef);\n\n\t@Input() item: T | undefined;\n\n\tprivate _options: PaginableTableDropdown = { buttons: [] };\n\t@Input()\n\tget options(): PaginableTableDropdown {\n\t\treturn this._options;\n\t}\n\tset options(v: PaginableTableDropdown) {\n\t\tthis._options = {\n\t\t\tposition: 'end',\n\t\t\tfill: 'clear',\n\t\t\tcolor: 'muted',\n\t\t\t...v\n\t\t};\n\t\tif (this._options.fill === 'clear') {\n\t\t\tthis.buttonClass = 'btn text-' + (this._options.color ?? 'muted');\n\t\t} else {\n\t\t\tthis.buttonClass =\n\t\t\t\t'btn ' +\n\t\t\t\t['btn', this._options.fill, this._options.color]\n\t\t\t\t\t.filter((o) => o)\n\t\t\t\t\t.join('-');\n\t\t}\n\t}\n\n\t@Input() disabled: boolean = false;\n\n\tbuttonClass: string | null = null;\n\tshown: boolean = false;\n\n\t/**\n\t * Checks if the clicked element is outside the component's native element and if the component is currently shown, and if so,\n\t * it closes the component.\n\t *\n\t * @param event - Represents the event that triggered the clickOut function. It contains information about the event, such as\n\t * the target element that was clicked.\n\t */\n\t@HostListener('document:click', ['$event'])\n\tclickOut(event) {\n\t\tif (\n\t\t\t!this._elementRef.nativeElement.contains(event.target) &&\n\t\t\tthis.shown\n\t\t) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\t/**\n\t * Sets the \"shown\" property to false.\n\t */\n\tclose() {\n\t\tthis.shown = false;\n\t}\n}\n","<div class=\"btn-group\" [class.show]=\"shown\">\n\t<button\n\t\tclass=\"px-2 dropdown-toggle\"\n\t\ttype=\"button\"\n\t\t[ngClass]=\"buttonClass\"\n\t\t[attr.title]=\"options.tooltip\"\n\t\tdata-toggle=\"dropdown\"\n\t\t[attr.aria-expanded]=\"shown\"\n\t\t(click)=\"shown = !shown\"\n\t\t[disabled]=\"disabled\"\n\t>\n\t\t<div class=\"d-flex flex-nowrap align-items-center gap-1\">\n\t\t\t<i [ngClass]=\"options.icon || 'fa fa-ellipsis-v'\"></i>\n\t\t\t<ng-container *ngIf=\"options.title\">{{\n\t\t\t\toptions.title\n\t\t\t}}</ng-container>\n\t\t</div>\n\t</button>\n\t<div\n\t\tclass=\"dropdown-menu dropdown-menu-{{ options.position }}\"\n\t\t[class.show]=\"shown\"\n\t\t[ngStyle]=\"{\n\t\t\tright:\n\t\t\t\toptions.position == 'end' || options.position === 'right'\n\t\t\t\t\t? 0\n\t\t\t\t\t: 'initial'\n\t\t}\"\n\t>\n\t\t<ng-container *ngFor=\"let dropdownItem of options.buttons\">\n\t\t\t<button\n\t\t\t\tclass=\"dropdown-item\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t[attr.title]=\"dropdownItem.tooltip\"\n\t\t\t\t*ngIf=\"!dropdownItem.hidden\"\n\t\t\t\t[ngClass]=\"\n\t\t\t\t\tdropdownItem.color\n\t\t\t\t\t\t? 'text-' + dropdownItem.color\n\t\t\t\t\t\t: 'text-dark'\n\t\t\t\t\"\n\t\t\t\t(click)=\"\n\t\t\t\t\titem && dropdownItem.handler && dropdownItem.handler(item)\n\t\t\t\t\"\n\t\t\t>\n\t\t\t\t<div class=\"d-flex align-items-center gap-2\">\n\t\t\t\t\t<ng-hub-ui-icon\n\t\t\t\t\t\t[config]=\"dropdownItem.icon\"\n\t\t\t\t\t></ng-hub-ui-icon>\n\t\t\t\t\t<ng-container *ngIf=\"dropdownItem.title\">\n\t\t\t\t\t\t{{ dropdownItem.title }}\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t</ng-container>\n\t</div>\n</div>\n","import { Component, forwardRef, Input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n\tselector: 'paginable-table-range-input',\n\ttemplateUrl: './paginable-table-range-input.component.html',\n\tstyleUrls: ['./paginable-table-range-input.component.scss'],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => PaginableTableRangeInputComponent),\n\t\t\tmulti: true\n\t\t}\n\t]\n})\nexport class PaginableTableRangeInputComponent implements ControlValueAccessor {\n\t@Input() disabled = false;\n\t@Input() type: 'number' | 'date' = 'number';\n\n\tonChange = (value: [string | number, string | number]) => {};\n\n\tonTouched = () => {};\n\n\tvalue: [string | number | null, string | number | null] = [null, null];\n\n\twriteValue(value: [string | number, string | number]): void {\n\t\tif (Array.isArray(value) && value.length === 2) {\n\t\t\tthis.value = value;\n\t\t} else {\n\t\t\tthis.value = [null, null];\n\t\t}\n\t}\n\n\tregisterOnChange(\n\t\tfn: (value: [string | number, string | number]) => void\n\t): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n}\n","<div class=\"form-control d-flex flex-column\">\n\t<div class=\"d-flex align-items-center justify-content-between\">\n\t\t<label *ngIf=\"type == 'date'\" class=\"text-muted\"\n\t\t\t>{{ 'FROM' | translate | ucfirst }}:</label\n\t\t><input\n\t\t\t[type]=\"type\"\n\t\t\t[(ngModel)]=\"value[0]\"\n\t\t\t[placeholder]=\"'FROM' | translate | ucfirst\"\n\t\t\t(change)=\"onChange($any(value))\"\n\t\t/>\n\t</div>\n\t<div class=\"d-flex align-items-center justify-content-between\">\n\t\t<label *ngIf=\"type == 'date'\" class=\"text-muted\"\n\t\t\t>{{ 'TO' | translate | ucfirst }}:</label\n\t\t><input\n\t\t\t[type]=\"type\"\n\t\t\t[(ngModel)]=\"value[1]\"\n\t\t\t[placeholder]=\"'TO' | translate | ucfirst\"\n\t\t\t(change)=\"onChange($any(value))\"\n\t\t/>\n\t</div>\n</div>\n","export const BREAKPOINTS = ['xs', 'sm', 'md', 'lg', 'xl'];","import { Directive, TemplateRef, Input } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableCell]'\n})\nexport class PaginableTableCellDirective {\n\n\t@Input() header!: string;\n\n\tconstructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableError]'\n})\nexport class PaginableTableErrorDirective {\n\n\tconstructor(\n\t\tpublic template: TemplateRef<any>\n\t) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableExpandingRow]'\n})\nexport class PaginableTableExpandingRowDirective {\n\tconstructor(public templateRef: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef, Input } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableFilter]'\n})\nexport class PaginableTableFilterDirective {\n\n\t@Input() header!: string;\n\n\tconstructor(public template: TemplateRef<any>) { }\n\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableHeader]'\n})\nexport class PaginableTableHeaderDirective {\n\t@Input() header!: string;\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableLoading]'\n})\nexport class PaginableTableLoadingDirective {\n\n\tconstructor(\n\t\tpublic template: TemplateRef<any>\n\t) { }\n\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableNotFound]',\n\tstandalone: true\n})\nexport class PaginableTableNotFoundDirective {\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[paginableTableRow]'\n})\nexport class PaginableTableRowDirective {\n\n\tconstructor(public template: TemplateRef<any>) { }\n\n}\n","import { Injectable } from '@angular/core';\nimport { PaginableTablePagination } from '../interfaces/paginable-table-pagination';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class PaginationService {\n\tgenerate(items: any[], params: any): any {\n\t\tlet filtered: Array<any> = [];\n\t\tif (items && items.length) {\n\t\t\tfiltered = items.concat();\n\t\t\tif (params.searchText && params.searchKeys) {\n\t\t\t\tconst searchText = params.searchText;\n\t\t\t\tif (searchText && searchText.trim() !== '') {\n\t\t\t\t\tfiltered = filtered.filter((item) => {\n\t\t\t\t\t\treturn params.searchKeys.some(\n\t\t\t\t\t\t\t(o) =>\n\t\t\t\t\t\t\t\tthis.get(item, o)\n\t\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t\t.indexOf(searchText) > -1\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (params.ordination) {\n\t\t\t\tfiltered = this.orderBy(\n\t\t\t\t\tfiltered,\n\t\t\t\t\tparams.ordination.property,\n\t\t\t\t\tparams.ordination.direction\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst page = params.page || 1;\n\n\t\t// Si la paginación viene del servidor y no está establecida, establecer a true\n\t\tif (params.paginate === undefined) {\n\t\t\tparams.paginate = true;\n\t\t}\n\t\tconst perPage = params.paginate\n\t\t\t? params.perPage || 20\n\t\t\t: filtered.length;\n\n\t\tconst pagination: PaginableTablePagination = {\n\t\t\tcurrentPage: page,\n\t\t\tlastPage: Math.ceil(filtered.length / perPage),\n\t\t\tperPage,\n\t\t\tfrom: (page - 1) * perPage,\n\t\t\tto: page * perPage,\n\t\t\ttotal: filtered.length,\n\t\t\tdata: filtered.slice((page - 1) * perPage, page * perPage)\n\t\t};\n\n\t\treturn pagination;\n\t}\n\n\t/**\n\t * Creates an array of elements, sorted in ascending or descending order by the results of running each element\n\t * in a collection thru each iteratee. This method performs a stable sort, that is, it preserves the original s\n\t * ort order of equal elements. The iteratees are invoked with one argument: (value).\n\t *\n\t * @param collection\n\t * @param iteratee\n\t * @param direction\n\t */\n\torderBy(\n\t\tcollection: any[],\n\t\titeratee: string,\n\t\tdirection: string = 'ASC'\n\t): any[] {\n\t\treturn collection.sort((b, a) => {\n\t\t\tconst aSort = this.get(a, iteratee);\n\t\t\tconst bSort = this.get(b, iteratee);\n\t\t\tif (direction === 'DESC') {\n\t\t\t\treturn aSort > bSort ? 1 : bSort > aSort ? -1 : 0;\n\t\t\t} else {\n\t\t\t\treturn aSort < bSort ? 1 : bSort < aSort ? -1 : 0;\n\t\t\t}\n\t\t});\n\t}\n\n\tget(object: any, path: string | any[]) {\n\t\tif (path.constructor.name === 'String') {\n\t\t\tpath = (path as string).split('.');\n\t\t}\n\t\treturn (path as any[]).reduce(\n\t\t\t(o, k) => (o && o[k] !== 'undefined' ? o[k] : undefined),\n\t\t\tobject\n\t\t);\n\t}\n}\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { PaginableTablePagination } from '../../interfaces/paginable-table-pagination';\nimport { PaginableService } from '../../services/paginable.service';\n\n@Component({\n\tselector: 'paginable-table-paginator',\n\ttemplateUrl: './paginator.component.html',\n\tstyleUrls: ['./paginator.component.scss'],\n\tstandalone: true,\n\timports: [NgIf]\n})\nexport class PaginatorComponent {\n\t#configSvc = inject(PaginableService);\n\ttableHeader: any;\n\n\t@Input({ required: true }) pagination: PaginableTablePagination | null;\n\t@Output() pageClick = new EventEmitter<number>();\n\n\tmapping: any = this.#configSvc.mapping;\n\n\tget currentPage(): number {\n\t\treturn (\n\t\t\tthis.pagination?.[this.mapping.currentPage] ||\n\t\t\tthis.pagination?.currentPage\n\t\t);\n\t}\n\n\tget lastPage(): number {\n\t\treturn (\n\t\t\tthis.pagination?.[this.mapping.lastPage] ||\n\t\t\tthis.pagination?.lastPage\n\t\t);\n\t}\n\n\t/**\n\t * Triggers an event with the page number when a page is clicked.\n\t *\n\t * @param {number} page - Takes a `page` parameter, which is a number representing the page that was clicked. This function emits\n\t * the `page` value using a `Subject` called `onPageClick`.\n\t */\n\tonPageClick(page: number) {\n\t\tthis.pageClick.next(page);\n\t}\n\n\t// scrollToTableHeader() {\n\t// \tdebugger;\n\t// \tif (this.tableHeader && this.tableHeader.nativeElement) {\n\t// \t\tthis.tableHeader.nativeElement.scrollIntoView({\n\t// \t\t\tbehavior: 'smooth',\n\t// \t\t\tblock: 'start'\n\t// \t\t});\n\t// \t}\n\t// }\n}\n","<nav class=\"pager\" aria-label=\"Page navigation\">\n\t<ul class=\"pager pagination pager__list\">\n\t\t<li\n\t\t\tclass=\"page-item pager__item\"\n\t\t\t[class.pager__item--disabled]=\"currentPage === 1\"\n\t\t>\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\t(click)=\"onPageClick(1)\"\n\t\t\t>\n\t\t\t\t<i class=\"pager__icon fa fa-angle-double-left\"></i>\n\t\t\t</a>\n\t\t</li>\n\t\t<li\n\t\t\tclass=\"page-item pager__item\"\n\t\t\t[class.pager__item--disabled]=\"currentPage <= 1\"\n\t\t>\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\taria-label=\"Previous\"\n\t\t\t\t(click)=\"onPageClick(currentPage - 1)\"\n\t\t\t>\n\t\t\t\t<span class=\"pager__icon-wrapper\" aria-hidden=\"true\">\n\t\t\t\t\t<i class=\"pager__icon fa fa-angle-left\"></i>\n\t\t\t\t</span>\n\t\t\t</a>\n\t\t</li>\n\t\t<li\n\t\t\tclass=\"page-item pager__item pager__item--disabled disabled\"\n\t\t\t*ngIf=\"currentPage - 1 > 1\"\n\t\t>\n\t\t\t<a role=\"button\" class=\"page-link pager__link\" href=\"javascript:{}\"\n\t\t\t\t>...</a\n\t\t\t>\n\t\t</li>\n\t\t<li class=\"page-item pager__item\">\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\t*ngIf=\"currentPage - 1 >= 1\"\n\t\t\t\t(click)=\"onPageClick(currentPage - 1)\"\n\t\t\t\t>{{ currentPage - 1 }}</a\n\t\t\t>\n\t\t</li>\n\t\t<li class=\"page-item pager__item active pager__item--active\">\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\t>{{ currentPage }}</a\n\t\t\t>\n\t\t</li>\n\t\t<li class=\"page-item pager__item\">\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\t*ngIf=\"currentPage + 1 <= lastPage\"\n\t\t\t\t(click)=\"onPageClick(currentPage + 1)\"\n\t\t\t\t>{{ currentPage + 1 }}</a\n\t\t\t>\n\t\t</li>\n\t\t<li\n\t\t\tclass=\"page-item pager__item disabled pager__item--disabled\"\n\t\t\t*ngIf=\"currentPage + 1 < lastPage\"\n\t\t>\n\t\t\t<a role=\"button\" class=\"page-link pager__link\" href=\"javascript:{}\"\n\t\t\t\t>...</a\n\t\t\t>\n\t\t</li>\n\t\t<li\n\t\t\tclass=\"page-item pager__item\"\n\t\t\t[class.pager__item--disabled]=\"currentPage >= lastPage\"\n\t\t>\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\taria-label=\"Next\"\n\t\t\t\t(click)=\"onPageClick(currentPage + 1)\"\n\t\t\t>\n\t\t\t\t<span class=\"pager__icon-wrapper\" aria-hidden=\"true\">\n\t\t\t\t\t<i class=\"pager__icon fa fa-angle-right\"></i>\n\t\t\t\t</span>\n\t\t\t</a>\n\t\t</li>\n\t\t<li\n\t\t\tclass=\"page-item pager__item\"\n\t\t\t[class.pager__item--disabled]=\"currentPage === lastPage\"\n\t\t>\n\t\t\t<a\n\t\t\t\trole=\"button\"\n\t\t\t\tclass=\"page-link pager__link\"\n\t\t\t\thref=\"javascript:{}\"\n\t\t\t\t(click)=\"onPageClick(lastPage)\"\n\t\t\t>\n\t\t\t\t<i class=\"pager__icon fa fa-angle-double-right\"></i>\n\t\t\t</a>\n\t\t</li>\n\t</ul>\n</nav>\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Output } from '@angular/core';\nimport { distinctUntilChanged, map, switchMap, takeUntil, tap, } from 'rxjs/operators';\nimport { fromEvent } from 'rxjs';\n\n@Directive({\n\tselector: '[resizable]',\n})\nexport class ResizableDirective {\n\n\t@Output()\n\treadonly resizable = fromEvent<MouseEvent>(\n\t\tthis.elementRef.nativeElement,\n\t\t'mousedown'\n\t).pipe(\n\t\ttap((e) => e.preventDefault()),\n\t\tswitchMap(() => {\n\t\t\tconst { width, right } = this.elementRef.nativeElement\n\t\t\t\t.closest('th')!\n\t\t\t\t.getBoundingClientRect();\n\t\t\treturn fromEvent<MouseEvent>(this.documentRef, 'mousemove').pipe(\n\t\t\t\tmap(({ clientX }) => width + clientX - right),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(fromEvent(this.documentRef, 'mouseup'))\n\t\t\t);\n\t\t})\n\t);\n\n\tconstructor(\n\t\t@Inject(DOCUMENT) private readonly documentRef: any/* Document */,\n\t\t@Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>\n\t) { }\n}","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n\tselector: 'th[resizable]',\n\ttemplateUrl: './resizable.component.html',\n\tstyleUrls: ['./resizable.component.scss']\n})\nexport class ResizableComponent {\n\t@HostBinding('style.width.px')\n\twidth: number | null = null;\n\n\tonResize(width: any) {\n\t\tthis.width = width;\n\t}\n}\n","<div class=\"wrapper\">\n\t<div class=\"content\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"bar\" (resizable)=\"onResize($event)\"></div>\n</div>\n","import {\n\tChangeDetectorRef,\n\tinject,\n\tOnDestroy,\n\tPipe,\n\tPipeTransform\n} from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\n/**\n * A standalone pipe that unwraps the value of an observable or returns the value directly if it's not an observable.\n *\n * @description\n * The `UnwrapAsyncPipe` is used to unwrap the value emitted by an observable or return the value directly if it's not an observable.\n * It subscribes to the observable and returns the emitted value. If the input is not an observable, it simply returns the value.\n *\n * @usageNotes\n * ```html\n * <div>{{ observableOrValue | unwrapAsync }}</div>\n * ```\n *\n * @publicApi\n */\n@Pipe({\n\tname: 'unwrapAsync',\n\tstandalone: true,\n\tpure: false\n})\nexport class UnwrapAsyncPipe<T = any> implements PipeTransform, OnDestroy {\n\t#cdr = inject(ChangeDetectorRef);\n\n\t/**\n\t * The unwrapped value of the observable or the direct value.\n\t */\n\tvalue: T | null = null;\n\n\t/**\n\t * The subscription to the observable.\n\t */\n\tsubscription: Subscription | null = null;\n\n\t/**\n\t * Performs cleanup tasks when the pipe is destroyed.\n\t */\n\tngOnDestroy(): void {\n\t\tthis.unsubscribe();\n\t}\n\n\t/**\n\t * Transforms the input value.\n\t *\n\t * @param value The input value to transform. It can be an observable or a direct value.\n\t * @returns The unwrapped value of the observable or the direct value.\n\t */\n\ttransform(value: T | Observable<T>): T | null {\n\t\tif (value instanceof Observable) {\n\t\t\tthis.unsubscribe();\n\t\t\tthis.subscription = value.subscribe((result) => {\n\t\t\t\tthis.value = result;\n\t\t\t\tthis.#cdr.markForCheck();\n\t\t\t});\n\t\t} else {\n\t\t\tthis.value = value;\n\t\t}\n\t\treturn this.value;\n\t}\n\n\t/**\n\t * Unsubscribes from the current subscription.\n\t */\n\tprivate unsubscribe(): void {\n\t\tif (this.subscription) {\n\t\t\tthis.subscription.unsubscribe();\n\t\t\tthis.subscription = null;\n\t\t}\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isObservable } from 'rxjs';\n\n@Pipe({\n\tname: 'isObservable'\n})\nexport class IsObservablePipe implements PipeTransform {\n\n\ttransform(value: unknown): boolean {\n\t\treturn isObservable(value);\n\t}\n\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n\tComponent,\n\tContentChild,\n\tContentChildren,\n\tEventEmitter,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tQueryList,\n\tTemplateRef,\n\tViewChildren,\n\tforwardRef,\n\tinject\n} from '@angular/core';\nimport {\n\tFormControl,\n\tFormGroup,\n\tNG_VALUE_ACCESSOR,\n\tUntypedFormBuilder,\n\tUntypedFormControl\n} from '@angular/forms';\nimport { get } from 'lodash';\nimport {\n\tObservable,\n\tSubject,\n\tSubscription,\n\tisObservable,\n\tmerge,\n\tof\n} from 'rxjs';\nimport { catchError, debounceTime, map, startWith, tap } from 'rxjs/operators';\nimport { BREAKPOINTS } from '../../constants/breakpoints';\nimport { PaginableTableCellDirective } from '../../directives/paginable-table-cell.directive';\nimport { PaginableTableErrorDirective } from '../../directives/paginable-table-error.directive';\nimport { PaginableTableExpandingRowDirective } from '../../directives/paginable-table-expanding-row.directive';\nimport { PaginableTableFilterDirective } from '../../directives/paginable-table-filter.directive';\nimport { PaginableTableHeaderDirective } from '../../directives/paginable-table-header.directive';\nimport { PaginableTableLoadingDirective } from '../../directives/paginable-table-loading.directive';\nimport { PaginableTableNotFoundDirective } from '../../directives/paginable-table-not-found.directive';\nimport { PaginableTableRowDirective } from '../../directives/paginable-table-row.directive';\nimport { FilterChangeEvent } from '../../interfaces/filter-change-event';\nimport { ItemClickEvent } from '../../interfaces/item-click-event';\nimport { PaginableTableButton } from '../../interfaces/paginable-table-button';\nimport { PaginableTableDropdown } from '../../interfaces/paginable-table-dropdown';\nimport { PaginableTableHeader } from '../../interfaces/paginable-table-header';\nimport { PaginableTableItem } from '../../interfaces/paginable-table-item';\nimport { PaginableTableOptions } from '../../interfaces/paginable-table-options';\nimport { PaginableTableOrdination } from '../../interfaces/paginable-table-ordination';\nimport { PaginableTablePagination } from '../../interfaces/paginable-table-pagination';\nimport { PaginationParamsChangeEvent } from '../../interfaces/params-change-event';\nimport { View } from '../../interfaces/view';\nimport { PaginableService } from '../../services/paginable.service';\nimport { PaginationService } from '../../services/pagination.service';\nimport { generateUniqueId } from '../../utils';\nimport { DropdownComponent } from '../dropdown/dropdown.component';\nimport { PaginatorComponent } from '../paginator/paginator.component';\n\n@Component({\n\tselector: 'paginable-table',\n\ttemplateUrl: './paginable-table.component.html',\n\tstyleUrls: ['./paginable-table.component.scss'],\n\tanimations: [\n\t\ttrigger('fadeInOut', [\n\t\t\ttransition(':enter', [\n\t\t\t\tstyle({ opacity: 0 }),\n\t\t\t\tanimate('256ms 256ms', style({ opacity: 1, height: 'auto' }))\n\t\t\t]),\n\t\t\ttransition(':leave', [\n\t\t\t\tanimate('256ms ease-out', style({ opacity: 0, height: '0' }))\n\t\t\t])\n\t\t])\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => PaginableTableComponent),\n\t\t\tmulti: true\n\t\t}\n\t],\n\thost: {\n\t\tclass: 'd-block paginable-table'\n\t}\n})\nexport class PaginableTableComponent<T = any> implements OnInit, OnDestroy {\n\t#fb = inject(UntypedFormBuilder);\n\tprivate _configSvc = inject(PaginableService);\n\tprivate _paginationSvc = inject(PaginationService);\n\n\t@Input() id!: string;\n\tprivate _headers?: PaginableTableHeader[];\n\n\t@Input() showSearchInput: boolean = true;\n\t@Input() options: PaginableTableOptions = {\n\t\tcursor: 'default',\n\t\thoverableRows: false,\n\t\tstriped: null,\n\t\tvariant: null\n\t};\n\n\tloading: boolean = false;\n\terrorOcurred: boolean = false;\n\n\t/**\n\t * Table headers\n\t *\n\t * @readonly\n\t * @type {(PaginableTableHeader[])}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input()\n\tget headers(): Array<PaginableTableHeader> {\n\t\treturn this._headers ?? [];\n\t}\n\tset headers(value: Array<PaginableTableHeader | string>) {\n\t\tthis._headers = value.map((header) => {\n\t\t\tif (typeof header === 'string') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: header,\n\t\t\t\t\tproperty: header\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn header;\n\t\t});\n\n\t\t// Parsing headers\n\t\tfor (const header of this._headers) {\n\t\t\tif (\n\t\t\t\theader.constructor.name === 'Object' &&\n\t\t\t\t(header as PaginableTableHeader).buttons &&\n\t\t\t\t!(header as PaginableTableHeader).property\n\t\t\t) {\n\t\t\t\tObject.assign(\n\t\t\t\t\theader,\n\t\t\t\t\t{ wrapping: 'nowrap', onlyButtons: true, align: 'end' },\n\t\t\t\t\theader\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis._initializeFilterForm();\n\n\t\t// We need to wait for all other inputs to be ready before initializing the column count\n\t\tsetTimeout(() => this._countColumns());\n\t}\n\n\t/**\n\t * The number of columns in the table.\n\t *\n\t * @type {number}\n\t * @memberof PaginableTableComponent\n\t */\n\tcolumnsCount: number = 0;\n\n\tget lastColumnOnlyHasButtons() {\n\t\tif (!this._headers) {\n\t\t\treturn null;\n\t\t}\n\t\tconst lastHeader = this._headers[this._headers.length - 1];\n\t\treturn (\n\t\t\tlastHeader.constructor.name === 'Object' &&\n\t\t\t(lastHeader as PaginableTableHeader).buttons &&\n\t\t\t!(lastHeader as PaginableTableHeader).property\n\t\t);\n\t}\n\n\tdata!: PaginableTablePagination | null;\n\n\t/**\n\t * Items paginated\n\t *\n\t * @private\n\t * @type {PaginableTablePagination}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _pagination: PaginableTablePagination | null = null;\n\t@Input()\n\tget pagination():\n\t\t| PaginableTablePagination\n\t\t| Observable<PaginableTablePagination>\n\t\t| null {\n\t\treturn this._pagination;\n\t}\n\tset pagination(\n\t\tv: PaginableTablePagination | Observable<PaginableTablePagination>\n\t) {\n\t\tif (!v) {\n\t\t\tthis.data = null;\n\t\t} else if (isObservable(v)) {\n\t\t\t(v as Observable<PaginableTablePagination>)\n\t\t\t\t.pipe(\n\t\t\t\t\tmap((value: PaginableTablePagination) => ({\n\t\t\t\t\t\tloading: false,\n\t\t\t\t\t\terror: false,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t})),\n\t\t\t\t\tstartWith({ loading: true, error: false, value: null }),\n\t\t\t\t\tcatchError((error) =>\n\t\t\t\t\t\tof({ loading: false, error, value: null })\n\t\t\t\t\t),\n\t\t\t\t\tmap((o) => {\n\t\t\t\t\t\tthis.loading = !!o.loading;\n\t\t\t\t\t\tthis.errorOcurred = o.error;\n\t\t\t\t\t\treturn o.value;\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.subscribe((result: PaginableTablePagination | null) => {\n\t\t\t\t\tthis.data = result;\n\t\t\t\t\tthis.markSelected();\n\t\t\t\t});\n\t\t} else {\n\t\t\tthis.data = v as PaginableTablePagination;\n\t\t}\n\t\tthis.allRowsSelected = false;\n\t\tif (this.selectable || this.batchActions?.length) {\n\t\t\tthis.markSelected();\n\t\t}\n\t}\n\n\t/**\n\t * Items not paginated\n\t *\n\t * @private\n\t * @type {any[]}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _rows: any[] | null = null;\n\t@Input()\n\tget rows(): any[] | null {\n\t\treturn this._rows;\n\t}\n\tset rows(v: any[]) {\n\t\tthis._rows = v;\n\t\tconst params = {\n\t\t\tpage: 1,\n\t\t\tordination: this.ordination,\n\t\t\tsearchText: this.searchText,\n\t\t\tsearchKeys: this.searchKeys,\n\t\t\tpaginate: this.paginate\n\t\t};\n\t\tthis.data = this.rows\n\t\t\t? this._paginationSvc.generate(this.rows, params)\n\t\t\t: null;\n\t\tthis.allRowsSelected = false;\n\t\tthis.markSelected();\n\t}\n\n\t/**\n\t * Collection of selected rows\n\t *\n\t * @type {any[]}\n\t * @memberof PaginableTableComponent\n\t */\n\tselectedItems: any[] = [];\n\n\t/**\n\t * Set whether all page rows are selecteds\n\t *\n\t * @type {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\tallRowsSelected: boolean = false;\n\n\t/**\n\t * Set whether the rows are selectable\n\t *\n\t * @type {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() selectable: boolean = false;\n\n\t/**\n\t * Set whether the selectable can be multiple\n\t *\n\t * @type {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() multiple: boolean = false;\n\n\t/**\n\t * If set, it will be the property returned in the onSelected event\n\t *\n\t * @type {string}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() selectableProperty?: string;\n\n\t/**\n\t * Event triggered when a row or multiples rows are selected or unselected\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\t@Output() onSelected = new EventEmitter<any>();\n\n\t/**\n\t * Pagination position\n\t *\n\t * @type {('bottom' | 'top' | 'both')}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() paginationPosition: 'bottom' | 'top' | 'both' = 'bottom';\n\n\t@Input() paginationInfo: boolean = true;\n\n\tsearchText: string = '';\n\t@Input() searchKeys: string[] = ['name'];\n\n\t@Input() ordination: PaginableTableOrdination | null = null;\n\n\t/**\n\t * Collection of actions for items\n\t *\n\t * @type {PaginableTableRowAction[]}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _batchActions: Array<\n\t\tPaginableTableDropdown | PaginableTableButton\n\t> = [];\n\t@Input()\n\tget batchActions(): Array<PaginableTableDropdown | PaginableTableButton> {\n\t\treturn this._batchActions;\n\t}\n\tset batchActions(v: Array<PaginableTableDropdown | PaginableTableButton>) {\n\t\tthis._batchActions = v.map((b) => {\n\t\t\tif ((b as PaginableTableDropdown).buttons) {\n\t\t\t\tb = { fill: null, position: 'start', color: 'light', ...b };\n\t\t\t}\n\t\t\treturn b;\n\t\t});\n\t\tthis._countColumns();\n\t}\n\n\tbatchActionsDropdown?: PaginableTableDropdown;\n\n\tbatchAction?: PaginableTableButton | null = null;\n\n\t/**\n\t * Sets the action column to sticky\n\t *\n\t * @type {PaginableTableRowAction[]}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() stickyActions: boolean = true;\n\n\t/**\n\t * On item click event emitter\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() clickFn: (event: ItemClickEvent<T>) => void | Promise<void>;\n\n\t/**\n\t * On page click event emitter\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\t@Output() onPageClick = new EventEmitter<number>();\n\n\t/**\n\t * On params change event emitter\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\t@Output() onParamsChange = new EventEmitter<PaginationParamsChangeEvent>();\n\t@Output() filterChange = new EventEmitter<FilterChangeEvent>();\n\n\t// TODO: Put default config\n\tmapping: any = this._configSvc.mapping;\n\n\t/**\n\t * Rows per page options\n\t *\n\t * @private\n\t * @type {number[]}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _perPageOptions: number[] = [10, 20, 50, 100];\n\t@Input()\n\tget perPageOptions(): number[] {\n\t\treturn this._perPageOptions;\n\t}\n\tset perPageOptions(v: number[]) {\n\t\tthis._perPageOptions = v;\n\t\tthis.itemsPerPage = this._perPageOptions.length\n\t\t\t? this._perPageOptions[0]\n\t\t\t: 20;\n\t}\n\n\t/**\n\t * Items per page\n\t *\n\t * @private\n\t * @type {number}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _itemsPerPage: number = 20;\n\t@Input()\n\tget itemsPerPage(): number {\n\t\treturn this._itemsPerPage;\n\t}\n\tset itemsPerPage(v: number) {\n\t\tthis._itemsPerPage = +v;\n\t\tif (this.data) {\n\t\t\tthis.data.currentPage = 1;\n\t\t}\n\t\tthis.triggerTheParamChanges();\n\t}\n\n\tresponsiveCSSClass: string | null = '';\n\tprivate _responsive?: string;\n\t@Input()\n\tget responsive(): string | null {\n\t\treturn this._responsive ?? null;\n\t}\n\tset responsive(v: string) {\n\t\tthis._responsive = v;\n\t\tif (this._responsive && BREAKPOINTS.indexOf(this._responsive) > -1) {\n\t\t\tthis.responsiveCSSClass =\n\t\t\t\tthis.responsive === 'xs'\n\t\t\t\t\t? null\n\t\t\t\t\t: 'table-responsive-' + this.responsive;\n\t\t} else {\n\t\t\tthis.responsiveCSSClass = '';\n\t\t}\n\t}\n\n\tfilterHeaders?: PaginableTableHeader[];\n\n\thasColumnFilters: boolean = false;\n\n\t/**\n\t * Filter form\n\t *\n\t * @type {FormGroup}\n\t * @memberof PaginableTableComponent\n\t */\n\tfilterFG: FormGroup = new FormGroup({});\n\n\tfilterFGSct?: Subscription;\n\n\tfilterLoading: boolean = false;\n\n\tfilterTrigger$: Subject<void> = new Subject();\n\n\t/**\n\t * Time to ouput the filter form value\n\t *\n\t * @type {number}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() debounce: number = 1024;\n\n\tdisabled: boolean = false;\n\n\t/**\n\t * Set if the data must be paginated\n\t *\n\t * @type {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() paginate: boolean = true;\n\n\t@ContentChildren(PaginatorComponent)\n\tpaginators?: QueryList<DropdownComponent>;\n\t@ContentChild(PaginableTableRowDirective, { read: TemplateRef })\n\ttemplateRow?: TemplateRef<any>;\n\t@ContentChildren(PaginableTableHeaderDirective)\n\theaderTpts!: QueryList<PaginableTableHeaderDirective>;\n\t@ContentChildren(PaginableTableCellDirective)\n\ttemplateCells!: QueryList<PaginableTableCellDirective>;\n\t@ContentChild(PaginableTableNotFoundDirective, { read: TemplateRef })\n\tnoDataTpt?: TemplateRef<any>;\n\t@ContentChild(PaginableTableLoadingDirective, { read: TemplateRef })\n\tloadingTpt?: TemplateRef<any>;\n\t@ContentChild(PaginableTableErrorDirective, { read: TemplateRef })\n\terrorTpt?: TemplateRef<any>;\n\t@ContentChildren(PaginableTableExpandingRowDirective)\n\ttemplateExpandingRows!: QueryList<PaginableTableExpandingRowDirective>;\n\t@ContentChildren(PaginableTableFilterDirective)\n\tfilterTpts!: QueryList<PaginableTableFilterDirective>;\n\n\t@ViewChildren(DropdownComponent)\n\tdropdownComponents?: QueryList<DropdownComponent>;\n\n\t/**\n\t * Set if the view selector must be showed\n\t *\n\t * @type {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\t@Input() showViewSelector: boolean = false;\n\n\t@Input() viewSaverForm: any;\n\n\tprivate _views?: View[];\n\t@Input()\n\tget views(): View[] | null {\n\t\treturn this._views ?? null;\n\t}\n\tset views(v: View[]) {\n\t\tthis._views = v;\n\t}\n\n\tget searchFG(): FormControl {\n\t\treturn this.filterFG.get('searchText') as FormControl;\n\t}\n\n\tget specificSearchFG(): FormGroup {\n\t\treturn this.filterFG.get('specificSearch') as FormGroup;\n\t}\n\n\tngOnInit() {\n\t\tif (!this.id) {\n\t\t\tthis.id = generateUniqueId(16);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.filterFGSct?.unsubscribe();\n\t}\n\n\twriteValue(value: any): void {\n\t\tif (value) {\n\t\t\tthis.selectedItems = Array.isArray(value) ? value : [value];\n\t\t} else {\n\t\t\tthis.selectedItems = [];\n\t\t}\n\t\tthis.markSelected();\n\t}\n\n\tonChange = (_: any) => {};\n\tonTouch = () => {};\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouch = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Obtiene la propiedad del objeto cuya clave es pasada por parámetro\n\t *\n\t * @param {object} item\n\t * @param {string} key\n\t * @returns {*}\n\t * @memberof PaginableTableComponent\n\t */\n\tgetProperty(item: object, key: string): any {\n\t\treturn get(item, key);\n\t}\n\n\t/**\n\t * Handles click events by extracting specific properties and passing them to a callback function.\n\t *\n\t * @param  - The `onItemClick` function takes in the following parameters: collapsed, selected and item.\n\t * @param {number} depth - The `depth` parameter in the `onItemClick` function represents the depth level of the item being\n\t * clicked. It is a number that indicates how deep the item is nested within a hierarchical structure.\n\t * @param {number} index - The `index` parameter in the `onItemClick` function represents the position of the item that was clicked\n\t * within a list or array. It is a number that indicates the index of the clicked item.\n\t *\n\t * @returns If the `clickFn` property is not defined in the current context, the `onItemClick` function will return without\n\t * executing any further code.\n\t */\n\tonItemClick(\n\t\t{ collapsed, selected, ...item },\n\t\tdepth: number,\n\t\tindex: number\n\t) {\n\t\tif (!this.clickFn) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clickFn({\n\t\t\tdepth,\n\t\t\tindex,\n\t\t\tselected,\n\t\t\tcollapsed,\n\t\t\tvalue: item as T,\n\t\t\titem: item as T\n\t\t});\n\t}\n\n\tfilter() {\n\t\tif (!this.data) {\n\t\t\treturn;\n\t\t}\n\t\tthis.data.currentPage = 1;\n\t\tthis.filterChange.emit({\n\t\t\tsearchText: this.searchFG?.value ?? null,\n\t\t\tspecificSearch: this.specificSearchFG?.value ?? null\n\t\t});\n\t}\n\n\tpageClicked(page: number) {\n\t\tif (!this.data) {\n\t\t\treturn;\n\t\t}\n\t\tthis.data.currentPage = page;\n\t\tthis.triggerTheParamChanges();\n\t}\n\n\t/**\n\t * If paging is done on the server, a parameter change subscription is launched. Otherwise,\n\t * get the data sorted according to the header passed by parameter.\n\t *\n\t * @param {PaginableTableHeader} header\n\t * @returns {void}\n\t * @memberof PaginableTableComponent\n\t */\n\tsort(header: PaginableTableHeader): void {\n\t\tif (!header.sortable) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.ordination || this.ordination.property !== header.property) {\n\t\t\tthis.ordination = {\n\t\t\t\tproperty: header.property as any,\n\t\t\t\tdirection: 'ASC'\n\t\t\t};\n\t\t} else {\n\t\t\tthis.ordination = {\n\t\t\t\tproperty: header.property,\n\t\t\t\tdirection: this.ordination.direction === 'ASC' ? 'DESC' : 'ASC'\n\t\t\t};\n\t\t}\n\n\t\tthis.triggerTheParamChanges();\n\t}\n\n\ttriggerTheParamChanges() {\n\t\tif (!this.data) {\n\t\t\treturn;\n\t\t}\n\t\tconst params: PaginationParamsChangeEvent = {\n\t\t\tpage: this.data.currentPage,\n\t\t\tperPage: this.itemsPerPage,\n\t\t\tordination: this.ordination as any,\n\t\t\tsearchText: this.searchFG.value ?? null,\n\t\t\tsearchKeys: this.searchKeys,\n\t\t\tpaginate: this.paginate\n\t\t};\n\n\t\tObject.keys(params).forEach(\n\t\t\t(k) => params[k] == null && delete params[k]\n\t\t);\n\n\t\tif (!this.rows) {\n\t\t\tthis.onParamsChange.next(params);\n\t\t} else {\n\t\t\tthis.data = this._paginationSvc.generate(this.rows, params);\n\t\t}\n\t}\n\n\t/**\n\t * Get the ordination class\n\t *\n\t * @param {PaginableTableHeader} header\n\t * @returns\n\t * @memberof PaginableTableComponent\n\t */\n\tgetOrdenationClass(header: PaginableTableHeader) {\n\t\tif (!this.ordination || this.ordination.property !== header.property) {\n\t\t\treturn 'fa-sort';\n\t\t}\n\t\treturn this.ordination.direction.toUpperCase() === 'ASC'\n\t\t\t? 'fa-sort-up'\n\t\t\t: 'fa-sort-down';\n\t}\n\n\t/**\n\t * If it exists, returns the header cell template for the header passed by parameter\n\t *\n\t * @param {(PaginableTableHeader)} header\n\t * @returns {TemplateRef<PaginableTableCellDirective>}\n\t * @memberof PaginableTableComponent\n\t */\n\tgetHeaderTemplate(header: PaginableTableHeader): TemplateRef<any> | null {\n\t\tconst property = header instanceof String ? header : header.property;\n\t\tif (!property) {\n\t\t\treturn null;\n\t\t}\n\t\tconst directive = this.headerTpts.find((o) => {\n\t\t\treturn o.header === property;\n\t\t});\n\t\treturn directive ? directive.template : null;\n\t}\n\n\t/**\n\t * If it exists, returns the cell template for the header passed by parameter\n\t *\n\t * @param {(PaginableTableHeader)} header\n\t * @returns {TemplateRef<PaginableTableCellDirective>}\n\t * @memberof PaginableTableComponent\n\t */\n\tgetCellTemplate(header: PaginableTableHeader): TemplateRef<any> | null {\n\t\tconst property = header instanceof String ? header : header.property;\n\t\tif (!property) {\n\t\t\treturn null;\n\t\t}\n\t\tconst directive = this.templateCells.find((o) => {\n\t\t\treturn o.header === property;\n\t\t});\n\t\treturn directive ? directive['template'] : null;\n\t}\n\n\t/**\n\t * If it exists, returns the filter template for the header passed by parameter\n\t *\n\t * @param {(PaginableTableHeader)} header\n\t * @returns {TemplateRef<PaginableTableCellDirective>}\n\t * @memberof PaginableTableComponent\n\t */\n\tgetFilterTemplate(\n\t\theader: PaginableTableHeader\n\t): TemplateRef<PaginableTableFilterDirective> | null {\n\t\tconst property = header instanceof String ? header : header.property;\n\t\tif (!property) {\n\t\t\treturn null;\n\t\t}\n\t\tconst directive = this.filterTpts.find((o) => o.header === property);\n\t\treturn directive ? directive.template : null;\n\t}\n\n\t/**\n\t * Handles the action to execute\n\t *\n\t * @param {Function} handler\n\t * @param {*} item\n\t * @memberof PaginableTableComponent\n\t */\n\thandleAction(event: Event, handler: (...args: any) => void, item: any) {\n\t\tevent.stopPropagation();\n\t\thandler(item);\n\t}\n\n\t/**\n\t * Handles the action to be executed in a batch\n\t *\n\t * @param {Event} event\n\t * @memberof PaginableTableComponent\n\t */\n\thandleBatchAction(event: any) {\n\t\tevent.handler(this.selectedItems);\n\t}\n\n\t/**\n\t * Determines whether to display the batch actions menu\n\t *\n\t * @type {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\tbatchActionsShown: boolean = false;\n\n\tisHidden(button: PaginableTableButton, item: any): Observable<boolean> {\n\t\tif (typeof button.hidden === 'function') {\n\t\t\tconst result = button.hidden(item);\n\t\t\treturn isObservable(result)\n\t\t\t\t? (result as Observable<boolean>)\n\t\t\t\t: of(result);\n\t\t}\n\t\treturn of(!!button.hidden);\n\t}\n\n\t/**\n\t * Expand or unexpand an expanding row\n\t *\n\t * @param {PaginableTableItem} item\n\t * @memberof PaginableTableComponent\n\t */\n\ttoggleExpandedRow(item: PaginableTableItem) {\n\t\titem.unfold = !item.unfold;\n\t}\n\n\t/**\n\t * Select or unselect all page items\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\ttoggleAll() {\n\t\tthis.allRowsSelected = !this.allRowsSelected;\n\t\tif (!this.data) {\n\t\t\treturn;\n\t\t}\n\t\tthis.data[this.mapping.data].forEach((o) => {\n\t\t\tconst needle = this.selectableProperty\n\t\t\t\t? o[this.selectableProperty]\n\t\t\t\t: o;\n\t\t\tconst index = this.selectedItems.indexOf(needle);\n\t\t\tif (index > -1 && !this.allRowsSelected) {\n\t\t\t\tthis.selectedItems.splice(index, 1);\n\t\t\t} else if (index === -1 && this.allRowsSelected) {\n\t\t\t\tthis.selectedItems.push(needle);\n\t\t\t}\n\t\t\to.selected = this.allRowsSelected;\n\t\t});\n\t\tthis.onSelected.emit(this.selectedItems);\n\t\tthis.emitValue();\n\t}\n\n\t/**\n\t * Select or unselect a row\n\t *\n\t * @param {*} item\n\t * @memberof PaginableTableComponent\n\t */\n\ttoggle(item: any) {\n\t\tif (!this.data) {\n\t\t\treturn;\n\t\t}\n\t\tconst needle = this.selectableProperty\n\t\t\t? item[this.selectableProperty]\n\t\t\t: item;\n\t\tconst index = this.selectedItems.indexOf(needle);\n\t\tif (index > -1) {\n\t\t\tthis.selectedItems.splice(index, 1);\n\t\t\titem.selected = false;\n\t\t} else {\n\t\t\tthis.selectedItems.push(needle);\n\t\t\titem.selected = true;\n\t\t}\n\n\t\tif (!this.multiple) {\n\t\t\tthis.selectedItems = item.selected ? [needle] : [];\n\t\t\tthis.data[this.mapping.data].forEach((o) => {\n\t\t\t\tconst needle = this.selectableProperty\n\t\t\t\t\t? o[this.selectableProperty]\n\t\t\t\t\t: o;\n\t\t\t\to.selected = this.selectedItems.indexOf(needle) > -1;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.allRowsSelected = this.data[this.mapping.data].every(\n\t\t\t\t(o) => o.selected\n\t\t\t);\n\t\t}\n\n\t\tthis.onSelected.emit(this.selectedItems);\n\t\tthis.emitValue();\n\t}\n\n\t/**\n\t * Select or deselect a row if it exists in the collection of selected items\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\tmarkSelected() {\n\t\tif (!this.data?.[this.mapping.data]?.length) {\n\t\t\treturn;\n\t\t}\n\t\tthis.data[this.mapping.data].forEach((o) => {\n\t\t\tconst needle = this.selectableProperty\n\t\t\t\t? o[this.selectableProperty]\n\t\t\t\t: o;\n\t\t\to.selected = this._contains(this.selectedItems, needle);\n\t\t});\n\t\tthis.allRowsSelected = this.data[this.mapping.data].every(\n\t\t\t(o) => o.selected\n\t\t);\n\t}\n\n\t/**\n\t * Check if a needle exists in a list\n\t *\n\t * @private\n\t * @param {any[]} list\n\t * @param {*} needle\n\t * @return {*}  {boolean}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _contains(list: any[], needle: any): boolean {\n\t\tif (typeof needle === 'object' && needle !== null) {\n\t\t\tlist = list.map((o) => {\n\t\t\t\tconst { selected, ...clone } = o;\n\t\t\t\treturn clone;\n\t\t\t});\n\n\t\t\tconst { selected, ...p } = needle;\n\t\t\treturn list.some((o) => JSON.stringify(o) === JSON.stringify(p));\n\t\t}\n\t\treturn list.indexOf(needle) > -1;\n\t}\n\n\t/**\n\t * Initializes the filtering form and its subscription\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\t_initializeFilterForm(): void {\n\t\tthis.filterFGSct?.unsubscribe();\n\n\t\tthis.filterFG = this.#fb.group({\n\t\t\tsearchText: []\n\t\t});\n\n\t\tif (this.headers?.length) {\n\t\t\tconst filtersFG = this.#fb.group({});\n\n\t\t\tthis.filterHeaders = (\n\t\t\t\tthis._headers as Array<PaginableTableHeader>\n\t\t\t).filter((header) => typeof header === 'object' && header.filter);\n\t\t\tthis.filterHeaders.forEach((h) => {\n\t\t\t\tfiltersFG.addControl(\n\t\t\t\t\t(h.filter?.key || h.property) as string,\n\t\t\t\t\tnew UntypedFormControl(null)\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tthis.hasColumnFilters = this.filterHeaders.some(\n\t\t\t\t(filter) => filter.filter && filter.filter?.mode !== 'menu'\n\t\t\t);\n\n\t\t\tif (this.id) {\n\t\t\t\tconst view = JSON.parse(\n\t\t\t\t\tlocalStorage.getItem('paginable-table_view_' + this.id) ??\n\t\t\t\t\t\t'{}'\n\t\t\t\t);\n\t\t\t\tfiltersFG.patchValue(view);\n\t\t\t}\n\n\t\t\tthis.filterFG.addControl('specificSearch', filtersFG);\n\t\t}\n\n\t\tthis.filterFGSct = merge(\n\t\t\tthis.filterTrigger$.pipe(tap(() => (this.filterLoading = true))),\n\t\t\tthis.filterFG.valueChanges.pipe(\n\t\t\t\ttap(() => {\n\t\t\t\t\tthis.filterLoading = true;\n\t\t\t\t}),\n\t\t\t\tdebounceTime(this.debounce)\n\t\t\t)\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(this.debounce),\n\t\t\t\ttap((_) => {\n\t\t\t\t\tthis.filterChange.emit(this.filterFG.value);\n\t\t\t\t\tthis.filterLoading = false;\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe();\n\t}\n\n\t/**\n\t * Calculates the number of columns in the table, based on its headers and other optional elements.\n\t *\n\t * @private\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _countColumns() {\n\t\tlet count = this.headers.length;\n\t\tif ((this.selectable && this.multiple) || this.batchActions?.length) {\n\t\t\tcount++;\n\t\t}\n\t\tif (\n\t\t\tthis.templateExpandingRows?.length &&\n\t\t\t!this.lastColumnOnlyHasButtons\n\t\t) {\n\t\t\tcount++;\n\t\t}\n\t\tthis.columnsCount = count;\n\t}\n\n\t/**\n\t * Clean the advanced filter form\n\t *\n\t * @memberof PaginableTableComponent\n\t */\n\tclearAdvancedFilters(): void {\n\t\tthis.filterFG.reset();\n\t}\n\n\t/**\n\t * Emite el valor de los items seleccionados\n\t *\n\t */\n\temitValue() {\n\t\tthis.onChange(\n\t\t\tthis.multiple ? this.selectedItems : this.selectedItems[0]\n\t\t);\n\t}\n\n\t/**\n\t * Closes all other dropdowns except the one with the specified id.\n\t *\n\t * @param {id} - The `onDropdownFilterOpened` function takes an object parameter `id`.\n\t */\n\tonDropdownFilterOpened({ id }) {\n\t\tthis.dropdownComponents?.forEach((dropdown) => {\n\t\t\tif (dropdown.id !== id && dropdown.isOpened) {\n\t\t\t\tdropdown.closeDropdown();\n\t\t\t}\n\t\t});\n\t}\n}\n","<div class=\"table_container paginable-table__container\">\n\t<form [formGroup]=\"filterFG\">\n\t\t<div\n\t\t\t*ngIf=\"\n\t\t\t\tbatchActions?.length || showSearchInput || filterHeaders?.length\n\t\t\t\"\n\t\t\tclass=\"d-flex flex-wrap justify-content-between mb-4 gap-2\"\n\t\t>\n\t\t\t<!-- Batch actions -->\n\t\t\t<div class=\"flex-grow-1\">\n\t\t\t\t<div class=\"d-flex justify-content-start gap-2\">\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t*ngFor=\"let button of batchActions; let first = first\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngIf=\"button['buttons']?.length; else buttonTpt\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<paginable-table-dropdown\n\t\t\t\t\t\t\t\t[options]=\"$any(button)\"\n\t\t\t\t\t\t\t\t[disabled]=\"!selectedItems?.length\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</paginable-table-dropdown>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t<ng-template #buttonTpt>\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"btn\"\n\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\tclass=\"{{\n\t\t\t\t\t\t\t\t\tbutton.color\n\t\t\t\t\t\t\t\t\t\t? 'btn-' + button.color\n\t\t\t\t\t\t\t\t\t\t: 'btn-light'\n\t\t\t\t\t\t\t\t}}\"\n\t\t\t\t\t\t\t\t(click)=\"handleBatchAction(button)\"\n\t\t\t\t\t\t\t\t[disabled]=\"!selectedItems?.length\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\t\t*ngIf=\"button.icon\"\n\t\t\t\t\t\t\t\t\tclass=\"me-2 mr-2 {{ button.icon }}\"\n\t\t\t\t\t\t\t\t></i\n\t\t\t\t\t\t\t\t><ng-container *ngIf=\"button.title\">\n\t\t\t\t\t\t\t\t\t{{ button.title | ucfirst }}\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</ng-template>\n\t\t\t\t\t</ng-container>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<!-- Search input group -->\n\t\t\t<div *ngIf=\"showSearchInput\" class=\"ml-auto ms-auto\">\n\t\t\t\t<div class=\"d-flex justify-content-end gap-2\">\n\t\t\t\t\t<div class=\"input-group search_input-group\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tclass=\"form-control border border-light search_input\"\n\t\t\t\t\t\t\t[formControl]=\"searchFG\"\n\t\t\t\t\t\t\taria-label=\"Search\"\n\t\t\t\t\t\t\t(keyup.enter)=\"filter()\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tclass=\"btn btn-light search_button\"\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t(click)=\"filter()\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\t\tclass=\"fa-solid fa-search\"\n\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<button\n\t\t\t\t*ngIf=\"filterHeaders?.length\"\n\t\t\t\ttype=\"button\"\n\t\t\t\tclass=\"btn btn-outline-danger\"\n\t\t\t\t(click)=\"clearAdvancedFilters()\"\n\t\t\t\t[disabled]=\"filterLoading\"\n\t\t\t>\n\t\t\t\t<i class=\"fa-solid fa-eraser\"></i>\n\n\t\t\t\t{{ 'CLEAN_FILTERS' | translate | ucfirst }}\n\t\t\t</button>\n\t\t</div>\n\n\t\t<!-- Pagination -->\n\t\t<paginable-table-paginator\n\t\t\t(pageClick)=\"pageClicked($event)\"\n\t\t\t*ngIf=\"\n\t\t\t\tpaginate &&\n\t\t\t\tdata?.data?.length &&\n\t\t\t\t(paginationPosition == 'top' || paginationPosition === 'both')\n\t\t\t\"\n\t\t\t[pagination]=\"data\"\n\t\t\tclass=\"d-block mb-4\"\n\t\t>\n\t\t</paginable-table-paginator>\n\n\t\t<!-- Error -->\n\t\t<ng-container *ngIf=\"errorOcurred\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"errorTpt || defaultErrorTpt\">\n\t\t\t</ng-container>\n\t\t</ng-container>\n\n\t\t<!-- Loading -->\n\t\t<ng-container *ngIf=\"loading\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"loadingTpt || defaultLoadingTpt\">\n\t\t\t</ng-container>\n\t\t</ng-container>\n\n\t\t<!-- Table -->\n\t\t<ng-container *ngIf=\"data\">\n\t\t\t<div\n\t\t\t\tclass=\"{{\n\t\t\t\t\tresponsiveCSSClass\n\t\t\t\t}} paginable-table__table-container mb-4\"\n\t\t\t\t[class.table-responsive]=\"responsiveCSSClass\"\n\t\t\t>\n\t\t\t\t<table\n\t\t\t\t\t*ngIf=\"data\"\n\t\t\t\t\tclass=\"table mb-0 paginable-table__table\"\n\t\t\t\t\t[class.table-hover]=\"options.hoverableRows || selectable\"\n\t\t\t\t\t[class.table-striped]=\"options.striped === 'rows'\"\n\t\t\t\t\t[class.table-striped-columns]=\"\n\t\t\t\t\t\toptions.striped === 'columns'\n\t\t\t\t\t\"\n\t\t\t\t\t[class.table-selectable]=\"selectable\"\n\t\t\t\t\t[ngClass]=\"\n\t\t\t\t\t\toptions.variant ? 'table-' + options.variant : null\n\t\t\t\t\t\"\n\t\t\t\t>\n\t\t\t\t\t<thead [formGroup]=\"specificSearchFG\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t(selectable && multiple) ||\n\t\t\t\t\t\t\t\t\tbatchActions?.length\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\tclass=\"sticky-start actions\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\t\t\t[(ngModel)]=\"allRowsSelected\"\n\t\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t\t\t\t\t(click)=\"toggleAll()\"\n\t\t\t\t\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\tresizable\n\t\t\t\t\t\t\t\t*ngFor=\"let item of headers\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t'sticky-start': item.sticky === 'start',\n\t\t\t\t\t\t\t\t\t'sticky-end': item.sticky === 'end',\n\t\t\t\t\t\t\t\t\t'text-left': item.align === 'start',\n\t\t\t\t\t\t\t\t\t'text-right text-end': item.align === 'end',\n\t\t\t\t\t\t\t\t\t'text-center': item.align === 'center'\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"d-flex flex-nowrap align-items-center justify-content-between gap-2\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\t\t\t\t\tgetHeaderTemplate(item) ||\n\t\t\t\t\t\t\t\t\t\t\tdefaultHeaderTpt\n\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\t\t\t\t\t\t\theader: item,\n\t\t\t\t\t\t\t\t\t\t\tproperty: getProperty(\n\t\t\t\t\t\t\t\t\t\t\t\titem,\n\t\t\t\t\t\t\t\t\t\t\t\titem.property\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t\t\titem.sortable ||\n\t\t\t\t\t\t\t\t\t\t\titem.filter?.mode === 'menu'\n\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\tclass=\"d-flex gap-2 ms-auto align-items-center\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tclass=\"btn\"\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"sort(item)\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa\"\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"item.sortable\"\n\t\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOrdenationClass(item)\n\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t\t\t\t\t<hub-ui-dropdown\n\t\t\t\t\t\t\t\t\t\t\t#dropdown\n\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"item.filter?.mode === 'menu'\"\n\t\t\t\t\t\t\t\t\t\t\t(open)=\"\n\t\t\t\t\t\t\t\t\t\t\t\tonDropdownFilterOpened($event)\n\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"filter-dropdown\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"d-flex flex-nowrap gap-2 button filter-dropdown__toggle-content\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"fa-solid fa-filter\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[class.text-success]=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspecificSearchFG.get(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.filter?.key ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.property\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)!.value?.rules?.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t[class.filter-dropdown__toggle-content--active]=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspecificSearchFG.get(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.filter?.key ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.property\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)!.value?.rules?.length\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tspecificSearchFG.get(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.filter?.key ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.property\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)!.value?.rules as rules\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"badge rounded-pill text-bg-primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"rules.length\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{{ rules.length }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<menu-filter\n\t\t\t\t\t\t\t\t\t\t\t\t*ngIf=\"dropdown.isOpened\"\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"content filter-dropdown__content\"\n\t\t\t\t\t\t\t\t\t\t\t\t[header]=\"item\"\n\t\t\t\t\t\t\t\t\t\t\t\t[formControlName]=\"\n\t\t\t\t\t\t\t\t\t\t\t\t\titem.filter?.key ||\n\t\t\t\t\t\t\t\t\t\t\t\t\titem.property\n\t\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t</menu-filter>\n\t\t\t\t\t\t\t\t\t\t</hub-ui-dropdown>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- <ng-container *ngIf=\"item | isString\">\n\t\t\t\t\t\t\t\t\t{{ item | ucfirst }}\n\t\t\t\t\t\t\t\t</ng-container> -->\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t*ngIf=\"templateExpandingRows.length\"\n\t\t\t\t\t\t\t\tclass=\"sticky-end\"\n\t\t\t\t\t\t\t></th>\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<!-- Filtering -->\n\t\t\t\t\t\t<tr *ngIf=\"hasColumnFilters\" class=\"filter_row\">\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t(selectable && multiple) ||\n\t\t\t\t\t\t\t\t\tbatchActions?.length\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\tclass=\"filter_cell sticky-start\"\n\t\t\t\t\t\t\t></th>\n\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t*ngFor=\"let header of headers; let last = last\"\n\t\t\t\t\t\t\t\tclass=\"filter_cell\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t'sticky-start': header.sticky === 'start',\n\t\t\t\t\t\t\t\t\t'sticky-end': header.sticky === 'end'\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\t\t\theader.filter &&\n\t\t\t\t\t\t\t\t\t\theader.filter?.mode !== 'menu'\n\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\t\t\t\t\tgetFilterTemplate(header) ||\n\t\t\t\t\t\t\t\t\t\t\tdefaultFilterTpt\n\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\t\t\t\t\t\t\theader: header,\n\t\t\t\t\t\t\t\t\t\t\tformControl: filterFG\n\t\t\t\t\t\t\t\t\t\t\t\t.get('specificSearch')!\n\t\t\t\t\t\t\t\t\t\t\t\t.get(\n\t\t\t\t\t\t\t\t\t\t\t\t\theader.filter.key ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theader.property\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\t\t\tdata[mapping.data]?.length;\n\t\t\t\t\t\t\t\telse noDataRowTpt\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t\t*ngFor=\"let item of data[mapping.data]\"\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\t\t\t\ttemplateRow || defaultRowTemplate\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: item }\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\n\t\t\t<!-- Pagination -->\n\t\t\t<div\n\t\t\t\t*ngIf=\"paginate && data?.data?.length\"\n\t\t\t\tclass=\"pager-container w-100 d-flex flex-wrap align-items-center justify-content-center gap-4\"\n\t\t\t>\n\t\t\t\t<paginable-table-paginator\n\t\t\t\t\tclass=\"pager-container__paginator\"\n\t\t\t\t\t(pageClick)=\"pageClicked($event)\"\n\t\t\t\t\t*ngIf=\"\n\t\t\t\t\t\tpaginationPosition == 'bottom' ||\n\t\t\t\t\t\tpaginationPosition === 'both'\n\t\t\t\t\t\"\n\t\t\t\t\t[pagination]=\"data\"\n\t\t\t\t>\n\t\t\t\t</paginable-table-paginator>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"pager-container__settings d-flex align-items-center gap-2 flex-nowrap\"\n\t\t\t\t>\n\t\t\t\t\t<label\n\t\t\t\t\t\tclass=\"pager-container__label text-nowrap fs-6 text-muted\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ 'ROWS_PER_PAGE' | translate | ucfirst }}:\n\t\t\t\t\t</label>\n\t\t\t\t\t<select\n\t\t\t\t\t\tclass=\"pager-container__select form-select form-select-sm\"\n\t\t\t\t\t\t[(ngModel)]=\"itemsPerPage\"\n\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<option\n\t\t\t\t\t\t\t*ngFor=\"let option of perPageOptions\"\n\t\t\t\t\t\t\t[value]=\"option\"\n\t\t\t\t\t\t\tclass=\"pager-container__select-option\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ option }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\t\t\t\t<p\n\t\t\t\t\tclass=\"pager-container__info mb-0 fs-6 text-muted\"\n\t\t\t\t\t*ngIf=\"paginationInfo\"\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\t'SHOWING_X_OF_Y_ROWS'\n\t\t\t\t\t\t\t| translate\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\tamount: data[mapping.data].length,\n\t\t\t\t\t\t\t\t\t\ttotal: data[mapping.total]\n\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t| ucfirst\n\t\t\t\t\t}}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</ng-container>\n\t</form>\n\n\t<ng-template #defaultRowTemplate let-item>\n\t\t<tr\n\t\t\t(click)=\"onItemClick(item)\"\n\t\t\t[class.row-selected]=\"selectable && item.selected\"\n\t\t\t[class.clickable-item]=\"clickFn\"\n\t\t>\n\t\t\t<td *ngIf=\"(selectable && multiple) || batchActions?.length\">\n\t\t\t\t<input\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t[(ngModel)]=\"item.selected\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t(click)=\"$event.stopPropagation(); toggle(item)\"\n\t\t\t\t/>\n\t\t\t</td>\n\t\t\t<td\n\t\t\t\t*ngFor=\"let header of headers\"\n\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t'sticky-start': header.sticky === 'start',\n\t\t\t\t\t'sticky-end': header.sticky === 'end',\n\t\t\t\t\t'text-left': header.align === 'start',\n\t\t\t\t\t'text-right text-end': header.align === 'end',\n\t\t\t\t\t'text-center': header.align === 'center'\n\t\t\t\t}\"\n\t\t\t\t[style.width]=\"header.buttons?.length ? '0' : 'auto'\"\n\t\t\t>\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"\n\t\t\t\t\t\tgetCellTemplate(header) || defaultCellTpt\n\t\t\t\t\t\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\t\theader: header,\n\t\t\t\t\t\titem: item,\n\t\t\t\t\t\tproperty: getProperty(item, header.property)\n\t\t\t\t\t}\"\n\t\t\t\t>\n\t\t\t\t</ng-container>\n\t\t\t</td>\n\t\t\t<td\n\t\t\t\t*ngIf=\"templateExpandingRows?.length\"\n\t\t\t\tclass=\"actions sticky-end\"\n\t\t\t\t[class.sticky-end]=\"stickyActions\"\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\t*ngIf=\"templateExpandingRows?.length\"\n\t\t\t\t\t(click)=\"toggleExpandedRow(item)\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"btn btn-link px-2\"\n\t\t\t\t>\n\t\t\t\t\t<i\n\t\t\t\t\t\tclass=\"fa\"\n\t\t\t\t\t\t[ngClass]=\"\n\t\t\t\t\t\t\titem.unfold ? 'fa-caret-up' : 'fa-caret-down'\n\t\t\t\t\t\t\"\n\t\t\t\t\t></i>\n\t\t\t\t</button>\n\t\t\t</td>\n\t\t\t<!-- <td *ngIf=\"!lastColumnOnlyHasButtons && filterHeaders?.length\"></td> -->\n\t\t</tr>\n\t\t<ng-container *ngIf=\"item.unfold\">\n\t\t\t<ng-container *ngFor=\"let template of templateExpandingRows\">\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"template.templateRef\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item }\"\n\t\t\t\t>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\t\t</ng-container>\n\t</ng-template>\n\n\t<ng-template #noDataRowTpt>\n\t\t<tr>\n\t\t\t<td [attr.colSpan]=\"columnsCount\">\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"noDataTpt || defaultNoDataTpt\"\n\t\t\t\t>\n\t\t\t\t</ng-container>\n\t\t\t</td>\n\t\t</tr>\n\t</ng-template>\n\n\t<ng-template #defaultNoDataTpt>\n\t\t<div\n\t\t\tclass=\"alert alert-info d-flex align-items-center m-4\"\n\t\t\trole=\"alert\"\n\t\t>\n\t\t\t<i class=\"fa-solid fa-info fa-2x me-4 mr-4\" aria-hidden=\"true\"></i>\n\t\t\t{{ 'NO_RESULTS_FOUND' | translate | ucfirst }}\n\t\t</div>\n\t</ng-template>\n\n\t<ng-template #defaultLoadingTpt>\n\t\t<div>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\tstyle=\"margin: auto; background: #fff; display: block\"\n\t\t\t\twidth=\"200px\"\n\t\t\t\theight=\"200px\"\n\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid\"\n\t\t\t>\n\t\t\t\t<circle\n\t\t\t\t\tcx=\"50\"\n\t\t\t\t\tcy=\"50\"\n\t\t\t\t\tr=\"0\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"#cccccc\"\n\t\t\t\t\tstroke-width=\"1\"\n\t\t\t\t>\n\t\t\t\t\t<animate\n\t\t\t\t\t\tattributeName=\"r\"\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"1.6666666666666667s\"\n\t\t\t\t\t\tvalues=\"0;40\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tkeySplines=\"0 0.2 0.8 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t></animate>\n\t\t\t\t\t<animate\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"1.6666666666666667s\"\n\t\t\t\t\t\tvalues=\"1;0\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tkeySplines=\"0.2 0 0.8 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t></animate>\n\t\t\t\t</circle>\n\t\t\t\t<circle\n\t\t\t\t\tcx=\"50\"\n\t\t\t\t\tcy=\"50\"\n\t\t\t\t\tr=\"0\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"#333333\"\n\t\t\t\t\tstroke-width=\"1\"\n\t\t\t\t>\n\t\t\t\t\t<animate\n\t\t\t\t\t\tattributeName=\"r\"\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"1.6666666666666667s\"\n\t\t\t\t\t\tvalues=\"0;40\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tkeySplines=\"0 0.2 0.8 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t\tbegin=\"-0.8333333333333334s\"\n\t\t\t\t\t></animate>\n\t\t\t\t\t<animate\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"1.6666666666666667s\"\n\t\t\t\t\t\tvalues=\"1;0\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tkeySplines=\"0.2 0 0.8 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t\tbegin=\"-0.8333333333333334s\"\n\t\t\t\t\t></animate>\n\t\t\t\t</circle>\n\t\t\t</svg>\n\t\t</div>\n\t</ng-template>\n\n\t<ng-template #defaultErrorTpt>\n\t\t<div class=\"m-4 p-4 text-center text-danger\">\n\t\t\t<svg\n\t\t\t\taria-hidden=\"true\"\n\t\t\t\tfocusable=\"false\"\n\t\t\t\tdata-prefix=\"fal\"\n\t\t\t\tdata-icon=\"sad-tear\"\n\t\t\t\trole=\"img\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 496 512\"\n\t\t\t\tclass=\"svg-inline--fa-solid fa-sad-tear fa-w-16 fa-7x\"\n\t\t\t\tstyle=\"height: 64px\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\tfill=\"#dc3545\"\n\t\t\t\t\td=\"M168 240c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 464c-119.1 0-216-96.9-216-216S128.9 40 248 40s216 96.9 216 216-96.9 216-216 216zm0-152c-11.2 0-22 1.7-32.7 4.1-7.2-12.6-16.1-26.5-28.1-42.4-9-12.1-29.4-12-38.4 0-29.7 39.6-44.8 69-44.8 87.3 0 34.7 28.7 63 64 63s64-28.3 64-63c0-4.4-1-9.5-2.7-15.1 6.1-1.2 12.3-1.9 18.7-1.9 34.9 0 67.8 15.4 90.2 42.2 5.3 6.4 15.4 8 22.5 2 6.8-5.7 7.7-15.8 2-22.5C334.2 339.6 292.4 320 248 320zm-80 80c-17.7 0-32-13.9-32-31 0-7.7 10-28.8 32-59.5 22 30.7 32 51.8 32 59.5 0 17.1-14.3 31-32 31z\"\n\t\t\t\t\tclass=\"\"\n\t\t\t\t></path>\n\t\t\t</svg>\n\t\t\t<p>{{ 'ERROR_OCURRED' | translate }}</p>\n\t\t</div>\n\t</ng-template>\n</div>\n\n<ng-template #defaultHeaderTpt let-header=\"header\" let-property=\"property\">\n\t<i\n\t\tclass=\"fa-solid fa-{{ header.icon }}\"\n\t\t[ngClass]=\"{ 'me-2 mr-2': header.title }\"\n\t\t*ngIf=\"header.icon\"\n\t\taria-hidden=\"true\"\n\t></i>\n\t<div\n\t\t[ngClass]=\"{\n\t\t\t'me-auto mr-auto': header.align === 'start',\n\t\t\t'ms-auto ml-auto': header.align === 'end',\n\t\t\t'mx-auto': header.align === 'center'\n\t\t}\"\n\t>\n\t\t<span *ngIf=\"header.title\" class=\"text-wrap\">{{\n\t\t\theader.title ?? header.property | unwrapAsync\n\t\t}}</span>\n\t</div>\n</ng-template>\n\n<ng-template\n\t#defaultFilterTpt\n\tlet-header=\"header\"\n\tlet-formControl=\"formControl\"\n>\n\t<ng-container [ngSwitch]=\"header.filter.type\">\n\t\t<select\n\t\t\t*ngSwitchCase=\"'dropdown'\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\tclass=\"form-select form-control\"\n\t\t>\n\t\t\t<option *ngIf=\"header.filter.placeholder\" [ngValue]=\"null\">\n\t\t\t\t{{ header.filter.placeholder }}\n\t\t\t</option>\n\t\t\t<ng-container\n\t\t\t\t*ngIf=\"header.filter.options | isObservable; else elseTemplate\"\n\t\t\t>\n\t\t\t\t<option\n\t\t\t\t\t*ngFor=\"let option of header.filter.options | async\"\n\t\t\t\t\t[value]=\"option[header.filter.bindValue || 'id']\"\n\t\t\t\t>\n\t\t\t\t\t{{ option[header.filter.bindLabel || 'name'] }}\n\t\t\t\t</option>\n\t\t\t</ng-container>\n\t\t\t<ng-template #elseTemplate>\n\t\t\t\t<option\n\t\t\t\t\t*ngFor=\"let option of header.filter.options\"\n\t\t\t\t\t[value]=\"option[header.filter.bindValue || 'id']\"\n\t\t\t\t>\n\t\t\t\t\t{{ option[header.filter.bindLabel || 'name'] }}\n\t\t\t\t</option>\n\t\t\t</ng-template>\n\t\t</select>\n\t\t<paginable-table-range-input\n\t\t\t*ngSwitchCase=\"'number-range'\"\n\t\t\ttype=\"number\"\n\t\t\t[formControl]=\"formControl\"\n\t\t>\n\t\t</paginable-table-range-input>\n\t\t<paginable-table-range-input\n\t\t\t*ngSwitchCase=\"'date-range'\"\n\t\t\ttype=\"date\"\n\t\t\t[formControl]=\"formControl\"\n\t\t>\n\t\t</paginable-table-range-input>\n\t\t<select\n\t\t\t*ngSwitchCase=\"'boolean'\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\tclass=\"form-select form-control\"\n\t\t>\n\t\t\t<option [ngValue]=\"null\">\n\t\t\t\t{{\n\t\t\t\t\theader.filter.placeholder ?? 'SELECT_ONE'\n\t\t\t\t\t\t| translate\n\t\t\t\t\t\t| ucfirst\n\t\t\t\t}}\n\t\t\t</option>\n\t\t\t<option [ngValue]=\"true\">\n\t\t\t\t{{ header.filter.trueLabel ?? ('TRUE' | translate | ucfirst) }}\n\t\t\t</option>\n\t\t\t<option [ngValue]=\"false\">\n\t\t\t\t{{\n\t\t\t\t\theader.filter.falseLabel ?? ('FALSE' | translate | ucfirst)\n\t\t\t\t}}\n\t\t\t</option>\n\t\t</select>\n\t\t<input\n\t\t\t*ngSwitchDefault\n\t\t\t[type]=\"header.filter.type\"\n\t\t\t[formControl]=\"formControl\"\n\t\t\tclass=\"form-control\"\n\t\t\t[placeholder]=\"header.filter.placeholder || ''\"\n\t\t/>\n\t</ng-container>\n</ng-template>\n\n<ng-template\n\t#defaultCellTpt\n\tlet-property=\"property\"\n\tlet-item=\"item\"\n\tlet-header=\"header\"\n>\n\t<ng-container *ngIf=\"header.buttons; else propertyCellTpt\">\n\t\t<div\n\t\t\tclass=\"d-flex flex-nowrap gap-2 justify-content-end align-items-center\"\n\t\t>\n\t\t\t<ng-container *ngFor=\"let button of header.buttons\">\n\t\t\t\t<ng-container *ngIf=\"button.buttons; else buttonTpt\">\n\t\t\t\t\t<paginable-table-dropdown\n\t\t\t\t\t\t[options]=\"button\"\n\t\t\t\t\t\t[item]=\"item\"\n\t\t\t\t\t\tclass=\"d-inline-block\"\n\t\t\t\t\t>\n\t\t\t\t\t</paginable-table-dropdown>\n\t\t\t\t</ng-container>\n\t\t\t\t<ng-template #buttonTpt>\n\t\t\t\t\t<button\n\t\t\t\t\t\t*ngIf=\"!(isHidden(button, item) | async)\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"btn px-1\"\n\t\t\t\t\t\t[attr.title]=\"button.tooltip\"\n\t\t\t\t\t\t(click)=\"handleAction($event, button.handler, item)\"\n\t\t\t\t\t\t[ngClass]=\"button.classlist ?? []\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"d-flex flex-nowrap align-items-center gap-1\"\n\t\t\t\t\t\t\t[ngClass]=\"\n\t\t\t\t\t\t\t\tbutton.color ? 'text-' + button.color : ''\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ng-hub-ui-icon\n\t\t\t\t\t\t\t\t[config]=\"button.icon\"\n\t\t\t\t\t\t\t></ng-hub-ui-icon>\n\t\t\t\t\t\t\t<ng-conainer\n\t\t\t\t\t\t\t\tclass=\"button-label\"\n\t\t\t\t\t\t\t\t*ngIf=\"button.title\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{{ button.title }}</ng-conainer\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</button>\n\t\t\t\t</ng-template>\n\t\t\t</ng-container>\n\t\t</div>\n\t</ng-container>\n\t<ng-template #propertyCellTpt> {{ property }} </ng-template>\n</ng-template>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n\tselector: '[listItemTpt]'\n})\nexport class PaginableListItemDirective {\n\tconstructor(public template: TemplateRef<any>) {}\n}\n","import {\n\tDirective,\n\tElementRef,\n\tHostListener,\n\tInput,\n\tRenderer2\n} from '@angular/core';\n\n@Directive({\n\tselector: '[tooltip]'\n})\nexport class TooltipDirective {\n\t@Input('tooltip') tooltipTitle!: string;\n\t@Input() placement?: string;\n\t@Input() delay?: number;\n\ttooltip!: HTMLElement | null;\n\toffset = 8;\n\n\tconstructor(private el: ElementRef, private renderer: Renderer2) {}\n\n\t@HostListener('mouseenter') onMouseEnter() {\n\t\tif (!this.tooltip) {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\t@HostListener('click') onClick() {\n\t\tif (this.tooltip) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\t@HostListener('mouseleave') onMouseLeave() {\n\t\tif (this.tooltip) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tshow() {\n\t\tthis.create();\n\t\tthis.setPosition();\n\t\tthis.renderer.addClass(this.tooltip, 'ng-tooltip-show');\n\t}\n\n\thide() {\n\t\tthis.renderer.removeClass(this.tooltip, 'ng-tooltip-show');\n\t\twindow.setTimeout(() => {\n\t\t\tthis.renderer.removeChild(document.body, this.tooltip);\n\t\t\tthis.tooltip = null;\n\t\t}, this.delay);\n\t}\n\n\tcreate() {\n\t\tthis.tooltip = this.renderer.createElement('span');\n\n\t\tthis.renderer.appendChild(\n\t\t\tthis.tooltip,\n\t\t\tthis.renderer.createText(this.tooltipTitle) // textNode\n\t\t);\n\n\t\tthis.renderer.appendChild(document.body, this.tooltip);\n\t\t// this.renderer.appendChild(this.el.nativeElement, this.tooltip);\n\n\t\tthis.renderer.addClass(this.tooltip, 'ng-tooltip');\n\t\tthis.renderer.addClass(this.tooltip, `ng-tooltip-${this.placement}`);\n\n\t\t// delay 설정\n\t\tthis.renderer.setStyle(\n\t\t\tthis.tooltip,\n\t\t\t'-webkit-transition',\n\t\t\t`opacity ${this.delay}ms`\n\t\t);\n\t\tthis.renderer.setStyle(\n\t\t\tthis.tooltip,\n\t\t\t'-moz-transition',\n\t\t\t`opacity ${this.delay}ms`\n\t\t);\n\t\tthis.renderer.setStyle(\n\t\t\tthis.tooltip,\n\t\t\t'-o-transition',\n\t\t\t`opacity ${this.delay}ms`\n\t\t);\n\t\tthis.renderer.setStyle(\n\t\t\tthis.tooltip,\n\t\t\t'transition',\n\t\t\t`opacity ${this.delay}ms`\n\t\t);\n\t}\n\n\tsetPosition() {\n\t\tif (!this.tooltip) {\n\t\t\treturn;\n\t\t}\n\t\t// 호스트 요소의 사이즈와 위치 정보\n\t\tconst hostPos = this.el.nativeElement.getBoundingClientRect();\n\n\t\t// tooltip 요소의 사이즈와 위치 정보\n\t\tconst tooltipPos = this.tooltip.getBoundingClientRect();\n\n\t\t// window의 scroll top\n\t\t// getBoundingClientRect 메소드는 viewport에서의 상대적인 위치를 반환한다.\n\t\t// 스크롤이 발생한 경우, tooltip 요소의 top에 세로 스크롤 좌표값을 반영하여야 한다.\n\t\tconst scrollPos =\n\t\t\twindow.pageYOffset ||\n\t\t\tdocument.documentElement.scrollTop ||\n\t\t\tdocument.body.scrollTop ||\n\t\t\t0;\n\n\t\tlet top, left;\n\n\t\tif (this.placement === 'top') {\n\t\t\ttop = hostPos.top - tooltipPos.height - this.offset;\n\t\t\tleft = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n\t\t}\n\n\t\tif (this.placement === 'bottom') {\n\t\t\ttop = hostPos.bottom + this.offset;\n\t\t\tleft = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\n\t\t}\n\n\t\tif (this.placement === 'left') {\n\t\t\ttop = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n\t\t\tleft = hostPos.left - tooltipPos.width - this.offset;\n\t\t}\n\n\t\tif (this.placement === 'right') {\n\t\t\ttop = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\n\t\t\tleft = hostPos.right + this.offset;\n\t\t}\n\n\t\t// 스크롤이 발생한 경우, tooltip 요소의 top에 세로 스크롤 좌표값을 반영하여야 한다.\n\t\tthis.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\n\t\tthis.renderer.setStyle(this.tooltip, 'left', `${left}px`);\n\t}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'get'\n})\nexport class GetPipe implements PipeTransform {\n\n\ttransform(value: any, path: string, defaultValue?: any): any {\n\t\treturn path.split('.').reduce((a, c) => (a && a[c] ? a[c] : (defaultValue || null)), value);\n\t}\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'isObject'\n})\nexport class IsObjectPipe implements PipeTransform {\n\n\ttransform(value: any): boolean {\n\t\treturn typeof value === 'object';\n\t}\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'isString'\n})\nexport class IsStringPipe implements PipeTransform {\n\n\ttransform(value: any): boolean {\n\t\treturn typeof value === 'string';\n\t}\n\n}\n","import { CommonModule } from '@angular/common';\nimport {\n\tModuleWithProviders,\n\tNgModule,\n\tOptional,\n\tSkipSelf\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HubIconComponent } from '../public-api';\nimport { DropdownComponent } from './components/dropdown/dropdown.component';\nimport { MenuFilterComponent } from './components/menu-filter/menu-filter.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { PaginableTableDropdownComponent } from './components/paginable-table-dropdown/paginable-table-dropdown.component';\nimport { PaginableTableRangeInputComponent } from './components/paginable-table-range-input/paginable-table-range-input.component';\nimport { PaginableTableComponent } from './components/paginable-table/paginable-table.component';\nimport { PaginatorComponent } from './components/paginator/paginator.component';\nimport { ResizableComponent } from './components/resizable/resizable.component';\nimport { PaginableListItemDirective } from './directives/paginable-list-item.directive';\nimport { PaginableTableCellDirective } from './directives/paginable-table-cell.directive';\nimport { PaginableTableErrorDirective } from './directives/paginable-table-error.directive';\nimport { PaginableTableExpandingRowDirective } from './directives/paginable-table-expanding-row.directive';\nimport { PaginableTableFilterDirective } from './directives/paginable-table-filter.directive';\nimport { PaginableTableHeaderDirective } from './directives/paginable-table-header.directive';\nimport { PaginableTableLoadingDirective } from './directives/paginable-table-loading.directive';\nimport { PaginableTableNotFoundDirective } from './directives/paginable-table-not-found.directive';\nimport { PaginableTableRowDirective } from './directives/paginable-table-row.directive';\nimport { ResizableDirective } from './directives/resizable.directive';\nimport { TooltipDirective } from './directives/tooltip.directive';\nimport { PaginableTableConfig } from './interfaces/paginable-table-config';\nimport { GetPipe } from './pipes/get.pipe';\nimport { IsObjectPipe } from './pipes/is-object.pipe';\nimport { IsObservablePipe } from './pipes/is-observable.pipe';\nimport { IsStringPipe } from './pipes/is-string.pipe';\nimport { UcfirstPipe } from './pipes/ucfirst.pipe';\nimport { UnwrapAsyncPipe } from './pipes/unwrap-async.pipe';\nimport { PaginableTranslationService } from './services/paginable-translation.service';\nimport { PaginableService } from './services/paginable.service';\nimport { PaginateConfigService } from './services/paginate-config.service';\nimport { TranslatePipe } from './translate.pipe';\n\n@NgModule({\n\tdeclarations: [\n\t\tPaginableTableComponent,\n\t\tPaginableTableHeaderDirective,\n\t\tPaginableTableRowDirective,\n\t\tPaginableTableCellDirective,\n\t\tPaginableTableLoadingDirective,\n\t\tPaginableTableExpandingRowDirective,\n\t\tGetPipe,\n\t\tIsObjectPipe,\n\t\tIsStringPipe,\n\t\tPaginableTableDropdownComponent,\n\t\tResizableComponent,\n\t\tResizableDirective,\n\t\tPaginableTableErrorDirective,\n\t\tPaginableTableRangeInputComponent,\n\t\tPaginableTableFilterDirective,\n\t\tIsObservablePipe,\n\t\tTooltipDirective,\n\t\tModalComponent,\n\t\tMenuFilterComponent,\n\t\tPaginableListItemDirective\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tTranslatePipe,\n\t\tReactiveFormsModule,\n\t\tDropdownComponent,\n\t\tPaginatorComponent,\n\t\tPaginableTableNotFoundDirective,\n\t\tUcfirstPipe,\n\t\tHubIconComponent,\n\t\tUnwrapAsyncPipe\n\t],\n\texports: [\n\t\tPaginableTableComponent,\n\t\tPaginableTableHeaderDirective,\n\t\tPaginableTableRowDirective,\n\t\tPaginableTableCellDirective,\n\t\tPaginableTableLoadingDirective,\n\t\tPaginableTableErrorDirective,\n\t\tPaginableTableExpandingRowDirective,\n\t\tPaginableTableFilterDirective,\n\t\tResizableDirective,\n\t\tGetPipe,\n\t\tIsObjectPipe,\n\t\tIsStringPipe,\n\t\tIsObservablePipe,\n\t\tResizableComponent,\n\t\tPaginableTableErrorDirective,\n\t\tPaginableTableRangeInputComponent,\n\t\tTooltipDirective,\n\t\tModalComponent,\n\t\tPaginableListItemDirective\n\t],\n\tproviders: []\n})\nexport class NgPaginableModule {\n\tconstructor(@Optional() @SkipSelf() parentModule?: NgPaginableModule) {\n\t\tif (parentModule) {\n\t\t\tconsole.warn('NgPaginableModule created multiple times');\n\t\t}\n\t}\n\n\tstatic forRoot(\n\t\tconfig?: PaginableTableConfig\n\t): ModuleWithProviders<NgPaginableModule> {\n\t\treturn {\n\t\t\tngModule: NgPaginableModule,\n\t\t\tproviders: [\n\t\t\t\t{\n\t\t\t\t\tprovide: PaginateConfigService,\n\t\t\t\t\tuseValue: config\n\t\t\t\t},\n\t\t\t\tPaginableService,\n\t\t\t\tPaginableTranslationService\n\t\t\t]\n\t\t};\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport {\n\tComponent,\n\tContentChild,\n\tInput,\n\tOutput,\n\tTemplateRef,\n\tinject\n} from '@angular/core';\nimport {\n\tFormArray,\n\tFormBuilder,\n\tFormControl,\n\tNG_VALUE_ACCESSOR,\n\tReactiveFormsModule\n} from '@angular/forms';\nimport { PaginatorComponent } from '../../components/paginator/paginator.component';\nimport { PaginableListItemDirective } from '../../directives/paginable-list-item.directive';\nimport { PaginableTableNotFoundDirective } from '../../directives/paginable-table-not-found.directive';\nimport { ItemClickEvent } from '../../interfaces/item-click-event';\nimport { PaginableTableButton } from '../../interfaces/paginable-table-button';\nimport { PaginableTableDropdown } from '../../interfaces/paginable-table-dropdown';\nimport { PaginableTableOptions } from '../../interfaces/paginable-table-options';\nimport { UcfirstPipe } from '../../pipes/ucfirst.pipe';\nimport { TranslatePipe } from '../../translate.pipe';\nimport { getValue } from '../../utils';\n\n@Component({\n\tselector: 'hub-ui-paginable-list, ng80-paginable-list',\n\ttemplateUrl: './paginable-list.component.html',\n\tstyleUrls: ['./paginable-list.component.scss'],\n\thost: {\n\t\tclass: 'd-flex flex-column gap-4'\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: PaginableListComponent,\n\t\t\tmulti: true\n\t\t}\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tReactiveFormsModule,\n\t\tPaginatorComponent,\n\t\tPaginableTableNotFoundDirective,\n\t\tTranslatePipe,\n\t\tUcfirstPipe\n\t],\n\tstandalone: true\n})\nexport class PaginableListComponent<T = any> {\n\t#fb = inject(FormBuilder);\n\n\t@Input() bindValue?: string;\n\t@Input() bindLabel: string = 'label';\n\t@Input() bindChildren: string = 'children';\n\n\t@Input() selectable!: string | null;\n\n\t@Input() options: PaginableTableOptions = {\n\t\tcursor: 'default',\n\t\thoverableRows: false,\n\t\tstriped: null,\n\t\tvariant: null,\n\t\tsearchable: false\n\t};\n\n\tprivate _items!: Array<T>;\n\t@Input()\n\tget items(): Array<T> {\n\t\treturn this._items;\n\t}\n\tset items(v: Array<T>) {\n\t\tthis._items = v ?? [];\n\t\tthis.form.clear();\n\t\tthis.buildForm(this.form, this._items);\n\t}\n\n\t@Input() clickFn: (event: ItemClickEvent<T>) => void | Promise<void>;\n\n\tform: FormArray = this.#fb.array([]);\n\n\tvalue: Array<T & { collapsed: boolean }> = [];\n\n\t// NOTE: Templates\n\n\t@ContentChild(PaginableListItemDirective, { read: TemplateRef })\n\titemTpt?: TemplateRef<any>;\n\t@ContentChild(PaginableTableNotFoundDirective, { read: TemplateRef })\n\tnoDataTpt?: TemplateRef<any>;\n\n\t// NOTE: Otros\n\tisDisabled: boolean = false;\n\n\tonChange: any = () => {};\n\tonTouch: any = () => {};\n\n\t// NOTE: Filters\n\n\tsearchFG = this.#fb.control({});\n\n\t// NOTE: Batch actions\n\n\t/**\n\t * Collection of actions for items\n\t *\n\t * @type {PaginableTableRowAction[]}\n\t * @memberof PaginableTableComponent\n\t */\n\tprivate _batchActions: Array<\n\t\tPaginableTableDropdown | PaginableTableButton\n\t> = [];\n\t@Input()\n\tget batchActions(): Array<PaginableTableDropdown | PaginableTableButton> {\n\t\treturn this._batchActions;\n\t}\n\tset batchActions(v: Array<PaginableTableDropdown | PaginableTableButton>) {\n\t\tthis._batchActions = v.map((b) => {\n\t\t\tif ((b as PaginableTableDropdown).buttons) {\n\t\t\t\tb = { fill: null, position: 'start', color: 'light', ...b };\n\t\t\t}\n\t\t\treturn b;\n\t\t});\n\t}\n\n\t// NOTE: Control access value\n\n\twriteValue(value: Array<T> = []): void {\n\t\t// this.value = this.buildValue(value);\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouch = fn;\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\tthis.isDisabled = isDisabled;\n\t}\n\n\t/**\n\t * Handles the action to be executed in a batch\n\t *\n\t * @param {Event} event\n\t * @memberof PaginableTableComponent\n\t */\n\thandleBatchAction(event: any) {\n\t\tevent.handler(this.value);\n\t}\n\n\tbuildForm(form: FormArray, items: Array<any>) {\n\t\tfor (const index in items) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(items, index)) {\n\t\t\t\tconst item = items[index];\n\n\t\t\t\tconst group = this.#fb.group({\n\t\t\t\t\tselected: [true],\n\t\t\t\t\tcollapsed: [true],\n\t\t\t\t\tdata: [item],\n\t\t\t\t\tchildren: this.#fb.array([])\n\t\t\t\t});\n\n\t\t\t\tgroup.patchValue(item);\n\n\t\t\t\tif (item[this.bindChildren]?.length) {\n\t\t\t\t\tthis.buildForm(\n\t\t\t\t\t\tgroup.get('children') as FormArray,\n\t\t\t\t\t\titem[this.bindChildren]\n\t\t\t\t\t);\n\t\t\t\t\t// newItem['children'] = this.buildValue(children);\n\t\t\t\t}\n\t\t\t\tform.push(group);\n\t\t\t}\n\t\t}\n\t}\n\n\tbuildValue(items: Array<T>): Array<T & { collapsed: boolean }> {\n\t\tconst value: Array<T & { collapsed: boolean }> = [];\n\t\tfor (const item of items) {\n\t\t\tconst { children, ...newItem } = item as any;\n\t\t\tif (children?.length) {\n\t\t\t\tnewItem['children'] = this.buildValue(children);\n\t\t\t}\n\t\t\tvalue.push({\n\t\t\t\t...newItem,\n\t\t\t\tcollapsed: true\n\t\t\t});\n\t\t}\n\t\treturn value;\n\t}\n\n\ttoggleCollapsed(control: FormControl) {\n\t\tcontrol.patchValue(!control.value);\n\t}\n\n\t/**\n\t * Handles click events by extracting specific properties and passing them to a callback function.\n\t *\n\t * @param  - The `onItemClick` function takes in the following parameters: collapsed, selected and item.\n\t * @param {number} depth - The `depth` parameter in the `onItemClick` function represents the depth level of the item being\n\t * clicked. It is a number that indicates how deep the item is nested within a hierarchical structure.\n\t * @param {number} index - The `index` parameter in the `onItemClick` function represents the position of the item that was clicked\n\t * within a list or array. It is a number that indicates the index of the clicked item.\n\t *\n\t * @returns If the `clickFn` property is not defined in the current context, the `onItemClick` function will return without\n\t * executing any further code.\n\t */\n\tonItemClick(\n\t\t{ collapsed, selected, ...item },\n\t\tdepth: number,\n\t\tindex: number\n\t) {\n\t\tif (!this.clickFn) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clickFn({\n\t\t\tdepth,\n\t\t\tindex,\n\t\t\tselected,\n\t\t\tcollapsed,\n\t\t\tvalue: this.bindLabel ? getValue(item, this.bindLabel) : item,\n\t\t\titem: item as T\n\t\t});\n\t}\n\n\tonPageClicked(page: number) {\n\t\t// if (!this.data) {\n\t\t// \treturn;\n\t\t// }\n\t\t// this.data.currentPage = page;\n\t\t// this.triggerTheParamChanges();\n\t}\n\n\tfilter() {\n\t\t// if (!this.data) {\n\t\t// \treturn;\n\t\t// }\n\t\t// this.data.currentPage = 1;\n\t\t// this.filterChange.emit({\n\t\t// \tsearchText: this.searchFG?.value ?? null,\n\t\t// \tspecificSearch: this.specificSearchFG?.value ?? null\n\t\t// });\n\t}\n}\n","<div\n\t*ngIf=\"batchActions?.length || options.searchable\"\n\tclass=\"d-flex justify-content-between gap-3\"\n>\n\t<div class=\"ms-auto\">\n\t\t<div class=\"d-flex justify-content-end gap-2\">\n\t\t\t<div\n\t\t\t\t*ngIf=\"options.searchable\"\n\t\t\t\tclass=\"input-group search_input-group\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclass=\"form-control border border-light search_input\"\n\t\t\t\t\t[formControl]=\"searchFG\"\n\t\t\t\t\t[placeholder]=\"'SEARCH' | translate | ucfirst\"\n\t\t\t\t\t(keyup.enter)=\"filter()\"\n\t\t\t\t/>\n\t\t\t\t<div class=\"input-group-append\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"btn btn-light search_button\"\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t(click)=\"filter()\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<i class=\"fa fa-search\" aria-hidden=\"true\"></i>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n\n<ng-container\n\t[ngTemplateOutlet]=\"containerTpt\"\n\t[ngTemplateOutletContext]=\"{\n\t\tformArray: form,\n\t\tisRoot: true,\n\t\titems: items,\n\t\tdepth: 0\n\t}\"\n></ng-container>\n\n<ng-template\n\t#containerTpt\n\tlet-formArray=\"formArray\"\n\tlet-isRoot=\"isRoot\"\n\tlet-items=\"items\"\n\tlet-depth=\"depth\"\n>\n\t<ul class=\"list-group list-group-flush tree-list\" [class.root]=\"isRoot\">\n\t\t<li\n\t\t\tclass=\"list-group-item tree-list__node\"\n\t\t\t[class.clickable-item]=\"clickFn\"\n\t\t\t*ngFor=\"let formGroup of formArray.controls; let index = index\"\n\t\t\t[formGroup]=\"formGroup\"\n\t\t\t(click)=\"\n\t\t\t\tonItemClick(formGroup.value, depth, index);\n\t\t\t\t$event.preventDefault();\n\t\t\t\t$event.stopPropagation()\n\t\t\t\"\n\t\t>\n\t\t\t<ng-container *ngIf=\"formGroup.value as item\">\n\t\t\t\t<div\n\t\t\t\t\tclass=\"d-flex justify-content-between align-items-center gap-2\"\n\t\t\t\t>\n\t\t\t\t\t<input\n\t\t\t\t\t\t*ngIf=\"selectable === 'multiple'\"\n\t\t\t\t\t\tclass=\"form-check-input tree-list__node-checkbox\"\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tformControlName=\"selected\"\n\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t/>\n\t\t\t\t\t<div class=\"tree-list__node-label\">\n\t\t\t\t\t\t<ng-container\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"itemTpt || defaultItemtTpt\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\t\t\t\tdata: items[index],\n\t\t\t\t\t\t\t\tdepth,\n\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\tcollapsed: !!formGroup.get('collapsed').value,\n\t\t\t\t\t\t\t\tselected: formGroup.get('selected').value\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t</ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"tree-list__node-buttons d-flex align-items-center gap-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tclass=\"btn\"\n\t\t\t\t\t\t\t*ngIf=\"item[bindChildren]?.length\"\n\t\t\t\t\t\t\t(click)=\"\n\t\t\t\t\t\t\t\ttoggleCollapsed(formGroup.get('collapsed'));\n\t\t\t\t\t\t\t\t$event.preventDefault();\n\t\t\t\t\t\t\t\t$event.stopPropagation()\n\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\tclass=\"fas\"\n\t\t\t\t\t\t\t\t[ngClass]=\"\n\t\t\t\t\t\t\t\t\titem.collapsed\n\t\t\t\t\t\t\t\t\t\t? 'fa-chevron-down'\n\t\t\t\t\t\t\t\t\t\t: 'fa-chevron-up'\n\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<ng-container\n\t\t\t\t\t*ngIf=\"item[bindChildren]?.length && !item.collapsed\"\n\t\t\t\t\t[ngTemplateOutlet]=\"containerTpt\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{\n\t\t\t\t\t\tformArray: formGroup.get('children'),\n\t\t\t\t\t\titems: items[index][bindChildren],\n\t\t\t\t\t\tdepth: depth + 1\n\t\t\t\t\t}\"\n\t\t\t\t></ng-container\n\t\t\t></ng-container>\n\t\t</li>\n\t</ul>\n</ng-template>\n\n<!-- <paginable-table-paginator\n\t(onPageClick)=\"onPageClicked($event)\"\n\tclass=\"d-block mb-4\"\n/> -->\n\n<!-- <paginable-table-paginator\n\t(onPageClick)=\"pageClicked($event)\"\n\t*ngIf=\"paginate && data && data[mapping.data]?.length\"\n\t[pagination]=\"data\"\n\tclass=\"d-block mb-4\"\n/> -->\n\n<ng-template #noDataRowTpt>\n\t<li class=\"list-group-item\">\n\t\t<ng-container [ngTemplateOutlet]=\"noDataTpt || defaultNoDataTpt\">\n\t\t</ng-container>\n\t</li>\n</ng-template>\n\n<ng-template #defaultNoDataTpt>\n\t<div class=\"alert alert-info d-flex align-items-center m-4\" role=\"alert\">\n\t\t<i class=\"fa fa-info fa-2x me-4 mr-4\" aria-hidden=\"true\"></i>\n\t\t{{ 'NO_RESULTS_FOUND' | translate | ucfirst }}\n\t</div>\n</ng-template>\n\n<ng-template #defaultItemtTpt let-data=\"data\">\n\t{{ data[bindLabel] }}\n</ng-template>\n","export enum SelectionTypes {\n\tSingle = 'single',\n\tMultiple = 'multiple'\n}\n","// Modules\nexport { NgPaginableModule } from './ng-paginable.module';\n\n// Components\nexport { ModalComponent } from './components/modal/modal.component';\nexport { PaginableTableDropdownComponent } from './components/paginable-table-dropdown/paginable-table-dropdown.component';\nexport { PaginableTableRangeInputComponent } from './components/paginable-table-range-input/paginable-table-range-input.component';\nexport { PaginableTableComponent } from './components/paginable-table/paginable-table.component';\nexport { PaginatorComponent } from './components/paginator/paginator.component';\nexport { ResizableComponent } from './components/resizable/resizable.component';\nexport { PaginableListComponent } from './list/paginable-list/paginable-list.component';\nexport { HubIconComponent } from './components/icon/icon.component';\n\n// Directives\nexport { PaginableListItemDirective } from './directives/paginable-list-item.directive';\nexport { PaginableTableCellDirective } from './directives/paginable-table-cell.directive';\nexport { PaginableTableErrorDirective } from './directives/paginable-table-error.directive';\nexport { PaginableTableExpandingRowDirective } from './directives/paginable-table-expanding-row.directive';\nexport { PaginableTableFilterDirective } from './directives/paginable-table-filter.directive';\nexport { PaginableTableHeaderDirective } from './directives/paginable-table-header.directive';\nexport { PaginableTableLoadingDirective } from './directives/paginable-table-loading.directive';\nexport { PaginableTableNotFoundDirective } from './directives/paginable-table-not-found.directive';\nexport { PaginableTableRowDirective } from './directives/paginable-table-row.directive';\nexport { ResizableDirective } from './directives/resizable.directive';\nexport { TooltipDirective } from './directives/tooltip.directive';\n\n// Pipes\nexport { GetPipe } from './pipes/get.pipe';\nexport { IsObjectPipe } from './pipes/is-object.pipe';\nexport { IsObservablePipe } from './pipes/is-observable.pipe';\nexport { IsStringPipe } from './pipes/is-string.pipe';\n\n// Interfaces\nexport { FilterChangeEvent } from './interfaces/filter-change-event';\nexport { PaginableTableButton } from './interfaces/paginable-table-button';\nexport { PaginableTableConfig } from './interfaces/paginable-table-config';\nexport { PaginableTableDropdown } from './interfaces/paginable-table-dropdown';\nexport { PaginableTableHeader } from './interfaces/paginable-table-header';\nexport { PaginableTableItem } from './interfaces/paginable-table-item';\nexport { PaginableTableOptions } from './interfaces/paginable-table-options';\nexport { PaginableTableOrdination } from './interfaces/paginable-table-ordination';\nexport { PaginableTablePagination } from './interfaces/paginable-table-pagination';\nexport { PaginableTableRowAction } from './interfaces/paginable-table-row-action';\nexport { PaginationParamsChangeEvent } from './interfaces/params-change-event';\nexport { View } from './interfaces/view';\n\n// Services\nexport { PaginationService } from './services/pagination.service';\nexport { PaginableService } from './services/paginable.service';\nexport { PaginableTranslationService } from './services/paginable-translation.service';\n\n// Constants\nexport { BREAKPOINTS } from './constants/breakpoints';\n\n// Enums\nexport { SelectionTypes } from './enums/selection-types';\n","/*\n * Public API Surface of paginable\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["locale","enLang","esLang","i3.TranslatePipe","i4.UcfirstPipe","i1.ModalService","i2","i2.HubIconComponent","i1.ResizableDirective","i3.DropdownComponent","i4.PaginatorComponent","i5.HubIconComponent","i6.PaginableTableDropdownComponent","i7.ResizableComponent","i8.ResizableDirective","i9.PaginableTableRangeInputComponent","i10.MenuFilterComponent","i11.TranslatePipe","i12.UcfirstPipe","i13.UnwrapAsyncPipe","i14.IsObservablePipe"],"mappings":"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"}