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

View file

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

View file

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