From fe5b1766c2929a8932046b9187240bfca1d949c2 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Mon, 13 Jul 2015 18:46:05 +0200 Subject: [PATCH] Switch to stable 1.4.0 bootstrap-datepicker --- public/js/bootstrap-datepicker.js | 208 ++++++++------------------------------ 1 file changed, 42 insertions(+), 166 deletions(-) diff --git a/public/js/bootstrap-datepicker.js b/public/js/bootstrap-datepicker.js index e127d7c..474a666 100644 --- a/public/js/bootstrap-datepicker.js +++ b/public/js/bootstrap-datepicker.js @@ -1,34 +1,10 @@ -/* ========================================================= - * bootstrap-datepicker.js - * Repo: https://github.com/eternicode/bootstrap-datepicker/ - * Demo: http://eternicode.github.io/bootstrap-datepicker/ - * Docs: http://bootstrap-datepicker.readthedocs.org/ - * Forked from http://www.eyecon.ro/bootstrap-datepicker - * ========================================================= - * Started by Stefan Petre; improvements by Andrew Rowls + contributors +/*! + * Datepicker for Bootstrap v1.4.0 (https://github.com/eternicode/bootstrap-datepicker) * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - -(function(factory){ - if (typeof define === "function" && define.amd) { - define(["jquery"], factory); - } else if (typeof exports === 'object') { - factory(require('jquery')); - } else { - factory(jQuery); - } -}(function($, undefined){ + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */(function($, undefined){ function UTCDate(){ return new Date(Date.UTC.apply(Date, arguments)); @@ -139,7 +115,6 @@ this.setStartDate(this._o.startDate); this.setEndDate(this._o.endDate); this.setDaysOfWeekDisabled(this.o.daysOfWeekDisabled); - this.setDaysOfWeekHighlighted(this.o.daysOfWeekHighlighted); this.setDatesDisabled(this.o.datesDisabled); this.fillDow(); @@ -200,20 +175,6 @@ o.minViewMode = 0; } - switch (o.maxViewMode) { - case 0: - case 'days': - o.maxViewMode = 0; - break; - case 1: - case 'months': - o.maxViewMode = 1; - break; - default: - o.maxViewMode = 2; - } - - o.startView = Math.min(o.startView, o.maxViewMode); o.startView = Math.max(o.startView, o.minViewMode); // true, false, or Number > 0 @@ -258,13 +219,6 @@ return parseInt(d, 10); }); - o.daysOfWeekHighlighted = o.daysOfWeekHighlighted||[]; - if (!$.isArray(o.daysOfWeekHighlighted)) - o.daysOfWeekHighlighted = o.daysOfWeekHighlighted.split(/[,\s]*/); - o.daysOfWeekHighlighted = $.map(o.daysOfWeekHighlighted, function(d){ - return parseInt(d, 10); - }); - o.datesDisabled = o.datesDisabled||[]; if (!$.isArray(o.datesDisabled)) { var datesDisabled = []; @@ -352,8 +306,7 @@ if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1) this.update(); }, this), - keydown: $.proxy(this.keydown, this), - paste: $.proxy(this.paste, this) + keydown: $.proxy(this.keydown, this) }; if (this.o.showOnFocus === true) { @@ -399,15 +352,6 @@ }] ); - if (this.o.immediateUpdates) { - // Trigger input updates immediately on changed year/month - this._events.push([this.element, { - 'changeYear changeMonth': $.proxy(function(e){ - this.update(e.date); - }, this) - }]); - } - this._secondaryEvents = [ [this.picker, { click: $.proxy(this.click, this) @@ -416,17 +360,15 @@ resize: $.proxy(this.place, this) }], [$(document), { - mousedown: $.proxy(function(e){ + 'mousedown touchstart': $.proxy(function(e){ // Clicked outside the datepicker, hide it if (!( this.element.is(e.target) || this.element.find(e.target).length || this.picker.is(e.target) || - this.picker.find(e.target).length || - this.picker.hasClass('datepicker-inline') + this.picker.find(e.target).length )){ - $(this.picker).hide(); - this._trigger('hide'); + this.hide(); } }, this) }] @@ -520,23 +462,6 @@ return this; }, - paste: function(evt){ - var dateString; - if (evt.originalEvent.clipboardData && evt.originalEvent.clipboardData.types - && $.inArray('text/plain', evt.originalEvent.clipboardData.types) !== -1) { - dateString = evt.originalEvent.clipboardData.getData('text/plain'); - } - else if (window.clipboardData) { - dateString = window.clipboardData.getData('Text'); - } - else { - return; - } - this.setDate(dateString); - this.update(); - evt.preventDefault(); - }, - _utc_to_local: function(utc){ return utc && new Date(utc.getTime() + (utc.getTimezoneOffset()*60000)); }, @@ -582,7 +507,7 @@ } if (element) { - element.val(''); + element.val('').change(); } this.update(); @@ -615,11 +540,11 @@ var formatted = this.getFormattedDate(); if (!this.isInput){ if (this.component){ - this.element.find('input').val(formatted); + this.element.find('input').val(formatted).change(); } } else { - this.element.val(formatted); + this.element.val(formatted).change(); } return this; }, @@ -655,12 +580,6 @@ return this; }, - setDaysOfWeekHighlighted: function(daysOfWeekHighlighted){ - this._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted}); - this.update(); - return this; - }, - setDatesDisabled: function(datesDisabled){ this._process_options({datesDisabled: datesDisabled}); this.update(); @@ -673,11 +592,10 @@ var calendarWidth = this.picker.outerWidth(), calendarHeight = this.picker.outerHeight(), visualPadding = 10, - container = $(this.o.container), - windowWidth = container.width(), - windowHeight = container.height(), - scrollTop = container.scrollTop(), - appendOffset = container.offset(); + windowWidth = $(this.o.container).width(), + windowHeight = $(this.o.container).height(), + scrollTop = $(this.o.container).scrollTop(), + appendOffset = $(this.o.container).offset(); var parentsZindex = []; this.element.parents().each(function(){ @@ -732,9 +650,9 @@ } this.picker.addClass('datepicker-orient-' + yorient); if (yorient === 'top') - top -= calendarHeight + parseInt(this.picker.css('padding-top')); - else top += height; + else + top -= calendarHeight + parseInt(this.picker.css('padding-top')); if (this.o.rtl) { var right = windowWidth - (left + width); @@ -798,8 +716,6 @@ this.viewDate = new Date(this.o.startDate); else if (this.viewDate > this.o.endDate) this.viewDate = new Date(this.o.endDate); - else - this.viewDate = this.o.defaultViewDate; if (fromArgs){ // setting date by clicking @@ -814,7 +730,6 @@ this._trigger('clearDate'); this.fill(); - this.element.change(); return this; }, @@ -822,11 +737,12 @@ var dowCnt = this.o.weekStart, html = ''; if (this.o.calendarWeeks){ - this.picker.find('.datepicker-days .datepicker-switch') + this.picker.find('.datepicker-days thead tr:first-child .datepicker-switch') .attr('colspan', function(i, val){ return parseInt(val) + 1; }); - html += ' '; + var cell = ' '; + html += cell; } while (dowCnt < this.o.weekStart + 7){ html += ''+dates[this.o.language].daysMin[(dowCnt++)%7]+''; @@ -880,10 +796,6 @@ $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1){ cls.push('disabled'); } - if (date.valueOf() < this.o.startDate || date.valueOf() > this.o.endDate || - $.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){ - cls.push('highlighted'); - } if (this.o.datesDisabled.length > 0 && $.grep(this.o.datesDisabled, function(d){ return isUTCEquals(date, d); }).length > 0) { @@ -911,21 +823,17 @@ endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, todaytxt = dates[this.o.language].today || dates['en'].today || '', cleartxt = dates[this.o.language].clear || dates['en'].clear || '', - titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat, tooltip; if (isNaN(year) || isNaN(month)) return; this.picker.find('.datepicker-days thead .datepicker-switch') - .text(DPGlobal.formatDate(new Date(year, month), titleFormat, this.o.language)); + .text(dates[this.o.language].months[month]+' '+year); this.picker.find('tfoot .today') .text(todaytxt) .toggle(this.o.todayBtn !== false); this.picker.find('tfoot .clear') .text(cleartxt) .toggle(this.o.clearBtn !== false); - this.picker.find('thead .datepicker-title') - .text(this.o.title) - .toggle(this.o.title !== ''); this.updateNavArrows(); this.fillMonths(); var prevMonth = UTCDate(year, month-1, 28), @@ -986,8 +894,8 @@ this.picker.find('.datepicker-days tbody').empty().append(html.join('')); var months = this.picker.find('.datepicker-months') - .find('.datepicker-switch') - .text(this.o.maxViewMode < 2 ? 'Months' : year) + .find('th:eq(1)') + .text(year) .end() .find('span').removeClass('active'); @@ -1021,7 +929,7 @@ html = ''; year = parseInt(year/10, 10) * 10; var yearCont = this.picker.find('.datepicker-years') - .find('.datepicker-switch') + .find('th:eq(1)') .text(year + '-' + (year + 9)) .end() .find('td'); @@ -1032,8 +940,6 @@ classes; for (var i = -1; i < 11; i++){ classes = ['year']; - tooltip = null; - if (i === -1) classes.push('old'); else if (i === 10) @@ -1042,24 +948,7 @@ classes.push('active'); if (year < startYear || year > endYear) classes.push('disabled'); - - if (this.o.beforeShowYear !== $.noop) { - var yrBefore = this.o.beforeShowYear(new Date(year, 0, 1)); - if (yrBefore === undefined) - yrBefore = {}; - else if (typeof(yrBefore) === 'boolean') - yrBefore = {enabled: yrBefore}; - else if (typeof(yrBefore) === 'string') - yrBefore = {classes: yrBefore}; - if (yrBefore.enabled === false) - classes.push('disabled'); - if (yrBefore.classes) - classes = classes.concat(yrBefore.classes.split(/\s+/)); - if (yrBefore.tooltip) - tooltip = yrBefore.tooltip; - } - - html += '' + year + ''; + html += '' + year + ''; year += 1; } yearCont.html(html); @@ -1089,13 +978,13 @@ break; case 1: case 2: - if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear() || this.o.maxViewMode < 2){ + if (this.o.startDate !== -Infinity && year <= this.o.startDate.getUTCFullYear()){ this.picker.find('.prev').css({visibility: 'hidden'}); } else { this.picker.find('.prev').css({visibility: 'visible'}); } - if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear() || this.o.maxViewMode < 2){ + if (this.o.endDate !== Infinity && year >= this.o.endDate.getUTCFullYear()){ this.picker.find('.next').css({visibility: 'hidden'}); } else { @@ -1107,7 +996,6 @@ click: function(e){ e.preventDefault(); - e.stopPropagation(); var target = $(e.target).closest('span, td, th'), year, month, day; if (target.length === 1){ @@ -1158,9 +1046,6 @@ this._trigger('changeMonth', this.viewDate); if (this.o.minViewMode === 1){ this._setDate(UTCDate(year, month, day)); - this.showMode(); - } else { - this.showMode(-1); } } else { @@ -1172,8 +1057,8 @@ if (this.o.minViewMode === 2){ this._setDate(UTCDate(year, month, day)); } - this.showMode(-1); } + this.showMode(-1); this.fill(); } break; @@ -1320,7 +1205,7 @@ keydown: function(e){ if (!this.picker.is(':visible')){ - if (e.keyCode === 40 || e.keyCode === 27) // allow down to re-show picker + if (e.keyCode === 27) // allow escape to hide and re-show picker this.show(); return; } @@ -1446,13 +1331,13 @@ showMode: function(dir){ if (dir){ - this.viewMode = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, this.viewMode + dir)); + this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir)); } this.picker .children('div') .hide() .filter('.datepicker-' + DPGlobal.modes[this.viewMode].clsName) - .show(); + .css('display', 'block'); this.updateNavArrows(); } }; @@ -1465,7 +1350,7 @@ delete options.inputs; datepickerPlugin.call($(this.inputs), options) - .on('changeDate', $.proxy(this.dateUpdated, this)); + .bind('changeDate', $.proxy(this.dateUpdated, this)); this.pickers = $.map(this.inputs, function(i){ return $(i).data('datepicker'); @@ -1609,12 +1494,10 @@ autoclose: false, beforeShowDay: $.noop, beforeShowMonth: $.noop, - beforeShowYear: $.noop, calendarWeeks: false, clearBtn: false, toggleActive: false, daysOfWeekDisabled: [], - daysOfWeekHighlighted: [], datesDisabled: [], endDate: Infinity, forceParse: true, @@ -1622,7 +1505,6 @@ keyboardNavigation: true, language: 'en', minViewMode: 0, - maxViewMode: 2, multidate: false, multidateSeparator: ',', orientation: "auto", @@ -1633,10 +1515,8 @@ todayHighlight: false, weekStart: 0, disableTouchKeyboard: false, - enableOnReadonly: true, - container: 'body', - immediateUpdates: false, - title: '' + enableOnReadonly: true, + container: 'body' }; var locale_opts = $.fn.datepicker.locale_opts = [ 'format', @@ -1646,14 +1526,13 @@ $.fn.datepicker.Constructor = Datepicker; var dates = $.fn.datepicker.dates = { en: { - days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"], + daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], + daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"], months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], today: "Today", - clear: "Clear", - titleFormat: "MM yyyy" + clear: "Clear" } }; @@ -1826,9 +1705,6 @@ return date.join(''); }, headTemplate: ''+ - ''+ - ''+ - ''+ ''+ '«'+ ''+ @@ -1882,7 +1758,7 @@ /* DATEPICKER VERSION * =================== */ - $.fn.datepicker.version = "1.4.1-dev"; + $.fn.datepicker.version = "1.4.0"; /* DATEPICKER DATA-API * ================== */ @@ -1903,4 +1779,4 @@ datepickerPlugin.call($('[data-provide="datepicker-inline"]')); }); -})); +}(window.jQuery));