UNPKG

@flatbiz/antd

Version:
83 lines (79 loc) 2.78 kB
/*! @flatjs/forge MIT @flatbiz/antd */ import { b as _objectSpread2 } from './_rollupPluginBabelHelpers-BYm17lo8.js'; import { Fragment, isValidElement } from 'react'; import { message } from 'antd'; import { jsx } from 'react/jsx-runtime'; /** * 文件导出 * ``` * demo:https://fex.qa.tcshuke.com/docs/admin/main/widget?key=file-export * 例如: <FileExport action={<Button>下载</Button>} onRequest={() => { return serviceHandle.fileExport('/export/file', {}); }} onExportNext={() => { message.success('导出成功...'); }} /> * ``` */ var FileExport = function FileExport(props) { var Action = props.action; var handleOnClick = function handleOnClick() { return new Promise(function ($return, $error) { var _props$onExportPre, _props$onExportNext, respData, link, url; var $Try_1_Post = function () { try { return $return(); } catch ($boundEx) { return $error($boundEx); } }; var $Try_1_Catch = function (error) { try { if (props.onExportError) { props.onExportError(error); } else { message.error((error === null || error === void 0 ? void 0 : error.message) || '文件导出失败...'); } return $Try_1_Post(); } catch ($boundEx) { return $error($boundEx); } }; try { (_props$onExportPre = props.onExportPre) === null || _props$onExportPre === void 0 || _props$onExportPre.call(props); return Promise.resolve(props.onRequest()).then(function ($await_2) { try { respData = $await_2; link = document.createElement('a'); url = window.URL.createObjectURL(respData.data); link.style.display = 'none'; link.href = url; link.setAttribute('download', respData.fileName); document.body.appendChild(link); link.click(); document.body.removeChild(link); (_props$onExportNext = props.onExportNext) === null || _props$onExportNext === void 0 || _props$onExportNext.call(props); return $Try_1_Post(); } catch ($boundEx) { return $Try_1_Catch($boundEx); } }, $Try_1_Catch); } catch (error) { $Try_1_Catch(error); } }); }; return /*#__PURE__*/jsx(Fragment, { children: /*#__PURE__*/isValidElement(Action) ? /*#__PURE__*/jsx(Action.type, _objectSpread2(_objectSpread2({}, Action.props), {}, { onClick: handleOnClick })) : Action === null || Action === void 0 ? void 0 : Action({ onClick: handleOnClick }) }); }; export { FileExport as F }; //# sourceMappingURL=file-export-BodnBdBJ.js.map