Skip to content

Commit

Permalink
fix: set incorrect time range on end date picker (#109)
Browse files Browse the repository at this point in the history
* fix: set incorrect time range on end date picker

* test: add test for time range

* chore: add prefix on variables
  • Loading branch information
jajugoguma authored Nov 23, 2022
1 parent f53606b commit 02b16ea
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 3 deletions.
24 changes: 21 additions & 3 deletions src/js/dateRangePicker/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,12 +302,29 @@ var DateRangePicker = defineClass(
this.fire('change:end');
},

/*
* Get date of start picker and end picker being same
* @returns {boolean}
* @private
*/
_isStartAndEndDateSame: function() {
return (
!!this._endpicker.getDate() &&
!!this._startpicker.getDate() &&
dateUtil.compare(
this._endpicker.getDate(),
this._startpicker.getDate(),
constants.TYPE_DATE
) === 0
);
},

/**
* Set time range on end picker
* @private
*/
_setTimeRangeOnEndPicker: function() {
var pickerDate, timeRange;
var pickerDate, timeRange, timeRangeToSet;
var endTimePicker = this._endpicker._timePicker;

if (!endTimePicker) {
Expand All @@ -316,9 +333,10 @@ var DateRangePicker = defineClass(

pickerDate = this._endpicker.getDate() || this._startpicker.getDate();
timeRange = this._getTimeRangeFromStartPicker();
timeRangeToSet = pickerDate && timeRange[pickerDate.getDate()];

if (pickerDate && timeRange[pickerDate.getDate()]) {
endTimePicker.setRange(timeRange[pickerDate.getDate()]);
if (this._isStartAndEndDateSame() && timeRangeToSet) {
endTimePicker.setRange(timeRangeToSet);
this._isRangeSet = true;
} else if (this._isRangeSet) {
endTimePicker.setRange({ hour: 0, minute: 0 });
Expand Down
30 changes: 30 additions & 0 deletions test/dateRangePicker/dateRangePicker.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,36 @@ describe('DateRangePicker', function() {
expect(minuteSelectOptions).toMatchObject(expectMatchArray);
});

it('should not set disabled when date of start picker does not same as date of endPicker for time select options in endPicker', function() {
var startPickerDate = new Date(2021, 1, 1, 9, 30);
var endPickerDate = new Date(2022, 1, 1, 9, 30);
var endPickerHourSelectOptions, endPickerMinuteSelectOptions;

picker = new DateRangePicker({
startpicker: {
date: startPickerDate,
input: startpickerInput,
container: startpickerContainer
},
endpicker: {
date: endPickerDate,
input: endpickerInput,
container: endpickerContainer
},
timePicker: true
});

endPickerHourSelectOptions = Array.from(
endpickerContainer.querySelectorAll('.tui-timepicker-hour option')
);
endPickerMinuteSelectOptions = Array.from(
endpickerContainer.querySelectorAll('.tui-timepicker-minute option')
);

expect(endPickerHourSelectOptions).toMatchObject(getMatchedArray(12, 0));
expect(endPickerMinuteSelectOptions).toMatchObject(getMatchedArray(60, 0));
});

it('should disable endpicker with null when initial start-date is null', function() {
picker = new DateRangePicker({
startpicker: {
Expand Down

0 comments on commit 02b16ea

Please sign in to comment.