{"version":3,"file":"ngx-gilmapi-table.mjs","sources":["../../../projects/ui-angular-components/table/src/components/avatar/gmp-avatar.component.ts","../../../projects/ui-angular-components/table/src/components/avatar/gmp-avatar.component.html","../../../projects/ui-angular-components/table/src/interfaces/ISort.ts","../../../projects/ui-angular-components/table/src/interfaces/TableTypeColumns.ts","../../../projects/ui-angular-components/table/src/components/table/table.component.ts","../../../projects/ui-angular-components/table/src/components/table/table.component.html","../../../projects/ui-angular-components/table/src/components/table/table.module.ts","../../../projects/ui-angular-components/table/src/components/table-config/table-config.component.ts","../../../projects/ui-angular-components/table/src/components/table-config/table-config.component.html","../../../projects/ui-angular-components/table/src/components/table-config/table-config.module.ts","../../../projects/ui-angular-components/table/src/interfaces/ITablePaginator.ts","../../../projects/ui-angular-components/table/ngx-gilmapi-table.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n\n/** Muted palette similar to typical avatar initials UIs */\nconst INITIALS_BACKGROUND_COLORS = [\n  '#1abc9c',\n  '#3498db',\n  '#9b59b6',\n  '#34495e',\n  '#16a085',\n  '#27ae60',\n  '#2980b9',\n  '#8e44ad',\n  '#f1c40f',\n  '#e67e22',\n  '#e74c3c',\n  '#95a5a6',\n];\n\n@Component({\n  selector: 'ngx-gmp-avatar',\n  templateUrl: './gmp-avatar.component.html',\n  styleUrls: ['./gmp-avatar.component.scss'],\n  standalone: false,\n})\nexport class GmpAvatarComponent implements OnChanges {\n  @Input({ required: false }) name = '';\n  /** Image URL; on load error falls back to initials */\n  @Input({ required: false }) src: string | null | undefined;\n  /** Edge length in px */\n  @Input({ required: false }) size = 40;\n  @Input({ required: false }) round = false;\n  /** Max number of initials (e.g. 2 → two letters from name) */\n  @Input({ required: false }) initialsSize = 2;\n\n  protected showImage = false;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['src']) {\n      this.showImage = this.hasRenderableSrc(this.src);\n    }\n  }\n\n  protected onImgError(): void {\n    this.showImage = false;\n  }\n\n  protected get initials(): string {\n    return this.computeInitials(this.name, this.initialsSize);\n  }\n\n  protected get backgroundColor(): string {\n    return this.colorFromString(this.name || this.src || '?');\n  }\n\n  protected get fontSizePx(): number {\n    return Math.max(Math.round(this.size * 0.42), 10);\n  }\n\n  protected hasRenderableSrc(value: string | null | undefined): boolean {\n    return typeof value === 'string' && value.trim().length > 0;\n  }\n\n  private computeInitials(raw: string, max: number): string {\n    const n = Math.max(1, Math.floor(max));\n    const trimmed = (raw ?? '').trim();\n    if (!trimmed) {\n      return '?';\n    }\n    const parts = trimmed.split(/\\s+/).filter(Boolean);\n    if (parts.length >= n) {\n      return parts\n        .slice(0, n)\n        .map((p) => p.charAt(0))\n        .join('')\n        .toUpperCase()\n        .slice(0, n);\n    }\n    if (parts.length === 1) {\n      const w = parts[0];\n      return w.slice(0, n).toUpperCase();\n    }\n    const fromWords = parts\n      .map((p) => p.charAt(0))\n      .join('')\n      .toUpperCase();\n    return fromWords.slice(0, n) || '?';\n  }\n\n  private colorFromString(seed: string): string {\n    let hash = 0;\n    for (let i = 0; i < seed.length; i++) {\n      hash = seed.charCodeAt(i) + ((hash << 5) - hash);\n    }\n    const idx = Math.abs(hash) % INITIALS_BACKGROUND_COLORS.length;\n    return INITIALS_BACKGROUND_COLORS[idx];\n  }\n}\n","<div\n  class=\"gmp-avatar\"\n  [style.width.px]=\"size\"\n  [style.height.px]=\"size\"\n  [style.border-radius]=\"round ? '50%' : '0'\"\n  [style.background-color]=\"showImage ? 'transparent' : backgroundColor\"\n>\n  @if (showImage && hasRenderableSrc(src)) {\n    <img\n      [src]=\"src\"\n      [attr.alt]=\"name || ''\"\n      [width]=\"size\"\n      [height]=\"size\"\n      [style.width.px]=\"size\"\n      [style.height.px]=\"size\"\n      [style.border-radius]=\"round ? '50%' : '0'\"\n      draggable=\"false\"\n      (error)=\"onImgError()\"\n    />\n  } @else {\n    <span class=\"gmp-avatar__initials\" [style.fontSize.px]=\"fontSizePx\">{{ initials }}</span>\n  }\n</div>\n","export interface ISort {\n  sortKey: string;\n  sortOrder: sortOrder;\n  sortKeyAux?: string;\n}\n\nexport type sortOrder = 'asc' | 'desc' | '';\n\nexport const DefaultSort: ISort = {\n  sortKey: 'updatedAt',\n  sortOrder: 'desc',\n};\n","export enum TableTypeColumns {\n  ACTIONS,\n  TEXT,\n  CHECKBOX,\n  CUSTOM,\n  DATE,\n  NUMBER,\n  PHOTO,\n  CURRENCY,\n  PERCENTUAL,\n  LINK,\n  TRANSLATION,\n  HTML,\n  PHONE,\n}\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport {\n  CdkDragDrop,\n  moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport { Location } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  effect,\n  ElementRef,\n  EventEmitter,\n  inject,\n  Injector,\n  input,\n  Input,\n  model,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\n\nimport {\n  DefaultSort,\n  ISort,\n} from '../../interfaces/ISort';\nimport {\n  ICustomEventPayload,\n  ICustomTableCellEvent,\n  ICustomTableExpanderEvent,\n  ITable,\n  ITableColumn,\n} from '../../interfaces/ITable';\nimport { ITablePaginator } from '../../interfaces/ITablePaginator';\nimport { TableTypeColumns } from '../../interfaces/TableTypeColumns';\n\n@Component({\n  selector: 'ngx-gmp-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  animations: [\n    trigger('detailExpand', [\n      state('collapsed,void', style({ height: '0px', minHeight: '0' })),\n      state('expanded', style({ height: '100%' })),\n      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n    ]),\n  ],\n  standalone: false,\n})\nexport class GmpTableComponent<T> implements OnInit, AfterViewInit {\n  private location = inject(Location);\n  private cdr = inject(ChangeDetectorRef);\n  @Input() table: ITable<T> = {\n    tableData: new MatTableDataSource([] as T[]),\n    data: [],\n    columns: [],\n    sortOptions: { ...DefaultSort },\n    name: 'table',\n  };\n  @Output() deleteEvent = new EventEmitter<T>();\n  @Output() detailsEvent = new EventEmitter<T>();\n  @Output() editEvent = new EventEmitter<T>();\n  @Output() reloadEvent = new EventEmitter<ITable<T>>();\n  @Output() sortingChangeEvent = new EventEmitter<ISort>();\n  @Output() expandedElementChangeEvent = new EventEmitter<T | null>();\n  @Output() paginatorChangeEvent = new EventEmitter<ITablePaginator>();\n  @Output() photoOpenEvent = new EventEmitter<T>();\n  @Output() selectAllChange = new EventEmitter<boolean>();\n  @Output() customCellEvent = new EventEmitter<ICustomTableCellEvent<T>>();\n  @Output() selectedRowsChange = new EventEmitter<T[]>();\n  @Output() customExpanderEvent = new EventEmitter<ICustomTableExpanderEvent<T>>();\n  @ViewChild(MatSort, { static: true }) sort!: MatSort;\n  @ViewChild('matCheckbox') headerCheckbox!: MatCheckbox;\n  @ViewChildren('customComponentRef') customComponents!: QueryList<ElementRef>;\n  @ContentChild('customLoading') customLoading?: TemplateRef<any>;\n  @ContentChild('customEmptyData') customEmptyData?: TemplateRef<any>;\n  columnsToDisplay: string[] = [];\n  expandedElement!: any;\n  expandedElements = new Set<string | number>();\n  selectedRows: T[] = [];\n  selectedRowIds = new Set<string | number>();\n  imageErrors = new Map<string, boolean>();\n\n  // signals\n  $data = model<T[]>();\n  $columns = model<ITableColumn[]>();\n  $paginator = model<ITablePaginator>();\n  $sortOptions = model<ISort>();\n  $isLoading = model<boolean>();\n  $totalData = input<number>();\n  $selectedRows = model<T[]>([]);\n  @Input() setPairRows!: boolean;\n  @Input() hideHeader!: boolean;\n  @Input() name!: string;\n  @Input() showEditElementIcon!: boolean;\n  @Input() showDeleteElementIcon!: boolean;\n  @Input() showExpandElementIcon!: boolean;\n  @Input() canMoveColumns!: boolean;\n  @Input() canOpenOnClick!: boolean;\n  @Input() canExpandOnClick!: boolean;\n  @Input() customCellComponents!: any;\n  @Input() customEditSvgIcon!: string;\n  @Input() customDeleteSvgIcon!: string;\n  @Input() setURL!: boolean;\n  @Input() expanderComponent!: Type<any>;\n\n  constructor(public injector: Injector) {\n    this.loadEffects();\n  }\n\n  loadEffects(): void {\n    effect(() => {\n      const data = this.$data();\n      if (typeof data !== 'undefined' && data) {\n        this.table.data = data;\n        this.table.tableData = new MatTableDataSource(data);\n      }\n      const isLoading = this.$isLoading();\n      if (typeof isLoading !== 'undefined') {\n        this.table.isLoading = isLoading;\n      }\n      const columns = this.$columns();\n      if (typeof columns !== 'undefined' && columns) {\n        this.table.columns = columns;\n        this.updateColumns(columns);\n      }\n      const sortOptions = this.$sortOptions();\n      if (typeof sortOptions !== 'undefined' && sortOptions) {\n        this.table.sortOptions = sortOptions;\n      }\n      const paginator = this.$paginator();\n      if (typeof paginator !== 'undefined' && paginator) {\n        this.table.paginator = paginator;\n      }\n      const totalData = this.$totalData();\n      if (typeof totalData !== 'undefined' && this.table.paginator) {\n        this.table.paginator = { ...this.table.paginator, count: totalData };\n      }\n      const selectedRows = this.$selectedRows();\n      if (typeof selectedRows !== 'undefined' && selectedRows) {\n        this.selectedRows = selectedRows;\n        this.syncSelectedRowIds();\n      }\n    });\n  }\n\n  loadInputs(): void {\n    if (typeof this.name !== 'undefined' && this.name) this.table.name = this.name;\n    if (typeof this.showEditElementIcon !== 'undefined') this.table.showEditElementIcon = this.showEditElementIcon;\n    if (typeof this.showDeleteElementIcon !== 'undefined') this.table.showDeleteElementIcon = this.showDeleteElementIcon;\n    if (typeof this.showExpandElementIcon !== 'undefined') this.table.showExpandElementIcon = this.showExpandElementIcon;\n    if (typeof this.canMoveColumns !== 'undefined') this.table.canMoveColumns = this.canMoveColumns;\n    if (typeof this.canOpenOnClick !== 'undefined') this.table.canOpenOnClick = this.canOpenOnClick;\n    if (typeof this.canExpandOnClick !== 'undefined') this.table.canExpandOnClick = this.canExpandOnClick;\n    if (typeof this.hideHeader !== 'undefined') this.table.hideHeader = this.hideHeader;\n    if (typeof this.setPairRows !== 'undefined') this.table.setPairRows = this.setPairRows;\n    if (typeof this.customCellComponents !== 'undefined') this.table.customCellComponents = this.customCellComponents;\n    if (typeof this.customEditSvgIcon !== 'undefined') this.table.customEditSvgIcon = this.customEditSvgIcon;\n    if (typeof this.customDeleteSvgIcon !== 'undefined') this.table.customDeleteSvgIcon = this.customDeleteSvgIcon;\n    if (typeof this.expanderComponent !== 'undefined') this.table.expanderComponent = this.expanderComponent;\n  }\n\n  ngOnInit(): void {\n    this.setSorting();\n    this.loadInputs();\n  }\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.setupCustomComponentEvents();\n    }, 0);\n  }\n\n  ngOnChanges(): void {\n    this.updateColumns(this.table.columns);\n  }\n\n  updateColumns(columns: ITableColumn[]): void {\n    this.table.columns = this.table.columns.map(e => {\n      if (e.type !== TableTypeColumns.CUSTOM) {\n        return { ...e };\n      } else {\n        const column = { ...e };\n        if (!e.customComponent && e.customComponentName && this.table?.customCellComponents) {\n          column.customComponent = this.table?.customCellComponents[e.customComponentName];\n        }\n        return column;\n      }\n    });\n    this.columnsToDisplay = columns.filter((e: ITableColumn) => !e.hideColumn).map((e: ITableColumn) => e.value);\n  }\n\n  drop(event: CdkDragDrop<string[]>): void {\n    if (this.table.canMoveColumns) {\n      const columns = this.table.columns.map(e => e.value);\n      const previousIndex = columns.indexOf(columns[event.previousIndex]);\n      const currentIndex = columns.indexOf(columns[event.currentIndex]);\n      moveItemInArray(this.table.columns, previousIndex, currentIndex);\n      this.updateColumns(this.table.columns);\n      this.saveConfigInLocalStore();\n    }\n  }\n\n  setSorting(): void {\n    this.sort.sortChange.subscribe(res => {\n      this.table.sortOptions.sortKey = res.active;\n      this.table.sortOptions.sortOrder = res.direction;\n      this.table.sortOptions.sortKeyAux = res.active;\n      const column = this.table.columns.find(e => e.value === res.active || e.valueAux === res.active);\n      if (column && column.sortValue) {\n        this.table.sortOptions.sortKey = column.sortValue;\n      }\n      this.saveConfigInLocalStore();\n      if (this.$sortOptions) {\n        this.$sortOptions.set({ ...this.table.sortOptions });\n      }\n      this.sortingChangeEvent.emit({ ...this.table.sortOptions });\n      this.setUrl('sort', this.table.sortOptions.sortOrder ? this.table.sortOptions.sortKey + ':' + this.table.sortOptions.sortOrder : '');\n    });\n  }\n\n  reload(): void {\n    this.reloadEvent.emit(this.table);\n  }\n\n  saveConfigInLocalStore(): void {}\n\n  emitPaginatorEvent(event: { pageSize: number; pageIndex: number }): void {\n    if (this.table.paginator) {\n      this.table.paginator.forPage = event.pageSize;\n      this.table.paginator.page = event.pageIndex + 1;\n      if (this.$paginator) {\n        this.$paginator.set({ ...this.table.paginator });\n      }\n      this.setUrl('page', this.table.paginator?.page.toString()!);\n      this.setUrl('size', this.table.paginator?.forPage.toString()!);\n    }\n  }\n\n  emitEditEvent(element: T): void {\n    this.editEvent.emit(element);\n  }\n\n  emitDeleteEvent(element: T): void {\n    this.deleteEvent.emit(element);\n  }\n\n  emitDetailsEvent(element: T): void {\n    this.detailsEvent.emit(element);\n  }\n\n  openPic(element: T): void {\n    this.photoOpenEvent.emit(element);\n  }\n\n  private getImageErrorKey(element: T, column: ITableColumn): string {\n    const id = (element as any)[column.idKey || 'id'];\n    const rowIndex = this.table.data?.indexOf(element) ?? -1;\n    return `${id !== undefined && id !== null && id !== '' ? id : rowIndex}_${column.value}`;\n  }\n\n  onImageError(element: T, column: ITableColumn, event: Event): void {\n    const key = this.getImageErrorKey(element, column);\n    const imgElement = event.target as HTMLImageElement;\n\n    // Si ya estamos usando la URL de error y falla, ocultar la imagen\n    if (this.imageErrors.get(key)) {\n      imgElement.style.display = 'none';\n      return;\n    }\n\n    // Marcar que la imagen original falló - Angular actualizará el src a través de getImageSrc\n    if (column.imageErrorURL) {\n      this.imageErrors.set(key, true);\n      this.cdr.detectChanges();\n    }\n  }\n\n  getImageSrc(element: T, column: ITableColumn): string {\n    const key = this.getImageErrorKey(element, column);\n    if (this.imageErrors.get(key) && column.imageErrorURL) {\n      return column.imageErrorURL;\n    }\n    if (!((element[column.value as keyof T] as string) && column.imagePlaceholderURL)) {\n      return column.imagePlaceholderURL || '';\n    }\n    return element[column.value as keyof T] as string;\n  }\n\n  openElement(element: T): void {\n    if (this.table.canExpandOnClick) {\n      this.expandElement(element);\n    }\n    if (this.table.canOpenOnClick) {\n      this.emitDetailsEvent(element);\n    }\n  }\n\n  expandElement(element: any): void {\n    const id = element?.id;\n    if (!id) return;\n\n    if (this.expandedElements.has(id)) {\n      this.expandedElements.delete(id);\n      this.expandedElement = null;\n    } else {\n      this.expandedElements.add(id);\n      this.expandedElement = element;\n    }\n    this.expandedElementChangeEvent.emit(this.expandedElement);\n  }\n\n  changePage(event: { pageSize: number; pageIndex: number }): void {\n    if (this.table.paginator) {\n      this.table.paginator.forPage = event.pageSize;\n      this.table.paginator.page = event.pageIndex + 1;\n      this.paginatorChangeEvent.emit(this.table.paginator);\n      if (this.$paginator) {\n        this.$paginator.set({ ...this.table.paginator });\n      }\n      this.setUrl('page', this.table.paginator?.page.toString()!);\n      this.setUrl('size', this.table.paginator?.forPage.toString()!);\n    }\n  }\n\n  toggleSelectAll(checked: boolean): void {\n    const hasSelection = this.selectedRowIds.size > 0;\n\n    if (hasSelection) {\n      this.selectedRows = [];\n      this.selectedRowIds.clear();\n    } else {\n      this.selectedRows = [...this.table.data];\n      this.syncSelectedRowIds();\n    }\n\n    this.updateCheckboxColumn();\n    this.emitSelectedRowsChange();\n    this.selectAllChange.emit(!hasSelection);\n\n    if (this.headerCheckbox) {\n      this.headerCheckbox.checked = this.isAllSelected();\n      this.headerCheckbox.indeterminate = this.isSomeSelected();\n    }\n  }\n\n  toggleRowSelection(element: T, checked: boolean): void {\n    const id = (element as any)?.id;\n    if (!id) return;\n\n    if (checked) {\n      if (!this.selectedRowIds.has(id)) {\n        this.selectedRows.push(element);\n        this.selectedRowIds.add(id);\n      }\n    } else {\n      this.selectedRowIds.delete(id);\n      this.selectedRows = this.selectedRows.filter((row: any) => row?.id !== id);\n    }\n\n    this.updateCheckboxColumn();\n    this.emitSelectedRowsChange();\n\n    if (this.headerCheckbox) {\n      this.headerCheckbox.checked = this.isAllSelected();\n      this.headerCheckbox.indeterminate = this.isSomeSelected();\n    }\n  }\n\n  isRowSelected(element: T): boolean {\n    const id = (element as any)?.id;\n    return id ? this.selectedRowIds.has(id) : false;\n  }\n\n  isAllSelected(): boolean {\n    if (!this.table.data || this.table.data.length === 0) {\n      return false;\n    }\n    const allIds = (this.table.data as any[]).map(el => el?.id).filter(id => id !== undefined && id !== null);\n    return allIds.length > 0 && allIds.every(id => this.selectedRowIds.has(id));\n  }\n\n  isSomeSelected(): boolean {\n    return this.selectedRowIds.size > 0 && !this.isAllSelected();\n  }\n\n  syncSelectedRowIds(): void {\n    this.selectedRowIds.clear();\n    this.selectedRows.forEach((row: any) => {\n      if (row?.id) {\n        this.selectedRowIds.add(row.id);\n      }\n    });\n  }\n\n  updateCheckboxColumn(): void {\n    const checkboxColumn = this.table.columns.find(col => col.type === TableTypeColumns.CHECKBOX);\n    if (checkboxColumn) {\n      checkboxColumn.allSelected = this.isAllSelected();\n    }\n  }\n\n  emitSelectedRowsChange(): void {\n    this.selectedRowsChange.emit([...this.selectedRows]);\n    if (this.$selectedRows) {\n      this.$selectedRows.set([...this.selectedRows]);\n    }\n  }\n\n  toggleExpandAll(): void {\n    const data = this.table?.data as any[];\n    if (!data?.length) return;\n\n    if (this.isAllExpanded()) {\n      this.expandedElements.clear();\n      this.expandedElement = null;\n    } else {\n      const allIds = data.map(el => el.id).filter(id => id != null);\n      this.expandedElements = new Set(allIds);\n      const firstId = this.expandedElements.values().next().value;\n      this.expandedElement = data.find(el => el.id === firstId) || null;\n    }\n\n    this.expandedElementChangeEvent.emit(this.expandedElement);\n  }\n\n  isAllExpanded(): boolean {\n    const allIds = (this.table.data as any[]).map(el => el?.id).filter(id => id !== undefined && id !== null);\n    return allIds.length > 0 && allIds.every(id => this.expandedElements.has(id));\n  }\n\n  get TableTypeColumns(): typeof TableTypeColumns {\n    return TableTypeColumns;\n  }\n\n  getRowClasses(element: any, index: number): any {\n    const classes: any = {\n      'pair-row': this.table.setPairRows && index % 2 === 0,\n      'select-line': this.table.canExpandOnClick || this.table.canOpenOnClick,\n      'expanded-expanded-row': this.expandedElement?.id === element.id,\n      'last-row': index === this.table?.data?.length - 1 || index === (this.$data()?.length || 0) - 1,\n    };\n\n    if (element.customClass) {\n      classes[element.customClass] = true;\n    }\n\n    return classes;\n  }\n\n  getCustomEventCallback(element: T): (event: ICustomEventPayload<T>) => void {\n    return (event: ICustomEventPayload<T>) => {\n      const customEvent: ICustomTableCellEvent<T> = {\n        component: this.table.name,\n        action: event.action,\n        element: element,\n        column: event.column,\n        timestamp: Date.now(),\n      };\n      this.customCellEvent.emit(customEvent);\n    };\n  }\n\n  getCustomExpanderEventCallback(element: T): (event: ICustomEventPayload<T>) => void {\n    return (event: ICustomEventPayload<T>) => {\n      const customEvent: ICustomTableExpanderEvent<T> = {\n        component: this.table.name,\n        action: event.action,\n        element: element,\n        timestamp: Date.now(),\n      };\n      this.customExpanderEvent.emit(customEvent);\n    };\n  }\n\n  setupCustomComponentEvents(): void {\n    if (this.customComponents) {\n      this.customComponents.forEach((componentRef, index) => {\n        const componentInstance = (componentRef.nativeElement as any).__ngContext__;\n        if (componentInstance && componentInstance.customEvent) {\n          componentInstance.customEvent.subscribe((event: any) => {\n            const customEvent: ICustomTableCellEvent<T> = {\n              component: this.table.name,\n              action: event.action || 'custom',\n              element: event.element,\n              ...event,\n            };\n            this.customCellEvent.emit(customEvent);\n          });\n        }\n      });\n    }\n  }\n\n  setUrl(key: string, value: string) {\n    if (this.setURL) {\n      const currentUrl = this.location.path();\n      const url = new URL(currentUrl, window.location.origin);\n      if (value === '') {\n        url.searchParams.delete(key);\n      } else {\n        url.searchParams.set(key, value);\n      }\n      this.location.replaceState(url.pathname + url.search);\n    }\n  }\n}\n","<div class=\"table-container\" [ngClass]=\"{ 'table-container__no-paginator': !table.paginator }\">\n  <table\n    mat-table\n    matSort\n    [matSortActive]=\"table.sortOptions.sortKey\"\n    [matSortDirection]=\"table.sortOptions.sortOrder\"\n    multiTemplateDataRows\n    cdkDropList\n    cdkDropListOrientation=\"horizontal\"\n    (cdkDropListDropped)=\"drop($event)\"\n    [dataSource]=\"table.tableData\"\n    [cdkDropListDisabled]=\"!table.canMoveColumns\"\n    class=\"table-container__table\"\n  >\n    @for (column of table.columns; track column.value) {\n      <ng-container [matColumnDef]=\"column.value\" [stickyEnd]=\"column.stickyOnEnd\" [sticky]=\"column.stickyOnStart\">\n        <th\n          mat-header-cell\n          mat-sort-header\n          cdkDrag\n          *matHeaderCellDef\n          [disabled]=\"column.disableSorting\"\n          [ngClass]=\"column.customHeaderClass\"\n          [ngStyle]=\"column.customHeaderStyles\"\n        >\n          @if (!column.hideHeaderCheckbox && column.type == TableTypeColumns.CHECKBOX) {\n            <mat-checkbox\n              color=\"primary\"\n              (change)=\"toggleSelectAll($event.checked)\"\n              [checked]=\"isAllSelected()\"\n              [indeterminate]=\"isSomeSelected()\"\n              #matCheckbox\n            >\n            </mat-checkbox>\n          }\n          @if (column.headerSvgIcon || column.headerIcon) {\n            <i\n              [ngClass]=\"column.headerIconClass ? [column.headerIcon || column.headerSvgIcon, column.headerIconClass] : (column.headerIcon || column.headerSvgIcon)\"\n              class=\"table-header-icon\"\n            ></i>\n          }\n          @if (!column.hideHeader) {\n            {{ column.headerName || column.value }}\n          }\n          @if (column.expandIconHeader) {\n            <button\n              type=\"button\"\n              class=\"table-icon-button\"\n              (click)=\"toggleExpandAll(); $event.stopPropagation()\"\n              matTooltip=\"{{ isAllExpanded() ? 'Collapse All' : 'Expand All' }}\"\n            >\n              <i [class]=\"isAllExpanded() ? 'pi pi-angle-double-up' : 'pi pi-angle-double-down'\"></i>\n            </button>\n          }\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          style=\"position: relative\"\n          [ngClass]=\"column.customCellClass\"\n          [ngStyle]=\"column.customCellStyles\"\n          matTooltip=\"{{ column.hasTooltip ? column.customTooltip || element[column.value] : '' }}\"\n        >\n          <div [ngClass]=\"column.customClass\" [ngStyle]=\"column.customStyles\">\n            @switch (column.type) {\n              @case (TableTypeColumns.CHECKBOX) {\n                <mat-checkbox\n                  color=\"primary\"\n                  [checked]=\"isRowSelected(element)\"\n                  [disabled]=\"column.disableCheckParamName ? element[column.disableCheckParamName] : false\"\n                  (change)=\"toggleRowSelection(element, $event.checked)\"\n                  (click)=\"$event.stopPropagation()\"\n                ></mat-checkbox>\n              }\n              @case (TableTypeColumns.TEXT) {\n                {{ element[column.value] }}\n              }\n              @case (TableTypeColumns.TRANSLATION) {\n                {{ (column.translationLabel ? column.translationLabel : '') + element[column.value] }}\n              }\n              @case (TableTypeColumns.NUMBER) {\n                {{ element[column.value] | number }}\n              }\n              @case (TableTypeColumns.PHOTO) {\n                @if (column.imageErrorURL) {\n                  <img\n                    [src]=\"getImageSrc(element, column)\"\n                    [alt]=\"element[column.valueAux || ''] || ''\"\n                    [width]=\"column.picSize || 40\"\n                    [height]=\"column.picSize || 40\"\n                    [style.width.px]=\"column.picSize || 40\"\n                    [style.height.px]=\"column.picSize || 40\"\n                    [style.border-radius]=\"column.picRound ? '50%' : '0'\"\n                    [style.object-fit]=\"'cover'\"\n                    [style.cursor]=\"'pointer'\"\n                    (error)=\"onImageError(element, column, $event)\"\n                    (click)=\"openPic(element)\"\n                  />\n                } @else {\n                  <ngx-gmp-avatar\n                    [name]=\"element[column.valueAux || ''] || ''\"\n                    [initialsSize]=\"2\"\n                    [size]=\"column.picSize || 40\"\n                    [src]=\"element[column.value] ? element[column.value] : column.imagePlaceholderURL\"\n                    (click)=\"openPic(element)\"\n                    [round]=\"column.picRound || false\"\n                  />\n                }\n              }\n              @case (TableTypeColumns.HTML) {\n                <p [innerHtml]=\"element[column.value]\"></p>\n              }\n              @case (TableTypeColumns.CURRENCY) {\n                @if (column.currencyPrefix != null && column.currencyLocale) {\n                  {{ column.currencyPrefix }}{{ element[column.value] | number: column.currencyDigits || '1.2-2' : column.currencyLocale }}\n                } @else {\n                  {{ element[column.value] | currency: column.currencyFormat || '' : column.currencySymbol || '' : column.currencyDigits || '' }}\n                }\n              }\n              @case (TableTypeColumns.PERCENTUAL) {\n                %\n                {{ element[column.value] | number }}\n              }\n              @case (TableTypeColumns.PHONE) {\n                {{ element[column.value] }}\n              }\n              @case (TableTypeColumns.DATE) {\n                @if (element[column.value]) {\n                  {{ element[column.value] | date: column.dateFormat || 'dd MMM YYYY' }}\n                } @else {\n                  @if (column.showNA) {\n                    N/A\n                  }\n                }\n              }\n              @case (TableTypeColumns.CUSTOM) {\n                @if (column.customComponent) {\n                  <ng-container\n                    *ngComponentOutlet=\"\n                      column.customComponent;\n                      inputs: {\n                        element,\n                        component: table.name,\n                        column: column.value,\n                        onCustomEvent: getCustomEventCallback(element),\n                      }\n                    \"\n                  >\n                  </ng-container>\n                }\n              }\n              @case (TableTypeColumns.LINK) {\n                <a class=\"text-truncate\" [href]=\"element[column.value]\" target=\"_blank\">{{ element[column.value] }}</a>\n              }\n              @case (TableTypeColumns.ACTIONS) {\n                <div class=\"actions\">\n                  @if (table.showExpandElementIcon) {\n                    <button type=\"button\" class=\"table-icon-button\" aria-label=\"expand row\" (click)=\"expandElement(element); $event.stopPropagation()\">\n                      <i\n                        [class]=\"expandedElements.has(element.id) ? 'pi pi-chevron-up' : 'pi pi-chevron-down'\"\n                        matTooltip=\"{{ expandedElements.has(element.id) ? 'Collapsed' : 'Expand' }}\"\n                      ></i>\n                    </button>\n                  }\n                  @if (table.showEditElementIcon) {\n                    <button type=\"button\" class=\"table-icon-button\" (click)=\"emitEditEvent(element)\" matTooltip=\"{{ 'Edit' }}\" id=\"editButton\">\n                      @if (table.customEditSvgIcon) {\n                        <i [class]=\"table.customEditSvgIcon\"></i>\n                      } @else {\n                        <i class=\"pi pi-pencil\"></i>\n                      }\n                    </button>\n                  }\n                  @if (table.showDeleteElementIcon) {\n                    <button type=\"button\" class=\"table-icon-button\" (click)=\"emitDeleteEvent(element)\" matTooltip=\"{{ 'Delete' }}\" id=\"deleteButton\">\n                      @if (table.customDeleteSvgIcon) {\n                        <i [class]=\"table.customDeleteSvgIcon\"></i>\n                      } @else {\n                        <i class=\"pi pi-trash\"></i>\n                      }\n                    </button>\n                  }\n                </div>\n              }\n            }\n          </div>\n        </td>\n      </ng-container>\n    }\n\n    <ng-container matColumnDef=\"expandedDetail\">\n      <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columnsToDisplay.length\">\n        @if (table.expanderComponent) {\n          <div [@detailExpand]=\"expandedElements.has(element.id) ? 'expanded' : 'collapsed'\">\n            @if (expandedElements.has(element.id)) {\n              <ng-template\n                [ngComponentOutlet]=\"table.expanderComponent\"\n                [ngComponentOutletInputs]=\"{\n                  element: element,\n                  component: table.name,\n                  onCustomEvent: getCustomExpanderEventCallback(element),\n                }\"\n              >\n              </ng-template>\n            }\n          </div>\n        }\n      </td>\n    </ng-container>\n\n    <tr [ngStyle]=\"{ display: !table.hideHeader ? 'visible' : 'none' }\" mat-header-row *matHeaderRowDef=\"columnsToDisplay; sticky: true\"></tr>\n    <tr\n      mat-row\n      *matRowDef=\"let element; let i = dataIndex; columns: columnsToDisplay\"\n      [ngClass]=\"getRowClasses(element, i)\"\n      (click)=\"openElement(element)\"\n    ></tr>\n    <tr\n      mat-row\n      *matRowDef=\"let row; columns: ['expandedDetail']\"\n      class=\"expanded-detail-row\"\n      [ngStyle]=\"{ display: table.expanderComponent ? 'visible' : 'none' }\"\n    ></tr>\n  </table>\n  @if (!table.isLoading && !table.data.length) {\n    <ng-container *ngIf=\"customEmptyData\">\n      <ng-container *ngTemplateOutlet=\"customEmptyData\"></ng-container>\n    </ng-container>\n  }\n  @if (table.isLoading) {\n    <ng-container *ngIf=\"customLoading\">\n      <ng-container *ngTemplateOutlet=\"customLoading\"></ng-container>\n    </ng-container>\n    <div *ngIf=\"!customLoading\" class=\"table-container__loading\">\n      <mat-spinner></mat-spinner>\n    </div>\n  }\n</div>\n@if (table.paginator) {\n  <mat-paginator\n    [pageIndex]=\"table.paginator.page - 1\"\n    [pageSize]=\"table.paginator.forPage\"\n    (page)=\"changePage($event)\"\n    [pageSizeOptions]=\"[10, 20, 30, 50]\"\n    [length]=\"table.paginator.count\"\n    showFirstLastButtons\n  >\n  </mat-paginator>\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { GmpAvatarComponent } from '../avatar/gmp-avatar.component';\nimport { GmpTableComponent } from './table.component';\n\n@NgModule({\n  declarations: [GmpTableComponent, GmpAvatarComponent],\n  imports: [\n    CommonModule,\n    MatTableModule,\n    MatSortModule,\n    MatCheckboxModule,\n    MatButtonModule,\n    DragDropModule,\n    MatProgressSpinnerModule,\n    MatTooltipModule,\n    MatDialogModule,\n    MatPaginatorModule,\n    HttpClientModule,\n  ],\n  exports: [\n    CommonModule,\n    GmpTableComponent,\n    MatTableModule,\n    MatSortModule,\n    MatCheckboxModule,\n    MatButtonModule,\n    DragDropModule,\n    MatProgressSpinnerModule,\n    MatTooltipModule,\n    MatDialogModule,\n    MatPaginatorModule,\n    HttpClientModule,\n  ],\n})\nexport class GmpTableModule {}\n","import {\n  CdkDragDrop,\n  moveItemInArray,\n} from '@angular/cdk/drag-drop';\nimport {\n  Component,\n  effect,\n  EventEmitter,\n  Input,\n  model,\n  OnInit,\n  Output,\n} from '@angular/core';\n\nimport {\n  ITable,\n  ITableColumn,\n} from '../../interfaces/ITable';\n\n@Component({\n  selector: 'ngx-gmp-table-config',\n  templateUrl: './table-config.component.html',\n  styleUrls: ['./table-config.component.scss'],\n  standalone: false,\n})\nexport class GmpTableConfigComponent<T> implements OnInit {\n  @Input() table!: ITable<T>;\n  @Output() configChangedEvent = new EventEmitter<ITable<T>>();\n  $columns = model<ITableColumn[]>();\n\n  constructor() {\n    this.loadEffects();\n  } // @Inject(MAT_DIALOG_DATA) public table: ITable<T>, // public dialogRef: MatDialogRef<TableConfigModalComponent<T>>,\n  visibleColumns: ITableColumn[] = [];\n  hiddenColumns: ITableColumn[] = [];\n\n  ngOnInit(): void {\n    if (this.table) {\n      this.visibleColumns = this.table.columns.filter(e => !e.hideColumn);\n      this.hiddenColumns = this.table.columns.filter(e => e.hideColumn);\n    }\n  }\n\n  loadEffects(): void {\n    effect(() => {\n      const columns = this.$columns();\n      if (typeof columns !== 'undefined' && columns) {\n        this.visibleColumns = columns.filter(e => !e.hideColumn);\n        this.hiddenColumns = columns.filter(e => e.hideColumn);\n      }\n    });\n  }\n\n  drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.visibleColumns, event.previousIndex, event.currentIndex);\n    this.save();\n  }\n\n  moveElementFromColumns(\n    element: ITableColumn,\n    index: number,\n    originColumn: ITableColumn[],\n    destineColumn: ITableColumn[],\n  ): void {\n    destineColumn.push(element);\n    originColumn.splice(index, 1);\n    this.save();\n  }\n\n  save(): void {\n    const columns = [\n      ...this.visibleColumns.map(e => {\n        return { ...e, hideColumn: false };\n      }),\n      ...this.hiddenColumns.map(e => {\n        return { ...e, hideColumn: true };\n      }),\n    ];\n    if (this.table) {\n      this.table.columns = columns;\n      this.configChangedEvent.emit(this.table);\n    }\n    if (this.$columns) {\n      this.$columns.set(columns);\n    }\n    // this.dialogRef.close(this.table);\n  }\n\n  hideAll(): void {\n    this.hiddenColumns = [...this.table.columns];\n    this.visibleColumns = [];\n    this.save();\n  }\n\n  showAll(): void {\n    this.visibleColumns = [...this.table.columns];\n    this.hiddenColumns = [];\n    this.save();\n  }\n}\n","<div class=\"config-container\">\n  <div class=\"config-container__list\">\n    <div class=\"config-container__list__header\">\n      <b>Shown</b>\n      <div class=\"config-container__list__header__options\">\n        <span (click)=\"hideAll()\">Hide all</span>\n      </div>\n    </div>\n    <mat-selection-list cdkDropList (cdkDropListDropped)=\"drop($event)\">\n      @for(column of visibleColumns; track column; let i = $index){\n      <mat-list-item cdkDrag>\n        <div class=\"config-container__list__item\" mat-line>\n          <i class=\"pi pi-bars config-drag-icon\"></i>\n          {{ column.headerName || column.value }}\n        </div>\n        <div matListItemMeta>\n          <i class=\"pi pi-eye-slash config-action-icon\" (click)=\"moveElementFromColumns(column, i, visibleColumns, hiddenColumns)\"></i>\n        </div>\n      </mat-list-item>\n      }\n    </mat-selection-list>\n  </div>\n\n  @if(hiddenColumns.length){\n  <div class=\"config-container__list\">\n    <div class=\"config-container__list__header\">\n      <b>Hide</b>\n      <div class=\"config-container__list__header__options\">\n        <span (click)=\"showAll()\">Show all</span>\n      </div>\n    </div>\n    <mat-selection-list>\n      @for(column of hiddenColumns; track column; let i = $index){\n      <mat-list-item>\n        <div class=\"config-container__list__item\" mat-line>\n          {{ column.headerName || column.value }}\n        </div>\n        <div matListItemMeta>\n          <i class=\"pi pi-eye config-action-icon\" (click)=\"moveElementFromColumns(column, i, hiddenColumns, visibleColumns)\"></i>\n        </div>\n      </mat-list-item>\n      }\n    </mat-selection-list>\n  </div>\n  }\n</div>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { GmpTableConfigComponent } from './table-config.component';\n\n@NgModule({\n  declarations: [GmpTableConfigComponent],\n  imports: [CommonModule, MatMenuModule, MatTooltipModule, DragDropModule, MatListModule, MatButtonModule],\n  exports: [GmpTableConfigComponent, CommonModule, MatTooltipModule, DragDropModule, MatListModule, MatButtonModule],\n})\nexport class GmpTableConfigModule {}\n","export interface ITablePaginator {\n  page: number;\n  forPage: number;\n  count?: number;\n}\n\nexport const DefaultTablePaginator: ITablePaginator = {\n  count: 0,\n  page: 1,\n  forPage: 10,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i9.GmpAvatarComponent","i1","i2"],"mappings":"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"}