@stenajs-webui/grid-export 21.24.1 → 21.24.3

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.
package/dist/index.es.js CHANGED
@@ -2,96 +2,96 @@ import { jsx as y } from "react/jsx-runtime";
2
2
  import { useCallback as b, useState as w } from "react";
3
3
  import T from "zipcelx";
4
4
  import { formatColumnIdToHeaderCellLabel as m, createGroupConfigAndIdsForRows as h } from "@stenajs-webui/grid";
5
- import { flatten as d } from "lodash-es";
5
+ import { flatten as p } from "lodash-es";
6
6
  import { format as x } from "date-fns";
7
7
  import { FlatButton as C, stenaDownload as H } from "@stenajs-webui/elements";
8
8
  import * as f from "clipboard-polyfill";
9
- const O = (r, n) => d(
10
- n.map(
11
- (e) => e.columnOrder.map((t) => ({
9
+ const O = (n, r) => p(
10
+ r.map(
11
+ (e) => e.columnOrder.map((o) => ({
12
12
  type: "string",
13
- value: r.columns[t].columnLabel ?? m(String(t))
13
+ value: n.columns[o].columnLabel ?? m(String(o))
14
14
  }))
15
15
  )
16
- ), G = (r) => d(
17
- r.map(
18
- (n) => n.columnOrder.map((e, t) => ({
16
+ ), G = (n) => p(
17
+ n.map(
18
+ (r) => r.columnOrder.map((e, o) => ({
19
19
  type: "string",
20
- value: t === 0 ? n.label ?? "" : ""
20
+ value: o === 0 ? r.label ?? "" : ""
21
21
  }))
22
22
  )
23
- ), S = (r, n, e, t) => {
24
- if (t)
25
- return c(t(r));
26
- const o = n(r);
23
+ ), S = (n, r, e, o) => {
24
+ if (o)
25
+ return c(o(n));
26
+ const t = r(n);
27
27
  if (e) {
28
- const l = e == null ? void 0 : e(o, r);
28
+ const l = e == null ? void 0 : e(t, n);
29
29
  return c(l);
30
30
  }
31
- return typeof o == "number" || typeof o == "string" ? c(o) : typeof o == "boolean" ? c(o ? "Y" : "") : o instanceof Date ? c(x(o, "yyyy-MM-dd HH:mm")) : o == null ? c("") : c(String(o));
32
- }, c = (r) => ({
33
- type: typeof r == "number" ? "number" : "string",
34
- value: r
35
- }), v = (r, n, e, t) => d(
31
+ return typeof t == "number" || typeof t == "string" ? c(t) : typeof t == "boolean" ? c(t ? "Y" : "") : t instanceof Date ? c(x(t, "yyyy-MM-dd HH:mm")) : t == null ? c("") : c(String(t));
32
+ }, c = (n) => ({
33
+ type: typeof n == "number" ? "number" : "string",
34
+ value: n
35
+ }), E = (n, r, e, o) => p(
36
36
  e.map(
37
- (o) => o.columnOrder.map(
38
- (l) => E(r, l, n, t)
37
+ (t) => t.columnOrder.map(
38
+ (l) => R(n, l, r, o)
39
39
  )
40
40
  )
41
- ), E = (r, n, e, t) => {
42
- const o = e.columns[n], l = t == null ? void 0 : t[n];
41
+ ), R = (n, r, e, o) => {
42
+ const t = e.columns[r], l = o == null ? void 0 : o[r];
43
43
  return S(
44
- r,
45
- o.itemValueResolver,
46
- o.itemLabelFormatter,
44
+ n,
45
+ t.itemValueResolver,
46
+ t.itemLabelFormatter,
47
47
  l
48
48
  );
49
- }, R = (r, n, e, t) => {
50
- const o = h(
51
- "columnGroups" in n ? n.columnGroups : void 0,
52
- "columnGroupOrder" in n ? n.columnGroupOrder : void 0,
53
- "columnOrder" in n ? n.columnOrder : void 0
54
- ), l = [], a = o.map((u) => u.groupConfig);
55
- return "columnGroups" in n && l.push(G(a)), l.push(O(n, a)), {
56
- filename: r,
49
+ }, k = (n, r, e, o) => {
50
+ const t = h(
51
+ "columnGroups" in r ? r.columnGroups : void 0,
52
+ "columnGroupOrder" in r ? r.columnGroupOrder : void 0,
53
+ "columnOrder" in r ? r.columnOrder : void 0
54
+ ), l = [], u = t.map((s) => s.groupConfig);
55
+ return "columnGroups" in r && l.push(G(u)), l.push(O(r, u)), {
56
+ filename: n,
57
57
  sheet: {
58
58
  data: [
59
59
  ...l,
60
60
  ...e.map(
61
- (u) => v(u, n, a, t)
61
+ (s) => E(s, r, u, o)
62
62
  )
63
63
  ]
64
64
  }
65
65
  };
66
- }, k = async (r, n, e, t) => {
67
- const o = R(r, n, e, t);
68
- await T(o);
66
+ }, B = async (n, r, e, o) => {
67
+ const t = k(n, r, e, o);
68
+ await T(t);
69
69
  }, Q = function({
70
- config: n,
70
+ config: r,
71
71
  size: e,
72
- items: t,
73
- filename: o = "exported-spreadsheet",
72
+ items: o,
73
+ filename: t = "exported-spreadsheet",
74
74
  formatters: l
75
75
  }) {
76
- const a = b(async () => {
77
- t && t.length && await k(
78
- o,
79
- n,
76
+ const u = b(async () => {
77
+ o && o.length && await B(
80
78
  t,
79
+ r,
80
+ o,
81
81
  l
82
82
  );
83
- }, [n, t, o, l]);
83
+ }, [r, o, t, l]);
84
84
  return /* @__PURE__ */ y(
85
85
  C,
86
86
  {
87
87
  size: e,
88
88
  leftIcon: H,
89
- onClick: a,
90
- disabled: !t || !t.length
89
+ onClick: u,
90
+ disabled: !o || !o.length
91
91
  }
92
92
  );
93
- }, g = (r) => {
94
- switch (r == null ? void 0 : r.toLowerCase()) {
93
+ }, g = (n) => {
94
+ switch (n == null ? void 0 : n.toLowerCase()) {
95
95
  case "left":
96
96
  case "start":
97
97
  case "flex-start":
@@ -105,90 +105,90 @@ const O = (r, n) => d(
105
105
  default:
106
106
  return;
107
107
  }
108
- }, B = (r, n) => d(
109
- n.map(
110
- (e) => e.columnOrder.map((t) => {
111
- const o = r.columns[t];
112
- if (o.justifyContentHeader) {
108
+ }, A = (n, r) => p(
109
+ r.map(
110
+ (e) => e.columnOrder.map((o) => {
111
+ const t = n.columns[o];
112
+ if (t.justifyContentHeader) {
113
113
  const l = g(
114
- o.justifyContentHeader
114
+ t.justifyContentHeader
115
115
  );
116
- return `<th${l ? ' style="' + l + '"' : ""}>${o.columnLabel ?? m(String(t))}</th>`;
116
+ return `<th${l ? ' style="' + l + '"' : ""}>${t.columnLabel ?? m(String(o))}</th>`;
117
117
  }
118
- return `<th>${o.columnLabel ?? m(String(t))}</th>`;
118
+ return `<th>${t.columnLabel ?? m(String(o))}</th>`;
119
119
  })
120
120
  )
121
- ), A = (r) => d(
122
- r.map((n) => `<th style="text-align: left" colspan="${n.columnOrder.length}">${n.label ?? ""}</th>`)
123
- ), M = (r, n, e, t, o) => {
124
- if (o)
125
- return p(o(r), e);
126
- const l = n(r);
127
- if (t) {
128
- const a = t == null ? void 0 : t(l, r);
129
- return p(a, e);
121
+ ), M = (n) => p(
122
+ n.map((r) => `<th style="text-align: left" colspan="${r.columnOrder.length}">${r.label ?? ""}</th>`)
123
+ ), v = (n, r, e, o, t) => {
124
+ if (t)
125
+ return d(t(n), e);
126
+ const l = r(n);
127
+ if (o) {
128
+ const u = o == null ? void 0 : o(l, n);
129
+ return d(u, e);
130
130
  }
131
- return typeof l == "number" || typeof l == "string" ? p(l, e) : typeof l == "boolean" ? p(l ? "Y" : "", e) : l instanceof Date ? p(x(l, "yyyy-MM-dd HH:mm"), e) : l == null ? p("", e) : p(String(l), e);
132
- }, p = (r, n) => {
133
- if (n) {
134
- const e = g(n);
135
- return `<td${e ? ' style="' + e + '"' : ""}>${r}</td>`;
131
+ return typeof l == "number" || typeof l == "string" ? d(l, e) : typeof l == "boolean" ? d(l ? "Y" : "", e) : l instanceof Date ? d(x(l, "yyyy-MM-dd HH:mm"), e) : l == null ? d("", e) : d(String(l), e);
132
+ }, d = (n, r) => {
133
+ if (r) {
134
+ const e = g(r);
135
+ return `<td${e ? ' style="' + e + '"' : ""}>${n}</td>`;
136
136
  }
137
- return `<td>${r}</td>`;
138
- }, D = (r, n, e, t) => d(
137
+ return `<td>${n}</td>`;
138
+ }, D = (n, r, e, o) => p(
139
139
  e.map(
140
- (o) => o.columnOrder.map(
141
- (l) => I(r, l, n, t)
140
+ (t) => t.columnOrder.map(
141
+ (l) => I(n, l, r, o)
142
142
  )
143
143
  )
144
- ).join(""), I = (r, n, e, t) => {
145
- const o = e.columns[n], l = t == null ? void 0 : t[n];
146
- return M(
147
- r,
148
- o.itemValueResolver,
149
- o.justifyContentCell,
150
- o.itemLabelFormatter,
144
+ ).join(""), I = (n, r, e, o) => {
145
+ const t = e.columns[r], l = o == null ? void 0 : o[r];
146
+ return v(
147
+ n,
148
+ t.itemValueResolver,
149
+ t.justifyContentCell,
150
+ t.itemLabelFormatter,
151
151
  l
152
152
  );
153
- }, P = (r, n, e) => {
154
- const t = h(
155
- "columnGroups" in r ? r.columnGroups : void 0,
156
- "columnGroupOrder" in r ? r.columnGroupOrder : void 0,
157
- "columnOrder" in r ? r.columnOrder : void 0
158
- ), o = [], l = t.map((s) => s.groupConfig);
159
- "columnGroups" in r && o.push(A(l).join("")), o.push(B(r, l).join(""));
160
- const a = `<thead>${o.map((s) => `<tr>${s}</tr>`).join("")}</thead>`, i = `<tbody>${n.map((s) => D(s, r, l, e)).map((s) => `<tr>${s}</tr>`).join("")}</tbody>`;
161
- return `<table>${a}${i}</table>`;
162
- }, V = (r, n, e) => P(r, n, e);
163
- async function Y(r, n, e, t) {
164
- let o = "";
165
- if (r && r.length && (o = V(n, r, e)), t && (o = t(o)), o) {
153
+ }, P = (n, r, e) => {
154
+ const o = h(
155
+ "columnGroups" in n ? n.columnGroups : void 0,
156
+ "columnGroupOrder" in n ? n.columnGroupOrder : void 0,
157
+ "columnOrder" in n ? n.columnOrder : void 0
158
+ ), t = [], l = o.map((a) => a.groupConfig);
159
+ "columnGroups" in n && t.push(M(l).join("")), t.push(A(n, l).join(""));
160
+ const u = `<thead>${t.map((a) => `<tr>${a}</tr>`).join("")}</thead>`, i = `<tbody>${r.map((a) => D(a, n, l, e)).map((a) => `<tr>${a}</tr>`).join("")}</tbody>`;
161
+ return `<table>${u}${i}</table>`;
162
+ }, V = (n, r, e) => P(n, r, e);
163
+ async function Y(n, r, e, o) {
164
+ let t = "";
165
+ if (n && n.length && (t = V(r, n, e)), o && (t = o(t)), t) {
166
166
  const l = new f.ClipboardItem({
167
- "text/html": new Blob([o], { type: "text/html" })
167
+ "text/html": new Blob([t], { type: "text/html" })
168
168
  });
169
169
  await f.write([l]);
170
170
  }
171
171
  }
172
172
  function U({
173
- config: r,
174
- renderContent: n,
173
+ config: n,
174
+ renderContent: r,
175
175
  size: e,
176
- items: t,
177
- formatters: o,
176
+ items: o,
177
+ formatters: t,
178
178
  label: l = "Copy to clipboard",
179
- labelAfterCopy: a = "Content copied!",
180
- numTimeToRevertLabel: u = 2e3
179
+ labelAfterCopy: u = "Content copied!",
180
+ numTimeToRevertLabel: s = 2e3
181
181
  }) {
182
- const [i, s] = w(!1), $ = b(async () => {
183
- await Y(t, r, o, n), s(!0), setTimeout(() => s(!1), u);
184
- }, [r, t, o, u, n]);
182
+ const [i, a] = w(!1), $ = b(async () => {
183
+ await Y(o, n, t, r), a(!0), setTimeout(() => a(!1), s);
184
+ }, [n, o, t, s, r]);
185
185
  return /* @__PURE__ */ y(
186
186
  C,
187
187
  {
188
188
  size: e,
189
189
  onClick: $,
190
- disabled: !t || !t.length,
191
- label: i ? a : l
190
+ disabled: !o || !o.length,
191
+ label: i ? u : l
192
192
  }
193
193
  );
194
194
  }
@@ -196,7 +196,7 @@ export {
196
196
  Q as StandardTableExcelExportButton,
197
197
  U as StandardTableHtmlCopyToClipboardButton,
198
198
  P as createHtmlConfig,
199
- R as createZipcelxConfig,
200
- k as downloadExcelForStandardTable
199
+ k as createZipcelxConfig,
200
+ B as downloadExcelForStandardTable
201
201
  };
202
202
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? (groupConfig.label ?? \"\") : \"\",\n };\n }),\n ),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters),\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaDownload,\n} from \"@stenajs-webui/elements\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters,\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={stenaDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined,\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader,\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n }),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined,\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null,\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","columnConfig","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","jsx","FlatButton","stenaDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? (groupConfig.label ?? \"\") : \"\",\n };\n }),\n ),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters),\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaDownload,\n} from \"@stenajs-webui/elements\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters,\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={stenaDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined,\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader,\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n }),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined,\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null,\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","columnConfig","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","jsx","FlatButton","stenaDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("react/jsx-runtime"),m=require("react"),$=require("zipcelx"),i=require("@stenajs-webui/grid"),p=require("lodash-es"),g=require("date-fns"),b=require("@stenajs-webui/elements"),H=require("clipboard-polyfill");function S(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const y=S(H),G=(e,t)=>p.flatten(t.map(o=>o.columnOrder.map(n=>({type:"string",value:e.columns[n].columnLabel??i.formatColumnIdToHeaderCellLabel(String(n))})))),v=e=>p.flatten(e.map(t=>t.columnOrder.map((o,n)=>({type:"string",value:n===0?t.label??"":""})))),E=(e,t,o,n)=>{if(n)return s(n(e));const r=t(e);if(o){const l=o==null?void 0:o(r,e);return s(l)}return typeof r=="number"||typeof r=="string"?s(r):typeof r=="boolean"?s(r?"Y":""):r instanceof Date?s(g.format(r,"yyyy-MM-dd HH:mm")):r==null?s(""):s(String(r))},s=e=>({type:typeof e=="number"?"number":"string",value:e}),R=(e,t,o,n)=>p.flatten(o.map(r=>r.columnOrder.map(l=>q(e,l,t,n)))),q=(e,t,o,n)=>{const r=o.columns[t],l=n==null?void 0:n[t];return E(e,r.itemValueResolver,r.itemLabelFormatter,l)},h=(e,t,o,n)=>{const r=i.createGroupConfigAndIdsForRows("columnGroups"in t?t.columnGroups:void 0,"columnGroupOrder"in t?t.columnGroupOrder:void 0,"columnOrder"in t?t.columnOrder:void 0),l=[],a=r.map(c=>c.groupConfig);return"columnGroups"in t&&l.push(v(a)),l.push(G(t,a)),{filename:e,sheet:{data:[...l,...o.map(c=>R(c,t,a,n))]}}},x=async(e,t,o,n)=>{const r=h(e,t,o,n);await $(r)},B=function({config:t,size:o,items:n,filename:r="exported-spreadsheet",formatters:l}){const a=m.useCallback(async()=>{n&&n.length&&await x(r,t,n,l)},[t,n,r,l]);return C.jsx(b.FlatButton,{size:o,leftIcon:b.stenaDownload,onClick:a,disabled:!n||!n.length})},T=e=>{switch(e==null?void 0:e.toLowerCase()){case"left":case"start":case"flex-start":return"text-align: left";case"right":case"end":case"flex-end":return"text-align: right";case"center":return"text-align: center";default:return}},k=(e,t)=>p.flatten(t.map(o=>o.columnOrder.map(n=>{const r=e.columns[n];if(r.justifyContentHeader){const l=T(r.justifyContentHeader);return`<th${l?' style="'+l+'"':""}>${r.columnLabel??i.formatColumnIdToHeaderCellLabel(String(n))}</th>`}return`<th>${r.columnLabel??i.formatColumnIdToHeaderCellLabel(String(n))}</th>`}))),I=e=>p.flatten(e.map(t=>`<th style="text-align: left" colspan="${t.columnOrder.length}">${t.label??""}</th>`)),M=(e,t,o,n,r)=>{if(r)return d(r(e),o);const l=t(e);if(n){const a=n==null?void 0:n(l,e);return d(a,o)}return typeof l=="number"||typeof l=="string"?d(l,o):typeof l=="boolean"?d(l?"Y":"",o):l instanceof Date?d(g.format(l,"yyyy-MM-dd HH:mm"),o):l==null?d("",o):d(String(l),o)},d=(e,t)=>{if(t){const o=T(t);return`<td${o?' style="'+o+'"':""}>${e}</td>`}return`<td>${e}</td>`},j=(e,t,o,n)=>p.flatten(o.map(r=>r.columnOrder.map(l=>A(e,l,t,n)))).join(""),A=(e,t,o,n)=>{const r=o.columns[t],l=n==null?void 0:n[t];return M(e,r.itemValueResolver,r.justifyContentCell,r.itemLabelFormatter,l)},w=(e,t,o)=>{const n=i.createGroupConfigAndIdsForRows("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0),r=[],l=n.map(u=>u.groupConfig);"columnGroups"in e&&r.push(I(l).join("")),r.push(k(e,l).join(""));const a=`<thead>${r.map(u=>`<tr>${u}</tr>`).join("")}</thead>`,f=`<tbody>${t.map(u=>j(u,e,l,o)).map(u=>`<tr>${u}</tr>`).join("")}</tbody>`;return`<table>${a}${f}</table>`},D=(e,t,o)=>w(e,t,o);async function P(e,t,o,n){let r="";if(e&&e.length&&(r=D(t,e,o)),n&&(r=n(r)),r){const l=new y.ClipboardItem({"text/html":new Blob([r],{type:"text/html"})});await y.write([l])}}function _({config:e,renderContent:t,size:o,items:n,formatters:r,label:l="Copy to clipboard",labelAfterCopy:a="Content copied!",numTimeToRevertLabel:c=2e3}){const[f,u]=m.useState(!1),O=m.useCallback(async()=>{await P(n,e,r,t),u(!0),setTimeout(()=>u(!1),c)},[e,n,r,c,t]);return C.jsx(b.FlatButton,{size:o,onClick:O,disabled:!n||!n.length,label:f?a:l})}exports.StandardTableExcelExportButton=B;exports.StandardTableHtmlCopyToClipboardButton=_;exports.createHtmlConfig=w;exports.createZipcelxConfig=h;exports.downloadExcelForStandardTable=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("react/jsx-runtime"),m=require("react"),$=require("zipcelx"),i=require("@stenajs-webui/grid"),p=require("lodash-es"),g=require("date-fns"),b=require("@stenajs-webui/elements"),H=require("clipboard-polyfill");function S(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const t=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,t.get?t:{enumerable:!0,get:()=>e[o]})}}return n.default=e,Object.freeze(n)}const y=S(H),G=(e,n)=>p.flatten(n.map(o=>o.columnOrder.map(t=>({type:"string",value:e.columns[t].columnLabel??i.formatColumnIdToHeaderCellLabel(String(t))})))),E=e=>p.flatten(e.map(n=>n.columnOrder.map((o,t)=>({type:"string",value:t===0?n.label??"":""})))),R=(e,n,o,t)=>{if(t)return s(t(e));const r=n(e);if(o){const l=o==null?void 0:o(r,e);return s(l)}return typeof r=="number"||typeof r=="string"?s(r):typeof r=="boolean"?s(r?"Y":""):r instanceof Date?s(g.format(r,"yyyy-MM-dd HH:mm")):r==null?s(""):s(String(r))},s=e=>({type:typeof e=="number"?"number":"string",value:e}),q=(e,n,o,t)=>p.flatten(o.map(r=>r.columnOrder.map(l=>B(e,l,n,t)))),B=(e,n,o,t)=>{const r=o.columns[n],l=t==null?void 0:t[n];return R(e,r.itemValueResolver,r.itemLabelFormatter,l)},h=(e,n,o,t)=>{const r=i.createGroupConfigAndIdsForRows("columnGroups"in n?n.columnGroups:void 0,"columnGroupOrder"in n?n.columnGroupOrder:void 0,"columnOrder"in n?n.columnOrder:void 0),l=[],a=r.map(c=>c.groupConfig);return"columnGroups"in n&&l.push(E(a)),l.push(G(n,a)),{filename:e,sheet:{data:[...l,...o.map(c=>q(c,n,a,t))]}}},x=async(e,n,o,t)=>{const r=h(e,n,o,t);await $(r)},k=function({config:n,size:o,items:t,filename:r="exported-spreadsheet",formatters:l}){const a=m.useCallback(async()=>{t&&t.length&&await x(r,n,t,l)},[n,t,r,l]);return C.jsx(b.FlatButton,{size:o,leftIcon:b.stenaDownload,onClick:a,disabled:!t||!t.length})},T=e=>{switch(e==null?void 0:e.toLowerCase()){case"left":case"start":case"flex-start":return"text-align: left";case"right":case"end":case"flex-end":return"text-align: right";case"center":return"text-align: center";default:return}},I=(e,n)=>p.flatten(n.map(o=>o.columnOrder.map(t=>{const r=e.columns[t];if(r.justifyContentHeader){const l=T(r.justifyContentHeader);return`<th${l?' style="'+l+'"':""}>${r.columnLabel??i.formatColumnIdToHeaderCellLabel(String(t))}</th>`}return`<th>${r.columnLabel??i.formatColumnIdToHeaderCellLabel(String(t))}</th>`}))),M=e=>p.flatten(e.map(n=>`<th style="text-align: left" colspan="${n.columnOrder.length}">${n.label??""}</th>`)),j=(e,n,o,t,r)=>{if(r)return d(r(e),o);const l=n(e);if(t){const a=t==null?void 0:t(l,e);return d(a,o)}return typeof l=="number"||typeof l=="string"?d(l,o):typeof l=="boolean"?d(l?"Y":"",o):l instanceof Date?d(g.format(l,"yyyy-MM-dd HH:mm"),o):l==null?d("",o):d(String(l),o)},d=(e,n)=>{if(n){const o=T(n);return`<td${o?' style="'+o+'"':""}>${e}</td>`}return`<td>${e}</td>`},v=(e,n,o,t)=>p.flatten(o.map(r=>r.columnOrder.map(l=>A(e,l,n,t)))).join(""),A=(e,n,o,t)=>{const r=o.columns[n],l=t==null?void 0:t[n];return j(e,r.itemValueResolver,r.justifyContentCell,r.itemLabelFormatter,l)},w=(e,n,o)=>{const t=i.createGroupConfigAndIdsForRows("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0),r=[],l=t.map(u=>u.groupConfig);"columnGroups"in e&&r.push(M(l).join("")),r.push(I(e,l).join(""));const a=`<thead>${r.map(u=>`<tr>${u}</tr>`).join("")}</thead>`,f=`<tbody>${n.map(u=>v(u,e,l,o)).map(u=>`<tr>${u}</tr>`).join("")}</tbody>`;return`<table>${a}${f}</table>`},D=(e,n,o)=>w(e,n,o);async function P(e,n,o,t){let r="";if(e&&e.length&&(r=D(n,e,o)),t&&(r=t(r)),r){const l=new y.ClipboardItem({"text/html":new Blob([r],{type:"text/html"})});await y.write([l])}}function _({config:e,renderContent:n,size:o,items:t,formatters:r,label:l="Copy to clipboard",labelAfterCopy:a="Content copied!",numTimeToRevertLabel:c=2e3}){const[f,u]=m.useState(!1),O=m.useCallback(async()=>{await P(t,e,r,n),u(!0),setTimeout(()=>u(!1),c)},[e,t,r,c,n]);return C.jsx(b.FlatButton,{size:o,onClick:O,disabled:!t||!t.length,label:f?a:l})}exports.StandardTableExcelExportButton=k;exports.StandardTableHtmlCopyToClipboardButton=_;exports.createHtmlConfig=w;exports.createZipcelxConfig=h;exports.downloadExcelForStandardTable=x;
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? (groupConfig.label ?? \"\") : \"\",\n };\n }),\n ),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters),\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaDownload,\n} from \"@stenajs-webui/elements\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters,\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={stenaDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined,\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader,\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n }),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined,\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null,\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","columnConfig","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","jsx","FlatButton","stenaDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/features/grid-excel-export/transformers/HeaderTransformer.ts","../src/features/grid-excel-export/transformers/CellTransformer.ts","../src/features/grid-excel-export/transformers/RowTransformer.ts","../src/features/grid-excel-export/transformers/ConfigTransformer.ts","../src/features/grid-excel-export/util/ExcelDownloader.ts","../src/features/grid-excel-export/components/StandardTableExcelExportButton.tsx","../src/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/HeaderTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/CellTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/RowTransformer.ts","../src/features/grid-copy-to-clipboard/transformers/ConfigTransformer.ts","../src/features/grid-copy-to-clipboard/util/HtmlRenderer.ts","../src/features/grid-copy-to-clipboard/util/CopyContentToClipboard.ts","../src/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.tsx"],"sourcesContent":["import {\n formatColumnIdToHeaderCellLabel,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXRow } from \"zipcelx\";\nimport { StandardTableColumnGroupConfig } from \"@stenajs-webui/grid\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n return {\n type: \"string\",\n value:\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId)),\n };\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((_, index) => {\n return {\n type: \"string\",\n value: index === 0 ? (groupConfig.label ?? \"\") : \"\",\n };\n }),\n ),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { ZipCelXCell } from \"zipcelx\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): ZipCelXCell => {\n if (formatter) {\n return createCell(formatter(item));\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\");\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"));\n }\n\n if (value == null) {\n return createCell(\"\");\n }\n\n return createCell(String(value));\n};\n\nconst createCell = (value: string | number): ZipCelXCell => {\n const type = typeof value === \"number\" ? \"number\" : \"string\";\n return {\n type,\n value,\n };\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { ZipCelXCell, ZipCelXRow } from \"zipcelx\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXRow => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<ZipCelXCell>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n );\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXCell => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { ZipCelXConfig, ZipCelXRow } from \"zipcelx\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createZipcelxConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): ZipCelXConfig => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<ZipCelXRow> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs));\n\n return {\n filename,\n sheet: {\n data: [\n ...headerRows,\n ...items.map<ZipCelXRow>((item) =>\n transformTableRow(item, config, groupConfigs, formatters),\n ),\n ],\n },\n };\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport zipcelx from \"zipcelx\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createZipcelxConfig } from \"../transformers/ConfigTransformer\";\n\nexport const downloadExcelForStandardTable = async <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n filename: string,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n const excelConfig = createZipcelxConfig(filename, config, items, formatters);\n await zipcelx(excelConfig);\n};\n","import * as React from \"react\";\nimport { useCallback } from \"react\";\nimport { downloadExcelForStandardTable } from \"../util/ExcelDownloader\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport {\n FlatButton,\n FlatButtonProps,\n stenaDownload,\n} from \"@stenajs-webui/elements\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\ninterface StandardTableExcelExportButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n filename?: string;\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n}\n\nexport const StandardTableExcelExportButton =\n function StandardTableExcelExportButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n >({\n config,\n size,\n items,\n filename = \"exported-spreadsheet\",\n formatters,\n }: StandardTableExcelExportButtonProps<TItem, TColumnKey, TColumnGroupKey>) {\n const onClickExportExcel = useCallback(async () => {\n if (items && items.length) {\n await downloadExcelForStandardTable(\n filename,\n config,\n items,\n formatters,\n );\n }\n }, [config, items, filename, formatters]);\n\n return (\n <FlatButton\n size={size}\n leftIcon={stenaDownload}\n onClick={onClickExportExcel}\n disabled={!items || !items.length}\n />\n );\n };\n","export const transformJustifyContentToTextAlign = (\n justifyContent: string | undefined,\n): string | undefined => {\n switch (justifyContent?.toLowerCase()) {\n case \"left\":\n case \"start\":\n case \"flex-start\":\n return \"text-align: left\";\n case \"right\":\n case \"end\":\n case \"flex-end\":\n return \"text-align: right\";\n case \"center\":\n return \"text-align: center\";\n default:\n return undefined;\n }\n};\n","import {\n formatColumnIdToHeaderCellLabel,\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformTableHeaders = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map((columnId) => {\n const columnConfig = config.columns[columnId];\n\n if (columnConfig.justifyContentHeader) {\n const styleProperty = transformJustifyContentToTextAlign(\n columnConfig.justifyContentHeader,\n );\n return `<th${styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"}>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }\n return `<th>${\n columnConfig.columnLabel ??\n formatColumnIdToHeaderCellLabel(String(columnId))\n }</th>`;\n }),\n ),\n );\n};\n\nexport const transformGroupHeaders = <TColumnKey extends string>(\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n): string[] => {\n return flatten(\n groupConfigs.map((groupConfig) => {\n return `<th style=\"text-align: left\" colspan=\"${\n groupConfig.columnOrder.length\n }\">${groupConfig.label ?? \"\"}</th>`;\n }),\n );\n};\n","import { StandardTableColumnConfig } from \"@stenajs-webui/grid\";\nimport { format } from \"date-fns\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\nimport { transformJustifyContentToTextAlign } from \"./AlignmentTransformer\";\n\nexport const transformItemToCell = <\n TItem,\n TItemValue,\n TColumnKey extends string,\n>(\n item: TItem,\n itemValueResolver: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemValueResolver\"],\n justifyContentCell: StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"justifyContentCell\"],\n itemLabelFormatter:\n | StandardTableColumnConfig<\n TItem,\n TItemValue,\n TColumnKey\n >[\"itemLabelFormatter\"]\n | undefined,\n formatter?: CustomCellFormatter<TItem>,\n): string => {\n if (formatter) {\n return createCell(formatter(item), justifyContentCell);\n }\n\n const value = itemValueResolver(item);\n\n if (itemLabelFormatter) {\n const label = itemLabelFormatter?.(value, item);\n return createCell(label, justifyContentCell);\n }\n\n if (typeof value === \"number\" || typeof value === \"string\") {\n return createCell(value, justifyContentCell);\n }\n\n if (typeof value === \"boolean\") {\n return createCell(value ? \"Y\" : \"\", justifyContentCell);\n }\n\n if (value instanceof Date) {\n return createCell(format(value, \"yyyy-MM-dd HH:mm\"), justifyContentCell);\n }\n\n if (value == null) {\n return createCell(\"\", justifyContentCell);\n }\n\n return createCell(String(value), justifyContentCell);\n};\n\nconst createCell = (\n value: string | number,\n justifyContentCell: string | undefined,\n): string => {\n if (justifyContentCell) {\n const styleProperty =\n transformJustifyContentToTextAlign(justifyContentCell);\n return `<td${\n styleProperty ? ' style=\"' + styleProperty + '\"' : \"\"\n }>${value}</td>`;\n }\n return `<td>${value}</td>`;\n};\n","import {\n StandardTableColumnGroupConfig,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport { flatten } from \"lodash-es\";\nimport { transformItemToCell } from \"./CellTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const transformTableRow = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n groupConfigs: Array<StandardTableColumnGroupConfig<TColumnKey>>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n return flatten(\n groupConfigs.map((groupConfig) =>\n groupConfig.columnOrder.map<string>((columnId) =>\n transformCell(item, columnId, config, formatters),\n ),\n ),\n ).join(\"\");\n};\n\nexport const transformCell = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n item: TItem,\n columnId: TColumnKey,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const columnConfig = config.columns[columnId];\n const formatter = formatters?.[columnId];\n return transformItemToCell(\n item,\n columnConfig.itemValueResolver,\n columnConfig.justifyContentCell,\n columnConfig.itemLabelFormatter,\n formatter,\n );\n};\n","import {\n createGroupConfigAndIdsForRows,\n StandardTableConfig,\n} from \"@stenajs-webui/grid\";\nimport {\n transformGroupHeaders,\n transformTableHeaders,\n} from \"./HeaderTransformer\";\nimport { transformTableRow } from \"./RowTransformer\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport const createHtmlConfig = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n): string => {\n const groupConfigsAndIds = createGroupConfigAndIdsForRows(\n \"columnGroups\" in config ? config.columnGroups : undefined,\n \"columnGroupOrder\" in config ? config.columnGroupOrder : undefined,\n \"columnOrder\" in config ? config.columnOrder : undefined,\n );\n\n const headerRows: Array<string> = [];\n const groupConfigs = groupConfigsAndIds.map((p) => p.groupConfig);\n\n if (\"columnGroups\" in config) {\n headerRows.push(transformGroupHeaders(groupConfigs).join(\"\"));\n }\n headerRows.push(transformTableHeaders(config, groupConfigs).join(\"\"));\n const header = `<thead>${headerRows\n .map((headerRow) => `<tr>${headerRow}</tr>`)\n .join(\"\")}</thead>`;\n\n const tbodyRows = items\n .map((item) => transformTableRow(item, config, groupConfigs, formatters))\n .map((row) => `<tr>${row}</tr>`);\n\n const body = `<tbody>${tbodyRows.join(\"\")}</tbody>`;\n return `<table>${header}${body}</table>`;\n};\n","import { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\nimport { createHtmlConfig } from \"../transformers/ConfigTransformer\";\n\nexport const renderHtmlForStandardTable = <\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n items: Array<TItem>,\n formatters?: CustomCellFormatters<TItem, TColumnKey>,\n) => {\n return createHtmlConfig(config, items, formatters);\n};\n","import { renderHtmlForStandardTable } from \"./HtmlRenderer\";\nimport * as clipboard from \"clipboard-polyfill\";\nimport { StandardTableConfig } from \"@stenajs-webui/grid\";\nimport { CustomCellFormatter } from \"../../../common/CellFormatters\";\n\nexport async function copyContentToClipboard<\n TItem,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>(\n items: TItem[] | undefined,\n config: StandardTableConfig<TItem, TColumnKey, TColumnGroupKey>,\n formatters?:\n | Partial<Record<TColumnKey, CustomCellFormatter<TItem>>>\n | undefined,\n renderContent?: (content: string) => string | null,\n) {\n let htmlToCopy: string | null = \"\";\n\n if (items && items.length) {\n htmlToCopy = renderHtmlForStandardTable(config, items, formatters);\n }\n\n if (renderContent) {\n htmlToCopy = renderContent(htmlToCopy);\n }\n if (htmlToCopy) {\n const item = new clipboard.ClipboardItem({\n \"text/html\": new Blob([htmlToCopy], { type: \"text/html\" }),\n });\n\n await clipboard.write([item]);\n }\n}\n","import * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { StandardTableProps } from \"@stenajs-webui/grid\";\nimport { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { copyContentToClipboard } from \"../util/CopyContentToClipboard\";\nimport { CustomCellFormatters } from \"../../../common/CellFormatters\";\n\nexport interface StandardTableHtmlCopyToClipboardButtonProps<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n> extends Pick<\n StandardTableProps<TItem, TColumnKey, TColumnGroupKey>,\n \"config\" | \"items\"\n >,\n Pick<FlatButtonProps, \"size\"> {\n formatters?: CustomCellFormatters<TItem, TColumnKey>;\n renderContent?: (content: string) => string | null;\n label?: string;\n labelAfterCopy?: string;\n numTimeToRevertLabel?: number;\n}\n\nexport function StandardTableHtmlCopyToClipboardButton<\n TItem extends object,\n TColumnKey extends string,\n TColumnGroupKey extends string,\n>({\n config,\n renderContent,\n size,\n items,\n formatters,\n label = \"Copy to clipboard\",\n labelAfterCopy = \"Content copied!\",\n numTimeToRevertLabel = 2000,\n}: StandardTableHtmlCopyToClipboardButtonProps<\n TItem,\n TColumnKey,\n TColumnGroupKey\n>) {\n const [contentCopied, setContentCopied] = useState<boolean>(false);\n const onClickExportHtml = useCallback(async () => {\n await copyContentToClipboard(items, config, formatters, renderContent);\n\n setContentCopied(true);\n setTimeout(() => setContentCopied(false), numTimeToRevertLabel);\n }, [config, items, formatters, numTimeToRevertLabel, renderContent]);\n\n return (\n <FlatButton\n size={size}\n onClick={onClickExportHtml}\n disabled={!items || !items.length}\n label={contentCopied ? labelAfterCopy : label}\n />\n );\n}\n"],"names":["transformTableHeaders","config","groupConfigs","flatten","groupConfig","columnId","formatColumnIdToHeaderCellLabel","transformGroupHeaders","_","index","transformItemToCell","item","itemValueResolver","itemLabelFormatter","formatter","createCell","value","label","format","transformTableRow","formatters","transformCell","columnConfig","createZipcelxConfig","filename","items","groupConfigsAndIds","createGroupConfigAndIdsForRows","headerRows","p","downloadExcelForStandardTable","excelConfig","zipcelx","StandardTableExcelExportButton","size","onClickExportExcel","useCallback","jsx","FlatButton","stenaDownload","transformJustifyContentToTextAlign","justifyContent","styleProperty","justifyContentCell","createHtmlConfig","header","headerRow","body","row","renderHtmlForStandardTable","copyContentToClipboard","renderContent","htmlToCopy","clipboard","StandardTableHtmlCopyToClipboardButton","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stenajs-webui/grid-export",
3
- "version": "21.24.1",
3
+ "version": "21.24.3",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "mattias800",
@@ -33,9 +33,9 @@
33
33
  "deploy": "gh-pages -d example/build"
34
34
  },
35
35
  "dependencies": {
36
- "@stenajs-webui/core": "21.24.1",
37
- "@stenajs-webui/elements": "21.24.1",
38
- "@stenajs-webui/grid": "21.24.1",
36
+ "@stenajs-webui/core": "21.24.3",
37
+ "@stenajs-webui/elements": "21.24.3",
38
+ "@stenajs-webui/grid": "21.24.3",
39
39
  "@types/zipcelx": "^1.5.0",
40
40
  "clipboard-polyfill": "4.1.0",
41
41
  "date-fns": "4.1.0",
@@ -59,5 +59,5 @@
59
59
  "files": [
60
60
  "dist"
61
61
  ],
62
- "gitHead": "4205f6be5f4639579a3faca6781466b907852e6b"
62
+ "gitHead": "fa71f6ec2b3f9595996d209b9b0758bd6ef41b98"
63
63
  }