Skip to content

Commit

Permalink
fix(datetime): minutes only filtered when max hour matches current hour
Browse files Browse the repository at this point in the history
  • Loading branch information
sean-perkins committed Feb 3, 2022
1 parent b40fc46 commit adebce1
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 2 deletions.
47 changes: 46 additions & 1 deletion core/src/components/datetime/test/data.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ describe('generateTime()', () => {
day: 19,
month: 5,
year: 2021,
hour: 5,
hour: 7,
minute: 43
}
const max = {
Expand Down Expand Up @@ -287,5 +287,50 @@ describe('generateTime()', () => {

expect(hours).toStrictEqual([19, 20]);
});

it('should return the filtered minutes when the max bound is set', () => {
const refValue = {
day: undefined,
month: undefined,
year: undefined,
hour: 13,
minute: 0
};

const maxParts = {
day: undefined,
month: undefined,
year: undefined,
hour: 13,
minute: 2
};

const { minutes } = generateTime(refValue, 'h23', undefined, maxParts);

expect(minutes).toStrictEqual([0, 1, 2]);
});

it('should not filter minutes when the current hour is less than the max hour bound', () => {
const refValue = {
day: undefined,
month: undefined,
year: undefined,
hour: 12,
minute: 0
};

const maxParts = {
day: undefined,
month: undefined,
year: undefined,
hour: 13,
minute: 2
};

const { minutes } = generateTime(refValue, 'h23', undefined, maxParts);

expect(minutes.length).toEqual(60);
});

})
})
6 changes: 5 additions & 1 deletion core/src/components/datetime/utils/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,11 @@ export const generateTime = (
});
isPMAllowed = maxParts.hour >= 13;
}
if (maxParts.minute !== undefined) {
if (maxParts.minute !== undefined && refParts.hour == maxParts.hour) {
// The available minutes should only be filtered when the hour is the same as the max hour.
// For example if the max hour is 10:30 and the current hour is 10:00,
// users should be able to select 00-30 minutes.
// If the current hour is 09:00, users should be able to select 00-60 minutes.
processedMinutes = processedMinutes.filter(minute => minute <= maxParts.minute!);
}

Expand Down

0 comments on commit adebce1

Please sign in to comment.