|
34 | 34 | function alias(method){
|
35 | 35 | return function(){
|
36 | 36 | return this[method].apply(this, arguments);
|
37 |
| - } |
| 37 | + }; |
38 | 38 | }
|
39 | 39 |
|
40 | 40 | var DateArray = (function(){
|
|
77 | 77 | a.push.apply(a, arguments);
|
78 | 78 | $.extend(a, extras);
|
79 | 79 | return a;
|
80 |
| - } |
| 80 | + }; |
81 | 81 | })();
|
82 | 82 |
|
83 | 83 |
|
|
310 | 310 | focus: $.proxy(this.show, this),
|
311 | 311 | keyup: $.proxy(function(e){
|
312 | 312 | if ($.inArray(e.keyCode, [27,37,39,38,40,32,13,9]) === -1)
|
313 |
| - this.update() |
| 313 | + this.update(); |
314 | 314 | }, this),
|
315 | 315 | keydown: $.proxy(this.keydown, this)
|
316 | 316 | }],
|
|
404 | 404 | });
|
405 | 405 | },
|
406 | 406 |
|
407 |
| - show: function(e) { |
| 407 | + show: function(){ |
408 | 408 | if (!this.isInline)
|
409 | 409 | this.picker.appendTo('body');
|
410 | 410 | this.picker.show();
|
|
725 | 725 | startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
|
726 | 726 | endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
|
727 | 727 | endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
|
728 |
| - tooltip, currentYear; |
| 728 | + tooltip; |
729 | 729 | this.picker.find('.datepicker-days thead th.datepicker-switch')
|
730 | 730 | .text(dates[this.o.language].months[month]+' '+year);
|
731 | 731 | this.picker.find('tfoot th.today')
|
|
1186 | 1186 | if (dir) {
|
1187 | 1187 | this.viewMode = Math.max(this.o.minViewMode, Math.min(2, this.viewMode + dir));
|
1188 | 1188 | }
|
1189 |
| - /* |
1190 |
| - vitalets: fixing bug of very special conditions: |
1191 |
| - jquery 1.7.1 + webkit + show inline datepicker in bootstrap popover. |
1192 |
| - Method show() does not set display css correctly and datepicker is not shown. |
1193 |
| - Changed to .css('display', 'block') solve the problem. |
1194 |
| - See https://github.com/vitalets/x-editable/issues/37 |
1195 |
| -
|
1196 |
| - In jquery 1.7.2+ everything works fine. |
1197 |
| - */ |
1198 |
| - //this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show(); |
1199 |
| - this.picker.find('>div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).css('display', 'block'); |
| 1189 | + this.picker |
| 1190 | + .find('>div') |
| 1191 | + .hide() |
| 1192 | + .filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName) |
| 1193 | + .css('display', 'block'); |
1200 | 1194 | this.updateNavArrows();
|
1201 | 1195 | }
|
1202 | 1196 | };
|
|
1269 | 1263 | // Derive options from element data-attrs
|
1270 | 1264 | var data = $(el).data(),
|
1271 | 1265 | out = {}, inkey,
|
1272 |
| - replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'), |
1273 |
| - prefix = new RegExp('^' + prefix.toLowerCase()); |
| 1266 | + replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])'); |
| 1267 | + prefix = new RegExp('^' + prefix.toLowerCase()); |
| 1268 | + function re_lower(_,a){ |
| 1269 | + return a.toLowerCase(); |
| 1270 | + } |
1274 | 1271 | for (var key in data)
|
1275 | 1272 | if (prefix.test(key)){
|
1276 |
| - inkey = key.replace(replace, function(_,a){ return a.toLowerCase(); }); |
| 1273 | + inkey = key.replace(replace, re_lower); |
1277 | 1274 | out[inkey] = data[key];
|
1278 | 1275 | }
|
1279 | 1276 | return out;
|
|
1416 | 1413 | if (date instanceof Date) return date;
|
1417 | 1414 | if (typeof format === 'string')
|
1418 | 1415 | format = DPGlobal.parseFormat(format);
|
| 1416 | + var part_re = /([\-+]\d+)([dmwy])/, |
| 1417 | + parts = date.match(/([\-+]\d+)([dmwy])/g), |
| 1418 | + part, dir, i; |
1419 | 1419 | if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)) {
|
1420 |
| - var part_re = /([\-+]\d+)([dmwy])/, |
1421 |
| - parts = date.match(/([\-+]\d+)([dmwy])/g), |
1422 |
| - part, dir; |
1423 | 1420 | date = new Date();
|
1424 |
| - for (var i=0; i<parts.length; i++) { |
| 1421 | + for (i=0; i<parts.length; i++) { |
1425 | 1422 | part = part_re.exec(parts[i]);
|
1426 | 1423 | dir = parseInt(part[1]);
|
1427 | 1424 | switch(part[2]){
|
|
1441 | 1438 | }
|
1442 | 1439 | return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0);
|
1443 | 1440 | }
|
1444 |
| - var parts = date && date.match(this.nonpunctuation) || [], |
1445 |
| - date = new Date(), |
1446 |
| - parsed = {}, |
| 1441 | + parts = date && date.match(this.nonpunctuation) || []; |
| 1442 | + date = new Date(); |
| 1443 | + var parsed = {}, |
1447 | 1444 | setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
|
1448 | 1445 | setters_map = {
|
1449 | 1446 | yyyy: function(d,v){ return d.setUTCFullYear(v); },
|
|
1461 | 1458 | },
|
1462 | 1459 | d: function(d,v){ return d.setUTCDate(v); }
|
1463 | 1460 | },
|
1464 |
| - val, filtered, part; |
| 1461 | + val, filtered; |
1465 | 1462 | setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
|
1466 | 1463 | setters_map['dd'] = setters_map['d'];
|
1467 | 1464 | date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
|
|
1473 | 1470 | }).toArray();
|
1474 | 1471 | }
|
1475 | 1472 | // Process remainder
|
| 1473 | + function match_part(){ |
| 1474 | + var m = this.slice(0, parts[i].length), |
| 1475 | + p = parts[i].slice(0, m.length); |
| 1476 | + return m == p; |
| 1477 | + } |
1476 | 1478 | if (parts.length == fparts.length) {
|
1477 |
| - for (var i=0, cnt = fparts.length; i < cnt; i++) { |
| 1479 | + var cnt; |
| 1480 | + for (i=0, cnt = fparts.length; i < cnt; i++) { |
1478 | 1481 | val = parseInt(parts[i], 10);
|
1479 | 1482 | part = fparts[i];
|
1480 | 1483 | if (isNaN(val)) {
|
1481 | 1484 | switch(part) {
|
1482 | 1485 | case 'MM':
|
1483 |
| - filtered = $(dates[language].months).filter(function(){ |
1484 |
| - var m = this.slice(0, parts[i].length), |
1485 |
| - p = parts[i].slice(0, m.length); |
1486 |
| - return m == p; |
1487 |
| - }); |
| 1486 | + filtered = $(dates[language].months).filter(match_part); |
1488 | 1487 | val = $.inArray(filtered[0], dates[language].months) + 1;
|
1489 | 1488 | break;
|
1490 | 1489 | case 'M':
|
1491 |
| - filtered = $(dates[language].monthsShort).filter(function(){ |
1492 |
| - var m = this.slice(0, parts[i].length), |
1493 |
| - p = parts[i].slice(0, m.length); |
1494 |
| - return m == p; |
1495 |
| - }); |
| 1490 | + filtered = $(dates[language].monthsShort).filter(match_part); |
1496 | 1491 | val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
|
1497 | 1492 | break;
|
1498 | 1493 | }
|
1499 | 1494 | }
|
1500 | 1495 | parsed[part] = val;
|
1501 | 1496 | }
|
1502 |
| - for (var i=0, _date, s; i<setters_order.length; i++){ |
| 1497 | + var _date, s; |
| 1498 | + for (i=0; i<setters_order.length; i++){ |
1503 | 1499 | s = setters_order[i];
|
1504 | 1500 | if (s in parsed && !isNaN(parsed[s])){
|
1505 | 1501 | _date = new Date(date);
|
|
1528 | 1524 | };
|
1529 | 1525 | val.dd = (val.d < 10 ? '0' : '') + val.d;
|
1530 | 1526 | val.mm = (val.m < 10 ? '0' : '') + val.m;
|
1531 |
| - var date = [], |
1532 |
| - seps = $.extend([], format.separators); |
| 1527 | + date = []; |
| 1528 | + var seps = $.extend([], format.separators); |
1533 | 1529 | for (var i=0, cnt = format.parts.length; i <= cnt; i++) {
|
1534 | 1530 | if (seps.length)
|
1535 | 1531 | date.push(seps.shift());
|
|
1545 | 1541 | '</tr>'+
|
1546 | 1542 | '</thead>',
|
1547 | 1543 | contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
|
1548 |
| - footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>' |
| 1544 | + footTemplate: '<tfoot>'+ |
| 1545 | + '<tr>'+ |
| 1546 | + '<th colspan="7" class="today"></th>'+ |
| 1547 | + '</tr>'+ |
| 1548 | + '<tr>'+ |
| 1549 | + '<th colspan="7" class="clear"></th>'+ |
| 1550 | + '</tr>'+ |
| 1551 | + '</tfoot>' |
1549 | 1552 | };
|
1550 | 1553 | DPGlobal.template = '<div class="datepicker">'+
|
1551 | 1554 | '<div class="datepicker-days">'+
|
|
0 commit comments