import React, { useEffect } from "react";
import { Box, Text, UseInput } from "./Ink";
import { NumberInput } from "./NumberInput";
import { ConfiguredFilter } from "./Filter";
import { DateInput } from "./DateInput";
type DateFilterProps = {
filter: ConfiguredFilter;
onFilterChange: (filter: ConfiguredFilter) => void;
onFilterComplete: () => void;
useInput: UseInput;
};
export const DateFilter = ({
filter,
onFilterChange,
onFilterComplete,
useInput,
}: DateFilterProps): React.JSX.Element => {
useEffect(() => {
switch (filter.operator) {
case "lteDate":
if (filter.dateMax) {
onFilterComplete();
}
break;
case "gteDate":
if (filter.dateMin) {
onFilterComplete();
}
break;
case "betweenDate":
if (filter.dateMin && filter.dateMax) {
onFilterComplete();
}
break;
case "today":
onFilterComplete();
break;
case "inLessThan":
case "inMoreThan":
case "lessThanAgo":
case "moreThanAgo":
case "inTheNext":
case "inTheLast":
default:
}
}, [filter]);
switch (filter.operator) {
case "lteDate":
return (
Enter your filter maximum date:
onFilterChange({ ...filter, dateMax: date })
}
useInput={useInput}
/>
);
case "gteDate":
return (
Enter your filter minimum date:
onFilterChange({ ...filter, dateMin: date })
}
useInput={useInput}
/>
);
case "betweenDate":
return (
Enter your filter{" "}
{filter.operator === "betweenDate"
? filter.dateMin === undefined
? "minimum "
: "maximum "
: ""}
date:{" "}
filter.dateMin === undefined
? onFilterChange({
...filter,
dateMin: value,
})
: onFilterChange({
...filter,
dateMax: value,
})
}
useInput={useInput}
/>
);
case "today":
return <>>;
case "inMoreThan":
case "moreThanAgo":
case "inLessThan":
case "inTheNext":
case "lessThanAgo":
case "inTheLast":
return (
Enter a number of days:
onFilterChange({ ...filter, relativeDays: days })
}
useInput={useInput}
/>
);
default:
return <>>;
}
};