@dbg-riskit/angular-excel-export 13.0.1 → 9999.9999.9999-rc.21196

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,10 +3,15 @@ import { deepClone } from '@dbg-riskit/common';
3
3
  import * as XLSX from 'xlsx';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ExcelExportService {
6
- exportAsExcel(exportData, filename, tabs, columns) {
6
+ exportAsExcel(exportData, filename, columns, tabs) {
7
7
  if (exportData && exportData.length && columns) {
8
8
  const data = this.createHeaders(exportData, columns);
9
- this.export(data, filename, tabs);
9
+ if (tabs == null) {
10
+ this.export(data, filename);
11
+ }
12
+ else {
13
+ this.export(data, filename, tabs);
14
+ }
10
15
  }
11
16
  }
12
17
  createHeaders(data, columns) {
@@ -23,7 +28,7 @@ export class ExcelExportService {
23
28
  const headers = {};
24
29
  const keys = Object.keys(arr[0]);
25
30
  keys.forEach((key) => {
26
- headers[key] = columns[index][+key].header;
31
+ headers[key] = columns[index][key].header;
27
32
  });
28
33
  const clonedData = deepClone(arr);
29
34
  clonedData.unshift(headers);
@@ -93,4 +98,4 @@ ExcelExportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", v
93
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ExcelExportService, decorators: [{
94
99
  type: Injectable
95
100
  }] });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWV4Y2VsLWV4cG9ydC9zcmMvbGliL2V4Y2VsLmV4cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQUk3QixNQUFNLE9BQU8sa0JBQWtCO0lBRXBCLGFBQWEsQ0FBQyxVQUFpQixFQUFFLFFBQWdCLEVBQUUsSUFBZSxFQUNwRCxPQUEwRTtRQUMzRixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRTtZQUU1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVyRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FFckM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVcsRUFDWCxPQUF5RTtRQUMzRixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUE2QyxDQUFDLENBQUM7U0FDcEY7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMvQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBVyxFQUFFLE9BQTJDO1FBQzVFLE1BQU0sZUFBZSxHQUFVLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVSxFQUFFLEtBQWEs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QUNsRTtpQkFBTTtnQkFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUN6QztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBVyxFQUFFLFNBQWlCLEVBQUUsUUFBZ0I7UUFDcEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDckUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLFFBQVEsR0FBRyxHQUFHLFNBQVMsT0FBTyxDQUFDO1FBQ3JDLE9BQU87WUFDSCxTQUFTO1lBQ1QsUUFBUTtTQUNYLENBQUM7SUFDTixDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQVk7UUFDL0IsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7K0dBcEdRLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtkZWVwQ2xvbmV9IGZyb20gJ0BkYmctcmlza2l0L2NvbW1vbic7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuaW1wb3J0IHtDU1ZFeHBvcnRDb2x1bW59IGZyb20gJy4vZXhjZWwuZmlsZS5leHBvcnQuZGlyZWN0aXZlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4Y2VsRXhwb3J0U2VydmljZSB7XG5cbiAgICBwdWJsaWMgZXhwb3J0QXNFeGNlbChleHBvcnREYXRhOiBhbnlbXSwgZmlsZW5hbWU6IHN0cmluZywgdGFicz86IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM/OiBBcnJheTxDU1ZFeHBvcnRDb2x1bW48YW55Pj4gfCBBcnJheTxBcnJheTxDU1ZFeHBvcnRDb2x1bW48YW55Pj4+KSB7XG4gICAgICAgIGlmIChleHBvcnREYXRhICYmIGV4cG9ydERhdGEubGVuZ3RoICYmIGNvbHVtbnMpIHtcblxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuY3JlYXRlSGVhZGVycyhleHBvcnREYXRhLCBjb2x1bW5zKTtcblxuICAgICAgICAgICAgdGhpcy5leHBvcnQoZGF0YSwgZmlsZW5hbWUsIHRhYnMpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhlYWRlcnMoZGF0YTogYW55W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+PiB8IEFycmF5PEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+Pj4pOiBhbnlbXSB7XG4gICAgICAgIGlmICh0aGlzLmlzQXJyYXlPZkFycmF5cyhkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlUYWJIZWFkZXJzKGRhdGEsIGNvbHVtbnMgYXMgQXJyYXk8QXJyYXk8Q1NWRXhwb3J0Q29sdW1uPGFueT4+Pik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaW5nbGVUYWJIZWFkZXJzKGRhdGEsIGNvbHVtbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtdWx0aVRhYkhlYWRlcnMoZGF0YTogYW55W10sIGNvbHVtbnM6IEFycmF5PEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+Pj4pOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGRhdGFXaXRoSGVhZGVyczogYW55W10gPSBbXTtcbiAgICAgICAgZGF0YS5mb3JFYWNoKChhcnI6IGFueVtdLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYXJyWzBdKTtcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1trZXldID0gY29sdW1uc1tpbmRleF1bK2tleV0uaGVhZGVyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBjbG9uZWREYXRhID0gZGVlcENsb25lKGFycik7XG4gICAgICAgICAgICBjbG9uZWREYXRhLnVuc2hpZnQoaGVhZGVycyk7XG4gICAgICAgICAgICBkYXRhV2l0aEhlYWRlcnMucHVzaChjbG9uZWREYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBkYXRhV2l0aEhlYWRlcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaW5nbGVUYWJIZWFkZXJzKGRhdGE6IGFueVtdLCBjb2x1bW5zOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGRhdGFbMF0pO1xuXG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaGVhZGVyc1trZXldID0gY29sdW1uc1tpbmRleF0uaGVhZGVyO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBjbG9uZWREYXRhID0gZGVlcENsb25lKGRhdGEpO1xuICAgICAgICBjbG9uZWREYXRhLnVuc2hpZnQoaGVhZGVycyk7XG4gICAgICAgIHJldHVybiBjbG9uZWREYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXhwb3J0KGRhdGE6IGFueVtdLCBmaWxlbmFtZTogc3RyaW5nLCB0YWJzPzogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgc2hlZXROYW1lLFxuICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgfSA9IHRoaXMuZ2V0RmlsZU5hbWUoZmlsZW5hbWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzQXJyYXlPZkFycmF5cyhkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlUYWJFeHBvcnQoZGF0YSwgZmlsZU5hbWUsIHRhYnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2luZ2xlVGFiRXhwb3J0KGRhdGEsIHNoZWV0TmFtZSwgZmlsZU5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtdWx0aVRhYkV4cG9ydChkYXRhOiBhbnlbXSwgZmlsZW5hbWU6IHN0cmluZywgdGFicz86IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdvcmtib29rOiBYTFNYLldvcmtCb29rID0gZGF0YS5yZWR1Y2UoKHJlc3VsdCwgY3VyciwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICgnU2hlZXRzJyBpbiByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbJ1NoZWV0cyddID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZXN1bHRbJ1NoZWV0cyddLFxuICAgICAgICAgICAgICAgICAgICBbdGFicyFbaW5kZXhdXTogWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGN1cnIsIHtza2lwSGVhZGVyOiB0cnVlfSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbJ1NoZWV0cyddID0ge1t0YWJzIVtpbmRleF1dOiBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoY3Vyciwge3NraXBIZWFkZXI6IHRydWV9KX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJ1NoZWV0TmFtZXMnIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXROYW1lcyddID0gWy4uLnJlc3VsdFsnU2hlZXROYW1lcyddLCB0YWJzIVtpbmRleF1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbJ1NoZWV0TmFtZXMnXSA9IFt0YWJzIVtpbmRleF1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSwge30pO1xuICAgICAgICBYTFNYLndyaXRlRmlsZSh3b3JrYm9vaywgZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2luZ2xlVGFiRXhwb3J0KGRhdGE6IGFueVtdLCBzaGVldE5hbWU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoZGF0YSwge3NraXBIZWFkZXI6IHRydWV9KTtcbiAgICAgICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod29ya2Jvb2ssIHdvcmtzaGVldCwgc2hlZXROYW1lKTtcbiAgICAgICAgWExTWC53cml0ZUZpbGUod29ya2Jvb2ssIGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVOYW1lKHNoZWV0TmFtZTogc3RyaW5nKTogeyBzaGVldE5hbWU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyB9IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtzaGVldE5hbWV9Lnhsc3hgO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hlZXROYW1lLFxuICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBcnJheU9mQXJyYXlzKGFycmF5OiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gYXJyYXkuZXZlcnkoKGl0ZW0pID0+IEFycmF5LmlzQXJyYXkoaXRlbSkpO1xuICAgIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wa2cvZGJnLXJpc2tpdC9hbmd1bGFyLWV4Y2VsLWV4cG9ydC9zcmMvbGliL2V4Y2VsLmV4cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQUk3QixNQUFNLE9BQU8sa0JBQWtCO0lBS3BCLGFBQWEsQ0FBQyxVQUFpQyxFQUFFLFFBQWdCLEVBQ25ELE9BRUUsRUFBRSxJQUFlO1FBQ3BDLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFO1lBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQzthQUMvQjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQWtCLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ25EO1NBQ0o7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQTJCLEVBQUUsT0FFakQ7UUFDRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQWtCLEVBQzFDLE9BQTRELENBQUMsQ0FBQztTQUNyRTthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE9BQXlDLENBQUMsQ0FBQztTQUNqRjtJQUNMLENBQUM7SUFFTyxl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QWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2RlZXBDbG9uZX0gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5pbXBvcnQge0NTVkV4cG9ydENvbHVtbn0gZnJvbSAnLi9leGNlbC5maWxlLmV4cG9ydC5kaXJlY3RpdmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRXhjZWxFeHBvcnRTZXJ2aWNlIHtcblxuICAgIHB1YmxpYyBleHBvcnRBc0V4Y2VsKGV4cG9ydERhdGE6IG9iamVjdFtdLCBmaWxlbmFtZTogc3RyaW5nLCBjb2x1bW5zOiBBcnJheTxDU1ZFeHBvcnRDb2x1bW48b2JqZWN0Pj4pOiB2b2lkO1xuICAgIHB1YmxpYyBleHBvcnRBc0V4Y2VsKGV4cG9ydERhdGE6IG9iamVjdFtdW10sIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBDU1ZFeHBvcnRDb2x1bW48b2JqZWN0PiB9PiwgdGFiczogc3RyaW5nW10pOiB2b2lkO1xuICAgIHB1YmxpYyBleHBvcnRBc0V4Y2VsKGV4cG9ydERhdGE6IG9iamVjdFtdIHwgb2JqZWN0W11bXSwgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBBcnJheTxDU1ZFeHBvcnRDb2x1bW48b2JqZWN0Pj4gfCBBcnJheTx7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IENTVkV4cG9ydENvbHVtbjxvYmplY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgfT4sIHRhYnM/OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBpZiAoZXhwb3J0RGF0YSAmJiBleHBvcnREYXRhLmxlbmd0aCAmJiBjb2x1bW5zKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5jcmVhdGVIZWFkZXJzKGV4cG9ydERhdGEsIGNvbHVtbnMpO1xuICAgICAgICAgICAgaWYgKHRhYnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0KGRhdGEsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnQoZGF0YSBhcyBvYmplY3RbXVtdLCBmaWxlbmFtZSwgdGFicyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhlYWRlcnMoZGF0YTogb2JqZWN0W10gfCBvYmplY3RbXVtdLCBjb2x1bW5zOiBBcnJheTxDU1ZFeHBvcnRDb2x1bW48b2JqZWN0Pj4gfCBBcnJheTx7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IENTVkV4cG9ydENvbHVtbjxvYmplY3Q+XG4gICAgfT4pOiBvYmplY3RbXSB8IG9iamVjdFtdW10ge1xuICAgICAgICBpZiAodGhpcy5pc0FycmF5T2ZBcnJheXMoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bHRpVGFiSGVhZGVycyhkYXRhIGFzIG9iamVjdFtdW10sXG4gICAgICAgICAgICAgICAgY29sdW1ucyBhcyBBcnJheTx7IFtrZXk6IHN0cmluZ106IENTVkV4cG9ydENvbHVtbjxvYmplY3Q+IH0+KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRhYkhlYWRlcnMoZGF0YSwgY29sdW1ucyBhcyBBcnJheTxDU1ZFeHBvcnRDb2x1bW48b2JqZWN0Pj4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtdWx0aVRhYkhlYWRlcnMoZGF0YTogb2JqZWN0W11bXSwgY29sdW1uczogQXJyYXk8e1xuICAgICAgICBba2V5OiBzdHJpbmddOiBDU1ZFeHBvcnRDb2x1bW48b2JqZWN0PlxuICAgIH0+KTogb2JqZWN0W11bXSB7XG4gICAgICAgIGNvbnN0IGRhdGFXaXRoSGVhZGVyczogb2JqZWN0W11bXSA9IFtdO1xuICAgICAgICBkYXRhLmZvckVhY2goKGFycjogb2JqZWN0W10sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnJbMF0pO1xuICAgICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBoZWFkZXJzW2tleV0gPSBjb2x1bW5zW2luZGV4XVtrZXldLmhlYWRlcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgY2xvbmVkRGF0YSA9IGRlZXBDbG9uZShhcnIpO1xuICAgICAgICAgICAgY2xvbmVkRGF0YS51bnNoaWZ0KGhlYWRlcnMpO1xuICAgICAgICAgICAgZGF0YVdpdGhIZWFkZXJzLnB1c2goY2xvbmVkRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZGF0YVdpdGhIZWFkZXJzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2luZ2xlVGFiSGVhZGVycyhkYXRhOiBvYmplY3RbXSwgY29sdW1uczogQXJyYXk8Q1NWRXhwb3J0Q29sdW1uPG9iamVjdD4+KTogb2JqZWN0W10ge1xuICAgICAgICBjb25zdCBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkYXRhWzBdKTtcblxuICAgICAgICBrZXlzLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGhlYWRlcnNba2V5XSA9IGNvbHVtbnNbaW5kZXhdLmhlYWRlcjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY2xvbmVkRGF0YSA9IGRlZXBDbG9uZShkYXRhKTtcbiAgICAgICAgY2xvbmVkRGF0YS51bnNoaWZ0KGhlYWRlcnMpO1xuICAgICAgICByZXR1cm4gY2xvbmVkRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4cG9ydChkYXRhOiBvYmplY3RbXSwgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gICAgcHJpdmF0ZSBleHBvcnQoZGF0YTogb2JqZWN0W11bXSwgZmlsZW5hbWU6IHN0cmluZywgdGFiczogc3RyaW5nW10pOiB2b2lkO1xuICAgIHByaXZhdGUgZXhwb3J0KGRhdGE6IG9iamVjdFtdIHwgb2JqZWN0W11bXSwgZmlsZW5hbWU6IHN0cmluZywgdGFicz86IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHNoZWV0TmFtZSxcbiAgICAgICAgICAgIGZpbGVOYW1lXG4gICAgICAgIH0gPSB0aGlzLmdldEZpbGVOYW1lKGZpbGVuYW1lKTtcblxuICAgICAgICBpZiAodGhpcy5pc0FycmF5T2ZBcnJheXMoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bHRpVGFiRXhwb3J0KGRhdGEgYXMgb2JqZWN0W11bXSwgZmlsZU5hbWUsIHRhYnMhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRhYkV4cG9ydChkYXRhLCBzaGVldE5hbWUsIGZpbGVOYW1lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbXVsdGlUYWJFeHBvcnQoZGF0YTogb2JqZWN0W11bXSwgZmlsZW5hbWU6IHN0cmluZywgdGFiczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd29ya2Jvb2s6IFhMU1guV29ya0Jvb2sgPSBkYXRhLnJlZHVjZSgocmVzdWx0LCBjdXJyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCdTaGVldHMnIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXRzJ10gPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdFsnU2hlZXRzJ10sXG4gICAgICAgICAgICAgICAgICAgIFt0YWJzW2luZGV4XV06IFhMU1gudXRpbHMuanNvbl90b19zaGVldChjdXJyLCB7c2tpcEhlYWRlcjogdHJ1ZX0pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0WydTaGVldHMnXSA9IHtbdGFic1tpbmRleF1dOiBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoY3Vyciwge3NraXBIZWFkZXI6IHRydWV9KX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJ1NoZWV0TmFtZXMnIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXROYW1lcyddID0gWy4uLnJlc3VsdFsnU2hlZXROYW1lcyddLCB0YWJzW2luZGV4XV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFsnU2hlZXROYW1lcyddID0gW3RhYnNbaW5kZXhdXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIHt9IGFzIFhMU1guV29ya0Jvb2spO1xuICAgICAgICBYTFNYLndyaXRlRmlsZSh3b3JrYm9vaywgZmlsZW5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2luZ2xlVGFiRXhwb3J0KGRhdGE6IG9iamVjdFtdLCBzaGVldE5hbWU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoZGF0YSwge3NraXBIZWFkZXI6IHRydWV9KTtcbiAgICAgICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod29ya2Jvb2ssIHdvcmtzaGVldCwgc2hlZXROYW1lKTtcbiAgICAgICAgWExTWC53cml0ZUZpbGUod29ya2Jvb2ssIGZpbGVuYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVOYW1lKHNoZWV0TmFtZTogc3RyaW5nKTogeyBzaGVldE5hbWU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyB9IHtcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtzaGVldE5hbWV9Lnhsc3hgO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hlZXROYW1lLFxuICAgICAgICAgICAgZmlsZU5hbWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNBcnJheU9mQXJyYXlzKGFycmF5OiBvYmplY3RbXSB8IG9iamVjdFtdW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGFycmF5LmV2ZXJ5KChpdGVtKSA9PiBBcnJheS5pc0FycmF5KGl0ZW0pKTtcbiAgICB9XG59XG4iXX0=
@@ -39,7 +39,16 @@ export class ExcelFileExportDirective extends BaseComponent {
39
39
  this.logger.error(new Error('Wrong data structure provided!'));
40
40
  return;
41
41
  }
42
- this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);
42
+ if (!this.columns) {
43
+ this.logger.error(new Error('Columns not provided!'));
44
+ return;
45
+ }
46
+ if (this.tabs == null) {
47
+ this.excelExportService.exportAsExcel(this.data, this.filename, this.columns);
48
+ }
49
+ else {
50
+ this.excelExportService.exportAsExcel(this.data, this.filename, this.columns, this.tabs);
51
+ }
43
52
  }
44
53
  }
45
54
  ExcelFileExportDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ExcelFileExportDirective, deps: [{ token: i0.ElementRef }, { token: i1.ExcelExportService }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Directive });
@@ -68,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
68
77
  }], disabled: [{
69
78
  type: Input
70
79
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZmlsZS5leHBvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1leGNlbC1leHBvcnQvc3JjL2xpYi9leGNlbC5maWxlLmV4cG9ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7O0FBZ0J2RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsYUFBYTtJQXNCdkQsWUFBb0MsVUFBc0IsRUFDdEIsa0JBQXNDLEVBQ3RDLE1BQWM7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFId0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFWM0MsYUFBUSxHQUFHLE1BQU0sQ0FBQztJQVl6QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUNqRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUN2QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzFCLEtBQUssU0FBUztnQkFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUM7U0FDbkc7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO1lBQzdELE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFDL0QsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0YsQ0FBQzs7cUhBaEVRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsSUFBSSxFQUFNO3dCQUNOLDBCQUEwQixFQUFFLE1BQU07d0JBQ2xDLFNBQVMsRUFBbUIsVUFBVTtxQkFDekM7aUJBQ0o7dUpBU1UsT0FBTztzQkFEYixLQUFLO3VCQUFDLDBCQUEwQjtnQkFJMUIsSUFBSTtzQkFEVixLQUFLO3VCQUFDLGtCQUFrQjtnQkFJbEIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLDJCQUEyQjtnQkFJM0IsSUFBSTtzQkFEVixLQUFLO3VCQUFDLHVCQUF1QjtnQkFJdkIsUUFBUTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmFzZUNvbXBvbmVudH0gZnJvbSAnQGRiZy1yaXNraXQvYW5ndWxhci12aWV3JztcbmltcG9ydCB7TG9nZ2VyLCBWYWx1ZUdldHRlcn0gZnJvbSAnQGRiZy1yaXNraXQvY29tbW9uJztcbmltcG9ydCB7RXhjZWxFeHBvcnRTZXJ2aWNlfSBmcm9tICcuL2V4Y2VsLmV4cG9ydC5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBDU1ZFeHBvcnRDb2x1bW48VD4ge1xuICAgIGdldDogVmFsdWVHZXR0ZXI8VD47XG4gICAgaGVhZGVyOiBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3Jpc2steGxzeC1leHBvcnRdJyxcbiAgICBob3N0ICAgIDoge1xuICAgICAgICAnW2NsYXNzLnJpc2steGxzeC1leHBvcnRdJzogJ3RydWUnLFxuICAgICAgICAnKGNsaWNrKScgICAgICAgICAgICAgICAgIDogJ2V4cG9ydCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgRXhjZWxGaWxlRXhwb3J0RGlyZWN0aXZlIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG5cbiAgICAvKipcbiAgICAgKiAncmlzay14bHN4LWV4cG9ydC1jb2x1bW5zJyBjYW4gYmUgcHJvdmlkZWQgYXMgYXJyYXkgT1IgYXJyYXkgb2YgYXJyYXlzLFxuICAgICAqIFdoZW4gcHJvdmlkZWQgYXMgYXJyYXkgb2YgYXJyYXlzIHRoZW4gJ3Jpc2steGxzeC1leHBvcnQnIHNob3VsZCBiZSBwcm92aWRlZCBhcyBhcnJheSBvZiBhcnJheXMgYXMgd2VsbCxcbiAgICAgKiBUaGF0IG1lYW5zIHRoYXQgbXVsdGlwbGUgdGFicyBhcmUgdXNlZCwgdGFiIG5hbWVzIGFyZSBwcm92aWRlZCBpbiAncmlzay14bHN4LWV4cG9ydC10YWJzJyBhcyBhcnJheSBvZiBzdHJpbmdzLFxuICAgICAqL1xuICAgIEBJbnB1dCgncmlzay14bHN4LWV4cG9ydC1jb2x1bW5zJylcbiAgICBwdWJsaWMgY29sdW1ucz86IEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+PiB8IEFycmF5PEFycmF5PENTVkV4cG9ydENvbHVtbjxhbnk+Pj47XG5cbiAgICBASW5wdXQoJ3Jpc2steGxzeC1leHBvcnQnKVxuICAgIHB1YmxpYyBkYXRhPzogYW55W107XG5cbiAgICBASW5wdXQoJ3Jpc2steGxzeC1leHBvcnQtZmlsZW5hbWUnKVxuICAgIHB1YmxpYyBmaWxlbmFtZSA9ICdkYXRhJztcblxuICAgIEBJbnB1dCgncmlzay14bHN4LWV4cG9ydC10YWJzJylcbiAgICBwdWJsaWMgdGFicz86IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBleGNlbEV4cG9ydFNlcnZpY2U6IEV4Y2VsRXhwb3J0U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc2FibGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodHlwZW9mIHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZC50b0xvd2VyQ2FzZSgpID09PSAnZGlzYWJsZWQnIHx8IHRoaXMuZGlzYWJsZWQudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBvcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihuZXcgRXJyb3IoJ05vIGRhdGEgcHJvdmlkZWQgZm9yIGV4cG9ydCEnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHRoaXMudGFicyAmJiB0aGlzLnRhYnMubGVuZ3RoICYmICF0aGlzLmV4Y2VsRXhwb3J0U2VydmljZS5pc0FycmF5T2ZBcnJheXModGhpcy5kYXRhKSkgfHxcbiAgICAgICAgICAgICghdGhpcy50YWJzICYmIHRoaXMuZXhjZWxFeHBvcnRTZXJ2aWNlLmlzQXJyYXlPZkFycmF5cyh0aGlzLmRhdGEpKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IobmV3IEVycm9yKCdXcm9uZyBkYXRhIHN0cnVjdHVyZSBwcm92aWRlZCEnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV4Y2VsRXhwb3J0U2VydmljZS5leHBvcnRBc0V4Y2VsKHRoaXMuZGF0YSwgdGhpcy5maWxlbmFtZSwgdGhpcy50YWJzLCB0aGlzLmNvbHVtbnMpO1xuICAgIH1cbn1cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwuZmlsZS5leHBvcnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGtnL2RiZy1yaXNraXQvYW5ndWxhci1leGNlbC1leHBvcnQvc3JjL2xpYi9leGNlbC5maWxlLmV4cG9ydC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7O0FBZ0J2RCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsYUFBYTtJQXNCdkQsWUFBb0MsVUFBc0IsRUFDdEIsa0JBQXNDLEVBQ3RDLE1BQWM7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFId0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFWM0MsYUFBUSxHQUFHLE1BQU0sQ0FBQztJQVl6QixDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtZQUNqRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUN2QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzFCLEtBQUssU0FBUztnQkFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDekIsS0FBSyxRQUFRO2dCQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUM7U0FDbkc7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUFDO1lBQzdELE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7WUFDL0QsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7WUFDdEQsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFDMUQsSUFBSSxDQUFDLE9BQXlDLENBQUMsQ0FBQztTQUN2RDthQUFNO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUN4RSxJQUFJLENBQUMsT0FBNEQsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckY7SUFDTCxDQUFDOztxSEEzRVEsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFQcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixJQUFJLEVBQU07d0JBQ04sMEJBQTBCLEVBQUUsTUFBTTt3QkFDbEMsU0FBUyxFQUFtQixVQUFVO3FCQUN6QztpQkFDSjt1SkFTVSxPQUFPO3NCQURiLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUkxQixJQUFJO3NCQURWLEtBQUs7dUJBQUMsa0JBQWtCO2dCQUlsQixRQUFRO3NCQURkLEtBQUs7dUJBQUMsMkJBQTJCO2dCQUkzQixJQUFJO3NCQURWLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUl2QixRQUFRO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYXNlQ29tcG9uZW50fSBmcm9tICdAZGJnLXJpc2tpdC9hbmd1bGFyLXZpZXcnO1xuaW1wb3J0IHtMb2dnZXIsIFZhbHVlR2V0dGVyfSBmcm9tICdAZGJnLXJpc2tpdC9jb21tb24nO1xuaW1wb3J0IHtFeGNlbEV4cG9ydFNlcnZpY2V9IGZyb20gJy4vZXhjZWwuZXhwb3J0LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENTVkV4cG9ydENvbHVtbjxUPiB7XG4gICAgZ2V0OiBWYWx1ZUdldHRlcjxUPjtcbiAgICBoZWFkZXI6IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbcmlzay14bHN4LWV4cG9ydF0nLFxuICAgIGhvc3QgICAgOiB7XG4gICAgICAgICdbY2xhc3Mucmlzay14bHN4LWV4cG9ydF0nOiAndHJ1ZScsXG4gICAgICAgICcoY2xpY2spJyAgICAgICAgICAgICAgICAgOiAnZXhwb3J0KCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBFeGNlbEZpbGVFeHBvcnREaXJlY3RpdmUgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICAqICdyaXNrLXhsc3gtZXhwb3J0LWNvbHVtbnMnIGNhbiBiZSBwcm92aWRlZCBhcyBhcnJheSBPUiBhcnJheSBvZiBhcnJheXMsXG4gICAgICogV2hlbiBwcm92aWRlZCBhcyBhcnJheSBvZiBhcnJheXMgdGhlbiAncmlzay14bHN4LWV4cG9ydCcgc2hvdWxkIGJlIHByb3ZpZGVkIGFzIGFycmF5IG9mIGFycmF5cyBhcyB3ZWxsLFxuICAgICAqIFRoYXQgbWVhbnMgdGhhdCBtdWx0aXBsZSB0YWJzIGFyZSB1c2VkLCB0YWIgbmFtZXMgYXJlIHByb3ZpZGVkIGluICdyaXNrLXhsc3gtZXhwb3J0LXRhYnMnIGFzIGFycmF5IG9mIHN0cmluZ3MsXG4gICAgICovXG4gICAgQElucHV0KCdyaXNrLXhsc3gtZXhwb3J0LWNvbHVtbnMnKVxuICAgIHB1YmxpYyBjb2x1bW5zPzogQXJyYXk8Q1NWRXhwb3J0Q29sdW1uPG9iamVjdD4+IHwgQXJyYXk8eyBba2V5OiBzdHJpbmddOiBDU1ZFeHBvcnRDb2x1bW48b2JqZWN0PiB9PjtcblxuICAgIEBJbnB1dCgncmlzay14bHN4LWV4cG9ydCcpXG4gICAgcHVibGljIGRhdGE/OiBvYmplY3RbXSB8IG9iamVjdFtdW107XG5cbiAgICBASW5wdXQoJ3Jpc2steGxzeC1leHBvcnQtZmlsZW5hbWUnKVxuICAgIHB1YmxpYyBmaWxlbmFtZSA9ICdkYXRhJztcblxuICAgIEBJbnB1dCgncmlzay14bHN4LWV4cG9ydC10YWJzJylcbiAgICBwdWJsaWMgdGFicz86IHN0cmluZ1tdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBleGNlbEV4cG9ydFNlcnZpY2U6IEV4Y2VsRXhwb3J0U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc2FibGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodHlwZW9mIHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZC50b0xvd2VyQ2FzZSgpID09PSAnZGlzYWJsZWQnIHx8IHRoaXMuZGlzYWJsZWQudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBleHBvcnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihuZXcgRXJyb3IoJ05vIGRhdGEgcHJvdmlkZWQgZm9yIGV4cG9ydCEnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHRoaXMudGFicyAmJiB0aGlzLnRhYnMubGVuZ3RoICYmICF0aGlzLmV4Y2VsRXhwb3J0U2VydmljZS5pc0FycmF5T2ZBcnJheXModGhpcy5kYXRhKSkgfHxcbiAgICAgICAgICAgICghdGhpcy50YWJzICYmIHRoaXMuZXhjZWxFeHBvcnRTZXJ2aWNlLmlzQXJyYXlPZkFycmF5cyh0aGlzLmRhdGEpKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IobmV3IEVycm9yKCdXcm9uZyBkYXRhIHN0cnVjdHVyZSBwcm92aWRlZCEnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuY29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IobmV3IEVycm9yKCdDb2x1bW5zIG5vdCBwcm92aWRlZCEnKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50YWJzID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZXhjZWxFeHBvcnRTZXJ2aWNlLmV4cG9ydEFzRXhjZWwodGhpcy5kYXRhLCB0aGlzLmZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucyBhcyBBcnJheTxDU1ZFeHBvcnRDb2x1bW48b2JqZWN0Pj4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5leGNlbEV4cG9ydFNlcnZpY2UuZXhwb3J0QXNFeGNlbCh0aGlzLmRhdGEgYXMgb2JqZWN0W11bXSwgdGhpcy5maWxlbmFtZSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMgYXMgQXJyYXk8eyBba2V5OiBzdHJpbmddOiBDU1ZFeHBvcnRDb2x1bW48b2JqZWN0PiB9PiwgdGhpcy50YWJzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -7,10 +7,15 @@ import * as XLSX from 'xlsx';
7
7
  import { BaseComponent } from '@dbg-riskit/angular-view';
8
8
 
9
9
  class ExcelExportService {
10
- exportAsExcel(exportData, filename, tabs, columns) {
10
+ exportAsExcel(exportData, filename, columns, tabs) {
11
11
  if (exportData && exportData.length && columns) {
12
12
  const data = this.createHeaders(exportData, columns);
13
- this.export(data, filename, tabs);
13
+ if (tabs == null) {
14
+ this.export(data, filename);
15
+ }
16
+ else {
17
+ this.export(data, filename, tabs);
18
+ }
14
19
  }
15
20
  }
16
21
  createHeaders(data, columns) {
@@ -27,7 +32,7 @@ class ExcelExportService {
27
32
  const headers = {};
28
33
  const keys = Object.keys(arr[0]);
29
34
  keys.forEach((key) => {
30
- headers[key] = columns[index][+key].header;
35
+ headers[key] = columns[index][key].header;
31
36
  });
32
37
  const clonedData = deepClone(arr);
33
38
  clonedData.unshift(headers);
@@ -131,7 +136,16 @@ class ExcelFileExportDirective extends BaseComponent {
131
136
  this.logger.error(new Error('Wrong data structure provided!'));
132
137
  return;
133
138
  }
134
- this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);
139
+ if (!this.columns) {
140
+ this.logger.error(new Error('Columns not provided!'));
141
+ return;
142
+ }
143
+ if (this.tabs == null) {
144
+ this.excelExportService.exportAsExcel(this.data, this.filename, this.columns);
145
+ }
146
+ else {
147
+ this.excelExportService.exportAsExcel(this.data, this.filename, this.columns, this.tabs);
148
+ }
135
149
  }
136
150
  }
137
151
  ExcelFileExportDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ExcelFileExportDirective, deps: [{ token: i0.ElementRef }, { token: ExcelExportService }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Directive });
@@ -193,3 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
193
207
  */
194
208
 
195
209
  export { ExcelExportModule, ExcelExportService, ExcelFileExportDirective };
210
+ //# sourceMappingURL=dbg-riskit-angular-excel-export.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dbg-riskit-angular-excel-export.mjs","sources":["../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.service.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.file.export.directive.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.module.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/dbg-riskit-angular-excel-export.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {deepClone} from '@dbg-riskit/common';\nimport * as XLSX from 'xlsx';\nimport {CSVExportColumn} from './excel.file.export.directive';\n\n@Injectable()\nexport class ExcelExportService {\n\n public exportAsExcel(exportData: any[], filename: string, tabs?: string[],\n columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>) {\n if (exportData && exportData.length && columns) {\n\n const data = this.createHeaders(exportData, columns);\n\n this.export(data, filename, tabs);\n\n }\n }\n\n private createHeaders(data: any[],\n columns: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>): any[] {\n if (this.isArrayOfArrays(data)) {\n return this.multiTabHeaders(data, columns as Array<Array<CSVExportColumn<any>>>);\n } else {\n return this.singleTabHeaders(data, columns);\n }\n }\n\n private multiTabHeaders(data: any[], columns: Array<Array<CSVExportColumn<any>>>): any[] {\n const dataWithHeaders: any[] = [];\n data.forEach((arr: any[], index: number) => {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(arr[0]);\n keys.forEach((key) => {\n headers[key] = columns[index][+key].header;\n });\n const clonedData = deepClone(arr);\n clonedData.unshift(headers);\n dataWithHeaders.push(clonedData);\n });\n return dataWithHeaders;\n }\n\n private singleTabHeaders(data: any[], columns: any): any[] {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(data[0]);\n\n keys.forEach((key, index) => {\n headers[key] = columns[index].header;\n });\n\n const clonedData = deepClone(data);\n clonedData.unshift(headers);\n return clonedData;\n }\n\n private export(data: any[], filename: string, tabs?: string[]): void {\n const {\n sheetName,\n fileName\n } = this.getFileName(filename);\n\n if (this.isArrayOfArrays(data)) {\n return this.multiTabExport(data, fileName, tabs);\n } else {\n return this.singleTabExport(data, sheetName, fileName);\n }\n }\n\n private multiTabExport(data: any[], filename: string, tabs?: string[]): void {\n const workbook: XLSX.WorkBook = data.reduce((result, curr, index) => {\n if ('Sheets' in result) {\n result['Sheets'] = {\n ...result['Sheets'],\n [tabs![index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n } else {\n result['Sheets'] = {[tabs![index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})};\n }\n if ('SheetNames' in result) {\n result['SheetNames'] = [...result['SheetNames'], tabs![index]];\n } else {\n result['SheetNames'] = [tabs![index]];\n }\n return result;\n }, {});\n XLSX.writeFile(workbook, filename);\n }\n\n private singleTabExport(data: any[], sheetName: string, filename: string): void {\n const worksheet = XLSX.utils.json_to_sheet(data, {skipHeader: true});\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n XLSX.writeFile(workbook, filename);\n }\n\n private getFileName(sheetName: string): { sheetName: string, fileName: string } {\n const fileName = `${sheetName}.xlsx`;\n return {\n sheetName,\n fileName\n };\n }\n\n public isArrayOfArrays(array: any[]): boolean {\n return array.every((item) => Array.isArray(item));\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\nimport {BaseComponent} from '@dbg-riskit/angular-view';\nimport {Logger, ValueGetter} from '@dbg-riskit/common';\nimport {ExcelExportService} from './excel.export.service';\n\nexport interface CSVExportColumn<T> {\n get: ValueGetter<T>;\n header: string;\n}\n\n@Directive({\n selector: '[risk-xlsx-export]',\n host : {\n '[class.risk-xlsx-export]': 'true',\n '(click)' : 'export()'\n }\n})\nexport class ExcelFileExportDirective extends BaseComponent {\n\n /**\n * 'risk-xlsx-export-columns' can be provided as array OR array of arrays,\n * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,\n * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,\n */\n @Input('risk-xlsx-export-columns')\n public columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>;\n\n @Input('risk-xlsx-export')\n public data?: any[];\n\n @Input('risk-xlsx-export-filename')\n public filename = 'data';\n\n @Input('risk-xlsx-export-tabs')\n public tabs?: string[];\n\n @Input()\n public disabled?: boolean | string;\n\n public constructor(private readonly elementRef: ElementRef,\n private readonly excelExportService: ExcelExportService,\n private readonly logger: Logger) {\n super();\n }\n\n private isDisabled(): boolean {\n if (this.elementRef.nativeElement.disabled === true) {\n return true;\n }\n\n if (this.disabled == null) {\n return false;\n }\n\n switch (typeof this.disabled) {\n case 'boolean':\n return this.disabled;\n case 'string':\n return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';\n }\n\n return false;\n }\n\n public export(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.data == null) {\n this.logger.error(new Error('No data provided for export!'));\n return;\n }\n\n if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||\n (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n\n this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ExcelExportService} from './excel.export.service';\nimport {ExcelFileExportDirective} from './excel.file.export.directive';\n\n@NgModule({\n imports : [\n CommonModule\n ],\n declarations: [\n ExcelFileExportDirective\n ],\n exports : [\n ExcelFileExportDirective\n ],\n providers : [\n ExcelExportService\n ]\n})\nexport class ExcelExportModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dbg-riskit-angular-excel-export.mjs","sources":["../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.service.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.file.export.directive.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.module.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/dbg-riskit-angular-excel-export.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {deepClone} from '@dbg-riskit/common';\nimport * as XLSX from 'xlsx';\nimport {CSVExportColumn} from './excel.file.export.directive';\n\n@Injectable()\nexport class ExcelExportService {\n\n public exportAsExcel(exportData: object[], filename: string, columns: Array<CSVExportColumn<object>>): void;\n public exportAsExcel(exportData: object[][], filename: string,\n columns: Array<{ [key: string]: CSVExportColumn<object> }>, tabs: string[]): void;\n public exportAsExcel(exportData: object[] | object[][], filename: string,\n columns: Array<CSVExportColumn<object>> | Array<{\n [key: string]: CSVExportColumn<object>\n }>, tabs?: string[]): void {\n if (exportData && exportData.length && columns) {\n const data = this.createHeaders(exportData, columns);\n if (tabs == null) {\n this.export(data, filename);\n } else {\n this.export(data as object[][], filename, tabs);\n }\n }\n }\n\n private createHeaders(data: object[] | object[][], columns: Array<CSVExportColumn<object>> | Array<{\n [key: string]: CSVExportColumn<object>\n }>): object[] | object[][] {\n if (this.isArrayOfArrays(data)) {\n return this.multiTabHeaders(data as object[][],\n columns as Array<{ [key: string]: CSVExportColumn<object> }>);\n } else {\n return this.singleTabHeaders(data, columns as Array<CSVExportColumn<object>>);\n }\n }\n\n private multiTabHeaders(data: object[][], columns: Array<{\n [key: string]: CSVExportColumn<object>\n }>): object[][] {\n const dataWithHeaders: object[][] = [];\n data.forEach((arr: object[], index: number) => {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(arr[0]);\n keys.forEach((key) => {\n headers[key] = columns[index][key].header;\n });\n const clonedData = deepClone(arr);\n clonedData.unshift(headers);\n dataWithHeaders.push(clonedData);\n });\n return dataWithHeaders;\n }\n\n private singleTabHeaders(data: object[], columns: Array<CSVExportColumn<object>>): object[] {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(data[0]);\n\n keys.forEach((key, index) => {\n headers[key] = columns[index].header;\n });\n\n const clonedData = deepClone(data);\n clonedData.unshift(headers);\n return clonedData;\n }\n\n private export(data: object[], filename: string): void;\n private export(data: object[][], filename: string, tabs: string[]): void;\n private export(data: object[] | object[][], filename: string, tabs?: string[]): void {\n const {\n sheetName,\n fileName\n } = this.getFileName(filename);\n\n if (this.isArrayOfArrays(data)) {\n return this.multiTabExport(data as object[][], fileName, tabs!);\n } else {\n return this.singleTabExport(data, sheetName, fileName);\n }\n }\n\n private multiTabExport(data: object[][], filename: string, tabs: string[]): void {\n const workbook: XLSX.WorkBook = data.reduce((result, curr, index) => {\n if ('Sheets' in result) {\n result['Sheets'] = {\n ...result['Sheets'],\n [tabs[index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n } else {\n result['Sheets'] = {[tabs[index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})};\n }\n if ('SheetNames' in result) {\n result['SheetNames'] = [...result['SheetNames'], tabs[index]];\n } else {\n result['SheetNames'] = [tabs[index]];\n }\n return result;\n }, {} as XLSX.WorkBook);\n XLSX.writeFile(workbook, filename);\n }\n\n private singleTabExport(data: object[], sheetName: string, filename: string): void {\n const worksheet = XLSX.utils.json_to_sheet(data, {skipHeader: true});\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n XLSX.writeFile(workbook, filename);\n }\n\n private getFileName(sheetName: string): { sheetName: string, fileName: string } {\n const fileName = `${sheetName}.xlsx`;\n return {\n sheetName,\n fileName\n };\n }\n\n public isArrayOfArrays(array: object[] | object[][]): boolean {\n return array.every((item) => Array.isArray(item));\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\nimport {BaseComponent} from '@dbg-riskit/angular-view';\nimport {Logger, ValueGetter} from '@dbg-riskit/common';\nimport {ExcelExportService} from './excel.export.service';\n\nexport interface CSVExportColumn<T> {\n get: ValueGetter<T>;\n header: string;\n}\n\n@Directive({\n selector: '[risk-xlsx-export]',\n host : {\n '[class.risk-xlsx-export]': 'true',\n '(click)' : 'export()'\n }\n})\nexport class ExcelFileExportDirective extends BaseComponent {\n\n /**\n * 'risk-xlsx-export-columns' can be provided as array OR array of arrays,\n * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,\n * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,\n */\n @Input('risk-xlsx-export-columns')\n public columns?: Array<CSVExportColumn<object>> | Array<{ [key: string]: CSVExportColumn<object> }>;\n\n @Input('risk-xlsx-export')\n public data?: object[] | object[][];\n\n @Input('risk-xlsx-export-filename')\n public filename = 'data';\n\n @Input('risk-xlsx-export-tabs')\n public tabs?: string[];\n\n @Input()\n public disabled?: boolean | string;\n\n public constructor(private readonly elementRef: ElementRef,\n private readonly excelExportService: ExcelExportService,\n private readonly logger: Logger) {\n super();\n }\n\n private isDisabled(): boolean {\n if (this.elementRef.nativeElement.disabled === true) {\n return true;\n }\n\n if (this.disabled == null) {\n return false;\n }\n\n switch (typeof this.disabled) {\n case 'boolean':\n return this.disabled;\n case 'string':\n return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';\n }\n\n return false;\n }\n\n public export(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.data == null) {\n this.logger.error(new Error('No data provided for export!'));\n return;\n }\n\n if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||\n (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n\n if (!this.columns) {\n this.logger.error(new Error('Columns not provided!'));\n return;\n }\n\n if (this.tabs == null) {\n this.excelExportService.exportAsExcel(this.data, this.filename,\n this.columns as Array<CSVExportColumn<object>>);\n } else {\n this.excelExportService.exportAsExcel(this.data as object[][], this.filename,\n this.columns as Array<{ [key: string]: CSVExportColumn<object> }>, this.tabs);\n }\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ExcelExportService} from './excel.export.service';\nimport {ExcelFileExportDirective} from './excel.file.export.directive';\n\n@NgModule({\n imports : [\n CommonModule\n ],\n declarations: [\n ExcelFileExportDirective\n ],\n exports : [\n ExcelFileExportDirective\n ],\n providers : [\n ExcelExportService\n ]\n})\nexport class ExcelExportModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -7,10 +7,15 @@ import * as XLSX from 'xlsx';
7
7
  import { BaseComponent } from '@dbg-riskit/angular-view';
8
8
 
9
9
  class ExcelExportService {
10
- exportAsExcel(exportData, filename, tabs, columns) {
10
+ exportAsExcel(exportData, filename, columns, tabs) {
11
11
  if (exportData && exportData.length && columns) {
12
12
  const data = this.createHeaders(exportData, columns);
13
- this.export(data, filename, tabs);
13
+ if (tabs == null) {
14
+ this.export(data, filename);
15
+ }
16
+ else {
17
+ this.export(data, filename, tabs);
18
+ }
14
19
  }
15
20
  }
16
21
  createHeaders(data, columns) {
@@ -27,7 +32,7 @@ class ExcelExportService {
27
32
  const headers = {};
28
33
  const keys = Object.keys(arr[0]);
29
34
  keys.forEach((key) => {
30
- headers[key] = columns[index][+key].header;
35
+ headers[key] = columns[index][key].header;
31
36
  });
32
37
  const clonedData = deepClone(arr);
33
38
  clonedData.unshift(headers);
@@ -134,7 +139,16 @@ class ExcelFileExportDirective extends BaseComponent {
134
139
  this.logger.error(new Error('Wrong data structure provided!'));
135
140
  return;
136
141
  }
137
- this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);
142
+ if (!this.columns) {
143
+ this.logger.error(new Error('Columns not provided!'));
144
+ return;
145
+ }
146
+ if (this.tabs == null) {
147
+ this.excelExportService.exportAsExcel(this.data, this.filename, this.columns);
148
+ }
149
+ else {
150
+ this.excelExportService.exportAsExcel(this.data, this.filename, this.columns, this.tabs);
151
+ }
138
152
  }
139
153
  }
140
154
  ExcelFileExportDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: ExcelFileExportDirective, deps: [{ token: i0.ElementRef }, { token: ExcelExportService }, { token: i2.Logger }], target: i0.ɵɵFactoryTarget.Directive });
@@ -196,3 +210,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImpor
196
210
  */
197
211
 
198
212
  export { ExcelExportModule, ExcelExportService, ExcelFileExportDirective };
213
+ //# sourceMappingURL=dbg-riskit-angular-excel-export.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dbg-riskit-angular-excel-export.mjs","sources":["../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.service.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.file.export.directive.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.module.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/dbg-riskit-angular-excel-export.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {deepClone} from '@dbg-riskit/common';\nimport * as XLSX from 'xlsx';\nimport {CSVExportColumn} from './excel.file.export.directive';\n\n@Injectable()\nexport class ExcelExportService {\n\n public exportAsExcel(exportData: any[], filename: string, tabs?: string[],\n columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>) {\n if (exportData && exportData.length && columns) {\n\n const data = this.createHeaders(exportData, columns);\n\n this.export(data, filename, tabs);\n\n }\n }\n\n private createHeaders(data: any[],\n columns: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>): any[] {\n if (this.isArrayOfArrays(data)) {\n return this.multiTabHeaders(data, columns as Array<Array<CSVExportColumn<any>>>);\n } else {\n return this.singleTabHeaders(data, columns);\n }\n }\n\n private multiTabHeaders(data: any[], columns: Array<Array<CSVExportColumn<any>>>): any[] {\n const dataWithHeaders: any[] = [];\n data.forEach((arr: any[], index: number) => {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(arr[0]);\n keys.forEach((key) => {\n headers[key] = columns[index][+key].header;\n });\n const clonedData = deepClone(arr);\n clonedData.unshift(headers);\n dataWithHeaders.push(clonedData);\n });\n return dataWithHeaders;\n }\n\n private singleTabHeaders(data: any[], columns: any): any[] {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(data[0]);\n\n keys.forEach((key, index) => {\n headers[key] = columns[index].header;\n });\n\n const clonedData = deepClone(data);\n clonedData.unshift(headers);\n return clonedData;\n }\n\n private export(data: any[], filename: string, tabs?: string[]): void {\n const {\n sheetName,\n fileName\n } = this.getFileName(filename);\n\n if (this.isArrayOfArrays(data)) {\n return this.multiTabExport(data, fileName, tabs);\n } else {\n return this.singleTabExport(data, sheetName, fileName);\n }\n }\n\n private multiTabExport(data: any[], filename: string, tabs?: string[]): void {\n const workbook: XLSX.WorkBook = data.reduce((result, curr, index) => {\n if ('Sheets' in result) {\n result['Sheets'] = {\n ...result['Sheets'],\n [tabs![index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n } else {\n result['Sheets'] = {[tabs![index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})};\n }\n if ('SheetNames' in result) {\n result['SheetNames'] = [...result['SheetNames'], tabs![index]];\n } else {\n result['SheetNames'] = [tabs![index]];\n }\n return result;\n }, {});\n XLSX.writeFile(workbook, filename);\n }\n\n private singleTabExport(data: any[], sheetName: string, filename: string): void {\n const worksheet = XLSX.utils.json_to_sheet(data, {skipHeader: true});\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n XLSX.writeFile(workbook, filename);\n }\n\n private getFileName(sheetName: string): { sheetName: string, fileName: string } {\n const fileName = `${sheetName}.xlsx`;\n return {\n sheetName,\n fileName\n };\n }\n\n public isArrayOfArrays(array: any[]): boolean {\n return array.every((item) => Array.isArray(item));\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\nimport {BaseComponent} from '@dbg-riskit/angular-view';\nimport {Logger, ValueGetter} from '@dbg-riskit/common';\nimport {ExcelExportService} from './excel.export.service';\n\nexport interface CSVExportColumn<T> {\n get: ValueGetter<T>;\n header: string;\n}\n\n@Directive({\n selector: '[risk-xlsx-export]',\n host : {\n '[class.risk-xlsx-export]': 'true',\n '(click)' : 'export()'\n }\n})\nexport class ExcelFileExportDirective extends BaseComponent {\n\n /**\n * 'risk-xlsx-export-columns' can be provided as array OR array of arrays,\n * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,\n * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,\n */\n @Input('risk-xlsx-export-columns')\n public columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>;\n\n @Input('risk-xlsx-export')\n public data?: any[];\n\n @Input('risk-xlsx-export-filename')\n public filename = 'data';\n\n @Input('risk-xlsx-export-tabs')\n public tabs?: string[];\n\n @Input()\n public disabled?: boolean | string;\n\n public constructor(private readonly elementRef: ElementRef,\n private readonly excelExportService: ExcelExportService,\n private readonly logger: Logger) {\n super();\n }\n\n private isDisabled(): boolean {\n if (this.elementRef.nativeElement.disabled === true) {\n return true;\n }\n\n if (this.disabled == null) {\n return false;\n }\n\n switch (typeof this.disabled) {\n case 'boolean':\n return this.disabled;\n case 'string':\n return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';\n }\n\n return false;\n }\n\n public export(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.data == null) {\n this.logger.error(new Error('No data provided for export!'));\n return;\n }\n\n if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||\n (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n\n this.excelExportService.exportAsExcel(this.data, this.filename, this.tabs, this.columns);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ExcelExportService} from './excel.export.service';\nimport {ExcelFileExportDirective} from './excel.file.export.directive';\n\n@NgModule({\n imports : [\n CommonModule\n ],\n declarations: [\n ExcelFileExportDirective\n ],\n exports : [\n ExcelFileExportDirective\n ],\n providers : [\n ExcelExportService\n ]\n})\nexport class ExcelExportModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dbg-riskit-angular-excel-export.mjs","sources":["../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.service.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.file.export.directive.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/lib/excel.export.module.ts","../../../../pkg/dbg-riskit/angular-excel-export/src/dbg-riskit-angular-excel-export.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {deepClone} from '@dbg-riskit/common';\nimport * as XLSX from 'xlsx';\nimport {CSVExportColumn} from './excel.file.export.directive';\n\n@Injectable()\nexport class ExcelExportService {\n\n public exportAsExcel(exportData: object[], filename: string, columns: Array<CSVExportColumn<object>>): void;\n public exportAsExcel(exportData: object[][], filename: string,\n columns: Array<{ [key: string]: CSVExportColumn<object> }>, tabs: string[]): void;\n public exportAsExcel(exportData: object[] | object[][], filename: string,\n columns: Array<CSVExportColumn<object>> | Array<{\n [key: string]: CSVExportColumn<object>\n }>, tabs?: string[]): void {\n if (exportData && exportData.length && columns) {\n const data = this.createHeaders(exportData, columns);\n if (tabs == null) {\n this.export(data, filename);\n } else {\n this.export(data as object[][], filename, tabs);\n }\n }\n }\n\n private createHeaders(data: object[] | object[][], columns: Array<CSVExportColumn<object>> | Array<{\n [key: string]: CSVExportColumn<object>\n }>): object[] | object[][] {\n if (this.isArrayOfArrays(data)) {\n return this.multiTabHeaders(data as object[][],\n columns as Array<{ [key: string]: CSVExportColumn<object> }>);\n } else {\n return this.singleTabHeaders(data, columns as Array<CSVExportColumn<object>>);\n }\n }\n\n private multiTabHeaders(data: object[][], columns: Array<{\n [key: string]: CSVExportColumn<object>\n }>): object[][] {\n const dataWithHeaders: object[][] = [];\n data.forEach((arr: object[], index: number) => {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(arr[0]);\n keys.forEach((key) => {\n headers[key] = columns[index][key].header;\n });\n const clonedData = deepClone(arr);\n clonedData.unshift(headers);\n dataWithHeaders.push(clonedData);\n });\n return dataWithHeaders;\n }\n\n private singleTabHeaders(data: object[], columns: Array<CSVExportColumn<object>>): object[] {\n const headers: { [key: string]: string } = {};\n const keys = Object.keys(data[0]);\n\n keys.forEach((key, index) => {\n headers[key] = columns[index].header;\n });\n\n const clonedData = deepClone(data);\n clonedData.unshift(headers);\n return clonedData;\n }\n\n private export(data: object[], filename: string): void;\n private export(data: object[][], filename: string, tabs: string[]): void;\n private export(data: object[] | object[][], filename: string, tabs?: string[]): void {\n const {\n sheetName,\n fileName\n } = this.getFileName(filename);\n\n if (this.isArrayOfArrays(data)) {\n return this.multiTabExport(data as object[][], fileName, tabs!);\n } else {\n return this.singleTabExport(data, sheetName, fileName);\n }\n }\n\n private multiTabExport(data: object[][], filename: string, tabs: string[]): void {\n const workbook: XLSX.WorkBook = data.reduce((result, curr, index) => {\n if ('Sheets' in result) {\n result['Sheets'] = {\n ...result['Sheets'],\n [tabs[index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n } else {\n result['Sheets'] = {[tabs[index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})};\n }\n if ('SheetNames' in result) {\n result['SheetNames'] = [...result['SheetNames'], tabs[index]];\n } else {\n result['SheetNames'] = [tabs[index]];\n }\n return result;\n }, {} as XLSX.WorkBook);\n XLSX.writeFile(workbook, filename);\n }\n\n private singleTabExport(data: object[], sheetName: string, filename: string): void {\n const worksheet = XLSX.utils.json_to_sheet(data, {skipHeader: true});\n const workbook = XLSX.utils.book_new();\n XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);\n XLSX.writeFile(workbook, filename);\n }\n\n private getFileName(sheetName: string): { sheetName: string, fileName: string } {\n const fileName = `${sheetName}.xlsx`;\n return {\n sheetName,\n fileName\n };\n }\n\n public isArrayOfArrays(array: object[] | object[][]): boolean {\n return array.every((item) => Array.isArray(item));\n }\n}\n","import {Directive, ElementRef, Input} from '@angular/core';\nimport {BaseComponent} from '@dbg-riskit/angular-view';\nimport {Logger, ValueGetter} from '@dbg-riskit/common';\nimport {ExcelExportService} from './excel.export.service';\n\nexport interface CSVExportColumn<T> {\n get: ValueGetter<T>;\n header: string;\n}\n\n@Directive({\n selector: '[risk-xlsx-export]',\n host : {\n '[class.risk-xlsx-export]': 'true',\n '(click)' : 'export()'\n }\n})\nexport class ExcelFileExportDirective extends BaseComponent {\n\n /**\n * 'risk-xlsx-export-columns' can be provided as array OR array of arrays,\n * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,\n * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,\n */\n @Input('risk-xlsx-export-columns')\n public columns?: Array<CSVExportColumn<object>> | Array<{ [key: string]: CSVExportColumn<object> }>;\n\n @Input('risk-xlsx-export')\n public data?: object[] | object[][];\n\n @Input('risk-xlsx-export-filename')\n public filename = 'data';\n\n @Input('risk-xlsx-export-tabs')\n public tabs?: string[];\n\n @Input()\n public disabled?: boolean | string;\n\n public constructor(private readonly elementRef: ElementRef,\n private readonly excelExportService: ExcelExportService,\n private readonly logger: Logger) {\n super();\n }\n\n private isDisabled(): boolean {\n if (this.elementRef.nativeElement.disabled === true) {\n return true;\n }\n\n if (this.disabled == null) {\n return false;\n }\n\n switch (typeof this.disabled) {\n case 'boolean':\n return this.disabled;\n case 'string':\n return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';\n }\n\n return false;\n }\n\n public export(): void {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.data == null) {\n this.logger.error(new Error('No data provided for export!'));\n return;\n }\n\n if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||\n (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n\n if (!this.columns) {\n this.logger.error(new Error('Columns not provided!'));\n return;\n }\n\n if (this.tabs == null) {\n this.excelExportService.exportAsExcel(this.data, this.filename,\n this.columns as Array<CSVExportColumn<object>>);\n } else {\n this.excelExportService.exportAsExcel(this.data as object[][], this.filename,\n this.columns as Array<{ [key: string]: CSVExportColumn<object> }>, this.tabs);\n }\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ExcelExportService} from './excel.export.service';\nimport {ExcelFileExportDirective} from './excel.file.export.directive';\n\n@NgModule({\n imports : [\n CommonModule\n ],\n declarations: [\n ExcelFileExportDirective\n ],\n exports : [\n ExcelFileExportDirective\n ],\n providers : [\n ExcelExportService\n ]\n})\nexport class ExcelExportModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { CSVExportColumn } from './excel.file.export.directive';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class ExcelExportService {
4
- exportAsExcel(exportData: any[], filename: string, tabs?: string[], columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>): void;
4
+ exportAsExcel(exportData: object[], filename: string, columns: Array<CSVExportColumn<object>>): void;
5
+ exportAsExcel(exportData: object[][], filename: string, columns: Array<{
6
+ [key: string]: CSVExportColumn<object>;
7
+ }>, tabs: string[]): void;
5
8
  private createHeaders;
6
9
  private multiTabHeaders;
7
10
  private singleTabHeaders;
@@ -9,7 +12,7 @@ export declare class ExcelExportService {
9
12
  private multiTabExport;
10
13
  private singleTabExport;
11
14
  private getFileName;
12
- isArrayOfArrays(array: any[]): boolean;
15
+ isArrayOfArrays(array: object[] | object[][]): boolean;
13
16
  static ɵfac: i0.ɵɵFactoryDeclaration<ExcelExportService, never>;
14
17
  static ɵprov: i0.ɵɵInjectableDeclaration<ExcelExportService>;
15
18
  }
@@ -16,8 +16,10 @@ export declare class ExcelFileExportDirective extends BaseComponent {
16
16
  * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,
17
17
  * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,
18
18
  */
19
- columns?: Array<CSVExportColumn<any>> | Array<Array<CSVExportColumn<any>>>;
20
- data?: any[];
19
+ columns?: Array<CSVExportColumn<object>> | Array<{
20
+ [key: string]: CSVExportColumn<object>;
21
+ }>;
22
+ data?: object[] | object[][];
21
23
  filename: string;
22
24
  tabs?: string[];
23
25
  disabled?: boolean | string;
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@dbg-riskit/angular-excel-export",
3
- "version": "13.0.1",
3
+ "version": "9999.9999.9999-rc.21196",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "peerDependencies": {
6
6
  "@angular/core": "^13.0.2",
7
7
  "@angular/platform-browser": "^13.0.2",
8
8
  "@angular/common": "^13.0.2",
9
- "@dbg-riskit/common": "~13.0.1",
10
- "@dbg-riskit/angular-common": "~13.0.1",
11
- "@dbg-riskit/angular-logging": "~13.0.1",
9
+ "@dbg-riskit/common": "~9999.9999.9999-rc.21196",
10
+ "@dbg-riskit/angular-common": "~9999.9999.9999-rc.21196",
11
+ "@dbg-riskit/angular-logging": "~9999.9999.9999-rc.21196",
12
12
  "xlsx": "^0.17.4"
13
13
  },
14
14
  "dependencies": {