Skip to content

Commit 071e9a4

Browse files
authored
#613 - fixed range mode (#614)
1 parent a788d34 commit 071e9a4

File tree

8 files changed

+45
-7
lines changed

8 files changed

+45
-7
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog
22

3+
### v3.5.2
4+
* fixed range mode [#613](https://github.com/t1m0n/air-datepicker/issues/613)
5+
36
### v3.5.1
47
* improved `destroy()` behavior - added `isDestroyed` property, `opts` and `selectedDates` will still have empty values, instead of `null`, even after AirDatepicker has been destroyed [#600](https://github.com/t1m0n/air-datepicker/issues/600)
58

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ new AirDatepicker('#el' [, options]);
2424

2525
## Recent updates
2626

27+
### v3.5.2
28+
* fixed range mode [#613](https://github.com/t1m0n/air-datepicker/issues/613)
29+
2730
### v3.5.1
2831
* improved `destroy()` behavior - added `isDestroyed` property, `opts` and `selectedDates` will still have empty values, instead of `null`, even after AirDatepicker has been destroyed [#600](https://github.com/t1m0n/air-datepicker/issues/600)
2932

dist/README.md

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ new AirDatepicker('#el' [, options]);
2424

2525
## Recent updates
2626

27+
### v3.5.2
28+
* fixed range mode [#613](https://github.com/t1m0n/air-datepicker/issues/613)
29+
2730
### v3.5.1
2831
* improved `destroy()` behavior - added `isDestroyed` property, `opts` and `selectedDates` will still have empty values, instead of `null`, even after AirDatepicker has been destroyed [#600](https://github.com/t1m0n/air-datepicker/issues/600)
2932

dist/air-datepicker.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "air-datepicker",
3-
"version": "3.5.1",
3+
"version": "3.5.2",
44
"scripts": {
55
"dev": "cross-env NODE_ENV=development webpack",
66
"dev:serve": "cross-env NODE_ENV=development webpack serve",

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "air-datepicker",
3-
"version": "3.5.1",
3+
"version": "3.5.2",
44
"scripts": {
55
"dev": "cross-env NODE_ENV=development webpack",
66
"dev:serve": "cross-env NODE_ENV=development webpack serve",

src/datepicker.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ let $datepickersContainer = '',
3535

3636
export default class Datepicker {
3737
static defaults = defaults
38-
static version = '3.5.1'
38+
static version = '3.5.2'
3939
static defaultGlobalContainerId = 'air-datepicker-global-container'
4040
static buildGlobalContainer(id) {
4141
containerBuilt = true;
@@ -586,6 +586,10 @@ export default class Datepicker {
586586
_this.rangeDateTo = '';
587587
_this._updateLastSelectedDate(false);
588588
} else {
589+
// Assume that if unselectDate has been called, then there is only one selected date
590+
// in range mode, so we need to reset rangeDateTo
591+
_this.rangeDateTo = '';
592+
589593
_this._updateLastSelectedDate(_this.selectedDates[_this.selectedDates.length - 1]);
590594
}
591595

tests/options.test.js

+28-3
Original file line numberDiff line numberDiff line change
@@ -742,12 +742,14 @@ describe('OPTIONS TESTS', () => {
742742
describe('range', () => {
743743
it('should enable range mode', () => {
744744
init({
745-
range: true
745+
range: true,
746+
startDate: '2023-10-10',
746747
});
747748

748-
dp.selectDate(['2023-10-10', '2023-10-22']);
749+
dp.getCell('2023-10-10').click();
750+
dp.getCell('2023-10-22').click();
749751

750-
expect(Boolean(dp.rangeDateFrom && dp.rangeDateTo)).toBeTruthy();
752+
expect(dp.selectedDates).toHaveLength(2);
751753
});
752754

753755
it('should select dates in proper', () => {
@@ -826,5 +828,28 @@ describe('OPTIONS TESTS', () => {
826828
expect(timeFormat.format(dp.selectedDates[0])).toEqual('10:10');
827829
expect(timeFormat.format(dp.selectedDates[1])).toEqual('20:20');
828830
});
831+
832+
it('should work correctly when user unselects one date and then selects another', () => {
833+
init({
834+
range: true,
835+
toggleSelected: true,
836+
startDate: '2024-05-26',
837+
});
838+
839+
// Select two dates
840+
dp.getCell('2024-05-12').click();
841+
dp.getCell('2024-05-17').click();
842+
843+
// Unselect the last one
844+
dp.getCell('2024-05-17').click();
845+
846+
// Select other 'to' date
847+
dp.getCell('2024-05-23').click();
848+
849+
expect(dp.selectedDates).toHaveLength(2);
850+
expect(dp.selectedDates[0].toLocaleDateString('ru')).toEqual('12.05.2024');
851+
expect(dp.selectedDates[1].toLocaleDateString('ru')).toEqual('23.05.2024');
852+
853+
});
829854
});
830855
});

0 commit comments

Comments
 (0)