@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,4 +1,4 @@
1
- var A=(S=>(S.MONTHLY="MONTHLY",S.DAILY="DAILY",S))(A||{}),L={["MONTHLY"]:"Mensal",["DAILY"]:"Di\xE1rio"},_=(S=>(S.XLSX="XLSX",S.PDF="PDF",S))(_||{}),e=(T=>(T.TODAY="TODAY",T.YESTERDAY="YESTERDAY",T.LAST_7_DAYS="LAST_7_DAYS",T.LAST_28_DAYS="LAST_28_DAYS",T.LAST_90_DAYS="LAST_90_DAYS",T.LAST_WEEK="LAST_WEEK",T.LAST_MONTH="LAST_MONTH",T.THIS_MONTH="THIS_MONTH",T.THIS_YEAR="THIS_YEAR",T.OTHER="OTHER",T))(e||{}),Y={["TODAY"]:"Hoje",["YESTERDAY"]:"Ontem",["LAST_7_DAYS"]:"\xDAltimos 7 dias",["LAST_28_DAYS"]:"\xDAltimos 28 dias",["LAST_90_DAYS"]:"\xDAltimos 90 dias",["LAST_WEEK"]:"Semana passada",["LAST_MONTH"]:"M\xEAs passado",["THIS_MONTH"]:"Este m\xEAs",["THIS_YEAR"]:"Este ano",["OTHER"]:"Personalizado"};
1
+ var S=(A=>(A.MONTHLY="MONTHLY",A.DAILY="DAILY",A))(S||{}),Y={["MONTHLY"]:"Mensal",["DAILY"]:"Di\xE1rio"},_=(A=>(A.XLSX="XLSX",A.PDF="PDF",A))(_||{}),L=(T=>(T.TODAY="TODAY",T.YESTERDAY="YESTERDAY",T.LAST_7_DAYS="LAST_7_DAYS",T.LAST_28_DAYS="LAST_28_DAYS",T.LAST_90_DAYS="LAST_90_DAYS",T.LAST_WEEK="LAST_WEEK",T.LAST_MONTH="LAST_MONTH",T.THIS_MONTH="THIS_MONTH",T.THIS_YEAR="THIS_YEAR",T.OTHER="OTHER",T))(L||{}),E={["TODAY"]:"Hoje",["YESTERDAY"]:"Ontem",["LAST_7_DAYS"]:"\xDAltimos 7 dias",["LAST_28_DAYS"]:"\xDAltimos 28 dias",["LAST_90_DAYS"]:"\xDAltimos 90 dias",["LAST_WEEK"]:"Semana passada",["LAST_MONTH"]:"M\xEAs passado",["THIS_MONTH"]:"Este m\xEAs",["THIS_YEAR"]:"Este ano",["OTHER"]:"Personalizado"};
2
2
 
3
- export { A as a, L as b, _ as c, e as d, Y as e };
4
- //# sourceMappingURL=chunk-ANEPP6QT.js.map
3
+ export { S as a, Y as b, _ as c, L as d, E as e };
4
+ //# sourceMappingURL=chunk-ERLI5GAP.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/analytics.ts"],"names":["ViewMode","VIEW_MODE_LABELS","ExportFormat","FilterPeriod","FILTER_PERIOD_LABELS"],"mappings":"AAAO,IAAKA,OACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QAFEA,OAAA,IAKCC,EAA6C,CACxD,CAAC,SAAgB,EAAG,SACpB,CAAC,OAAc,EAAG,WACpB,EAEYC,OACVA,EAAA,KAAO,OACPA,EAAA,IAAM,MAFIA,OAAA,IAKAC,OACVA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,aAAe,eACfA,EAAA,aAAe,eACfA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,MAAQ,QAVEA,OAAA,IAaCC,EAAqD,CAChE,CAAC,OAAkB,EAAG,OACtB,CAAC,WAAsB,EAAG,QAC1B,CAAC,aAAwB,EAAG,oBAC5B,CAAC,cAAyB,EAAG,qBAC7B,CAAC,cAAyB,EAAG,qBAC7B,CAAC,WAAsB,EAAG,iBAC1B,CAAC,YAAuB,EAAG,iBAC3B,CAAC,YAAuB,EAAG,cAC3B,CAAC,WAAsB,EAAG,WAC1B,CAAC,OAAkB,EAAG,eACxB","sourcesContent":["export enum ViewMode {\n MONTHLY = 'MONTHLY',\n DAILY = 'DAILY',\n}\n\nexport const VIEW_MODE_LABELS: Record<ViewMode, string> = {\n [ViewMode.MONTHLY]: 'Mensal',\n [ViewMode.DAILY]: 'Diário',\n};\n\nexport enum ExportFormat {\n XLSX = 'XLSX',\n PDF = 'PDF',\n}\n\nexport enum FilterPeriod {\n TODAY = 'TODAY',\n YESTERDAY = 'YESTERDAY',\n LAST_7_DAYS = 'LAST_7_DAYS',\n LAST_28_DAYS = 'LAST_28_DAYS',\n LAST_90_DAYS = 'LAST_90_DAYS',\n LAST_WEEK = 'LAST_WEEK',\n LAST_MONTH = 'LAST_MONTH',\n THIS_MONTH = 'THIS_MONTH',\n THIS_YEAR = 'THIS_YEAR',\n OTHER = 'OTHER',\n}\n\nexport const FILTER_PERIOD_LABELS: Record<FilterPeriod, string> = {\n [FilterPeriod.TODAY]: 'Hoje',\n [FilterPeriod.YESTERDAY]: 'Ontem',\n [FilterPeriod.LAST_7_DAYS]: 'Últimos 7 dias',\n [FilterPeriod.LAST_28_DAYS]: 'Últimos 28 dias',\n [FilterPeriod.LAST_90_DAYS]: 'Últimos 90 dias',\n [FilterPeriod.LAST_WEEK]: 'Semana passada',\n [FilterPeriod.LAST_MONTH]: 'Mês passado',\n [FilterPeriod.THIS_MONTH]: 'Este mês',\n [FilterPeriod.THIS_YEAR]: 'Este ano',\n [FilterPeriod.OTHER]: 'Personalizado',\n};\n\nexport interface FilterDateState {\n period: FilterPeriod;\n start_date: string;\n end_date: string;\n}\n"]}
1
+ {"version":3,"sources":["../src/utils/analytics.ts"],"names":["ViewMode","VIEW_MODE_LABELS","ExportFormat","FilterPeriod","FILTER_PERIOD_LABELS"],"mappings":"AAAO,IAAKA,OACVA,EAAA,QAAU,UACVA,EAAA,MAAQ,QAFEA,OAAA,IAKCC,EAA6C,CACxD,CAAC,SAAgB,EAAG,SACpB,CAAC,OAAc,EAAG,WACpB,EAEYC,OACVA,EAAA,KAAO,OACPA,EAAA,IAAM,MAFIA,OAAA,IAKAC,OACVA,EAAA,MAAQ,QACRA,EAAA,UAAY,YACZA,EAAA,YAAc,cACdA,EAAA,aAAe,eACfA,EAAA,aAAe,eACfA,EAAA,UAAY,YACZA,EAAA,WAAa,aACbA,EAAA,WAAa,aACbA,EAAA,UAAY,YACZA,EAAA,MAAQ,QAVEA,OAAA,IAaCC,EAAqD,CAChE,CAAC,OAAkB,EAAG,OACtB,CAAC,WAAsB,EAAG,QAC1B,CAAC,aAAwB,EAAG,oBAC5B,CAAC,cAAyB,EAAG,qBAC7B,CAAC,cAAyB,EAAG,qBAC7B,CAAC,WAAsB,EAAG,iBAC1B,CAAC,YAAuB,EAAG,iBAC3B,CAAC,YAAuB,EAAG,cAC3B,CAAC,WAAsB,EAAG,WAC1B,CAAC,OAAkB,EAAG,eACxB","sourcesContent":["export enum ViewMode {\n MONTHLY = 'MONTHLY',\n DAILY = 'DAILY',\n}\n\nexport const VIEW_MODE_LABELS: Record<ViewMode, string> = {\n [ViewMode.MONTHLY]: 'Mensal',\n [ViewMode.DAILY]: 'Diário',\n};\n\nexport enum ExportFormat {\n XLSX = 'XLSX',\n PDF = 'PDF',\n}\n\nexport enum FilterPeriod {\n TODAY = 'TODAY',\n YESTERDAY = 'YESTERDAY',\n LAST_7_DAYS = 'LAST_7_DAYS',\n LAST_28_DAYS = 'LAST_28_DAYS',\n LAST_90_DAYS = 'LAST_90_DAYS',\n LAST_WEEK = 'LAST_WEEK',\n LAST_MONTH = 'LAST_MONTH',\n THIS_MONTH = 'THIS_MONTH',\n THIS_YEAR = 'THIS_YEAR',\n OTHER = 'OTHER',\n}\n\nexport const FILTER_PERIOD_LABELS: Record<FilterPeriod, string> = {\n [FilterPeriod.TODAY]: 'Hoje',\n [FilterPeriod.YESTERDAY]: 'Ontem',\n [FilterPeriod.LAST_7_DAYS]: 'Últimos 7 dias',\n [FilterPeriod.LAST_28_DAYS]: 'Últimos 28 dias',\n [FilterPeriod.LAST_90_DAYS]: 'Últimos 90 dias',\n [FilterPeriod.LAST_WEEK]: 'Semana passada',\n [FilterPeriod.LAST_MONTH]: 'Mês passado',\n [FilterPeriod.THIS_MONTH]: 'Este mês',\n [FilterPeriod.THIS_YEAR]: 'Este ano',\n [FilterPeriod.OTHER]: 'Personalizado',\n};\n"]}
@@ -0,0 +1,4 @@
1
+ var T=(E=>(E.SALE_TOTAL_VALUE="SALE_TOTAL_VALUE",E.SALE_COUNT="SALE_COUNT",E.SALE_AVERAGE_VALUE="SALE_AVERAGE_VALUE",E))(T||{}),I=(E=>(E.A="A",E.B="B",E.C="C",E))(I||{}),o=(C=>(C.CLASSIFICATION="CLASSIFICATION",C.ABC_CURVE="ABC_CURVE",C))(o||{}),S=(A=>(A.ACTIVE="ACTIVE",A.AT_RISK="AT_RISK",A.INACTIVE="INACTIVE",A.LOST="LOST",A.NEW_CLIENT="NEW_CLIENT",A.PROSPECT="PROSPECT",A))(S||{}),L={["ACTIVE"]:{label:"Ativo",color:"#22C55E"},["AT_RISK"]:{label:"Em risco",color:"#FFAB00"},["INACTIVE"]:{label:"Inativo",color:"#FF5630"},["LOST"]:{label:"Perdido",color:"#C4CDD5"},["NEW_CLIENT"]:{label:"Novo cliente",color:"#8E33FF"},["PROSPECT"]:{label:"Prospect",color:"#00B8D9"}};
2
+
3
+ export { T as a, I as b, o as c, S as d, L as e };
4
+ //# sourceMappingURL=chunk-K2PWIYEM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/partnerAnalysis.ts"],"names":["RankingType","AbcCurve","SellerPortfolioQueryType","Status","STATUS_OPTIONS"],"mappings":"AAAO,IAAKA,OACVA,EAAA,iBAAmB,mBACnBA,EAAA,WAAa,aACbA,EAAA,mBAAqB,qBAHXA,OAAA,IAMAC,OACVA,EAAA,EAAI,IACJA,EAAA,EAAI,IACJA,EAAA,EAAI,IAHMA,OAAA,IAMAC,OACVA,EAAA,eAAiB,iBACjBA,EAAA,UAAY,YAFFA,OAAA,IAKAC,OACVA,EAAA,OAAS,SACTA,EAAA,QAAU,UACVA,EAAA,SAAW,WACXA,EAAA,KAAO,OACPA,EAAA,WAAa,aACbA,EAAA,SAAW,WANDA,OAAA,IASCC,EACX,CACE,CAAC,QAAa,EAAG,CACf,MAAO,QACP,MAAO,SACT,EACA,CAAC,SAAc,EAAG,CAChB,MAAO,WACP,MAAO,SACT,EACA,CAAC,UAAe,EAAG,CACjB,MAAO,UACP,MAAO,SACT,EACA,CAAC,MAAW,EAAG,CACb,MAAO,UACP,MAAO,SACT,EACA,CAAC,YAAiB,EAAG,CACnB,MAAO,eACP,MAAO,SACT,EACA,CAAC,UAAe,EAAG,CACjB,MAAO,WACP,MAAO,SACT,CACF","sourcesContent":["export enum RankingType {\n SALE_TOTAL_VALUE = 'SALE_TOTAL_VALUE',\n SALE_COUNT = 'SALE_COUNT',\n SALE_AVERAGE_VALUE = 'SALE_AVERAGE_VALUE',\n}\n\nexport enum AbcCurve {\n A = 'A',\n B = 'B',\n C = 'C',\n}\n\nexport enum SellerPortfolioQueryType {\n CLASSIFICATION = 'CLASSIFICATION',\n ABC_CURVE = 'ABC_CURVE',\n}\n\nexport enum Status {\n ACTIVE = 'ACTIVE',\n AT_RISK = 'AT_RISK',\n INACTIVE = 'INACTIVE',\n LOST = 'LOST',\n NEW_CLIENT = 'NEW_CLIENT',\n PROSPECT = 'PROSPECT',\n}\n\nexport const STATUS_OPTIONS: Record<Status, { label: string; color: string }> =\n {\n [Status.ACTIVE]: {\n label: 'Ativo',\n color: '#22C55E',\n },\n [Status.AT_RISK]: {\n label: 'Em risco',\n color: '#FFAB00',\n },\n [Status.INACTIVE]: {\n label: 'Inativo',\n color: '#FF5630',\n },\n [Status.LOST]: {\n label: 'Perdido',\n color: '#C4CDD5',\n },\n [Status.NEW_CLIENT]: {\n label: 'Novo cliente',\n color: '#8E33FF',\n },\n [Status.PROSPECT]: {\n label: 'Prospect',\n color: '#00B8D9',\n },\n };\n"]}
@@ -0,0 +1,27 @@
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]),u=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:u,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:u,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:u,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:u,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:u})})]}),!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]),u=s.length>0&&m===s.length,c=m>0&&!u,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:u,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:u={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:u,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:u}):jsxs(j,{children:[ue,jsx(a$3,{columns:a$4,rows:i,rowCount:m,slots:me,slotProps:{panel:{anchorEl:te},toolbar:{setFilterButtonEl:ne,showQuickFilter:!0},...S},columnHeaderHeight:48,getRowHeight:()=>68,loading:C,fetching:G,hideFooter:x,paginationModel:u,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-UQJKTFVZ.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","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 rowCount={rowCount}\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 paginationModel={paginationModel}\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"]}
@@ -1,7 +1,7 @@
1
- import { d, e } from './chunk-ANEPP6QT.js';
1
+ import { d, e } from './chunk-ERLI5GAP.js';
2
2
  import r from 'dayjs';
3
3
 
4
- var n="YYYY-MM-DD",i=Object.values(d).map(e$1=>({label:e[e$1],value:e$1}));function o(e){let t=r().startOf("day");switch(e){case"TODAY":return {start_date:t.toDate(),end_date:t.toDate()};case"YESTERDAY":{let a=t.subtract(1,"day");return {start_date:a.toDate(),end_date:a.toDate()}}case"LAST_7_DAYS":return {start_date:t.subtract(6,"day").toDate(),end_date:t.toDate()};case"LAST_28_DAYS":return {start_date:t.subtract(27,"day").toDate(),end_date:t.toDate()};case"LAST_90_DAYS":return {start_date:t.subtract(89,"day").toDate(),end_date:t.toDate()};case"LAST_WEEK":{let a=t.subtract(1,"week").startOf("week"),d=a.endOf("week");return {start_date:a.toDate(),end_date:d.toDate()}}case"LAST_MONTH":{let a=t.subtract(1,"month").startOf("month"),d=a.endOf("month");return {start_date:a.toDate(),end_date:d.toDate()}}case"THIS_MONTH":return {start_date:t.startOf("month").toDate(),end_date:t.toDate()};case"THIS_YEAR":return {start_date:t.startOf("year").toDate(),end_date:t.endOf("year").toDate()};case"OTHER":default:return {start_date:t.subtract(6,"day").toDate(),end_date:t.toDate()}}}function S(){let e=o("LAST_7_DAYS");return {period:"LAST_7_DAYS",start_date:r(e.start_date).format(n),end_date:r(e.end_date).format(n)}}function f(e){let t=o(e);return {period:e,start_date:r(t.start_date).format(n),end_date:r(t.end_date).format(n)}}function T(e,t){if(!e||!t)return "OTHER";let a=i.find(({value:d})=>{if(d==="OTHER")return !1;let s=o(d);return e.toDateString()===s.start_date.toDateString()&&t.toDateString()===s.end_date.toDateString()});return a?a.value:"OTHER"}function O(e){return {period:e.period,start_date:e.start_date?r(e.start_date).format(n):"",end_date:e.end_date?r(e.end_date).format(n):""}}
4
+ var n="YYYY-MM-DD",i=Object.values(d).map(e$1=>({label:e[e$1],value:e$1}));function o(e){let t=r().startOf("day");switch(e){case"TODAY":return {start_date:t.toDate(),end_date:t.toDate()};case"YESTERDAY":{let a=t.subtract(1,"day");return {start_date:a.toDate(),end_date:a.toDate()}}case"LAST_7_DAYS":return {start_date:t.subtract(6,"day").toDate(),end_date:t.toDate()};case"LAST_28_DAYS":return {start_date:t.subtract(27,"day").toDate(),end_date:t.toDate()};case"LAST_90_DAYS":return {start_date:t.subtract(89,"day").toDate(),end_date:t.toDate()};case"LAST_WEEK":{let a=t.subtract(1,"week").startOf("week"),d=a.endOf("week");return {start_date:a.toDate(),end_date:d.toDate()}}case"LAST_MONTH":{let a=t.subtract(1,"month").startOf("month"),d=a.endOf("month");return {start_date:a.toDate(),end_date:d.toDate()}}case"THIS_MONTH":return {start_date:t.startOf("month").toDate(),end_date:t.toDate()};case"THIS_YEAR":return {start_date:t.startOf("year").toDate(),end_date:t.endOf("year").toDate()};case"OTHER":default:return {start_date:t.subtract(6,"day").toDate(),end_date:t.toDate()}}}function l(){let e=o("LAST_7_DAYS");return {period:"LAST_7_DAYS",start_date:r(e.start_date).format(n),end_date:r(e.end_date).format(n)}}function S(e){let t=o(e);return {period:e,start_date:r(t.start_date).format(n),end_date:r(t.end_date).format(n)}}function f(e,t){if(!e||!t)return "OTHER";let a=i.find(({value:d})=>{if(d==="OTHER")return !1;let s=o(d);return e.toDateString()===s.start_date.toDateString()&&t.toDateString()===s.end_date.toDateString()});return a?a.value:"OTHER"}function T(e){return {period:e.period,start_date:e.start_date?r(e.start_date).format(n):"",end_date:e.end_date?r(e.end_date).format(n):""}}
5
5
 
6
- export { i as a, o as b, S as c, f as d, T as e, O as f };
7
- //# sourceMappingURL=chunk-SP5U3DJP.js.map
6
+ export { i as a, o as b, l as c, S as d, f as e, T as f };
7
+ //# sourceMappingURL=chunk-UWTX4JMW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/periodDates.ts"],"names":["dayjs","DATE_FORMAT","periodOptions","FilterPeriod","period","FILTER_PERIOD_LABELS","getPeriodDates","today","yesterday","lastWeekStart","lastWeekEnd","lastMonthStart","lastMonthEnd","getDefaultFilterDateState","dates","getFilterDateStateFor","findMatchingPeriod","startDate","endDate","match","value","toFilterDateState","form"],"mappings":"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","sourcesContent":["import dayjs from 'dayjs';\n\nimport { FilterDateState } from 'types/analytics';\nimport { FILTER_PERIOD_LABELS, FilterPeriod } from 'utils/analytics';\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\n\nexport const periodOptions = Object.values(FilterPeriod).map(period => ({\n label: FILTER_PERIOD_LABELS[period],\n value: period,\n}));\n\nexport function getPeriodDates(period: FilterPeriod): {\n start_date: Date;\n end_date: Date;\n} {\n const today = dayjs().startOf('day');\n\n switch (period) {\n case FilterPeriod.TODAY:\n return {\n start_date: today.toDate(),\n end_date: today.toDate(),\n };\n\n case FilterPeriod.YESTERDAY: {\n const yesterday = today.subtract(1, 'day');\n return {\n start_date: yesterday.toDate(),\n end_date: yesterday.toDate(),\n };\n }\n\n case FilterPeriod.LAST_7_DAYS:\n return {\n start_date: today.subtract(6, 'day').toDate(),\n end_date: today.toDate(),\n };\n\n case FilterPeriod.LAST_28_DAYS:\n return {\n start_date: today.subtract(27, 'day').toDate(),\n end_date: today.toDate(),\n };\n\n case FilterPeriod.LAST_90_DAYS:\n return {\n start_date: today.subtract(89, 'day').toDate(),\n end_date: today.toDate(),\n };\n\n case FilterPeriod.LAST_WEEK: {\n const lastWeekStart = today.subtract(1, 'week').startOf('week');\n const lastWeekEnd = lastWeekStart.endOf('week');\n return {\n start_date: lastWeekStart.toDate(),\n end_date: lastWeekEnd.toDate(),\n };\n }\n\n case FilterPeriod.LAST_MONTH: {\n const lastMonthStart = today.subtract(1, 'month').startOf('month');\n const lastMonthEnd = lastMonthStart.endOf('month');\n return {\n start_date: lastMonthStart.toDate(),\n end_date: lastMonthEnd.toDate(),\n };\n }\n\n case FilterPeriod.THIS_MONTH:\n return {\n start_date: today.startOf('month').toDate(),\n end_date: today.toDate(),\n };\n\n case FilterPeriod.THIS_YEAR:\n return {\n start_date: today.startOf('year').toDate(),\n end_date: today.endOf('year').toDate(),\n };\n\n case FilterPeriod.OTHER:\n default:\n return {\n start_date: today.subtract(6, 'day').toDate(),\n end_date: today.toDate(),\n };\n }\n}\n\nexport function getDefaultFilterDateState(): FilterDateState {\n const dates = getPeriodDates(FilterPeriod.LAST_7_DAYS);\n return {\n period: FilterPeriod.LAST_7_DAYS,\n start_date: dayjs(dates.start_date).format(DATE_FORMAT),\n end_date: dayjs(dates.end_date).format(DATE_FORMAT),\n };\n}\n\nexport function getFilterDateStateFor(period: FilterPeriod): FilterDateState {\n const dates = getPeriodDates(period);\n return {\n period,\n start_date: dayjs(dates.start_date).format(DATE_FORMAT),\n end_date: dayjs(dates.end_date).format(DATE_FORMAT),\n };\n}\n\nexport function findMatchingPeriod(\n startDate: Date | null,\n endDate: Date | null,\n): FilterPeriod {\n if (!startDate || !endDate) return FilterPeriod.OTHER;\n\n const match = periodOptions.find(({ value }) => {\n if (value === FilterPeriod.OTHER) return false;\n\n const dates = getPeriodDates(value);\n\n return (\n startDate.toDateString() === dates.start_date.toDateString() &&\n endDate.toDateString() === dates.end_date.toDateString()\n );\n });\n\n return match ? (match.value as FilterPeriod) : FilterPeriod.OTHER;\n}\n\nexport function toFilterDateState(form: {\n period: FilterPeriod;\n start_date: Date | null;\n end_date: Date | null;\n}): FilterDateState {\n return {\n period: form.period,\n start_date: form.start_date\n ? dayjs(form.start_date).format(DATE_FORMAT)\n : '',\n end_date: form.end_date ? dayjs(form.end_date).format(DATE_FORMAT) : '',\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ComponentType, ReactNode } from 'react';
3
- import { ViewMode } from '../../../types/analytics.js';
3
+ import { ViewMode } from '../../../utils/analytics.js';
4
4
  import { QuotationDashboardSeriesItem, OverviewDetailBaseProps, OverviewDetailProps, RevenueGoalDashboardSeriesItem, RevenueGoalDashboardKpis, SalesForecastDashboardSeriesItem } from '../../../types/overviewAnalytics.js';
5
5
  import { GridQuery } from '../../../types/filter.js';
6
6
  import '../../../types/entityMetadata.js';
@@ -1,5 +1,5 @@
1
1
  import { b, c, d as d$3 } from '../../../chunk-FYG3YWFZ.js';
2
- import { b as b$2 } from '../../../chunk-ANEPP6QT.js';
2
+ import { b as b$2 } from '../../../chunk-ERLI5GAP.js';
3
3
  import { a, m, c as c$1, n } from '../../../chunk-XQZPUMVQ.js';
4
4
  import { a as a$7 } from '../../../chunk-DRGARBKB.js';
5
5
  import { a as a$6 } from '../../../chunk-J5XGGHQ7.js';
@@ -7,7 +7,7 @@ import { a as a$4 } from '../../../chunk-J5B2YJSR.js';
7
7
  import { a as a$3 } from '../../../chunk-CBW32OUQ.js';
8
8
  import { d as d$2 } from '../../../chunk-N7IK5EUP.js';
9
9
  import { h, d as d$1, c as c$2 } from '../../../chunk-OF6623HG.js';
10
- import { d } from '../../../chunk-Z275MVEP.js';
10
+ import { d } from '../../../chunk-UQJKTFVZ.js';
11
11
  import { a as a$2 } from '../../../chunk-R2BCPHRH.js';
12
12
  import { a as a$1 } from '../../../chunk-4F2NKGF6.js';
13
13
  import '../../../chunk-NMGWHSNZ.js';