@progress/kendo-react-grid
Version:
React Data Grid (Table) provides 100+ ready-to-use data grid features. KendoReact Grid package
9 lines (8 loc) • 2.75 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("react"),D=require("@progress/kendo-csv"),G=require("@progress/kendo-file-saver"),R=require("@progress/kendo-data-query"),S=require("./utils/dataProcessing.js");function q(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const i=q(k),N=t=>t&&typeof t=="object"&&"items"in t&&"field"in t,B=t=>t&&typeof t=="object"&&"data"in t?t.data||[]:Array.isArray(t)?t:[],V=(t,r)=>r.split(".").reduce((e,o)=>e==null?void 0:e[o],t),F=(t,r)=>{const e=[],o=[];return t.length>0?t.forEach(({field:n,title:f})=>{e.push(n),o.push(f)}):r.length>0&&!Array.isArray(r[0])&&!N(r[0])&&Object.keys(r[0]).forEach(n=>{e.push(n),o.push(n)}),{autoKeys:e,autoNames:o}},K=(t,r)=>t.map(e=>{const o={};return r.forEach(n=>{o[n]=V(e,n)}),o}),P=i.forwardRef((t,r)=>{const{gridProps:e,csv:o,fileName:n="grid-export.csv",onCsvExport:f}=t,c=i.useMemo(()=>typeof o=="object"&&o!==null?o:{},[o]),d=i.useCallback(()=>{var m,y;const p=c.data||e.data||[];let a=B(p);const v=f||e.onCsvExport;v&&(a=v(a));const j=c.allPages!==!1,b=S.normalizeAutoProcessData(e.autoProcessData);if(b)a=S.processData(a,{autoProcessData:b,group:e.group,defaultGroup:e.defaultGroup,sort:e.sort,defaultSort:e.defaultSort,filter:e.filter,defaultFilter:e.defaultFilter,search:e.search,pageable:e.pageable,take:e.take,skip:e.skip,includePaging:!j}).data;else{const s=e.group||e.defaultGroup;s&&s.length>0&&(a=R.process(a,{group:s}).data)}const E=(t.columnsState||[]).filter(s=>s.field&&!s.hidden&&s.show!==!1).map(s=>({field:s.field,title:s.title||s.field}));let l=(m=c.keys)!=null?m:void 0,u=(y=c.names)!=null?y:void 0;if(!l||!u){const{autoKeys:s,autoNames:g}=F(E,a);l!=null||(l=s.length>0?s:void 0),u!=null||(u=g.length>0?g:void 0)}const x=l==null?void 0:l.some(s=>s.includes(".")),h=a.length>0&&N(a[0]);x&&!h&&l&&(a=K(a,l));const A=h?{data:a,total:a.length}:a,O={...c,data:A,keys:l,names:u};return D.toCSVBlob(O)},[e,c,f,t.columnsState]),C=i.useCallback(async()=>{const p=d(),a=c.fileName||n;G.saveAs(p,a)},[c,n,d]);return i.useImperativeHandle(r,()=>({save:C,getBlob:d})),null});P.displayName="BaseCSVExport";exports.BaseCSVExport=P;