From 8bd40304433004dd955fcbf925ed4f24502bfeb5 Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Tue, 28 Jul 2015 23:10:16 +0200 Subject: [PATCH] Datepicker: Re-introduce formatDate option, simplify Globalize usage --- tests/unit/datepicker/common.js | 1 + tests/unit/datepicker/options.js | 7 ++++++- ui/datepicker.js | 32 +++++++++++--------------------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/tests/unit/datepicker/common.js b/tests/unit/datepicker/common.js index 84b97fa3a..6389adaec 100644 --- a/tests/unit/datepicker/common.js +++ b/tests/unit/datepicker/common.js @@ -10,6 +10,7 @@ common.testWidget( "datepicker", { buttons: [], classes: {}, disabled: false, + dateFormat: { date: "short" }, eachDay: $.noop, labels: { "datePickerRole": "date picker", diff --git a/tests/unit/datepicker/options.js b/tests/unit/datepicker/options.js index 32979eac8..6bad27b6a 100644 --- a/tests/unit/datepicker/options.js +++ b/tests/unit/datepicker/options.js @@ -45,13 +45,14 @@ test( "appendTo", function() { }); test( "Pass-through options", function() { - expect( 9 ); + expect( 11 ); var options = { buttons: { "Test": $.noop }, dateFormat: { date: "full" }, disabled: true, eachDay: function( day ) { day; }, + locale: "de", max: new Date( 2000, 0, 1 ), min: new Date( 2000, 0, 2 ), numberOfMonths: 3, @@ -72,6 +73,10 @@ test( "Pass-through options", function() { if ( key === "dateFormat" ) { equal( input.val(), "Wednesday, January 1, 2014", "option " + key + ": updated format" ); } + + if ( key === "locale" ) { + equal( input.val(), "Mittwoch, 1. Januar 2014", "option " + key + ": updated locale" ); + } }); }); diff --git a/ui/datepicker.js b/ui/datepicker.js index ba6fd7527..2056d9443 100644 --- a/ui/datepicker.js +++ b/ui/datepicker.js @@ -51,19 +51,17 @@ var widget = $.widget( "ui.datepicker", { select: null }, - calendarOptions: [ "buttons", "disabled", "eachDay", "labels", "locale", - "max", "min", "numberOfMonths", "showWeek" ], + calendarOptions: [ "buttons", "disabled", "dateFormat", "eachDay", "labels", + "locale", "max", "min", "numberOfMonths", "showWeek" ], _create: function() { this.suppressExpandOnFocus = false; - this._setLocale( this.options.locale ); - if ( $.type( this.options.max ) === "string" ) { - this.options.max = this._parseYMD( this.options.max ); + this.options.max = Globalize.parseDate( this.options.max, { raw: "yyyy-MM-dd" } ); } if ( $.type( this.options.min ) === "string" ) { - this.options.min = this._parseYMD( this.options.min ); + this.options.min = Globalize.parseDate( this.options.min, { raw: "yyyy-MM-dd" } ); } this._createCalendar(); @@ -90,7 +88,8 @@ var widget = $.widget( "ui.datepicker", { }, _createCalendar: function() { - var that = this; + var that = this, + globalize = new Globalize( this.options.locale ); this.calendar = $( "
" ) .addClass( "ui-front ui-datepicker" ) @@ -99,7 +98,7 @@ var widget = $.widget( "ui.datepicker", { // Initialize calendar widget this.calendarInstance = this.calendar .calendar( $.extend( {}, this.options, { - value: this._getParsedValue(), + value: globalize.dateParser( this.options.dateFormat )( this.element.val() ), select: function( event ) { that.element.val( that.calendarInstance.value() ); that.close(); @@ -280,21 +279,13 @@ var widget = $.widget( "ui.datepicker", { }); }, - _setLocale: function( locale ) { - var globalize = new Globalize( locale ); - - this._format = globalize.dateFormatter({ date: "short" }); - this._parse = globalize.dateParser({ date: "short" }); - this._parseYMD = globalize.dateParser({ raw: "yyyy-MM-dd" }); - }, - _buildPosition: function() { return $.extend( { of: this.element }, this.options.position ); }, value: function( value ) { if ( arguments.length ) { - this.valueAsDate( this._parse( value ) ); + this.valueAsDate( this.calendarInstance._parse( value ) ); } else { return this._getParsedValue() ? this.element.val() : null; } @@ -304,7 +295,7 @@ var widget = $.widget( "ui.datepicker", { if ( arguments.length ) { if ( this.calendarInstance._isValid( value ) ) { this.calendarInstance.valueAsDate( value ); - this.element.val( this._format( value ) ); + this.element.val( this.calendarInstance._format( value ) ); } } else { return this._getParsedValue(); @@ -326,7 +317,7 @@ var widget = $.widget( "ui.datepicker", { }, _getParsedValue: function() { - return this._parse( this.element.val() ); + return this.calendarInstance._parse( this.element.val() ); }, _setOption: function( key, value ) { @@ -340,8 +331,7 @@ var widget = $.widget( "ui.datepicker", { this.calendar.appendTo( this._appendTo() ); } - if ( key === "locale" ) { - this._setLocale( value ); + if ( key === "locale" || key === "dateFormat" ) { this.element.val( this.calendarInstance.value() ); } -- 2.39.5