@flatbiz/antd
Version:
83 lines (79 loc) • 2.78 kB
JavaScript
/*! @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