UNPKG

@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.5 kB
import{jsx as e,jsxs as o,Fragment as i}from"react/jsx-runtime";import{useRef as t,useCallback as n,useState as r,useMemo as l,useEffect as a}from"react";import m from"@mui/icons-material/FileDownload";import s from"@mui/icons-material/Edit";import d from"@mui/icons-material/Delete";import c from"@mui/icons-material/FileOpen";import u from"@mui/icons-material/PeopleAlt";import{DataGrid as p}from"@mui/x-data-grid";import f from"@mui/material/useMediaQuery";import{getDefaultColumns as h}from"./FileManagement.config.js";import{useTranslate as w}from"../../core/locales/index.js";import F from"./locale.json.js";import{getStyles as M}from"./FileManagement.styles.js";import{FileAction as b}from"./models/index.js";import{useParentFileSort as g}from"./hooks/useParentFileSort.js";import{BottomSheet as x}from"../../core/common/BottomSheet/BottomSheet.js";const j=j=>{const C=w(F),k=t({id:"",name:"",owner:"",updatedTime:"",size:0}),y=n((({onAction:o,row:i})=>[{icon:e(m,{}),label:C("download"),onClick:()=>o(i,b.Download),showInMenu:!1,"data-testid":"downloadFile"},{icon:e(s,{}),label:i.isSubFile?C("renameParent"):C("rename"),onClick:()=>o(i,b.Edit),showInMenu:!1,disabled:i.isSubFile,"data-testid":"renameFile"},{icon:e(d,{}),label:C("remove"),onClick:()=>o(i,b.Remove),showInMenu:!1,"data-testid":"removeFile"},{icon:e(c,{}),label:C("openWith"),onClick:()=>o(i,b.Open),showInMenu:!0,"data-testid":"openFileWith"},{icon:e(u,{}),label:C("share"),onClick:()=>o(i,b.Share),showInMenu:!0,"data-testid":"shareFile"}]),[C]),{files:A,parentFileExtension:S,onFileAction:v,columnVisibilityModel:I,rowActionsGenerator:z,sx:D,...E}=j,N=f((e=>e.breakpoints.down("sm"))),[P,T]=r(!1),[V,B]=r(void 0),[G,H]=r(I),O=t({owner:!N,updatedTime:!N,size:!N}),R=n((e=>{B(e),T(!0)}),[]),W=n(((e,o)=>{N&&T(!1),v(e,o)}),[N,v]),Q=l((()=>{const e=(z??y)({row:k.current,onAction:v}).length>3;return M(e)}),[y,v,z]),q=l((()=>h(z??y,C,N,W,R)),[y,N,W,R,z,C]),{sortedFiles:J}=g(A,S);a((()=>{H(N?{owner:!N,updatedTime:!N,size:!N}:O.current)}),[N]),a((()=>{!N&&I&&H(I)}),[I,N]);const K=N?{columnHeaders:()=>null}:E.slots,L=N?"NexusFileManagement-mobile":"NexusFileManagement-normal";return o(i,{children:[e(p,{"data-testid":"NexusFileManagement-root",columns:q,rows:J,slots:K,getRowHeight:()=>N?"auto":void 0,columnVisibilityModel:G,onColumnVisibilityModelChange:e=>{N||(O.current=e),H(e)},sx:[Q.dataGrid,...Array.isArray(D)?D:[D]],...E},L),N&&e(x,{onClose:()=>T(!1),open:P,children:V})]})};export{j as FileManagementComponent};