bk-angular-table
Version:
An Angular 19 table, with pagination, sorting, filter etc.
1 lines • 22.3 kB
Source Map (JSON)
{"version":3,"file":"bk-angular-table.mjs","sources":["../../../projects/bk-angular-table/src/lib/bk-angular-table.service.ts","../../../projects/bk-angular-table/src/lib/bk-angular-table.component.ts","../../../projects/bk-angular-table/src/lib/bk-angular-table.component.html","../../../projects/bk-angular-table/src/lib/bk-angular-table.module.ts","../../../projects/bk-angular-table/src/public-api.ts","../../../projects/bk-angular-table/src/bk-angular-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BkAngularTableService {\n\n constructor() { }\n}\n","import { Component, OnInit, Input, EventEmitter, Output, ViewChild, ChangeDetectorRef, ElementRef } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort, } from '@angular/material/sort';\nimport { MatSnackBar, } from '@angular/material/snack-bar';\nimport { SelectionModel } from '@angular/cdk/collections';\n\nexport interface AppTableColumn {\n field: string;\n title: string;\n}\n\n\n@Component({\n selector: 'bk-angular-table',\n templateUrl: './bk-angular-table.component.html',\n styleUrls: ['./bk-angular-table.component.scss']\n})\nexport class BkAngularTableComponent implements OnInit {\n\n @Input() displayedColumns:any\n @Input() dataSource: any = [];\n multiSelect = false;\n @Input() columnClass = \"\";\n\n\n @Output() selectedRow$ = new EventEmitter<any>();\n @Output() pagination$ = new EventEmitter<any>();\n\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n @ViewChild('searchField') searchField:ElementRef<HTMLElement>;\n \n\n hasSelect = true;\n\n rowTabIndex = 0;\n\n shown_columns:any;\n shown_columns_multi = ['select'];\n shown_titles:any;\n selectedRow: any;\n selection = new SelectionModel<any>(true, []);\n\n // sort: any;\n tableDS = new MatTableDataSource();\n wildcardStatus:boolean;\n\n tableSettings;\n searchParam=\"%\";\n elementSelector;\n\n pathNames = [\n ];\n pathName = window.location.pathname;\n sessionStorageName;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private snackBar: MatSnackBar,\n private elementRef: ElementRef\n ) { }\n\n ngOnInit() {\n console.log(this.displayedColumns)\n this.wildcardStatus=true;\n const fields = this.displayedColumns.map(x => x.field);\n const titles = this.displayedColumns.map(x => x.title);\n this.shown_columns = fields.slice();\n this.shown_columns_multi = this.shown_columns_multi.concat(this.shown_columns);\n this.shown_titles = titles.slice();\n }\n\n /** Whether the number of selected elements matches the total number of rows. */\n isAllSelected() {\n const numSelected = this.selection.selected.length;\n const numRows = this.tableDS.data.length;\n return numSelected === numRows;\n }\n\n /** Selects all rows if they are not all selected; otherwise clear selection. */\n masterToggle() {\n this.isAllSelected() ?\n this.selection.clear() :\n this.tableDS.data.forEach(row => this.selection.select(row));\n }\n\n \n\n onSelectRow(row, emit = true,) {\n this.selectedRow = row;\n if (emit) {\n this.selectedRow$.emit(this.selectedRow);\n }\n }\n\n tableKeydown(event: KeyboardEvent) {\n if (!this.selection.isEmpty()) {\n let newSelection;\n const currentSelection = this.selection.selected[0];\n const currentIndex = this.tableDS.data.findIndex(row => row === currentSelection);\n if(event.key === 'Enter') {\n this.onSelectRow(this.selection.selected[0], true);\n } else if (event.key === 'ArrowDown') {\n newSelection = this.tableDS.data[currentIndex + 1];\n } else if (event.key === 'ArrowUp') {\n newSelection = this.tableDS.data[currentIndex - 1];\n }\n if (newSelection) {\n this.selection.clear();\n this.selection.toggle(newSelection);\n this.onSelectRow(this.selection.selected[0], false);\n }\n console.log(this.selection.selected)\n } else {\n this.selection.clear();\n this.selection.toggle(this.tableDS.filteredData[0]);\n this.onSelectRow(this.tableDS.filteredData[0], false); \n }\n}\n applyFilter(filterValue:any){\n filterValue = filterValue.trim(); // Remove whitespace\n filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches\n console.log(filterValue)\n this.tableDS.filter = filterValue;\n }\n\n ngAfterViewInit() {\n this.tableDS = new MatTableDataSource(this.dataSource);\n this.tableDS.paginator = this.paginator;\n this.tableDS.sort = this.sort;\n this.changeDetectorRef.detectChanges();\n let elementSelector = this.elementRef.nativeElement.closest(\".mat-dialog-container\");\n\n if(elementSelector == null || elementSelector.textContent == \"\") {\n elementSelector = this.elementRef.nativeElement.closest('.mat-tab-group');\n }\n\n if(elementSelector != null) {\n this.elementSelector = (elementSelector.textContent && elementSelector.textContent != \"\") ? elementSelector.textContent : \"\";\n } \n \n this.getTableSettings();\n\n if(this.searchParam == '%') {\n // this.searchField.nativeElement.focus()\n this.searchField.nativeElement['selectionEnd'] = this.searchParam.length - 1;\n }\n }\n\n \n\n onTablePage(event: any){\n this.pagination$.emit(event);\n const matTable= document.getElementById('bkTable');\n matTable.scrollTop = 0;\n\n if(this.elementSelector == \"\" || this.elementSelector == null) {\n // let tableSettings = sessionStorage.getItem(\"tableSettings\");\n let tableSettings = this.getTableSettingsOnPathName();\n if(tableSettings) {\n tableSettings = JSON.parse(tableSettings)\n tableSettings['pageindex'] = event;\n\n sessionStorage.setItem(this.sessionStorageName, JSON.stringify(tableSettings))\n }\n else {\n sessionStorage.setItem(this.sessionStorageName, JSON.stringify({\n \"pageindex\": event\n }))\n }\n }\n }\n\n setTableSettings() {\n if(this.elementSelector == \"\" || this.elementSelector == null) {\n // let tableSettings = sessionStorage.getItem(\"tableSettings\");\n let tableSettings = this.getTableSettingsOnPathName();\n if(tableSettings) {\n tableSettings = JSON.parse(tableSettings)\n tableSettings['searchParam'] = this.tableDS.filter;\n\n sessionStorage.setItem(this.sessionStorageName, JSON.stringify(tableSettings))\n }\n else {\n sessionStorage.setItem(this.sessionStorageName, JSON.stringify({\n \"searchParam\": this.tableDS.filter\n }))\n }\n }\n }\n\n getTableSettings() {\n if(this.elementSelector == \"\" || this.elementSelector == null) {\n // this.tableSettings = sessionStorage.getItem(\"tableSettings\");\n this.tableSettings = this.getTableSettingsOnPathName();\n \n if(this.tableSettings) {\n this.tableSettings = JSON.parse(this.tableSettings);\n if(this.tableSettings.pageindex) {\n this.paginator.pageIndex = this.tableSettings.pageindex.pageIndex;\n this.paginator.pageSize = this.tableSettings.pageindex.pageSize;\n }\n if(this.tableSettings.searchParam) {\n this.searchParam = this.tableSettings.searchParam;\n // this.toAddWildCardSearch();\n this.tableDS.filter = this.searchParam;\n }\n }\n }\n }\n\n getTableSettingsOnPathName(): any {\n let tableSettings;\n if(this.pathNames.indexOf(this.pathName) != -1) {\n this.sessionStorageName = 'tableSettings' + this.pathName;\n tableSettings = sessionStorage.getItem(this.sessionStorageName);\n }\n else {\n this.sessionStorageName = 'tableSettings';\n tableSettings = sessionStorage.getItem(this.sessionStorageName);\n }\n return tableSettings;\n }\n}\n","\n\n <div class=\"bk-actions-toolbar\">\n <div class=\"bk-table-filter bk-actions-toolbar-right\">\n <input type=\"text\" (keyup)=\"applyFilter(searchField.value)\" #searchField placeholder=\"Table Keyword Search\" >\n </div>\n </div>\n \n <table mat-table matSort [dataSource]=\"tableDS\" class=\"bk-table\" id=\"bkTable\">\n <ng-container \n *ngFor=\"let column of shown_columns; index as i\"\n [matColumnDef]=\"column\"\n >\n <mat-header-cell [ngClass]=\"['bk-table-header', columnClass]\" *matHeaderCellDef mat-header-cell [mat-sort-header]=\"column\"> {{ shown_titles[i] }} </mat-header-cell>\n <mat-cell *matCellDef=\"let element\" \n [class]=\"columnClass\"\n [matTooltip]=\"element[column]\"\n matTooltipClass=\"example-tooltip-red\"\n >\n <span class=\"bk-global-ellipsis\">{{element[column]}}</span>\n </mat-cell>\n </ng-container>\n \n <mat-header-row *matHeaderRowDef=\"shown_columns; sticky: true\"></mat-header-row>\n <mat-row class=\"bk-row\" [ngClass]= \"{'selected': selectedRow === row }\" *matRowDef=\"let row; columns: shown_columns;\"\n (click)=\"onSelectRow(row, true)\" (keydown)=\"tableKeydown($event)\"></mat-row>\n </table>\n <mat-paginator [length]=\"dataSource.length\" [pageSizeOptions]=\"[5,10, 25, 50, 100, 1000]\" (page)=\"onTablePage($event)\"></mat-paginator>\n ","import { NgModule } from '@angular/core';\nimport { BkAngularTableComponent } from './bk-angular-table.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\n\n\n\n@NgModule({\n declarations: [\n BkAngularTableComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatPaginatorModule,\n MatInputModule,\n MatSortModule,\n MatTableModule,\n MatTooltipModule,\n MatSnackBarModule\n ],\n exports: [\n BkAngularTableComponent\n ]\n})\nexport class BkTableModule { }\n","/*\n * Public API Surface of bk-table\n */\n\nexport * from './lib/bk-angular-table.service';\nexport * from './lib/bk-angular-table.component';\nexport * from './lib/bk-angular-table.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}