@3mo/data-grid 0.10.7 → 0.11.0

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.
Files changed (43) hide show
  1. package/dist/DataGrid.d.ts +5 -3
  2. package/dist/DataGrid.d.ts.map +1 -1
  3. package/dist/DataGrid.js +12 -16
  4. package/dist/DataGridColumn.d.ts +2 -0
  5. package/dist/DataGridColumn.d.ts.map +1 -1
  6. package/dist/DataGridCsvController.d.ts +24 -0
  7. package/dist/DataGridCsvController.d.ts.map +1 -0
  8. package/dist/DataGridCsvController.js +77 -0
  9. package/dist/DataGridFooter.d.ts.map +1 -1
  10. package/dist/DataGridFooter.js +70 -25
  11. package/dist/columns/DataGridColumnBoolean.d.ts +1 -0
  12. package/dist/columns/DataGridColumnBoolean.d.ts.map +1 -1
  13. package/dist/columns/DataGridColumnBoolean.js +3 -0
  14. package/dist/columns/DataGridColumnComponent.d.ts +2 -0
  15. package/dist/columns/DataGridColumnComponent.d.ts.map +1 -1
  16. package/dist/columns/DataGridColumnComponent.js +9 -0
  17. package/dist/columns/DataGridColumnImage.d.ts +2 -0
  18. package/dist/columns/DataGridColumnImage.d.ts.map +1 -1
  19. package/dist/columns/DataGridColumnImage.js +12 -5
  20. package/dist/columns/date-time/DataGridColumnDate.d.ts +1 -0
  21. package/dist/columns/date-time/DataGridColumnDate.d.ts.map +1 -1
  22. package/dist/columns/date-time/DataGridColumnDate.js +3 -0
  23. package/dist/columns/date-time/DataGridColumnDateTime.d.ts +1 -0
  24. package/dist/columns/date-time/DataGridColumnDateTime.d.ts.map +1 -1
  25. package/dist/columns/date-time/DataGridColumnDateTime.js +3 -0
  26. package/dist/columns/number/DataGridColumnCurrency.d.ts +2 -0
  27. package/dist/columns/number/DataGridColumnCurrency.d.ts.map +1 -1
  28. package/dist/columns/number/DataGridColumnCurrency.js +12 -1
  29. package/dist/columns/number/DataGridColumnPercent.d.ts +1 -0
  30. package/dist/columns/number/DataGridColumnPercent.d.ts.map +1 -1
  31. package/dist/columns/number/DataGridColumnPercent.js +3 -0
  32. package/dist/custom-elements.json +9 -8
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/dist/CsvGenerator.d.ts +0 -5
  39. package/dist/CsvGenerator.d.ts.map +0 -1
  40. package/dist/CsvGenerator.js +0 -26
  41. package/dist/excel.svg.d.ts +0 -3
  42. package/dist/excel.svg.d.ts.map +0 -1
  43. package/dist/excel.svg.js +0 -48
@@ -8,7 +8,7 @@ import { DataGridColumnsController } from './DataGridColumnsController.js';
8
8
  import { DataGridSelectionBehaviorOnDataChange, DataGridSelectionController, DataGridSelectionMode } from './DataGridSelectionController.js';
9
9
  import { DataGridSortingController, type DataGridRankedSortDefinition, type DataGridSorting } from './DataGridSortingController.js';
10
10
  import { DataGridDetailsController } from './DataGridDetailsController.js';
11
- import { DataGridSidePanelTab, type DataGridColumn, type DataGridCell, type DataGridRow, DataGridContextMenuController } from './index.js';
11
+ import { DataGridCsvController, DataGridSidePanelTab, type DataGridColumn, type DataGridCell, type DataGridRow, DataGridContextMenuController } from './index.js';
12
12
  import { DataRecord } from './DataRecord.js';
13
13
  export type DataGridPagination = 'auto' | number;
14
14
  export declare enum DataGridEditability {
@@ -149,6 +149,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
149
149
  unsort(...parameters: Parameters<typeof this.sortingController.reset>): void;
150
150
  setColumns(...parameters: Parameters<typeof this.columnsController.setColumns>): void;
151
151
  extractColumns(...parameters: Parameters<typeof this.columnsController.extractColumns>): void;
152
+ generateCsv(...parameters: Parameters<typeof this.csvController.generateCsv>): Promise<void>;
152
153
  get extractedColumns(): DataGridColumn<TData, unknown>[];
153
154
  extractedColumnsUpdated(extractedColumns: Array<DataGridColumn<TData, TDetailsElement>>): void;
154
155
  get visibleColumns(): DataGridColumn<TData, unknown>[];
@@ -156,7 +157,6 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
156
157
  getCell(data: TData, column: DataGridColumn<TData, unknown>): DataGridCell<any, TData, TDetailsElement> | undefined;
157
158
  handleEdit(data: TData, column: DataGridColumn<TData, unknown>, value: KeyPathValueOf<TData, KeyPathOf<TData>> | undefined): void;
158
159
  navigateToSidePanelTab(tab?: DataGridSidePanelTab): void;
159
- exportExcelFile(): void;
160
160
  get hasContextMenu(): boolean;
161
161
  get toolbarElements(): Element[];
162
162
  get filterElements(): Element[];
@@ -180,6 +180,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
180
180
  readonly sortingController: DataGridSortingController<TData>;
181
181
  readonly contextMenuController: DataGridContextMenuController<TData>;
182
182
  readonly detailsController: DataGridDetailsController<TData>;
183
+ readonly csvController: DataGridCsvController<TData>;
183
184
  readonly rowIntersectionObserver?: IntersectionObserver;
184
185
  protected updated(...parameters: Parameters<Component['updated']>): void;
185
186
  private navigateToLastValidPageIfNeeded;
@@ -212,11 +213,12 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
212
213
  private lastScrollElementTop;
213
214
  private handleScroll;
214
215
  protected handlePointerDown(event: PointerEvent): void;
215
- private getFlattenedData;
216
+ protected getFlattenedData(values?: TData[]): Generator<DataRecord<TData>, void, undefined>;
216
217
  get dataRecords(): Array<DataRecord<TData>>;
217
218
  get renderDataRecords(): DataRecord<TData>[];
218
219
  protected get dataSkip(): number;
219
220
  protected get dataTake(): number;
221
+ getCsvData(): AsyncGenerator<number, DataRecord<TData>[], unknown>;
220
222
  }
221
223
  declare global {
222
224
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../DataGrid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../DataGrid.ts"],"names":[],"mappings":"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"}
package/dist/DataGrid.js CHANGED
@@ -1,7 +1,6 @@
1
1
  var DataGrid_1;
2
2
  import { __decorate } from "tslib";
3
3
  import { property, component, Component, html, css, query, ifDefined, event, style, literal, staticHtml, cache, eventOptions, queryAll, repeat, eventListener } from '@a11d/lit';
4
- import { NotificationComponent } from '@a11d/lit-application';
5
4
  import { LocalStorage } from '@a11d/local-storage';
6
5
  import { InstanceofAttributeController } from '@3mo/instanceof-attribute-controller';
7
6
  import { SlotController } from '@3mo/slot-controller';
@@ -14,10 +13,9 @@ import { DataGridColumnsController } from './DataGridColumnsController.js';
14
13
  import { DataGridSelectionBehaviorOnDataChange, DataGridSelectionController, DataGridSelectionMode } from './DataGridSelectionController.js';
15
14
  import { DataGridSortingController } from './DataGridSortingController.js';
16
15
  import { DataGridDetailsController } from './DataGridDetailsController.js';
17
- import { CsvGenerator, DataGridSidePanelTab, DataGridContextMenuController } from './index.js';
16
+ import { DataGridCsvController, DataGridSidePanelTab, DataGridContextMenuController } from './index.js';
18
17
  import { DataRecord } from './DataRecord.js';
19
18
  Localizer.dictionaries.add('de', {
20
- 'Exporting excel file': 'Die Excel-Datei wird exportiert',
21
19
  'No results': 'Kein Ergebnis',
22
20
  'More Filters': 'Weitere Filter',
23
21
  });
@@ -126,6 +124,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
126
124
  this.sortingController = new DataGridSortingController(this);
127
125
  this.contextMenuController = new DataGridContextMenuController(this);
128
126
  this.detailsController = new DataGridDetailsController(this);
127
+ this.csvController = new DataGridCsvController(this);
129
128
  this.splitterResizerTemplate = html `
130
129
  <mo-splitter-resizer-line style='--mo-splitter-resizer-line-thickness: 1px; --mo-splitter-resizer-line-idle-background: var(--mo-color-transparent-gray-3); --mo-splitter-resizer-line-horizontal-transform: scaleX(5);'></mo-splitter-resizer-line>
131
130
  `;
@@ -189,6 +188,9 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
189
188
  extractColumns(...parameters) {
190
189
  return this.columnsController.extractColumns(...parameters);
191
190
  }
191
+ generateCsv(...parameters) {
192
+ return this.csvController.generateCsv(...parameters);
193
+ }
192
194
  get extractedColumns() {
193
195
  return this.columnsController.extractedColumns;
194
196
  }
@@ -218,16 +220,6 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
218
220
  this.sidePanelTab = tab;
219
221
  !tab ? this.sidePanelClose.dispatch() : this.sidePanelOpen.dispatch(tab);
220
222
  }
221
- exportExcelFile() {
222
- try {
223
- CsvGenerator.generate(this);
224
- NotificationComponent.notifyInfo(t('Exporting excel file'));
225
- }
226
- catch (error) {
227
- NotificationComponent.notifyError(error.message);
228
- throw error;
229
- }
230
- }
231
223
  get hasContextMenu() {
232
224
  return this.contextMenuController.hasContextMenu;
233
225
  }
@@ -633,9 +625,9 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
633
625
  handlePointerDown(event) {
634
626
  this.rows.forEach(row => row.cells.forEach(cell => cell.handlePointerDown(event)));
635
627
  }
636
- *getFlattenedData() {
628
+ *getFlattenedData(values = this.data) {
637
629
  if (!this.subDataGridDataSelector) {
638
- yield* this.sortingController.toSortedBy(this.data.map((data, index) => new DataRecord(this, { level: 0, index, data })), ({ data }) => data);
630
+ yield* this.sortingController.toSortedBy(values.map((data, index) => new DataRecord(this, { level: 0, index, data })), ({ data }) => data);
639
631
  return;
640
632
  }
641
633
  const flatten = (data, level = 0) => {
@@ -650,7 +642,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
650
642
  ...(subDataRecords ?? [])
651
643
  ];
652
644
  };
653
- for (const data of this.sortingController.toSorted(this.data)) {
645
+ for (const data of this.sortingController.toSorted(values)) {
654
646
  yield* flatten(data);
655
647
  }
656
648
  return;
@@ -678,6 +670,10 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
678
670
  get dataTake() {
679
671
  return this.pageSize;
680
672
  }
673
+ async *getCsvData() {
674
+ yield 1;
675
+ return this.dataRecords;
676
+ }
681
677
  };
682
678
  DataGrid.rowHeight = new LocalStorage('DataGrid.RowHeight', 35);
683
679
  DataGrid.cellRelativeFontSize = new LocalStorage('DataGrid.CellRelativeFontSize', 0.8);
@@ -34,5 +34,7 @@ export declare class DataGridColumn<TData, TValue = unknown> {
34
34
  get sortingDefinition(): import("./DataGridSortingController.js").DataGridRankedSortDefinition<TData> | undefined;
35
35
  get sumTemplate(): HTMLTemplateResult | undefined;
36
36
  get stickyColumnInsetInline(): string;
37
+ generateCsvHeading?(): Generator<string>;
38
+ generateCsvValue?(value: TValue, data: TData): Generator<string>;
37
39
  }
38
40
  //# sourceMappingURL=DataGridColumn.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumn.d.ts","sourceRoot":"","sources":["../DataGridColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,KAAK,GAAG,MAAM,SAAS,CAAA;AAEnC,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEhE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;AAE3D,qBAAa,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAClD,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/B,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAE/B,OAAO,EAAG,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAgB;IAEnE,SAAS,EAAE,uBAAuB,CAAU;IAC5C,MAAM,UAAQ;IAEd,QAAQ,UAAO;IAEf,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAE7B,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,IAAI,gBAAgB,+/CAAyD;IAC7E,IAAI,gBAAgB,CAAC,KAAK,4/CAAA,EAAoC;IAE9D,kBAAkB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEnE,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAC5C,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;gBAEpC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAI1D,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO;IAMpD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAIzD,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,IAAI,aAAa,WAAsC;IACvD,IAAI,aAAa,CAAC,KAAK,QAAA,EAGtB;IAED,OAAO,CAAC,aAAa,CAAQ;IAC7B,IAAI,YAAY,YAAgC;IAChD,IAAI,YAAY,CAAC,KAAK,SAAA,EAGrB;IAED,IAAI,iBAAiB,6FAIpB;IAED,IAAI,WAAW,mCAkBd;IAED,IAAI,uBAAuB,WA2B1B;CACD"}
1
+ {"version":3,"file":"DataGridColumn.d.ts","sourceRoot":"","sources":["../DataGridColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,KAAK,GAAG,MAAM,SAAS,CAAA;AAEnC,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEhE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;AAE3D,qBAAa,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAClD,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/B,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAE/B,OAAO,EAAG,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAgB;IAEnE,SAAS,EAAE,uBAAuB,CAAU;IAC5C,MAAM,UAAQ;IAEd,QAAQ,UAAO;IAEf,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAE7B,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,IAAI,gBAAgB,+/CAAyD;IAC7E,IAAI,gBAAgB,CAAC,KAAK,4/CAAA,EAAoC;IAE9D,kBAAkB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEnE,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAC5C,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;gBAEpC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAI1D,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO;IAMpD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAIzD,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,IAAI,aAAa,WAAsC;IACvD,IAAI,aAAa,CAAC,KAAK,QAAA,EAGtB;IAED,OAAO,CAAC,aAAa,CAAQ;IAC7B,IAAI,YAAY,YAAgC;IAChD,IAAI,YAAY,CAAC,KAAK,SAAA,EAGrB;IAED,IAAI,iBAAiB,6FAIpB;IAED,IAAI,WAAW,mCAkBd;IAED,IAAI,uBAAuB,WA2B1B;IAED,kBAAkB,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;IACxC,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;CAChE"}
@@ -0,0 +1,24 @@
1
+ import { type DataRecord } from './DataRecord.js';
2
+ import { type DataGridColumn } from './DataGridColumn.js';
3
+ interface Host<TData> {
4
+ /**
5
+ * Gets the entire data set to be exported as CSV.
6
+ * This can yield numbers in between to indicate progress for large data sets.
7
+ */
8
+ getCsvData(): AsyncGenerator<number, Array<DataRecord<TData>>>;
9
+ get visibleColumns(): Array<DataGridColumn<TData>>;
10
+ requestUpdate(): void;
11
+ }
12
+ export declare class DataGridCsvController<TData> {
13
+ protected readonly host: Host<TData>;
14
+ static sanitize(value: string): string;
15
+ static download(data: string): Promise<void>;
16
+ constructor(host: Host<TData>);
17
+ private _progress?;
18
+ get generationProgress(): number | undefined;
19
+ private set generationProgress(value);
20
+ get isGenerating(): boolean;
21
+ generateCsv(): Promise<void>;
22
+ }
23
+ export {};
24
+ //# sourceMappingURL=DataGridCsvController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGridCsvController.d.ts","sourceRoot":"","sources":["../DataGridCsvController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGzD,UAAU,IAAI,CAAC,KAAK;IACnB;;;OAGG;IACH,UAAU,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9D,IAAI,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IAClD,aAAa,IAAI,IAAI,CAAA;CACrB;AAED,qBAAa,qBAAqB,CAAC,KAAK;IAwB3B,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAvBhD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;WAYhB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAWH,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;IAEhD,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,IAAI,kBAAkB,IACgB,MAAM,GAAG,SAAS,CADN;IAClD,OAAO,KAAK,kBAAkB,QAG7B;IAED,IAAI,YAAY,YAA0C;IAEpD,WAAW;CAoDjB"}
@@ -0,0 +1,77 @@
1
+ import { Downloader } from '@3mo/downloader';
2
+ import { NotificationComponent } from '@a11d/lit-application';
3
+ export class DataGridCsvController {
4
+ static sanitize(value) {
5
+ if (typeof value !== 'string') {
6
+ value = String(value);
7
+ }
8
+ if (value.includes(',')) {
9
+ value = `"${value.replaceAll('"', '""')}"`;
10
+ }
11
+ return value;
12
+ }
13
+ static async download(data) {
14
+ const fileName = [
15
+ document.title.split(' | ')[0],
16
+ new Date().toISOString().replace(/[-:.T]/g, '').slice(0, 14),
17
+ ].filter(Boolean).join('_');
18
+ Downloader.download(`data:text/csv;charset=utf-8,${encodeURIComponent(data)}`, `${fileName}.csv`);
19
+ await new Promise(r => setTimeout(r, 1000));
20
+ }
21
+ constructor(host) {
22
+ this.host = host;
23
+ }
24
+ get generationProgress() { return this._progress; }
25
+ set generationProgress(value) {
26
+ this._progress = value;
27
+ this.host.requestUpdate();
28
+ }
29
+ get isGenerating() { return this._progress !== undefined; }
30
+ async generateCsv() {
31
+ if (this.isGenerating) {
32
+ return;
33
+ }
34
+ this.generationProgress = 0;
35
+ try {
36
+ const dataRecords = new Array();
37
+ const asyncIterator = this.host.getCsvData();
38
+ // eslint-disable-next-line no-constant-condition
39
+ while (true) {
40
+ const { done, value } = await asyncIterator.next();
41
+ if (done) {
42
+ dataRecords.push(...value);
43
+ break;
44
+ }
45
+ this.generationProgress = value;
46
+ }
47
+ const maxLevel = Math.max(...dataRecords.map(d => d.level));
48
+ const [firstHeading, ...otherHeadings] = this.host.visibleColumns.flatMap(c => [...c.generateCsvHeading?.() ?? []].map(DataGridCsvController.sanitize));
49
+ const rows = [
50
+ [firstHeading, ...Array.from({ length: maxLevel }).fill(firstHeading), ...otherHeadings],
51
+ ...dataRecords.map(d => {
52
+ const nestedPadding = Array.from({ length: d.level }).fill('');
53
+ const childrenPadding = Array.from({ length: maxLevel - d.level }).fill('');
54
+ const [first, ...rest] = this.host.visibleColumns
55
+ .flatMap(column => {
56
+ const value = getValueByKeyPath(d.data, column.dataSelector);
57
+ return [...column.generateCsvValue?.(value, d.data) ?? []].map(DataGridCsvController.sanitize);
58
+ });
59
+ return [
60
+ ...nestedPadding,
61
+ first,
62
+ ...childrenPadding,
63
+ ...rest
64
+ ];
65
+ })
66
+ ];
67
+ const csvContent = rows.map(row => row.join(',')).join('\n');
68
+ await DataGridCsvController.download(csvContent);
69
+ }
70
+ catch (error) {
71
+ NotificationComponent.notifyAndThrowError(error.message);
72
+ }
73
+ finally {
74
+ this.generationProgress = undefined;
75
+ }
76
+ }
77
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridFooter.d.ts","sourceRoot":"","sources":["../DataGridFooter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAkC,MAAM,WAAW,CAAA;AAI1F,OAAO,EAAE,KAAK,QAAQ,EAA2B,MAAM,YAAY,CAAA;AAcnE;;;;GAIG;AACH,qBACa,cAAc,CAAC,KAAK,CAAE,SAAQ,SAAS;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAEzE,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE/B,IAAI,SAAI;IAWjC,OAAO,CAAC,gBAAgB,CAAQ;IAET,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;IAExE,WAAoB,MAAM,kCAiEzB;IAED,cAAuB,QAAQ,0CAe9B;IAED,OAAO,KAAK,kBAAkB,GA0C7B;IAED,OAAO,KAAK,sBAAsB,GA6BjC;IAED,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,KAAK,cAAc,GAwBzB;IAED,OAAO,CAAC,OAAO;CAaf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;KAC9C;CACD"}
1
+ {"version":3,"file":"DataGridFooter.d.ts","sourceRoot":"","sources":["../DataGridFooter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAA6C,MAAM,WAAW,CAAA;AAIrG,OAAO,EAAE,KAAK,QAAQ,EAA2B,MAAM,YAAY,CAAA;AAcnE;;;;GAIG;AACH,qBACa,cAAc,CAAC,KAAK,CAAE,SAAQ,SAAS;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAEzE,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE/B,IAAI,SAAI;IAWjC,OAAO,CAAC,gBAAgB,CAAQ;IAET,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAc;IAExE,WAAoB,MAAM,kCA8GzB;IAED,cAAuB,QAAQ,0CAe9B;IAED,OAAO,KAAK,kBAAkB,GA0C7B;IAED,OAAO,KAAK,sBAAsB,GA6BjC;IAED,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,KAAK,cAAc,GAwBzB;IAED,OAAO,CAAC,OAAO;CAaf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;KAC9C;CACD"}
@@ -1,12 +1,12 @@
1
1
  var DataGridFooter_1;
2
2
  import { __decorate } from "tslib";
3
- import { component, property, Component, css, state, html, query, style } from '@a11d/lit';
3
+ import { component, property, Component, css, state, html, query, style, ifDefined } from '@a11d/lit';
4
4
  import { DirectionsByLanguage, Localizer } from '@3mo/localization';
5
5
  import { TooltipPlacement, tooltip } from '@3mo/tooltip';
6
- import excelSvg from './excel.svg.js';
7
6
  Localizer.dictionaries.add('de', {
8
7
  '${page:number} of ${maxPage:number}': '${page} von ${maxPage}',
9
- 'Export current view to Excel': 'Aktuelle Ansicht nach Excel exportieren',
8
+ 'Export to CSV': 'Ansicht nach CSV exportieren',
9
+ 'Exporting file...': 'Datei wird exportiert...',
10
10
  'Auto': 'Auto'
11
11
  });
12
12
  Localizer.dictionaries.add('fa', {
@@ -88,6 +88,51 @@ let DataGridFooter = DataGridFooter_1 = class DataGridFooter extends Component {
88
88
  margin: 0 6px;
89
89
  font-size: smaller;
90
90
  }
91
+
92
+ #csv {
93
+ position: relative;
94
+ color: var(--mo-color-gray);
95
+ height: 32px;
96
+ font-size: small;
97
+
98
+ mo-icon-button {
99
+ grid-row: 1;
100
+ grid-column: 1;
101
+ font-size: 24px;
102
+ transition: 100ms;
103
+ &[data-generating] {
104
+ color: var(--mo-color-green);
105
+ &:not([data-progress='1']) {
106
+ transform: scale(0.66);
107
+ }
108
+ }
109
+ &:hover {
110
+ color: var(--mo-color-accent);
111
+ }
112
+ }
113
+
114
+ mo-circular-progress {
115
+ grid-row: 1;
116
+ grid-column: 1;
117
+ height: 32px;
118
+ width: 32px;
119
+ place-self: center;
120
+ --mo-circular-progress-accent-color: var(--mo-color-green);
121
+ --mo-circular-progress-track-color: var(--mo-color-transparent-gray-3);
122
+ }
123
+
124
+ span#exporting-percent {
125
+ grid-column: 2;
126
+ color: var(--mo-color-green);
127
+ font-size: medium;
128
+ }
129
+
130
+ span#exporting-text {
131
+ grid-column: 3;
132
+ margin-inline-start: 4px;
133
+ color: var(--mo-color-foreground);
134
+ }
135
+ }
91
136
  `;
92
137
  }
93
138
  get template() {
@@ -193,28 +238,28 @@ let DataGridFooter = DataGridFooter_1 = class DataGridFooter extends Component {
193
238
  this.manualPagination = false;
194
239
  }
195
240
  get exportTemplate() {
196
- return !this.dataGrid.exportable ? html.nothing : html `
197
- <style>
198
- #export {
199
- height: 21px;
200
- width: 21px;
201
- aspect-ratio: 1 / 1;
202
- transition: .25s;
203
- -webkit-filter: grayscale(100%);
204
- filter: grayscale(100%);
205
- cursor: pointer;
206
- }
207
-
208
- #export:hover {
209
- -webkit-filter: grayscale(0%);
210
- filter: grayscale(0%);
211
- }
212
- </style>
213
- <img id='export'
214
- src=${`data:image/svg+xml,${encodeURIComponent(excelSvg)}`}
215
- ${tooltip(t('Export current view to Excel'), TooltipPlacement.BlockStart)}
216
- @click=${() => this.dataGrid.exportExcelFile()}
217
- />
241
+ if (!this.dataGrid.exportable) {
242
+ return html.nothing;
243
+ }
244
+ const { generationProgress, isGenerating } = this.dataGrid.csvController;
245
+ return html `
246
+ <div id='csv'>
247
+ <mo-grid columns='auto auto auto' gap='6px' rows='auto' alignItems='center'>
248
+ <mo-icon-button dense
249
+ ?data-generating=${isGenerating}
250
+ data-progress=${ifDefined(generationProgress)}
251
+ ${tooltip(t('Export to CSV'), TooltipPlacement.BlockStart)}
252
+ @click=${() => this.dataGrid.generateCsv()}
253
+ >
254
+ <mo-icon slot='icon' variant='outlined' icon=${generationProgress === 1 ? 'cloud_done' : 'cloud_download'}></mo-icon>
255
+ </mo-icon-button>
256
+ ${!isGenerating ? html.nothing : html `
257
+ ${generationProgress === 1 ? html.nothing : html `<mo-circular-progress></mo-circular-progress>`}
258
+ <span id='exporting-percent'>${(generationProgress * 100).formatAsPercent()}</span>
259
+ <span id='exporting-text'>${t('Exporting file...')}</span>
260
+ `}
261
+ </mo-grid>
262
+ </div>
218
263
  `;
219
264
  }
220
265
  setPage(value) {
@@ -15,6 +15,7 @@ export declare class DataGridColumnBoolean<TData> extends DataGridColumnComponen
15
15
  falseIconColor: string;
16
16
  getContentTemplate(value: boolean | undefined, _data: TData): import("lit-html").HTMLTemplateResult;
17
17
  getEditContentTemplate(value: boolean | undefined, data: TData): import("lit-html").HTMLTemplateResult;
18
+ generateCsvValue(value: boolean): Generator<"TRUE" | "FALSE", void, unknown>;
18
19
  }
19
20
  declare global {
20
21
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnBoolean.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnBoolean.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE;;;;;;;GAOG;AACH,qBACa,qBAAqB,CAAC,KAAK,CAAE,SAAQ,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC;IAC5E,QAAQ,EAAE,YAAY,CAAS;IAC/B,SAAS,EAAE,YAAY,CAAU;IAEjC,aAAa,SAA2B;IACxC,cAAc,SAAyB;IAGnD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK;IAQ3D,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;CAS9D;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,6BAA6B,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAA;KAC7D;CACD"}
1
+ {"version":3,"file":"DataGridColumnBoolean.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnBoolean.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE;;;;;;;GAOG;AACH,qBACa,qBAAqB,CAAC,KAAK,CAAE,SAAQ,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC;IAC5E,QAAQ,EAAE,YAAY,CAAS;IAC/B,SAAS,EAAE,YAAY,CAAU;IAEjC,aAAa,SAA2B;IACxC,cAAc,SAAyB;IAGnD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK;IAQ3D,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAUpD,gBAAgB,CAAC,KAAK,EAAE,OAAO;CAGzC;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,6BAA6B,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAA;KAC7D;CACD"}
@@ -34,6 +34,9 @@ let DataGridColumnBoolean = class DataGridColumnBoolean extends DataGridColumnCo
34
34
  ></mo-checkbox>
35
35
  `;
36
36
  }
37
+ *generateCsvValue(value) {
38
+ yield value ? 'TRUE' : 'FALSE';
39
+ }
37
40
  };
38
41
  __decorate([
39
42
  property()
@@ -31,5 +31,7 @@ export declare abstract class DataGridColumnComponent<TData, TValue> extends Com
31
31
  protected handleEdit(value: TValue | undefined, data: TData): void;
32
32
  connectedCallback(): void;
33
33
  protected updated(): void;
34
+ generateCsvHeading(): Generator<string>;
35
+ generateCsvValue(value: any, data: TData): Generator<string>;
34
36
  }
35
37
  //# sourceMappingURL=DataGridColumnComponent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnComponent.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE9G;;;;;;;;;;;GAWG;AACH,8BAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,SAAS;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAE3D,KAAK,SAAgB;IACK,MAAM,UAAQ;IACxC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IACZ,OAAO,SAAK;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,uBAAuB,CAAU;IAC5C,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACpB,WAAW,UAAQ;IAO5D,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAElD,IAAI,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAgB1C;IAED,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IACvF,QAAQ,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAE5F,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAIlD,iBAAiB;cAOP,OAAO;CAI1B"}
1
+ {"version":3,"file":"DataGridColumnComponent.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE9G;;;;;;;;;;;GAWG;AACH,8BAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,SAAS;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAE3D,KAAK,SAAgB;IACK,MAAM,UAAQ;IACxC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IACZ,OAAO,SAAK;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,uBAAuB,CAAU;IAC5C,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACpB,WAAW,UAAQ;IAO5D,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAElD,IAAI,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAkB1C;IAED,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IACvF,QAAQ,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAE5F,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAIlD,iBAAiB;cAOP,OAAO;IAKzB,kBAAkB,IAAI,SAAS,CAAC,MAAM,CAAC;IAIvC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;CAI7D"}
@@ -39,6 +39,8 @@ export class DataGridColumnComponent extends Component {
39
39
  editable: this.getEditContentTemplate !== undefined && (typeof nonEditable !== 'function' ? !nonEditable : x => !nonEditable(x)),
40
40
  getContentTemplate: this.getContentTemplate.bind(this),
41
41
  getEditContentTemplate: this.getEditContentTemplate?.bind(this),
42
+ generateCsvHeading: this.generateCsvHeading.bind(this),
43
+ generateCsvValue: this.generateCsvValue.bind(this),
42
44
  });
43
45
  }
44
46
  handleEdit(value, data) {
@@ -54,6 +56,13 @@ export class DataGridColumnComponent extends Component {
54
56
  this.dataGrid?.extractColumns();
55
57
  this.dataGrid?.requestUpdate();
56
58
  }
59
+ *generateCsvHeading() {
60
+ yield [this.heading, this.description].filter(Boolean).join(' - ');
61
+ }
62
+ *generateCsvValue(value, data) {
63
+ data;
64
+ yield value?.toString() ?? '';
65
+ }
57
66
  }
58
67
  __decorate([
59
68
  property({ type: Object })
@@ -10,6 +10,8 @@ export declare class DataGridColumnImage<TData> extends DataGridColumnComponent<
10
10
  nonEditable: boolean;
11
11
  getContentTemplate(value: string | undefined, data: TData): import("lit-html").HTMLTemplateResult;
12
12
  getEditContentTemplate: undefined;
13
+ generateCsvValue(value: string, data: TData): Generator<string, void, unknown>;
14
+ private getTooltipText;
13
15
  }
14
16
  declare global {
15
17
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnImage.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnImage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGtE;;;;GAIG;AACH,qBACa,mBAAmB,CAAC,KAAK,CAAE,SAAQ,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC;IACzE,eAAe,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC,CAAA;IAE7E,WAAW,UAAO;IAClB,WAAW,UAAO;IAE3B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAsBhD,sBAAsB,YAAY;CAC3C;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,2BAA2B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;KACzD;CACD"}
1
+ {"version":3,"file":"DataGridColumnImage.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnImage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAGtE;;;;GAIG;AACH,qBACa,mBAAmB,CAAC,KAAK,CAAE,SAAQ,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC;IACzE,eAAe,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC,CAAA;IAE7E,WAAW,UAAO;IAClB,WAAW,UAAO;IAE3B,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAkBhD,sBAAsB,YAAY;IAEjC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IAKrD,OAAO,CAAC,cAAc;CAOtB;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,2BAA2B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;KACzD;CACD"}
@@ -18,11 +18,7 @@ let DataGridColumnImage = class DataGridColumnImage extends DataGridColumnCompon
18
18
  if (!value) {
19
19
  return html.nothing;
20
20
  }
21
- const tooltipText = !this.tooltipSelector
22
- ? undefined
23
- : typeof this.tooltipSelector === 'function'
24
- ? this.tooltipSelector(data)
25
- : getValueByKeyPath(data, this.tooltipSelector);
21
+ const tooltipText = this.getTooltipText(data);
26
22
  return !value ? html.nothing : html `
27
23
  <img
28
24
  ${tooltipText ? tooltip(tooltipText) : html.nothing}
@@ -33,6 +29,17 @@ let DataGridColumnImage = class DataGridColumnImage extends DataGridColumnCompon
33
29
  />
34
30
  `;
35
31
  }
32
+ *generateCsvValue(value, data) {
33
+ value;
34
+ yield this.getTooltipText(data) ?? '';
35
+ }
36
+ getTooltipText(data) {
37
+ return !this.tooltipSelector
38
+ ? undefined
39
+ : typeof this.tooltipSelector === 'function'
40
+ ? this.tooltipSelector(data)
41
+ : getValueByKeyPath(data, this.tooltipSelector);
42
+ }
36
43
  };
37
44
  __decorate([
38
45
  property()
@@ -3,6 +3,7 @@ import { DataGridColumnDateTimeBase } from './DataGridColumnDateTimeBase.js';
3
3
  export declare class DataGridColumnDate<TData> extends DataGridColumnDateTimeBase<TData, Date> {
4
4
  getContentTemplate(value: Date | undefined, data: TData): import("lit-html").HTMLTemplateResult;
5
5
  readonly fieldTag: import("lit-html/static.js").StaticValue;
6
+ generateCsvValue(value: Date | undefined): Generator<string, void, unknown>;
6
7
  }
7
8
  declare global {
8
9
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnDate.d.ts","sourceRoot":"","sources":["../../../columns/date-time/DataGridColumnDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAE5E,wCAAwC;AACxC,qBACa,kBAAkB,CAAC,KAAK,CAAE,SAAQ,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC;IACrF,kBAAkB,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAKvD,SAAkB,QAAQ,2CAAyB;CACnD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,0BAA0B,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;KACvD;CACD"}
1
+ {"version":3,"file":"DataGridColumnDate.d.ts","sourceRoot":"","sources":["../../../columns/date-time/DataGridColumnDate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAE5E,wCAAwC;AACxC,qBACa,kBAAkB,CAAC,KAAK,CAAE,SAAQ,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC;IACrF,kBAAkB,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAKvD,SAAkB,QAAQ,2CAAyB;IAEzC,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS;CAGlD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,0BAA0B,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;KACvD;CACD"}
@@ -11,6 +11,9 @@ let DataGridColumnDate = class DataGridColumnDate extends DataGridColumnDateTime
11
11
  data;
12
12
  return html `${value ? value.formatAsDate(this.formatOptionsValue) ?? '' : ''}`;
13
13
  }
14
+ *generateCsvValue(value) {
15
+ yield value?.toISOString().split('T')[0] ?? '';
16
+ }
14
17
  };
15
18
  DataGridColumnDate = __decorate([
16
19
  component('mo-data-grid-column-date')
@@ -3,6 +3,7 @@ import { DataGridColumnDateTimeBase } from './DataGridColumnDateTimeBase.js';
3
3
  export declare class DataGridColumnDateTime<TData> extends DataGridColumnDateTimeBase<TData, Date> {
4
4
  getContentTemplate(value: Date | undefined, data: TData): import("lit-html").HTMLTemplateResult;
5
5
  readonly fieldTag: import("lit-html/static.js").StaticValue;
6
+ generateCsvValue(value: Date | undefined): Generator<string, void, unknown>;
6
7
  }
7
8
  declare global {
8
9
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnDateTime.d.ts","sourceRoot":"","sources":["../../../columns/date-time/DataGridColumnDateTime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAE5E,6CAA6C;AAC7C,qBACa,sBAAsB,CAAC,KAAK,CAAE,SAAQ,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC;IACzF,kBAAkB,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAKvD,SAAkB,QAAQ,2CAA8B;CACxD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,+BAA+B,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;KAChE;CACD"}
1
+ {"version":3,"file":"DataGridColumnDateTime.d.ts","sourceRoot":"","sources":["../../../columns/date-time/DataGridColumnDateTime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAE5E,6CAA6C;AAC7C,qBACa,sBAAsB,CAAC,KAAK,CAAE,SAAQ,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC;IACzF,kBAAkB,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAKvD,SAAkB,QAAQ,2CAA8B;IAE9C,gBAAgB,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS;CAGlD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,+BAA+B,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;KAChE;CACD"}
@@ -11,6 +11,9 @@ let DataGridColumnDateTime = class DataGridColumnDateTime extends DataGridColumn
11
11
  data;
12
12
  return html `${value ? value.format(this.formatOptionsValue) ?? '' : ''}`;
13
13
  }
14
+ *generateCsvValue(value) {
15
+ yield value?.toISOString() ?? '';
16
+ }
14
17
  };
15
18
  DataGridColumnDateTime = __decorate([
16
19
  component('mo-data-grid-column-date-time')
@@ -14,6 +14,8 @@ export declare class DataGridColumnCurrency<TData> extends DataGridColumnNumberB
14
14
  getContentTemplate(value: number | undefined, data: TData): import("lit-html").HTMLTemplateResult;
15
15
  getEditContentTemplate(value: number | undefined, data: TData): import("lit-html").HTMLTemplateResult;
16
16
  getSumTemplate(sum: number): import("lit-html").HTMLTemplateResult;
17
+ generateCsvHeading(): Generator<string, void, unknown>;
18
+ generateCsvValue(value: number | undefined, data: TData): Generator<string, void, unknown>;
17
19
  }
18
20
  declare global {
19
21
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnCurrency.d.ts","sourceRoot":"","sources":["../../../columns/number/DataGridColumnCurrency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAExE;;;;;EAKE;AACF,qBACa,sBAAsB,CAAC,KAAK,CAAE,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACjF,MAAM,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAA;IAEuC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC/E,oBAAoB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IAEnD,OAAO,CAAC,WAAW;IAMnB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAIzD,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAU7D,cAAc,CAAC,GAAG,EAAE,MAAM;CAK1B;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,8BAA8B,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;KAC/D;CACD"}
1
+ {"version":3,"file":"DataGridColumnCurrency.d.ts","sourceRoot":"","sources":["../../../columns/number/DataGridColumnCurrency.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,QAAQ,EAAqB,MAAM,mBAAmB,CAAA;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAMxE;;;;;EAKE;AACF,qBACa,sBAAsB,CAAC,KAAK,CAAE,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACjF,MAAM,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAA;IAEuC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC/E,oBAAoB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IAEnD,OAAO,CAAC,WAAW;IAMnB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAIzD,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAU7D,cAAc,CAAC,GAAG,EAAE,MAAM;IAMhB,kBAAkB;IAKlB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;CAIjE;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,8BAA8B,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;KAC/D;CACD"}
@@ -1,9 +1,12 @@
1
1
  var DataGridColumnCurrency_1;
2
2
  import { __decorate } from "tslib";
3
3
  import { component, html, ifDefined, property } from '@a11d/lit';
4
- import { Currency } from '@3mo/localization';
4
+ import { Localizer, Currency } from '@3mo/localization';
5
5
  import { FieldCurrency } from '@3mo/number-fields';
6
6
  import { DataGridColumnNumberBase } from './DataGridColumnNumberBase.js';
7
+ Localizer.dictionaries.add('de', {
8
+ 'Currency': 'Währung',
9
+ });
7
10
  /**
8
11
  * @element mo-data-grid-column-currency
9
12
  *
@@ -33,6 +36,14 @@ let DataGridColumnCurrency = DataGridColumnCurrency_1 = class DataGridColumnCurr
33
36
  <span style='font-weight: 500'>${sum.formatAsCurrency(this.currency ?? DataGridColumnCurrency_1.defaultCurrency)}</span>
34
37
  `;
35
38
  }
39
+ *generateCsvHeading() {
40
+ yield* super.generateCsvHeading();
41
+ yield t('Currency');
42
+ }
43
+ *generateCsvValue(value, data) {
44
+ yield* super.generateCsvValue(value, data);
45
+ yield this.getCurrency(data).code;
46
+ }
36
47
  };
37
48
  __decorate([
38
49
  property({ type: Object, converter: FieldCurrency.currencyConverter })