UNPKG

ngx-excel-viewer

Version:

Ngx-excel-viewer is an angular library to view/edit excel data in the angular application where data is in the form of matrix of string.

1 lines 19.8 kB
{"version":3,"file":"ngx-excel-viewer.mjs","sources":["../../../projects/ngx-excel-viewer/src/lib/ngx-excel-viewer.service.ts","../../../projects/ngx-excel-viewer/src/lib/ngx-excel-viewer.component.ts","../../../projects/ngx-excel-viewer/src/lib/ngx-excel-viewer.component.html","../../../projects/ngx-excel-viewer/src/lib/ngx-excel-viewer.module.ts","../../../projects/ngx-excel-viewer/src/public-api.ts","../../../projects/ngx-excel-viewer/src/ngx-excel-viewer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxExcelViewerService {\n\n constructor() { }\n}\n","import { Component, EventEmitter, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n selector: 'ngx-excel-viewer',\n templateUrl: 'ngx-excel-viewer.component.html',\n styleUrls: ['ngx-excel-viewer.component.scss']\n})\nexport class NgxExcelViewerComponent implements OnInit, OnChanges {\n @Input() id: string = \"\";\n @Input() data: any;\n @Input() sheetNames: string[] = [];\n @Input() editable: boolean = false;\n @Input() events: BehaviorSubject<any> | null = null;\n @Input() saveDataOutput: \"complete\" | \"edited-only\" = \"complete\";\n @Output() onDataSave = new EventEmitter<any>();\n @Output() onScrollEnd = new EventEmitter<any>();\n public currentSheetName = \"\";\n public maxOfColumns = 0;\n public selectedCellIndices: [number, number] = [-1, -1];\n public isEditingTheSelectedCell = false;\n public headers: string[] = [];\n public sheetData: any[] = [];\n public isSheetDataChanged = false;\n private backupSheetData: any[] = [];\n public modifiedRows: number[] = [];\n private renderedPages = 1;\n private lastScrollTop = 0;\n public loading = false;\n constructor() { }\n\n ngOnInit(): void {\n if (this.data != null) {\n this.currentSheetName = this.sheetNames[0];\n if (this.data[this.currentSheetName]) {\n this.run();\n }\n }\n if (this.events != null) {\n this.events.subscribe(event => {\n if (event.id == this.id) {\n if (event.type == \"cancel\") {\n this.sheetData = JSON.parse(JSON.stringify(this.backupSheetData));\n this.isSheetDataChanged = false;\n this.modifiedRows = [];\n } else if (event.type == \"save\") {\n if(this.saveDataOutput == \"complete\"){\n this.onDataSave.emit({id: this.id, sheet: this.currentSheetName, data: this.sheetData.map((row: any) => row['value'])});\n return;\n }\n let payload: any = {};\n for (let rowIndex of this.modifiedRows) {\n payload[`${rowIndex + 1}`] = this.sheetData[rowIndex].map((row: any) => row['value']);\n }\n this.onDataSave.emit({ id: this.id, sheet: this.currentSheetName, data: payload });\n } else if (event.type == \"saved\") {\n for (let rowIndex of this.modifiedRows) {\n this.data[rowIndex] = this.sheetData[rowIndex].map((row: any) => row['value']);\n this.backupSheetData[rowIndex] = this.sheetData[rowIndex];\n }\n } else if (event.type == \"new_data\") {\n this.run();\n }\n }\n })\n }\n }\n\n run() {\n this.loading = true;\n setTimeout(() => {\n this.calculateMaxColumns();\n this.generateHeaders();\n this.generateSheetData();\n setTimeout(() => {\n this.loading = false;\n }, 100)\n }, 100);\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] && changes['data'].previousValue != changes['data'].currentValue) {\n this.run();\n }\n }\n\n calculateMaxColumns() {\n this.maxOfColumns = 0;\n if (this.data[this.currentSheetName]) {\n for (let row of this.data[this.currentSheetName]) {\n if (row.length > this.maxOfColumns) {\n this.maxOfColumns = row.length;\n }\n }\n }\n }\n\n generateHeaders() {\n let headers: string[] = [];\n for (let i = 0; i < this.maxOfColumns; i++) {\n let header = \"\";\n let num = i;\n while (num >= 0) {\n let remainder = num % 26;\n header = String.fromCharCode(65 + remainder) + header;\n num = Math.floor(num / 26) - 1;\n }\n headers.push(header);\n }\n this.headers = headers;\n }\n\n generateSheetData() {\n if(this.data[this.currentSheetName]){\n this.sheetData = JSON.parse(JSON.stringify(this.data[this.currentSheetName].map((row: any) => row.map((r: any) => ({\"value\": r})))));\n this.backupSheetData = JSON.parse(JSON.stringify(this.sheetData));\n }else{\n this.sheetData = [];\n this.backupSheetData = [];\n }\n }\n\n setSelectedSheetName(sheet: string) {\n if (this.isSheetDataChanged) {\n alert(\"Save sheet before switching\");\n return;\n }\n this.currentSheetName = sheet;\n this.run();\n }\n\n selectCell(i: number, j: number) {\n if ((this.selectedCellIndices[0] == i && this.selectedCellIndices[1] == j) || (i > this.sheetData.length - 1 || j > this.maxOfColumns - 1)) {\n (document.querySelector(`#input-${this.selectedCellIndices[0]}-${this.selectedCellIndices[1]}`) as any).focus()\n return;\n }\n i = i >= 0 ? i : 0;\n j = j >= 0 ? j : 0;\n this.selectedCellIndices = [i, j];\n (document.querySelector(`#input-${i}-${j}`) as any).focus()\n }\n\n onDataChanges(event: any, i: number, j: number) {\n if (!this.editable) return;\n if (this.backupSheetData[i][j][\"value\"] != event.target.innerText) {\n this.sheetData[i][j][\"value\"] = event.target.innerText;\n if (!this.modifiedRows.includes(i)) {\n this.modifiedRows.push(i);\n }\n if (!this.isSheetDataChanged) {\n this.isSheetDataChanged = true;\n }\n }\n }\n\n @HostListener('keypress', ['$event'])\n onKeyPress(event: any) {\n if (event.which == 13) {\n event.preventDefault();\n }\n }\n\n onScroll(event: any) {\n if (event.target.scrollTop > this.lastScrollTop) {\n if ((event.target.offsetHeight + event.target.scrollTop) >= event.target.scrollHeight) {\n this.onScrollEnd.emit({ id: this.id, pageNo: this.renderedPages++, sheet: this.currentSheetName });\n }\n }\n this.lastScrollTop = event.target.scrollTop;\n }\n\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: any) {\n if (event.key?.includes(\"Arrow\")) {\n const key = event.key;\n let i = this.selectedCellIndices[0];\n let j = this.selectedCellIndices[1];\n event.target.blur();\n if (key == \"ArrowUp\") {\n i--;\n } else if (key == \"ArrowDown\") {\n i++;\n } else if (key == \"ArrowLeft\") {\n if (window.getSelection()?.anchorOffset == 0) j--;\n } else if (key == \"ArrowRight\") {\n if ((window.getSelection()?.anchorOffset ?? 0) >= event.target.innerText.length) j++;\n }\n this.selectCell(i, j);\n }\n }\n\n\n}\n","<div class=\"excel-file\">\r\n <div class=\"scrollable\" (scroll)=\"onScroll($event)\">\r\n <table *ngIf=\"sheetData.length != 0\">\r\n <thead>\r\n <tr>\r\n <th class=\"header s-no\"></th>\r\n <th class=\"header\" *ngFor=\"let header of headers\">{{header}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"currentSheetName && data\">\r\n <tr *ngFor=\"let data of sheetData; let i=index\">\r\n <td class=\"s-no\">{{i+1}}</td>\r\n <td *ngFor=\"let cell of data; let j=index\"\r\n [ngClass]=\"{'main-selected': selectedCellIndices[0] == i && selectedCellIndices[1] == j}\"\r\n (click)=\"selectCell(i,j)\">\r\n <div [id]=\"'input-'+i+'-'+j\" (blur)=\"onDataChanges($event, i, j)\" (focus)=\"selectCell(i,j)\"\r\n [contentEditable]=\"editable\" [innerHTML]=\"cell['value']\"></div>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"empty-data\" *ngIf=\"sheetData.length == 0\">\r\n Empty Sheet\r\n </div>\r\n <div class=\"footer\">\r\n Sheets: <div *ngFor=\"let sheet of sheetNames\" class=\"sheet\" [ngClass]=\"{'active': currentSheetName == sheet}\"\r\n (click)=\"setSelectedSheetName(sheet)\">{{sheet}}</div>\r\n </div>\r\n <div class=\"loading\" *ngIf=\"loading\">\r\n <div class=\"spinner\">\r\n <div class=\"lds-spinner\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { NgModule } from '@angular/core';\nimport { NgxExcelViewerComponent } from './ngx-excel-viewer.component';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n declarations: [\n NgxExcelViewerComponent,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n NgxExcelViewerComponent\n ]\n})\nexport class NgxExcelViewerModule { }\n","/*\n * Public API Surface of ngx-excel-viewer\n */\n\nexport * from './lib/ngx-excel-viewer.service';\nexport * from './lib/ngx-excel-viewer.component';\nexport * from './lib/ngx-excel-viewer.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}