{"version":3,"file":"sorted-table-angular.mjs","sources":["../../../projects/sorted-table-angular/src/lib/sorted-table-angular.ts","../../../projects/sorted-table-angular/src/lib/sorted-table.html","../../../projects/sorted-table-angular/src/public-api.ts","../../../projects/sorted-table-angular/src/sorted-table-angular.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\ntype cellData = {tracker: number, text: string, color: string, bgColor: string, width: string};\ntype headerState = {text: string, sortStatus: 0 | 1 | -1};\ntype inputCellData = {text: string, color: string, bgColor: string, width: string}\n\n@Component({\n  selector: 'app-sorted-table-angular',\n  imports: [],\n  templateUrl: './sorted-table.html',\n  styleUrl: './sorted-table.css'\n})\nexport class SortedTableAngular {\n  tableData = input<string[][] | inputCellData[][]>();\n  tableHeaders = input<string[]>();\n  clickCell = input<boolean>()\n  clickEvent = output<any>();\n  headerClickEvent = output<(0 | 1| -1)[]>();\n  columnBackup: cellData[] = [];\n\n  sortedData: cellData[][] = [];\n  headers: headerState[] = [];\n\n  ngOnInit() {\n    if(!this.tableData() || this.tableData()?.length == 0) {\n      return;\n    }\n    this.resetTableData();\n    \n    this.headers = (this.tableHeaders() as string[]).map(header => {\n      return {text: header, sortStatus: 0};\n    });\n  }\n\n  ngOnChanges() {\n    this.ngOnInit();\n  }\n\n  sortByColumn(index: number) {\n    \n    if(this.headers[index].sortStatus === 0) {\n      this.headers.forEach(header => header.sortStatus = 0);\n\n      this.columnBackup = this.sortedData.map(row => row[index]);\n      this.headers[index].sortStatus = 1;\n      this.sortedData.sort((a, b) => a[index].text.localeCompare(b[index].text));\n    } else if(this.headers[index].sortStatus === 1) {\n      this.headers[index].sortStatus = -1;\n      this.sortedData.sort((a, b) => a[index].text.localeCompare(b[index].text)).reverse();\n    } else {\n      this.headers[index].sortStatus = 0;\n      this.sortedData.forEach((row, i) => row[index] = this.columnBackup[i]);\n    }\n  }\n\n  resetTableData() {\n    let trackerIndex = 0;\n    this.sortedData = (this.tableData() as string[][]).map(row => {\n      return row.map((cell: string | inputCellData) => {\n        trackerIndex++;\n        if(typeof(cell) == 'string') {\n          return {tracker: trackerIndex, text: cell, color: 'black', bgColor: '', width: 'auto'};\n        } else {\n          return {\n            tracker: trackerIndex, text: cell.text, color: cell.color? cell.color: 'black', bgColor: cell.bgColor, width: cell.width\n          };\n        }\n      });\n    });\n  }\n\n  clicked(row: number, column: number, text: string) {\n    // console.log(this.clickCell);\n    if(!this.clickCell()) {\n      return;\n    }\n    this.clickEvent.emit({row, column, text});\n  }\n}\n","<table id=\"table\">\n\t<tr id=\"headerRow\">\n\t\t@for(header of headers; track $index) {\n\t\t\t<th (click)=\"sortByColumn($index)\">{{header.text}}  @if(header.sortStatus==1)  {˅} @else if(header.sortStatus==-1)  {˄}</th>\n\t\t}\n\t</tr>\n\t@for(row of sortedData; track $index; let x = $index) {\n\t\t<tr>\n\t\t\t@for(cell of row; track cell.tracker; let y = $index) {\n\t\t\t\t<td (click)=\"clicked(x, y, cell.text)\" [innerHTML]=\"cell.text\" [class.point]=\"clickCell()\" [style.backgroundColor]=\"cell.bgColor\" [style.color]=\"cell.color\" [style.width]=\"cell.width\"></td>\n\t\t\t}\n\t\t</tr>\n\t}\n</table>\n","/*\n * Public API Surface of select-search-angular\n */\n\nexport * from './lib/sorted-table-angular';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}