Skip to content
This repository was archived by the owner on May 29, 2019. It is now read-only.

Commit 8b1ab79

Browse files
committed
feat(timepicker): default meridian labels based on locale
Closes #1150
1 parent 79f836c commit 8b1ab79

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

src/timepicker/docs/readme.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ All settings can be provided as attributes in the `<timepicker>` or globally con
2121
Whether to display 12H or 24H mode.
2222

2323
* `meridians`
24-
_(Defaults: ['AM', 'PM'])_ :
25-
Meridian labels
24+
_(Defaults: null)_ :
25+
Meridian labels based on locale. To override you must supply an array like ['AM', 'PM'].
2626

2727
* `readonly-input`
2828
_(Defaults: false)_ :

src/timepicker/test/timepicker.spec.js

+18
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,24 @@ describe('timepicker directive', function () {
578578
});
579579
});
580580

581+
describe('`meridians` attribute', function() {
582+
beforeEach(inject(function() {
583+
$rootScope.meridiansArray = ['am', 'pm'];
584+
element = $compile('<timepicker ng-model="$parent.time" meridians="meridiansArray"></timepicker>')($rootScope);
585+
$rootScope.$digest();
586+
}));
587+
588+
it('displays correctly', function () {
589+
expect(getTimeState()[2]).toBe('pm');
590+
});
591+
592+
it('toggles correctly', function () {
593+
$rootScope.time = newTime(2, 40);
594+
$rootScope.$digest();
595+
expect(getTimeState()[2]).toBe('am');
596+
});
597+
});
598+
581599
describe('setting timepickerConfig steps', function() {
582600
var originalConfig = {};
583601
beforeEach(inject(function(_$compile_, _$rootScope_, timepickerConfig) {

src/timepicker/timepicker.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ angular.module('ui.bootstrap.timepicker', [])
44
hourStep: 1,
55
minuteStep: 1,
66
showMeridian: true,
7-
meridians: ['AM', 'PM'],
7+
meridians: null,
88
readonlyInput: false,
99
mousewheel: true
1010
})
1111

12-
.directive('timepicker', ['$parse', '$log', 'timepickerConfig', function ($parse, $log, timepickerConfig) {
12+
.directive('timepicker', ['$parse', '$log', 'timepickerConfig', '$locale', function ($parse, $log, timepickerConfig, $locale) {
1313
return {
1414
restrict: 'EA',
1515
require:'?^ngModel',
@@ -21,7 +21,8 @@ angular.module('ui.bootstrap.timepicker', [])
2121
return; // do nothing if no ng-model
2222
}
2323

24-
var selected = new Date(), meridians = timepickerConfig.meridians;
24+
var selected = new Date(),
25+
meridians = angular.isDefined(attrs.meridians) ? scope.$parent.$eval(attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS;
2526

2627
var hourStep = timepickerConfig.hourStep;
2728
if (attrs.hourStep) {

0 commit comments

Comments
 (0)