@rtdui/datatable
Version:
React DataTable component based on Rtdui components
30 lines (26 loc) • 1.46 kB
JavaScript
'use client';
;
var jsxRuntime = require('react/jsx-runtime');
var React = require('react');
var xlsx = require('xlsx');
var iconsReact = require('@tabler/icons-react');
var core = require('@rtdui/core');
function ExportTable(props) {
const { table, tableRef } = props;
const exportXLSX = React.useCallback(async () => {
const tableEle = tableRef.current;
const clonedTableEle = tableEle.cloneNode(true);
const dropdownEles = clonedTableEle.querySelectorAll(".dropdown ");
Array.prototype.forEach.call(dropdownEles, (el, i) => {
el.innerHTML = "";
});
const wb = xlsx.utils.table_to_book(clonedTableEle);
xlsx.writeFileXLSX(wb, "\u8868\u683C\u5BFC\u51FA.xlsx");
}, [tableRef]);
return /* @__PURE__ */ jsxRuntime.jsxs(core.Popover, { position: "bottom", children: [
/* @__PURE__ */ jsxRuntime.jsx(core.Popover.Target, { children: /* @__PURE__ */ jsxRuntime.jsx(core.Button, { size: "sm", ghost: true, shape: "circle", children: /* @__PURE__ */ jsxRuntime.jsx(iconsReact.IconDownload, {}) }) }),
/* @__PURE__ */ jsxRuntime.jsx(core.Popover.Dropdown, { children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "menu p-2", children: /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx("a", { className: "w-full", onClick: exportXLSX, children: "\u5BFC\u51FA\u4E3AExcel" }) }) }) })
] });
}
exports.ExportTable = ExportTable;
//# sourceMappingURL=ExportTable.cjs.map