UNPKG

ngx-obelisco-example

Version:

Componentes funcionales y reutilizables para Angular.

1 lines 12.5 kB
{"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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"}