@dbg-riskit/angular-excel-export 9999.9999.9999-rc.3113921 → 9999.9999.9999-rc.3295464

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.
@@ -1,10 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ElementRef, Input, Directive } from '@angular/core';
2
+ import { Injectable, inject, ElementRef, input, Directive } from '@angular/core';
3
3
  import { deepClone, Logger } from '@dbg-riskit/common';
4
4
  import * as XLSX from 'xlsx';
5
- import { BaseComponent } from '@dbg-riskit/angular-view';
6
5
 
7
- class ExcelExportService {
6
+ class RiskExcelExportService {
8
7
  exportAsExcel(exportData, filename, columns, tabs) {
9
8
  if (exportData && exportData.length && columns) {
10
9
  const data = this.createHeaders(exportData, columns);
@@ -87,65 +86,85 @@ class ExcelExportService {
87
86
  isArrayOfArrays(array) {
88
87
  return array.every((item) => Array.isArray(item));
89
88
  }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ExcelExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ExcelExportService, providedIn: 'root' }); }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RiskExcelExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
90
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RiskExcelExportService, providedIn: 'root' }); }
92
91
  }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ExcelExportService, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RiskExcelExportService, decorators: [{
94
93
  type: Injectable,
95
94
  args: [{ providedIn: 'root' }]
96
95
  }] });
97
96
 
98
- class ExcelFileExportDirective extends BaseComponent {
97
+ class RiskExcelFileExportDirective {
99
98
  constructor() {
100
- super(...arguments);
101
99
  this.elementRef = inject(ElementRef);
102
- this.excelExportService = inject(ExcelExportService);
100
+ this.excelExportService = inject(RiskExcelExportService);
103
101
  this.logger = inject(Logger);
104
- this.filename = 'data';
102
+ /**
103
+ * 'risk-xlsx-export-columns' can be provided as array OR array of arrays,
104
+ * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,
105
+ * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,
106
+ */
107
+ this.columns = input.required(...(ngDevMode ? [{ debugName: "columns", alias: 'risk-xlsx-export-columns' }] : [{ alias: 'risk-xlsx-export-columns' }]));
108
+ this.data = input.required(...(ngDevMode ? [{ debugName: "data", alias: 'risk-xlsx-export' }] : [{ alias: 'risk-xlsx-export' }]));
109
+ this.filename = input('data', ...(ngDevMode ? [{ debugName: "filename", alias: 'risk-xlsx-export-filename' }] : [{ alias: 'risk-xlsx-export-filename' }]));
110
+ this.tabs = input(undefined, ...(ngDevMode ? [{ debugName: "tabs", alias: 'risk-xlsx-export-tabs' }] : [{ alias: 'risk-xlsx-export-tabs' }]));
111
+ this.disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : []));
105
112
  }
106
113
  export() {
107
114
  if (this.isDisabled()) {
108
115
  return;
109
116
  }
110
- if (this.data == null) {
117
+ const data = this.data();
118
+ if (!Array.isArray(data) || data.length === 0) {
111
119
  this.logger.error(new Error('No data provided for export!'));
112
120
  return;
113
121
  }
114
- if ((this.tabs && this.tabs.length && !this.excelExportService.isArrayOfArrays(this.data)) ||
115
- (!this.tabs && this.excelExportService.isArrayOfArrays(this.data))) {
116
- this.logger.error(new Error('Wrong data structure provided!'));
117
- return;
122
+ const tabs = this.tabs();
123
+ const isArrayOfArrays = this.excelExportService.isArrayOfArrays(data);
124
+ if (isArrayOfArrays) {
125
+ if (!tabs || tabs.length === 0) {
126
+ this.logger.error(new Error('Wrong data structure provided!'));
127
+ return;
128
+ }
129
+ }
130
+ else {
131
+ if (tabs && tabs.length > 0) {
132
+ this.logger.error(new Error('Wrong data structure provided!'));
133
+ return;
134
+ }
118
135
  }
119
- if (!this.columns) {
136
+ const columns = this.columns();
137
+ if (!columns) {
120
138
  this.logger.error(new Error('Columns not provided!'));
121
139
  return;
122
140
  }
123
- if (this.tabs == null) {
124
- this.excelExportService.exportAsExcel(this.data, this.filename, this.columns);
141
+ if (!tabs) {
142
+ this.excelExportService.exportAsExcel(data, this.filename(), columns);
125
143
  }
126
144
  else {
127
- this.excelExportService.exportAsExcel(this.data, this.filename, this.columns, this.tabs);
145
+ this.excelExportService.exportAsExcel(data, this.filename(), columns, tabs);
128
146
  }
129
147
  }
130
148
  isDisabled() {
131
149
  if (this.elementRef.nativeElement.disabled === true) {
132
150
  return true;
133
151
  }
134
- if (this.disabled == null) {
152
+ const disabledValue = this.disabled();
153
+ if (disabledValue == null) {
135
154
  return false;
136
155
  }
137
- switch (typeof this.disabled) {
156
+ switch (typeof disabledValue) {
138
157
  case 'boolean':
139
- return this.disabled;
158
+ return disabledValue;
140
159
  case 'string':
141
- return this.disabled.toLowerCase() === 'disabled' || this.disabled.toLowerCase() === 'true';
160
+ return disabledValue.toLowerCase() === 'disabled' || disabledValue.toLowerCase() === 'true';
142
161
  }
143
162
  return false;
144
163
  }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ExcelFileExportDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
146
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.12", type: ExcelFileExportDirective, isStandalone: true, selector: "[risk-xlsx-export]", inputs: { columns: ["risk-xlsx-export-columns", "columns"], data: ["risk-xlsx-export", "data"], filename: ["risk-xlsx-export-filename", "filename"], tabs: ["risk-xlsx-export-tabs", "tabs"], disabled: "disabled" }, host: { listeners: { "click": "export()" }, properties: { "class.risk-xlsx-export": "true" } }, usesInheritance: true, ngImport: i0 }); }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RiskExcelFileExportDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
165
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.15", type: RiskExcelFileExportDirective, isStandalone: true, selector: "[risk-xlsx-export]", inputs: { columns: { classPropertyName: "columns", publicName: "risk-xlsx-export-columns", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "risk-xlsx-export", isSignal: true, isRequired: true, transformFunction: null }, filename: { classPropertyName: "filename", publicName: "risk-xlsx-export-filename", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "risk-xlsx-export-tabs", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "export()" }, properties: { "class.risk-xlsx-export": "true" } }, ngImport: i0 }); }
147
166
  }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ExcelFileExportDirective, decorators: [{
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: RiskExcelFileExportDirective, decorators: [{
149
168
  type: Directive,
150
169
  args: [{
151
170
  selector: '[risk-xlsx-export]',
@@ -154,25 +173,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
154
173
  '(click)': 'export()'
155
174
  }
156
175
  }]
157
- }], propDecorators: { columns: [{
158
- type: Input,
159
- args: ['risk-xlsx-export-columns']
160
- }], data: [{
161
- type: Input,
162
- args: ['risk-xlsx-export']
163
- }], filename: [{
164
- type: Input,
165
- args: ['risk-xlsx-export-filename']
166
- }], tabs: [{
167
- type: Input,
168
- args: ['risk-xlsx-export-tabs']
169
- }], disabled: [{
170
- type: Input
171
- }] } });
176
+ }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "risk-xlsx-export-columns", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "risk-xlsx-export", required: true }] }], filename: [{ type: i0.Input, args: [{ isSignal: true, alias: "risk-xlsx-export-filename", required: false }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "risk-xlsx-export-tabs", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
172
177
 
173
178
  /**
174
179
  * Generated bundle index. Do not edit.
175
180
  */
176
181
 
177
- export { ExcelExportService, ExcelFileExportDirective };
182
+ export { RiskExcelExportService, RiskExcelFileExportDirective };
178
183
  //# 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/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({providedIn: 'root'})\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 result.Sheets = {\n ...result.Sheets,\n [tabs[index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n result.SheetNames = [...result.SheetNames, tabs[index]];\n return result;\n }, {\n Sheets : {},\n SheetNames: []\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, inject, 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 private readonly elementRef = inject(ElementRef);\n private readonly excelExportService = inject(ExcelExportService);\n private readonly logger = inject(Logger);\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 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 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","/**\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/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({providedIn: 'root'})\nexport class RiskExcelExportService {\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 result.Sheets = {\n ...result.Sheets,\n [tabs[index]]: XLSX.utils.json_to_sheet(curr, {skipHeader: true})\n };\n result.SheetNames = [...result.SheetNames, tabs[index]];\n return result;\n }, {\n Sheets : {},\n SheetNames: []\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, inject, input} from '@angular/core';\nimport {Logger, ValueGetter} from '@dbg-riskit/common';\nimport {RiskExcelExportService} 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 RiskExcelFileExportDirective {\n private readonly elementRef = inject(ElementRef);\n private readonly excelExportService = inject(RiskExcelExportService);\n private readonly logger = inject(Logger);\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 public readonly columns = input.required<Array<CSVExportColumn<object>> | Array<{\n [key: string]: CSVExportColumn<object>\n }>>({alias: 'risk-xlsx-export-columns'});\n public readonly data = input.required<object[] | object[][]>({alias: 'risk-xlsx-export'});\n public readonly filename = input('data', {alias: 'risk-xlsx-export-filename'});\n public readonly tabs = input<string[]>(undefined, {alias: 'risk-xlsx-export-tabs'});\n public readonly disabled = input<boolean | string>();\n\n public export(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const data = this.data();\n if (!Array.isArray(data) || data.length === 0) {\n this.logger.error(new Error('No data provided for export!'));\n return;\n }\n\n const tabs = this.tabs();\n const isArrayOfArrays = this.excelExportService.isArrayOfArrays(data);\n if (isArrayOfArrays) {\n if (!tabs || tabs.length === 0) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n } else {\n if (tabs && tabs.length > 0) {\n this.logger.error(new Error('Wrong data structure provided!'));\n return;\n }\n }\n\n const columns = this.columns();\n if (!columns) {\n this.logger.error(new Error('Columns not provided!'));\n return;\n }\n\n if (!tabs) {\n this.excelExportService.exportAsExcel(data as object[], this.filename(),\n columns as Array<CSVExportColumn<object>>);\n } else {\n this.excelExportService.exportAsExcel(data as object[][], this.filename(),\n columns as Array<{ [key: string]: CSVExportColumn<object> }>, tabs);\n }\n }\n\n private isDisabled(): boolean {\n if (this.elementRef.nativeElement.disabled === true) {\n return true;\n }\n\n const disabledValue = this.disabled();\n if (disabledValue == null) {\n return false;\n }\n\n switch (typeof disabledValue) {\n case 'boolean':\n return disabledValue;\n case 'string':\n return disabledValue.toLowerCase() === 'disabled' || disabledValue.toLowerCase() === 'true';\n }\n\n return false;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
- import { BaseComponent } from '@dbg-riskit/angular-view';
1
+ import * as _angular_core from '@angular/core';
2
2
  import { ValueGetter } from '@dbg-riskit/common';
3
- import * as i0 from '@angular/core';
4
3
 
5
4
  interface CSVExportColumn<T> {
6
5
  get: ValueGetter<T>;
7
6
  header: string;
8
7
  }
9
- declare class ExcelFileExportDirective extends BaseComponent {
8
+ declare class RiskExcelFileExportDirective {
10
9
  private readonly elementRef;
11
10
  private readonly excelExportService;
12
11
  private readonly logger;
@@ -15,20 +14,20 @@ declare class ExcelFileExportDirective extends BaseComponent {
15
14
  * When provided as array of arrays then 'risk-xlsx-export' should be provided as array of arrays as well,
16
15
  * That means that multiple tabs are used, tab names are provided in 'risk-xlsx-export-tabs' as array of strings,
17
16
  */
18
- columns?: Array<CSVExportColumn<object>> | Array<{
17
+ readonly columns: _angular_core.InputSignal<CSVExportColumn<object>[] | {
19
18
  [key: string]: CSVExportColumn<object>;
20
- }>;
21
- data?: object[] | object[][];
22
- filename: string;
23
- tabs?: string[];
24
- disabled?: boolean | string;
19
+ }[]>;
20
+ readonly data: _angular_core.InputSignal<object[] | object[][]>;
21
+ readonly filename: _angular_core.InputSignal<string>;
22
+ readonly tabs: _angular_core.InputSignal<string[] | undefined>;
23
+ readonly disabled: _angular_core.InputSignal<string | boolean | undefined>;
25
24
  export(): void;
26
25
  private isDisabled;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcelFileExportDirective, never>;
28
- static ɵdir: i0.ɵɵDirectiveDeclaration<ExcelFileExportDirective, "[risk-xlsx-export]", never, { "columns": { "alias": "risk-xlsx-export-columns"; "required": false; }; "data": { "alias": "risk-xlsx-export"; "required": false; }; "filename": { "alias": "risk-xlsx-export-filename"; "required": false; }; "tabs": { "alias": "risk-xlsx-export-tabs"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
26
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RiskExcelFileExportDirective, never>;
27
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RiskExcelFileExportDirective, "[risk-xlsx-export]", never, { "columns": { "alias": "risk-xlsx-export-columns"; "required": true; "isSignal": true; }; "data": { "alias": "risk-xlsx-export"; "required": true; "isSignal": true; }; "filename": { "alias": "risk-xlsx-export-filename"; "required": false; "isSignal": true; }; "tabs": { "alias": "risk-xlsx-export-tabs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
29
28
  }
30
29
 
31
- declare class ExcelExportService {
30
+ declare class RiskExcelExportService {
32
31
  exportAsExcel(exportData: object[], filename: string, columns: Array<CSVExportColumn<object>>): void;
33
32
  exportAsExcel(exportData: object[][], filename: string, columns: Array<{
34
33
  [key: string]: CSVExportColumn<object>;
@@ -41,9 +40,9 @@ declare class ExcelExportService {
41
40
  private singleTabExport;
42
41
  private getFileName;
43
42
  isArrayOfArrays(array: object[] | object[][]): boolean;
44
- static ɵfac: i0.ɵɵFactoryDeclaration<ExcelExportService, never>;
45
- static ɵprov: i0.ɵɵInjectableDeclaration<ExcelExportService>;
43
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RiskExcelExportService, never>;
44
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<RiskExcelExportService>;
46
45
  }
47
46
 
48
- export { ExcelExportService, ExcelFileExportDirective };
47
+ export { RiskExcelExportService, RiskExcelFileExportDirective };
49
48
  export type { CSVExportColumn };
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@dbg-riskit/angular-excel-export",
3
- "version": "9999.9999.9999-rc.3113921",
3
+ "version": "9999.9999.9999-rc.3295464",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "peerDependencies": {
6
- "@angular/core": "^20.3.12",
7
- "@angular/platform-browser": "^20.3.12",
8
- "@angular/common": "^20.3.12",
9
- "@dbg-riskit/common": "~9999.9999.9999-rc.3113921",
10
- "@dbg-riskit/angular-common": "~9999.9999.9999-rc.3113921",
11
- "@dbg-riskit/angular-logging": "~9999.9999.9999-rc.3113921",
6
+ "@angular/core": "^20.3.15",
7
+ "@angular/platform-browser": "^20.3.15",
8
+ "@angular/common": "^20.3.15",
9
+ "@dbg-riskit/common": "~9999.9999.9999-rc.3295464",
10
+ "@dbg-riskit/angular-common": "~9999.9999.9999-rc.3295464",
11
+ "@dbg-riskit/angular-logging": "~9999.9999.9999-rc.3295464",
12
12
  "xlsx": "^0.20.3"
13
13
  },
14
14
  "dependencies": {