@stenajs-webui/grid-export 19.0.4 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +75 -86
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/package.json +12 -5
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
(function(){"use strict";try{var e=document.createElement("style");e.appendChild(document.createTextNode("")),document.head.appendChild(e)}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
|
|
2
1
|
import { jsx as y } from "react/jsx-runtime";
|
|
3
2
|
import { useCallback as b, useState as w } from "react";
|
|
4
3
|
import T from "zipcelx";
|
|
@@ -7,87 +6,81 @@ import { flatten as d } from "lodash";
|
|
|
7
6
|
import { format as x } from "date-fns";
|
|
8
7
|
import { FlatButton as C, stenaDownload as H } from "@stenajs-webui/elements";
|
|
9
8
|
import * as f from "clipboard-polyfill";
|
|
10
|
-
const O = (r,
|
|
11
|
-
|
|
12
|
-
(e) => e.columnOrder.map((t) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
value: (l = r.columns[t].columnLabel) != null ? l : m(String(t))
|
|
17
|
-
};
|
|
18
|
-
})
|
|
9
|
+
const O = (r, n) => d(
|
|
10
|
+
n.map(
|
|
11
|
+
(e) => e.columnOrder.map((t) => ({
|
|
12
|
+
type: "string",
|
|
13
|
+
value: r.columns[t].columnLabel ?? m(String(t))
|
|
14
|
+
}))
|
|
19
15
|
)
|
|
20
16
|
), G = (r) => d(
|
|
21
17
|
r.map(
|
|
22
|
-
(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
value: t === 0 && (n = o.label) != null ? n : ""
|
|
27
|
-
};
|
|
28
|
-
})
|
|
18
|
+
(n) => n.columnOrder.map((e, t) => ({
|
|
19
|
+
type: "string",
|
|
20
|
+
value: t === 0 ? n.label ?? "" : ""
|
|
21
|
+
}))
|
|
29
22
|
)
|
|
30
|
-
), S = (r,
|
|
23
|
+
), S = (r, n, e, t) => {
|
|
31
24
|
if (t)
|
|
32
25
|
return c(t(r));
|
|
33
|
-
const
|
|
26
|
+
const o = n(r);
|
|
34
27
|
if (e) {
|
|
35
|
-
const l = e == null ? void 0 : e(
|
|
28
|
+
const l = e == null ? void 0 : e(o, r);
|
|
36
29
|
return c(l);
|
|
37
30
|
}
|
|
38
|
-
return typeof
|
|
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));
|
|
39
32
|
}, c = (r) => ({
|
|
40
33
|
type: typeof r == "number" ? "number" : "string",
|
|
41
34
|
value: r
|
|
42
|
-
}), v = (r,
|
|
35
|
+
}), v = (r, n, e, t) => d(
|
|
43
36
|
e.map(
|
|
44
|
-
(
|
|
45
|
-
(l) => E(r, l,
|
|
37
|
+
(o) => o.columnOrder.map(
|
|
38
|
+
(l) => E(r, l, n, t)
|
|
46
39
|
)
|
|
47
40
|
)
|
|
48
|
-
), E = (r,
|
|
49
|
-
const
|
|
41
|
+
), E = (r, n, e, t) => {
|
|
42
|
+
const o = e.columns[n], l = t == null ? void 0 : t[n];
|
|
50
43
|
return S(
|
|
51
44
|
r,
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
o.itemValueResolver,
|
|
46
|
+
o.itemLabelFormatter,
|
|
54
47
|
l
|
|
55
48
|
);
|
|
56
|
-
}, R = (r,
|
|
57
|
-
const
|
|
58
|
-
"columnGroups" in
|
|
59
|
-
"columnGroupOrder" in
|
|
60
|
-
"columnOrder" in
|
|
61
|
-
), l = [], a =
|
|
62
|
-
return "columnGroups" in
|
|
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)), {
|
|
63
56
|
filename: r,
|
|
64
57
|
sheet: {
|
|
65
58
|
data: [
|
|
66
59
|
...l,
|
|
67
60
|
...e.map(
|
|
68
|
-
(
|
|
61
|
+
(u) => v(u, n, a, t)
|
|
69
62
|
)
|
|
70
63
|
]
|
|
71
64
|
}
|
|
72
65
|
};
|
|
73
|
-
}, k = async (r,
|
|
74
|
-
const
|
|
75
|
-
await T(
|
|
66
|
+
}, k = async (r, n, e, t) => {
|
|
67
|
+
const o = R(r, n, e, t);
|
|
68
|
+
await T(o);
|
|
76
69
|
}, Q = function({
|
|
77
|
-
config:
|
|
70
|
+
config: n,
|
|
78
71
|
size: e,
|
|
79
72
|
items: t,
|
|
80
|
-
filename:
|
|
73
|
+
filename: o = "exported-spreadsheet",
|
|
81
74
|
formatters: l
|
|
82
75
|
}) {
|
|
83
76
|
const a = b(async () => {
|
|
84
77
|
t && t.length && await k(
|
|
85
|
-
n,
|
|
86
78
|
o,
|
|
79
|
+
n,
|
|
87
80
|
t,
|
|
88
81
|
l
|
|
89
82
|
);
|
|
90
|
-
}, [
|
|
83
|
+
}, [n, t, o, l]);
|
|
91
84
|
return /* @__PURE__ */ y(
|
|
92
85
|
C,
|
|
93
86
|
{
|
|
@@ -112,87 +105,83 @@ const O = (r, o) => d(
|
|
|
112
105
|
default:
|
|
113
106
|
return;
|
|
114
107
|
}
|
|
115
|
-
}, B = (r,
|
|
116
|
-
|
|
108
|
+
}, B = (r, n) => d(
|
|
109
|
+
n.map(
|
|
117
110
|
(e) => e.columnOrder.map((t) => {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
n.justifyContentHeader
|
|
111
|
+
const o = r.columns[t];
|
|
112
|
+
if (o.justifyContentHeader) {
|
|
113
|
+
const l = g(
|
|
114
|
+
o.justifyContentHeader
|
|
123
115
|
);
|
|
124
|
-
return `<th${
|
|
116
|
+
return `<th${l ? ' style="' + l + '"' : ""}>${o.columnLabel ?? m(String(t))}</th>`;
|
|
125
117
|
}
|
|
126
|
-
return `<th>${
|
|
118
|
+
return `<th>${o.columnLabel ?? m(String(t))}</th>`;
|
|
127
119
|
})
|
|
128
120
|
)
|
|
129
121
|
), A = (r) => d(
|
|
130
|
-
r.map((
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (n)
|
|
136
|
-
return p(n(r), e);
|
|
137
|
-
const l = o(r);
|
|
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);
|
|
138
127
|
if (t) {
|
|
139
128
|
const a = t == null ? void 0 : t(l, r);
|
|
140
129
|
return p(a, e);
|
|
141
130
|
}
|
|
142
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);
|
|
143
|
-
}, p = (r,
|
|
144
|
-
if (
|
|
145
|
-
const e = g(
|
|
132
|
+
}, p = (r, n) => {
|
|
133
|
+
if (n) {
|
|
134
|
+
const e = g(n);
|
|
146
135
|
return `<td${e ? ' style="' + e + '"' : ""}>${r}</td>`;
|
|
147
136
|
}
|
|
148
137
|
return `<td>${r}</td>`;
|
|
149
|
-
}, D = (r,
|
|
138
|
+
}, D = (r, n, e, t) => d(
|
|
150
139
|
e.map(
|
|
151
|
-
(
|
|
152
|
-
(l) => I(r, l,
|
|
140
|
+
(o) => o.columnOrder.map(
|
|
141
|
+
(l) => I(r, l, n, t)
|
|
153
142
|
)
|
|
154
143
|
)
|
|
155
|
-
).join(""), I = (r,
|
|
156
|
-
const
|
|
144
|
+
).join(""), I = (r, n, e, t) => {
|
|
145
|
+
const o = e.columns[n], l = t == null ? void 0 : t[n];
|
|
157
146
|
return M(
|
|
158
147
|
r,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
148
|
+
o.itemValueResolver,
|
|
149
|
+
o.justifyContentCell,
|
|
150
|
+
o.itemLabelFormatter,
|
|
162
151
|
l
|
|
163
152
|
);
|
|
164
|
-
}, P = (r,
|
|
153
|
+
}, P = (r, n, e) => {
|
|
165
154
|
const t = h(
|
|
166
155
|
"columnGroups" in r ? r.columnGroups : void 0,
|
|
167
156
|
"columnGroupOrder" in r ? r.columnGroupOrder : void 0,
|
|
168
157
|
"columnOrder" in r ? r.columnOrder : void 0
|
|
169
|
-
),
|
|
170
|
-
"columnGroups" in r &&
|
|
171
|
-
const a = `<thead>${
|
|
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>`;
|
|
172
161
|
return `<table>${a}${i}</table>`;
|
|
173
|
-
}, V = (r,
|
|
174
|
-
async function Y(r,
|
|
175
|
-
let
|
|
176
|
-
if (r && r.length && (
|
|
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) {
|
|
177
166
|
const l = new f.ClipboardItem({
|
|
178
|
-
"text/html": new Blob([
|
|
167
|
+
"text/html": new Blob([o], { type: "text/html" })
|
|
179
168
|
});
|
|
180
169
|
await f.write([l]);
|
|
181
170
|
}
|
|
182
171
|
}
|
|
183
172
|
function U({
|
|
184
173
|
config: r,
|
|
185
|
-
renderContent:
|
|
174
|
+
renderContent: n,
|
|
186
175
|
size: e,
|
|
187
176
|
items: t,
|
|
188
|
-
formatters:
|
|
177
|
+
formatters: o,
|
|
189
178
|
label: l = "Copy to clipboard",
|
|
190
179
|
labelAfterCopy: a = "Content copied!",
|
|
191
|
-
numTimeToRevertLabel:
|
|
180
|
+
numTimeToRevertLabel: u = 2e3
|
|
192
181
|
}) {
|
|
193
|
-
const [i,
|
|
194
|
-
await Y(t, r,
|
|
195
|
-
}, [r, t,
|
|
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]);
|
|
196
185
|
return /* @__PURE__ */ y(
|
|
197
186
|
C,
|
|
198
187
|
{
|
package/dist/index.es.js.map
CHANGED
|
@@ -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\";\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\";\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,\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,\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\";\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\";\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,\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,\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","_a","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","_b","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\";\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\";\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,\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,\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\";\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\";\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,\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,\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":";;;;;;;;AAQa,MAAAA,IAAwB,CAKnCC,GACAC,MAEOC;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY,IAAI,CAACC,OAEpB;AAAA,MACL,MAAM;AAAA,MACN,OAHmBJ,EAAO,QAAQI,CAAQ,EAI3B,eACbC,EAAgC,OAAOD,CAAQ,CAAC;AAAA,IAAA,EAErD;AAAA,EACH;AAAA,GAISE,IAAwB,CACnCL,MAEOC;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY,IAAI,CAACI,GAAGC,OACvB;AAAA,MACL,MAAM;AAAA,MACN,OAAOA,MAAU,IAAIL,EAAY,SAAS,KAAK;AAAA,IAAA,EAElD;AAAA,EACH;AAAA,GCrCSM,IAAsB,CAKjCC,GACAC,GAKAC,GAOAC,MACgB;AAChB,MAAIA;AACK,WAAAC,EAAWD,EAAUH,CAAI,CAAC;AAG7B,QAAAK,IAAQJ,EAAkBD,CAAI;AAEpC,MAAIE,GAAoB;AAChB,UAAAI,IAAQJ,KAAA,gBAAAA,EAAqBG,GAAOL;AAC1C,WAAOI,EAAWE,CAAK;AAAA,EACzB;AAEA,SAAI,OAAOD,KAAU,YAAY,OAAOA,KAAU,WACzCD,EAAWC,CAAK,IAGrB,OAAOA,KAAU,YACZD,EAAWC,IAAQ,MAAM,EAAE,IAGhCA,aAAiB,OACZD,EAAWG,EAAOF,GAAO,kBAAkB,CAAC,IAGjDA,KAAS,OACJD,EAAW,EAAE,IAGfA,EAAW,OAAOC,CAAK,CAAC;AACjC,GAEMD,IAAa,CAACC,OAEX;AAAA,EACL,MAFW,OAAOA,KAAU,WAAW,WAAW;AAAA,EAGlD,OAAAA;AAAA,IClDSG,IAAoB,CAK/BR,GACAV,GACAC,GACAkB,MAEOjB;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY;AAAA,MAAiB,CAACC,MACxCgB,EAAcV,GAAMN,GAAUJ,GAAQmB,CAAU;AAAA,IAClD;AAAA,EACF;AAAA,GAISC,IAAgB,CAK3BV,GACAN,GACAJ,GACAmB,MACgB;AACV,QAAAE,IAAerB,EAAO,QAAQI,CAAQ,GACtCS,IAAYM,KAAA,gBAAAA,EAAaf;AACxB,SAAAK;AAAAA,IACLC;AAAA,IACAW,EAAa;AAAA,IACbA,EAAa;AAAA,IACbR;AAAA,EAAA;AAEJ,GClCaS,IAAsB,CAKjCC,GACAvB,GACAwB,GACAL,MACkB;AAClB,QAAMM,IAAqBC;AAAA,IACzB,kBAAkB1B,IAASA,EAAO,eAAe;AAAA,IACjD,sBAAsBA,IAASA,EAAO,mBAAmB;AAAA,IACzD,iBAAiBA,IAASA,EAAO,cAAc;AAAA,EAAA,GAG3C2B,IAAgC,CAAA,GAChC1B,IAAewB,EAAmB,IAAI,CAACG,MAAMA,EAAE,WAAW;AAEhE,SAAI,kBAAkB5B,KACT2B,EAAA,KAAKrB,EAAsBL,CAAY,CAAC,GAErD0B,EAAW,KAAK5B,EAAsBC,GAAQC,CAAY,CAAC,GAEpD;AAAA,IACL,UAAAsB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,QACJ,GAAGI;AAAA,QACH,GAAGH,EAAM;AAAA,UAAgB,CAACd,MACxBQ,EAAkBR,GAAMV,GAAQC,GAAckB,CAAU;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EAAA;AAEJ,GC1CaU,IAAgC,OAK3CN,GACAvB,GACAwB,GACAL,MACG;AACH,QAAMW,IAAcR,EAAoBC,GAAUvB,GAAQwB,GAAOL,CAAU;AAC3E,QAAMY,EAAQD,CAAW;AAC3B,GCOaE,IACX,SAIE;AAAA,EACA,QAAAhC;AAAA,EACA,MAAAiC;AAAA,EACA,OAAAT;AAAA,EACA,UAAAD,IAAW;AAAA,EACX,YAAAJ;AACF,GAA4E;AACpE,QAAAe,IAAqBC,EAAY,YAAY;AAC7C,IAAAX,KAASA,EAAM,UACX,MAAAK;AAAA,MACJN;AAAA,MACAvB;AAAA,MACAwB;AAAA,MACAL;AAAA,IAAA;AAAA,KAGH,CAACnB,GAAQwB,GAAOD,GAAUJ,CAAU,CAAC;AAGtC,SAAA,gBAAAiB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAJ;AAAA,MACA,UAAUK;AAAA,MACV,SAASJ;AAAA,MACT,UAAU,CAACV,KAAS,CAACA,EAAM;AAAA,IAAA;AAAA,EAAA;AAGjC,GCvDWe,IAAqC,CAChDC,MACuB;AACf,UAAAA,KAAA,gBAAAA,EAAgB,eAAe;AAAA,IACrC,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT;AACS;AAAA,EACX;AACF,GCTazC,IAAwB,CAKnCC,GACAC,MAEOC;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY,IAAI,CAACC,MAAa;AAClC,YAAAiB,IAAerB,EAAO,QAAQI,CAAQ;AAE5C,UAAIiB,EAAa,sBAAsB;AACrC,cAAMoB,IAAgBF;AAAA,UACpBlB,EAAa;AAAA,QAAA;AAEf,eAAO,MAAMoB,IAAgB,aAAaA,IAAgB,MAAM,EAAE,IAChEpB,EAAa,eACbhB,EAAgC,OAAOD,CAAQ,CAAC,CAClD;AAAA,MACF;AACA,aAAO,OACLiB,EAAa,eACbhB,EAAgC,OAAOD,CAAQ,CAAC,CAClD;AAAA,IAAA,CACD;AAAA,EACH;AAAA,GAISE,IAAwB,CACnCL,MAEOC;AAAA,EACLD,EAAa,IAAI,CAACE,MACT,yCACLA,EAAY,YAAY,MAC1B,KAAKA,EAAY,SAAS,EAAE,OAC7B;AAAA,GC1CQM,IAAsB,CAKjCC,GACAC,GAKA+B,GAKA9B,GAOAC,MACW;AACX,MAAIA;AACF,WAAOC,EAAWD,EAAUH,CAAI,GAAGgC,CAAkB;AAGjD,QAAA3B,IAAQJ,EAAkBD,CAAI;AAEpC,MAAIE,GAAoB;AAChB,UAAAI,IAAQJ,KAAA,gBAAAA,EAAqBG,GAAOL;AACnC,WAAAI,EAAWE,GAAO0B,CAAkB;AAAA,EAC7C;AAEA,SAAI,OAAO3B,KAAU,YAAY,OAAOA,KAAU,WACzCD,EAAWC,GAAO2B,CAAkB,IAGzC,OAAO3B,KAAU,YACZD,EAAWC,IAAQ,MAAM,IAAI2B,CAAkB,IAGpD3B,aAAiB,OACZD,EAAWG,EAAOF,GAAO,kBAAkB,GAAG2B,CAAkB,IAGrE3B,KAAS,OACJD,EAAW,IAAI4B,CAAkB,IAGnC5B,EAAW,OAAOC,CAAK,GAAG2B,CAAkB;AACrD,GAEM5B,IAAa,CACjBC,GACA2B,MACW;AACX,MAAIA,GAAoB;AAChB,UAAAD,IACJF,EAAmCG,CAAkB;AACvD,WAAO,MACLD,IAAgB,aAAaA,IAAgB,MAAM,EACrD,IAAI1B,CAAK;AAAA,EACX;AACA,SAAO,OAAOA,CAAK;AACrB,GChEaG,IAAoB,CAK/BR,GACAV,GACAC,GACAkB,MAEOjB;AAAA,EACLD,EAAa;AAAA,IAAI,CAACE,MAChBA,EAAY,YAAY;AAAA,MAAY,CAACC,MACnCgB,EAAcV,GAAMN,GAAUJ,GAAQmB,CAAU;AAAA,IAClD;AAAA,EACF;AAAA,EACA,KAAK,EAAE,GAGEC,IAAgB,CAK3BV,GACAN,GACAJ,GACAmB,MACW;AACL,QAAAE,IAAerB,EAAO,QAAQI,CAAQ,GACtCS,IAAYM,KAAA,gBAAAA,EAAaf;AACxB,SAAAK;AAAA,IACLC;AAAA,IACAW,EAAa;AAAA,IACbA,EAAa;AAAA,IACbA,EAAa;AAAA,IACbR;AAAA,EAAA;AAEJ,GCnCa8B,IAAmB,CAK9B3C,GACAwB,GACAL,MACW;AACX,QAAMM,IAAqBC;AAAA,IACzB,kBAAkB1B,IAASA,EAAO,eAAe;AAAA,IACjD,sBAAsBA,IAASA,EAAO,mBAAmB;AAAA,IACzD,iBAAiBA,IAASA,EAAO,cAAc;AAAA,EAAA,GAG3C2B,IAA4B,CAAA,GAC5B1B,IAAewB,EAAmB,IAAI,CAACG,MAAMA,EAAE,WAAW;AAEhE,EAAI,kBAAkB5B,KACpB2B,EAAW,KAAKrB,EAAsBL,CAAY,EAAE,KAAK,EAAE,CAAC,GAE9D0B,EAAW,KAAK5B,EAAsBC,GAAQC,CAAY,EAAE,KAAK,EAAE,CAAC;AACpE,QAAM2C,IAAS,UAAUjB,EACtB,IAAI,CAACkB,MAAc,OAAOA,CAAS,OAAO,EAC1C,KAAK,EAAE,CAAC,YAMLC,IAAO,UAJKtB,EACf,IAAI,CAACd,MAASQ,EAAkBR,GAAMV,GAAQC,GAAckB,CAAU,CAAC,EACvE,IAAI,CAAC4B,MAAQ,OAAOA,CAAG,OAAO,EAEA,KAAK,EAAE,CAAC;AAClC,SAAA,UAAUH,CAAM,GAAGE,CAAI;AAChC,GCvCaE,IAA6B,CAKxChD,GACAwB,GACAL,MAEOwB,EAAiB3C,GAAQwB,GAAOL,CAAU;ACRnD,eAAsB8B,EAKpBzB,GACAxB,GACAmB,GAGA+B,GACA;AACA,MAAIC,IAA4B;AAShC,MAPI3B,KAASA,EAAM,WACJ2B,IAAAH,EAA2BhD,GAAQwB,GAAOL,CAAU,IAG/D+B,MACFC,IAAaD,EAAcC,CAAU,IAEnCA,GAAY;AACR,UAAAzC,IAAO,IAAI0C,EAAU,cAAc;AAAA,MACvC,aAAa,IAAI,KAAK,CAACD,CAAU,GAAG,EAAE,MAAM,aAAa;AAAA,IAAA,CAC1D;AAED,UAAMC,EAAU,MAAM,CAAC1C,CAAI,CAAC;AAAA,EAC9B;AACF;ACVO,SAAS2C,EAId;AAAA,EACA,QAAArD;AAAA,EACA,eAAAkD;AAAA,EACA,MAAAjB;AAAA,EACA,OAAAT;AAAA,EACA,YAAAL;AAAA,EACA,OAAAH,IAAQ;AAAA,EACR,gBAAAsC,IAAiB;AAAA,EACjB,sBAAAC,IAAuB;AACzB,GAIG;AACD,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAAkB,EAAK,GAC3DC,IAAoBxB,EAAY,YAAY;AAChD,UAAMc,EAAuBzB,GAAOxB,GAAQmB,GAAY+B,CAAa,GAErEO,EAAiB,EAAI,GACrB,WAAW,MAAMA,EAAiB,EAAK,GAAGF,CAAoB;AAAA,EAAA,GAC7D,CAACvD,GAAQwB,GAAOL,GAAYoC,GAAsBL,CAAa,CAAC;AAGjE,SAAA,gBAAAd;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAJ;AAAA,MACA,SAAS0B;AAAA,MACT,UAAU,CAACnC,KAAS,CAACA,EAAM;AAAA,MAC3B,OAAOgC,IAAgBF,IAAiBtC;AAAA,IAAA;AAAA,EAAA;AAG9C;"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
(function(){"
|
|
2
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=require("react/jsx-runtime"),m=require("react"),$=require("zipcelx"),i=require("@stenajs-webui/grid"),p=require("lodash"),C=require("date-fns"),b=require("@stenajs-webui/elements"),H=require("clipboard-polyfill"),S=e=>e&&typeof e=="object"&&"default"in e?e:{default:e};function G(e){if(e&&e.__esModule)return e;const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const v=S($),y=G(H),E=(e,t)=>p.flatten(t.map(o=>o.columnOrder.map(r=>{var l;return{type:"string",value:(l=e.columns[r].columnLabel)!=null?l:i.formatColumnIdToHeaderCellLabel(String(r))}}))),_=e=>p.flatten(e.map(t=>t.columnOrder.map((o,r)=>{var n;return{type:"string",value:r===0&&(n=t.label)!=null?n:""}}))),R=(e,t,o,r)=>{if(r)return c(r(e));const n=t(e);if(o){const l=o==null?void 0:o(n,e);return c(l)}return typeof n=="number"||typeof n=="string"?c(n):typeof n=="boolean"?c(n?"Y":""):n instanceof Date?c(C.format(n,"yyyy-MM-dd HH:mm")):n==null?c(""):c(String(n))},c=e=>({type:typeof e=="number"?"number":"string",value:e}),j=(e,t,o,r)=>p.flatten(o.map(n=>n.columnOrder.map(l=>q(e,l,t,r)))),q=(e,t,o,r)=>{const n=o.columns[t],l=r==null?void 0:r[t];return R(e,n.itemValueResolver,n.itemLabelFormatter,l)},x=(e,t,o,r)=>{const n=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=n.map(u=>u.groupConfig);return"columnGroups"in t&&l.push(_(a)),l.push(E(t,a)),{filename:e,sheet:{data:[...l,...o.map(u=>j(u,t,a,r))]}}},h=async(e,t,o,r)=>{const n=x(e,t,o,r);await v.default(n)},B=function({config:t,size:o,items:r,filename:n="exported-spreadsheet",formatters:l}){const a=m.useCallback(async()=>{r&&r.length&&await h(n,t,r,l)},[t,r,n,l]);return g.jsx(b.FlatButton,{size:o,leftIcon:b.stenaDownload,onClick:a,disabled:!r||!r.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}},M=(e,t)=>p.flatten(t.map(o=>o.columnOrder.map(r=>{var l,a;const n=e.columns[r];if(n.justifyContentHeader){const u=T(n.justifyContentHeader);return`<th${u?' style="'+u+'"':""}>${(l=n.columnLabel)!=null?l:i.formatColumnIdToHeaderCellLabel(String(r))}</th>`}return`<th>${(a=n.columnLabel)!=null?a:i.formatColumnIdToHeaderCellLabel(String(r))}</th>`}))),k=e=>p.flatten(e.map(t=>{var o;return`<th style="text-align: left" colspan="${t.columnOrder.length}">${(o=t.label)!=null?o:""}</th>`})),I=(e,t,o,r,n)=>{if(n)return d(n(e),o);const l=t(e);if(r){const a=r==null?void 0:r(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(C.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>`},A=(e,t,o,r)=>p.flatten(o.map(n=>n.columnOrder.map(l=>D(e,l,t,r)))).join(""),D=(e,t,o,r)=>{const n=o.columns[t],l=r==null?void 0:r[t];return I(e,n.itemValueResolver,n.justifyContentCell,n.itemLabelFormatter,l)},w=(e,t,o)=>{const r=i.createGroupConfigAndIdsForRows("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0),n=[],l=r.map(s=>s.groupConfig);"columnGroups"in e&&n.push(k(l).join("")),n.push(M(e,l).join(""));const a=`<thead>${n.map(s=>`<tr>${s}</tr>`).join("")}</thead>`,f=`<tbody>${t.map(s=>A(s,e,l,o)).map(s=>`<tr>${s}</tr>`).join("")}</tbody>`;return`<table>${a}${f}</table>`},P=(e,t,o)=>w(e,t,o);async function z(e,t,o,r){let n="";if(e&&e.length&&(n=P(t,e,o)),r&&(n=r(n)),n){const l=new y.ClipboardItem({"text/html":new Blob([n],{type:"text/html"})});await y.write([l])}}function V({config:e,renderContent:t,size:o,items:r,formatters:n,label:l="Copy to clipboard",labelAfterCopy:a="Content copied!",numTimeToRevertLabel:u=2e3}){const[f,s]=m.useState(!1),O=m.useCallback(async()=>{await z(r,e,n,t),s(!0),setTimeout(()=>s(!1),u)},[e,r,n,u,t]);return g.jsx(b.FlatButton,{size:o,onClick:O,disabled:!r||!r.length,label:f?a:l})}exports.StandardTableExcelExportButton=B;exports.StandardTableHtmlCopyToClipboardButton=V;exports.createHtmlConfig=w;exports.createZipcelxConfig=x;exports.downloadExcelForStandardTable=h;
|
|
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"),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;
|
|
3
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\";\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\";\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,\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,\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\";\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\";\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,\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,\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","_a","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","_b","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\";\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\";\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,\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,\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\";\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\";\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,\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,\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,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stenajs-webui/grid-export",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "",
|
|
5
6
|
"author": "mattias800",
|
|
6
7
|
"license": "MIT",
|
|
@@ -12,6 +13,11 @@
|
|
|
12
13
|
"types": "dist/index.d.ts",
|
|
13
14
|
"module": "dist/index.es.js",
|
|
14
15
|
"jsnext:main": "dist/index.es.js",
|
|
16
|
+
"exports": {
|
|
17
|
+
"require": "dist/index.js",
|
|
18
|
+
"import": "dist/index.es.js",
|
|
19
|
+
"types": "dist/index.d.ts"
|
|
20
|
+
},
|
|
15
21
|
"sideEffects": false,
|
|
16
22
|
"engines": {
|
|
17
23
|
"node": ">=8",
|
|
@@ -20,6 +26,7 @@
|
|
|
20
26
|
"scripts": {
|
|
21
27
|
"build": "yarn tsc -p tsconfig.build.json && yarn vite build",
|
|
22
28
|
"start": "yarn tsc -p tsconfig.build.json && yarn vite build --watch",
|
|
29
|
+
"test": "vitest run",
|
|
23
30
|
"clean": "rimraf dist",
|
|
24
31
|
"prepare": "yarn clean && yarn run build",
|
|
25
32
|
"predeploy": "cd example && yarn install && yarn run build",
|
|
@@ -27,9 +34,9 @@
|
|
|
27
34
|
},
|
|
28
35
|
"dependencies": {
|
|
29
36
|
"@fortawesome/free-solid-svg-icons": ">=5.15.3",
|
|
30
|
-
"@stenajs-webui/core": "
|
|
31
|
-
"@stenajs-webui/elements": "
|
|
32
|
-
"@stenajs-webui/grid": "
|
|
37
|
+
"@stenajs-webui/core": "20.0.0",
|
|
38
|
+
"@stenajs-webui/elements": "20.0.0",
|
|
39
|
+
"@stenajs-webui/grid": "20.0.0",
|
|
33
40
|
"@types/zipcelx": "^1.5.0",
|
|
34
41
|
"clipboard-polyfill": "^3.0.2",
|
|
35
42
|
"date-fns": "2.26.0",
|
|
@@ -55,5 +62,5 @@
|
|
|
55
62
|
"files": [
|
|
56
63
|
"dist"
|
|
57
64
|
],
|
|
58
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "44209c859186d3264a3bd136fac61c622b51d01d"
|
|
59
66
|
}
|