Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 49 additions & 1 deletion src/components/date-filter/__tests__/date-filter.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,12 @@ jest.mock('baseui/popover', () => {

jest.mock('baseui/timepicker', () => ({
TimePicker: jest.fn(
({ value, onChange, disabled }: TimePickerProps) =>
({ value, onChange, disabled, minTime, maxTime }: TimePickerProps) =>
onChange && (
<input
data-testid="time-picker"
data-mintime={minTime?.getTime() ?? 'none'}
data-maxtime={maxTime?.getTime() ?? 'none'}
value={value?.toTimeString() ?? ''}
onChange={(e) => onChange(new Date(e.target.value))}
disabled={disabled}
Expand Down Expand Up @@ -209,6 +211,52 @@ describe(DateFilter.name, () => {
);
});

it('restricts start time picker options when the same date is selected for start and end', () => {
setup({});
const datePicker = screen.getByPlaceholderText('Mock placeholder');

act(() => {
fireEvent.click(datePicker);
});

act(() => {
fireEvent.click(screen.getByLabelText(/May 13th 2023/));
});

act(() => {
fireEvent.click(screen.getByLabelText(/May 13th 2023/));
});

const timePickers = screen.getAllByTestId('time-picker');
const startTimePicker = timePickers[0];

expect(Number(startTimePicker.getAttribute('data-maxtime'))).toBe(
new Date('2023-05-13T23:59:59.999Z').getTime()
);
});

it('does not restrict start time picker options when consecutive dates are selected', () => {
setup({});
const datePicker = screen.getByPlaceholderText('Mock placeholder');

act(() => {
fireEvent.click(datePicker);
});

act(() => {
fireEvent.click(screen.getByLabelText(/May 13th 2023/));
});

act(() => {
fireEvent.click(screen.getByLabelText(/May 14th 2023/));
});

const timePickers = screen.getAllByTestId('time-picker');
const startTimePicker = timePickers[0];

expect(startTimePicker.getAttribute('data-maxtime')).toBe('none');
});

it('displays the correct format when using relative date values', () => {
setup({
overrides: {
Expand Down
16 changes: 14 additions & 2 deletions src/components/date-filter/date-filter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,13 @@ export default function DateFilter({
nullable
disabled={!tempDates.start || !tempDates.end}
value={tempDates.start}
maxTime={tempDates.end}
maxTime={
tempDates.start &&
tempDates.end &&
dayjs(tempDates.start).isSame(tempDates.end, 'day')
? tempDates.end
: undefined
}
error={areTempDatesInvalid}
onChange={(newStart) => {
setTempDates((oldDates) => ({
Expand All @@ -199,7 +205,13 @@ export default function DateFilter({
nullable
disabled={!tempDates.start || !tempDates.end}
value={tempDates.end}
minTime={tempDates.start}
minTime={
tempDates.start &&
tempDates.end &&
dayjs(tempDates.start).isSame(tempDates.end, 'day')
? tempDates.start
: undefined
}
error={areTempDatesInvalid}
onChange={(newEnd) =>
setTempDates((oldDates) => ({
Expand Down