@zydon/common 2.8.88 → 2.8.89
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.
|
@@ -2,25 +2,26 @@ import { a as a$2 } from '../../chunk-XAPSXJZO.js';
|
|
|
2
2
|
import { a as a$3 } from '../../chunk-J7RPKCIN.js';
|
|
3
3
|
import { c } from '../../chunk-VGTQYKAC.js';
|
|
4
4
|
import { a } from '../../chunk-CO2KQFUN.js';
|
|
5
|
-
import { a as a$
|
|
5
|
+
import { a as a$5 } from '../../chunk-F65ZXAGV.js';
|
|
6
|
+
import { a as a$7 } from '../../chunk-NAGBHM6W.js';
|
|
6
7
|
import { a as a$4 } from '../../chunk-6N456D64.js';
|
|
7
|
-
import { a as a$
|
|
8
|
+
import { a as a$6 } from '../../chunk-2GTD4JW2.js';
|
|
8
9
|
import '../../chunk-PBLSVXV5.js';
|
|
9
|
-
import { a as a$
|
|
10
|
+
import { a as a$8 } from '../../chunk-LQRRMVFN.js';
|
|
10
11
|
import { b } from '../../chunk-2ZJUGM2S.js';
|
|
11
12
|
import { b as b$1, a as a$1, c as c$1, e, h, g } from '../../chunk-4UECQEE3.js';
|
|
12
13
|
import '../../chunk-K3T3E52L.js';
|
|
13
14
|
import { memo, useState, useMemo, useEffect, useCallback, useRef } from 'react';
|
|
14
|
-
import
|
|
15
|
+
import D from '@mui/material/Stack';
|
|
15
16
|
import { useForm } from 'react-hook-form';
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
17
|
+
import de from '@mui/material/Button';
|
|
18
|
+
import pe from '@mui/material/Checkbox';
|
|
19
|
+
import q from '@mui/material/Divider';
|
|
20
|
+
import G from '@mui/material/Typography';
|
|
20
21
|
import { styled } from '@mui/material/styles';
|
|
21
22
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
22
23
|
|
|
23
|
-
var
|
|
24
|
+
var N=styled(a)(({theme:o})=>({marginTop:10,"& .MuiPopover-paper":{width:540,padding:o.spacing(3),backgroundColor:o.palette.background.paper,borderRadius:o.spacing(1),backgroundImage:"none",[o.breakpoints.down("sm")]:{width:"90vw",maxWidth:"calc(100vw - 32px)",padding:o.spacing(2)}}})),j=styled(c)(({theme:o})=>({[o.breakpoints.up("sm")]:{"&.MuiDateRangeCalendar-root":{margin:-24}},"& .MuiPickersCalendarHeader-label":{textTransform:"capitalize"},[o.breakpoints.down(400)]:{"& .MuiPickersCalendarHeader-root":{padding:o.spacing(0,7)},"& .MuiDayCalendar-header, & .MuiDayCalendar-weekContainer":{gap:0},"& .MuiPickersDay-root, & .MuiDateRangePickerDay-root":{width:32,height:32},"& .MuiDayCalendar-weekDayLabel":{width:32,height:32},"& .MuiDayCalendar-slideTransition":{minHeight:210}},[o.breakpoints.down(350)]:{"& .MuiPickersDay-root, & .MuiDateRangePickerDay-root":{width:28,height:28},"& .MuiDayCalendar-weekDayLabel":{width:28,height:28},"& .MuiDayCalendar-slideTransition":{minHeight:196}}}));var ue=["D","S","T","Q","Q","S","S"],fe=({open:o,onClose:p,type:l,value:i,onApply:m})=>{let y=b("down","sm"),u=useForm({defaultValues:i}),{handleSubmit:C,getValues:f,setValue:t,watch:s,reset:S}=u,[w,d]=useState([i.initialDate,i.finalDate]),K=s("initialDate"),ee=s("finalDate"),F=s("period"),oe=!K||!ee,te=l==="PAST",ae=l==="FUTURE",c=useMemo(()=>b$1(l),[l]),M=useMemo(()=>c.map(e=>({label:a$1[e],value:e})),[c]);useEffect(()=>{o&&S(i);},[o,S,i]),useEffect(()=>{d([i.initialDate,i.finalDate]);},[i.finalDate,i.initialDate]);let I=useCallback(e=>{let{initialDate:r,finalDate:n}=c$1(e);d([r,n]),t("period",e),t("initialDate",r),t("finalDate",n);},[t]),ie=useCallback(e$1=>{if(d(e$1),e$1[0]&&t("initialDate",e$1[0]),e$1[1]&&t("finalDate",e$1[1]),e$1[0]&&e$1[1]){let r=e(e$1[0],e$1[1],c);t("period",r);}},[c,t]),re=useCallback(e$1=>{t("initialDate",e$1);let r=f("finalDate");if(e$1&&r){let n=[e$1,r];d(n);let v=e(n[0],n[1],c);t("period",v);}},[c,f,t]),ne=useCallback(e$1=>{t("finalDate",e$1);let r=f("initialDate");if(r&&e$1){let n=[r,e$1];d(n);let v=e(n[0],n[1],c);t("period",v);}},[c,f,t]),le=useCallback(e=>{m(e),p();},[m,p]);return jsx(N,{open:o,onClose:p,arrow:y?"top-center":"top-left",disabledArrow:!0,children:jsxs(a$2,{methods:u,onSubmit:C(le),gap:2,children:[jsx(G,{variant:"overline",color:"text.disabled",children:"Defina o per\xEDodo"}),jsxs(D,{direction:"row",alignItems:"center",justifyContent:"space-between",gap:2,children:[jsx(a$3,{name:"initialDate",label:"In\xEDcio",onChange:re,slotProps:{textField:{size:"small"}}}),jsx(a$3,{name:"finalDate",label:"T\xE9rmino",onChange:ne,slotProps:{textField:{size:"small"}}})]}),jsx(D,{display:{xs:"block",sm:"none"},children:jsx(a$4,{name:"period",options:M,onChange:e=>e&&I(e),value:F,size:"small",disableClearable:!0,fullWidth:!0})}),jsxs(D,{direction:{xs:"column",sm:"row"},alignItems:"center",justifyContent:{xs:"center",sm:"space-between"},gap:{xs:2,sm:3},overflow:"hidden",children:[jsx(a$5,{fillContent:!0,sx:{display:{xs:"none",sm:"block"},maxHeight:360},children:M.map(e=>jsxs(D,{direction:"row",alignItems:"center",gap:.5,sx:{m:.4},children:[jsx(pe,{id:`period_${e.value}`,name:`period_${e.value}`,icon:jsx(a$6,{icon:"CHECKMARK_CIRCLE_ROUNDED",color:"primary.main"}),checkedIcon:jsx(a$6,{icon:"CHECKMARK_CIRCLE",color:"primary.main"}),checked:F===e.value,onChange:()=>I(e.value)}),jsx(G,{component:"label",htmlFor:`period_${e.value}`,mt:.2,variant:"body2",color:"text.primary",sx:{cursor:"pointer",whiteSpace:"nowrap"},children:e.label})]},e.value))}),jsx(q,{orientation:"vertical",flexItem:!0,sx:{display:{xs:"none",sm:"block"}}}),jsx(D,{width:{xs:"100%",sm:"auto"},alignItems:"center",justifyContent:"center",children:jsx(j,{calendars:1,value:w,onChange:ie,disableFuture:te,disablePast:ae,showDaysOutsideCurrentMonth:!0,fixedWeekNumber:6,dayOfWeekFormatter:e=>ue[e.day()],sx:{"& .MuiDateRangeCalendar-root":{width:{xs:"100%",sm:"auto"}}}})})]}),jsx(q,{flexItem:!0}),jsxs(D,{direction:"row",alignItems:"center",justifyContent:"flex-end",gap:1,children:[jsx(de,{variant:"outlined",color:"inherit",onClick:p,children:"Cancelar"}),jsx(a$7,{actionType:"SAVE",variant:"contained",color:"primary",type:"submit",disabled:oe,children:"Aplicar"})]})]})})},J=memo(fe);var X=styled(de)(({theme:o})=>({color:o.palette.text.primary,borderColor:o.palette.divider,"&:hover":{backgroundColor:"transparent"},[o.breakpoints.down("md")]:{"&.filters-button":{minWidth:"auto",padding:"6px 8px",fontSize:0,overflow:"hidden","& .MuiButton-startIcon":{margin:0,fontSize:"1rem"}}}}));var Z=typeof window>"u",ke=({type:o="FREE",value:p,onChange:l,paramKey:i,dataKey:m,label:y="Per\xEDodo"})=>{let u=a$8(),C=useRef(!1);useEffect(()=>{if(Z||!i||C.current)return;C.current=!0;let t=new URLSearchParams(window.location.search),s=h(t,{paramKey:i,dataKey:m});s&&l(s);},[m,l,i]);let f=useCallback(t=>{if(l(t),Z||!i)return;let s=new URLSearchParams(window.location.search),w=g(t,{paramKey:i,dataKey:m},s).toString(),d=`${window.location.pathname}${w?`?${w}`:""}${window.location.hash}`;window.history.replaceState(window.history.state,"",d);},[m,l,i]);return jsxs(Fragment,{children:[jsx(D,{alignItems:"flex-start",children:jsx(X,{variant:"outlined",endIcon:jsx(a$6,{icon:"ARROW_DOWN_SIMPLE"}),size:"small",onClick:u.onOpen,children:y})}),jsx(J,{open:u.open,onClose:u.onClose,type:o,value:p,onApply:f})]})},to=ke;
|
|
24
25
|
|
|
25
|
-
export {
|
|
26
|
+
export { to as default };
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Filters/index.tsx","../../../src/components/Filters/FilterPopover/index.tsx","../../../src/components/Filters/FilterPopover/styles.ts","../../../src/components/Filters/styles.ts"],"names":["useCallback","useEffect","useRef","Stack","memo","useMemo","useState","useForm","Button","Checkbox","Divider","Typography","styled","MenuPopover","MenuPopover_default","theme","ResponsiveDateRangeCalendar","DateRangeCalendar_default","jsx","jsxs","DAYS_OF_WEEK","FilterPopover","open","onClose","type","value","onApply","isMobile","useResponsive_default","methods","handleSubmit","getValues","setValue","watch","reset","dateRange","setDateRange","watchedInitialDate","watchedFinalDate","watchedPeriod","isSubmitDisabled","disableFuture","disablePast","availablePeriods","getPeriodsByType","periodOptions","period","periodLabels","onPeriodChange","next","initialDate","finalDate","getPeriodDates","handleRangeChange","newRange","matching","findMatchingPeriod","handleInitialDateChange","date","handleFinalDateChange","onSubmit","formData","Form_default","DateField_default","Autocomplete_default","option","Icon_default","day","ActionButton_default","FilterPopover_default","MUIButton","Fragment","IS_SERVER","Filters","onChange","paramKey","dataKey","label","popover","usePopover_default","hydratedRef","params","fromUrl","deserializeFilterFromSearchParams","handleApply","current","search","serializeFilterToSearchParams","url","Filters_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport Stack from '@mui/material/Stack';\n\nimport Icon from 'components/Icon';\nimport usePopover from 'hooks/usePopover';\nimport { Icon as IconEnum } from 'types/icon';\nimport { FilterValue } from 'types/period';\n\nimport FilterPopover from './FilterPopover';\nimport { FiltersProps, Type } from './props';\nimport { Button } from './styles';\nimport {\n deserializeFilterFromSearchParams,\n serializeFilterToSearchParams,\n} from './utils';\n\nconst IS_SERVER = typeof window === 'undefined';\n\nconst Filters = ({\n type = Type.FREE,\n value,\n onChange,\n paramKey,\n dataKey,\n label = 'Período',\n}: FiltersProps) => {\n const popover = usePopover();\n\n const hydratedRef = useRef(false);\n\n useEffect(() => {\n if (IS_SERVER || !paramKey || hydratedRef.current) return;\n\n hydratedRef.current = true;\n\n const params = new URLSearchParams(window.location.search);\n const fromUrl = deserializeFilterFromSearchParams(params, {\n paramKey,\n dataKey,\n });\n\n if (fromUrl) onChange(fromUrl);\n }, [dataKey, onChange, paramKey]);\n\n const handleApply = useCallback(\n (next: FilterValue) => {\n onChange(next);\n\n if (IS_SERVER || !paramKey) return;\n\n const current = new URLSearchParams(window.location.search);\n const params = serializeFilterToSearchParams(\n next,\n { paramKey, dataKey },\n current,\n );\n const search = params.toString();\n const url = `${window.location.pathname}${\n search ? `?${search}` : ''\n }${window.location.hash}`;\n\n window.history.replaceState(window.history.state, '', url);\n },\n [dataKey, onChange, paramKey],\n );\n\n return (\n <>\n <Stack alignItems=\"flex-start\">\n <Button\n variant=\"outlined\"\n endIcon={<Icon icon={IconEnum.ARROW_DOWN_SIMPLE} />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n {label}\n </Button>\n </Stack>\n\n <FilterPopover\n open={popover.open}\n onClose={popover.onClose}\n type={type}\n value={value}\n onApply={handleApply}\n />\n </>\n );\n};\n\nexport default Filters;\n","import { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport Button from '@mui/material/Button';\nimport Checkbox from '@mui/material/Checkbox';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Autocomplete from 'components/Autocomplete';\nimport DateField from 'components/form/DateField';\nimport Form from 'components/form/Form';\nimport Icon from 'components/Icon';\nimport useResponsive from 'hooks/useResponsive';\nimport { Icon as IconEnum } from 'types/icon';\nimport { FilterValue, Period } from 'types/period';\n\nimport { Type } from '../props';\nimport {\n findMatchingPeriod,\n getPeriodDates,\n getPeriodsByType,\n periodLabels,\n} from '../utils';\n\nimport { FilterPopoverProps } from './props';\nimport { MenuPopover, ResponsiveDateRangeCalendar } from './styles';\n\nconst DAYS_OF_WEEK = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n\nconst FilterPopover = ({\n open,\n onClose,\n type,\n value,\n onApply,\n}: FilterPopoverProps) => {\n const isMobile = useResponsive('down', 'sm');\n\n const methods = useForm<FilterValue>({\n defaultValues: value,\n });\n const { handleSubmit, getValues, setValue, watch, reset } = methods;\n\n const [dateRange, setDateRange] = useState<[Date | null, Date | null]>([\n value.initialDate,\n value.finalDate,\n ]);\n\n const watchedInitialDate = watch('initialDate');\n const watchedFinalDate = watch('finalDate');\n const watchedPeriod = watch('period');\n\n const isSubmitDisabled = !watchedInitialDate || !watchedFinalDate;\n const disableFuture = type === Type.PAST;\n const disablePast = type === Type.FUTURE;\n\n const availablePeriods = useMemo(() => getPeriodsByType(type), [type]);\n\n const periodOptions = useMemo(\n () =>\n availablePeriods.map(period => ({\n label: periodLabels[period],\n value: period,\n })),\n [availablePeriods],\n );\n\n useEffect(() => {\n if (open) reset(value);\n }, [open, reset, value]);\n\n useEffect(() => {\n setDateRange([value.initialDate, value.finalDate]);\n }, [value.finalDate, value.initialDate]);\n\n const onPeriodChange = useCallback(\n (next: Period) => {\n const { initialDate, finalDate } = getPeriodDates(next);\n\n setDateRange([initialDate, finalDate]);\n\n setValue('period', next);\n setValue('initialDate', initialDate);\n setValue('finalDate', finalDate);\n },\n [setValue],\n );\n\n const handleRangeChange = useCallback(\n (newRange: [Date | null, Date | null]) => {\n setDateRange(newRange);\n\n if (newRange[0]) setValue('initialDate', newRange[0]);\n if (newRange[1]) setValue('finalDate', newRange[1]);\n\n if (newRange[0] && newRange[1]) {\n const matching = findMatchingPeriod(\n newRange[0],\n newRange[1],\n availablePeriods,\n );\n\n setValue('period', matching);\n }\n },\n [availablePeriods, setValue],\n );\n\n const handleInitialDateChange = useCallback(\n (date: Date) => {\n setValue('initialDate', date);\n\n const finalDate = getValues('finalDate');\n\n if (date && finalDate) {\n const newRange: [Date, Date] = [date, finalDate];\n\n setDateRange(newRange);\n\n const matching = findMatchingPeriod(\n newRange[0],\n newRange[1],\n availablePeriods,\n );\n\n setValue('period', matching);\n }\n },\n [availablePeriods, getValues, setValue],\n );\n\n const handleFinalDateChange = useCallback(\n (date: Date) => {\n setValue('finalDate', date);\n\n const initialDate = getValues('initialDate');\n\n if (initialDate && date) {\n const newRange: [Date, Date] = [initialDate, date];\n\n setDateRange(newRange);\n\n const matching = findMatchingPeriod(\n newRange[0],\n newRange[1],\n availablePeriods,\n );\n\n setValue('period', matching);\n }\n },\n [availablePeriods, getValues, setValue],\n );\n\n const onSubmit = useCallback(\n (formData: FilterValue) => {\n onApply(formData);\n onClose();\n },\n [onApply, onClose],\n );\n\n return (\n <MenuPopover\n open={open}\n onClose={onClose}\n arrow={isMobile ? 'top-center' : 'top-left'}\n disabledArrow\n >\n <Form methods={methods} onSubmit={handleSubmit(onSubmit)} gap={2}>\n <Typography variant=\"overline\" color=\"text.disabled\">\n Defina o período\n </Typography>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={2}\n >\n <DateField\n name=\"initialDate\"\n label=\"Início\"\n onChange={handleInitialDateChange}\n slotProps={{ textField: { size: 'small' } }}\n />\n\n <DateField\n name=\"finalDate\"\n label=\"Término\"\n onChange={handleFinalDateChange}\n slotProps={{ textField: { size: 'small' } }}\n />\n </Stack>\n\n <Stack display={{ xs: 'block', sm: 'none' }}>\n <Autocomplete\n name=\"period\"\n options={periodOptions}\n onChange={next => next && onPeriodChange(next as Period)}\n value={watchedPeriod}\n size=\"small\"\n disableClearable\n fullWidth\n />\n </Stack>\n\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n alignItems=\"center\"\n justifyContent={{ xs: 'center', sm: 'space-between' }}\n gap={{ xs: 2, sm: 3 }}\n overflow=\"hidden\"\n >\n <Stack display={{ xs: 'none', sm: 'block' }}>\n {periodOptions.map(option => (\n <Stack\n key={option.value}\n direction=\"row\"\n alignItems=\"center\"\n gap={0.5}\n sx={{ m: 0.4 }}\n >\n <Checkbox\n id={`period_${option.value}`}\n name={`period_${option.value}`}\n icon={\n <Icon\n icon={IconEnum.CHECKMARK_CIRCLE_ROUNDED}\n color=\"primary.main\"\n />\n }\n checkedIcon={\n <Icon\n icon={IconEnum.CHECKMARK_CIRCLE}\n color=\"primary.main\"\n />\n }\n checked={watchedPeriod === option.value}\n onChange={() => onPeriodChange(option.value)}\n />\n\n <Typography\n component=\"label\"\n htmlFor={`period_${option.value}`}\n mt={0.2}\n variant=\"body2\"\n color=\"text.primary\"\n sx={{ cursor: 'pointer', whiteSpace: 'nowrap' }}\n >\n {option.label}\n </Typography>\n </Stack>\n ))}\n </Stack>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ display: { xs: 'none', sm: 'block' } }}\n />\n\n <Stack\n width={{ xs: '100%', sm: 'auto' }}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <ResponsiveDateRangeCalendar\n calendars={1}\n value={dateRange}\n onChange={handleRangeChange}\n disableFuture={disableFuture}\n disablePast={disablePast}\n showDaysOutsideCurrentMonth\n fixedWeekNumber={6}\n dayOfWeekFormatter={day => DAYS_OF_WEEK[day.day()]}\n sx={{\n '& .MuiDateRangeCalendar-root': {\n width: { xs: '100%', sm: 'auto' },\n },\n }}\n />\n </Stack>\n </Stack>\n\n <Divider flexItem />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={1}\n >\n <Button variant=\"outlined\" color=\"inherit\" onClick={onClose}>\n Cancelar\n </Button>\n\n <ActionButton\n actionType=\"SAVE\"\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n disabled={isSubmitDisabled}\n >\n Aplicar\n </ActionButton>\n </Stack>\n </Form>\n </MenuPopover>\n );\n};\n\nexport default memo(FilterPopover);\n","import { styled } from '@mui/material/styles';\n\nimport CommonDateRangeCalendar from 'components/DateRangeCalendar';\nimport CommonMenuPopover from 'components/MenuPopover';\n\nexport const MenuPopover = styled(CommonMenuPopover)(({ theme }) => ({\n marginTop: 10,\n\n '& .MuiPopover-paper': {\n width: 540,\n padding: theme.spacing(3),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.spacing(1),\n backgroundImage: 'none',\n\n [theme.breakpoints.down('sm')]: {\n width: '90vw',\n maxWidth: 'calc(100vw - 32px)',\n padding: theme.spacing(2),\n },\n },\n}));\n\nexport const ResponsiveDateRangeCalendar = styled(CommonDateRangeCalendar)(\n ({ theme }) => ({\n '& .MuiPickersCalendarHeader-label': {\n textTransform: 'capitalize',\n },\n\n [theme.breakpoints.down(400)]: {\n '& .MuiPickersCalendarHeader-root': {\n padding: theme.spacing(0, 7),\n },\n\n '& .MuiDayCalendar-header, & .MuiDayCalendar-weekContainer': {\n gap: 0,\n },\n\n '& .MuiPickersDay-root, & .MuiDateRangePickerDay-root': {\n width: 32,\n height: 32,\n },\n\n '& .MuiDayCalendar-weekDayLabel': {\n width: 32,\n height: 32,\n },\n\n '& .MuiDayCalendar-slideTransition': {\n minHeight: 210,\n },\n },\n\n [theme.breakpoints.down(350)]: {\n '& .MuiPickersDay-root, & .MuiDateRangePickerDay-root': {\n width: 28,\n height: 28,\n },\n\n '& .MuiDayCalendar-weekDayLabel': {\n width: 28,\n height: 28,\n },\n\n '& .MuiDayCalendar-slideTransition': {\n minHeight: 196,\n },\n },\n }),\n);\n","import MUIButton from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\nexport const Button = styled(MUIButton)(({ theme }) => ({\n color: theme.palette.text.primary,\n borderColor: theme.palette.divider,\n\n '&:hover': {\n backgroundColor: 'transparent',\n },\n\n [theme.breakpoints.down('md')]: {\n '&.filters-button': {\n minWidth: 'auto',\n padding: '6px 8px',\n fontSize: 0,\n overflow: 'hidden',\n\n '& .MuiButton-startIcon': {\n margin: 0,\n fontSize: '1rem',\n },\n },\n },\n}));\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Filters/index.tsx","../../../src/components/Filters/FilterPopover/index.tsx","../../../src/components/Filters/FilterPopover/styles.ts","../../../src/components/Filters/styles.ts"],"names":["useCallback","useEffect","useRef","Stack","memo","useMemo","useState","useForm","Button","Checkbox","Divider","Typography","styled","MenuPopover","MenuPopover_default","theme","ResponsiveDateRangeCalendar","DateRangeCalendar_default","jsx","jsxs","DAYS_OF_WEEK","FilterPopover","open","onClose","type","value","onApply","isMobile","useResponsive_default","methods","handleSubmit","getValues","setValue","watch","reset","dateRange","setDateRange","watchedInitialDate","watchedFinalDate","watchedPeriod","isSubmitDisabled","disableFuture","disablePast","availablePeriods","getPeriodsByType","periodOptions","period","periodLabels","onPeriodChange","next","initialDate","finalDate","getPeriodDates","handleRangeChange","newRange","matching","findMatchingPeriod","handleInitialDateChange","date","handleFinalDateChange","onSubmit","formData","Form_default","DateField_default","Autocomplete_default","Scrollbar_default","option","Icon_default","day","ActionButton_default","FilterPopover_default","MUIButton","Fragment","IS_SERVER","Filters","onChange","paramKey","dataKey","label","popover","usePopover_default","hydratedRef","params","fromUrl","deserializeFilterFromSearchParams","handleApply","current","search","serializeFilterToSearchParams","url","Filters_default"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\nimport Stack from '@mui/material/Stack';\n\nimport Icon from 'components/Icon';\nimport usePopover from 'hooks/usePopover';\nimport { Icon as IconEnum } from 'types/icon';\nimport { FilterValue } from 'types/period';\n\nimport FilterPopover from './FilterPopover';\nimport { FiltersProps, Type } from './props';\nimport { Button } from './styles';\nimport {\n deserializeFilterFromSearchParams,\n serializeFilterToSearchParams,\n} from './utils';\n\nconst IS_SERVER = typeof window === 'undefined';\n\nconst Filters = ({\n type = Type.FREE,\n value,\n onChange,\n paramKey,\n dataKey,\n label = 'Período',\n}: FiltersProps) => {\n const popover = usePopover();\n\n const hydratedRef = useRef(false);\n\n useEffect(() => {\n if (IS_SERVER || !paramKey || hydratedRef.current) return;\n\n hydratedRef.current = true;\n\n const params = new URLSearchParams(window.location.search);\n const fromUrl = deserializeFilterFromSearchParams(params, {\n paramKey,\n dataKey,\n });\n\n if (fromUrl) onChange(fromUrl);\n }, [dataKey, onChange, paramKey]);\n\n const handleApply = useCallback(\n (next: FilterValue) => {\n onChange(next);\n\n if (IS_SERVER || !paramKey) return;\n\n const current = new URLSearchParams(window.location.search);\n const params = serializeFilterToSearchParams(\n next,\n { paramKey, dataKey },\n current,\n );\n const search = params.toString();\n const url = `${window.location.pathname}${\n search ? `?${search}` : ''\n }${window.location.hash}`;\n\n window.history.replaceState(window.history.state, '', url);\n },\n [dataKey, onChange, paramKey],\n );\n\n return (\n <>\n <Stack alignItems=\"flex-start\">\n <Button\n variant=\"outlined\"\n endIcon={<Icon icon={IconEnum.ARROW_DOWN_SIMPLE} />}\n size=\"small\"\n onClick={popover.onOpen}\n >\n {label}\n </Button>\n </Stack>\n\n <FilterPopover\n open={popover.open}\n onClose={popover.onClose}\n type={type}\n value={value}\n onApply={handleApply}\n />\n </>\n );\n};\n\nexport default Filters;\n","import { memo, useCallback, useEffect, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport Button from '@mui/material/Button';\nimport Checkbox from '@mui/material/Checkbox';\nimport Divider from '@mui/material/Divider';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nimport ActionButton from 'components/ActionButton';\nimport Autocomplete from 'components/Autocomplete';\nimport DateField from 'components/form/DateField';\nimport Form from 'components/form/Form';\nimport Icon from 'components/Icon';\nimport Scrollbar from 'components/Scrollbar';\nimport useResponsive from 'hooks/useResponsive';\nimport { Icon as IconEnum } from 'types/icon';\nimport { FilterValue, Period } from 'types/period';\n\nimport { Type } from '../props';\nimport {\n findMatchingPeriod,\n getPeriodDates,\n getPeriodsByType,\n periodLabels,\n} from '../utils';\n\nimport { FilterPopoverProps } from './props';\nimport { MenuPopover, ResponsiveDateRangeCalendar } from './styles';\n\nconst DAYS_OF_WEEK = ['D', 'S', 'T', 'Q', 'Q', 'S', 'S'];\n\nconst FilterPopover = ({\n open,\n onClose,\n type,\n value,\n onApply,\n}: FilterPopoverProps) => {\n const isMobile = useResponsive('down', 'sm');\n\n const methods = useForm<FilterValue>({\n defaultValues: value,\n });\n const { handleSubmit, getValues, setValue, watch, reset } = methods;\n\n const [dateRange, setDateRange] = useState<[Date | null, Date | null]>([\n value.initialDate,\n value.finalDate,\n ]);\n\n const watchedInitialDate = watch('initialDate');\n const watchedFinalDate = watch('finalDate');\n const watchedPeriod = watch('period');\n\n const isSubmitDisabled = !watchedInitialDate || !watchedFinalDate;\n const disableFuture = type === Type.PAST;\n const disablePast = type === Type.FUTURE;\n\n const availablePeriods = useMemo(() => getPeriodsByType(type), [type]);\n\n const periodOptions = useMemo(\n () =>\n availablePeriods.map(period => ({\n label: periodLabels[period],\n value: period,\n })),\n [availablePeriods],\n );\n\n useEffect(() => {\n if (open) reset(value);\n }, [open, reset, value]);\n\n useEffect(() => {\n setDateRange([value.initialDate, value.finalDate]);\n }, [value.finalDate, value.initialDate]);\n\n const onPeriodChange = useCallback(\n (next: Period) => {\n const { initialDate, finalDate } = getPeriodDates(next);\n\n setDateRange([initialDate, finalDate]);\n\n setValue('period', next);\n setValue('initialDate', initialDate);\n setValue('finalDate', finalDate);\n },\n [setValue],\n );\n\n const handleRangeChange = useCallback(\n (newRange: [Date | null, Date | null]) => {\n setDateRange(newRange);\n\n if (newRange[0]) setValue('initialDate', newRange[0]);\n if (newRange[1]) setValue('finalDate', newRange[1]);\n\n if (newRange[0] && newRange[1]) {\n const matching = findMatchingPeriod(\n newRange[0],\n newRange[1],\n availablePeriods,\n );\n\n setValue('period', matching);\n }\n },\n [availablePeriods, setValue],\n );\n\n const handleInitialDateChange = useCallback(\n (date: Date) => {\n setValue('initialDate', date);\n\n const finalDate = getValues('finalDate');\n\n if (date && finalDate) {\n const newRange: [Date, Date] = [date, finalDate];\n\n setDateRange(newRange);\n\n const matching = findMatchingPeriod(\n newRange[0],\n newRange[1],\n availablePeriods,\n );\n\n setValue('period', matching);\n }\n },\n [availablePeriods, getValues, setValue],\n );\n\n const handleFinalDateChange = useCallback(\n (date: Date) => {\n setValue('finalDate', date);\n\n const initialDate = getValues('initialDate');\n\n if (initialDate && date) {\n const newRange: [Date, Date] = [initialDate, date];\n\n setDateRange(newRange);\n\n const matching = findMatchingPeriod(\n newRange[0],\n newRange[1],\n availablePeriods,\n );\n\n setValue('period', matching);\n }\n },\n [availablePeriods, getValues, setValue],\n );\n\n const onSubmit = useCallback(\n (formData: FilterValue) => {\n onApply(formData);\n onClose();\n },\n [onApply, onClose],\n );\n\n return (\n <MenuPopover\n open={open}\n onClose={onClose}\n arrow={isMobile ? 'top-center' : 'top-left'}\n disabledArrow\n >\n <Form methods={methods} onSubmit={handleSubmit(onSubmit)} gap={2}>\n <Typography variant=\"overline\" color=\"text.disabled\">\n Defina o período\n </Typography>\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={2}\n >\n <DateField\n name=\"initialDate\"\n label=\"Início\"\n onChange={handleInitialDateChange}\n slotProps={{ textField: { size: 'small' } }}\n />\n\n <DateField\n name=\"finalDate\"\n label=\"Término\"\n onChange={handleFinalDateChange}\n slotProps={{ textField: { size: 'small' } }}\n />\n </Stack>\n\n <Stack display={{ xs: 'block', sm: 'none' }}>\n <Autocomplete\n name=\"period\"\n options={periodOptions}\n onChange={next => next && onPeriodChange(next as Period)}\n value={watchedPeriod}\n size=\"small\"\n disableClearable\n fullWidth\n />\n </Stack>\n\n <Stack\n direction={{ xs: 'column', sm: 'row' }}\n alignItems=\"center\"\n justifyContent={{ xs: 'center', sm: 'space-between' }}\n gap={{ xs: 2, sm: 3 }}\n overflow=\"hidden\"\n >\n <Scrollbar\n fillContent\n sx={{\n display: { xs: 'none', sm: 'block' },\n maxHeight: 360,\n }}\n >\n {periodOptions.map(option => (\n <Stack\n key={option.value}\n direction=\"row\"\n alignItems=\"center\"\n gap={0.5}\n sx={{ m: 0.4 }}\n >\n <Checkbox\n id={`period_${option.value}`}\n name={`period_${option.value}`}\n icon={\n <Icon\n icon={IconEnum.CHECKMARK_CIRCLE_ROUNDED}\n color=\"primary.main\"\n />\n }\n checkedIcon={\n <Icon\n icon={IconEnum.CHECKMARK_CIRCLE}\n color=\"primary.main\"\n />\n }\n checked={watchedPeriod === option.value}\n onChange={() => onPeriodChange(option.value)}\n />\n\n <Typography\n component=\"label\"\n htmlFor={`period_${option.value}`}\n mt={0.2}\n variant=\"body2\"\n color=\"text.primary\"\n sx={{ cursor: 'pointer', whiteSpace: 'nowrap' }}\n >\n {option.label}\n </Typography>\n </Stack>\n ))}\n </Scrollbar>\n\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ display: { xs: 'none', sm: 'block' } }}\n />\n\n <Stack\n width={{ xs: '100%', sm: 'auto' }}\n alignItems=\"center\"\n justifyContent=\"center\"\n >\n <ResponsiveDateRangeCalendar\n calendars={1}\n value={dateRange}\n onChange={handleRangeChange}\n disableFuture={disableFuture}\n disablePast={disablePast}\n showDaysOutsideCurrentMonth\n fixedWeekNumber={6}\n dayOfWeekFormatter={day => DAYS_OF_WEEK[day.day()]}\n sx={{\n '& .MuiDateRangeCalendar-root': {\n width: { xs: '100%', sm: 'auto' },\n },\n }}\n />\n </Stack>\n </Stack>\n\n <Divider flexItem />\n\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n gap={1}\n >\n <Button variant=\"outlined\" color=\"inherit\" onClick={onClose}>\n Cancelar\n </Button>\n\n <ActionButton\n actionType=\"SAVE\"\n variant=\"contained\"\n color=\"primary\"\n type=\"submit\"\n disabled={isSubmitDisabled}\n >\n Aplicar\n </ActionButton>\n </Stack>\n </Form>\n </MenuPopover>\n );\n};\n\nexport default memo(FilterPopover);\n","import { styled } from '@mui/material/styles';\n\nimport CommonDateRangeCalendar from 'components/DateRangeCalendar';\nimport CommonMenuPopover from 'components/MenuPopover';\n\nexport const MenuPopover = styled(CommonMenuPopover)(({ theme }) => ({\n marginTop: 10,\n\n '& .MuiPopover-paper': {\n width: 540,\n padding: theme.spacing(3),\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.spacing(1),\n backgroundImage: 'none',\n\n [theme.breakpoints.down('sm')]: {\n width: '90vw',\n maxWidth: 'calc(100vw - 32px)',\n padding: theme.spacing(2),\n },\n },\n}));\n\nexport const ResponsiveDateRangeCalendar = styled(CommonDateRangeCalendar)(\n ({ theme }) => ({\n [theme.breakpoints.up('sm')]: {\n '&.MuiDateRangeCalendar-root': {\n margin: -24,\n },\n },\n\n '& .MuiPickersCalendarHeader-label': {\n textTransform: 'capitalize',\n },\n\n [theme.breakpoints.down(400)]: {\n '& .MuiPickersCalendarHeader-root': {\n padding: theme.spacing(0, 7),\n },\n\n '& .MuiDayCalendar-header, & .MuiDayCalendar-weekContainer': {\n gap: 0,\n },\n\n '& .MuiPickersDay-root, & .MuiDateRangePickerDay-root': {\n width: 32,\n height: 32,\n },\n\n '& .MuiDayCalendar-weekDayLabel': {\n width: 32,\n height: 32,\n },\n\n '& .MuiDayCalendar-slideTransition': {\n minHeight: 210,\n },\n },\n\n [theme.breakpoints.down(350)]: {\n '& .MuiPickersDay-root, & .MuiDateRangePickerDay-root': {\n width: 28,\n height: 28,\n },\n\n '& .MuiDayCalendar-weekDayLabel': {\n width: 28,\n height: 28,\n },\n\n '& .MuiDayCalendar-slideTransition': {\n minHeight: 196,\n },\n },\n }),\n);\n","import MUIButton from '@mui/material/Button';\nimport { styled } from '@mui/material/styles';\n\nexport const Button = styled(MUIButton)(({ theme }) => ({\n color: theme.palette.text.primary,\n borderColor: theme.palette.divider,\n\n '&:hover': {\n backgroundColor: 'transparent',\n },\n\n [theme.breakpoints.down('md')]: {\n '&.filters-button': {\n minWidth: 'auto',\n padding: '6px 8px',\n fontSize: 0,\n overflow: 'hidden',\n\n '& .MuiButton-startIcon': {\n margin: 0,\n fontSize: '1rem',\n },\n },\n },\n}));\n"]}
|