mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Datepicker: Re-introduce formatDate option, simplify Globalize usage
This commit is contained in:
parent
ce704462b2
commit
8bd4030443
@ -10,6 +10,7 @@ common.testWidget( "datepicker", {
|
||||
buttons: [],
|
||||
classes: {},
|
||||
disabled: false,
|
||||
dateFormat: { date: "short" },
|
||||
eachDay: $.noop,
|
||||
labels: {
|
||||
"datePickerRole": "date picker",
|
||||
|
@ -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" );
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -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 = $( "<div>" )
|
||||
.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() );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user