From 8732ff7a8ccd4d9e2a74a10c652c585539b6b279 Mon Sep 17 00:00:00 2001 From: Felix Nagel Date: Thu, 30 Apr 2015 13:06:56 +0200 Subject: [PATCH] Datepicker: Use Globalize 1.0.0 - Fix merge conflict in value method - Fix common unit tests - Fix calendar localization tests - Fix rebase regression: labels update on refresh - Add new pass through options - lint fixes --- tests/unit/calendar/common.js | 19 ++++++++----------- tests/unit/calendar/core.js | 31 +++++++++++++++++-------------- tests/unit/datepicker/common.js | 19 ++++++++----------- ui/calendar.js | 15 +++++++++------ ui/datepicker.js | 6 +++--- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/tests/unit/calendar/common.js b/tests/unit/calendar/common.js index bb0f64d0d..8402cc8c7 100644 --- a/tests/unit/calendar/common.js +++ b/tests/unit/calendar/common.js @@ -1,16 +1,15 @@ -define( [ - "lib/common", - "ui/calendar", - "globalize-locales" -], function( common ) { - -common.testWidget( "calendar", { +TestHelpers.commonWidgetTests( "calendar", { defaults: { buttons: [], - classes: {}, - dateFormat: { date: "short" }, disabled: false, eachDay: $.noop, + labels: { + "datePickerRole": "date picker", + "nextText": "Next", + "prevText": "Prev", + "weekHeader": "Wk" + }, + locale: "en", max: null, min: null, numberOfMonths: 1, @@ -22,5 +21,3 @@ common.testWidget( "calendar", { select: null } }); - -} ); diff --git a/tests/unit/calendar/core.js b/tests/unit/calendar/core.js index c35eff4eb..1f30419ac 100644 --- a/tests/unit/calendar/core.js +++ b/tests/unit/calendar/core.js @@ -85,12 +85,18 @@ test( "base structure", function() { test( "Localization", function() { expect( 10 ); - var defaultLocale = Globalize.locale(), - element = $( "#calendar" ), + var element = $( "#calendar" ), date = new Date( 2014, 0, 1 ), - initCalendar = function() { + optionsDe = { + locale: "de", + labels: { + "nextText": "Vor", + "prevText": "Zurück" + } + }, + initCalendar = function( options ) { element - .calendar() + .calendar( options ) .calendar( "valueAsDate", date ); }, testLocalization = function( message ) { @@ -108,26 +114,23 @@ test( "Localization", function() { ); equal( element.find( ".ui-calendar-prev" ).text(), - "", message + "header next" + "Vor", message + "header next" ); }; - Globalize.locale( "de" ); - initCalendar(); + initCalendar( optionsDe ); testLocalization( "Init: " ); element.calendar( "destroy" ); - Globalize.locale( defaultLocale.locale ); - initCalendar(); - Globalize.locale( "de" ); - element.calendar( "refresh" ); + initCalendar( {} ); + element + .calendar( "option", optionsDe ) + .calendar( "refresh" ); testLocalization( "After init: " ); - - Globalize.locale( defaultLocale.locale ); }); asyncTest( "keyboard handling", function() { diff --git a/tests/unit/datepicker/common.js b/tests/unit/datepicker/common.js index bd7aca89e..31ab5abef 100644 --- a/tests/unit/datepicker/common.js +++ b/tests/unit/datepicker/common.js @@ -1,17 +1,16 @@ -define( [ - "lib/common", - "ui/datepicker", - "globalize-locales" -], function( common ) { - -common.testWidget( "datepicker", { +TestHelpers.commonWidgetTests( "datepicker", { defaults: { appendTo: null, buttons: [], - classes: {}, - dateFormat: { date: "short" }, disabled: false, eachDay: $.noop, + labels: { + "datePickerRole": "date picker", + "nextText": "Next", + "prevText": "Prev", + "weekHeader": "Wk" + }, + locale: "en", max: null, min: null, numberOfMonths: 1, @@ -31,5 +30,3 @@ common.testWidget( "datepicker", { select: null } }); - -} ); diff --git a/ui/calendar.js b/ui/calendar.js index b773281ab..78eccb51b 100644 --- a/ui/calendar.js +++ b/ui/calendar.js @@ -180,16 +180,18 @@ return $.widget( "ui.calendar", { var globalize = new Globalize( locale ), weekdayShortFormatter = globalize.dateFormatter({ pattern: "EEEEEE" }), weekdayNarrowFormatter = globalize.dateFormatter({ pattern: "EEEEE" }); + this._format = globalize.dateFormatter({ date: "short" }); this._parse = globalize.dateParser({ date: "short" }); this._calendarDateOptions = { - firstDay: globalize.cldr.supplemental.weekData.firstDay(), - formatWeekdayShort: function( date ) { + firstDay: globalize.cldr.supplemental.weekData.firstDay(), + formatWeekdayShort: function( date ) { - // Return the short weekday if its length is < 3. Otherwise, its narrow form. + // Return the short weekday if its length is < 3. Otherwise, its narrow form. var shortWeekday = weekdayShortFormatter( date ); + return shortWeekday.length > 3 ? weekdayNarrowFormatter( date ) : shortWeekday; - }, + }, formatWeekdayFull: globalize.dateFormatter({ pattern: "EEEE" }), formatMonth: globalize.dateFormatter({ pattern: "MMMM" }), formatWeekOfYear: globalize.dateFormatter({ pattern: "w" }), @@ -325,7 +327,7 @@ return $.widget( "ui.calendar", { if ( this.options.showWeek ) { cells += "" + this._getTranslation( "weekHeader" ) + ""; } - for ( i; i < weekDayLength; i++ ) { + for ( ; i < weekDayLength; i++ ) { cells += this._buildGridHeaderCell( weekdays[ i ] ); } @@ -492,6 +494,7 @@ return $.widget( "ui.calendar", { // with the prev and next links would cause loss of focus issues because the links being // interacted with will disappear while focused. refresh: function() { + this.labels = this.options.labels; // Determine which day gridcell to focus after refresh // TODO: Prevent disabled cells from being focused @@ -541,7 +544,7 @@ return $.widget( "ui.calendar", { value: function( value ) { if ( arguments.length ) { - this.valueAsDate( locale.parse( value ) ); + this.valueAsDate( this._parse( value ) ); } else { return this._format( this.option( "value" ) ); } diff --git a/ui/datepicker.js b/ui/datepicker.js index 813978215..df61becb5 100644 --- a/ui/datepicker.js +++ b/ui/datepicker.js @@ -37,7 +37,6 @@ var widget = $.widget( "ui.datepicker", { version: "@VERSION", options: { appendTo: null, - locale: "en", position: { my: "left top", at: "left bottom" @@ -52,8 +51,8 @@ var widget = $.widget( "ui.datepicker", { select: null }, - calendarOptions: [ "buttons", "dateFormat", "disabled", "eachDay", "max", - "min", "numberOfMonths", "showWeek" ], + calendarOptions: [ "buttons", "disabled", "eachDay", "labels", "locale", + "max", "min", "numberOfMonths", "showWeek" ], _create: function() { this.suppressExpandOnFocus = false; @@ -283,6 +282,7 @@ 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({ pattern: "yyyy-MM-dd" });