@progress/kendo-react-excel-export
Version:
React Excel export helps you export and save data to Excel files and customize or filter the output. KendoReact Excel Export package
9 lines (8 loc) • 3.28 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),r=require("prop-types"),y=require("@progress/kendo-file-saver"),p=require("./ooxml/workbook.js"),l=require("@progress/kendo-react-common"),h=require("./package-metadata.js");function m(i){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(i){for(const t in i)if(t!=="default"){const e=Object.getOwnPropertyDescriptor(i,t);Object.defineProperty(s,t,e.get?e:{enumerable:!0,get:()=>i[t]})}}return s.default=i,Object.freeze(s)}const a=m(g),n=class n extends a.Component{constructor(s){super(s),this.showLicenseWatermark=!1,this.saveFile=t=>{y.saveAs(t,this.props.fileName,{forceProxy:this.props.forceProxy,proxyURL:this.props.proxyURL})},this.extractColumns=(t,e=0)=>Array.isArray(t)?t.map(o=>this.extractChild(o,e)):[t,this.extractChild(t,e)],this.extractChild=(t,e=0)=>a.isValidElement(t)?{...t.props,width:t.props.width&&parseInt(`${t.props.width}`,10),level:e,children:t.props.children&&this.extractColumns(t.props.children,e+1)}:{...t,level:e,children:t.children&&this.extractColumns(t.children,e+1)},this.getExportData=t=>{let e;return t?Array.isArray(t)?e={data:t}:e=t:e={data:this.props.data,group:this.props.group},e},this.showLicenseWatermark=!l.validatePackage(h.packageMetadata,{component:"ExcelExport"}),this.licenseMessage=l.getLicenseMessage(h.packageMetadata),this.save=this.save.bind(this),this.toDataURL=this.toDataURL.bind(this),this.workbookOptions=this.workbookOptions.bind(this)}save(s,t){this.toDataURL(s,t).then((...e)=>{this.props.onExportComplete&&this.props.onExportComplete.call(void 0,{target:this}),this.saveFile(...e)})}toDataURL(s,t){const e=p.isWorkbookOptions(s)?s:this.workbookOptions(s,t);return p.toDataURL(e)}workbookOptions(s,t){const e=this.getExportData(s),o=this.props.children,d=o&&o.type&&o.type.displayName==="KendoReactGrid"&&o.props&&a.Children.toArray(o.props.children),u=this.extractColumns(d||t||this.props.columns||a.Children.toArray(o));return p.workbookOptions({columns:u,data:e.data,group:e.group,filterable:this.props.filterable,creator:this.props.creator,date:this.props.date,dir:this.props.dir,hierarchy:this.props.hierarchy,paddingCellOptions:this.props.paddingCellOptions,headerPaddingCellOptions:this.props.headerPaddingCellOptions,collapsible:this.props.collapsible})}render(){return a.createElement(a.Fragment,null,this.props.children||null,this.showLicenseWatermark&&a.createElement(l.WatermarkOverlay,{message:this.licenseMessage}))}};n.propTypes={children:r.any,columns:r.arrayOf(r.any),creator:r.string,data:r.any,date:r.any,filterable:r.bool,fileName:r.string,forceProxy:r.bool,group:r.any,headerPaddingCellOptions:r.any,paddingCellOptions:r.any,proxyURL:r.string,dir:r.string,hierarchy:r.bool,collapsible:r.bool},n.defaultProps={fileName:"Export.xlsx",forceProxy:!1,collapsible:!1};let c=n;exports.ExcelExport=c;