@zydon/common 2.8.26 → 2.8.27
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.
|
@@ -12,15 +12,15 @@ import { b } from './chunk-RPO7AI5K.js';
|
|
|
12
12
|
import { memo, forwardRef, useState, useCallback, useMemo, Children, isValidElement, cloneElement } from 'react';
|
|
13
13
|
import Wo from 'react-fast-compare';
|
|
14
14
|
import G from '@mui/material/Button';
|
|
15
|
-
import
|
|
15
|
+
import fo from '@mui/material/CircularProgress';
|
|
16
16
|
import Uo from '@mui/material/Divider';
|
|
17
17
|
import k from '@mui/material/Stack';
|
|
18
|
-
import
|
|
18
|
+
import io from '@mui/material/Typography';
|
|
19
19
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
20
20
|
import { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';
|
|
21
21
|
|
|
22
|
-
var D="datagrid-actions";var Ro=({rowCount:r,page:t,rowsPerPage:e,onPaginationChange:a})=>jsxs(i,{children:[jsxs(k,{direction:"row",alignItems:"center",gap:.5,children:[jsx(
|
|
22
|
+
var D="datagrid-actions";var Ro=({rowCount:r,page:t,rowsPerPage:e,onPaginationChange:a})=>jsxs(i,{children:[jsxs(k,{direction:"row",alignItems:"center",gap:.5,children:[jsx(io,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(io,{variant:"body2",children:r})]}),jsx(j,{count:r,page:t,rowsPerPage:e,onPageChange:i=>a(i,e),onRowsPerPageChange:i=>a(t,i)})]}),lo=memo(Ro);var po=(r,t)=>Children.map(r,e=>{if(!isValidElement(e))return e;let a=e.props.onClick,i={};i.onClick=(...T)=>{t(),a&&a(...T);};let s=e.props;return s?.children&&(i.children=po(s.children,t)),cloneElement(e,i)}),xo=({children:r,onClose:t})=>r?po(r,t):null,co=memo(xo);var Ho=forwardRef(({children:r,...t},e)=>jsx(G,{...t,ref:e,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:r??"Colunas"}));Ho.displayName="ColumnsButton";var Lo=({setFilterButtonEl:r})=>{let t=useCallback(e=>{r(e);},[r]);return jsx(a$9,{container:D,children:jsx(GridToolbarColumnsButton,{ref:t,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},mo=Lo;var qo=({title:r,header:t,headerProps:e$1,breakpoint:a$9="md",columns:i,rows:s=[],mobileRender:T,rowCount:y=0,paginationModel:l={page:0,pageSize:25},onPaginationChange:u,actions:B,moreActions:O,onAdd:N,onSearch:H,searchValue:ho,onSearchChange:go,slots:h$1,slotProps:Co,loading:g$1,fetching:L,fetchingNextPage:Po,containerProps:ko={height:562,maxHeight:562},hideFooter:z,showColumnButton:A=!1,filterButton:C,activeFilters:V,...So})=>{let d$1=a$1(),p=b("down",a$9),[bo,wo]=useState(null),F=!!H,R=!!N,S=!!B,v=!!O,I=p&&v,b$2=!p&&v,Do=S||R||I,_=b$2||F||A||!!C||!p,W=useCallback(()=>u?jsx(lo,{rowCount:y,page:l.page,rowsPerPage:l.pageSize,onPaginationChange:u}):null,[y,l,u]),To=useMemo(()=>({...h$1,footer:W,...A&&!h$1?.toolbar&&{toolbar:mo}}),[h$1,W,A]);return jsxs(a$2,{breakpoint:a$9,...ko,flex:g$1?1:void 0,minHeight:g$1||s.length===0?562:void 0,children:[t?jsx(k,{p:3,...e$1,children:t}):jsxs(Fragment,{children:[jsxs(b$1,{breakpoint:a$9,children:[jsx(io,{variant:"overline",color:"text.secondary",noWrap:!0,children:r}),Do&&jsxs(c,{breakpoint:a$9,children:[S&&B,R&&jsxs(Fragment,{children:[S&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(G,{startIcon:jsx(a,{icon:"SIMPLE_ADD"}),variant:"contained",onClick:N,children:"Adicionar"})]}),I&&jsxs(Fragment,{children:[(S||R)&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(G,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:d$1.onOpen,children:"Mais"})]})]})]}),_&&jsxs(f,{breakpoint:a$9,children:[jsxs(k,{flex:1,direction:"row",alignItems:"center",id:D,gap:.5,children:[v&&jsxs(Fragment,{children:[b$2&&jsxs(Fragment,{children:[jsx(G,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:d$1.onOpen,children:"Mais"}),!p&&jsx(e,{orientation:"vertical",flexItem:!0})]}),(b$2||I)&&jsx(a$3,{open:d$1.open,anchorEl:d$1.open,onClose:d$1.onClose,sx:{minWidth:160},disabledArrow:!0,children:jsx(co,{onClose:d$1.onClose,children:O})})]}),!p&&C&&jsxs(Fragment,{children:[C,b$2&&jsx(e,{orientation:"vertical",flexItem:!0})]})]}),F&&jsxs(g,{breakpoint:a$9,children:[jsx(a$4,{value:ho,placeholder:"Buscar",onSearch:H,onChange:c=>go?.(c.target.value),size:"small",fullWidth:!0,iconPosition:"start"}),p&&C&&jsx(k,{ml:1,children:C})]})]}),V&&V,!_&&jsx(Uo,{sx:{mt:2}})]}),p?jsxs(a$5,{isFetching:L,fetching:jsx(a$6,{}),isLoading:g$1,loading:jsx(fo,{sx:{m:"160px auto"}}),isEmpty:s.length===0,empty:jsx(k,{flex:1,alignItems:"center",justifyContent:"center",children:h$1?.noRowsOverlay?jsx(h$1.noRowsOverlay,{}):jsx(io,{variant:"body2",color:"text.secondary",children:"Nenhum registro encontrado"})}),children:[jsx(a$7,{fillContent:!0,children:s.map(c=>T(c))}),!z&&jsx(h,{children:jsx(j,{count:y,page:l.page,rowsPerPage:l.pageSize,onPageChange:c=>u?.(c,l.pageSize),onRowsPerPageChange:c=>u?.(l.page,c)})})]}):jsx(a$8,{columns:i,rows:s,slots:To,slotProps:{panel:{anchorEl:bo},toolbar:{setFilterButtonEl:wo,showQuickFilter:!0},...Co},columnHeaderHeight:48,getRowHeight:()=>68,loading:g$1,fetching:L,hideFooter:z,...So}),Po&&jsx(k,{alignItems:"center",py:2,children:jsx(fo,{size:24})})]},g$1?"loading":"data")},Or=memo(qo,Wo);
|
|
23
23
|
|
|
24
|
-
export {
|
|
24
|
+
export { lo as a, co as b, mo as c, Or as d };
|
|
25
25
|
//# sourceMappingURL=out.js.map
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-A2CA2MW3.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","useMemo","useState","isEqual","Button","CircularProgress","Divider","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","mobileRender","paginationModel","actions","moreActions","onAdd","onSearch","searchValue","onSearchChange","slots","slotProps","loading","fetching","fetchingNextPage","containerProps","hideFooter","showColumnButton","filterButton","activeFilters","others","popover","usePopover_default","isMobile","useResponsive_default","filterButtonEl","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, useMemo, 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 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 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 ...others\n}: DataViewProps<T>) => {\n const popover = usePopover();\n const isMobile = useResponsive('down', breakpoint);\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\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} 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 }\n >\n <Scrollbar fillContent>\n {rows.map(row => mobileRender(row))}\n </Scrollbar>\n\n {!hideFooter && (\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 {...others}\n />\n )}\n\n {fetchingNextPage && (\n <Stack alignItems=\"center\" py={2}>\n <CircularProgress size={24} />\n </Stack>\n )}\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-A2CA2MW3.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-A2CA2MW3.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","useMemo","useState","isEqual","Button","CircularProgress","Divider","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","mobileRender","paginationModel","actions","moreActions","onAdd","onSearch","searchValue","onSearchChange","slots","slotProps","loading","fetching","fetchingNextPage","containerProps","hideFooter","showColumnButton","filterButton","activeFilters","others","popover","usePopover_default","isMobile","useResponsive_default","filterButtonEl","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, useMemo, 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 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 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 ...others\n}: DataViewProps<T>) => {\n const popover = usePopover();\n const isMobile = useResponsive('down', breakpoint);\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\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 (fetchingNextPage) {\n return (\n <Stack alignItems=\"center\" py={2}>\n <CircularProgress size={24} />\n </Stack>\n );\n }\n\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, fetchingNextPage]);\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} 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 }\n >\n <Scrollbar fillContent>\n {rows.map(row => mobileRender(row))}\n </Scrollbar>\n\n {!hideFooter && (\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 {...others}\n />\n )}\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"]}
|