Update datepicker to latest version

From https://github.com/eternicode/bootstrap-datepicker/
pull/35/head
Francis Lachapelle 2014-04-11 21:37:55 -04:00
parent c345fc2b8d
commit 49363cfe36
6 changed files with 1776 additions and 853 deletions

1
NEWS
View File

@ -7,6 +7,7 @@ Enhancements
- SOGo version is now displayed in preferences window (#2612) - SOGo version is now displayed in preferences window (#2612)
- added the SOGoMaximumSyncWindowSize system default to overwrite the - added the SOGoMaximumSyncWindowSize system default to overwrite the
maximum number of items returned during an ActiveSync sync operation maximum number of items returned during an ActiveSync sync operation
- updated datepicker
Bug fixes Bug fixes
- fixed saved HTML content of draft when attaching a file - fixed saved HTML content of draft when attaching a file

View File

@ -293,8 +293,11 @@ function setEndDate(newEndDate) {
function onAdjustTime(event) { function onAdjustTime(event) {
var endDate = window.getEndDate(); var endDate = window.getEndDate();
var startDate = window.getStartDate(); var startDate = window.getStartDate();
var input = $(this);
if ($(this).readAttribute("id").startsWith("start")) { if (input.tagName != 'INPUT')
input = input.down('input');
if (input.id.startsWith("start")) {
// Start date was changed // Start date was changed
if (startDate == null) { if (startDate == null) {
var oldStartDate = window.getShadowStartDate(); var oldStartDate = window.getShadowStartDate();
@ -350,15 +353,15 @@ function initTimeWidgets(widgets) {
this.timeWidgets = widgets; this.timeWidgets = widgets;
if (widgets['start']['date']) { if (widgets['start']['date']) {
jQuery(widgets['start']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek}); jQuery(widgets['start']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek})
jQuery(widgets['start']['date']).change(onAdjustTime); .on('changeDate', onAdjustTime);
widgets['start']['time'].on("time:change", onAdjustTime); widgets['start']['time'].on("time:change", onAdjustTime);
widgets['start']['time'].addInterface(SOGoTimePickerInterface); widgets['start']['time'].addInterface(SOGoTimePickerInterface);
} }
if (widgets['end']['date']) { if (widgets['end']['date']) {
jQuery(widgets['end']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek}); jQuery(widgets['end']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek})
jQuery(widgets['end']['date']).change(onAdjustTime); .on('changeDate', onAdjustTime);
widgets['end']['time'].on("time:change", onAdjustTime); widgets['end']['time'].on("time:change", onAdjustTime);
widgets['end']['time'].addInterface(SOGoTimePickerInterface); widgets['end']['time'].addInterface(SOGoTimePickerInterface);
} }

View File

@ -1,25 +1,25 @@
/* -*- Mode: js2-mode; tab-width: 4; c-label-minimum-indentation: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* -*- Mode: js2-mode; tab-width: 4; c-label-minimum-indentation: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* /*
Copyright (C) 2005 SKYRIX Software AG Copyright (C) 2005 SKYRIX Software AG
Copyright (C) 2006-2011 Inverse Copyright (C) 2006-2011 Inverse
This file is part of OpenGroupware.org. This file is part of OpenGroupware.org.
OGo is free software; you can redistribute it and/or modify it under OGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any Free Software Foundation; either version 2, or (at your option) any
later version. later version.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY OGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details. License for more details.
You should have received a copy of the GNU Lesser General Public You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the License along with OGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. 02111-1307, USA.
*/ */
var dateRegex = /^(([0-9]{2})?[0-9])?[0-9]-[0-9]?[0-9]-[0-9]?[0-9]$/; var dateRegex = /^(([0-9]{2})?[0-9])?[0-9]-[0-9]?[0-9]-[0-9]?[0-9]$/;
@ -78,38 +78,35 @@ function copyContact(type, email, uid, sn, displayname,
}; };
function validateContactEditor() { function validateContactEditor() {
var rc = true; var rc = true;
var e = $('mail'); var e = $('mail');
if (e.value.length > 0 if (e.value.length > 0
&& !emailRE.test(e.value)) { && !emailRE.test(e.value)) {
alert(_("invalidemailwarn")); alert(_("invalidemailwarn"));
rc = false; rc = false;
} }
e = $('mozillasecondemail'); e = $('mozillasecondemail');
if (e.value.length > 0 if (e.value.length > 0
&& !emailRE.test(e.value)) { && !emailRE.test(e.value)) {
alert(_("invalidemailwarn")); alert(_("invalidemailwarn"));
rc = false; rc = false;
} }
return rc return rc
} }
this.initTimeWidgets = function (widgets) { function initTimeWidget(input) {
this.timeWidgets = widgets; var firstDay = new Date();
var firstDay = new Date(); firstDay.setFullYear(1900,0,1);
firstDay.setFullYear(1900,0,1); var lastDay = new Date();
var lastDay = new Date();
jQuery(input).closest('.date').datepicker({autoclose: true,
jQuery(widgets['birthday']['date']).closest('.date').datepicker({autoclose: true, endDate: lastDay,
weekStart: 0, startDate: firstDay,
endDate: lastDay, setStartDate: lastDay,
startDate: firstDay, startView: 2})
setStartDate: lastDay, }
startView: 2,
position: "below-shifted-left"});
};
function onDisplaynameKeyDown() { function onDisplaynameKeyDown() {
var fn = $("displayname"); var fn = $("displayname");
@ -269,43 +266,41 @@ function onEmptyCategoryClick(event) {
} }
function initEditorForm() { function initEditorForm() {
var tabsContainer = $("editorTabs"); var tabsContainer = $("editorTabs");
var controller = new SOGoTabsController(); var controller = new SOGoTabsController();
controller.attachToTabsContainer(tabsContainer); controller.attachToTabsContainer(tabsContainer);
displaynameChanged = ($("displayname").value.length > 0); displaynameChanged = ($("displayname").value.length > 0);
$("displayname").onkeydown = onDisplaynameKeyDown; $("displayname").onkeydown = onDisplaynameKeyDown;
$("sn").onkeyup = onDisplaynameNewValue; $("sn").onkeyup = onDisplaynameNewValue;
$("givenname").onkeyup = onDisplaynameNewValue; $("givenname").onkeyup = onDisplaynameNewValue;
$("cancelButton").observe("click", onEditorCancelClick); $("cancelButton").observe("click", onEditorCancelClick);
var submitButton = $("submitButton"); var submitButton = $("submitButton");
if (submitButton) { if (submitButton) {
submitButton.observe("click", onEditorSubmitClick); submitButton.observe("click", onEditorSubmitClick);
}
Event.observe(document, "keydown", onDocumentKeydown);
if (typeof(gCategories) != "undefined") {
regenerateCategoriesMenu();
}
var catsInput = $("jsonContactCategories");
if (catsInput && catsInput.value.length > 0) {
var contactCats = $(catsInput.value.evalJSON(false));
for (var i = 0; i < contactCats.length; i++) {
appendCategoryInput(contactCats[i]);
} }
}
var emptyCategory = $("emptyCategory"); Event.observe(document, "keydown", onDocumentKeydown);
if (emptyCategory) {
emptyCategory.tabIndex = 10000;
emptyCategory.observe("click", onEmptyCategoryClick);
}
var widgets = {'birthday': {'date': $("birthdayDate")}};
initTimeWidgets(widgets);
if (typeof(gCategories) != "undefined") {
regenerateCategoriesMenu();
}
var catsInput = $("jsonContactCategories");
if (catsInput && catsInput.value.length > 0) {
var contactCats = $(catsInput.value.evalJSON(false));
for (var i = 0; i < contactCats.length; i++) {
appendCategoryInput(contactCats[i]);
}
}
var emptyCategory = $("emptyCategory");
if (emptyCategory) {
emptyCategory.tabIndex = 10000;
emptyCategory.observe("click", onEmptyCategoryClick);
}
initTimeWidget($("birthdayDate"));
} }
document.observe("dom:loaded", initEditorForm); document.observe("dom:loaded", initEditorForm);

View File

@ -3,169 +3,101 @@
var contactSelectorAction = 'calendars-contacts'; var contactSelectorAction = 'calendars-contacts';
function uixEarlierDate(date1, date2) { function uixEarlierDate(date1, date2) {
// can this be done in a sane way? // can this be done in a sane way?
if (date1 && date2) { if (date1 && date2) {
if (date1.getYear() < date2.getYear()) return date1; if (date1.getYear() < date2.getYear()) return date1;
if (date1.getYear() > date2.getYear()) return date2; if (date1.getYear() > date2.getYear()) return date2;
// same year // same year
if (date1.getMonth() < date2.getMonth()) return date1; if (date1.getMonth() < date2.getMonth()) return date1;
if (date1.getMonth() > date2.getMonth()) return date2; if (date1.getMonth() > date2.getMonth()) return date2;
// same month // same month
if (date1.getDate() < date2.getDate()) return date1; if (date1.getDate() < date2.getDate()) return date1;
if (date1.getDate() > date2.getDate()) return date2; if (date1.getDate() > date2.getDate()) return date2;
} }
// same day // same day
return null; return null;
} }
function validateDate(which, label) { function validateDate(which, label) {
var result, dateValue; var result, dateValue;
dateValue = this._getDate(which); dateValue = this._getDate(which);
if (dateValue == null) { if (dateValue == null) {
alert(label); alert(label);
result = false; result = false;
} else } else
result = dateValue; result = dateValue;
return result; return result;
} }
function validateTaskEditor() { function validateTaskEditor() {
var e, startdate, enddate, tmpdate; var e, startdate, enddate, tmpdate;
e = document.getElementById('summary'); e = document.getElementById('summary');
if (e.value.length == 0 if (e.value.length == 0
&& !confirm(labels.validate_notitle)) && !confirm(labels.validate_notitle))
return false; return false;
e = document.getElementById('startTime_date'); e = document.getElementById('startTime_date');
if (!e.disabled) { if (!e.disabled) {
startdate = validateDate('start', labels.validate_invalid_startdate); startdate = validateDate('start', labels.validate_invalid_startdate);
if (!startdate) if (!startdate)
return false; return false;
}
e = document.getElementById('dueTime_date');
if (!e.disabled) {
enddate = validateDate('due', labels.validate_invalid_enddate);
if (!enddate)
return false;
}
if (startdate && enddate) {
tmpdate = uixEarlierDate(startdate, enddate);
if (tmpdate == enddate) {
// window.alert(cuicui);
alert(labels.validate_endbeforestart);
return false;
} }
else if (tmpdate == null /* means: same date */) {
// TODO: check time
var startHour, startMinute, endHour, endMinute; e = document.getElementById('dueTime_date');
var matches; if (!e.disabled) {
enddate = validateDate('due', labels.validate_invalid_enddate);
if (!enddate)
return false;
}
if (startdate && enddate) {
tmpdate = uixEarlierDate(startdate, enddate);
if (tmpdate == enddate) {
alert(labels.validate_endbeforestart);
return false;
}
else if (tmpdate == null /* means: same date */) {
// TODO: check time
var startHour, startMinute, endHour, endMinute;
var matches;
matches = document.forms[0]['startTime_time'].value.match(/([0-9]+):([0-9]+)/); matches = document.forms[0]['startTime_time'].value.match(/([0-9]+):([0-9]+)/);
if (matches) {
startHour = parseInt(matches[1]);
startMinute = parseInt(matches[2]);
matches = document.forms[0]['dueTime_time'].value.match(/([0-9]+):([0-9]+)/);
if (matches) { if (matches) {
endHour = parseInt(matches[1]); startHour = parseInt(matches[1]);
endMinute = parseInt(matches[2]); startMinute = parseInt(matches[2]);
matches = document.forms[0]['dueTime_time'].value.match(/([0-9]+):([0-9]+)/);
if (matches) {
endHour = parseInt(matches[1]);
endMinute = parseInt(matches[2]);
if (startHour > endHour) { if (startHour > endHour) {
alert(labels.validate_endbeforestart);
return false;
}
else if (startHour == endHour) {
if (startMinute > endMinute) {
alert(labels.validate_endbeforestart); alert(labels.validate_endbeforestart);
return false; return false;
} }
else if (startHour == endHour) {
if (startMinute > endMinute) {
alert(labels.validate_endbeforestart);
return false;
}
}
}
else {
alert(labels.validate_invalid_enddate);
return false;
} }
} }
else { else {
alert(labels.validate_invalid_enddate); alert(labels.validate_invalid_startdate);
return false; return false;
} }
} }
else {
alert(labels.validate_invalid_startdate);
return false;
}
}
}
return true;
}
function toggleDetails() {
var div = $("details");
var buttons = $("buttons");
var buttonsHeight = buttons.clientHeight * 3;
if (div.style.visibility) {
div.style.visibility = null;
window.resizeBy(0, -(div.clientHeight + buttonsHeight));
$("detailsButton").innerHTML = _("Show Details");
} else {
div.style.visibility = 'visible;';
window.resizeBy(0, (div.clientHeight + buttonsHeight));
$("detailsButton").innerHTML = _("Hide Details");
}
return false;
}
function toggleCycleVisibility(node, nodeName, hiddenValue) {
var spanNode = $(nodeName);
var newVisibility = ((node.value == hiddenValue) ? null : 'visible;');
spanNode.style.visibility = newVisibility;
if (nodeName == 'cycleSelectionFirstLevel') {
var otherSpanNode = $('cycleSelectionSecondLevel');
if (!newVisibility)
{
otherSpanNode.superVisibility = otherSpanNode.style.visibility;
otherSpanNode.style.visibility = null;
}
else
{
otherSpanNode.style.visibility = otherSpanNode.superVisibility;
otherSpanNode.superVisibility = null;
}
}
}
function addContact(tag, fullContactName, contactId, contactName, contactEmail) {
var uids = $('uixselector-participants-uidList');
log ("contactId: " + contactId);
if (contactId)
{
var re = new RegExp("(^|,)" + contactId + "($|,)");
log ("uids: " + uids);
if (!re.test(uids.value))
{
log ("no match... realling adding");
if (uids.value.length > 0)
uids.value += ',' + contactId;
else
uids.value = contactId;
var names = $('uixselector-participants-display');
names.innerHTML += ('<li onmousedown="return false;"'
+ ' onclick="onRowClick(event);"><img src="'
+ ResourcesURL + '/abcard.png" />'
+ contactName + '</li>');
}
else
log ("match... ignoring contact");
} }
return false; return true;
} }
function onTimeControlCheck(checkBox) { function onTimeControlCheck(checkBox) {
@ -184,140 +116,141 @@ function onTimeControlCheck(checkBox) {
} }
function saveEvent(sender) { function saveEvent(sender) {
if (validateTaskEditor()) if (validateTaskEditor())
document.forms['editform'].submit(); document.forms['editform'].submit();
return false; return false;
} }
function startDayAsShortString() { function startDayAsShortString() {
return dayAsShortDateString($('startTime_date')); return dayAsShortDateString($('startTime_date'));
} }
function dueDayAsShortString() { function dueDayAsShortString() {
return dayAsShortDateString($('dueTime_date')); return dayAsShortDateString($('dueTime_date'));
} }
this._getDate = function(which) { this._getDate = function(which) {
var date = window.timeWidgets[which]['date'].inputAsDate(); var date = window.timeWidgets[which]['date'].inputAsDate();
var time = window.timeWidgets[which]['time'].value.split(":"); var time = window.timeWidgets[which]['time'].value.split(":");
date.setHours(time[0]); date.setHours(time[0]);
date.setMinutes(time[1]); date.setMinutes(time[1]);
if (isNaN(date.getTime())) if (isNaN(date.getTime()))
return null; return null;
return date; return date;
}; };
this._getShadowDate = function(which) { this._getShadowDate = function(which) {
var date = window.timeWidgets[which]['date'].getAttribute("shadow-value").asDate(); var date = window.timeWidgets[which]['date'].getAttribute("shadow-value").asDate();
var time = window.timeWidgets[which]['time'].getAttribute("shadow-value").split(":"); var time = window.timeWidgets[which]['time'].getAttribute("shadow-value").split(":");
date.setHours(time[0]); date.setHours(time[0]);
date.setMinutes(time[1]); date.setMinutes(time[1]);
return date; return date;
}; };
this.getStartDate = function() { this.getStartDate = function() {
return this._getDate('start'); return this._getDate('start');
}; };
this.getDueDate = function() { this.getDueDate = function() {
return this._getDate('due'); return this._getDate('due');
}; };
this.getShadowStartDate = function() { this.getShadowStartDate = function() {
return this._getShadowDate('start'); return this._getShadowDate('start');
}; };
this.getShadowDueDate = function() { this.getShadowDueDate = function() {
return this._getShadowDate('due'); return this._getShadowDate('due');
}; };
this._setDate = function(which, newDate) { this._setDate = function(which, newDate) {
window.timeWidgets[which]['date'].setInputAsDate(newDate); window.timeWidgets[which]['date'].setInputAsDate(newDate);
window.timeWidgets[which]['time'].value = newDate.getDisplayHoursString(); window.timeWidgets[which]['time'].value = newDate.getDisplayHoursString();
// Update date picker // Update date picker
var dateComponent = jQuery(window.timeWidgets[which]['date']).closest('.date'); var dateComponent = jQuery(window.timeWidgets[which]['date']).closest('.date');
dateComponent.data('date', window.timeWidgets[which]['date'].value); dateComponent.data('date', window.timeWidgets[which]['date'].value);
dateComponent.datepicker('update'); dateComponent.datepicker('update');
}; };
this.setStartDate = function(newStartDate) { this.setStartDate = function(newStartDate) {
this._setDate('start', newStartDate); this._setDate('start', newStartDate);
}; };
this.setDueDate = function(newDueDate) { this.setDueDate = function(newDueDate) {
this._setDate('due', newDueDate); this._setDate('due', newDueDate);
}; };
this.onAdjustTime = function(event) { this.onAdjustTime = function(event) {
onAdjustDueTime(event); onAdjustDueTime(event);
}; };
this.onAdjustDueTime = function(event) { this.onAdjustDueTime = function(event) {
if (!window.timeWidgets['due']['date'].disabled) { if (!window.timeWidgets['due']['date'].disabled) {
var dateDelta = (window.getStartDate().valueOf() var dateDelta = (window.getStartDate().valueOf()
- window.getShadowStartDate().valueOf()); - window.getShadowStartDate().valueOf());
var newDueDate = new Date(window.getDueDate().valueOf() + dateDelta); var newDueDate = new Date(window.getDueDate().valueOf() + dateDelta);
window.setDueDate(newDueDate); window.setDueDate(newDueDate);
} }
window.timeWidgets['start']['date'].updateShadowValue(); window.timeWidgets['start']['date'].updateShadowValue();
window.timeWidgets['start']['time'].updateShadowValue(); window.timeWidgets['start']['time'].updateShadowValue();
}; };
this.initTimeWidgets = function (widgets) { this.initTimeWidgets = function (widgets) {
this.timeWidgets = widgets; this.timeWidgets = widgets;
jQuery(widgets['start']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek});
jQuery(widgets['due']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek});
jQuery('#statusTime_date').closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek});
jQuery(widgets['start']['date']).change(onAdjustTime); jQuery(widgets['start']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek})
widgets['start']['time'].on("time:change", onAdjustDueTime); .on('changeDate', onAdjustTime);
widgets['start']['time'].addInterface(SOGoTimePickerInterface); widgets['start']['time'].on("time:change", onAdjustDueTime);
widgets['due']['time'].addInterface(SOGoTimePickerInterface); widgets['start']['time'].addInterface(SOGoTimePickerInterface);
jQuery(widgets['due']['date']).closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek});
widgets['due']['time'].addInterface(SOGoTimePickerInterface);
jQuery('#statusTime_date').closest('.date').datepicker({autoclose: true, weekStart: firstDayOfWeek});
}; };
function onStatusListChange(event) { function onStatusListChange(event) {
var value = $("statusList").value; var value = $("statusList").value;
var statusTimeDate = $("statusTime_date"); var statusTimeDate = $("statusTime_date");
var statusPercent = $("statusPercent"); var statusPercent = $("statusPercent");
if (value == "WONoSelectionString") { if (value == "WONoSelectionString") {
statusTimeDate.disabled = true; statusTimeDate.disabled = true;
statusPercent.disabled = true; statusPercent.disabled = true;
statusPercent.value = ""; statusPercent.value = "";
} }
else if (value == "0") { else if (value == "0") {
statusTimeDate.disabled = true; statusTimeDate.disabled = true;
statusPercent.disabled = false; statusPercent.disabled = false;
} }
else if (value == "1") { else if (value == "1") {
statusTimeDate.disabled = true; statusTimeDate.disabled = true;
statusPercent.disabled = false; statusPercent.disabled = false;
} }
else if (value == "2") { else if (value == "2") {
statusTimeDate.disabled = false; statusTimeDate.disabled = false;
statusPercent.disabled = false; statusPercent.disabled = false;
statusPercent.value = "100"; statusPercent.value = "100";
} }
else if (value == "3") { else if (value == "3") {
statusTimeDate.disabled = true; statusTimeDate.disabled = true;
statusPercent.disabled = true; statusPercent.disabled = true;
} }
else { else {
statusTimeDate.disabled = true; statusTimeDate.disabled = true;
} }
} }
function initializeStatusLine() { function initializeStatusLine() {
var statusList = $("statusList"); var statusList = $("statusList");
if (statusList) { if (statusList) {
statusList.observe("change", onStatusListChange); statusList.observe("change", onStatusListChange);
} }
} }
function onTaskEditorLoad() { function onTaskEditorLoad() {

View File

@ -8,39 +8,75 @@
* *
*/ */
.datepicker { .datepicker {
top: 0;
left: 0;
padding: 4px; padding: 4px;
margin-top: 1px;
-webkit-border-radius: 4px; -webkit-border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
border-radius: 4px; border-radius: 4px;
direction: ltr;
/*.dow { /*.dow {
border-top: 1px solid #ddd !important; border-top: 1px solid #ddd !important;
}*/ }*/
} }
.datepicker:before { .datepicker-inline {
width: 220px;
}
.datepicker.datepicker-rtl {
direction: rtl;
}
.datepicker.datepicker-rtl table tr td span {
float: right;
}
.datepicker-dropdown {
top: 0;
left: 0;
}
.datepicker-dropdown:before {
content: ''; content: '';
display: inline-block; display: inline-block;
border-left: 7px solid transparent; border-left: 7px solid transparent;
border-right: 7px solid transparent; border-right: 7px solid transparent;
border-bottom: 7px solid #ccc; border-bottom: 7px solid #ccc;
border-top: 0;
border-bottom-color: rgba(0, 0, 0, 0.2); border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute; position: absolute;
top: -7px;
left: 6px;
} }
.datepicker:after { .datepicker-dropdown:after {
content: ''; content: '';
display: inline-block; display: inline-block;
border-left: 6px solid transparent; border-left: 6px solid transparent;
border-right: 6px solid transparent; border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff; border-bottom: 6px solid #ffffff;
border-top: 0;
position: absolute; position: absolute;
top: -6px; }
.datepicker-dropdown.datepicker-orient-left:before {
left: 6px;
}
.datepicker-dropdown.datepicker-orient-left:after {
left: 7px; left: 7px;
} }
.datepicker-dropdown.datepicker-orient-right:before {
right: 6px;
}
.datepicker-dropdown.datepicker-orient-right:after {
right: 7px;
}
.datepicker-dropdown.datepicker-orient-top:before {
top: -7px;
}
.datepicker-dropdown.datepicker-orient-top:after {
top: -6px;
}
.datepicker-dropdown.datepicker-orient-bottom:before {
bottom: -7px;
border-bottom: 0;
border-top: 7px solid #999;
}
.datepicker-dropdown.datepicker-orient-bottom:after {
bottom: -6px;
border-bottom: 0;
border-top: 6px solid #ffffff;
}
.datepicker > div { .datepicker > div {
display: none; display: none;
} }
@ -55,6 +91,12 @@
} }
.datepicker table { .datepicker table {
margin: 0; margin: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
} }
.datepicker td, .datepicker td,
.datepicker th { .datepicker th {
@ -64,25 +106,31 @@
-webkit-border-radius: 4px; -webkit-border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
border-radius: 4px; border-radius: 4px;
border: none;
} }
.datepicker td.day:hover { .table-striped .datepicker table tr td,
.table-striped .datepicker table tr th {
background-color: transparent;
}
.datepicker table tr td.day:hover,
.datepicker table tr td.day.focused {
background: #eeeeee; background: #eeeeee;
cursor: pointer; cursor: pointer;
} }
.datepicker td.old, .datepicker table tr td.old,
.datepicker td.new { .datepicker table tr td.new {
color: #999999; color: #999999;
} }
.datepicker td.disabled, .datepicker table tr td.disabled,
.datepicker td.disabled:hover { .datepicker table tr td.disabled:hover {
background: none; background: none;
color: #999999; color: #999999;
cursor: default; cursor: default;
} }
.datepicker td.today, .datepicker table tr td.today,
.datepicker td.today:hover, .datepicker table tr td.today:hover,
.datepicker td.today.disabled, .datepicker table tr td.today.disabled,
.datepicker td.today.disabled:hover { .datepicker table tr td.today.disabled:hover {
background-color: #fde19a; background-color: #fde19a;
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
@ -94,53 +142,112 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
border-color: #fdf59a #fdf59a #fbed50; border-color: #fdf59a #fdf59a #fbed50;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(enabled=false); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #000;
} }
.datepicker td.today:hover, .datepicker table tr td.today:hover,
.datepicker td.today:hover:hover, .datepicker table tr td.today:hover:hover,
.datepicker td.today.disabled:hover, .datepicker table tr td.today.disabled:hover,
.datepicker td.today.disabled:hover:hover, .datepicker table tr td.today.disabled:hover:hover,
.datepicker td.today:active, .datepicker table tr td.today:active,
.datepicker td.today:hover:active, .datepicker table tr td.today:hover:active,
.datepicker td.today.disabled:active, .datepicker table tr td.today.disabled:active,
.datepicker td.today.disabled:hover:active, .datepicker table tr td.today.disabled:hover:active,
.datepicker td.today.active, .datepicker table tr td.today.active,
.datepicker td.today:hover.active, .datepicker table tr td.today:hover.active,
.datepicker td.today.disabled.active, .datepicker table tr td.today.disabled.active,
.datepicker td.today.disabled:hover.active, .datepicker table tr td.today.disabled:hover.active,
.datepicker td.today.disabled, .datepicker table tr td.today.disabled,
.datepicker td.today:hover.disabled, .datepicker table tr td.today:hover.disabled,
.datepicker td.today.disabled.disabled, .datepicker table tr td.today.disabled.disabled,
.datepicker td.today.disabled:hover.disabled, .datepicker table tr td.today.disabled:hover.disabled,
.datepicker td.today[disabled], .datepicker table tr td.today[disabled],
.datepicker td.today:hover[disabled], .datepicker table tr td.today:hover[disabled],
.datepicker td.today.disabled[disabled], .datepicker table tr td.today.disabled[disabled],
.datepicker td.today.disabled:hover[disabled] { .datepicker table tr td.today.disabled:hover[disabled] {
background-color: #fdf59a; background-color: #fdf59a;
} }
.datepicker td.today:active, .datepicker table tr td.today:active,
.datepicker td.today:hover:active, .datepicker table tr td.today:hover:active,
.datepicker td.today.disabled:active, .datepicker table tr td.today.disabled:active,
.datepicker td.today.disabled:hover:active, .datepicker table tr td.today.disabled:hover:active,
.datepicker td.today.active, .datepicker table tr td.today.active,
.datepicker td.today:hover.active, .datepicker table tr td.today:hover.active,
.datepicker td.today.disabled.active, .datepicker table tr td.today.disabled.active,
.datepicker td.today.disabled:hover.active { .datepicker table tr td.today.disabled:hover.active {
background-color: #fbf069 \9; background-color: #fbf069 \9;
} }
.datepicker td.range, .datepicker table tr td.today:hover:hover {
.datepicker td.range:hover, color: #000;
.datepicker td.range.disabled, }
.datepicker td.range.disabled:hover { .datepicker table tr td.today.active:hover {
color: #fff;
}
.datepicker table tr td.range,
.datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:hover {
background: #eeeeee; background: #eeeeee;
-webkit-border-radius: 0; -webkit-border-radius: 0;
-moz-border-radius: 0; -moz-border-radius: 0;
border-radius: 0; border-radius: 0;
} }
.datepicker td.selected, .datepicker table tr td.range.today,
.datepicker td.selected:hover, .datepicker table tr td.range.today:hover,
.datepicker td.selected.disabled, .datepicker table tr td.range.today.disabled,
.datepicker td.selected.disabled:hover { .datepicker table tr td.range.today.disabled:hover {
background-color: #f3d17a;
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
background-image: linear-gradient(top, #f3c17a, #f3e97a);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
border-color: #f3e97a #f3e97a #edde34;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today:hover:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today:hover.disabled,
.datepicker table tr td.range.today.disabled.disabled,
.datepicker table tr td.range.today.disabled:hover.disabled,
.datepicker table tr td.range.today[disabled],
.datepicker table tr td.range.today:hover[disabled],
.datepicker table tr td.range.today.disabled[disabled],
.datepicker table tr td.range.today.disabled:hover[disabled] {
background-color: #f3e97a;
}
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active {
background-color: #efe24b \9;
}
.datepicker table tr td.selected,
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected.disabled:hover {
background-color: #9e9e9e; background-color: #9e9e9e;
background-image: -moz-linear-gradient(top, #b3b3b3, #808080); background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
background-image: -ms-linear-gradient(top, #b3b3b3, #808080); background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
@ -152,46 +259,46 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
border-color: #808080 #808080 #595959; border-color: #808080 #808080 #595959;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(enabled=false); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff; color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
} }
.datepicker td.selected:hover, .datepicker table tr td.selected:hover,
.datepicker td.selected:hover:hover, .datepicker table tr td.selected:hover:hover,
.datepicker td.selected.disabled:hover, .datepicker table tr td.selected.disabled:hover,
.datepicker td.selected.disabled:hover:hover, .datepicker table tr td.selected.disabled:hover:hover,
.datepicker td.selected:active, .datepicker table tr td.selected:active,
.datepicker td.selected:hover:active, .datepicker table tr td.selected:hover:active,
.datepicker td.selected.disabled:active, .datepicker table tr td.selected.disabled:active,
.datepicker td.selected.disabled:hover:active, .datepicker table tr td.selected.disabled:hover:active,
.datepicker td.selected.active, .datepicker table tr td.selected.active,
.datepicker td.selected:hover.active, .datepicker table tr td.selected:hover.active,
.datepicker td.selected.disabled.active, .datepicker table tr td.selected.disabled.active,
.datepicker td.selected.disabled:hover.active, .datepicker table tr td.selected.disabled:hover.active,
.datepicker td.selected.disabled, .datepicker table tr td.selected.disabled,
.datepicker td.selected:hover.disabled, .datepicker table tr td.selected:hover.disabled,
.datepicker td.selected.disabled.disabled, .datepicker table tr td.selected.disabled.disabled,
.datepicker td.selected.disabled:hover.disabled, .datepicker table tr td.selected.disabled:hover.disabled,
.datepicker td.selected[disabled], .datepicker table tr td.selected[disabled],
.datepicker td.selected:hover[disabled], .datepicker table tr td.selected:hover[disabled],
.datepicker td.selected.disabled[disabled], .datepicker table tr td.selected.disabled[disabled],
.datepicker td.selected.disabled:hover[disabled] { .datepicker table tr td.selected.disabled:hover[disabled] {
background-color: #808080; background-color: #808080;
} }
.datepicker td.selected:active, .datepicker table tr td.selected:active,
.datepicker td.selected:hover:active, .datepicker table tr td.selected:hover:active,
.datepicker td.selected.disabled:active, .datepicker table tr td.selected.disabled:active,
.datepicker td.selected.disabled:hover:active, .datepicker table tr td.selected.disabled:hover:active,
.datepicker td.selected.active, .datepicker table tr td.selected.active,
.datepicker td.selected:hover.active, .datepicker table tr td.selected:hover.active,
.datepicker td.selected.disabled.active, .datepicker table tr td.selected.disabled.active,
.datepicker td.selected.disabled:hover.active { .datepicker table tr td.selected.disabled:hover.active {
background-color: #666666 \9; background-color: #666666 \9;
} }
.datepicker td.active, .datepicker table tr td.active,
.datepicker td.active:hover, .datepicker table tr td.active:hover,
.datepicker td.active.disabled, .datepicker table tr td.active.disabled,
.datepicker td.active.disabled:hover { .datepicker table tr td.active.disabled:hover {
background-color: #006dcc; background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
@ -203,43 +310,43 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80; border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(enabled=false); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff; color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
} }
.datepicker td.active:hover, .datepicker table tr td.active:hover,
.datepicker td.active:hover:hover, .datepicker table tr td.active:hover:hover,
.datepicker td.active.disabled:hover, .datepicker table tr td.active.disabled:hover,
.datepicker td.active.disabled:hover:hover, .datepicker table tr td.active.disabled:hover:hover,
.datepicker td.active:active, .datepicker table tr td.active:active,
.datepicker td.active:hover:active, .datepicker table tr td.active:hover:active,
.datepicker td.active.disabled:active, .datepicker table tr td.active.disabled:active,
.datepicker td.active.disabled:hover:active, .datepicker table tr td.active.disabled:hover:active,
.datepicker td.active.active, .datepicker table tr td.active.active,
.datepicker td.active:hover.active, .datepicker table tr td.active:hover.active,
.datepicker td.active.disabled.active, .datepicker table tr td.active.disabled.active,
.datepicker td.active.disabled:hover.active, .datepicker table tr td.active.disabled:hover.active,
.datepicker td.active.disabled, .datepicker table tr td.active.disabled,
.datepicker td.active:hover.disabled, .datepicker table tr td.active:hover.disabled,
.datepicker td.active.disabled.disabled, .datepicker table tr td.active.disabled.disabled,
.datepicker td.active.disabled:hover.disabled, .datepicker table tr td.active.disabled:hover.disabled,
.datepicker td.active[disabled], .datepicker table tr td.active[disabled],
.datepicker td.active:hover[disabled], .datepicker table tr td.active:hover[disabled],
.datepicker td.active.disabled[disabled], .datepicker table tr td.active.disabled[disabled],
.datepicker td.active.disabled:hover[disabled] { .datepicker table tr td.active.disabled:hover[disabled] {
background-color: #0044cc; background-color: #0044cc;
} }
.datepicker td.active:active, .datepicker table tr td.active:active,
.datepicker td.active:hover:active, .datepicker table tr td.active:hover:active,
.datepicker td.active.disabled:active, .datepicker table tr td.active.disabled:active,
.datepicker td.active.disabled:hover:active, .datepicker table tr td.active.disabled:hover:active,
.datepicker td.active.active, .datepicker table tr td.active.active,
.datepicker td.active:hover.active, .datepicker table tr td.active:hover.active,
.datepicker td.active.disabled.active, .datepicker table tr td.active.disabled.active,
.datepicker td.active.disabled:hover.active { .datepicker table tr td.active.disabled:hover.active {
background-color: #003399 \9; background-color: #003399 \9;
} }
.datepicker td span { .datepicker table tr td span {
display: block; display: block;
width: 23%; width: 23%;
height: 54px; height: 54px;
@ -251,19 +358,19 @@
-moz-border-radius: 4px; -moz-border-radius: 4px;
border-radius: 4px; border-radius: 4px;
} }
.datepicker td span:hover { .datepicker table tr td span:hover {
background: #eeeeee; background: #eeeeee;
} }
.datepicker td span.disabled, .datepicker table tr td span.disabled,
.datepicker td span.disabled:hover { .datepicker table tr td span.disabled:hover {
background: none; background: none;
color: #999999; color: #999999;
cursor: default; cursor: default;
} }
.datepicker td span.active, .datepicker table tr td span.active,
.datepicker td span.active:hover, .datepicker table tr td span.active:hover,
.datepicker td span.active.disabled, .datepicker table tr td span.active.disabled,
.datepicker td span.active.disabled:hover { .datepicker table tr td span.active.disabled:hover {
background-color: #006dcc; background-color: #006dcc;
background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
background-image: -ms-linear-gradient(top, #0088cc, #0044cc); background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
@ -275,59 +382,69 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
border-color: #0044cc #0044cc #002a80; border-color: #0044cc #0044cc #002a80;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
filter: progid:dximagetransform.microsoft.gradient(enabled=false); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
color: #fff; color: #fff;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
} }
.datepicker td span.active:hover, .datepicker table tr td span.active:hover,
.datepicker td span.active:hover:hover, .datepicker table tr td span.active:hover:hover,
.datepicker td span.active.disabled:hover, .datepicker table tr td span.active.disabled:hover,
.datepicker td span.active.disabled:hover:hover, .datepicker table tr td span.active.disabled:hover:hover,
.datepicker td span.active:active, .datepicker table tr td span.active:active,
.datepicker td span.active:hover:active, .datepicker table tr td span.active:hover:active,
.datepicker td span.active.disabled:active, .datepicker table tr td span.active.disabled:active,
.datepicker td span.active.disabled:hover:active, .datepicker table tr td span.active.disabled:hover:active,
.datepicker td span.active.active, .datepicker table tr td span.active.active,
.datepicker td span.active:hover.active, .datepicker table tr td span.active:hover.active,
.datepicker td span.active.disabled.active, .datepicker table tr td span.active.disabled.active,
.datepicker td span.active.disabled:hover.active, .datepicker table tr td span.active.disabled:hover.active,
.datepicker td span.active.disabled, .datepicker table tr td span.active.disabled,
.datepicker td span.active:hover.disabled, .datepicker table tr td span.active:hover.disabled,
.datepicker td span.active.disabled.disabled, .datepicker table tr td span.active.disabled.disabled,
.datepicker td span.active.disabled:hover.disabled, .datepicker table tr td span.active.disabled:hover.disabled,
.datepicker td span.active[disabled], .datepicker table tr td span.active[disabled],
.datepicker td span.active:hover[disabled], .datepicker table tr td span.active:hover[disabled],
.datepicker td span.active.disabled[disabled], .datepicker table tr td span.active.disabled[disabled],
.datepicker td span.active.disabled:hover[disabled] { .datepicker table tr td span.active.disabled:hover[disabled] {
background-color: #0044cc; background-color: #0044cc;
} }
.datepicker td span.active:active, .datepicker table tr td span.active:active,
.datepicker td span.active:hover:active, .datepicker table tr td span.active:hover:active,
.datepicker td span.active.disabled:active, .datepicker table tr td span.active.disabled:active,
.datepicker td span.active.disabled:hover:active, .datepicker table tr td span.active.disabled:hover:active,
.datepicker td span.active.active, .datepicker table tr td span.active.active,
.datepicker td span.active:hover.active, .datepicker table tr td span.active:hover.active,
.datepicker td span.active.disabled.active, .datepicker table tr td span.active.disabled.active,
.datepicker td span.active.disabled:hover.active { .datepicker table tr td span.active.disabled:hover.active {
background-color: #003399 \9; background-color: #003399 \9;
} }
.datepicker td span.old { .datepicker table tr td span.old,
.datepicker table tr td span.new {
color: #999999; color: #999999;
} }
.datepicker th.switch { .datepicker th.datepicker-switch {
width: 145px; width: 145px;
} }
.datepicker thead tr:first-child th, .datepicker thead tr:first-child th,
.datepicker tfoot tr:first-child th { .datepicker tfoot tr th {
cursor: pointer; cursor: pointer;
} }
.datepicker thead tr:first-child th:hover, .datepicker thead tr:first-child th:hover,
.datepicker tfoot tr:first-child th:hover { .datepicker tfoot tr th:hover {
background: #eeeeee; background: #eeeeee;
} }
.datepicker .cw {
font-size: 10px;
width: 12px;
padding: 0 2px 0 5px;
vertical-align: middle;
}
.datepicker thead tr:first-child th.cw {
cursor: default;
background-color: transparent;
}
.input-append.date .add-on i, .input-append.date .add-on i,
.input-prepend.date .add-on i { .input-prepend.date .add-on i {
display: block;
cursor: pointer; cursor: pointer;
width: 16px; width: 16px;
height: 16px; height: 16px;
@ -349,10 +466,10 @@
display: inline-block; display: inline-block;
width: auto; width: auto;
min-width: 16px; min-width: 16px;
height: 18px; height: 20px;
padding: 4px 5px; padding: 4px 5px;
font-weight: normal; font-weight: normal;
line-height: 18px; line-height: 20px;
text-align: center; text-align: center;
text-shadow: 0 1px 0 #ffffff; text-shadow: 0 1px 0 #ffffff;
vertical-align: middle; vertical-align: middle;
@ -387,19 +504,11 @@
color: #333333; color: #333333;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px; font-size: 13px;
line-height: 18px; line-height: 20px;
} }
.datepicker.dropdown-menu th, .datepicker.dropdown-menu th,
.datepicker.dropdown-menu td { .datepicker.datepicker-inline th,
.datepicker.dropdown-menu td,
.datepicker.datepicker-inline td {
padding: 4px 5px; padding: 4px 5px;
} }
.datepicker .prev,
.datepicker .next {
font-style: normal;
}
.datepicker .prev:after {
content: "«";
}
.datepicker .next:after {
content: "»";
}

File diff suppressed because it is too large Load Diff