Merge pull request #1190 from ubavic/date-picker

Date picker
This commit is contained in:
Rafael Taranto 2022-04-21 23:21:16 +01:00 committed by GitHub
commit b9fe558019
3 changed files with 23 additions and 27 deletions

View file

@ -1,7 +1,7 @@
import { useLazyQuery } from '@apollo/react-hooks' import { useLazyQuery } from '@apollo/react-hooks'
import { makeStyles, ClickAwayListener } from '@material-ui/core' import { makeStyles, ClickAwayListener } from '@material-ui/core'
import classnames from 'classnames' import classnames from 'classnames'
import { format } from 'date-fns/fp' import { format, set } from 'date-fns/fp'
import FileSaver from 'file-saver' import FileSaver from 'file-saver'
import * as R from 'ramda' import * as R from 'ramda'
import React, { useState, useCallback } from 'react' import React, { useState, useCallback } from 'react'
@ -280,7 +280,15 @@ const LogsDownloaderPopover = ({
)} )}
</div> </div>
<DateRangePicker <DateRangePicker
maxDate={new Date()} maxDate={set(
{
hours: 23,
minutes: 59,
seconds: 59,
milliseconds: 999
},
new Date()
)}
onRangeChange={handleRangeChange} onRangeChange={handleRangeChange}
/> />
</div> </div>

View file

@ -178,9 +178,7 @@ const Calendar = ({ minDate, maxDate, handleSelect, ...props }) => {
{R.range(1, 8).map((row, key) => ( {R.range(1, 8).map((row, key) => (
<tr key={key}> <tr key={key}>
{getRow(currentDisplayedMonth, row).map((day, key) => ( {getRow(currentDisplayedMonth, row).map((day, key) => (
<td <td key={key} onClick={() => handleSelect(day)}>
key={key}
onClick={() => handleSelect(day, minDate, maxDate)}>
<Tile <Tile
isDisabled={ isDisabled={
(maxDate && isAfter(maxDate, day)) || (maxDate && isAfter(maxDate, day)) ||

View file

@ -1,11 +1,6 @@
import { makeStyles } from '@material-ui/core/styles' import { makeStyles } from '@material-ui/core/styles'
import classnames from 'classnames' import classnames from 'classnames'
import { import { compareAsc, differenceInDays, set } from 'date-fns/fp'
differenceInDays,
differenceInMonths,
isSameMonth,
set
} from 'date-fns/fp'
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import Calendar from './Calendar' import Calendar from './Calendar'
@ -29,27 +24,22 @@ const DateRangePicker = ({ minDate, maxDate, className, onRangeChange }) => {
const classes = useStyles() const classes = useStyles()
const handleSelect = (day, minDate, maxDate) => { const handleSelect = day => {
if ( if (
(maxDate && differenceInDays(maxDate, day) > 0) || (maxDate && compareAsc(maxDate, day) > 0) ||
(minDate && differenceInDays(day, minDate) > 0) (minDate && differenceInDays(day, minDate) > 0)
) )
return return
if (from && !to && differenceInDays(day, from) > 0) { if (from && !to) {
setTo(from) if (differenceInDays(from, day) >= 0) {
setFrom(day) setTo(
return set({ hours: 23, minutes: 59, seconds: 59, milliseconds: 999 }, day)
} )
} else {
if ( setTo(from)
from && setFrom(day)
!to && }
(isSameMonth(from, day) || differenceInMonths(from, day) > 0)
) {
setTo(
set({ hours: 23, minutes: 59, seconds: 59, milliseconds: 999 }, day)
)
return return
} }