mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-11 08:04:09 -08:00
1479 lines
52 KiB
JavaScript
1479 lines
52 KiB
JavaScript
|
module('Options', {
|
||
|
setup: function(){},
|
||
|
teardown: function(){
|
||
|
$('#qunit-fixture *').each(function(){
|
||
|
var t = $(this);
|
||
|
if ('datepicker' in t.data())
|
||
|
t.datepicker('remove');
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
test('Autoclose', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
autoclose: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.is(':visible'), 'Picker is visible');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
equal(target.text(), '4'); // Mar 4
|
||
|
|
||
|
target.click();
|
||
|
ok(picker.is(':not(:visible)'), 'Picker is hidden');
|
||
|
datesEqual(dp.dates[0], UTCDate(2012, 2, 4));
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
});
|
||
|
|
||
|
test('Custom date formatter functions', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2015-09-18T00:00:00.000Z')
|
||
|
.datepicker({
|
||
|
format: {
|
||
|
/*
|
||
|
Say our UI should display a week ahead,
|
||
|
but textbox should store the actual date.
|
||
|
This is useful if we need UI to select local dates,
|
||
|
but store in UTC
|
||
|
*/
|
||
|
toDisplay: function (date, format, language) {
|
||
|
var d = new Date(date);
|
||
|
d.setDate(d.getDate() - 7);
|
||
|
return d.toISOString();
|
||
|
},
|
||
|
toValue: function (date, format, language) {
|
||
|
var d = new Date(date);
|
||
|
d.setDate(d.getDate() + 7);
|
||
|
return new Date(d);
|
||
|
}
|
||
|
},
|
||
|
autoclose: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
//Value is ISO format and is 7 days older than UI
|
||
|
equal(input.val(), '2015-09-18T00:00:00.000Z');
|
||
|
datesEqual(dp.dates[0], UTCDate(2015, 8, 25));
|
||
|
datesEqual(dp.viewDate, UTCDate(2015, 8, 25));
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.is(':visible'), 'Picker is visible');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(5)');
|
||
|
equal(target.text(), '4'); // Sep 4
|
||
|
|
||
|
target.click();
|
||
|
ok(picker.is(':not(:visible)'), 'Picker is hidden');
|
||
|
//Value is now 28th Aug 2015 in ISO format
|
||
|
//and is 7 days older than UI
|
||
|
equal(input.val(), '2015-08-28T00:00:00.000Z');
|
||
|
datesEqual(dp.dates[0], UTCDate(2015, 8, 4));
|
||
|
datesEqual(dp.viewDate, UTCDate(2015, 8, 4));
|
||
|
});
|
||
|
|
||
|
test('Startview: year view (integer)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 1
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');
|
||
|
ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||
|
ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');
|
||
|
ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');
|
||
|
});
|
||
|
|
||
|
test('Startview: year view (string)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 'year'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');
|
||
|
ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||
|
ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');
|
||
|
ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');
|
||
|
});
|
||
|
|
||
|
test('Startview: decade view (integer)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 2
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');
|
||
|
ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');
|
||
|
ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');
|
||
|
});
|
||
|
|
||
|
test('Startview: decade view (string)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 'decade'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');
|
||
|
ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');
|
||
|
ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');
|
||
|
});
|
||
|
|
||
|
test('Startview: century view (integer)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 3
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||
|
ok(picker.find('.datepicker-decades').is(':visible'), 'Decades view visible');
|
||
|
ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');
|
||
|
});
|
||
|
|
||
|
test('Startview: century view (string)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 'century'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||
|
ok(picker.find('.datepicker-decades').is(':visible'), 'Decades view visible');
|
||
|
ok(picker.find('.datepicker-centuries').is(':not(:visible)'), 'Centuries view hidden');
|
||
|
});
|
||
|
|
||
|
test('Startview: millennium view (integer)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 4
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||
|
ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');
|
||
|
ok(picker.find('.datepicker-centuries').is(':visible'), 'Centuries view visible');
|
||
|
});
|
||
|
|
||
|
test('Startview: millennium view (string)', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startView: 'millennium'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':not(:visible)'), 'Years view hidden');
|
||
|
ok(picker.find('.datepicker-decades').is(':not(:visible)'), 'Decades view hidden');
|
||
|
ok(picker.find('.datepicker-centuries').is(':visible'), 'Centuries view visible');
|
||
|
});
|
||
|
|
||
|
test('Today Button: today button not default', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .today').is(':not(:visible)'), 'Today button not visible');
|
||
|
});
|
||
|
|
||
|
test('Today Button: today visibility when enabled', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
todayBtn: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||
|
|
||
|
picker.find('.datepicker-days thead th.datepicker-switch').click();
|
||
|
ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');
|
||
|
ok(picker.find('.datepicker-months tfoot .today').is(':visible'), 'Today button visible');
|
||
|
|
||
|
picker.find('.datepicker-months thead th.datepicker-switch').click();
|
||
|
ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');
|
||
|
ok(picker.find('.datepicker-years tfoot .today').is(':visible'), 'Today button visible');
|
||
|
});
|
||
|
|
||
|
test('Today Button: data-api', function(){
|
||
|
var input = $('<input data-date-today-btn="true" />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||
|
});
|
||
|
|
||
|
test('Today Button: moves to today\'s date', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
todayBtn: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||
|
|
||
|
target = picker.find('.datepicker-days tfoot .today');
|
||
|
target.click();
|
||
|
|
||
|
var d = new Date(),
|
||
|
today = UTCDate(d.getFullYear(), d.getMonth(), d.getDate());
|
||
|
datesEqual(dp.viewDate, today);
|
||
|
datesEqual(dp.dates[0], UTCDate(2012, 2, 5));
|
||
|
});
|
||
|
|
||
|
test('Today Button: "linked" selects today\'s date', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
todayBtn: "linked"
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .today').is(':visible'), 'Today button visible');
|
||
|
|
||
|
target = picker.find('.datepicker-days tfoot .today');
|
||
|
target.click();
|
||
|
|
||
|
var d = new Date(),
|
||
|
today = UTCDate(d.getFullYear(), d.getMonth(), d.getDate());
|
||
|
datesEqual(dp.viewDate, today);
|
||
|
datesEqual(dp.dates[0], today);
|
||
|
});
|
||
|
|
||
|
test('Today Highlight: today\'s date is not highlighted by default', patch_date(function(Date){
|
||
|
Date.now = UTCDate(2012, 2, 15);
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'March 2012', 'Title is "March 2012"');
|
||
|
|
||
|
target = picker.find('.datepicker-days tbody td:contains(15)');
|
||
|
ok(!target.hasClass('today'), 'Today is not marked with "today" class');
|
||
|
target = picker.find('.datepicker-days tbody td:contains(14)');
|
||
|
ok(!target.hasClass('today'), 'Yesterday is not marked with "today" class');
|
||
|
target = picker.find('.datepicker-days tbody td:contains(16)');
|
||
|
ok(!target.hasClass('today'), 'Tomorrow is not marked with "today" class');
|
||
|
}));
|
||
|
|
||
|
test('Today Highlight: today\'s date is highlighted when not active', patch_date(function(Date){
|
||
|
Date.now = new Date(2012, 2, 15);
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
todayHighlight: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'March 2012', 'Title is "March 2012"');
|
||
|
|
||
|
target = picker.find('.datepicker-days tbody td:contains(15)');
|
||
|
ok(target.hasClass('today'), 'Today is marked with "today" class');
|
||
|
target = picker.find('.datepicker-days tbody td:contains(14)');
|
||
|
ok(!target.hasClass('today'), 'Yesterday is not marked with "today" class');
|
||
|
target = picker.find('.datepicker-days tbody td:contains(16)');
|
||
|
ok(!target.hasClass('today'), 'Tomorrow is not marked with "today" class');
|
||
|
}));
|
||
|
|
||
|
test('Clear Button: clear visibility when enabled', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
clearBtn: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Clear button visible');
|
||
|
|
||
|
picker.find('.datepicker-days thead th.datepicker-switch').click();
|
||
|
ok(picker.find('.datepicker-months').is(':visible'), 'Months view visible');
|
||
|
ok(picker.find('.datepicker-months tfoot .clear').is(':visible'), 'Clear button visible');
|
||
|
|
||
|
picker.find('.datepicker-months thead th.datepicker-switch').click();
|
||
|
ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');
|
||
|
ok(picker.find('.datepicker-years tfoot .clear').is(':visible'), 'Clear button visible');
|
||
|
});
|
||
|
|
||
|
test('Clear Button: clears input value', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
clearBtn: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Today button visible');
|
||
|
|
||
|
target = picker.find('.datepicker-days tfoot .clear');
|
||
|
target.click();
|
||
|
|
||
|
equal(input.val(),'',"Input value has been cleared.")
|
||
|
ok(picker.is(':visible'), 'Picker is visible');
|
||
|
});
|
||
|
|
||
|
test('Clear Button: hides datepicker if autoclose is on', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
clearBtn: true,
|
||
|
autoclose: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':visible'), 'Days view visible');
|
||
|
ok(picker.find('.datepicker-days tfoot .clear').is(':visible'), 'Today button visible');
|
||
|
|
||
|
target = picker.find('.datepicker-days tfoot .clear');
|
||
|
target.click();
|
||
|
|
||
|
equal(input.val(),'',"Input value has been cleared.");
|
||
|
ok(picker.is(':not(:visible)'), 'Picker is hidden');
|
||
|
|
||
|
});
|
||
|
|
||
|
test('Active Toggle Default: when active date is selected it is not unset', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
// open our datepicker
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 selected');
|
||
|
|
||
|
// click on our active date
|
||
|
target = picker.find('.datepicker-days .day.active');
|
||
|
target.click();
|
||
|
|
||
|
// make sure it's still set
|
||
|
equal(input.val(), '2012-03-05', "Input value has not been cleared.");
|
||
|
});
|
||
|
|
||
|
test('Active Toggle Enabled (single date): when active date is selected it is unset', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
toggleActive: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
// open our datepicker
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 selected');
|
||
|
|
||
|
// click on our active date
|
||
|
target = picker.find('.datepicker-days .day.active');
|
||
|
target.click();
|
||
|
|
||
|
// make sure it's no longer set
|
||
|
equal(input.val(), '', "Input value has been cleared.");
|
||
|
});
|
||
|
|
||
|
test('Active Toggle Multidate Default: when one of the active dates is selected it is unset', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
multidate: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
// open our datepicker
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 in dates');
|
||
|
|
||
|
// Select additional date
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05,2012-03-04');
|
||
|
|
||
|
// Unselect additional date
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
target.click();
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05');
|
||
|
});
|
||
|
|
||
|
test('Active Toggle Disabled: when active date is selected it remains', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
toggleActive: false
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
// open our datepicker
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 selected');
|
||
|
|
||
|
// click on our active date
|
||
|
target = picker.find('.datepicker-days .day.active');
|
||
|
target.click();
|
||
|
|
||
|
// make sure it's still set
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 still selected');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 5));
|
||
|
equal(input.val(), '2012-03-05');
|
||
|
});
|
||
|
|
||
|
test('Active Toggle Multidate Disabled: when activeToggle is set to false, but multidate is set, the option is ignored and selecting an active date it is unset', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
multidate: true,
|
||
|
toggleActive: false
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
// open our datepicker
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 in dates');
|
||
|
|
||
|
// Select additional date
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05,2012-03-04');
|
||
|
|
||
|
// Unselect additional date
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
target.click();
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05');
|
||
|
});
|
||
|
|
||
|
test('DaysOfWeekDisabled', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
daysOfWeekDisabled: '1,5'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-days tbody td:nth(22)');
|
||
|
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(24)');
|
||
|
ok(!target.hasClass('disabled'), 'Day of week is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(26)');
|
||
|
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||
|
});
|
||
|
|
||
|
test('DaysOfWeekHighlighted', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startDate: '2012-10-02',
|
||
|
daysOfWeekHighlighted: '1,5'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-days tbody td:nth(0)');
|
||
|
ok(!target.hasClass('highlighted'), 'Day of week is not highlighted');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(22)');
|
||
|
ok(target.hasClass('highlighted'), 'Day of week is highlighted');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(24)');
|
||
|
ok(!target.hasClass('highlighted'), 'Day of week is not highlighted');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(26)');
|
||
|
ok(target.hasClass('highlighted'), 'Day of week is highlighted');
|
||
|
});
|
||
|
|
||
|
test('DatesDisabled', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
datesDisabled: ['2012-10-1', '2012-10-10', '2012-10-20']
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
target = picker.find('.datepicker-days tbody td:nth(1)');
|
||
|
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||
|
ok(target.hasClass('disabled-date'), 'Date is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(2)');
|
||
|
ok(!target.hasClass('disabled'), 'Day of week is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(10)');
|
||
|
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||
|
ok(target.hasClass('disabled-date'), 'Date is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(11)');
|
||
|
ok(!target.hasClass('disabled'), 'Day of week is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(20)');
|
||
|
ok(target.hasClass('disabled'), 'Day of week is disabled');
|
||
|
ok(target.hasClass('disabled-date'), 'Date is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(21)');
|
||
|
ok(!target.hasClass('disabled'), 'Day of week is enabled');
|
||
|
});
|
||
|
|
||
|
test('BeforeShowDay', function(){
|
||
|
|
||
|
var beforeShowDay = function(date) {
|
||
|
switch (date.getDate()){
|
||
|
case 25:
|
||
|
return {
|
||
|
tooltip: 'Example tooltip',
|
||
|
classes: 'active'
|
||
|
};
|
||
|
case 26:
|
||
|
return "test26";
|
||
|
case 27:
|
||
|
return {enabled: false, classes:'test27'};
|
||
|
case 28:
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
beforeShowDay: beforeShowDay
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-days tbody td:nth(25)');
|
||
|
equal(target.attr('title'), 'Example tooltip', '25th has tooltip');
|
||
|
ok(!target.hasClass('disabled'), '25th is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(26)');
|
||
|
ok(target.hasClass('test26'), '26th has test26 class');
|
||
|
ok(!target.hasClass('disabled'), '26th is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(27)');
|
||
|
ok(target.hasClass('test27'), '27th has test27 class');
|
||
|
ok(target.hasClass('disabled'), '27th is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(28)');
|
||
|
ok(target.hasClass('disabled'), '28th is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(29)');
|
||
|
ok(!target.hasClass('disabled'), '29th is enabled');
|
||
|
});
|
||
|
|
||
|
|
||
|
test('BeforeShowMonth', function () {
|
||
|
|
||
|
var beforeShowMonth = function (date) {
|
||
|
switch (date.getMonth()) {
|
||
|
case 0:
|
||
|
return {
|
||
|
tooltip: 'Example tooltip',
|
||
|
classes: 'active'
|
||
|
};
|
||
|
case 2:
|
||
|
return "testMarch";
|
||
|
case 4:
|
||
|
return {enabled: false, classes: 'testMay'};
|
||
|
case 5:
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
beforeShowMonth: beforeShowMonth
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-months tbody span:nth(0)');
|
||
|
equal(target.attr('title'), 'Example tooltip', '1st has tooltip');
|
||
|
ok(!target.hasClass('disabled'), 'January is enabled');
|
||
|
target = picker.find('.datepicker-months tbody span:nth(2)');
|
||
|
ok(target.hasClass('testMarch'), 'March has testMarch class');
|
||
|
ok(!target.hasClass('disabled'), 'March enabled');
|
||
|
target = picker.find('.datepicker-months tbody span:nth(4)');
|
||
|
ok(target.hasClass('testMay'), 'May has testMay class');
|
||
|
ok(target.hasClass('disabled'), 'May is disabled');
|
||
|
target = picker.find('.datepicker-months tbody span:nth(5)');
|
||
|
ok(target.hasClass('disabled'), 'June is disabled');
|
||
|
target = picker.find('.datepicker-months tbody span:nth(6)');
|
||
|
ok(!target.hasClass('disabled'), 'July is enabled');
|
||
|
});
|
||
|
|
||
|
|
||
|
test('BeforeShowYear', function () {
|
||
|
|
||
|
var beforeShowYear = function (date) {
|
||
|
switch (date.getFullYear()) {
|
||
|
case 2013:
|
||
|
return {
|
||
|
tooltip: 'Example tooltip',
|
||
|
classes: 'active'
|
||
|
};
|
||
|
case 2014:
|
||
|
return "test2014";
|
||
|
case 2015:
|
||
|
return {enabled: false, classes: 'test2015'};
|
||
|
case 2016:
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
beforeShowYear: beforeShowYear
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-years tbody span:nth(4)');
|
||
|
equal(target.attr('title'), 'Example tooltip', '5th has tooltip');
|
||
|
ok(!target.hasClass('disabled'), '2013, 5th is enabled');
|
||
|
target = picker.find('.datepicker-years tbody span:nth(5)');
|
||
|
ok(target.hasClass('test2014'), '6th has test2014 class');
|
||
|
ok(!target.hasClass('disabled'), '2014, 6th is enabled');
|
||
|
target = picker.find('.datepicker-years tbody span:nth(6)');
|
||
|
ok(target.hasClass('test2015'), '2015, 7th has test2015 class');
|
||
|
ok(target.hasClass('disabled'), '2015, 7th is disabled');
|
||
|
target = picker.find('.datepicker-years tbody span:nth(7)');
|
||
|
ok(target.hasClass('disabled'), '2016, 8th is disabled');
|
||
|
target = picker.find('.datepicker-years tbody span:nth(8)');
|
||
|
ok(!target.hasClass('disabled'), '2017, 9th is enabled');
|
||
|
});
|
||
|
|
||
|
test('beforeShowDecade', function () {
|
||
|
var beforeShowDecade = function (date) {
|
||
|
switch (date.getFullYear()) {
|
||
|
case 2030:
|
||
|
return {
|
||
|
tooltip: 'Example tooltip',
|
||
|
classes: 'active'
|
||
|
};
|
||
|
case 2040:
|
||
|
return "test2040";
|
||
|
case 2050:
|
||
|
return {enabled: false, classes: 'test2050'};
|
||
|
case 2060:
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('03/05/2012')
|
||
|
.datepicker({ beforeShowDecade: beforeShowDecade }),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-decades tbody span:nth(4)');
|
||
|
equal(target.attr('title'), 'Example tooltip', '5th has tooltip');
|
||
|
ok(!target.hasClass('disabled'), '2030, 5th is enabled');
|
||
|
|
||
|
target = picker.find('.datepicker-decades tbody span:nth(5)');
|
||
|
ok(target.hasClass('test2040'), '6th has test2040 class');
|
||
|
ok(!target.hasClass('disabled'), '2040, 6th is enabled');
|
||
|
|
||
|
target = picker.find('.datepicker-decades tbody span:nth(6)');
|
||
|
ok(target.hasClass('test2050'), '2050, 7th has test2050 class');
|
||
|
ok(target.hasClass('disabled'), '2050, 7th is disabled');
|
||
|
|
||
|
target = picker.find('.datepicker-decades tbody span:nth(7)');
|
||
|
ok(target.hasClass('disabled'), '2060, 8th is disabled');
|
||
|
|
||
|
target = picker.find('.datepicker-decades tbody span:nth(8)');
|
||
|
ok(!target.hasClass('disabled'), '2070, 9th is enabled');
|
||
|
});
|
||
|
|
||
|
test('beforeShowCentury', function () {
|
||
|
var beforeShowCentury = function (date) {
|
||
|
switch (date.getFullYear()) {
|
||
|
case 2300:
|
||
|
return {
|
||
|
tooltip: 'Example tooltip',
|
||
|
classes: 'active'
|
||
|
};
|
||
|
case 2400:
|
||
|
return "test2400";
|
||
|
case 2500:
|
||
|
return {enabled: false, classes: 'test2500'};
|
||
|
case 2600:
|
||
|
return false;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('03/05/2012')
|
||
|
.datepicker({ beforeShowCentury: beforeShowCentury }),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-centuries tbody span:nth(4)');
|
||
|
equal(target.attr('title'), 'Example tooltip', '5th has tooltip');
|
||
|
ok(!target.hasClass('disabled'), '2300, 5th is enabled');
|
||
|
|
||
|
target = picker.find('.datepicker-centuries tbody span:nth(5)');
|
||
|
ok(target.hasClass('test2400'), '6th has test2400 class');
|
||
|
ok(!target.hasClass('disabled'), '2400, 6th is enabled');
|
||
|
|
||
|
target = picker.find('.datepicker-centuries tbody span:nth(6)');
|
||
|
ok(target.hasClass('test2500'), '2500, 7th has test2500 class');
|
||
|
ok(target.hasClass('disabled'), '2500, 7th is disabled');
|
||
|
|
||
|
target = picker.find('.datepicker-centuries tbody span:nth(7)');
|
||
|
ok(target.hasClass('disabled'), '2600, 8th is disabled');
|
||
|
|
||
|
target = picker.find('.datepicker-centuries tbody span:nth(8)');
|
||
|
ok(!target.hasClass('disabled'), '2700, 9th is enabled');
|
||
|
});
|
||
|
|
||
|
test('Orientation: values are parsed correctly', function(){
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd'
|
||
|
}),
|
||
|
dp = input.data('datepicker');
|
||
|
|
||
|
equal(dp.o.orientation.x, 'auto');
|
||
|
equal(dp.o.orientation.y, 'auto');
|
||
|
|
||
|
dp._process_options({orientation: ''});
|
||
|
equal(dp.o.orientation.x, 'auto', 'Empty value');
|
||
|
equal(dp.o.orientation.y, 'auto', 'Empty value');
|
||
|
|
||
|
dp._process_options({orientation: 'left'});
|
||
|
equal(dp.o.orientation.x, 'left', '"left"');
|
||
|
equal(dp.o.orientation.y, 'auto', '"left"');
|
||
|
|
||
|
dp._process_options({orientation: 'right'});
|
||
|
equal(dp.o.orientation.x, 'right', '"right"');
|
||
|
equal(dp.o.orientation.y, 'auto', '"right"');
|
||
|
|
||
|
dp._process_options({orientation: 'top'});
|
||
|
equal(dp.o.orientation.x, 'auto', '"top"');
|
||
|
equal(dp.o.orientation.y, 'top', '"top"');
|
||
|
|
||
|
dp._process_options({orientation: 'bottom'});
|
||
|
equal(dp.o.orientation.x, 'auto', '"bottom"');
|
||
|
equal(dp.o.orientation.y, 'bottom', '"bottom"');
|
||
|
|
||
|
dp._process_options({orientation: 'left top'});
|
||
|
equal(dp.o.orientation.x, 'left', '"left top"');
|
||
|
equal(dp.o.orientation.y, 'top', '"left top"');
|
||
|
|
||
|
dp._process_options({orientation: 'left bottom'});
|
||
|
equal(dp.o.orientation.x, 'left', '"left bottom"');
|
||
|
equal(dp.o.orientation.y, 'bottom', '"left bottom"');
|
||
|
|
||
|
dp._process_options({orientation: 'right top'});
|
||
|
equal(dp.o.orientation.x, 'right', '"right top"');
|
||
|
equal(dp.o.orientation.y, 'top', '"right top"');
|
||
|
|
||
|
dp._process_options({orientation: 'right bottom'});
|
||
|
equal(dp.o.orientation.x, 'right', '"right bottom"');
|
||
|
equal(dp.o.orientation.y, 'bottom', '"right bottom"');
|
||
|
|
||
|
dp._process_options({orientation: 'left right'});
|
||
|
equal(dp.o.orientation.x, 'left', '"left right"');
|
||
|
equal(dp.o.orientation.y, 'auto', '"left right"');
|
||
|
|
||
|
dp._process_options({orientation: 'right left'});
|
||
|
equal(dp.o.orientation.x, 'right', '"right left"');
|
||
|
equal(dp.o.orientation.y, 'auto', '"right left"');
|
||
|
|
||
|
dp._process_options({orientation: 'top bottom'});
|
||
|
equal(dp.o.orientation.x, 'auto', '"top bottom"');
|
||
|
equal(dp.o.orientation.y, 'top', '"top bottom"');
|
||
|
|
||
|
dp._process_options({orientation: 'bottom top'});
|
||
|
equal(dp.o.orientation.x, 'auto', '"bottom top"');
|
||
|
equal(dp.o.orientation.y, 'bottom', '"bottom top"');
|
||
|
|
||
|
dp._process_options({orientation: 'foo bar'});
|
||
|
equal(dp.o.orientation.x, 'auto', '"foo bar"');
|
||
|
equal(dp.o.orientation.y, 'auto', '"foo bar"');
|
||
|
|
||
|
dp._process_options({orientation: 'foo left'});
|
||
|
equal(dp.o.orientation.x, 'left', '"foo left"');
|
||
|
equal(dp.o.orientation.y, 'auto', '"foo left"');
|
||
|
|
||
|
dp._process_options({orientation: 'top bar'});
|
||
|
equal(dp.o.orientation.x, 'auto', '"top bar"');
|
||
|
equal(dp.o.orientation.y, 'top', '"top bar"');
|
||
|
});
|
||
|
|
||
|
test('startDate', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
startDate: new Date(2012, 9, 26)
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-days tbody td:nth(25)');
|
||
|
ok(target.hasClass('disabled'), 'Previous day is disabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(26)');
|
||
|
ok(!target.hasClass('disabled'), 'Specified date is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(27)');
|
||
|
ok(!target.hasClass('disabled'), 'Next day is enabled');
|
||
|
});
|
||
|
|
||
|
test('endDate', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
endDate: new Date(2012, 9, 26)
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
target = picker.find('.datepicker-days tbody td:nth(25)');
|
||
|
ok(!target.hasClass('disabled'), 'Previous day is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(26)');
|
||
|
ok(!target.hasClass('disabled'), 'Specified date is enabled');
|
||
|
target = picker.find('.datepicker-days tbody td:nth(27)');
|
||
|
ok(target.hasClass('disabled'), 'Next day is disabled');
|
||
|
});
|
||
|
|
||
|
test('Multidate', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
multidate: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 (initial date) in dates');
|
||
|
|
||
|
// Select first
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
equal(target.text(), '4'); // Mar 4
|
||
|
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05,2012-03-04');
|
||
|
|
||
|
// Select second
|
||
|
target = picker.find('.datepicker-days tbody td:nth(15)');
|
||
|
equal(target.text(), '12'); // Mar 12
|
||
|
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 12), '2012-03-12 in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 12));
|
||
|
equal(input.val(), '2012-03-05,2012-03-04,2012-03-12');
|
||
|
|
||
|
// Deselect first
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
equal(target.text(), '4'); // Mar 4
|
||
|
|
||
|
target.click();
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05,2012-03-12');
|
||
|
});
|
||
|
|
||
|
test('Multidate with limit', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
multidate: 2
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
// Initial value is selected
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 5)) !== -1, '2012-03-05 (initial date) in dates');
|
||
|
|
||
|
// Select first
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
equal(target.text(), '4'); // Mar 4
|
||
|
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 4), '2012-03-04 in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 4));
|
||
|
equal(input.val(), '2012-03-05,2012-03-04');
|
||
|
|
||
|
// Select second
|
||
|
target = picker.find('.datepicker-days tbody td:nth(15)');
|
||
|
equal(target.text(), '12'); // Mar 12
|
||
|
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 12), '2012-03-12 in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 12));
|
||
|
equal(input.val(), '2012-03-04,2012-03-12');
|
||
|
|
||
|
// Select third
|
||
|
target = picker.find('.datepicker-days tbody td:nth(20)');
|
||
|
equal(target.text(), '17'); // Mar 17
|
||
|
|
||
|
target.click();
|
||
|
datesEqual(dp.dates.get(-1), UTCDate(2012, 2, 17), '2012-03-17 in dates');
|
||
|
ok(dp.dates.contains(UTCDate(2012, 2, 4)) === -1, '2012-03-04 no longer in dates');
|
||
|
datesEqual(dp.viewDate, UTCDate(2012, 2, 17));
|
||
|
equal(input.val(), '2012-03-12,2012-03-17');
|
||
|
});
|
||
|
|
||
|
test('Multidate Separator', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-03-05')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
multidate: true,
|
||
|
multidateSeparator: ' '
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
// Select first
|
||
|
target = picker.find('.datepicker-days tbody td:nth(7)');
|
||
|
equal(target.text(), '4'); // Mar 4
|
||
|
|
||
|
target.click();
|
||
|
equal(input.val(), '2012-03-05 2012-03-04');
|
||
|
|
||
|
// Select second
|
||
|
target = picker.find('.datepicker-days tbody td:nth(15)');
|
||
|
equal(target.text(), '12'); // Mar 12
|
||
|
|
||
|
target.click();
|
||
|
equal(input.val(), '2012-03-05 2012-03-04 2012-03-12');
|
||
|
});
|
||
|
|
||
|
|
||
|
test("Picker is shown on input focus when showOnFocus is not defined", function () {
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2014-01-01')
|
||
|
.datepicker({
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
ok(picker.is(":visible"), "Datepicker is visible");
|
||
|
|
||
|
});
|
||
|
|
||
|
test("Picker is shown on input focus when showOnFocus is true", function () {
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2014-01-01')
|
||
|
.datepicker({
|
||
|
showOnFocus: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
ok(picker.is(":visible"), "Datepicker is visible");
|
||
|
|
||
|
});
|
||
|
|
||
|
test("Picker is hidden on input focus when showOnFocus is false", function () {
|
||
|
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2014-01-01')
|
||
|
.datepicker({
|
||
|
showOnFocus: false
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
ok(picker.is(":hidden"), "Datepicker is hidden");
|
||
|
|
||
|
});
|
||
|
|
||
|
test('Container', function(){
|
||
|
var testContainer = $('<div class="date-picker-container"/>')
|
||
|
.appendTo('#qunit-fixture'),
|
||
|
input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2012-10-26')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
container: '.date-picker-container',
|
||
|
startDate: new Date(2012, 9, 26)
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
target = dp.picker;
|
||
|
input.focus();
|
||
|
equal(target.parent()[0], testContainer[0], 'Container is not the testContainer that was specificed');
|
||
|
});
|
||
|
|
||
|
test('Default View Date', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
defaultViewDate: { year: 1977, month: 04, day: 25 }
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'May 1977');
|
||
|
});
|
||
|
|
||
|
test('Immediate Updates', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2014-01-01')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
immediateUpdates: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
// Change month
|
||
|
input.focus();
|
||
|
picker.find('.datepicker-days .next').click();
|
||
|
equal(input.val(), '2014-02-01');
|
||
|
|
||
|
// Change year
|
||
|
picker.find('.datepicker-days .datepicker-switch').click();
|
||
|
picker.find('.datepicker-months .next').click();
|
||
|
equal(input.val(), '2015-02-01');
|
||
|
|
||
|
// Change year set (doesn't update input)
|
||
|
picker.find('.datepicker-months .datepicker-switch').click();
|
||
|
picker.find('.datepicker-years .next').click();
|
||
|
equal(input.val(), '2015-02-01');
|
||
|
});
|
||
|
|
||
|
test('forceParse: false on enter on invalid date', function () {
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('123456789')
|
||
|
.datepicker({forceParse: false})
|
||
|
.focus();
|
||
|
|
||
|
input.trigger({
|
||
|
type: 'keydown',
|
||
|
keyCode: 13,
|
||
|
shiftKey: false
|
||
|
});
|
||
|
|
||
|
equal(input.val(), '123456789', 'date not parsed');
|
||
|
});
|
||
|
|
||
|
test('forceParse: false on mousedown on invalid date', function () {
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('123456789')
|
||
|
.datepicker({forceParse: false})
|
||
|
.focus();
|
||
|
|
||
|
$(document).trigger({
|
||
|
type: 'mousedown'
|
||
|
});
|
||
|
|
||
|
equal(input.val(), '123456789', 'date not parsed');
|
||
|
});
|
||
|
|
||
|
//datepicker-dropdown
|
||
|
|
||
|
test('Enable on readonly options (default)', function(){
|
||
|
var input = $('<input readonly="readonly" />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({format: "dd-mm-yyyy"}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
ok(!picker.is(':visible'));
|
||
|
input.focus();
|
||
|
ok(picker.is(':visible'));
|
||
|
});
|
||
|
|
||
|
test('Enable on readonly options (false)', function(){
|
||
|
var input = $('<input readonly="readonly" />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
format: "dd-mm-yyyy",
|
||
|
enableOnReadonly: false
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
ok(!picker.is(':visible'));
|
||
|
input.focus();
|
||
|
ok(!picker.is(':visible'));
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
|
||
|
*/
|
||
|
|
||
|
test('Startview: year view visible after date pick', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
startView: 2,
|
||
|
minViewMode: 1,
|
||
|
autoclose: true
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');
|
||
|
|
||
|
target = picker.find('.datepicker-years tbody td:nth(7)');
|
||
|
target.click();
|
||
|
target = picker.find('.datepicker-years tbody td:nth(4)');
|
||
|
target.click();
|
||
|
target = picker.find('.datepicker-years tbody td:nth(20)');
|
||
|
target.click();
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.find('.datepicker-days').is(':not(:visible)'), 'Days view hidden');
|
||
|
ok(picker.find('.datepicker-months').is(':not(:visible)'), 'Months view hidden');
|
||
|
ok(picker.find('.datepicker-years').is(':visible'), 'Years view visible');
|
||
|
});
|
||
|
|
||
|
test('Title: none', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.is(':visible'), 'Picker is visible');
|
||
|
|
||
|
target = picker.find('.datepicker-days thead .datepicker-title');
|
||
|
ok(target.is(':not(:visible)'), 'Title is hidden');
|
||
|
});
|
||
|
|
||
|
test('Title: with value', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
title: 'Some Title'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker,
|
||
|
target;
|
||
|
|
||
|
input.focus();
|
||
|
ok(picker.is(':visible'), 'Picker is visible');
|
||
|
|
||
|
target = picker.find('.datepicker-days thead .datepicker-title');
|
||
|
ok(target.is(':visible'), 'Title is visible');
|
||
|
equal(target.text(), 'Some Title');
|
||
|
});
|
||
|
|
||
|
test('i18n: Leverage i18n titleFormat when available.', patch_date(function(Date){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('2015年04月21日')
|
||
|
.datepicker({
|
||
|
language: 'zh-CN'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
input.focus();
|
||
|
equal(picker.find('.datepicker-days thead .datepicker-switch').text(), '2015年04月', 'Title is in Chinese: 2015年04月');
|
||
|
}));
|
||
|
|
||
|
test('i18n: Leverage English (default) i18n titleFormat when translation key for specified language is not available.', patch_date(function(Date){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.val('04/21/2015')
|
||
|
.datepicker({
|
||
|
language: 'aa-BB'
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
input.focus();
|
||
|
equal(picker.find('.datepicker-days thead .datepicker-switch').text(), 'April 2015', 'Title is in default format: April 2015');
|
||
|
}));
|
||
|
|
||
|
test('Z-index Offset: none', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker(),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
input.parent().css('z-index', 234);
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
equal(dp.o.zIndexOffset, 10, 'Z-index offset option defaults to 10.');
|
||
|
equal(picker.css('z-index'), 244, 'Picker Z-index offset is respected.');
|
||
|
});
|
||
|
|
||
|
test('Z-index Offset: with value', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
zIndexOffset: 1000
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
input.parent().css('z-index', 234);
|
||
|
|
||
|
input.focus();
|
||
|
|
||
|
equal(dp.o.zIndexOffset, 1000, 'Z-index offset option is accepted.');
|
||
|
equal(picker.css('z-index'), 1234, 'Picker Z-index offset is respected.');
|
||
|
});
|
||
|
|
||
|
test('templates', function(){
|
||
|
var input = $('<input />')
|
||
|
.appendTo('#qunit-fixture')
|
||
|
.datepicker({
|
||
|
templates: {
|
||
|
leftArrow: '<span class="glyphicon glyphicon-arrow-left"></span>',
|
||
|
rightArrow: '</table>'
|
||
|
}
|
||
|
}),
|
||
|
dp = input.data('datepicker'),
|
||
|
picker = dp.picker;
|
||
|
|
||
|
input.focus();
|
||
|
equal(picker.find('.datepicker-days .prev').prop('innerHTML'), '<span class="glyphicon glyphicon-arrow-left"></span>');
|
||
|
equal(picker.find('.datepicker-days .next').prop('innerHTML'), $('<div>').html('»').text());
|
||
|
});
|