@3mo/data-grid 0.9.18 → 0.9.20-preview.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 (41) hide show
  1. package/dist/CsvGenerator.d.ts +4 -1
  2. package/dist/CsvGenerator.d.ts.map +1 -1
  3. package/dist/CsvGenerator.js +56 -23
  4. package/dist/DataGrid.d.ts +2 -1
  5. package/dist/DataGrid.d.ts.map +1 -1
  6. package/dist/DataGrid.js +15 -6
  7. package/dist/DataGridCell.d.ts.map +1 -1
  8. package/dist/DataGridCell.js +5 -10
  9. package/dist/DataGridColumn.d.ts +3 -0
  10. package/dist/DataGridColumn.d.ts.map +1 -1
  11. package/dist/DataGridColumn.js +7 -0
  12. package/dist/DataGridFooter.d.ts.map +1 -1
  13. package/dist/DataGridFooter.js +6 -23
  14. package/dist/DataGridPrimaryContextMenuItem.js +5 -5
  15. package/dist/columns/DataGridColumnBoolean.d.ts +1 -0
  16. package/dist/columns/DataGridColumnBoolean.d.ts.map +1 -1
  17. package/dist/columns/DataGridColumnBoolean.js +4 -0
  18. package/dist/columns/DataGridColumnComponent.d.ts +3 -0
  19. package/dist/columns/DataGridColumnComponent.d.ts.map +1 -1
  20. package/dist/columns/DataGridColumnComponent.js +13 -0
  21. package/dist/columns/DataGridColumnImage.d.ts +2 -0
  22. package/dist/columns/DataGridColumnImage.d.ts.map +1 -1
  23. package/dist/columns/DataGridColumnImage.js +12 -5
  24. package/dist/columns/date-time/DataGridColumnDate.d.ts +1 -0
  25. package/dist/columns/date-time/DataGridColumnDate.d.ts.map +1 -1
  26. package/dist/columns/date-time/DataGridColumnDate.js +3 -0
  27. package/dist/columns/date-time/DataGridColumnDateTime.d.ts +1 -0
  28. package/dist/columns/date-time/DataGridColumnDateTime.d.ts.map +1 -1
  29. package/dist/columns/date-time/DataGridColumnDateTime.js +3 -0
  30. package/dist/columns/number/DataGridColumnCurrency.d.ts +3 -0
  31. package/dist/columns/number/DataGridColumnCurrency.d.ts.map +1 -1
  32. package/dist/columns/number/DataGridColumnCurrency.js +18 -0
  33. package/dist/columns/number/DataGridColumnPercent.d.ts +2 -0
  34. package/dist/columns/number/DataGridColumnPercent.d.ts.map +1 -1
  35. package/dist/columns/number/DataGridColumnPercent.js +6 -0
  36. package/dist/custom-elements.json +12 -4655
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
  39. package/dist/excel.svg.d.ts +0 -3
  40. package/dist/excel.svg.d.ts.map +0 -1
  41. package/dist/excel.svg.js +0 -48
@@ -1,5 +1,8 @@
1
1
  import type { DataGrid } from './DataGrid.js';
2
2
  export declare class CsvGenerator {
3
- static generate<TData>(dataGrid: DataGrid<TData, any>): void;
3
+ private static readonly itemsPerPage;
4
+ static fetchAll: <TData>(dataGrid: any) => Promise<Array<TData>>;
5
+ static escape: (value: string) => string;
6
+ static generate: <TData>(dataGrid: DataGrid<TData, any>) => Promise<void>;
4
7
  }
5
8
  //# sourceMappingURL=CsvGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CsvGenerator.d.ts","sourceRoot":"","sources":["../CsvGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,qBAAa,YAAY;IACxB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CA0BrD"}
1
+ {"version":3,"file":"CsvGenerator.d.ts","sourceRoot":"","sources":["../CsvGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,qBAAa,YAAY;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAO;IAE3C,MAAM,CAAC,QAAQ,GAAU,KAAK,YAAY,GAAG,KAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAerE;IAEA,MAAM,CAAC,MAAM,UAAW,MAAM,YAS7B;IAED,MAAM,CAAC,QAAQ,GAAU,KAAK,YAAY,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,mBAsC7D;CACD"}
@@ -1,26 +1,59 @@
1
+ var _a;
1
2
  import { Downloader } from '@3mo/downloader';
2
3
  export class CsvGenerator {
3
- static generate(dataGrid) {
4
- const flattenedData = [...dataGrid['getFlattenedData']()];
5
- const maxLevel = Math.max(...flattenedData.map(d => d.level));
6
- const [firstHeading, ...restHeadings] = dataGrid.visibleColumns.map(c => c.heading);
7
- const rows = [
8
- [firstHeading, ...Array.from({ length: maxLevel }).fill(''), ...restHeadings],
9
- ...flattenedData.map(d => {
10
- const nestedPadding = Array.from({ length: d.level }).fill('');
11
- const childrenPadding = Array.from({ length: maxLevel - d.level }).fill('');
12
- const [first, ...rest] = dataGrid.visibleColumns.flatMap(column => getValueByKeyPath(d.data, column.dataSelector));
13
- return [
14
- ...nestedPadding,
15
- first,
16
- ...childrenPadding,
17
- ...rest
18
- ];
19
- })
20
- ];
21
- const csv = rows.map(row => row.join(',')).join('\n');
22
- // @ts-expect-error manifest can be undefined
23
- const fileName = (globalThis.manifest?.short_name ?? '') + 'Export'.replace(/ /g, '_');
24
- Downloader.download(`data:text/csv;charset=utf-8,${encodeURIComponent(csv)}`, `${fileName}.csv`);
25
- }
26
4
  }
5
+ _a = CsvGenerator;
6
+ CsvGenerator.itemsPerPage = 1000;
7
+ CsvGenerator.fetchAll = async (dataGrid) => {
8
+ if (!('fetch' in dataGrid)) {
9
+ return dataGrid.data;
10
+ }
11
+ const values = await Promise.all(Array
12
+ .from({ length: Math.ceil(dataGrid.dataLength / _a.itemsPerPage) })
13
+ .map(async (_, i) => {
14
+ const values = await dataGrid.fetch({ ...dataGrid.parameters, page: i + 1, perPage: _a.itemsPerPage, isBulk: true });
15
+ return values instanceof Array ? values : values.data;
16
+ }));
17
+ return values.flat();
18
+ };
19
+ CsvGenerator.escape = (value) => {
20
+ if (value.includes(',')) {
21
+ if (value.includes('"')) {
22
+ value = value.replaceAll('"', '""');
23
+ }
24
+ value = `"${value}"`;
25
+ }
26
+ return value;
27
+ };
28
+ CsvGenerator.generate = async (dataGrid) => {
29
+ const flattenedData = [...dataGrid['getFlattenedData'](await _a.fetchAll(dataGrid))];
30
+ const maxLevel = Math.max(...flattenedData.map(d => d.level));
31
+ const [firstHeading, ...restHeadings] = dataGrid.visibleColumns
32
+ .flatMap(c => c.formatHeaderAsCsv().map(cell => _a.escape(cell)));
33
+ const rows = [
34
+ [firstHeading, ...Array.from({ length: maxLevel }).fill(firstHeading), ...restHeadings],
35
+ ...flattenedData.map(d => {
36
+ const nestedPadding = Array.from({ length: d.level }).fill('');
37
+ const childrenPadding = Array.from({ length: maxLevel - d.level }).fill('');
38
+ const [first, ...rest] = dataGrid.visibleColumns
39
+ .flatMap(column => {
40
+ const value = getValueByKeyPath(d.data, column.dataSelector);
41
+ return column.formatAsCsv(value, d.data).map(cell => _a.escape(String(cell)));
42
+ });
43
+ return [
44
+ ...nestedPadding,
45
+ first,
46
+ ...childrenPadding,
47
+ ...rest
48
+ ];
49
+ })
50
+ ];
51
+ const csv = rows.map(row => row.join(',')).join('\n');
52
+ const now = new Date();
53
+ const fileName = [
54
+ '3MO',
55
+ document.title.split(' | ')[0]?.toLowerCase(),
56
+ `${now.getFullYear()}${now.getMonth()}${now.getDate()}${now.getHours()}${now.getMinutes()}${now.getSeconds()}`,
57
+ ].filter(Boolean).join('_');
58
+ Downloader.download(`data:text/csv;charset=utf-8,${encodeURIComponent(csv)}`, `${fileName}.csv`);
59
+ };
@@ -130,6 +130,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
130
130
  readonly rows: Array<DataGridRow<TData, TDetailsElement>>;
131
131
  private readonly footer?;
132
132
  private readonly sidePanel?;
133
+ isGenerating: boolean;
133
134
  setPage(page: number): void;
134
135
  setPagination(pagination?: DataGridPagination): void;
135
136
  setData(data: Array<TData>, selectionBehavior?: DataGridSelectionBehaviorOnDataChange): void;
@@ -155,7 +156,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
155
156
  getCell(data: TData, column: DataGridColumn<TData, unknown>): DataGridCell<any, TData, TDetailsElement> | undefined;
156
157
  handleEdit(data: TData, column: DataGridColumn<TData, unknown>, value: KeyPathValueOf<TData, KeyPathOf<TData>> | undefined): void;
157
158
  navigateToSidePanelTab(tab?: DataGridSidePanelTab): void;
158
- exportExcelFile(): void;
159
+ exportExcelFile(): Promise<void>;
159
160
  get hasContextMenu(): boolean;
160
161
  get toolbarElements(): Element[];
161
162
  get filterElements(): Element[];
@@ -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,6 +1,6 @@
1
1
  var DataGrid_1;
2
2
  import { __decorate } from "tslib";
3
- import { property, component, Component, html, css, query, ifDefined, event, style, literal, staticHtml, cache, eventOptions, queryAll, repeat, eventListener } from '@a11d/lit';
3
+ import { property, component, Component, html, css, query, ifDefined, event, style, literal, staticHtml, cache, eventOptions, queryAll, repeat, eventListener, state } from '@a11d/lit';
4
4
  import { NotificationComponent } from '@a11d/lit-application';
5
5
  import { LocalStorage } from '@a11d/local-storage';
6
6
  import { InstanceofAttributeController } from '@3mo/instanceof-attribute-controller';
@@ -111,6 +111,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
111
111
  this.exportable = false;
112
112
  this.cellFontSize = DataGrid_1.cellRelativeFontSize.value;
113
113
  this.rowHeight = DataGrid_1.rowHeight.value;
114
+ this.isGenerating = false;
114
115
  this.slotController = new SlotController(this, async () => {
115
116
  this.hasSums;
116
117
  this.hasFabs;
@@ -217,10 +218,12 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
217
218
  this.sidePanelTab = tab;
218
219
  !tab ? this.sidePanelClose.dispatch() : this.sidePanelOpen.dispatch(tab);
219
220
  }
220
- exportExcelFile() {
221
+ async exportExcelFile() {
221
222
  try {
222
- CsvGenerator.generate(this);
223
+ this.isGenerating = true;
223
224
  NotificationComponent.notifyInfo(t('Exporting excel file'));
225
+ await CsvGenerator.generate(this);
226
+ this.isGenerating = false;
224
227
  }
225
228
  catch (error) {
226
229
  NotificationComponent.notifyError(error.message);
@@ -632,9 +635,12 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
632
635
  handlePointerDown(event) {
633
636
  this.rows.forEach(row => row.cells.forEach(cell => cell.handlePointerDown(event)));
634
637
  }
635
- *getFlattenedData() {
638
+ *getFlattenedData(values) {
639
+ if (!values) {
640
+ values = this.data;
641
+ }
636
642
  if (!this.subDataGridDataSelector) {
637
- yield* this.sortingController.toSortedBy(this.data.map((data, index) => new DataRecord(this, { level: 0, index, data })), ({ data }) => data);
643
+ yield* this.sortingController.toSortedBy(values.map((data, index) => new DataRecord(this, { level: 0, index, data })), ({ data }) => data);
638
644
  return;
639
645
  }
640
646
  const flatten = (data, level = 0) => {
@@ -649,7 +655,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
649
655
  ...(subDataRecords ?? [])
650
656
  ];
651
657
  };
652
- for (const data of this.sortingController.toSorted(this.data)) {
658
+ for (const data of this.sortingController.toSorted(values)) {
653
659
  yield* flatten(data);
654
660
  }
655
661
  return;
@@ -839,6 +845,9 @@ __decorate([
839
845
  __decorate([
840
846
  query('mo-data-grid-side-panel')
841
847
  ], DataGrid.prototype, "sidePanel", void 0);
848
+ __decorate([
849
+ state()
850
+ ], DataGrid.prototype, "isGenerating", void 0);
842
851
  __decorate([
843
852
  eventOptions({ passive: true })
844
853
  ], DataGrid.prototype, "handleScroll", null);
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridCell.d.ts","sourceRoot":"","sources":["../DataGridCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAA8B,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGrG,OAAO,EAAE,KAAK,cAAc,EAAuB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAMvF;;;;;;GAMG;AACH,qBACa,YAAY,CAAC,MAAM,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,eAAe,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IAC1H,KAAK,EAAG,MAAM,CAAA;IACd,MAAM,EAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACtC,GAAG,EAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IAQlE,OAAO,CAAC,OAAO,CAAQ;IAE1B,IAAI,QAAQ,iDAA+B;IAC3C,IAAI,IAAI,UAA2B;IACnC,IAAI,YAAY,+/CAAsC;IAEtD,OAAO,KAAK,SAAS,GAAkD;IACvE,OAAO,KAAK,QAAQ,GAA0D;IAE9E,OAAO,KAAK,gBAAgB,GAAuD;IAEnF,OAAO,KAAK,UAAU,GAIrB;IAED,IAAI,SAAS,YAGZ;IAED,iBAAiB,CAAC,KAAK,EAAE,YAAY;IAMrC,iBAAiB,CAAC,KAAK,EAAE,UAAU;IAO7B,aAAa,CAAC,KAAK,EAAE,aAAa;IA2CxC,OAAO,CAAC,SAAS;IAWjB,WAAoB,MAAM,kCAqDzB;IAED,OAAO,KAAK,OAAO,GAAmC;IAEtD,cAAuB,QAAQ,uBAa9B;IAED,OAAO,KAAK,eAAe,GAM1B;IAQD,OAAO,KAAK,mBAAmB,GAE9B;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC1C;CACD"}
1
+ {"version":3,"file":"DataGridCell.d.ts","sourceRoot":"","sources":["../DataGridCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAA8B,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGrG,OAAO,EAAE,KAAK,cAAc,EAAuB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAMvF;;;;;;GAMG;AACH,qBACa,YAAY,CAAC,MAAM,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,eAAe,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IAC1H,KAAK,EAAG,MAAM,CAAA;IACd,MAAM,EAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACtC,GAAG,EAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IAQlE,OAAO,CAAC,OAAO,CAAQ;IAE1B,IAAI,QAAQ,iDAA+B;IAC3C,IAAI,IAAI,UAA2B;IACnC,IAAI,YAAY,+/CAAsC;IAEtD,OAAO,KAAK,SAAS,GAAkD;IACvE,OAAO,KAAK,QAAQ,GAA0D;IAE9E,OAAO,KAAK,gBAAgB,GAAuD;IAEnF,OAAO,KAAK,UAAU,GAIrB;IAED,IAAI,SAAS,YAGZ;IAED,iBAAiB,CAAC,KAAK,EAAE,YAAY;IAMrC,iBAAiB,CAAC,KAAK,EAAE,UAAU;IAO7B,aAAa,CAAC,KAAK,EAAE,aAAa;IA2CxC,OAAO,CAAC,SAAS;IAWjB,WAAoB,MAAM,kCAgDzB;IAED,OAAO,KAAK,OAAO,GAAmC;IAEtD,cAAuB,QAAQ,uBAa9B;IAED,OAAO,KAAK,eAAe,GAM1B;IAQD,OAAO,KAAK,mBAAmB,GAE9B;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC1C;CACD"}
@@ -124,18 +124,18 @@ let DataGridCell = class DataGridCell extends Component {
124
124
  display: grid;
125
125
  }
126
126
 
127
- :host([alignment=end]) {
128
- text-align: end;
129
- }
130
-
131
127
  :host([alignment=start]) {
132
- text-align: start
128
+ text-align: start;
133
129
  }
134
130
 
135
131
  :host([alignment=center]) {
136
132
  text-align: center;
137
133
  }
138
134
 
135
+ :host([alignment=end]) {
136
+ text-align: end;
137
+ }
138
+
139
139
  :host([sticky]) {
140
140
  position: sticky;
141
141
  }
@@ -144,11 +144,6 @@ let DataGridCell = class DataGridCell extends Component {
144
144
  z-index: 2;
145
145
  background: var(--mo-data-grid-sticky-part-color);
146
146
  }
147
-
148
- :host([isEditing]) > :first-child {
149
- align-self: center;
150
- justify-self: stretch;
151
- }
152
147
  `;
153
148
  }
154
149
  get tooltip() { return this.valueTextContent; }
@@ -5,6 +5,7 @@ import type * as CSS from 'csstype';
5
5
  export type DataGridColumnAlignment = 'start' | 'center' | 'end';
6
6
  export type DataGridColumnSticky = 'start' | 'both' | 'end';
7
7
  export declare class DataGridColumn<TData, TValue = unknown> {
8
+ suffix?: string;
8
9
  dataGrid?: DataGrid<TData, any>;
9
10
  dataSelector: KeyPathOf<TData>;
10
11
  heading: string;
@@ -34,5 +35,7 @@ export declare class DataGridColumn<TData, TValue = unknown> {
34
35
  get sortingDefinition(): import("./DataGridSortingController.js").DataGridRankedSortDefinition<TData> | undefined;
35
36
  get sumTemplate(): HTMLTemplateResult | undefined;
36
37
  get stickyColumnInsetInline(): string;
38
+ formatAsCsv(value: any, data: TData): string[];
39
+ formatHeaderAsCsv(): string[];
37
40
  }
38
41
  //# 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,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,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,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK;IAKnC,iBAAiB;CAGjB"}
@@ -75,4 +75,11 @@ export class DataGridColumn {
75
75
  return '';
76
76
  }
77
77
  }
78
+ formatAsCsv(value, data) {
79
+ data;
80
+ return value === undefined || value === null ? [''] : [String(value)];
81
+ }
82
+ formatHeaderAsCsv() {
83
+ return this.heading.length < 3 && this.description ? [this.description] : [this.heading];
84
+ }
78
85
  }
@@ -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,EAAkC,MAAM,WAAW,CAAA;AAI1F,OAAO,EAAE,KAAK,QAAQ,EAA2B,MAAM,YAAY,CAAA;AAanE;;;;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,GAQzB;IAED,OAAO,CAAC,OAAO;CAaf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;KAC9C;CACD"}
@@ -3,10 +3,9 @@ import { __decorate } from "tslib";
3
3
  import { component, property, Component, css, state, html, query, style } 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 Excel': 'Ansicht nach Excel exportieren',
10
9
  'Auto': 'Auto'
11
10
  });
12
11
  Localizer.dictionaries.add('fa', {
@@ -194,27 +193,11 @@ let DataGridFooter = DataGridFooter_1 = class DataGridFooter extends Component {
194
193
  }
195
194
  get exportTemplate() {
196
195
  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
- />
196
+ <mo-icon-button dense icon='download_for_offline'
197
+ ${tooltip(t('Export to Excel'), TooltipPlacement.BlockStart)}
198
+ ${style({ color: 'var(--mo-color-green)', fontSize: '24px', opacity: this.dataGrid.isGenerating ? '0.5' : undefined })}
199
+ @click=${() => this.dataGrid.isGenerating ? undefined : this.dataGrid.exportExcelFile()}
200
+ ></mo-icon-button>
218
201
  `;
219
202
  }
220
203
  setPage(value) {
@@ -3,11 +3,11 @@ import { component, css } from '@a11d/lit';
3
3
  import { ContextMenuItem } from '@3mo/context-menu';
4
4
  let DataGridPrimaryContextMenuItem = class DataGridPrimaryContextMenuItem extends ContextMenuItem {
5
5
  static get styles() {
6
- return css `
7
- ${super.styles}
8
- :host {
9
- font-weight: bold;
10
- }
6
+ return css `
7
+ ${super.styles}
8
+ :host {
9
+ font-weight: bold;
10
+ }
11
11
  `;
12
12
  }
13
13
  };
@@ -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
+ formatAsCsv(value: boolean): string[];
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;CAQ9D;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;IAUrD,WAAW,CAAC,KAAK,EAAE,OAAO;CAGnC;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,6BAA6B,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAA;KAC7D;CACD"}
@@ -30,9 +30,13 @@ let DataGridColumnBoolean = class DataGridColumnBoolean extends DataGridColumnCo
30
30
  <mo-checkbox autofocus
31
31
  ?selected=${value}
32
32
  @change=${(e) => this.handleEdit(e.detail, data)}
33
+ ${style({ justifySelf: this.textAlign })}
33
34
  ></mo-checkbox>
34
35
  `;
35
36
  }
37
+ formatAsCsv(value) {
38
+ return value ? ['1'] : ['0'];
39
+ }
36
40
  };
37
41
  __decorate([
38
42
  property()
@@ -25,11 +25,14 @@ export declare abstract class DataGridColumnComponent<TData, TValue> extends Com
25
25
  sortDataSelector?: KeyPathOf<TData>;
26
26
  nonSortable: boolean;
27
27
  nonEditable: boolean | Predicate<TData>;
28
+ get suffix(): string | undefined;
28
29
  get column(): DataGridColumn<TData, TValue>;
29
30
  abstract getContentTemplate(value: TValue | undefined, data: TData): HTMLTemplateResult;
30
31
  abstract getEditContentTemplate?(value: TValue | undefined, data: TData): HTMLTemplateResult;
31
32
  protected handleEdit(value: TValue | undefined, data: TData): void;
32
33
  connectedCallback(): void;
33
34
  protected updated(): void;
35
+ formatAsCsv(value: any, data: TData): string[];
36
+ formatHeaderAsCsv(): string[];
34
37
  }
35
38
  //# 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,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAmB1C;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;IAK1B,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK;IAKnC,iBAAiB;CAGjB"}
@@ -24,9 +24,13 @@ export class DataGridColumnComponent extends Component {
24
24
  this.nonSortable = false;
25
25
  this.nonEditable = false;
26
26
  }
27
+ get suffix() {
28
+ return undefined;
29
+ }
27
30
  get column() {
28
31
  const nonEditable = this.nonEditable;
29
32
  return new DataGridColumn({
33
+ suffix: this.suffix,
30
34
  dataSelector: this.dataSelector,
31
35
  sortDataSelector: this.sortDataSelector,
32
36
  heading: this.heading,
@@ -36,6 +40,8 @@ export class DataGridColumnComponent extends Component {
36
40
  sticky: this.sticky,
37
41
  width: this.width,
38
42
  sortable: !this.nonSortable,
43
+ formatAsCsv: (value, data) => this.formatAsCsv(value, data),
44
+ formatHeaderAsCsv: this.formatHeaderAsCsv,
39
45
  editable: this.getEditContentTemplate !== undefined && (typeof nonEditable !== 'function' ? !nonEditable : x => !nonEditable(x)),
40
46
  getContentTemplate: this.getContentTemplate.bind(this),
41
47
  getEditContentTemplate: this.getEditContentTemplate?.bind(this),
@@ -54,6 +60,13 @@ export class DataGridColumnComponent extends Component {
54
60
  this.dataGrid?.extractColumns();
55
61
  this.dataGrid?.requestUpdate();
56
62
  }
63
+ formatAsCsv(value, data) {
64
+ data;
65
+ return value === undefined || value === null ? [''] : [String(value)];
66
+ }
67
+ formatHeaderAsCsv() {
68
+ return this.heading.length < 3 && this.description ? [this.description] : [this.heading];
69
+ }
57
70
  }
58
71
  __decorate([
59
72
  property({ type: Object })
@@ -8,8 +8,10 @@ export declare class DataGridColumnImage<TData> extends DataGridColumnComponent<
8
8
  tooltipSelector?: KeyPathOf<TData> | ((data: TData) => string | undefined);
9
9
  nonSortable: boolean;
10
10
  nonEditable: boolean;
11
+ private getTooltipText;
11
12
  getContentTemplate(value: string | undefined, data: TData): import("lit-html").HTMLTemplateResult;
12
13
  getEditContentTemplate: undefined;
14
+ formatAsCsv(value: string, data: TData): string[];
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,OAAO,CAAC,cAAc,CAMrB;IAED,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAkBhD,sBAAsB,YAAY;IAElC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;CAI/C;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,2BAA2B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;KACzD;CACD"}
@@ -12,17 +12,20 @@ let DataGridColumnImage = class DataGridColumnImage extends DataGridColumnCompon
12
12
  super(...arguments);
13
13
  this.nonSortable = true;
14
14
  this.nonEditable = true;
15
+ this.getTooltipText = (data) => {
16
+ return !this.tooltipSelector
17
+ ? undefined
18
+ : typeof this.tooltipSelector === 'function'
19
+ ? this.tooltipSelector(data)
20
+ : getValueByKeyPath(data, this.tooltipSelector);
21
+ };
15
22
  this.getEditContentTemplate = undefined;
16
23
  }
17
24
  getContentTemplate(value, data) {
18
25
  if (!value) {
19
26
  return html.nothing;
20
27
  }
21
- const tooltipText = !this.tooltipSelector
22
- ? undefined
23
- : typeof this.tooltipSelector === 'function'
24
- ? this.tooltipSelector(data)
25
- : getValueByKeyPath(data, this.tooltipSelector);
28
+ const tooltipText = this.getTooltipText(data);
26
29
  return !value ? html.nothing : html `
27
30
  <img
28
31
  ${tooltipText ? tooltip(tooltipText) : html.nothing}
@@ -33,6 +36,10 @@ let DataGridColumnImage = class DataGridColumnImage extends DataGridColumnCompon
33
36
  />
34
37
  `;
35
38
  }
39
+ formatAsCsv(value, data) {
40
+ value;
41
+ return [this.getTooltipText(data) ?? ''];
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
+ formatAsCsv(value: Date | undefined): string[];
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;IAE1C,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS;CAG5C;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
+ formatAsCsv(value) {
15
+ return !value ? [''] : [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
+ formatAsCsv(value: Date | undefined): string[];
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;IAE/C,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,SAAS;CAG5C;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
+ formatAsCsv(value) {
15
+ return !value ? [''] : [value.toISOString().replace('T', ' ').split('.')[0]];
16
+ }
14
17
  };
15
18
  DataGridColumnDateTime = __decorate([
16
19
  component('mo-data-grid-column-date-time')
@@ -10,10 +10,13 @@ export declare class DataGridColumnCurrency<TData> extends DataGridColumnNumberB
10
10
  static defaultCurrency?: Currency;
11
11
  currency?: Currency;
12
12
  currencyDataSelector?: KeyPathOf<TData>;
13
+ exchangeRateDataSelector?: KeyPathOf<TData>;
13
14
  private getCurrency;
14
15
  getContentTemplate(value: number | undefined, data: TData): import("lit-html").HTMLTemplateResult;
15
16
  getEditContentTemplate(value: number | undefined, data: TData): import("lit-html").HTMLTemplateResult;
16
17
  getSumTemplate(sum: number): import("lit-html").HTMLTemplateResult;
18
+ formatHeaderAsCsv(): string[];
19
+ formatAsCsv(value: unknown, data: TData): any[];
17
20
  }
18
21
  declare global {
19
22
  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,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAA;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAOxE;;;;;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;IAEvC,wBAAwB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IAEvD,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;IAMjB,iBAAiB;IAKjB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK;CAShD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,8BAA8B,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;KAC/D;CACD"}
@@ -4,6 +4,10 @@ import { component, html, ifDefined, property } from '@a11d/lit';
4
4
  import { Currency } from '@3mo/localization';
5
5
  import { FieldCurrency } from '@3mo/number-fields';
6
6
  import { DataGridColumnNumberBase } from './DataGridColumnNumberBase.js';
7
+ import { Localizer } from '@3mo/localization';
8
+ Localizer.dictionaries.add('de', {
9
+ 'Currency': 'Währung',
10
+ });
7
11
  /**
8
12
  * @element mo-data-grid-column-currency
9
13
  *
@@ -33,6 +37,17 @@ let DataGridColumnCurrency = DataGridColumnCurrency_1 = class DataGridColumnCurr
33
37
  <span style='font-weight: 500'>${sum.formatAsCurrency(this.currency ?? DataGridColumnCurrency_1.defaultCurrency)}</span>
34
38
  `;
35
39
  }
40
+ formatHeaderAsCsv() {
41
+ const title = this.heading.length < 3 && this.description ? this.description : this.heading;
42
+ return [title, t('Currency')];
43
+ }
44
+ formatAsCsv(value, data) {
45
+ if (value === undefined || value === null) {
46
+ return ['', ''];
47
+ }
48
+ const currencyCode = this.getCurrency(data).code;
49
+ return [value, currencyCode];
50
+ }
36
51
  };
37
52
  __decorate([
38
53
  property({ type: Object, converter: FieldCurrency.currencyConverter })
@@ -40,6 +55,9 @@ __decorate([
40
55
  __decorate([
41
56
  property()
42
57
  ], DataGridColumnCurrency.prototype, "currencyDataSelector", void 0);
58
+ __decorate([
59
+ property()
60
+ ], DataGridColumnCurrency.prototype, "exchangeRateDataSelector", void 0);
43
61
  DataGridColumnCurrency = DataGridColumnCurrency_1 = __decorate([
44
62
  component('mo-data-grid-column-currency')
45
63
  ], DataGridColumnCurrency);