mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
149 lines
6.0 KiB
JavaScript
149 lines
6.0 KiB
JavaScript
/*
|
||
* datepicker_events.js
|
||
*/
|
||
(function($) {
|
||
|
||
module("datepicker: events");
|
||
|
||
var selectedThis = null,
|
||
selectedDate = null,
|
||
selectedInst = null;
|
||
|
||
function callback(date, inst) {
|
||
selectedThis = this;
|
||
selectedDate = date;
|
||
selectedInst = inst;
|
||
}
|
||
|
||
function callback2(year, month, inst) {
|
||
selectedThis = this;
|
||
selectedDate = year + '/' + month;
|
||
selectedInst = inst;
|
||
}
|
||
|
||
test('events', function() {
|
||
expect( 26 );
|
||
var dateStr, newMonthYear, inp2,
|
||
inp = TestHelpers.datepicker.init('#inp', {onSelect: callback}),
|
||
date = new Date();
|
||
// onSelect
|
||
inp.val('').datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
|
||
equal(selectedThis, inp[0], 'Callback selected this');
|
||
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), 'Callback selected inst');
|
||
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
|
||
'Callback selected date');
|
||
inp.val('').datepicker('show').
|
||
simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.DOWN}).
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
|
||
date.setDate(date.getDate() + 7);
|
||
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
|
||
'Callback selected date - ctrl+down');
|
||
inp.val('').datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE});
|
||
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', date),
|
||
'Callback selected date - esc');
|
||
dateStr = '02/04/2008';
|
||
inp.val(dateStr).datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
|
||
equal(dateStr, selectedDate,
|
||
'onSelect is called after enter keydown');
|
||
// onChangeMonthYear
|
||
inp.datepicker('option', {onChangeMonthYear: callback2, onSelect: null}).
|
||
val('').datepicker('show');
|
||
newMonthYear = function(date) {
|
||
return date.getFullYear() + '/' + (date.getMonth() + 1);
|
||
};
|
||
date = new Date();
|
||
date.setDate(1);
|
||
inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP});
|
||
date.setMonth(date.getMonth() - 1);
|
||
equal(selectedThis, inp[0], 'Callback change month/year this');
|
||
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), 'Callback change month/year inst');
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year date - pgup');
|
||
inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN});
|
||
date.setMonth(date.getMonth() + 1);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year date - pgdn');
|
||
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
|
||
date.setFullYear(date.getFullYear() - 1);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year date - ctrl+pgup');
|
||
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.HOME});
|
||
date.setFullYear(date.getFullYear() + 1);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year date - ctrl+home');
|
||
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
|
||
date.setFullYear(date.getFullYear() + 1);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year date - ctrl+pgdn');
|
||
inp.datepicker('setDate', new Date(2007, 1 - 1, 26));
|
||
equal(selectedDate, '2007/1', 'Callback change month/year date - setDate');
|
||
selectedDate = null;
|
||
inp.datepicker('setDate', new Date(2007, 1 - 1, 12));
|
||
ok(selectedDate == null, 'Callback change month/year date - setDate no change');
|
||
// onChangeMonthYear step by 2
|
||
inp.datepicker('option', {stepMonths: 2}).
|
||
datepicker('hide').val('').datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.PAGE_UP});
|
||
date.setMonth(date.getMonth() - 14);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year by 2 date - pgup');
|
||
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_UP});
|
||
date.setMonth(date.getMonth() - 12);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year by 2 date - ctrl+pgup');
|
||
inp.simulate('keydown', {keyCode: $.ui.keyCode.PAGE_DOWN});
|
||
date.setMonth(date.getMonth() + 2);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year by 2 date - pgdn');
|
||
inp.simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.PAGE_DOWN});
|
||
date.setMonth(date.getMonth() + 12);
|
||
equal(selectedDate, newMonthYear(date),
|
||
'Callback change month/year by 2 date - ctrl+pgdn');
|
||
// onClose
|
||
inp.datepicker('option', {onClose: callback, onChangeMonthYear: null, stepMonths: 1}).
|
||
val('').datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE});
|
||
equal(selectedThis, inp[0], 'Callback close this');
|
||
equal(selectedInst, $.data(inp[0], TestHelpers.datepicker.PROP_NAME), 'Callback close inst');
|
||
equal(selectedDate, '', 'Callback close date - esc');
|
||
inp.val('').datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ENTER});
|
||
equal(selectedDate, $.datepicker.formatDate('mm/dd/yy', new Date()),
|
||
'Callback close date - enter');
|
||
inp.val('02/04/2008').datepicker('show').
|
||
simulate('keydown', {keyCode: $.ui.keyCode.ESCAPE});
|
||
equal(selectedDate, '02/04/2008', 'Callback close date - preset');
|
||
inp.val('02/04/2008').datepicker('show').
|
||
simulate('keydown', {ctrlKey: true, keyCode: $.ui.keyCode.END});
|
||
equal(selectedDate, '', 'Callback close date - ctrl+end');
|
||
|
||
inp2 = TestHelpers.datepicker.init('#inp2');
|
||
inp2.datepicker().datepicker('option', {onClose: callback}).datepicker('show');
|
||
inp.datepicker('show');
|
||
equal(selectedThis, inp2[0], 'Callback close this');
|
||
});
|
||
|
||
test('beforeShowDay-getDate', function() {
|
||
expect( 3 );
|
||
var inp = TestHelpers.datepicker.init('#inp', {beforeShowDay: function() { inp.datepicker('getDate'); return [true, '']; }}),
|
||
dp = $('#ui-datepicker-div');
|
||
inp.val('01/01/2010').datepicker('show');
|
||
// contains non-breaking space
|
||
equal($('div.ui-datepicker-title').text(), 'January 2010', 'Initial month');
|
||
$('a.ui-datepicker-next', dp).click();
|
||
$('a.ui-datepicker-next', dp).click();
|
||
// contains non-breaking space
|
||
equal($('div.ui-datepicker-title').text(), 'March 2010', 'After next clicks');
|
||
inp.datepicker('hide').datepicker('show');
|
||
$('a.ui-datepicker-prev', dp).click();
|
||
$('a.ui-datepicker-prev', dp).click();
|
||
// contains non-breaking space
|
||
equal($('div.ui-datepicker-title').text(), 'November 2009', 'After prev clicks');
|
||
inp.datepicker('hide');
|
||
});
|
||
|
||
})(jQuery);
|