@zydon/common 2.8.78 → 2.8.80

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.
Files changed (45) hide show
  1. package/dist/{chunk-ANEPP6QT.js → chunk-ERLI5GAP.js} +3 -3
  2. package/dist/{chunk-ANEPP6QT.js.map → chunk-ERLI5GAP.js.map} +1 -1
  3. package/dist/chunk-K2PWIYEM.js +4 -0
  4. package/dist/chunk-K2PWIYEM.js.map +1 -0
  5. package/dist/chunk-UQJKTFVZ.js +27 -0
  6. package/dist/chunk-UQJKTFVZ.js.map +1 -0
  7. package/dist/{chunk-SP5U3DJP.js → chunk-UWTX4JMW.js} +4 -4
  8. package/dist/chunk-UWTX4JMW.js.map +1 -0
  9. package/dist/components/Analytics/OverviewAnalytics/index.d.ts +1 -1
  10. package/dist/components/Analytics/OverviewAnalytics/index.js +2 -2
  11. package/dist/components/Analytics/OverviewAnalytics/index.js.map +1 -1
  12. package/dist/components/Analytics/PartnerAnalysis/index.d.ts +82 -2
  13. package/dist/components/Analytics/PartnerAnalysis/index.js +35 -17
  14. package/dist/components/Analytics/PartnerAnalysis/index.js.map +1 -1
  15. package/dist/components/Analytics/index.d.ts +2 -1
  16. package/dist/components/Analytics/index.js +2 -2
  17. package/dist/components/Analytics/index.js.map +1 -1
  18. package/dist/components/Avatar/index.d.ts +1 -1
  19. package/dist/components/DataView/index.d.ts +1 -1
  20. package/dist/components/DataView/index.js +1 -1
  21. package/dist/components/DynamicDataView/index.js +1 -1
  22. package/dist/hooks/useSnackbar.d.ts +1 -1
  23. package/dist/index.d.ts +2 -2
  24. package/dist/theme/core/index.d.ts +1 -1
  25. package/dist/theme/styles/index.d.ts +13 -13
  26. package/dist/types/analytics.d.ts +3 -23
  27. package/dist/types/analytics.js +1 -1
  28. package/dist/types/overviewAnalytics.d.ts +1 -1
  29. package/dist/types/partnerAnalysis.d.ts +4 -27
  30. package/dist/types/partnerAnalysis.js +1 -1
  31. package/dist/utils/analytics.d.ts +24 -0
  32. package/dist/utils/analytics.js +2 -0
  33. package/dist/utils/analytics.js.map +1 -0
  34. package/dist/utils/partnerAnalysis.d.ts +28 -0
  35. package/dist/utils/partnerAnalysis.js +2 -0
  36. package/dist/utils/partnerAnalysis.js.map +1 -0
  37. package/dist/utils/periodDates.d.ts +2 -1
  38. package/dist/utils/periodDates.js +2 -2
  39. package/package.json +1 -1
  40. package/dist/chunk-BHYLHO5P.js +0 -4
  41. package/dist/chunk-BHYLHO5P.js.map +0 -1
  42. package/dist/chunk-SP5U3DJP.js.map +0 -1
  43. package/dist/chunk-Z275MVEP.js +0 -27
  44. package/dist/chunk-Z275MVEP.js.map +0 -1
  45. package/dist/{index-c8f1e6e7.d.ts → index-5a5e5dc8.d.ts} +12 -12
@@ -1,27 +0,0 @@
1
- import { a as a$9 } from './chunk-R2BCPHRH.js';
2
- import { a as a$6 } from './chunk-4F2NKGF6.js';
3
- import { a as a$3 } from './chunk-NMGWHSNZ.js';
4
- import { a as a$7 } from './chunk-6U5LS7MP.js';
5
- import { a as a$5 } from './chunk-PRWQQJDL.js';
6
- import { i, r, k, n, l, a as a$2, p, j, m, b as b$1, c, d, q, h, f, e, o, g } from './chunk-XUDTPZHF.js';
7
- import { a as a$8 } from './chunk-F65ZXAGV.js';
8
- import { a as a$4 } from './chunk-I4PPSW36.js';
9
- import { a } from './chunk-2GTD4JW2.js';
10
- import { a as a$1 } from './chunk-LQRRMVFN.js';
11
- import { b } from './chunk-2ZJUGM2S.js';
12
- import { memo, forwardRef, useState, useRef, useEffect, useMemo, Children, isValidElement, cloneElement, useCallback, Fragment as Fragment$1 } from 'react';
13
- import ot from 'react-fast-compare';
14
- import et from '@mui/material/IconButton';
15
- import tt from '@mui/material/LinearProgress';
16
- import to from '@mui/material/Stack';
17
- import ee from '@mui/material/Tooltip';
18
- import Ce from '@mui/lab/LoadingButton';
19
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
20
- import _o from '@mui/material/Button';
21
- import Xo from '@mui/material/Typography';
22
- import { GridToolbarColumnsButton } from '@mui/x-data-grid-premium';
23
-
24
- var Fo=(o,e)=>typeof o=="function"?o(e):!!o,Ae=(o,e)=>{if(o)return o===!0?{}:typeof o=="function"?o(e):o},ke=({actions:o,context:e})=>{let[t,r]=useState(null),[a$1,i]=useState(null),l=useMemo(()=>o.filter(n=>!Fo(n.hidden,e)),[o,e]),s=useCallback(async n=>{i(n.actionId);try{await n.handler(e);}finally{i(null);}},[e]),d=useCallback(n=>{if(n.confirmation){r(n);return}s(n).catch(()=>{});},[s]),m$1=useCallback(async()=>{t&&(await s(t),r(null));},[t,s]),f=useCallback(()=>{a$1||r(null);},[a$1]),c=Ae(t?.confirmation,e);return jsxs(Fragment,{children:[jsx(m,{children:l.map(n=>{let h=!!a$1||Fo(n.disabled,e),k=a$1===n.actionId;return jsx(Ce,{size:"small",variant:"text",onClick:()=>d(n),loading:k,disabled:h,sx:{color:"text.primary"},startIcon:typeof n.icon=="string"?jsx(a,{icon:n.icon}):n.icon,children:n.label},n.actionId)})}),t&&jsx(a$5,{open:!0,onClose:f,onConfirm:()=>{m$1().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"})]})},zo=ke;var Re=({title:o,breakpoint:e,actions:t,showActions:r,showAdd:a$1,showHeaderMoreActions:i,showActionsContainer:l,onAdd:s,onOpenMoreActions:d$1})=>jsxs(b$1,{breakpoint:e,children:[jsx(Xo,{variant:"overline",color:"text.secondary",noWrap:!0,children:o}),l&&jsxs(c,{breakpoint:e,children:[r&&t,a$1&&jsxs(Fragment,{children:[r&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(_o,{startIcon:jsx(a,{icon:"SIMPLE_ADD"}),variant:"contained",onClick:s,children:"Adicionar"})]}),i&&jsxs(Fragment,{children:[(r||a$1)&&jsx(d,{orientation:"vertical",flexItem:!0}),jsx(_o,{color:"inherit",startIcon:jsx(a,{icon:"MORE_BOLD"}),size:"small",onClick:d$1,children:"Mais"})]})]})]}),$o=Re;var De=({fetching:o,loading:e,rows:t,mobileSlots:r$1,mobileSlotsProps:a,slots:i,scrollableNodeRef:l,mobileRender:s,hideFooter:d,onPaginationChange:m,rowCount:f,paginationModel:c})=>jsxs(a$6,{isFetching:o,fetching:jsx(a$7,{}),isLoading:e,loading:jsx(q,{}),isEmpty:t.length===0,empty:jsxs(to,{flex:1,direction:"column",...a,children:[r$1&&r$1,jsx(to,{flex:1,alignItems:"center",justifyContent:"center",children:i?.noRowsOverlay?jsx(i.noRowsOverlay,{}):jsx(Xo,{variant:"body2",color:"text.secondary",children:"Nenhum registro encontrado"})})]}),children:[jsxs(to,{direction:"column",flex:1,minHeight:0,...a,children:[r$1&&r$1,jsx(a$8,{fillContent:!0,ref:l,children:t.map(n=>jsx(Fragment$1,{children:s(n)},n.id))})]}),!d&&m&&jsx(h,{children:jsx(r,{count:f,page:c.page,rowsPerPage:c.pageSize,onPageChange:n=>m?.(n,c.pageSize),onRowsPerPageChange:n=>m?.(0,n)})})]}),qo=De;var z="datagrid-actions";var Ko=(o,e)=>Children.map(o,t=>{if(!isValidElement(t))return t;let r=t.props.onClick,a={};a.onClick=(...l)=>{e(),r&&r(...l);};let i=t.props;return i?.children&&(a.children=Ko(i.children,e)),cloneElement(t,a)}),ve=({children:o,onClose:e})=>o?Ko(o,e):null,ro=memo(ve);var Ve=({breakpoint:o$1,isMobile:e$1,showSearch:t,showMoreActions:r,showTopbarMoreActions:a$1,showHeaderMoreActions:i,filterButton:l,searchValue:s,onSearch:d,onSearchChange:m,moreActions:f$1,popover:c})=>jsxs(f,{breakpoint:o$1,children:[jsxs(to,{flex:1,direction:"row",alignItems:"center",id:z,gap:.5,children:[r&&jsxs(Fragment,{children:[a$1&&jsxs(Fragment,{children:[jsx(_o,{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||i)&&jsx(o,{open:c.open,anchorEl:c.open,onClose:c.onClose,disabledArrow:!0,children:jsx(ro,{onClose:c.onClose,children:f$1})})]}),!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:n=>d(n??""),onChange:n=>m?.(n.target.value),size:"small",fullWidth:!0,iconPosition:"start"}),e$1&&l&&jsx(to,{ml:1,children:l})]})]}),Jo=Ve;var Oe=({rowCount:o,page:e,rowsPerPage:t,onPaginationChange:r$1})=>jsxs(i,{children:[jsxs(to,{direction:"row",alignItems:"center",gap:.5,children:[jsx(Xo,{variant:"body2",color:"text.disabled",children:"Total de itens:"}),jsx(Xo,{variant:"body2",children:o})]}),jsx(r,{count:o,page:e,rowsPerPage:t,onPageChange:a=>r$1(a,t),onRowsPerPageChange:a=>r$1(0,a)})]}),lo=memo(Oe);var ze=forwardRef(({children:o,...e},t)=>jsx(_o,{...e,ref:t,color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:o??"Colunas"}));ze.displayName="ColumnsButton";var _e=({setFilterButtonEl:o})=>{let e=useCallback(t=>{o(t);},[o]);return jsx(a$4,{container:z,children:jsx(GridToolbarColumnsButton,{ref:e,slotProps:{button:{color:"inherit",startIcon:jsx(a,{icon:"COLUMNS"}),children:"Colunas"}}})})},so=_e;var qe=({slots:o,showColumnButton:e,rowCount:t,paginationModel:r,onPaginationChange:a})=>{let i=useCallback(()=>a?jsx(lo,{rowCount:t,page:r.page,rowsPerPage:r.pageSize,onPaginationChange:a}):null,[t,r,a]);return {dataGridSlots:useMemo(()=>({...o,footer:i,...e&&!o?.toolbar&&{toolbar:so}}),[o,i,e])}},Zo=qe;var Qe=({rows:o,rowSelectionModel:e,onRowSelectionModelChange:t,getRowId:r,bulkActions:a})=>{let i=useMemo(()=>Array.isArray(e)?e:[],[e]),l=i.length,s=useMemo(()=>o.map(S=>r(S)),[o,r]),d=useMemo(()=>new Set(s),[s]),m=useMemo(()=>i.reduce((S,C)=>S+(d.has(C)?1:0),0),[i,d]),f=s.length>0&&m===s.length,c=m>0&&!f,n=useCallback(S=>{t&&t(S);},[t]),h=useCallback(()=>{n([]);},[n]),k=useMemo(()=>new Set(i),[i]),I=useMemo(()=>o.filter(S=>k.has(r(S))),[o,k,r]),_=useMemo(()=>({selectedIds:i,selectedRowsInPage:I,selectedCount:l,clearSelection:h}),[i,I,l,h]),W=!!a?.length,v=useCallback((S,C)=>{if(!t)return;if(C){let M=new Set(i),V=[...i];s.forEach(x=>{M.has(x)||V.push(x);}),n(V);return}let G=i.filter(M=>!d.has(M));n(G);},[t,i,s,d,n]);return {selectionModel:i,numSelected:l,allSelected:f,someSelected:c,hasBulkActions:W,bulkActionContext:_,clearSelection:h,handleSelectAllToggle:v}},jo=Qe;var nt=({title:o,header:e,headerProps:t,breakpoint:r="md",columns:a$4,rows:i=[],mobileSlots:l$1,mobileSlotsProps:s,mobileRender:d,rowCount:m=0,paginationModel:f={page:0,pageSize:25},onPaginationChange:c,actions:n$1,moreActions:h,onAdd:k$1,onSearch:I,searchValue:_,onSearchChange:W,slots:v,slotProps:S,loading:C,fetching:G,fetchingNextPage:M,containerProps:V={height:562,maxHeight:562},hideFooter:x,showColumnButton:mo=!1,filterButton:po,activeFilters:uo,bulkActions:fo,onRowsScrollEnd:E,scrollEndThreshold:$=200,...R})=>{let So=a$1(),T=b("down",r),[te,ne]=useState(null),go=useRef(null);useEffect(()=>{let P=go.current;if(!P||!T||!E)return;let wo=()=>{let{scrollTop:fe,scrollHeight:Se,clientHeight:ge}=P;Se-fe-ge<=$&&E();};return P.addEventListener("scroll",wo,{passive:!0}),()=>{P.removeEventListener("scroll",wo);}},[T,E,$,i.length]);let re=useMemo(()=>R.getRowId??(P=>P.id),[R.getRowId]),{numSelected:q,allSelected:ie,someSelected:ae,hasBulkActions:le,bulkActionContext:se,clearSelection:ce,handleSelectAllToggle:de}=jo({rows:i,rowSelectionModel:Array.isArray(R.rowSelectionModel)?R.rowSelectionModel:void 0,onRowSelectionModelChange:R.onRowSelectionModelChange,getRowId:re,bulkActions:fo}),{dataGridSlots:me}=Zo({slots:v,showColumnButton:mo,rowCount:m,paginationModel:f,onPaginationChange:c}),ho=!!I,Co=!!k$1,Ao=!!n$1,K=!!h,Q=T&&K,ko=!T&&K,pe=Ao||Co||Q,To=ko||ho||mo||!!po||!T,ue=le&&q>0&&jsxs(k,{children:[jsxs(to,{flexDirection:"row",alignItems:"center",gap:1,flex:1,children:[jsx(ee,{title:"Selecione todos nessa pagina",children:jsx(n,{size:"small",checked:ie,indeterminate:ae,onChange:de})}),jsxs(l,{variant:"body2",children:[q," selecionado",q>1?"s":""]}),jsx(ee,{title:"Desselecionar tudo",children:jsx(et,{size:"small",onClick:ce,"aria-label":"Desselecionar tudo",sx:{color:"primary.main"},children:jsx(a,{icon:"CLOSE_MARK_BUTTON",width:18,height:18})})})]}),jsx(zo,{actions:fo??[],context:se})]});return jsxs(a$2,{breakpoint:r,...V,flex:C?1:void 0,minHeight:C||i.length===0?562:void 0,children:[e?jsx(to,{p:3,...t,children:e}):jsxs(Fragment,{children:[jsx($o,{title:o,breakpoint:r,actions:n$1,showActions:Ao,showAdd:Co,showHeaderMoreActions:Q,showActionsContainer:pe,onAdd:k$1,onOpenMoreActions:So.onOpen}),To&&jsx(Jo,{breakpoint:r,isMobile:T,showSearch:ho,showMoreActions:K,showTopbarMoreActions:ko,showHeaderMoreActions:Q,filterButton:po,searchValue:_,onSearch:I,onSearchChange:W,moreActions:h,popover:So}),uo&&uo,!To&&jsx(p,{})]}),T?jsx(qo,{fetching:G,loading:C,rows:i,mobileSlots:l$1,mobileSlotsProps:s,slots:v,scrollableNodeRef:go,mobileRender:d,hideFooter:x,onPaginationChange:c,rowCount:m,paginationModel:f}):jsxs(j,{children:[ue,jsx(a$3,{columns:a$4,rows:i,slots:me,slotProps:{panel:{anchorEl:te},toolbar:{setFilterButtonEl:ne,showQuickFilter:!0},...S},columnHeaderHeight:48,getRowHeight:()=>68,loading:C,fetching:G,hideFooter:x,onRowsScrollEnd:E,scrollEndThreshold:$,...R})]}),M&&jsx(tt,{})]})},yn=memo(nt,ot);
25
-
26
- export { ro as a, lo as b, so as c, yn as d };
27
- //# sourceMappingURL=chunk-Z275MVEP.js.map
@@ -1 +0,0 @@
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","Result_default","FixedProgressBar_default","LoadingProgress","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 ...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 />\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 {...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 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}: DataViewMobileContentProps<T>) => (\n <Result\n isFetching={fetching}\n fetching={<FixedProgressBar />}\n isLoading={loading}\n loading={<LoadingProgress />}\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"]}
@@ -286,13 +286,10 @@ declare const components: {
286
286
  MuiTimelineDot: {
287
287
  defaultProps?: Partial<_mui_lab_TimelineDot.TimelineDotProps> | undefined;
288
288
  styleOverrides?: Partial<_mui_material_styles_overrides.OverridesStyleRules<keyof _mui_lab_TimelineDot.TimelineDotClasses, "MuiTimelineDot", {
289
- cssVarPrefix: string;
290
- zIndex: _mui_material.ZIndex;
291
- direction: _mui_system.Direction;
292
- opacity: _mui_material.Opacity;
293
- typography: _mui_material.TypographyVariants;
289
+ transitions: _mui_material.Transitions;
294
290
  palette: _mui_material.Palette;
295
291
  colorSchemes: Record<_mui_material.SupportedColorScheme, _mui_material.ColorSystem>;
292
+ cssVarPrefix: string;
296
293
  vars: _mui_material.ThemeVars;
297
294
  getCssVar: (field: _mui_material.ThemeCssVar, ...vars: _mui_material.ThemeCssVar[]) => string;
298
295
  getColorSchemeSelector: (colorScheme: _mui_material.SupportedColorScheme) => string;
@@ -303,13 +300,16 @@ declare const components: {
303
300
  spacing: _mui_system.Spacing;
304
301
  breakpoints: _mui_system.Breakpoints;
305
302
  shape: _mui_system.Shape;
306
- transitions: _mui_material.Transitions;
303
+ typography: _mui_material.TypographyVariants;
307
304
  shadows: _mui_material.Shadows;
308
305
  mixins: _mui_material.Mixins;
306
+ zIndex: _mui_material.ZIndex;
307
+ direction: _mui_system.Direction;
309
308
  shouldSkipGeneratingVar: (keys: string[], value: string | number) => boolean;
310
309
  unstable_sxConfig: _mui_system.SxConfig;
311
310
  unstable_sx: (props: _mui_system.SxProps<_mui_material.Theme>) => _mui_styled_engine.CSSObject;
312
311
  applyStyles: _mui_system.ApplyStyles<"light" | "dark">;
312
+ opacity: _mui_material.Opacity;
313
313
  overlays: _mui_material.Overlays;
314
314
  customShadows: CustomShadows;
315
315
  unstable_strictMode?: boolean | undefined;
@@ -326,13 +326,10 @@ declare const components: {
326
326
  MuiTimelineConnector: {
327
327
  defaultProps?: Partial<_mui_lab_TimelineConnector.TimelineConnectorProps> | undefined;
328
328
  styleOverrides?: Partial<_mui_material_styles_overrides.OverridesStyleRules<"root", "MuiTimelineConnector", {
329
- cssVarPrefix: string;
330
- zIndex: _mui_material.ZIndex;
331
- direction: _mui_system.Direction;
332
- opacity: _mui_material.Opacity;
333
- typography: _mui_material.TypographyVariants;
329
+ transitions: _mui_material.Transitions;
334
330
  palette: _mui_material.Palette;
335
331
  colorSchemes: Record<_mui_material.SupportedColorScheme, _mui_material.ColorSystem>;
332
+ cssVarPrefix: string;
336
333
  vars: _mui_material.ThemeVars;
337
334
  getCssVar: (field: _mui_material.ThemeCssVar, ...vars: _mui_material.ThemeCssVar[]) => string;
338
335
  getColorSchemeSelector: (colorScheme: _mui_material.SupportedColorScheme) => string;
@@ -343,13 +340,16 @@ declare const components: {
343
340
  spacing: _mui_system.Spacing;
344
341
  breakpoints: _mui_system.Breakpoints;
345
342
  shape: _mui_system.Shape;
346
- transitions: _mui_material.Transitions;
343
+ typography: _mui_material.TypographyVariants;
347
344
  shadows: _mui_material.Shadows;
348
345
  mixins: _mui_material.Mixins;
346
+ zIndex: _mui_material.ZIndex;
347
+ direction: _mui_system.Direction;
349
348
  shouldSkipGeneratingVar: (keys: string[], value: string | number) => boolean;
350
349
  unstable_sxConfig: _mui_system.SxConfig;
351
350
  unstable_sx: (props: _mui_system.SxProps<_mui_material.Theme>) => _mui_styled_engine.CSSObject;
352
351
  applyStyles: _mui_system.ApplyStyles<"light" | "dark">;
352
+ opacity: _mui_material.Opacity;
353
353
  overlays: _mui_material.Overlays;
354
354
  customShadows: CustomShadows;
355
355
  unstable_strictMode?: boolean | undefined;