@zydon/common 2.8.30 → 2.8.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -20,8 +20,8 @@ import mo from '@mui/material/Typography';
|
|
|
20
20
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
21
21
|
import { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';
|
|
22
22
|
|
|
23
|
-
var b="datagrid-actions";var Ho=({rowCount:r,page:e,rowsPerPage:n,onPaginationChange:i$1})=>jsxs(i,{children:[jsxs(h,{direction:"row",alignItems:"center",gap:.5,children:[jsx(mo,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(mo,{variant:"body2",children:r})]}),jsx(j,{count:r,page:e,rowsPerPage:n,onPageChange:s=>i$1(s,n),onRowsPerPageChange:s=>i$1(e,s)})]}),uo=memo(Ho);var ho=(r,e)=>Children.map(r,n=>{if(!isValidElement(n))return n;let i=n.props.onClick,s={};s.onClick=(...d)=>{e(),i&&i(...d);};let l=n.props;return l?.children&&(s.children=ho(l.children,e)),cloneElement(n,s)}),zo=({children:r,onClose:e})=>r?ho(r,e):null,go=memo(zo);var qo=forwardRef(({children:r,...e},n)=>jsx(H,{...e,ref:n,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:r??"Colunas"}));qo.displayName="ColumnsButton";var Qo=({setFilterButtonEl:r})=>{let e=useCallback(n=>{r(n);},[r]);return jsx(a$9,{container:b,children:jsx(GridToolbarColumnsButton,{ref:e,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},Co=Qo;var et=({title:r,header:e$1,headerProps:n,breakpoint:i="md",columns:s,rows:l=[],mobileSlots:d$1,mobileSlotsProps:O,mobileRender:ko,rowCount:w=0,paginationModel:p={page:0,pageSize:25},onPaginationChange:f$1,actions:L,moreActions:N,onAdd:V,onSearch:z,searchValue:To,onSearchChange:vo,slots:C,slotProps:Do,loading:P,fetching:F,fetchingNextPage:So,containerProps:Ao={height:562,maxHeight:562},hideFooter:_,showColumnButton:y=!1,filterButton:k,activeFilters:W,onRowsScrollEnd:v,scrollEndThreshold:R=200,...bo})=>{let u=a$1(),c$1=b$1("down",i),[wo,yo]=useState(null),U=useRef(null);useEffect(()=>{let a=U.current;if(!a||!c$1||!v)return;let K=()=>{let{scrollTop:
|
|
23
|
+
var b="datagrid-actions";var Ho=({rowCount:r,page:e,rowsPerPage:n,onPaginationChange:i$1})=>jsxs(i,{children:[jsxs(h,{direction:"row",alignItems:"center",gap:.5,children:[jsx(mo,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(mo,{variant:"body2",children:r})]}),jsx(j,{count:r,page:e,rowsPerPage:n,onPageChange:s=>i$1(s,n),onRowsPerPageChange:s=>i$1(e,s)})]}),uo=memo(Ho);var ho=(r,e)=>Children.map(r,n=>{if(!isValidElement(n))return n;let i=n.props.onClick,s={};s.onClick=(...d)=>{e(),i&&i(...d);};let l=n.props;return l?.children&&(s.children=ho(l.children,e)),cloneElement(n,s)}),zo=({children:r,onClose:e})=>r?ho(r,e):null,go=memo(zo);var qo=forwardRef(({children:r,...e},n)=>jsx(H,{...e,ref:n,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:r??"Colunas"}));qo.displayName="ColumnsButton";var Qo=({setFilterButtonEl:r})=>{let e=useCallback(n=>{r(n);},[r]);return jsx(a$9,{container:b,children:jsx(GridToolbarColumnsButton,{ref:e,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},Co=Qo;var et=({title:r,header:e$1,headerProps:n,breakpoint:i="md",columns:s,rows:l=[],mobileSlots:d$1,mobileSlotsProps:O,mobileRender:ko,rowCount:w=0,paginationModel:p={page:0,pageSize:25},onPaginationChange:f$1,actions:L,moreActions:N,onAdd:V,onSearch:z,searchValue:To,onSearchChange:vo,slots:C,slotProps:Do,loading:P,fetching:F,fetchingNextPage:So,containerProps:Ao={height:562,maxHeight:562},hideFooter:_,showColumnButton:y=!1,filterButton:k,activeFilters:W,onRowsScrollEnd:v,scrollEndThreshold:R=200,...bo})=>{let u=a$1(),c$1=b$1("down",i),[wo,yo]=useState(null),U=useRef(null);useEffect(()=>{let a=U.current;if(!a||!c$1||!v)return;let K=()=>{let{scrollTop:xo,scrollHeight:Eo,clientHeight:Io}=a;Eo-xo-Io<=R&&v();};return a.addEventListener("scroll",K,{passive:!0}),()=>{a.removeEventListener("scroll",K);}},[c$1,v,R,l.length]);let q=!!z,M=!!V,D=!!L,x=!!N,E=c$1&&x,S=!c$1&&x,Ro=D||M||E,Q=S||q||y||!!k||!c$1,J=useCallback(()=>f$1?jsx(uo,{rowCount:w,page:p.page,rowsPerPage:p.pageSize,onPaginationChange:f$1}):null,[w,p,f$1]),Mo=useMemo(()=>({...C,footer:J,...y&&!C?.toolbar&&{toolbar:Co}}),[C,J,y]);return jsxs(a$2,{breakpoint:i,...Ao,flex:P?1:void 0,minHeight:P||l.length===0?562:void 0,children:[e$1?jsx(h,{p:3,...n,children:e$1}):jsxs(Fragment,{children:[jsxs(b$2,{breakpoint:i,children:[jsx(mo,{variant:"overline",color:"text.secondary",noWrap:!0,children:r}),Ro&&jsxs(c,{breakpoint:i,children:[D&&L,M&&jsxs(Fragment,{children:[D&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(H,{startIcon:jsx(a,{icon:"SIMPLE_ADD"}),variant:"contained",onClick:V,children:"Adicionar"})]}),E&&jsxs(Fragment,{children:[(D||M)&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(H,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:u.onOpen,children:"Mais"})]})]})]}),Q&&jsxs(f,{breakpoint:i,children:[jsxs(h,{flex:1,direction:"row",alignItems:"center",id:b,gap:.5,children:[x&&jsxs(Fragment,{children:[S&&jsxs(Fragment,{children:[jsx(H,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:u.onOpen,children:"Mais"}),!c$1&&jsx(e,{orientation:"vertical",flexItem:!0})]}),(S||E)&&jsx(a$3,{open:u.open,anchorEl:u.open,onClose:u.onClose,sx:{minWidth:160},disabledArrow:!0,children:jsx(go,{onClose:u.onClose,children:N})})]}),!c$1&&k&&jsxs(Fragment,{children:[k,S&&jsx(e,{orientation:"vertical",flexItem:!0})]})]}),q&&jsxs(g,{breakpoint:i,children:[jsx(a$4,{value:To,placeholder:"Buscar",onSearch:z,onChange:a=>vo?.(a.target.value),size:"small",fullWidth:!0,iconPosition:"start"}),c$1&&k&&jsx(h,{ml:1,children:k})]})]}),W&&W,!Q&&jsx(tt,{sx:{mt:2}})]}),c$1?jsxs(a$5,{isFetching:F,fetching:jsx(a$6,{}),isLoading:P,loading:jsx(ot,{sx:{m:"160px auto"}}),isEmpty:l.length===0,empty:jsxs(h,{flex:1,direction:"column",...O,children:[d$1&&d$1,jsx(h,{flex:1,alignItems:"center",justifyContent:"center",children:C?.noRowsOverlay?jsx(C.noRowsOverlay,{}):jsx(mo,{variant:"body2",color:"text.secondary",children:"Nenhum registro encontrado"})})]}),children:[jsxs(h,{direction:"column",flex:1,minHeight:0,...O,children:[d$1&&d$1,jsx(a$7,{fillContent:!0,ref:U,children:l.map(a=>ko(a))})]}),!_&&f$1&&jsx(h$1,{children:jsx(j,{count:w,page:p.page,rowsPerPage:p.pageSize,onPageChange:a=>f$1?.(a,p.pageSize),onRowsPerPageChange:a=>f$1?.(p.page,a)})})]}):jsx(a$8,{columns:s,rows:l,slots:Mo,slotProps:{panel:{anchorEl:wo},toolbar:{setFilterButtonEl:yo,showQuickFilter:!0},...Do},columnHeaderHeight:48,getRowHeight:()=>68,loading:P,fetching:F,hideFooter:_,onRowsScrollEnd:v,scrollEndThreshold:R,...bo}),So&&jsx(rt,{})]},P?"loading":"data")},Xt=memo(et,jo);
|
|
24
24
|
|
|
25
25
|
export { uo as a, go as b, Co as c, Xt as d };
|
|
26
26
|
//# sourceMappingURL=out.js.map
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-EUQNIDDO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/DataView/index.tsx","../src/components/DataView/contants.ts","../src/components/DataView/DesktopFooter.tsx","../src/components/DataView/EnhancedMoreActions.tsx","../src/components/DataView/Toolbar.tsx"],"names":["memo","useCallback","useEffect","useMemo","useRef","useState","isEqual","Button","CircularProgress","Divider","LinearProgress","Stack","Typography","DATAGRID_ACTIONS","jsx","jsxs","DesktopFooter","rowCount","page","rowsPerPage","onPaginationChange","DesktopPaginationContainer","Pagination_default","newPage","newRowsPerPage","DesktopFooter_default","Children","cloneElement","isValidElement","createEnhanceMoreActions","children","onClose","child","originalOnClick","enhancedProps","args","childProps","EnhancedMoreActions","EnhancedMoreActions_default","forwardRef","GridToolbarColumnsButton","ColumnsButton","props","ref","Icon_default","Toolbar","setFilterButtonEl","handleColumnsButtonRef","button","Portal_default","Toolbar_default","Fragment","DataViewComponent","title","header","headerProps","breakpoint","columns","rows","mobileSlots","mobileSlotsProps","mobileRender","paginationModel","actions","moreActions","onAdd","onSearch","searchValue","onSearchChange","slots","slotProps","loading","fetching","fetchingNextPage","containerProps","hideFooter","showColumnButton","filterButton","activeFilters","onRowsScrollEnd","scrollEndThreshold","others","popover","usePopover_default","isMobile","useResponsive_default","filterButtonEl","scrollableNodeRef","node","handleScroll","scrollTop","scrollHeight","clientHeight","showSearch","showAdd","showActions","showMoreActions","showHeaderMoreActions","showTopbarMoreActions","showActionsContainer","showTopbar","FooterComponent","dataGridSlots","Container","Header","ActionsContainer","ActionsDivider","Topbar","ToolbarActionsDivider","MenuPopover_default","SearchContainer","SearchInput_default","e","Result_default","FixedProgressBar_default","Scrollbar_default","row","MobilePaginationContainer","DataGrid_default","DataView_default"],"mappings":"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","sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport isEqual from 'react-fast-compare';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Divider from '@mui/material/Divider';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport {\n GridSlotsComponentsProps,\n GridValidRowModel,\n} from '@mui/x-data-grid-premium';\n\nimport DataGrid from 'components/DataGrid';\nimport FixedProgressBar from 'components/FixedProgressBar';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport Result from 'components/Result';\nimport Scrollbar from 'components/Scrollbar';\nimport SearchInput from 'components/SearchInput';\nimport usePopover from 'hooks/usePopover';\nimport useResponsive from 'hooks/useResponsive';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport DesktopFooter from './DesktopFooter';\nimport EnhancedMoreActions from './EnhancedMoreActions';\nimport Pagination from './Pagination';\nimport { DataGridSlotsProps, DataViewProps } from './props';\nimport {\n ActionsContainer,\n ActionsDivider,\n Container,\n Header,\n MobilePaginationContainer,\n SearchContainer,\n ToolbarActionsDivider,\n Topbar,\n} from './styles';\nimport Toolbar from './Toolbar';\n\nconst DataViewComponent = <T extends GridValidRowModel = GridValidRowModel>({\n title,\n header,\n headerProps,\n breakpoint = 'md',\n columns,\n rows = [],\n mobileSlots,\n mobileSlotsProps,\n mobileRender,\n rowCount = 0,\n paginationModel = { page: 0, pageSize: 25 },\n onPaginationChange,\n actions,\n moreActions,\n onAdd,\n onSearch,\n searchValue,\n onSearchChange,\n slots,\n slotProps,\n loading,\n fetching,\n fetchingNextPage,\n containerProps = { height: 562, maxHeight: 562 },\n hideFooter,\n showColumnButton = false,\n filterButton,\n activeFilters,\n onRowsScrollEnd,\n scrollEndThreshold = 200,\n ...others\n}: DataViewProps<T>) => {\n const popover = usePopover();\n const isMobile = useResponsive('down', breakpoint);\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\n const scrollableNodeRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const node = scrollableNodeRef.current;\n\n if (!node || !isMobile || !onRowsScrollEnd) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = node;\n const distanceToBottom = scrollHeight - scrollTop - clientHeight;\n if (distanceToBottom <= scrollEndThreshold) {\n (onRowsScrollEnd as () => void)();\n }\n };\n\n node.addEventListener('scroll', handleScroll, { passive: true });\n\n return () => {\n node.removeEventListener('scroll', handleScroll);\n };\n }, [isMobile, onRowsScrollEnd, scrollEndThreshold, rows.length]);\n\n const showSearch = !!onSearch;\n const showAdd = !!onAdd;\n const showActions = !!actions;\n const showMoreActions = !!moreActions;\n const showHeaderMoreActions = isMobile && showMoreActions;\n const showTopbarMoreActions = !isMobile && showMoreActions;\n const showActionsContainer = showActions || showAdd || showHeaderMoreActions;\n const showTopbar =\n showTopbarMoreActions ||\n showSearch ||\n showColumnButton ||\n !!filterButton ||\n !isMobile;\n\n const FooterComponent = useCallback(() => {\n if (onPaginationChange) {\n return (\n <DesktopFooter\n rowCount={rowCount}\n page={paginationModel.page}\n rowsPerPage={paginationModel.pageSize}\n onPaginationChange={onPaginationChange}\n />\n );\n }\n\n return null;\n }, [rowCount, paginationModel, onPaginationChange]);\n\n const dataGridSlots: DataGridSlotsProps = useMemo(\n () => ({\n ...slots,\n footer: FooterComponent as unknown as DataGridSlotsProps['footer'],\n ...(showColumnButton &&\n !slots?.toolbar && {\n toolbar: Toolbar as unknown as DataGridSlotsProps['toolbar'],\n }),\n }),\n [slots, FooterComponent, showColumnButton],\n );\n\n return (\n <Container\n key={loading ? 'loading' : 'data'}\n breakpoint={breakpoint}\n {...containerProps}\n flex={loading ? 1 : undefined}\n minHeight={loading || rows.length === 0 ? 562 : undefined}\n >\n {header ? (\n <Stack p={3} {...headerProps}>\n {header}\n </Stack>\n ) : (\n <>\n <Header breakpoint={breakpoint}>\n <Typography variant=\"overline\" color=\"text.secondary\" noWrap>\n {title}\n </Typography>\n\n {showActionsContainer && (\n <ActionsContainer breakpoint={breakpoint}>\n {showActions && actions}\n\n {showAdd && (\n <>\n {showActions && (\n <ActionsDivider orientation=\"vertical\" flexItem />\n )}\n\n <Button\n startIcon={<Icon icon=\"SIMPLE_ADD\" />}\n variant=\"contained\"\n onClick={onAdd}\n >\n Adicionar\n </Button>\n </>\n )}\n\n {showHeaderMoreActions && (\n <>\n {(showActions || showAdd) && (\n <ActionsDivider orientation=\"vertical\" flexItem />\n )}\n\n <Button\n color=\"inherit\"\n startIcon={<Icon icon=\"MORE_BOLD\" />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n Mais\n </Button>\n </>\n )}\n </ActionsContainer>\n )}\n </Header>\n\n {showTopbar && (\n <Topbar breakpoint={breakpoint}>\n <Stack\n flex={1}\n direction=\"row\"\n alignItems=\"center\"\n id={DATAGRID_ACTIONS}\n gap={0.5}\n >\n {showMoreActions && (\n <>\n {showTopbarMoreActions && (\n <>\n <Button\n color=\"inherit\"\n startIcon={<Icon icon=\"MORE_BOLD\" />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n Mais\n </Button>\n\n {!isMobile && (\n <ToolbarActionsDivider\n orientation=\"vertical\"\n flexItem\n />\n )}\n </>\n )}\n\n {(showTopbarMoreActions || showHeaderMoreActions) && (\n <MenuPopover\n open={popover.open}\n anchorEl={popover.open}\n onClose={popover.onClose}\n sx={{\n minWidth: 160,\n }}\n disabledArrow={true}\n >\n <EnhancedMoreActions onClose={popover.onClose}>\n {moreActions}\n </EnhancedMoreActions>\n </MenuPopover>\n )}\n </>\n )}\n\n {!isMobile && filterButton && (\n <>\n {filterButton}\n\n {showTopbarMoreActions && (\n <ToolbarActionsDivider orientation=\"vertical\" flexItem />\n )}\n </>\n )}\n </Stack>\n\n {showSearch && (\n <SearchContainer breakpoint={breakpoint}>\n <SearchInput\n value={searchValue}\n placeholder=\"Buscar\"\n onSearch={onSearch}\n onChange={e => onSearchChange?.(e.target.value)}\n size=\"small\"\n fullWidth\n iconPosition=\"start\"\n />\n {isMobile && filterButton && (\n <Stack ml={1}>{filterButton}</Stack>\n )}\n </SearchContainer>\n )}\n </Topbar>\n )}\n\n {activeFilters && activeFilters}\n\n {!showTopbar && <Divider sx={{ mt: 2 }} />}\n </>\n )}\n\n {isMobile ? (\n <Result\n isFetching={fetching}\n fetching={<FixedProgressBar />}\n isLoading={loading}\n loading={<CircularProgress sx={{ m: '160px auto' }} />}\n isEmpty={rows.length === 0}\n empty={\n <Stack flex={1} direction=\"column\" {...mobileSlotsProps}>\n {mobileSlots && mobileSlots}\n\n <Stack flex={1} alignItems=\"center\" justifyContent=\"center\">\n {slots?.noRowsOverlay ? (\n <slots.noRowsOverlay />\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum registro encontrado\n </Typography>\n )}\n </Stack>\n </Stack>\n }\n >\n <Stack\n direction=\"column\"\n flex={1}\n minHeight={0}\n {...mobileSlotsProps}\n >\n {mobileSlots && mobileSlots}\n\n <Scrollbar fillContent ref={scrollableNodeRef}>\n {rows.map(row => mobileRender(row))}\n </Scrollbar>\n </Stack>\n\n {!hideFooter && onPaginationChange && (\n <MobilePaginationContainer>\n <Pagination\n count={rowCount}\n page={paginationModel.page}\n rowsPerPage={paginationModel.pageSize}\n onPageChange={newPage =>\n onPaginationChange?.(newPage, paginationModel.pageSize)\n }\n onRowsPerPageChange={newRowsPerPage =>\n onPaginationChange?.(paginationModel.page, newRowsPerPage)\n }\n />\n </MobilePaginationContainer>\n )}\n </Result>\n ) : (\n <DataGrid\n columns={columns}\n rows={rows}\n slots={dataGridSlots}\n slotProps={{\n panel: { anchorEl: filterButtonEl },\n toolbar: {\n setFilterButtonEl,\n showQuickFilter: true,\n } as unknown as GridSlotsComponentsProps['toolbar'],\n ...slotProps,\n }}\n columnHeaderHeight={48}\n getRowHeight={() => 68}\n loading={loading}\n fetching={fetching}\n hideFooter={hideFooter}\n onRowsScrollEnd={onRowsScrollEnd}\n scrollEndThreshold={scrollEndThreshold}\n {...others}\n />\n )}\n\n {fetchingNextPage && <LinearProgress />}\n </Container>\n );\n};\n\nexport default memo(DataViewComponent, isEqual) as typeof DataViewComponent;\nexport {\n ActionsContainer,\n ActionsDivider,\n Container,\n DesktopFooter,\n EnhancedMoreActions,\n Header,\n MobilePaginationContainer,\n SearchContainer,\n Toolbar,\n ToolbarActionsDivider,\n Topbar,\n};\n","export const DATAGRID_ACTIONS = 'datagrid-actions';\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Pagination from './Pagination';\nimport { DesktopFooterProps } from './props';\nimport { DesktopPaginationContainer } from './styles';\n\nconst DesktopFooter = ({\n rowCount,\n page,\n rowsPerPage,\n onPaginationChange,\n}: DesktopFooterProps) => {\n return (\n <DesktopPaginationContainer>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <Typography variant=\"body2\" color=\"text.disabled\">\n Total de itens:\n </Typography>\n <Typography variant=\"body2\">{rowCount}</Typography>\n </Stack>\n\n <Pagination\n count={rowCount}\n page={page}\n rowsPerPage={rowsPerPage}\n onPageChange={newPage => onPaginationChange(newPage, rowsPerPage)}\n onRowsPerPageChange={newRowsPerPage =>\n onPaginationChange(page, newRowsPerPage)\n }\n />\n </DesktopPaginationContainer>\n );\n};\n\nexport default memo(DesktopFooter);\n","import {\n Children,\n cloneElement,\n isValidElement,\n memo,\n ReactElement,\n ReactNode,\n} from 'react';\n\nimport { EnhancedMoreActionsProps } from './props';\n\nconst createEnhanceMoreActions = (\n children: ReactNode,\n onClose: () => void,\n): ReactNode => {\n return Children.map(children, child => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const originalOnClick = (\n child.props as { onClick?: (...args: unknown[]) => void }\n ).onClick;\n\n const enhancedProps: {\n onClick?: (...args: unknown[]) => void;\n children?: ReactNode;\n } = {};\n\n enhancedProps.onClick = (...args: unknown[]) => {\n onClose();\n if (originalOnClick) {\n originalOnClick(...args);\n }\n };\n\n const childProps = child.props as { children?: ReactNode };\n if (childProps?.children) {\n enhancedProps.children = createEnhanceMoreActions(\n childProps.children,\n onClose,\n );\n }\n\n return cloneElement(child as ReactElement, enhancedProps);\n });\n};\n\nconst EnhancedMoreActions = ({\n children,\n onClose,\n}: EnhancedMoreActionsProps) => {\n if (!children) return null;\n return createEnhanceMoreActions(children, onClose);\n};\n\nexport default memo(EnhancedMoreActions);\n","import { forwardRef, useCallback } from 'react';\nimport Button, { ButtonProps } from '@mui/material/Button';\nimport { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';\n\nimport Icon from 'components/Icon';\nimport Portal from 'components/Portal';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport { ToolbarProps } from './props';\n\nconst ColumnsButton = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ children, ...props }, ref) => (\n <Button\n {...props}\n ref={ref}\n color=\"inherit\"\n startIcon={<Icon icon=\"COLUMNS\" />}\n >\n {children ?? 'Colunas'}\n </Button>\n ),\n);\n\nColumnsButton.displayName = 'ColumnsButton';\n\nconst Toolbar = ({ setFilterButtonEl }: ToolbarProps) => {\n const handleColumnsButtonRef = useCallback(\n (button: HTMLButtonElement | null) => {\n setFilterButtonEl(button);\n },\n [setFilterButtonEl],\n );\n\n return (\n <Portal container={DATAGRID_ACTIONS}>\n <GridToolbarColumnsButton\n ref={handleColumnsButtonRef}\n slotProps={{\n button: {\n color: 'inherit',\n startIcon: <Icon icon=\"COLUMNS\" />,\n children: 'Colunas',\n },\n }}\n />\n </Portal>\n );\n};\n\nexport default Toolbar;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { a as DesktopFooter, b as EnhancedMoreActions, c as Toolbar, d as default } from '../../chunk-
|
|
1
|
+
export { a as DesktopFooter, b as EnhancedMoreActions, c as Toolbar, d as default } from '../../chunk-EUQNIDDO.js';
|
|
2
2
|
import '../../chunk-MC44LVZD.js';
|
|
3
3
|
import '../../chunk-IJZCVZ32.js';
|
|
4
4
|
import '../../chunk-IDFJFFIV.js';
|
|
@@ -3,7 +3,7 @@ export { a as FilterOperator, b as SortType } from '../../chunk-VL4W63YA.js';
|
|
|
3
3
|
import { a as a$1 } from '../../chunk-LG2B5RFV.js';
|
|
4
4
|
import { d, c } from '../../chunk-N7IK5EUP.js';
|
|
5
5
|
import { h, a as a$3 } from '../../chunk-OF6623HG.js';
|
|
6
|
-
import { d as d$1 } from '../../chunk-
|
|
6
|
+
import { d as d$1 } from '../../chunk-EUQNIDDO.js';
|
|
7
7
|
import '../../chunk-MC44LVZD.js';
|
|
8
8
|
import '../../chunk-IJZCVZ32.js';
|
|
9
9
|
import { a as a$2 } from '../../chunk-SY2RHBDJ.js';
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/DataView/index.tsx","../src/components/DataView/contants.ts","../src/components/DataView/DesktopFooter.tsx","../src/components/DataView/EnhancedMoreActions.tsx","../src/components/DataView/Toolbar.tsx"],"names":["memo","useCallback","useEffect","useMemo","useRef","useState","isEqual","Button","CircularProgress","Divider","LinearProgress","Stack","Typography","DATAGRID_ACTIONS","jsx","jsxs","DesktopFooter","rowCount","page","rowsPerPage","onPaginationChange","DesktopPaginationContainer","Pagination_default","newPage","newRowsPerPage","DesktopFooter_default","Children","cloneElement","isValidElement","createEnhanceMoreActions","children","onClose","child","originalOnClick","enhancedProps","args","childProps","EnhancedMoreActions","EnhancedMoreActions_default","forwardRef","GridToolbarColumnsButton","ColumnsButton","props","ref","Icon_default","Toolbar","setFilterButtonEl","handleColumnsButtonRef","button","Portal_default","Toolbar_default","Fragment","DataViewComponent","title","header","headerProps","breakpoint","columns","rows","mobileSlots","mobileSlotsProps","mobileRender","paginationModel","actions","moreActions","onAdd","onSearch","searchValue","onSearchChange","slots","slotProps","loading","fetching","fetchingNextPage","containerProps","hideFooter","showColumnButton","filterButton","activeFilters","onRowsScrollEnd","scrollEndThreshold","others","popover","usePopover_default","isMobile","useResponsive_default","filterButtonEl","scrollableNodeRef","node","handleScroll","scrollTop","scrollHeight","clientHeight","showSearch","showAdd","showActions","showMoreActions","showHeaderMoreActions","showTopbarMoreActions","showActionsContainer","showTopbar","FooterComponent","dataGridSlots","Container","Header","ActionsContainer","ActionsDivider","Topbar","ToolbarActionsDivider","MenuPopover_default","SearchContainer","SearchInput_default","e","Result_default","FixedProgressBar_default","Scrollbar_default","row","MobilePaginationContainer","DataGrid_default","DataView_default"],"mappings":"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","sourcesContent":["import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport isEqual from 'react-fast-compare';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Divider from '@mui/material/Divider';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport {\n GridSlotsComponentsProps,\n GridValidRowModel,\n} from '@mui/x-data-grid-premium';\n\nimport DataGrid from 'components/DataGrid';\nimport FixedProgressBar from 'components/FixedProgressBar';\nimport Icon from 'components/Icon';\nimport MenuPopover from 'components/MenuPopover';\nimport Result from 'components/Result';\nimport Scrollbar from 'components/Scrollbar';\nimport SearchInput from 'components/SearchInput';\nimport usePopover from 'hooks/usePopover';\nimport useResponsive from 'hooks/useResponsive';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport DesktopFooter from './DesktopFooter';\nimport EnhancedMoreActions from './EnhancedMoreActions';\nimport Pagination from './Pagination';\nimport { DataGridSlotsProps, DataViewProps } from './props';\nimport {\n ActionsContainer,\n ActionsDivider,\n Container,\n Header,\n MobilePaginationContainer,\n SearchContainer,\n ToolbarActionsDivider,\n Topbar,\n} from './styles';\nimport Toolbar from './Toolbar';\n\nconst DataViewComponent = <T extends GridValidRowModel = GridValidRowModel>({\n title,\n header,\n headerProps,\n breakpoint = 'md',\n columns,\n rows = [],\n mobileSlots,\n mobileSlotsProps,\n mobileRender,\n rowCount = 0,\n paginationModel = { page: 0, pageSize: 25 },\n onPaginationChange,\n actions,\n moreActions,\n onAdd,\n onSearch,\n searchValue,\n onSearchChange,\n slots,\n slotProps,\n loading,\n fetching,\n fetchingNextPage,\n containerProps = { height: 562, maxHeight: 562 },\n hideFooter,\n showColumnButton = false,\n filterButton,\n activeFilters,\n onRowsScrollEnd,\n scrollEndThreshold = 200,\n ...others\n}: DataViewProps<T>) => {\n const popover = usePopover();\n const isMobile = useResponsive('down', breakpoint);\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\n const scrollableNodeRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const node = scrollableNodeRef.current;\n\n if (!node || !isMobile || !onRowsScrollEnd) return;\n\n const handleScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = node;\n const distanceToBottom = scrollHeight - scrollTop - clientHeight;\n if (distanceToBottom <= scrollEndThreshold) {\n (onRowsScrollEnd as () => void)();\n }\n };\n\n node.addEventListener('scroll', handleScroll, { passive: true });\n\n return () => {\n node.removeEventListener('scroll', handleScroll);\n };\n }, [isMobile, onRowsScrollEnd, scrollEndThreshold, rows.length]);\n\n const showSearch = !!onSearch;\n const showAdd = !!onAdd;\n const showActions = !!actions;\n const showMoreActions = !!moreActions;\n const showHeaderMoreActions = isMobile && showMoreActions;\n const showTopbarMoreActions = !isMobile && showMoreActions;\n const showActionsContainer = showActions || showAdd || showHeaderMoreActions;\n const showTopbar =\n showTopbarMoreActions ||\n showSearch ||\n showColumnButton ||\n !!filterButton ||\n !isMobile;\n\n const FooterComponent = useCallback(() => {\n if (onPaginationChange) {\n return (\n <DesktopFooter\n rowCount={rowCount}\n page={paginationModel.page}\n rowsPerPage={paginationModel.pageSize}\n onPaginationChange={onPaginationChange}\n />\n );\n }\n\n return null;\n }, [rowCount, paginationModel, onPaginationChange]);\n\n const dataGridSlots: DataGridSlotsProps = useMemo(\n () => ({\n ...slots,\n footer: FooterComponent as unknown as DataGridSlotsProps['footer'],\n ...(showColumnButton &&\n !slots?.toolbar && {\n toolbar: Toolbar as unknown as DataGridSlotsProps['toolbar'],\n }),\n }),\n [slots, FooterComponent, showColumnButton],\n );\n\n return (\n <Container\n key={loading ? 'loading' : 'data'}\n breakpoint={breakpoint}\n {...containerProps}\n flex={loading ? 1 : undefined}\n minHeight={loading || rows.length === 0 ? 562 : undefined}\n >\n {header ? (\n <Stack p={3} {...headerProps}>\n {header}\n </Stack>\n ) : (\n <>\n <Header breakpoint={breakpoint}>\n <Typography variant=\"overline\" color=\"text.secondary\" noWrap>\n {title}\n </Typography>\n\n {showActionsContainer && (\n <ActionsContainer breakpoint={breakpoint}>\n {showActions && actions}\n\n {showAdd && (\n <>\n {showActions && (\n <ActionsDivider orientation=\"vertical\" flexItem />\n )}\n\n <Button\n startIcon={<Icon icon=\"SIMPLE_ADD\" />}\n variant=\"contained\"\n onClick={onAdd}\n >\n Adicionar\n </Button>\n </>\n )}\n\n {showHeaderMoreActions && (\n <>\n {(showActions || showAdd) && (\n <ActionsDivider orientation=\"vertical\" flexItem />\n )}\n\n <Button\n color=\"inherit\"\n startIcon={<Icon icon=\"MORE_BOLD\" />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n Mais\n </Button>\n </>\n )}\n </ActionsContainer>\n )}\n </Header>\n\n {showTopbar && (\n <Topbar breakpoint={breakpoint}>\n <Stack\n flex={1}\n direction=\"row\"\n alignItems=\"center\"\n id={DATAGRID_ACTIONS}\n gap={0.5}\n >\n {showMoreActions && (\n <>\n {showTopbarMoreActions && (\n <>\n <Button\n color=\"inherit\"\n startIcon={<Icon icon=\"MORE_BOLD\" />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n Mais\n </Button>\n\n {!isMobile && (\n <ToolbarActionsDivider\n orientation=\"vertical\"\n flexItem\n />\n )}\n </>\n )}\n\n {(showTopbarMoreActions || showHeaderMoreActions) && (\n <MenuPopover\n open={popover.open}\n anchorEl={popover.open}\n onClose={popover.onClose}\n sx={{\n minWidth: 160,\n }}\n disabledArrow={true}\n >\n <EnhancedMoreActions onClose={popover.onClose}>\n {moreActions}\n </EnhancedMoreActions>\n </MenuPopover>\n )}\n </>\n )}\n\n {!isMobile && filterButton && (\n <>\n {filterButton}\n\n {showTopbarMoreActions && (\n <ToolbarActionsDivider orientation=\"vertical\" flexItem />\n )}\n </>\n )}\n </Stack>\n\n {showSearch && (\n <SearchContainer breakpoint={breakpoint}>\n <SearchInput\n value={searchValue}\n placeholder=\"Buscar\"\n onSearch={onSearch}\n onChange={e => onSearchChange?.(e.target.value)}\n size=\"small\"\n fullWidth\n iconPosition=\"start\"\n />\n {isMobile && filterButton && (\n <Stack ml={1}>{filterButton}</Stack>\n )}\n </SearchContainer>\n )}\n </Topbar>\n )}\n\n {activeFilters && activeFilters}\n\n {!showTopbar && <Divider sx={{ mt: 2 }} />}\n </>\n )}\n\n {isMobile ? (\n <Result\n isFetching={fetching}\n fetching={<FixedProgressBar />}\n isLoading={loading}\n loading={<CircularProgress sx={{ m: '160px auto' }} />}\n isEmpty={rows.length === 0}\n empty={\n <Stack flex={1} direction=\"column\" {...mobileSlotsProps}>\n {mobileSlots && mobileSlots}\n\n <Stack flex={1} alignItems=\"center\" justifyContent=\"center\">\n {slots?.noRowsOverlay ? (\n <slots.noRowsOverlay />\n ) : (\n <Typography variant=\"body2\" color=\"text.secondary\">\n Nenhum registro encontrado\n </Typography>\n )}\n </Stack>\n </Stack>\n }\n >\n <Stack direction=\"column\" {...mobileSlotsProps}>\n {mobileSlots && mobileSlots}\n\n <Scrollbar fillContent ref={scrollableNodeRef}>\n {rows.map(row => mobileRender(row))}\n </Scrollbar>\n </Stack>\n\n {!hideFooter && onPaginationChange && (\n <MobilePaginationContainer>\n <Pagination\n count={rowCount}\n page={paginationModel.page}\n rowsPerPage={paginationModel.pageSize}\n onPageChange={newPage =>\n onPaginationChange?.(newPage, paginationModel.pageSize)\n }\n onRowsPerPageChange={newRowsPerPage =>\n onPaginationChange?.(paginationModel.page, newRowsPerPage)\n }\n />\n </MobilePaginationContainer>\n )}\n </Result>\n ) : (\n <DataGrid\n columns={columns}\n rows={rows}\n slots={dataGridSlots}\n slotProps={{\n panel: { anchorEl: filterButtonEl },\n toolbar: {\n setFilterButtonEl,\n showQuickFilter: true,\n } as unknown as GridSlotsComponentsProps['toolbar'],\n ...slotProps,\n }}\n columnHeaderHeight={48}\n getRowHeight={() => 68}\n loading={loading}\n fetching={fetching}\n hideFooter={hideFooter}\n onRowsScrollEnd={onRowsScrollEnd}\n scrollEndThreshold={scrollEndThreshold}\n {...others}\n />\n )}\n\n {fetchingNextPage && <LinearProgress />}\n </Container>\n );\n};\n\nexport default memo(DataViewComponent, isEqual) as typeof DataViewComponent;\nexport {\n ActionsContainer,\n ActionsDivider,\n Container,\n DesktopFooter,\n EnhancedMoreActions,\n Header,\n MobilePaginationContainer,\n SearchContainer,\n Toolbar,\n ToolbarActionsDivider,\n Topbar,\n};\n","export const DATAGRID_ACTIONS = 'datagrid-actions';\n","import { memo } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport Pagination from './Pagination';\nimport { DesktopFooterProps } from './props';\nimport { DesktopPaginationContainer } from './styles';\n\nconst DesktopFooter = ({\n rowCount,\n page,\n rowsPerPage,\n onPaginationChange,\n}: DesktopFooterProps) => {\n return (\n <DesktopPaginationContainer>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5}>\n <Typography variant=\"body2\" color=\"text.disabled\">\n Total de itens:\n </Typography>\n <Typography variant=\"body2\">{rowCount}</Typography>\n </Stack>\n\n <Pagination\n count={rowCount}\n page={page}\n rowsPerPage={rowsPerPage}\n onPageChange={newPage => onPaginationChange(newPage, rowsPerPage)}\n onRowsPerPageChange={newRowsPerPage =>\n onPaginationChange(page, newRowsPerPage)\n }\n />\n </DesktopPaginationContainer>\n );\n};\n\nexport default memo(DesktopFooter);\n","import {\n Children,\n cloneElement,\n isValidElement,\n memo,\n ReactElement,\n ReactNode,\n} from 'react';\n\nimport { EnhancedMoreActionsProps } from './props';\n\nconst createEnhanceMoreActions = (\n children: ReactNode,\n onClose: () => void,\n): ReactNode => {\n return Children.map(children, child => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const originalOnClick = (\n child.props as { onClick?: (...args: unknown[]) => void }\n ).onClick;\n\n const enhancedProps: {\n onClick?: (...args: unknown[]) => void;\n children?: ReactNode;\n } = {};\n\n enhancedProps.onClick = (...args: unknown[]) => {\n onClose();\n if (originalOnClick) {\n originalOnClick(...args);\n }\n };\n\n const childProps = child.props as { children?: ReactNode };\n if (childProps?.children) {\n enhancedProps.children = createEnhanceMoreActions(\n childProps.children,\n onClose,\n );\n }\n\n return cloneElement(child as ReactElement, enhancedProps);\n });\n};\n\nconst EnhancedMoreActions = ({\n children,\n onClose,\n}: EnhancedMoreActionsProps) => {\n if (!children) return null;\n return createEnhanceMoreActions(children, onClose);\n};\n\nexport default memo(EnhancedMoreActions);\n","import { forwardRef, useCallback } from 'react';\nimport Button, { ButtonProps } from '@mui/material/Button';\nimport { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';\n\nimport Icon from 'components/Icon';\nimport Portal from 'components/Portal';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport { ToolbarProps } from './props';\n\nconst ColumnsButton = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ children, ...props }, ref) => (\n <Button\n {...props}\n ref={ref}\n color=\"inherit\"\n startIcon={<Icon icon=\"COLUMNS\" />}\n >\n {children ?? 'Colunas'}\n </Button>\n ),\n);\n\nColumnsButton.displayName = 'ColumnsButton';\n\nconst Toolbar = ({ setFilterButtonEl }: ToolbarProps) => {\n const handleColumnsButtonRef = useCallback(\n (button: HTMLButtonElement | null) => {\n setFilterButtonEl(button);\n },\n [setFilterButtonEl],\n );\n\n return (\n <Portal container={DATAGRID_ACTIONS}>\n <GridToolbarColumnsButton\n ref={handleColumnsButtonRef}\n slotProps={{\n button: {\n color: 'inherit',\n startIcon: <Icon icon=\"COLUMNS\" />,\n children: 'Colunas',\n },\n }}\n />\n </Portal>\n );\n};\n\nexport default Toolbar;\n"]}
|