@stenajs-webui/grid-export 17.6.0 → 17.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/common/CellFormatters.d.ts +2 -2
  3. package/dist/features/grid-copy-to-clipboard/components/StandardTableHtmlCopyToClipboardButton.d.ts +12 -12
  4. package/dist/features/grid-copy-to-clipboard/transformers/AlignmentTransformer.d.ts +1 -1
  5. package/dist/features/grid-copy-to-clipboard/transformers/CellTransformer.d.ts +3 -3
  6. package/dist/features/grid-copy-to-clipboard/transformers/ConfigTransformer.d.ts +3 -3
  7. package/dist/features/grid-copy-to-clipboard/transformers/HeaderTransformer.d.ts +3 -3
  8. package/dist/features/grid-copy-to-clipboard/transformers/RowTransformer.d.ts +4 -4
  9. package/dist/features/grid-copy-to-clipboard/transformers/__mocks__/CopyToClipboardTestData.d.ts +12 -12
  10. package/dist/features/grid-copy-to-clipboard/util/CopyContentToClipboard.d.ts +3 -3
  11. package/dist/features/grid-copy-to-clipboard/util/HtmlRenderer.d.ts +3 -3
  12. package/dist/features/grid-excel-export/components/StandardTableExcelExportButton.d.ts +10 -10
  13. package/dist/features/grid-excel-export/transformers/CellTransformer.d.ts +4 -4
  14. package/dist/features/grid-excel-export/transformers/ConfigTransformer.d.ts +4 -4
  15. package/dist/features/grid-excel-export/transformers/HeaderTransformer.d.ts +5 -5
  16. package/dist/features/grid-excel-export/transformers/RowTransformer.d.ts +5 -5
  17. package/dist/features/grid-excel-export/transformers/__mocks__/ExcelExportTestData.d.ts +12 -12
  18. package/dist/features/grid-excel-export/util/ExcelDownloader.d.ts +3 -3
  19. package/dist/index.d.ts +6 -6
  20. package/dist/index.es.js +219 -328
  21. package/dist/index.es.js.map +1 -1
  22. package/dist/index.js +1 -373
  23. package/dist/index.js.map +1 -1
  24. package/package.json +8 -9
  25. package/dist/features/grid-copy-to-clipboard/stories/StandardTableWithClipboardCopyButton.stories.d.ts +0 -11
  26. package/dist/features/grid-copy-to-clipboard/transformers/__tests__/CellTransformer.test.d.ts +0 -1
  27. package/dist/features/grid-copy-to-clipboard/transformers/__tests__/ConfigTransformer.test.d.ts +0 -1
  28. package/dist/features/grid-copy-to-clipboard/transformers/__tests__/HeaderTransformer.test.d.ts +0 -1
  29. package/dist/features/grid-copy-to-clipboard/transformers/__tests__/RowTransformer.test.d.ts +0 -1
  30. package/dist/features/grid-excel-export/stories/StandardTableWithExport.stories.d.ts +0 -9
  31. package/dist/features/grid-excel-export/transformers/__tests__/CellTransformer.test.d.ts +0 -1
  32. package/dist/features/grid-excel-export/transformers/__tests__/ConfigTransformer.test.d.ts +0 -1
  33. package/dist/features/grid-excel-export/transformers/__tests__/HeaderTransformer.test.d.ts +0 -1
  34. package/dist/features/grid-excel-export/transformers/__tests__/RowTransformer.test.d.ts +0 -1
@@ -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 { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { faFileDownload } from \"@fortawesome/free-solid-svg-icons/faFileDownload\";\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={faFileDownload}\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/dist/features/standard-table/config/StandardTableConfig\";\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","transformGroupHeaders","transformItemToCell","createCell","transformTableRow","transformCell"],"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 { FlatButton, FlatButtonProps } from \"@stenajs-webui/elements\";\nimport { faFileDownload } from \"@fortawesome/free-solid-svg-icons/faFileDownload\";\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={faFileDownload}\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/dist/features/standard-table/config/StandardTableConfig\";\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","transformGroupHeaders","transformItemToCell","createCell","transformTableRow","transformCell","StandardTableExcelExportButton","config","size","items","filename","formatters","onClickExportExcel","useCallback","length","downloadExcelForStandardTable","faFileDownload","renderContent","label","labelAfterCopy","numTimeToRevertLabel","contentCopied","setContentCopied","useState","onClickExportHtml","copyContentToClipboard","setTimeout"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,374 +1,2 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var zipcelx = require('zipcelx');
7
- var grid = require('@stenajs-webui/grid');
8
- var lodash = require('lodash');
9
- var dateFns = require('date-fns');
10
- var elements = require('@stenajs-webui/elements');
11
- var faFileDownload = require('@fortawesome/free-solid-svg-icons/faFileDownload');
12
- var clipboard = require('clipboard-polyfill');
13
-
14
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
-
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n["default"] = e;
31
- return Object.freeze(n);
32
- }
33
-
34
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
35
- var zipcelx__default = /*#__PURE__*/_interopDefaultLegacy(zipcelx);
36
- var clipboard__namespace = /*#__PURE__*/_interopNamespace(clipboard);
37
-
38
- /*! *****************************************************************************
39
- Copyright (c) Microsoft Corporation.
40
-
41
- Permission to use, copy, modify, and/or distribute this software for any
42
- purpose with or without fee is hereby granted.
43
-
44
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
45
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
46
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
47
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
48
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
49
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
50
- PERFORMANCE OF THIS SOFTWARE.
51
- ***************************************************************************** */
52
-
53
- function __awaiter(thisArg, _arguments, P, generator) {
54
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
55
- return new (P || (P = Promise))(function (resolve, reject) {
56
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
57
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
58
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
59
- step((generator = generator.apply(thisArg, _arguments || [])).next());
60
- });
61
- }
62
-
63
- function __generator(thisArg, body) {
64
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
65
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
66
- function verb(n) { return function (v) { return step([n, v]); }; }
67
- function step(op) {
68
- if (f) throw new TypeError("Generator is already executing.");
69
- while (_) try {
70
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
71
- if (y = 0, t) op = [op[0] & 2, t.value];
72
- switch (op[0]) {
73
- case 0: case 1: t = op; break;
74
- case 4: _.label++; return { value: op[1], done: false };
75
- case 5: _.label++; y = op[1]; op = [0]; continue;
76
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
77
- default:
78
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
79
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
80
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
81
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
82
- if (t[2]) _.ops.pop();
83
- _.trys.pop(); continue;
84
- }
85
- op = body.call(thisArg, _);
86
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
87
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
88
- }
89
- }
90
-
91
- function __spreadArray(to, from, pack) {
92
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
93
- if (ar || !(i in from)) {
94
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
95
- ar[i] = from[i];
96
- }
97
- }
98
- return to.concat(ar || Array.prototype.slice.call(from));
99
- }
100
-
101
- var transformTableHeaders$1 = function (config, groupConfigs) {
102
- return lodash.flatten(groupConfigs.map(function (groupConfig) {
103
- return groupConfig.columnOrder.map(function (columnId) {
104
- var _a;
105
- var columnConfig = config.columns[columnId];
106
- return {
107
- type: "string",
108
- value: (_a = columnConfig.columnLabel) !== null && _a !== void 0 ? _a : grid.formatColumnIdToHeaderCellLabel(String(columnId)),
109
- };
110
- });
111
- }));
112
- };
113
- var transformGroupHeaders$1 = function (groupConfigs) {
114
- return lodash.flatten(groupConfigs.map(function (groupConfig) {
115
- return groupConfig.columnOrder.map(function (_, index) {
116
- var _a;
117
- return {
118
- type: "string",
119
- value: index === 0 ? (_a = groupConfig.label) !== null && _a !== void 0 ? _a : "" : "",
120
- };
121
- });
122
- }));
123
- };
124
-
125
- var transformItemToCell$1 = function (item, itemValueResolver, itemLabelFormatter, formatter) {
126
- if (formatter) {
127
- return createCell$1(formatter(item));
128
- }
129
- var value = itemValueResolver(item);
130
- if (itemLabelFormatter) {
131
- var label = itemLabelFormatter === null || itemLabelFormatter === void 0 ? void 0 : itemLabelFormatter(value, item);
132
- return createCell$1(label);
133
- }
134
- if (typeof value === "number" || typeof value === "string") {
135
- return createCell$1(value);
136
- }
137
- if (typeof value === "boolean") {
138
- return createCell$1(value ? "Y" : "");
139
- }
140
- if (value instanceof Date) {
141
- return createCell$1(dateFns.format(value, "yyyy-MM-dd HH:mm"));
142
- }
143
- if (value == null) {
144
- return createCell$1("");
145
- }
146
- return createCell$1(String(value));
147
- };
148
- var createCell$1 = function (value) {
149
- var type = typeof value === "number" ? "number" : "string";
150
- return {
151
- type: type,
152
- value: value,
153
- };
154
- };
155
-
156
- var transformTableRow$1 = function (item, config, groupConfigs, formatters) {
157
- return lodash.flatten(groupConfigs.map(function (groupConfig) {
158
- return groupConfig.columnOrder.map(function (columnId) {
159
- return transformCell$1(item, columnId, config, formatters);
160
- });
161
- }));
162
- };
163
- var transformCell$1 = function (item, columnId, config, formatters) {
164
- var columnConfig = config.columns[columnId];
165
- var formatter = formatters === null || formatters === void 0 ? void 0 : formatters[columnId];
166
- return transformItemToCell$1(item, columnConfig.itemValueResolver, columnConfig.itemLabelFormatter, formatter);
167
- };
168
-
169
- var createZipcelxConfig = function (filename, config, items, formatters) {
170
- var groupConfigsAndIds = grid.createGroupConfigAndIdsForRows("columnGroups" in config ? config.columnGroups : undefined, "columnGroupOrder" in config ? config.columnGroupOrder : undefined, "columnOrder" in config ? config.columnOrder : undefined);
171
- var headerRows = [];
172
- var groupConfigs = groupConfigsAndIds.map(function (p) { return p.groupConfig; });
173
- if ("columnGroups" in config) {
174
- headerRows.push(transformGroupHeaders$1(groupConfigs));
175
- }
176
- headerRows.push(transformTableHeaders$1(config, groupConfigs));
177
- return {
178
- filename: filename,
179
- sheet: {
180
- data: __spreadArray(__spreadArray([], headerRows, true), items.map(function (item) {
181
- return transformTableRow$1(item, config, groupConfigs, formatters);
182
- }), true),
183
- },
184
- };
185
- };
186
-
187
- var downloadExcelForStandardTable = function (filename, config, items, formatters) { return __awaiter(void 0, void 0, void 0, function () {
188
- var excelConfig;
189
- return __generator(this, function (_a) {
190
- switch (_a.label) {
191
- case 0:
192
- excelConfig = createZipcelxConfig(filename, config, items, formatters);
193
- return [4 /*yield*/, zipcelx__default["default"](excelConfig)];
194
- case 1:
195
- _a.sent();
196
- return [2 /*return*/];
197
- }
198
- });
199
- }); };
200
-
201
- var StandardTableExcelExportButton = function StandardTableExcelExportButton(_a) {
202
- var _this = this;
203
- var config = _a.config, size = _a.size, items = _a.items, _b = _a.filename, filename = _b === void 0 ? "exported-spreadsheet" : _b, formatters = _a.formatters;
204
- var onClickExportExcel = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
205
- return __generator(this, function (_a) {
206
- switch (_a.label) {
207
- case 0:
208
- if (!(items && items.length)) return [3 /*break*/, 2];
209
- return [4 /*yield*/, downloadExcelForStandardTable(filename, config, items, formatters)];
210
- case 1:
211
- _a.sent();
212
- _a.label = 2;
213
- case 2: return [2 /*return*/];
214
- }
215
- });
216
- }); }, [config, items, filename, formatters]);
217
- return (React__namespace.createElement(elements.FlatButton, { size: size, leftIcon: faFileDownload.faFileDownload, onClick: onClickExportExcel, disabled: !items || !items.length }));
218
- };
219
-
220
- var transformJustifyContentToTextAlign = function (justifyContent) {
221
- switch (justifyContent === null || justifyContent === void 0 ? void 0 : justifyContent.toLowerCase()) {
222
- case "left":
223
- case "start":
224
- case "flex-start":
225
- return "text-align: left";
226
- case "right":
227
- case "end":
228
- case "flex-end":
229
- return "text-align: right";
230
- case "center":
231
- return "text-align: center";
232
- default:
233
- return undefined;
234
- }
235
- };
236
-
237
- var transformTableHeaders = function (config, groupConfigs) {
238
- return lodash.flatten(groupConfigs.map(function (groupConfig) {
239
- return groupConfig.columnOrder.map(function (columnId) {
240
- var _a, _b;
241
- var columnConfig = config.columns[columnId];
242
- if (columnConfig.justifyContentHeader) {
243
- var styleProperty = transformJustifyContentToTextAlign(columnConfig.justifyContentHeader);
244
- return "<th".concat(styleProperty ? ' style="' + styleProperty + '"' : "", ">").concat((_a = columnConfig.columnLabel) !== null && _a !== void 0 ? _a : grid.formatColumnIdToHeaderCellLabel(String(columnId)), "</th>");
245
- }
246
- return "<th>".concat((_b = columnConfig.columnLabel) !== null && _b !== void 0 ? _b : grid.formatColumnIdToHeaderCellLabel(String(columnId)), "</th>");
247
- });
248
- }));
249
- };
250
- var transformGroupHeaders = function (groupConfigs) {
251
- return lodash.flatten(groupConfigs.map(function (groupConfig) {
252
- var _a;
253
- return "<th style=\"text-align: left\" colspan=\"".concat(groupConfig.columnOrder.length, "\">").concat((_a = groupConfig.label) !== null && _a !== void 0 ? _a : "", "</th>");
254
- }));
255
- };
256
-
257
- var transformItemToCell = function (item, itemValueResolver, justifyContentCell, itemLabelFormatter, formatter) {
258
- if (formatter) {
259
- return createCell(formatter(item), justifyContentCell);
260
- }
261
- var value = itemValueResolver(item);
262
- if (itemLabelFormatter) {
263
- var label = itemLabelFormatter === null || itemLabelFormatter === void 0 ? void 0 : itemLabelFormatter(value, item);
264
- return createCell(label, justifyContentCell);
265
- }
266
- if (typeof value === "number" || typeof value === "string") {
267
- return createCell(value, justifyContentCell);
268
- }
269
- if (typeof value === "boolean") {
270
- return createCell(value ? "Y" : "", justifyContentCell);
271
- }
272
- if (value instanceof Date) {
273
- return createCell(dateFns.format(value, "yyyy-MM-dd HH:mm"), justifyContentCell);
274
- }
275
- if (value == null) {
276
- return createCell("", justifyContentCell);
277
- }
278
- return createCell(String(value), justifyContentCell);
279
- };
280
- var createCell = function (value, justifyContentCell) {
281
- if (justifyContentCell) {
282
- var styleProperty = transformJustifyContentToTextAlign(justifyContentCell);
283
- return "<td".concat(styleProperty ? ' style="' + styleProperty + '"' : "", ">").concat(value, "</td>");
284
- }
285
- return "<td>".concat(value, "</td>");
286
- };
287
-
288
- var transformTableRow = function (item, config, groupConfigs, formatters) {
289
- return lodash.flatten(groupConfigs.map(function (groupConfig) {
290
- return groupConfig.columnOrder.map(function (columnId) {
291
- return transformCell(item, columnId, config, formatters);
292
- });
293
- })).join("");
294
- };
295
- var transformCell = function (item, columnId, config, formatters) {
296
- var columnConfig = config.columns[columnId];
297
- var formatter = formatters === null || formatters === void 0 ? void 0 : formatters[columnId];
298
- return transformItemToCell(item, columnConfig.itemValueResolver, columnConfig.justifyContentCell, columnConfig.itemLabelFormatter, formatter);
299
- };
300
-
301
- var createHtmlConfig = function (config, items, formatters) {
302
- var groupConfigsAndIds = grid.createGroupConfigAndIdsForRows("columnGroups" in config ? config.columnGroups : undefined, "columnGroupOrder" in config ? config.columnGroupOrder : undefined, "columnOrder" in config ? config.columnOrder : undefined);
303
- var headerRows = [];
304
- var groupConfigs = groupConfigsAndIds.map(function (p) { return p.groupConfig; });
305
- if ("columnGroups" in config) {
306
- headerRows.push(transformGroupHeaders(groupConfigs).join(""));
307
- }
308
- headerRows.push(transformTableHeaders(config, groupConfigs).join(""));
309
- var header = "<thead>".concat(headerRows
310
- .map(function (headerRow) { return "<tr>".concat(headerRow, "</tr>"); })
311
- .join(""), "</thead>");
312
- var tbodyRows = items
313
- .map(function (item) { return transformTableRow(item, config, groupConfigs, formatters); })
314
- .map(function (row) { return "<tr>".concat(row, "</tr>"); });
315
- var body = "<tbody>".concat(tbodyRows.join(""), "</tbody>");
316
- return "<table>".concat(header).concat(body, "</table>");
317
- };
318
-
319
- var renderHtmlForStandardTable = function (config, items, formatters) {
320
- return createHtmlConfig(config, items, formatters);
321
- };
322
-
323
- function copyContentToClipboard(items, config, formatters, renderContent) {
324
- return __awaiter(this, void 0, void 0, function () {
325
- var htmlToCopy, item;
326
- return __generator(this, function (_a) {
327
- switch (_a.label) {
328
- case 0:
329
- htmlToCopy = "";
330
- if (items && items.length) {
331
- htmlToCopy = renderHtmlForStandardTable(config, items, formatters);
332
- }
333
- if (renderContent) {
334
- htmlToCopy = renderContent(htmlToCopy);
335
- }
336
- if (!htmlToCopy) return [3 /*break*/, 2];
337
- item = new clipboard__namespace.ClipboardItem({
338
- "text/html": new Blob([htmlToCopy], { type: "text/html" }),
339
- });
340
- return [4 /*yield*/, clipboard__namespace.write([item])];
341
- case 1:
342
- _a.sent();
343
- _a.label = 2;
344
- case 2: return [2 /*return*/];
345
- }
346
- });
347
- });
348
- }
349
-
350
- function StandardTableHtmlCopyToClipboardButton(_a) {
351
- var _this = this;
352
- var config = _a.config, renderContent = _a.renderContent, size = _a.size, items = _a.items, formatters = _a.formatters, _b = _a.label, label = _b === void 0 ? "Copy to clipboard" : _b, _c = _a.labelAfterCopy, labelAfterCopy = _c === void 0 ? "Content copied!" : _c, _d = _a.numTimeToRevertLabel, numTimeToRevertLabel = _d === void 0 ? 2000 : _d;
353
- var _e = React.useState(false), contentCopied = _e[0], setContentCopied = _e[1];
354
- var onClickExportHtml = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
355
- return __generator(this, function (_a) {
356
- switch (_a.label) {
357
- case 0: return [4 /*yield*/, copyContentToClipboard(items, config, formatters, renderContent)];
358
- case 1:
359
- _a.sent();
360
- setContentCopied(true);
361
- setTimeout(function () { return setContentCopied(false); }, numTimeToRevertLabel);
362
- return [2 /*return*/];
363
- }
364
- });
365
- }); }, [config, items, formatters, numTimeToRevertLabel, renderContent]);
366
- return (React__namespace.createElement(elements.FlatButton, { size: size, onClick: onClickExportHtml, disabled: !items || !items.length, label: contentCopied ? labelAfterCopy : label }));
367
- }
368
-
369
- exports.StandardTableExcelExportButton = StandardTableExcelExportButton;
370
- exports.StandardTableHtmlCopyToClipboardButton = StandardTableHtmlCopyToClipboardButton;
371
- exports.createHtmlConfig = createHtmlConfig;
372
- exports.createZipcelxConfig = createZipcelxConfig;
373
- exports.downloadExcelForStandardTable = downloadExcelForStandardTable;
1
+ (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode("")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var m=require("react"),O=require("zipcelx"),p=require("@stenajs-webui/grid"),i=require("lodash"),y=require("date-fns"),g=require("@stenajs-webui/elements"),$=require("@fortawesome/free-solid-svg-icons/faFileDownload"),C=require("react/jsx-runtime"),H=require("clipboard-polyfill");function S(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}function G(e){if(e&&e.__esModule)return e;var r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});return e&&Object.keys(e).forEach(function(o){if(o!=="default"){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(r,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}}),r.default=e,Object.freeze(r)}var E=S(O),b=G(H);const _=(e,r)=>i.flatten(r.map(o=>o.columnOrder.map(n=>{var a;const t=e.columns[n];return{type:"string",value:(a=t.columnLabel)!=null?a:p.formatColumnIdToHeaderCellLabel(String(n))}}))),j=e=>i.flatten(e.map(r=>r.columnOrder.map((o,n)=>{var t;return{type:"string",value:n===0&&(t=r.label)!=null?t:""}}))),R=(e,r,o,n)=>{if(n)return c(n(e));const t=r(e);if(o){const a=o==null?void 0:o(t,e);return c(a)}return typeof t=="number"||typeof t=="string"?c(t):typeof t=="boolean"?c(t?"Y":""):t instanceof Date?c(y.format(t,"yyyy-MM-dd HH:mm")):t==null?c(""):c(String(t))},c=e=>({type:typeof e=="number"?"number":"string",value:e}),q=(e,r,o,n)=>i.flatten(o.map(t=>t.columnOrder.map(a=>B(e,a,r,n)))),B=(e,r,o,n)=>{const t=o.columns[r],a=n==null?void 0:n[r];return R(e,t.itemValueResolver,t.itemLabelFormatter,a)},h=(e,r,o,n)=>{const t=p.createGroupConfigAndIdsForRows("columnGroups"in r?r.columnGroups:void 0,"columnGroupOrder"in r?r.columnGroupOrder:void 0,"columnOrder"in r?r.columnOrder:void 0),a=[],l=t.map(u=>u.groupConfig);return"columnGroups"in r&&a.push(j(l)),a.push(_(r,l)),{filename:e,sheet:{data:[...a,...o.map(u=>q(u,r,l,n))]}}},x=async(e,r,o,n)=>{const t=h(e,r,o,n);await E.default(t)},M=function({config:r,size:o,items:n,filename:t="exported-spreadsheet",formatters:a}){const l=m.useCallback(async()=>{n&&n.length&&await x(t,r,n,a)},[r,n,t,a]);return C.jsx(g.FlatButton,{size:o,leftIcon:$.faFileDownload,onClick:l,disabled:!n||!n.length})},v=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}},D=(e,r)=>i.flatten(r.map(o=>o.columnOrder.map(n=>{var a,l;const t=e.columns[n];if(t.justifyContentHeader){const u=v(t.justifyContentHeader);return`<th${u?' style="'+u+'"':""}>${(a=t.columnLabel)!=null?a:p.formatColumnIdToHeaderCellLabel(String(n))}</th>`}return`<th>${(l=t.columnLabel)!=null?l:p.formatColumnIdToHeaderCellLabel(String(n))}</th>`}))),I=e=>i.flatten(e.map(r=>{var o;return`<th style="text-align: left" colspan="${r.columnOrder.length}">${(o=r.label)!=null?o:""}</th>`})),A=(e,r,o,n,t)=>{if(t)return d(t(e),o);const a=r(e);if(n){const l=n==null?void 0:n(a,e);return d(l,o)}return typeof a=="number"||typeof a=="string"?d(a,o):typeof a=="boolean"?d(a?"Y":"",o):a instanceof Date?d(y.format(a,"yyyy-MM-dd HH:mm"),o):a==null?d("",o):d(String(a),o)},d=(e,r)=>{if(r){const o=v(r);return`<td${o?' style="'+o+'"':""}>${e}</td>`}return`<td>${e}</td>`},P=(e,r,o,n)=>i.flatten(o.map(t=>t.columnOrder.map(a=>k(e,a,r,n)))).join(""),k=(e,r,o,n)=>{const t=o.columns[r],a=n==null?void 0:n[r];return A(e,t.itemValueResolver,t.justifyContentCell,t.itemLabelFormatter,a)},w=(e,r,o)=>{const n=p.createGroupConfigAndIdsForRows("columnGroups"in e?e.columnGroups:void 0,"columnGroupOrder"in e?e.columnGroupOrder:void 0,"columnOrder"in e?e.columnOrder:void 0),t=[],a=n.map(s=>s.groupConfig);"columnGroups"in e&&t.push(I(a).join("")),t.push(D(e,a).join(""));const l=`<thead>${t.map(s=>`<tr>${s}</tr>`).join("")}</thead>`,f=`<tbody>${r.map(s=>P(s,e,a,o)).map(s=>`<tr>${s}</tr>`).join("")}</tbody>`;return`<table>${l}${f}</table>`},z=(e,r,o)=>w(e,r,o);async function F(e,r,o,n){let t="";if(e&&e.length&&(t=z(r,e,o)),n&&(t=n(t)),t){const a=new b.ClipboardItem({"text/html":new Blob([t],{type:"text/html"})});await b.write([a])}}function V({config:e,renderContent:r,size:o,items:n,formatters:t,label:a="Copy to clipboard",labelAfterCopy:l="Content copied!",numTimeToRevertLabel:u=2e3}){const[f,s]=m.useState(!1),T=m.useCallback(async()=>{await F(n,e,t,r),s(!0),setTimeout(()=>s(!1),u)},[e,n,t,u,r]);return C.jsx(g.FlatButton,{size:o,onClick:T,disabled:!n||!n.length,label:f?l:a})}exports.StandardTableExcelExportButton=M;exports.StandardTableHtmlCopyToClipboardButton=V;exports.createHtmlConfig=w;exports.createZipcelxConfig=h;exports.downloadExcelForStandardTable=x;
374
2
  //# sourceMappingURL=index.js.map