123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- describe('DateRangePicker - options', function () {
- let clock;
- let elem;
- let input0;
- let input1;
- before(function () {
- clock = sinon.useFakeTimers({now: new Date(2020, 1, 14)});
- });
- after(function () {
- clock.restore();
- });
- beforeEach(function () {
- elem = domUtils.parseHTML('<div><input><input></div>').firstChild;
- [input0, input1] = elem.children;
- testContainer.appendChild(elem);
- });
- afterEach(function () {
- testContainer.removeChild(elem);
- });
- describe('allowOneSidedRange', function () {
- it('disables the requirement for both sides of range to be set/unset', function () {
- let {drp, picker0, picker1} = createDRP(elem, {allowOneSidedRange: true});
- let cells0 = getCells(picker0);
- let cells1 = getCells(picker1);
- drp.datepickers[0].show();
- cells0[16].click();
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 11), undefined]);
- expect(drp.getDates(), 'to equal', [new Date(drp.dates[0]), undefined]);
- expect(input0.value, 'to be', '02/11/2020');
- expect(filterCells(cells0, '.selected'), 'to equal', [cells0[16]]);
- expect(filterCells(cells0, '.range-start'), 'to equal', [cells0[16]]);
- expect(filterCells(cells0, '.range-end'), 'to equal', []);
- expect(filterCells(cells0, '.range'), 'to equal', []);
- expect(filterCells(cells0, '.focused'), 'to equal', [cells0[16]]);
- expect(input1.value, 'to be', '');
- expect(filterCells(cells1, '.selected'), 'to equal', []);
- expect(filterCells(cells1, '.range-start'), 'to equal', [cells1[16]]);
- expect(filterCells(cells1, '.range-end'), 'to equal', []);
- expect(filterCells(cells1, '.range'), 'to equal', []);
- expect(filterCells(cells1, '.focused'), 'to equal', [cells1[19]]);
- drp.datepickers[1].show();
- cells1[25].click();
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 11), dateValue(2020, 1, 20)]);
- expect(drp.getDates(), 'to equal', drp.dates.map(date => new Date(date)));
- expect(input0.value, 'to be', '02/11/2020');
- expect(filterCells(cells0, '.selected'), 'to equal', [cells0[16]]);
- expect(filterCells(cells0, '.range-start'), 'to equal', [cells0[16]]);
- expect(filterCells(cells0, '.range-end'), 'to equal', [cells0[25]]);
- expect(filterCells(cells0, '.range'), 'to equal', cells0.slice(17, 25));
- expect(filterCells(cells0, '.focused'), 'to equal', [cells0[16]]);
- expect(input1.value, 'to be', '02/20/2020');
- expect(filterCells(cells1, '.selected'), 'to equal', [cells1[25]]);
- expect(filterCells(cells1, '.range-start'), 'to equal', [cells1[16]]);
- expect(filterCells(cells1, '.range-end'), 'to equal', [cells1[25]]);
- expect(filterCells(cells1, '.range'), 'to equal', cells1.slice(17, 25));
- expect(filterCells(cells1, '.focused'), 'to equal', [cells1[25]]);
- simulant.fire(input0, 'keydown', {key: 'Escape'});
- input0.value = '';
- simulant.fire(input0, 'keydown', {key: 'Enter'});
- expect(drp.dates, 'to equal', [undefined, dateValue(2020, 1, 20)]);
- expect(drp.getDates(), 'to equal', [undefined, new Date(drp.dates[1])]);
- expect(input0.value, 'to be', '');
- expect(filterCells(cells0, '.selected'), 'to equal', []);
- expect(filterCells(cells0, '.range-start'), 'to equal', []);
- expect(filterCells(cells0, '.range-end'), 'to equal', [cells0[25]]);
- expect(filterCells(cells0, '.range'), 'to equal', []);
- expect(filterCells(cells0, '.focused'), 'to equal', [cells0[19]]);
- expect(input1.value, 'to be', '02/20/2020');
- expect(filterCells(cells1, '.selected'), 'to equal', [cells1[25]]);
- expect(filterCells(cells1, '.range-start'), 'to equal', []);
- expect(filterCells(cells1, '.range-end'), 'to equal', [cells1[25]]);
- expect(filterCells(cells1, '.range'), 'to equal', []);
- expect(filterCells(cells1, '.focused'), 'to equal', [cells1[25]]);
- drp.destroy();
- input0.value = '';
- input1.value = '';
- // by setDates()
- ({drp, picker0, picker1} = createDRP(elem, {allowOneSidedRange: true}));
- cells0 = getCells(picker0);
- cells1 = getCells(picker1);
- drp.setDates('02/11/2020');
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 11), undefined]);
- expect(input0.value, 'to be', '02/11/2020');
- expect(filterCells(cells0, '.selected'), 'to equal', [cells0[16]]);
- expect(input1.value, 'to be', '');
- expect(filterCells(cells1, '.selected'), 'to equal', []);
- drp.setDates(undefined, '02/20/2020');
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 11), dateValue(2020, 1, 20)]);
- expect(input0.value, 'to be', '02/11/2020');
- expect(filterCells(cells0, '.selected'), 'to equal', [cells0[16]]);
- expect(input1.value, 'to be', '02/20/2020');
- expect(filterCells(cells1, '.selected'), 'to equal', [cells1[25]]);
- drp.setDates({clear: true});
- expect(drp.dates, 'to equal', [undefined, dateValue(2020, 1, 20)]);
- expect(input0.value, 'to be', '');
- expect(filterCells(cells0, '.selected'), 'to equal', []);
- expect(input1.value, 'to be', '02/20/2020');
- expect(filterCells(cells1, '.selected'), 'to equal', [cells1[25]]);
- drp.setDates('02/11/2020', {clear: true});
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 11), undefined]);
- expect(input0.value, 'to be', '02/11/2020');
- expect(filterCells(cells0, '.selected'), 'to equal', [cells0[16]]);
- expect(input1.value, 'to be', '');
- expect(filterCells(cells1, '.selected'), 'to equal', []);
- drp.setDates({clear: true}, '02/20/2020');
- expect(drp.dates, 'to equal', [undefined, dateValue(2020, 1, 20)]);
- expect(input0.value, 'to be', '');
- expect(filterCells(cells0, '.selected'), 'to equal', []);
- expect(input1.value, 'to be', '02/20/2020');
- expect(filterCells(cells1, '.selected'), 'to equal', [cells1[25]]);
- drp.setDates(undefined, {clear: true});
- expect(drp.dates, 'to equal', [undefined, undefined]);
- expect(input0.value, 'to be', '');
- expect(filterCells(cells0, '.selected'), 'to equal', []);
- expect(input1.value, 'to be', '');
- expect(filterCells(cells1, '.selected'), 'to equal', []);
- drp.destroy();
- });
- it('can be updated with setOptions()', function () {
- const drp = new DateRangePicker(elem);
- drp.setOptions({allowOneSidedRange: true});
- input0.value = '02/11/2020';
- simulant.fire(input0, 'keydown', {key: 'Enter'});
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 11), undefined]);
- drp.setDates({clear: true}, '02/11/2020');
- expect(drp.dates, 'to equal', [undefined, dateValue(2020, 1, 11)]);
- drp.setOptions({allowOneSidedRange: false});
- input1.value = '02/20/2020';
- simulant.fire(input1, 'keydown', {key: 'Enter'});
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 20), dateValue(2020, 1, 20)]);
- drp.setDates({clear: true});
- expect(drp.dates, 'to equal', [undefined, undefined]);
- drp.destroy();
- });
- });
- describe('pickLevel', function () {
- it('changes the span of range selection to 1st of a month → last day of a month when 1', function () {
- input0.value = '2/14/2020';
- input1.value = '2/14/2020';
- const {drp, picker0, picker1} = createDRP(elem, {pickLevel: 1});
- const viewSwitch0 = picker0.querySelector('.view-switch');
- const viewSwitch1 = picker1.querySelector('.view-switch');
- let cells0 = getCells(picker0);
- let cells1 = getCells(picker1);
- input0.focus();
- expect(drp.dates, 'to equal', [dateValue(2020, 1, 1), dateValue(2020, 1, 29)]);
- expect(input0.value, 'to be', '02/01/2020');
- expect(viewSwitch0.textContent, 'to be', '2020');
- expect(getCellIndices(cells0, '.selected'), 'to equal', [1]);
- expect(getCellIndices(cells0, '.range-start'), 'to equal', [1]);
- expect(getCellIndices(cells0, '.range-end'), 'to equal', [1]);
- expect(getCellIndices(cells0, '.range'), 'to equal', []);
- expect(getCellIndices(cells0, '.focused'), 'to equal', [1]);
- input1.focus();
- expect(input1.value, 'to be', '02/29/2020');
- expect(viewSwitch1.textContent, 'to be', '2020');
- expect(getCellIndices(cells1, '.selected'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range-start'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range-end'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range'), 'to equal', []);
- expect(getCellIndices(cells1, '.focused'), 'to equal', [1]);
- // mouse operation
- cells0[0].click();
- cells1[6].click();
- expect(drp.dates, 'to equal', [dateValue(2020, 0, 1), dateValue(2020, 6, 31)]);
- expect(input0.value, 'to be', '01/01/2020');
- expect(viewSwitch0.textContent, 'to be', '2020');
- expect(getCellIndices(cells0, '.selected'), 'to equal', [0]);
- expect(getCellIndices(cells0, '.range-start'), 'to equal', [0]);
- expect(getCellIndices(cells0, '.range-end'), 'to equal', [6]);
- input1.focus();
- expect(input1.value, 'to be', '07/31/2020');
- expect(viewSwitch1.textContent, 'to be', '2020');
- expect(getCellIndices(cells1, '.selected'), 'to equal', [6]);
- expect(getCellIndices(cells1, '.range-start'), 'to equal', [0]);
- expect(getCellIndices(cells1, '.range-end'), 'to equal', [6]);
- // api call
- drp.setDates('2/14/2021', '3/14/2020');
- expect(drp.dates, 'to equal', [dateValue(2020, 2, 1), dateValue(2021, 1, 28)]);
- expect(input0.value, 'to be', '03/01/2020');
- expect(viewSwitch0.textContent, 'to be', '2020');
- expect(getCellIndices(cells0, '.selected'), 'to equal', [2]);
- expect(getCellIndices(cells0, '.range-start'), 'to equal', [2]);
- expect(getCellIndices(cells0, '.range-end'), 'to equal', []);
- input1.focus();
- expect(input1.value, 'to be', '02/28/2021');
- expect(viewSwitch1.textContent, 'to be', '2021');
- expect(getCellIndices(cells1, '.selected'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range-start'), 'to equal', []);
- expect(getCellIndices(cells1, '.range-end'), 'to equal', [1]);
- drp.destroy();
- });
- it('changes the span of range selection to Jan 1st of a month → Dec 31st of a month when 2', function () {
- input0.value = '2/14/2020';
- input1.value = '2/14/2020';
- const {drp, picker0, picker1} = createDRP(elem, {pickLevel: 2});
- const viewSwitch0 = picker0.querySelector('.view-switch');
- const viewSwitch1 = picker1.querySelector('.view-switch');
- let cells0 = getCells(picker0);
- let cells1 = getCells(picker1);
- input0.focus();
- expect(drp.dates, 'to equal', [dateValue(2020, 0, 1), dateValue(2020, 11, 31)]);
- expect(input0.value, 'to be', '01/01/2020');
- expect(viewSwitch0.textContent, 'to be', '2020-2029');
- expect(getCellIndices(cells0, '.selected'), 'to equal', [1]);
- expect(getCellIndices(cells0, '.range-start'), 'to equal', [1]);
- expect(getCellIndices(cells0, '.range-end'), 'to equal', [1]);
- expect(getCellIndices(cells0, '.range'), 'to equal', []);
- expect(getCellIndices(cells0, '.focused'), 'to equal', [1]);
- input1.focus();
- expect(input1.value, 'to be', '12/31/2020');
- expect(viewSwitch1.textContent, 'to be', '2020-2029');
- expect(getCellIndices(cells1, '.selected'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range-start'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range-end'), 'to equal', [1]);
- expect(getCellIndices(cells1, '.range'), 'to equal', []);
- expect(getCellIndices(cells1, '.focused'), 'to equal', [1]);
- // mouse operation
- cells0[0].click();
- cells1[3].click();
- expect(drp.dates, 'to equal', [dateValue(2019, 0, 1), dateValue(2022, 11, 31)]);
- expect(input0.value, 'to be', '01/01/2019');
- expect(viewSwitch0.textContent, 'to be', '2010-2019');
- expect(getCellIndices(cells0, '.selected'), 'to equal', [10]);
- expect(getCellIndices(cells0, '.range-start'), 'to equal', [10]);
- expect(getCellIndices(cells0, '.range-end'), 'to equal', []);
- input1.focus();
- expect(input1.value, 'to be', '12/31/2022');
- expect(viewSwitch1.textContent, 'to be', '2020-2029');
- expect(getCellIndices(cells1, '.selected'), 'to equal', [3]);
- expect(getCellIndices(cells1, '.range-start'), 'to equal', [0]);
- expect(getCellIndices(cells1, '.range-end'), 'to equal', [3]);
- // api call
- drp.setDates('2/14/2025', '3/14/2021');
- expect(drp.dates, 'to equal', [dateValue(2021, 0, 1), dateValue(2025, 11, 31)]);
- expect(input0.value, 'to be', '01/01/2021');
- expect(viewSwitch0.textContent, 'to be', '2020-2029');
- expect(getCellIndices(cells0, '.selected'), 'to equal', [2]);
- expect(getCellIndices(cells0, '.range-start'), 'to equal', [2]);
- expect(getCellIndices(cells0, '.range-end'), 'to equal', [6]);
- input1.focus();
- expect(input1.value, 'to be', '12/31/2025');
- expect(viewSwitch1.textContent, 'to be', '2020-2029');
- expect(getCellIndices(cells1, '.selected'), 'to equal', [6]);
- expect(getCellIndices(cells1, '.range-start'), 'to equal', [2]);
- expect(getCellIndices(cells1, '.range-end'), 'to equal', [6]);
- drp.destroy();
- });
- });
- });
|