{"version":3,"file":"ngx-obelisco-example-table.mjs","sources":["../../../projects/ngx-obelisco/table/o-table.component.ts","../../../projects/ngx-obelisco/table/o-table.component.html","../../../projects/ngx-obelisco/table/o-table.module.ts","../../../projects/ngx-obelisco/table/ngx-obelisco-example-table.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n  OnInit,\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  QueryList,\r\n  ViewChildren,\r\n  Renderer2\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Column, DataSource, TableCheckbox } from 'ngx-obelisco-example/core/models';\r\n\r\n@Component({\r\n  selector: 'o-table',\r\n  templateUrl: './o-table.component.html',\r\n  styleUrls: ['./o-table.component.scss']\r\n})\r\nexport class OTableComponent implements OnInit, AfterViewInit {\r\n  public isValidateComponent: boolean = false;\r\n\r\n  @Input() public id: string = 'o-table';\r\n  @Input() public columns: Column[] = [];\r\n  @Input() public dataSource: DataSource[] = [];\r\n  @Input() public isBordered: boolean = false;\r\n  @Input() public isStriped: boolean = false;\r\n  @Input() public isScrollable: boolean = false;\r\n  @Input() public customClasses: string = '';\r\n  @Input() public checkbox!: TableCheckbox;\r\n\r\n  @Output() public dataSelectedChange = new EventEmitter<DataSource[]>();\r\n\r\n  private inputCheckArr: ElementRef[] = [];\r\n  private dataSelected: DataSource[] = [];\r\n\r\n  @ViewChildren('checkbox') public checkboxRef!: QueryList<ElementRef>;\r\n\r\n  constructor(private readonly renderer: Renderer2, private sanitizer: DomSanitizer) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.componentValidations();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    this.checkboxRef.map((e) => {\r\n      this.inputCheckArr.push(e.nativeElement);\r\n    });\r\n  }\r\n\r\n  private componentValidations(): void {\r\n    this.isValidateComponent = this.columns.length > 0 && this.dataSource.length > 0;\r\n\r\n    if (!this.isValidateComponent) {\r\n      throw new Error('The columns and dataSource must not be empty');\r\n    }\r\n\r\n    this.columns.map((e) => {\r\n      if (e.key === '' || e.value === '') {\r\n        this.isValidateComponent = false;\r\n        throw new Error('The columns must not have null values');\r\n      }\r\n    });\r\n\r\n    this.columns.map((e) => (e.value = e.value.trim()));\r\n\r\n    this.columns = this.columns.map((e) => {\r\n      e.value = e.value.charAt(0).toUpperCase() + e.value.slice(1).toLowerCase();\r\n      return e;\r\n    });\r\n\r\n    this.columns.map((e) => {\r\n      if (e.value.match(/^[a-zA-ZáéíóúÁÉÍÓÚñÑ ]*$/) && e.key.match(/^[a-zA-Z ]*$/)) {\r\n        this.isValidateComponent = true;\r\n        return e;\r\n      } else {\r\n        this.isValidateComponent = false;\r\n        throw new Error(\r\n          'The columns value must not contain numbers or symbols and the key must not contain numbers, symbols or accents'\r\n        );\r\n      }\r\n    });\r\n  }\r\n\r\n  sanitizeHTML(html: string): SafeHtml {\r\n    return this.sanitizer.bypassSecurityTrustHtml(html);\r\n  }\r\n\r\n  public onHeaderCheckboxChange(event: Event): void {\r\n    const target = event.target as HTMLInputElement;\r\n    if (target) {\r\n      const isChecked = target.checked;\r\n      this.checkboxRef.toArray().forEach((checkbox: ElementRef) => {\r\n        (checkbox.nativeElement as HTMLInputElement).checked = isChecked;\r\n      });\r\n\r\n      if (isChecked) {\r\n        this.dataSelected = [...this.dataSource];\r\n      } else {\r\n        this.dataSelected = [];\r\n      }\r\n\r\n      this.dataSelectedChange.emit(this.dataSelected);\r\n    }\r\n  }\r\n\r\n  public onCheckboxChange(data: DataSource, event: any): void {\r\n    if (event && event.target && typeof event.target.checked === 'boolean') {\r\n      const isChecked: boolean = event.target.checked;\r\n\r\n      if (isChecked) {\r\n        this.dataSelected.push(data);\r\n      } else {\r\n        const index = this.dataSelected.findIndex((item) => item === data);\r\n        if (index !== -1) {\r\n          this.dataSelected.splice(index, 1);\r\n        }\r\n      }\r\n\r\n      this.dataSelectedChange.emit(this.dataSelected);\r\n    }\r\n  }\r\n}\r\n","<div [ngClass]=\"{ 'responsive-scroll': isScrollable }\" [class]=\"customClasses\" tabindex=\"0\">\r\n  <table\r\n    *ngIf=\"isValidateComponent\"\r\n    class=\"table\"\r\n    [ngClass]=\"{ 'table-borderless': !isBordered, 'table-striped': isStriped }\"\r\n  >\r\n    <thead>\r\n      <tr>\r\n        <th scope=\"col\" *ngIf=\"checkbox?.isAllSelectable == true\" [ngClass]=\"checkbox.customClassesTh\">\r\n          <div class=\"custom-control custom-checkbox\">\r\n            <input\r\n              class=\"custom-control-input\"\r\n              type=\"checkbox\"\r\n              id=\"{{ id }}-selectAllCheckbox\"\r\n              name=\"{{ id }}-selectAllCheckbox\"\r\n              value=\"\"\r\n              (change)=\"onHeaderCheckboxChange($event)\"\r\n            />\r\n            <label\r\n              [ngClass]=\"checkbox.customClassesLabel\"\r\n              class=\"custom-control-label\"\r\n              for=\"{{ id }}-selectAllCheckbox\"\r\n              aria-label=\"Descripción para usuarios de lectores de pantalla\"\r\n              >{{ checkbox.title }}</label\r\n            >\r\n          </div>\r\n        </th>\r\n        <th scope=\"col\" *ngIf=\"checkbox?.isAllSelectable == false\" [ngClass]=\"checkbox.customClassesTh\">\r\n          {{ checkbox.title }}\r\n        </th>\r\n        <ng-container *ngFor=\"let column of columns\">\r\n          <th scope=\"col\" [ngClass]=\"column.customClasses\">{{ column.value }}</th>\r\n        </ng-container>\r\n      </tr>\r\n    </thead>\r\n    <tbody>\r\n      <tr *ngFor=\"let data of dataSource; let i = index\">\r\n        <td *ngIf=\"checkbox\">\r\n          <div class=\"custom-control custom-checkbox\">\r\n            <input\r\n              #checkbox\r\n              class=\"custom-control-input\"\r\n              type=\"checkbox\"\r\n              id=\"{{ id }}-checkbox_{{ i }}\"\r\n              name=\"{{ id }}-checkbox_{{ i }}\"\r\n              value=\"\"\r\n              (change)=\"onCheckboxChange(data, $event)\"\r\n            />\r\n            <label\r\n              class=\"custom-control-label no-text\"\r\n              for=\"{{ id }}-checkbox_{{ i }}\"\r\n              aria-label=\"Descripción para usuarios de lectores de pantalla\"\r\n            ></label>\r\n          </div>\r\n        </td>\r\n        <ng-container *ngFor=\"let column of columns\">\r\n          <td [ngClass]=\"data[column.key].customClasses\">\r\n            <div *ngIf=\"data[column.key].data\" [innerHTML]=\"sanitizeHTML(data[column.key].data)\"></div>\r\n          </td>\r\n        </ng-container>\r\n      </tr>\r\n    </tbody>\r\n  </table>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OTableComponent } from './o-table.component';\r\n\r\n@NgModule({\r\n  declarations: [OTableComponent],\r\n  imports: [CommonModule],\r\n  exports: [OTableComponent]\r\n})\r\nexport class OTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}