@zydon/common 2.9.57 → 2.9.59
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.
- package/README.md +6 -0
- package/dist/chunk-3MKH4GA7.js +14 -0
- package/dist/chunk-3MKH4GA7.js.map +1 -0
- package/dist/chunk-BVWXGGJY.js +27 -0
- package/dist/chunk-BVWXGGJY.js.map +1 -0
- package/dist/components/Analytics/Carts/index.js +3 -2
- package/dist/components/Analytics/Carts/index.js.map +1 -1
- package/dist/components/Analytics/OverviewAnalytics/index.js +3 -2
- package/dist/components/Analytics/OverviewAnalytics/index.js.map +1 -1
- package/dist/components/Analytics/PartnerAnalysis/index.js +3 -2
- package/dist/components/Analytics/PartnerAnalysis/index.js.map +1 -1
- package/dist/components/DataGrid/index.d.ts +1 -1
- package/dist/components/DataGrid/index.js +4 -1
- package/dist/components/DataView/index.d.ts +1 -1
- package/dist/components/DataView/index.js +3 -2
- package/dist/components/DynamicDataView/index.d.ts +3 -1
- package/dist/components/DynamicDataView/index.js +18 -17
- package/dist/components/DynamicDataView/index.js.map +1 -1
- package/dist/types/dataGridProps.d.ts +2 -0
- package/package.json +1 -1
- package/dist/chunk-SB7J43ND.js +0 -12
- package/dist/chunk-SB7J43ND.js.map +0 -1
- package/dist/chunk-VGZHKC76.js +0 -27
- package/dist/chunk-VGZHKC76.js.map +0 -1
package/README.md
CHANGED
|
@@ -46,6 +46,12 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
|
46
46
|
- **ConfirmDelete:** mensagem de confirmação de exclusão
|
|
47
47
|
- **CustomAvatar e CustomAvatarGroup**: avatares customizados
|
|
48
48
|
- **DataGrid:** componente de tabela construido em cima do [MUI-Datagrid](https://mui.com/x/react-data-grid/)
|
|
49
|
+
- **DataView / DynamicDataView:** listagens com cabeçalho, busca, paginação e versão mobile. Aceitam `error` (ex.: o `error` do RTK Query) e `onRetry` (ex.: `refetch`): quando há erro e a lista está vazia, exibem "Não foi possível carregar os registros" com o botão "Tentar novamente" no lugar do estado vazio, e o loading cede ao erro. Se a falha vier de um refetch com linhas já carregadas, as linhas continuam visíveis. Sem `error`, o comportamento é o mesmo de antes. Ex:
|
|
50
|
+
```
|
|
51
|
+
const { data, error, isLoading, isFetching, refetch } = useGetProductsListQuery(params);
|
|
52
|
+
|
|
53
|
+
<DynamicDataView data={data} error={error} onRetry={refetch} ... />
|
|
54
|
+
```
|
|
49
55
|
- **Delayed:** componente que renderiza um `children` com um delay
|
|
50
56
|
- **Drawer:** componente Drawer construido em cima do [MUI-Drawer](https://mui.com/material-ui/react-drawer/)
|
|
51
57
|
- **FixedProgressBar:** barra de progresso de loading que é apresentado fixo no topo da tela
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { a } from './chunk-TYX6CIOM.js';
|
|
2
|
+
import { a as a$2 } from './chunk-6U5LS7MP.js';
|
|
3
|
+
import { a as a$3 } from './chunk-JUAHRU5E.js';
|
|
4
|
+
import { a as a$4 } from './chunk-RBTYTONM.js';
|
|
5
|
+
import { a as a$1 } from './chunk-ORYUMPWA.js';
|
|
6
|
+
import { useState, useCallback } from 'react';
|
|
7
|
+
import { GRID_CHECKBOX_SELECTION_COL_DEF, DataGridPremium, GridToolbarContainer, GridToolbarColumnsButton, GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExport } from '@mui/x-data-grid-premium';
|
|
8
|
+
import L from '@mui/material/Box';
|
|
9
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
|
+
|
|
11
|
+
var F=o=>o!=null&&o!==!1,c=F;var W=({showToolbar:o,disableExport:e,setFilterButtonEl:i,toolbarContent:n})=>{if(o)return jsxs(GridToolbarContainer,{children:[jsx(GridToolbarColumnsButton,{slotProps:{button:{color:"inherit"}}}),jsx(GridToolbarFilterButton,{ref:i,slotProps:{button:{color:"inherit"}}}),jsx(GridToolbarDensitySelector,{slotProps:{button:{color:"inherit"}}}),!e&&jsx(GridToolbarExport,{slotProps:{button:{color:"inherit"}}}),jsx(L,{sx:{flexGrow:1}}),n]})},f=W;var M=({onRetry:o})=>jsx(a,{role:"alert",variant:"error",iconSize:72,spacing:2,title:"N\xE3o foi poss\xEDvel carregar os registros",description:"Ocorreu um erro ao buscar os dados. Verifique sua conex\xE3o e tente novamente.",maxWidth:420,onPrimaryAction:o,primaryActionLabel:"Tentar novamente",primaryActionProps:{startIcon:jsx(a$1,{icon:"REFRESH_CHANGE",width:18,height:18})}}),h=M;var V=({columns:o,rows:e=[],loading:i,fetching:n,hideFooter:g,sx:C,showToolbar:E,disableExport:P,columnHeaderHeight:y=56,rowHeight:G=76,rowSpacingType:O="margin",getRowSpacing:v=()=>({top:0,bottom:0}),autoHeight:T=!1,toolbarContent:w,slots:S,error:x,onRetry:l,...R})=>{let[B,D]=useState(null),s=useCallback(()=>jsx(h,{onRetry:l}),[l]),H=[{...GRID_CHECKBOX_SELECTION_COL_DEF,width:71},...o];return jsxs(Fragment,{children:[n&&jsx(a$2,{sx:{zIndex:1}}),jsx(DataGridPremium,{columns:H,rows:e,loading:i,autoHeight:T,hideFooter:e.length===0?!0:g,rowHeight:G,columnHeaderHeight:y,getRowSpacing:v,rowSpacingType:O,disableAggregation:!0,disableRowGrouping:!0,slots:{toolbar:f,noRowsOverlay:()=>jsx(a$3,{title:"Nenhum registro encontrado"}),noResultsOverlay:()=>jsx(a$3,{title:"Nenhum registro encontrado"}),loadingOverlay:a$4,...S,...c(x)&&{noRowsOverlay:s,noResultsOverlay:s}},slotProps:{panel:{anchorEl:B},toolbar:{setFilterButtonEl:D,showQuickFilter:!0,disableExport:P,showToolbar:E,toolbarContent:w}},sx:C,...R})]})},ho=V;
|
|
12
|
+
|
|
13
|
+
export { c as a, h as b, ho as c };
|
|
14
|
+
//# sourceMappingURL=chunk-3MKH4GA7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/DataGrid/index.tsx","../src/components/DataGrid/ErrorOverlay/hasError.ts","../src/components/DataGrid/CustomToolbar/index.tsx","../src/components/DataGrid/ErrorOverlay/index.tsx"],"names":["useCallback","useState","DataGridPremium","GRID_CHECKBOX_SELECTION_COL_DEF","hasError","error","hasError_default","Box","GridToolbarColumnsButton","GridToolbarContainer","GridToolbarDensitySelector","GridToolbarExport","GridToolbarFilterButton","jsx","jsxs","CustomToolbar","showToolbar","disableExport","setFilterButtonEl","toolbarContent","CustomToolbar_default","ErrorOverlay","onRetry","StateDisplay_default","Icon_default","ErrorOverlay_default","Fragment","DataGrid","columns","rows","loading","fetching","hideFooter","sx","columnHeaderHeight","rowHeight","rowSpacingType","getRowSpacing","autoHeight","slots","other","filterButtonEl","errorOverlay","COLUMNS","FixedProgressBar_default","EmptyContent_default","LoadingOverlay_default","DataGrid_default"],"mappings":"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","sourcesContent":["import { useCallback, useState } from 'react';\nimport {\n DataGridPremium,\n GRID_CHECKBOX_SELECTION_COL_DEF,\n GridSlots,\n GridSlotsComponentsProps,\n} from '@mui/x-data-grid-premium';\n\nimport EmptyContent from 'components/EmptyContent';\nimport { DataGridProps } from 'types/dataGridProps';\n\nimport FixedProgressBar from '../FixedProgressBar';\n\nimport hasError from './ErrorOverlay/hasError';\nimport CustomToolbar from './CustomToolbar';\nimport ErrorOverlay from './ErrorOverlay';\nimport LoadingOverlay from './LoadingOverlay';\n\nconst DataGrid = ({\n columns,\n rows = [],\n loading,\n fetching,\n hideFooter,\n sx,\n showToolbar,\n disableExport,\n columnHeaderHeight = 56,\n rowHeight = 76,\n rowSpacingType = 'margin',\n getRowSpacing = () => ({\n top: 0,\n bottom: 0,\n }),\n autoHeight = false,\n toolbarContent,\n slots,\n error,\n onRetry,\n ...other\n}: DataGridProps) => {\n const [filterButtonEl, setFilterButtonEl] =\n useState<HTMLButtonElement | null>(null);\n const errorOverlay = useCallback(\n () => <ErrorOverlay onRetry={onRetry} />,\n [onRetry],\n );\n\n const COLUMNS = [\n {\n ...GRID_CHECKBOX_SELECTION_COL_DEF,\n width: 71,\n },\n ...columns,\n ];\n\n return (\n <>\n {fetching && <FixedProgressBar sx={{ zIndex: 1 }} />}\n\n <DataGridPremium\n columns={COLUMNS}\n rows={rows}\n loading={loading}\n autoHeight={autoHeight}\n hideFooter={rows.length === 0 ? true : hideFooter}\n rowHeight={rowHeight}\n columnHeaderHeight={columnHeaderHeight}\n getRowSpacing={getRowSpacing}\n rowSpacingType={rowSpacingType}\n disableAggregation\n disableRowGrouping\n slots={{\n toolbar: CustomToolbar as unknown as GridSlots['toolbar'],\n noRowsOverlay: () => (\n <EmptyContent title=\"Nenhum registro encontrado\" />\n ),\n noResultsOverlay: () => (\n <EmptyContent title=\"Nenhum registro encontrado\" />\n ),\n loadingOverlay: LoadingOverlay,\n ...slots,\n ...(hasError(error) && {\n noRowsOverlay: errorOverlay,\n noResultsOverlay: errorOverlay,\n }),\n }}\n slotProps={{\n panel: { anchorEl: filterButtonEl },\n toolbar: {\n setFilterButtonEl,\n showQuickFilter: true,\n disableExport,\n showToolbar,\n toolbarContent,\n } as unknown as GridSlotsComponentsProps['toolbar'],\n }}\n sx={sx}\n {...other}\n />\n </>\n );\n};\n\nexport default DataGrid;\n","const hasError = (error: unknown) =>\n error !== undefined && error !== null && error !== false;\n\nexport default hasError;\n","import { PropsWithChildren } from 'react';\nimport Box from '@mui/material/Box';\nimport {\n GridToolbarColumnsButton,\n GridToolbarContainer,\n GridToolbarDensitySelector,\n GridToolbarExport,\n GridToolbarFilterButton,\n} from '@mui/x-data-grid-premium';\n\nimport { CustomToolbarProps } from './props';\n\nconst CustomToolbar = ({\n showToolbar,\n disableExport,\n setFilterButtonEl,\n toolbarContent,\n}: PropsWithChildren<CustomToolbarProps>) => {\n if (!showToolbar) return;\n\n return (\n <GridToolbarContainer>\n <GridToolbarColumnsButton slotProps={{ button: { color: 'inherit' } }} />\n <GridToolbarFilterButton\n ref={setFilterButtonEl}\n slotProps={{ button: { color: 'inherit' } }}\n />\n <GridToolbarDensitySelector\n slotProps={{ button: { color: 'inherit' } }}\n />\n {!disableExport && (\n <GridToolbarExport slotProps={{ button: { color: 'inherit' } }} />\n )}\n <Box sx={{ flexGrow: 1 }} />\n {toolbarContent}\n </GridToolbarContainer>\n );\n};\n\nexport default CustomToolbar;\n","import Icon from 'components/Icon';\nimport StateDisplay from 'components/StateDisplay';\n\nimport { ErrorOverlayProps } from './props';\n\nconst ErrorOverlay = ({ onRetry }: ErrorOverlayProps) => (\n <StateDisplay\n role=\"alert\"\n variant=\"error\"\n iconSize={72}\n spacing={2}\n title=\"Não foi possível carregar os registros\"\n description=\"Ocorreu um erro ao buscar os dados. Verifique sua conexão e tente novamente.\"\n maxWidth={420}\n onPrimaryAction={onRetry}\n primaryActionLabel=\"Tentar novamente\"\n primaryActionProps={{\n startIcon: <Icon icon=\"REFRESH_CHANGE\" width={18} height={18} />,\n }}\n />\n);\n\nexport default ErrorOverlay;\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { a as a$9 } from './chunk-W5SQJCRV.js';
|
|
2
|
+
import { a as a$5 } from './chunk-4F2NKGF6.js';
|
|
3
|
+
import { a as a$4 } from './chunk-PRWQQJDL.js';
|
|
4
|
+
import { c, a as a$7, b as b$2 } from './chunk-3MKH4GA7.js';
|
|
5
|
+
import { a as a$6 } from './chunk-6U5LS7MP.js';
|
|
6
|
+
import { i, r, k, n, l, a as a$2, p, j, m, b as b$1, c as c$1, d, q, h, f, e, o, g } from './chunk-XUDTPZHF.js';
|
|
7
|
+
import { a } from './chunk-ORYUMPWA.js';
|
|
8
|
+
import { a as a$8 } from './chunk-F65ZXAGV.js';
|
|
9
|
+
import { a as a$3 } from './chunk-I4PPSW36.js';
|
|
10
|
+
import { b } from './chunk-TXJ45CNA.js';
|
|
11
|
+
import { a as a$1 } from './chunk-LQRRMVFN.js';
|
|
12
|
+
import { memo, forwardRef, useState, useRef, useEffect, useMemo, Children, isValidElement, cloneElement, useCallback, Fragment as Fragment$1 } from 'react';
|
|
13
|
+
import rt from 'react-fast-compare';
|
|
14
|
+
import it from '@mui/material/IconButton';
|
|
15
|
+
import at from '@mui/material/LinearProgress';
|
|
16
|
+
import to from '@mui/material/Stack';
|
|
17
|
+
import ie from '@mui/material/Tooltip';
|
|
18
|
+
import we from '@mui/lab/LoadingButton';
|
|
19
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
20
|
+
import Ko from '@mui/material/Button';
|
|
21
|
+
import oe from '@mui/material/Typography';
|
|
22
|
+
import { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';
|
|
23
|
+
|
|
24
|
+
var $o=(o,e)=>typeof o=="function"?o(e):!!o,be=(o,e)=>{if(o)return o===!0?{}:typeof o=="function"?o(e):o},Re=({actions:o,context:e})=>{let[t,n]=useState(null),[a$1,r]=useState(null),l=useMemo(()=>o.filter(i=>!$o(i.hidden,e)),[o,e]),s=useCallback(async i=>{r(i.actionId);try{await i.handler(e);}finally{r(null);}},[e]),d=useCallback(i=>{if(i.confirmation){n(i);return}s(i).catch(()=>{});},[s]),p=useCallback(async()=>{t&&(await s(t),n(null));},[t,s]),S=useCallback(()=>{a$1||n(null);},[a$1]),c=be(t?.confirmation,e);return jsxs(Fragment,{children:[jsx(m,{children:l.map(i=>{let g=!!a$1||$o(i.disabled,e),m=a$1===i.actionId;return jsx(we,{size:"small",variant:"text",onClick:()=>d(i),loading:m,disabled:g,sx:{color:"text.primary"},startIcon:typeof i.icon=="string"?jsx(a,{icon:i.icon}):i.icon,children:i.label},i.actionId)})}),t&&jsx(a$4,{open:!0,onClose:S,onConfirm:()=>{p().catch(()=>{});},confirming:a$1===t.actionId,modalTitle:c?.title??`${t.action??"Excluir"} ${e.selectedCount} ${t.entityName??"registro"}${e.selectedCount!==1?"s":""}?`,message:c?.message??"Esta a\xE7\xE3o n\xE3o poder\xE1 ser desfeita.",cancelButtonText:c?.cancelButtonText??"Cancelar",confirmButtonText:c?.confirmButtonText??"Sim, excluir"})]})},qo=Re;var De=({title:o,breakpoint:e,actions:t,showActions:n,showAdd:a$1,showHeaderMoreActions:r,showActionsContainer:l,onAdd:s,onOpenMoreActions:d$1})=>jsxs(b$1,{breakpoint:e,children:[jsx(oe,{variant:"overline",color:"text.secondary",noWrap:!0,children:o}),l&&jsxs(c$1,{breakpoint:e,children:[n&&t,a$1&&jsxs(Fragment,{children:[n&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(Ko,{startIcon:jsx(a,{icon:"SIMPLE_ADD"}),variant:"contained",onClick:s,children:"Adicionar"})]}),r&&jsxs(Fragment,{children:[(n||a$1)&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(Ko,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:d$1,children:"Mais"})]})]})]}),Jo=De;var xe=({fetching:o,loading:e,rows:t,mobileSlots:n,mobileSlotsProps:a,slots:r$1,scrollableNodeRef:l,mobileRender:s,hideFooter:d,onPaginationChange:p,rowCount:S,paginationModel:c,error:i,onRetry:g})=>jsxs(a$5,{isFetching:o,fetching:jsx(a$6,{}),isLoading:e,loading:jsx(q,{}),anError:a$7(i)&&t.length===0,error:jsx(b$2,{onRetry:g}),isEmpty:t.length===0,empty:jsxs(to,{flex:1,direction:"column",...a,children:[n&&n,jsx(to,{flex:1,alignItems:"center",justifyContent:"center",children:r$1?.noRowsOverlay?jsx(r$1.noRowsOverlay,{}):jsx(oe,{variant:"body2",color:"text.secondary",children:"Nenhum registro encontrado"})})]}),children:[jsxs(to,{direction:"column",flex:1,minHeight:0,...a,children:[n&&n,jsx(a$8,{fillContent:!0,ref:l,children:t.map(m=>jsx(Fragment$1,{children:s(m)},m.id))})]}),!d&&p&&jsx(h,{children:jsx(r,{count:S,page:c.page,rowsPerPage:c.pageSize,onPageChange:m=>p?.(m,c.pageSize),onRowsPerPageChange:m=>p?.(0,m)})})]}),Xo=xe;var z="datagrid-actions";var Yo=(o,e)=>Children.map(o,t=>{if(!isValidElement(t))return t;let n=t.props.onClick,a={};a.onClick=(...l)=>{e(),n&&n(...l);};let r=t.props;return r?.children&&(a.children=Yo(r.children,e)),cloneElement(t,a)}),He=({children:o,onClose:e})=>o?Yo(o,e):null,ro=memo(He);var Le=({breakpoint:o$1,isMobile:e$1,showSearch:t,showMoreActions:n,showTopbarMoreActions:a$1,showHeaderMoreActions:r,filterButton:l,searchValue:s,onSearch:d,onSearchChange:p,moreActions:S,popover:c})=>jsxs(f,{breakpoint:o$1,children:[jsxs(to,{flex:1,direction:"row",alignItems:"center",id:z,gap:.5,children:[n&&jsxs(Fragment,{children:[a$1&&jsxs(Fragment,{children:[jsx(Ko,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:c.onOpen,children:"Mais"}),!e$1&&jsx(e,{orientation:"vertical",flexItem:!0})]}),(a$1||r)&&jsx(o,{open:c.open,anchorEl:c.open,onClose:c.onClose,disabledArrow:!0,children:jsx(ro,{onClose:c.onClose,children:S})})]}),!e$1&&l&&jsxs(Fragment,{children:[l,a$1&&jsx(e,{orientation:"vertical",flexItem:!0})]})]}),t&&jsxs(g,{breakpoint:o$1,children:[jsx(a$9,{value:s,placeholder:"Buscar",onSearch:i=>d(i??""),onChange:i=>p?.(i.target.value),size:"small",fullWidth:!0,iconPosition:"start"}),e$1&&l&&jsx(to,{ml:1,children:l})]})]}),jo=Le;var Fe=({rowCount:o,page:e,rowsPerPage:t,onPaginationChange:n})=>jsxs(i,{children:[jsxs(to,{direction:"row",alignItems:"center",gap:.5,children:[jsx(oe,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(oe,{variant:"body2",children:o})]}),jsx(r,{count:o,page:e,rowsPerPage:t,onPageChange:a=>n(a,t),onRowsPerPageChange:a=>n(0,a)})]}),lo=memo(Fe);var qe=forwardRef(({children:o,...e},t)=>jsx(Ko,{...e,ref:t,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:o??"Colunas"}));qe.displayName="ColumnsButton";var Ke=({setFilterButtonEl:o})=>{let e=useCallback(t=>{o(t);},[o]);return jsx(a$3,{container:z,children:jsx(GridToolbarColumnsButton,{ref:e,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},so=Ke;var Xe=({slots:o,showColumnButton:e,rowCount:t,paginationModel:n,onPaginationChange:a})=>{let r=useCallback(()=>a?jsx(lo,{rowCount:t,page:n.page,rowsPerPage:n.pageSize,onPaginationChange:a}):null,[t,n,a]);return {dataGridSlots:useMemo(()=>({...o,footer:r,...e&&!o?.toolbar&&{toolbar:so}}),[o,r,e])}},te=Xe;var Ze=({rows:o,rowSelectionModel:e,onRowSelectionModelChange:t,getRowId:n,bulkActions:a})=>{let r=useMemo(()=>Array.isArray(e)?e:[],[e]),l=r.length,s=useMemo(()=>o.map(h=>n(h)),[o,n]),d=useMemo(()=>new Set(s),[s]),p=useMemo(()=>r.reduce((h,A)=>h+(d.has(A)?1:0),0),[r,d]),S=s.length>0&&p===s.length,c=p>0&&!S,i=useCallback(h=>{t&&t(h);},[t]),g=useCallback(()=>{i([]);},[i]),m=useMemo(()=>new Set(r),[r]),D=useMemo(()=>o.filter(h=>m.has(n(h))),[o,m,n]),_=useMemo(()=>({selectedIds:r,selectedRowsInPage:D,selectedCount:l,clearSelection:g}),[r,D,l,g]),W=!!a?.length,v=useCallback((h,A)=>{if(!t)return;if(A){let I=new Set(r),E=[...r];s.forEach(M=>{I.has(M)||E.push(M);}),i(E);return}let G=r.filter(I=>!d.has(I));i(G);},[t,r,s,d,i]);return {selectionModel:r,numSelected:l,allSelected:S,someSelected:c,hasBulkActions:W,bulkActionContext:_,clearSelection:g,handleSelectAllToggle:v}},ne=Ze;var lt=({title:o,header:e,headerProps:t,breakpoint:n$1="md",columns:a$3,rows:r=[],mobileSlots:l$1,mobileSlotsProps:s,mobileRender:d,rowCount:p$1=0,paginationModel:S={page:0,pageSize:25},onPaginationChange:c$1,actions:i,moreActions:g,onAdd:m,onSearch:D,searchValue:_,onSearchChange:W,slots:v,slotProps:h,loading:A,fetching:G,fetchingNextPage:I,containerProps:E={height:562,maxHeight:562},hideFooter:M,showColumnButton:mo=!1,filterButton:po,activeFilters:uo,bulkActions:fo,onRowsScrollEnd:V,scrollEndThreshold:$=200,error:So,onRetry:go,...R})=>{let ho=a$1(),T=b("down",n$1),[ae,le]=useState(null),Co=useRef(null);useEffect(()=>{let P=Co.current;if(!P||!T||!V)return;let Ro=()=>{let{scrollTop:Ce,scrollHeight:Ae,clientHeight:ke}=P;Ae-Ce-ke<=$&&V();};return P.addEventListener("scroll",Ro,{passive:!0}),()=>{P.removeEventListener("scroll",Ro);}},[T,V,$,r.length]);let se=useMemo(()=>R.getRowId??(P=>P.id),[R.getRowId]),{numSelected:q,allSelected:ce,someSelected:de,hasBulkActions:me,bulkActionContext:pe,clearSelection:ue,handleSelectAllToggle:fe}=ne({rows:r,rowSelectionModel:Array.isArray(R.rowSelectionModel)?R.rowSelectionModel:void 0,onRowSelectionModelChange:R.onRowSelectionModelChange,getRowId:se,bulkActions:fo}),{dataGridSlots:Se}=te({slots:v,showColumnButton:mo,rowCount:p$1,paginationModel:S,onPaginationChange:c$1}),Ao=!!D,ko=!!m,To=!!i,K=!!g,Q=T&&K,wo=!T&&K,ge=To||ko||Q,bo=wo||Ao||mo||!!po||!T,he=me&&q>0&&jsxs(k,{children:[jsxs(to,{flexDirection:"row",alignItems:"center",gap:1,flex:1,children:[jsx(ie,{title:"Selecione todos nessa pagina",children:jsx(n,{size:"small",checked:ce,indeterminate:de,onChange:fe})}),jsxs(l,{variant:"body2",children:[q," selecionado",q>1?"s":""]}),jsx(ie,{title:"Desselecionar tudo",children:jsx(it,{size:"small",onClick:ue,"aria-label":"Desselecionar tudo",sx:{color:"primary.main"},children:jsx(a,{icon:"CLOSE_MARK_BUTTON",width:18,height:18})})})]}),jsx(qo,{actions:fo??[],context:pe})]});return jsxs(a$2,{breakpoint:n$1,...E,flex:A?1:void 0,minHeight:A||r.length===0?562:void 0,children:[e?jsx(to,{p:3,...t,children:e}):jsxs(Fragment,{children:[jsx(Jo,{title:o,breakpoint:n$1,actions:i,showActions:To,showAdd:ko,showHeaderMoreActions:Q,showActionsContainer:ge,onAdd:m,onOpenMoreActions:ho.onOpen}),bo&&jsx(jo,{breakpoint:n$1,isMobile:T,showSearch:Ao,showMoreActions:K,showTopbarMoreActions:wo,showHeaderMoreActions:Q,filterButton:po,searchValue:_,onSearch:D,onSearchChange:W,moreActions:g,popover:ho}),uo&&uo,!bo&&jsx(p,{})]}),T?jsx(Xo,{fetching:G,loading:A,rows:r,mobileSlots:l$1,mobileSlotsProps:s,slots:v,scrollableNodeRef:Co,mobileRender:d,hideFooter:M,onPaginationChange:c$1,rowCount:p$1,paginationModel:S,error:So,onRetry:go}):jsxs(j,{children:[he,jsx(c,{columns:a$3,rows:r,slots:Se,slotProps:{panel:{anchorEl:ae},toolbar:{setFilterButtonEl:le,showQuickFilter:!0},...h},columnHeaderHeight:48,getRowHeight:()=>68,loading:A,fetching:G,hideFooter:M,onRowsScrollEnd:V,scrollEndThreshold:$,error:So,onRetry:go,...R})]}),I&&jsx(at,{})]})},On=memo(lt,rt);
|
|
25
|
+
|
|
26
|
+
export { ro as a, lo as b, so as c, On as d };
|
|
27
|
+
//# sourceMappingURL=chunk-BVWXGGJY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/DataView/index.tsx","../src/components/DataView/BulkActionsBar.tsx","../src/components/DataView/DataViewHeader.tsx","../src/components/DataView/DataViewMobileContent.tsx","../src/components/DataView/DataViewTopbar.tsx","../src/components/DataView/contants.ts","../src/components/DataView/EnhancedMoreActions.ts","../src/components/DataView/use-data-grid-slots.tsx","../src/components/DataView/DesktopFooter.tsx","../src/components/DataView/Toolbar.tsx","../src/components/DataView/use-selection-state.ts"],"names":["memo","useEffect","useMemo","useRef","useState","isEqual","IconButton","LinearProgress","Stack","Tooltip","useCallback","LoadingButton","Fragment","jsx","jsxs","resolveDynamicBoolean","value","context","resolveConfirmation","confirmation","BulkActionsBar","actions","confirmAction","setConfirmAction","runningActionId","setRunningActionId","visibleActions","action","executeAction","handleActionClick","handleConfirm","handleCloseConfirm","confirmationConfig","SelectionActions","disabled","loading","Icon_default","Confirm_default","BulkActionsBar_default","Button","Typography","DataViewHeader","title","breakpoint","showActions","showAdd","showHeaderMoreActions","showActionsContainer","onAdd","onOpenMoreActions","Header","ActionsContainer","ActionsDivider","DataViewHeader_default","DataViewMobileContent","fetching","rows","mobileSlots","mobileSlotsProps","slots","scrollableNodeRef","mobileRender","hideFooter","onPaginationChange","rowCount","paginationModel","error","onRetry","Result_default","FixedProgressBar_default","LoadingProgress","hasError_default","ErrorOverlay_default","Scrollbar_default","row","MobilePaginationContainer","Pagination_default","newPage","newRowsPerPage","DataViewMobileContent_default","DATAGRID_ACTIONS","Children","cloneElement","isValidElement","createEnhanceMoreActions","children","onClose","child","originalOnClick","enhancedProps","args","childProps","EnhancedMoreActions","EnhancedMoreActions_default","DataViewTopbar","isMobile","showSearch","showMoreActions","showTopbarMoreActions","filterButton","searchValue","onSearch","onSearchChange","moreActions","popover","Topbar","ToolbarActionsDivider","MoreActionsPopover","SearchContainer","SearchInput_default","v","e","DataViewTopbar_default","DesktopFooter","page","rowsPerPage","DesktopPaginationContainer","DesktopFooter_default","forwardRef","GridToolbarColumnsButton","ColumnsButton","props","ref","Toolbar","setFilterButtonEl","handleColumnsButtonRef","button","Portal_default","Toolbar_default","useDataGridSlots","showColumnButton","FooterComponent","use_data_grid_slots_default","useSelectionState","rowSelectionModel","onRowSelectionModelChange","getRowId","bulkActions","selectionModel","numSelected","pageRowIds","pageRowIdSet","selectedOnPageCount","count","id","allSelected","someSelected","emitRowSelectionChange","nextSelection","clearSelection","selectedIdSet","selectedRowsInPage","bulkActionContext","hasBulkActions","handleSelectAllToggle","_event","checked","selectedIds","use_selection_state_default","DataViewComponent","header","headerProps","columns","slotProps","fetchingNextPage","containerProps","activeFilters","onRowsScrollEnd","scrollEndThreshold","others","usePopover_default","useResponsive_default","filterButtonEl","node","handleScroll","scrollTop","scrollHeight","clientHeight","dataGridSlots","showTopbar","selectionOverlay","SelectionOverlay","SelectionCheckbox","SelectionCount","Container","TopbarDivider","DataGridWrapper","DataGrid_default","DataView_default"],"mappings":"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","sourcesContent":["import { memo, useEffect, useMemo, useRef, useState } from 'react';\nimport isEqual from 'react-fast-compare';\nimport IconButton from '@mui/material/IconButton';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport {\n GridRowId,\n GridSlotsComponentsProps,\n GridValidRowModel,\n} from '@mui/x-data-grid-premium';\n\nimport DataGrid from 'components/DataGrid';\nimport Icon from 'components/Icon';\nimport usePopover from 'hooks/usePopover';\nimport useResponsive from 'hooks/useResponsive';\n\nimport BulkActionsBar from './BulkActionsBar';\nimport DataViewHeader from './DataViewHeader';\nimport DataViewMobileContent from './DataViewMobileContent';\nimport DataViewTopbar from './DataViewTopbar';\nimport { DataViewProps } from './props';\nimport {\n ActionsContainer,\n ActionsDivider,\n Container,\n DataGridWrapper,\n Header,\n MobilePaginationContainer,\n MoreActionsPopover,\n SearchContainer,\n SelectionActions,\n SelectionCheckbox,\n SelectionCount,\n SelectionOverlay,\n ToolbarActionsDivider,\n Topbar,\n TopbarDivider,\n} from './styles';\nimport useDataGridSlots from './use-data-grid-slots';\nimport useSelectionState from './use-selection-state';\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 bulkActions,\n onRowsScrollEnd,\n scrollEndThreshold = 200,\n error,\n onRetry,\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 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 return () => {\n node.removeEventListener('scroll', handleScroll);\n };\n }, [isMobile, onRowsScrollEnd, scrollEndThreshold, rows.length]);\n\n const getRowId = useMemo(\n () =>\n (others.getRowId ?? ((row: GridValidRowModel) => row.id)) as (\n row: GridValidRowModel,\n ) => GridRowId,\n [others.getRowId],\n );\n\n const {\n numSelected,\n allSelected,\n someSelected,\n hasBulkActions,\n bulkActionContext,\n clearSelection,\n handleSelectAllToggle,\n } = useSelectionState<T>({\n rows,\n rowSelectionModel: Array.isArray(others.rowSelectionModel)\n ? others.rowSelectionModel\n : undefined,\n onRowSelectionModelChange: others.onRowSelectionModelChange as\n | ((model: GridRowId[], details?: unknown) => void)\n | undefined,\n getRowId,\n bulkActions,\n });\n\n const { dataGridSlots } = useDataGridSlots({\n slots,\n showColumnButton,\n rowCount,\n paginationModel,\n onPaginationChange,\n });\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 selectionOverlay = hasBulkActions && numSelected > 0 && (\n <SelectionOverlay>\n <Stack flexDirection=\"row\" alignItems=\"center\" gap={1} flex={1}>\n <Tooltip title=\"Selecione todos nessa pagina\">\n <SelectionCheckbox\n size=\"small\"\n checked={allSelected}\n indeterminate={someSelected}\n onChange={handleSelectAllToggle}\n />\n </Tooltip>\n\n <SelectionCount variant=\"body2\">\n {numSelected} selecionado{numSelected > 1 ? 's' : ''}\n </SelectionCount>\n\n <Tooltip title=\"Desselecionar tudo\">\n <IconButton\n size=\"small\"\n onClick={clearSelection}\n aria-label=\"Desselecionar tudo\"\n sx={{ color: 'primary.main' }}\n >\n <Icon icon=\"CLOSE_MARK_BUTTON\" width={18} height={18} />\n </IconButton>\n </Tooltip>\n </Stack>\n\n <BulkActionsBar actions={bulkActions ?? []} context={bulkActionContext} />\n </SelectionOverlay>\n );\n\n return (\n <Container\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 <DataViewHeader\n title={title}\n breakpoint={breakpoint}\n actions={actions}\n showActions={showActions}\n showAdd={showAdd}\n showHeaderMoreActions={showHeaderMoreActions}\n showActionsContainer={showActionsContainer}\n onAdd={onAdd}\n onOpenMoreActions={popover.onOpen}\n />\n\n {showTopbar && (\n <DataViewTopbar\n breakpoint={breakpoint}\n isMobile={isMobile}\n showSearch={showSearch}\n showMoreActions={showMoreActions}\n showTopbarMoreActions={showTopbarMoreActions}\n showHeaderMoreActions={showHeaderMoreActions}\n filterButton={filterButton}\n searchValue={searchValue}\n onSearch={onSearch}\n onSearchChange={onSearchChange}\n moreActions={moreActions}\n popover={popover}\n />\n )}\n\n {activeFilters && activeFilters}\n\n {!showTopbar && <TopbarDivider />}\n </>\n )}\n\n {isMobile ? (\n <DataViewMobileContent<T>\n fetching={fetching}\n loading={loading}\n rows={rows}\n mobileSlots={mobileSlots}\n mobileSlotsProps={mobileSlotsProps}\n slots={slots}\n scrollableNodeRef={scrollableNodeRef}\n mobileRender={mobileRender}\n hideFooter={hideFooter}\n onPaginationChange={onPaginationChange}\n rowCount={rowCount}\n paginationModel={paginationModel}\n error={error}\n onRetry={onRetry}\n />\n ) : (\n <DataGridWrapper>\n {selectionOverlay}\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 error={error}\n onRetry={onRetry}\n {...others}\n />\n </DataGridWrapper>\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 DataGridWrapper,\n Header,\n MobilePaginationContainer,\n MoreActionsPopover,\n SearchContainer,\n SelectionActions,\n SelectionCount,\n SelectionOverlay,\n ToolbarActionsDivider,\n Topbar,\n};\nexport type {\n BulkAction,\n BulkActionConfirmation,\n BulkActionContext,\n} from './bulkActions';\nexport { default as DesktopFooter } from './DesktopFooter';\nexport { default as EnhancedMoreActions } from './EnhancedMoreActions';\nexport { default as Toolbar } from './Toolbar';\n","import { useCallback, useMemo, useState } from 'react';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport { GridValidRowModel } from '@mui/x-data-grid-premium';\n\nimport Confirm from 'components/Confirm';\nimport Icon from 'components/Icon';\nimport { IconName } from 'types/icon';\n\nimport type {\n BulkAction,\n BulkActionConfirmation,\n BulkActionContext,\n} from './bulkActions';\nimport type { BulkActionsBarProps } from './props';\nimport { SelectionActions } from './styles';\n\nconst resolveDynamicBoolean = <T extends GridValidRowModel>(\n value: boolean | ((context: BulkActionContext<T>) => boolean) | undefined,\n context: BulkActionContext<T>,\n) => (typeof value === 'function' ? value(context) : !!value);\n\nconst resolveConfirmation = <T extends GridValidRowModel>(\n confirmation: BulkAction<T>['confirmation'],\n context: BulkActionContext<T>,\n): BulkActionConfirmation | undefined => {\n if (!confirmation) return undefined;\n if (confirmation === true) return {};\n if (typeof confirmation === 'function') return confirmation(context);\n\n return confirmation;\n};\n\nconst BulkActionsBar = <T extends GridValidRowModel>({\n actions,\n context,\n}: BulkActionsBarProps<T>) => {\n const [confirmAction, setConfirmAction] = useState<BulkAction<T> | null>(\n null,\n );\n const [runningActionId, setRunningActionId] = useState<string | null>(null);\n\n const visibleActions = useMemo(\n () =>\n actions.filter(action => !resolveDynamicBoolean(action.hidden, context)),\n [actions, context],\n );\n\n const executeAction = useCallback(\n async (action: BulkAction<T>) => {\n setRunningActionId(action.actionId);\n try {\n await action.handler(context);\n } finally {\n setRunningActionId(null);\n }\n },\n [context],\n );\n\n const handleActionClick = useCallback(\n (action: BulkAction<T>) => {\n if (action.confirmation) {\n setConfirmAction(action);\n return;\n }\n\n void executeAction(action).catch(() => undefined);\n },\n [executeAction],\n );\n\n const handleConfirm = useCallback(async () => {\n if (!confirmAction) return;\n await executeAction(confirmAction);\n setConfirmAction(null);\n }, [confirmAction, executeAction]);\n\n const handleCloseConfirm = useCallback(() => {\n if (runningActionId) return;\n setConfirmAction(null);\n }, [runningActionId]);\n\n const confirmationConfig = resolveConfirmation(\n confirmAction?.confirmation,\n context,\n );\n\n return (\n <>\n <SelectionActions>\n {visibleActions.map(action => {\n const disabled =\n !!runningActionId ||\n resolveDynamicBoolean(action.disabled, context);\n const loading = runningActionId === action.actionId;\n\n return (\n <LoadingButton\n key={action.actionId}\n size=\"small\"\n variant=\"text\"\n onClick={() => handleActionClick(action)}\n loading={loading}\n disabled={disabled}\n sx={{ color: 'text.primary' }}\n startIcon={\n typeof action.icon === 'string' ? (\n <Icon icon={action.icon as IconName} />\n ) : (\n action.icon\n )\n }\n >\n {action.label}\n </LoadingButton>\n );\n })}\n </SelectionActions>\n\n {confirmAction && (\n <Confirm\n open\n onClose={handleCloseConfirm}\n onConfirm={() => {\n void handleConfirm().catch(() => undefined);\n }}\n confirming={runningActionId === confirmAction.actionId}\n modalTitle={\n confirmationConfig?.title ??\n `${confirmAction.action ?? 'Excluir'} ${context.selectedCount} ${confirmAction.entityName ?? 'registro'}${context.selectedCount !== 1 ? 's' : ''}?`\n }\n message={\n confirmationConfig?.message ?? 'Esta ação não poderá ser desfeita.'\n }\n cancelButtonText={confirmationConfig?.cancelButtonText ?? 'Cancelar'}\n confirmButtonText={\n confirmationConfig?.confirmButtonText ?? 'Sim, excluir'\n }\n />\n )}\n </>\n );\n};\n\nexport default BulkActionsBar;\n","import Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\n\nimport Icon from 'components/Icon';\n\nimport { DataViewHeaderProps } from './props';\nimport { ActionsContainer, ActionsDivider, Header } from './styles';\n\nconst DataViewHeader = ({\n title,\n breakpoint,\n actions,\n showActions,\n showAdd,\n showHeaderMoreActions,\n showActionsContainer,\n onAdd,\n onOpenMoreActions,\n}: DataViewHeaderProps) => (\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 && <ActionsDivider orientation=\"vertical\" flexItem />}\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={onOpenMoreActions}\n >\n Mais\n </Button>\n </>\n )}\n </ActionsContainer>\n )}\n </Header>\n);\n\nexport default DataViewHeader;\n","import { Fragment } from 'react';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport { GridValidRowModel } from '@mui/x-data-grid-premium';\n\nimport ErrorOverlay from 'components/DataGrid/ErrorOverlay';\nimport hasError from 'components/DataGrid/ErrorOverlay/hasError';\nimport FixedProgressBar from 'components/FixedProgressBar';\nimport Result from 'components/Result';\nimport Scrollbar from 'components/Scrollbar';\n\nimport Pagination from './Pagination';\nimport { DataViewMobileContentProps } from './props';\nimport { LoadingProgress, MobilePaginationContainer } from './styles';\n\nconst DataViewMobileContent = <T extends GridValidRowModel>({\n fetching,\n loading,\n rows,\n mobileSlots,\n mobileSlotsProps,\n slots,\n scrollableNodeRef,\n mobileRender,\n hideFooter,\n onPaginationChange,\n rowCount,\n paginationModel,\n error,\n onRetry,\n}: DataViewMobileContentProps<T>) => (\n <Result\n isFetching={fetching}\n fetching={<FixedProgressBar />}\n isLoading={loading}\n loading={<LoadingProgress />}\n anError={hasError(error) && rows.length === 0}\n error={<ErrorOverlay onRetry={onRetry} />}\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\" flex={1} minHeight={0} {...mobileSlotsProps}>\n {mobileSlots && mobileSlots}\n\n <Scrollbar fillContent ref={scrollableNodeRef}>\n {rows.map(row => (\n <Fragment key={(row as unknown as { id: string }).id}>\n {mobileRender(row)}\n </Fragment>\n ))}\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?.(0, newRowsPerPage)\n }\n />\n </MobilePaginationContainer>\n )}\n </Result>\n);\n\nexport default DataViewMobileContent;\n","import Button from '@mui/material/Button';\nimport Stack from '@mui/material/Stack';\n\nimport Icon from 'components/Icon';\nimport SearchInput from 'components/SearchInput';\n\nimport { DATAGRID_ACTIONS } from './contants';\nimport EnhancedMoreActions from './EnhancedMoreActions';\nimport { DataViewTopbarProps } from './props';\nimport {\n MoreActionsPopover,\n SearchContainer,\n ToolbarActionsDivider,\n Topbar,\n} from './styles';\n\nconst DataViewTopbar = ({\n breakpoint,\n isMobile,\n showSearch,\n showMoreActions,\n showTopbarMoreActions,\n showHeaderMoreActions,\n filterButton,\n searchValue,\n onSearch,\n onSearchChange,\n moreActions,\n popover,\n}: DataViewTopbarProps) => (\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 orientation=\"vertical\" flexItem />\n )}\n </>\n )}\n\n {(showTopbarMoreActions || showHeaderMoreActions) && (\n <MoreActionsPopover\n open={popover.open}\n anchorEl={popover.open}\n onClose={popover.onClose}\n disabledArrow={true}\n >\n <EnhancedMoreActions onClose={popover.onClose}>\n {moreActions}\n </EnhancedMoreActions>\n </MoreActionsPopover>\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={v => onSearch!(v ?? '')}\n onChange={e => onSearchChange?.(e.target.value)}\n size=\"small\"\n fullWidth\n iconPosition=\"start\"\n />\n {isMobile && filterButton && <Stack ml={1}>{filterButton}</Stack>}\n </SearchContainer>\n )}\n </Topbar>\n);\n\nexport default DataViewTopbar;\n","export const DATAGRID_ACTIONS = 'datagrid-actions';\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 { useCallback, useMemo } from 'react';\n\nimport DesktopFooter from './DesktopFooter';\nimport { DataGridSlotsProps } from './props';\nimport { UseDataGridSlotsProps, UseDataGridSlotsReturn } from './props';\nimport Toolbar from './Toolbar';\n\nconst useDataGridSlots = ({\n slots,\n showColumnButton,\n rowCount,\n paginationModel,\n onPaginationChange,\n}: UseDataGridSlotsProps): UseDataGridSlotsReturn => {\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 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 { dataGridSlots };\n};\n\nexport default useDataGridSlots;\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(0, newRowsPerPage)\n }\n />\n </DesktopPaginationContainer>\n );\n};\n\nexport default memo(DesktopFooter);\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","import { ChangeEvent, useCallback, useMemo } from 'react';\nimport { GridRowId, GridValidRowModel } from '@mui/x-data-grid-premium';\n\nimport type { BulkAction, BulkActionContext } from './bulkActions';\n\ninterface UseSelectionStateProps<T extends GridValidRowModel> {\n rows: readonly T[];\n rowSelectionModel: GridRowId[] | undefined;\n onRowSelectionModelChange:\n | ((model: GridRowId[], details?: unknown) => void)\n | undefined;\n getRowId: (row: GridValidRowModel) => GridRowId;\n bulkActions: BulkAction<T>[] | undefined;\n}\n\ninterface UseSelectionStateReturn<T extends GridValidRowModel> {\n selectionModel: GridRowId[];\n numSelected: number;\n allSelected: boolean;\n someSelected: boolean;\n hasBulkActions: boolean;\n bulkActionContext: BulkActionContext<T>;\n clearSelection: () => void;\n handleSelectAllToggle: (\n event: ChangeEvent<HTMLInputElement>,\n checked: boolean,\n ) => void;\n}\n\nconst useSelectionState = <T extends GridValidRowModel>({\n rows,\n rowSelectionModel,\n onRowSelectionModelChange,\n getRowId,\n bulkActions,\n}: UseSelectionStateProps<T>): UseSelectionStateReturn<T> => {\n const selectionModel = useMemo(() => {\n if (Array.isArray(rowSelectionModel)) return rowSelectionModel;\n return [];\n }, [rowSelectionModel]);\n\n const numSelected = selectionModel.length;\n\n const pageRowIds = useMemo(\n () => rows.map(row => getRowId(row)),\n [rows, getRowId],\n );\n\n const pageRowIdSet = useMemo(() => new Set(pageRowIds), [pageRowIds]);\n\n const selectedOnPageCount = useMemo(\n () =>\n selectionModel.reduce<number>(\n (count, id) => count + (pageRowIdSet.has(id) ? 1 : 0),\n 0,\n ),\n [selectionModel, pageRowIdSet],\n );\n\n const allSelected =\n pageRowIds.length > 0 && selectedOnPageCount === pageRowIds.length;\n const someSelected = selectedOnPageCount > 0 && !allSelected;\n\n const emitRowSelectionChange = useCallback(\n (nextSelection: GridRowId[]) => {\n if (!onRowSelectionModelChange) return;\n onRowSelectionModelChange(nextSelection);\n },\n [onRowSelectionModelChange],\n );\n\n const clearSelection = useCallback(() => {\n emitRowSelectionChange([]);\n }, [emitRowSelectionChange]);\n\n const selectedIdSet = useMemo(\n () => new Set(selectionModel),\n [selectionModel],\n );\n\n const selectedRowsInPage = useMemo(\n () => rows.filter(row => selectedIdSet.has(getRowId(row))) as T[],\n [rows, selectedIdSet, getRowId],\n );\n\n const bulkActionContext: BulkActionContext<T> = useMemo(\n () => ({\n selectedIds: selectionModel,\n selectedRowsInPage: selectedRowsInPage as T[],\n selectedCount: numSelected,\n clearSelection,\n }),\n [selectionModel, selectedRowsInPage, numSelected, clearSelection],\n );\n\n const hasBulkActions = !!bulkActions?.length;\n\n const handleSelectAllToggle = useCallback(\n (_event: ChangeEvent<HTMLInputElement>, checked: boolean) => {\n if (!onRowSelectionModelChange) return;\n\n if (checked) {\n const selectedIds = new Set(selectionModel);\n const nextSelection = [...selectionModel];\n pageRowIds.forEach(id => {\n if (!selectedIds.has(id)) nextSelection.push(id);\n });\n emitRowSelectionChange(nextSelection);\n return;\n }\n\n const nextSelection = selectionModel.filter(id => !pageRowIdSet.has(id));\n emitRowSelectionChange(nextSelection);\n },\n [\n onRowSelectionModelChange,\n selectionModel,\n pageRowIds,\n pageRowIdSet,\n emitRowSelectionChange,\n ],\n );\n\n return {\n selectionModel,\n numSelected,\n allSelected,\n someSelected,\n hasBulkActions,\n bulkActionContext,\n clearSelection,\n handleSelectAllToggle,\n };\n};\n\nexport type { UseSelectionStateProps, UseSelectionStateReturn };\nexport default useSelectionState;\n"]}
|
|
@@ -12,11 +12,12 @@ import { a as a$a } from '../../../chunk-NS4YQBCL.js';
|
|
|
12
12
|
import { d as d$2, h as h$1, m } from '../../../chunk-2W5FGLTC.js';
|
|
13
13
|
import { h, c as c$2 } from '../../../chunk-OF6623HG.js';
|
|
14
14
|
import { a as a$7 } from '../../../chunk-MTJT2RGA.js';
|
|
15
|
-
import { d as d$1 } from '../../../chunk-
|
|
15
|
+
import { d as d$1 } from '../../../chunk-BVWXGGJY.js';
|
|
16
16
|
import '../../../chunk-W5SQJCRV.js';
|
|
17
17
|
import '../../../chunk-4F2NKGF6.js';
|
|
18
18
|
import '../../../chunk-PRWQQJDL.js';
|
|
19
|
-
import '../../../chunk-
|
|
19
|
+
import '../../../chunk-3MKH4GA7.js';
|
|
20
|
+
import '../../../chunk-TYX6CIOM.js';
|
|
20
21
|
import '../../../chunk-6U5LS7MP.js';
|
|
21
22
|
import '../../../chunk-JUAHRU5E.js';
|
|
22
23
|
import '../../../chunk-NIQW2J3M.js';
|