@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 2.78 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react"),t=require("@mui/icons-material/FileDownload"),o=require("@mui/icons-material/Edit"),n=require("@mui/icons-material/Delete"),a=require("@mui/icons-material/FileOpen"),l=require("@mui/icons-material/PeopleAlt"),r=require("@mui/x-data-grid"),s=require("@mui/material/useMediaQuery"),u=require("./FileManagement.config.js"),d=require("../../core/locales/index.js"),c=require("./locale.json.js"),m=require("./FileManagement.styles.js"),F=require("./models/index.js"),f=require("./hooks/useParentFileSort.js"),x=require("../../core/common/BottomSheet/BottomSheet.js");function h(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var j=h(t),b=h(o),w=h(n),M=h(a),p=h(l),q=h(s);exports.FileManagementComponent=t=>{const o=d.useTranslate(c.default),n=i.useRef({id:"",name:"",owner:"",updatedTime:"",size:0}),a=i.useCallback((({onAction:i,row:t})=>[{icon:e.jsx(j.default,{}),label:o("download"),onClick:()=>i(t,F.FileAction.Download),showInMenu:!1,"data-testid":"downloadFile"},{icon:e.jsx(b.default,{}),label:t.isSubFile?o("renameParent"):o("rename"),onClick:()=>i(t,F.FileAction.Edit),showInMenu:!1,disabled:t.isSubFile,"data-testid":"renameFile"},{icon:e.jsx(w.default,{}),label:o("remove"),onClick:()=>i(t,F.FileAction.Remove),showInMenu:!1,"data-testid":"removeFile"},{icon:e.jsx(M.default,{}),label:o("openWith"),onClick:()=>i(t,F.FileAction.Open),showInMenu:!0,"data-testid":"openFileWith"},{icon:e.jsx(p.default,{}),label:o("share"),onClick:()=>i(t,F.FileAction.Share),showInMenu:!0,"data-testid":"shareFile"}]),[o]),{files:l,parentFileExtension:s,onFileAction:h,columnVisibilityModel:g,rowActionsGenerator:C,sx:A,...S}=t,k=q.default((e=>e.breakpoints.down("sm"))),[y,v]=i.useState(!1),[D,E]=i.useState(void 0),[I,P]=i.useState(g),R=i.useRef({owner:!k,updatedTime:!k,size:!k}),T=i.useCallback((e=>{E(e),v(!0)}),[]),z=i.useCallback(((e,i)=>{k&&v(!1),h(e,i)}),[k,h]),B=i.useMemo((()=>{const e=(C??a)({row:n.current,onAction:h}).length>3;return m.getStyles(e)}),[a,h,C]),G=i.useMemo((()=>u.getDefaultColumns(C??a,o,k,z,T)),[a,k,z,T,C,o]),{sortedFiles:N}=f.useParentFileSort(l,s);i.useEffect((()=>{P(k?{owner:!k,updatedTime:!k,size:!k}:R.current)}),[k]),i.useEffect((()=>{!k&&g&&P(g)}),[g,k]);const O=k?{columnHeaders:()=>null}:S.slots,V=k?"NexusFileManagement-mobile":"NexusFileManagement-normal";return e.jsxs(e.Fragment,{children:[e.jsx(r.DataGrid,{"data-testid":"NexusFileManagement-root",columns:G,rows:N,slots:O,getRowHeight:()=>k?"auto":void 0,columnVisibilityModel:I,onColumnVisibilityModelChange:e=>{k||(R.current=e),P(e)},sx:[B.dataGrid,...Array.isArray(A)?A:[A]],...S},V),k&&e.jsx(x.BottomSheet,{onClose:()=>v(!1),open:y,children:D})]})};