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

Commit 504e653

Browse files
committed
feat(timepicker): use uib- prefix
Closes #4505
1 parent 66819c2 commit 504e653

File tree

3 files changed

+103
-37
lines changed

3 files changed

+103
-37
lines changed

src/timepicker/docs/demo.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div ng-controller="TimepickerDemoCtrl">
22

3-
<timepicker ng-model="mytime" ng-change="changed()" hour-step="hstep" minute-step="mstep" show-meridian="ismeridian"></timepicker>
3+
<uib-timepicker ng-model="mytime" ng-change="changed()" hour-step="hstep" minute-step="mstep" show-meridian="ismeridian"></uib-timepicker>
44

55
<pre class="alert alert-info">Time is: {{mytime | date:'shortTime' }}</pre>
66

src/timepicker/test/timepicker.spec.js

+67-31
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe('timepicker directive', function() {
99
$rootScope.time = newTime(14, 40);
1010
$templateCache = _$templateCache_;
1111

12-
element = $compile('<timepicker ng-model="time"></timepicker>')($rootScope);
12+
element = $compile('<uib-timepicker ng-model="time"></uib-timepicker>')($rootScope);
1313
$rootScope.$digest();
1414
}));
1515

@@ -107,7 +107,7 @@ describe('timepicker directive', function() {
107107

108108
it('has `selected` current time when model is initially cleared', function() {
109109
$rootScope.time = null;
110-
element = $compile('<timepicker ng-model="time"></timepicker>')($rootScope);
110+
element = $compile('<uib-timepicker ng-model="time"></uib-timepicker>')($rootScope);
111111
$rootScope.$digest();
112112

113113
expect($rootScope.time).toBe(null);
@@ -272,7 +272,7 @@ describe('timepicker directive', function() {
272272
});
273273

274274
it('changes only the time part when minutes change', function() {
275-
element = $compile('<timepicker ng-model="time" minute-step="15"></timepicker>')($rootScope);
275+
element = $compile('<uib-timepicker ng-model="time" minute-step="15"></uib-timepicker>')($rootScope);
276276
$rootScope.time = newTime(0, 0);
277277
$rootScope.$digest();
278278

@@ -468,7 +468,7 @@ describe('timepicker directive', function() {
468468
$rootScope.hstep = 2;
469469
$rootScope.mstep = 30;
470470
$rootScope.time = newTime(14, 0);
471-
element = $compile('<timepicker ng-model="time" hour-step="hstep" minute-step="mstep"></timepicker>')($rootScope);
471+
element = $compile('<uib-timepicker ng-model="time" hour-step="hstep" minute-step="mstep"></uib-timepicker>')($rootScope);
472472
$rootScope.$digest();
473473
});
474474

@@ -631,7 +631,7 @@ describe('timepicker directive', function() {
631631
beforeEach(function() {
632632
$rootScope.meridian = false;
633633
$rootScope.time = newTime(14, 10);
634-
element = $compile('<timepicker ng-model="time" show-meridian="meridian"></timepicker>')($rootScope);
634+
element = $compile('<uib-timepicker ng-model="time" show-meridian="meridian"></uib-timepicker>')($rootScope);
635635
$rootScope.$digest();
636636
});
637637

@@ -663,7 +663,7 @@ describe('timepicker directive', function() {
663663

664664
it('handles correctly initially empty model on parent element', function() {
665665
$rootScope.time = null;
666-
element = $compile('<span ng-model="time"><timepicker show-meridian="meridian"></timepicker></span>')($rootScope);
666+
element = $compile('<span ng-model="time"><uib-timepicker show-meridian="meridian"></uib-timepicker></span>')($rootScope);
667667
$rootScope.$digest();
668668

669669
expect($rootScope.time).toBe(null);
@@ -673,7 +673,7 @@ describe('timepicker directive', function() {
673673
describe('`meridians` attribute', function() {
674674
beforeEach(inject(function() {
675675
$rootScope.meridiansArray = ['am', 'pm'];
676-
element = $compile('<timepicker ng-model="time" meridians="meridiansArray"></timepicker>')($rootScope);
676+
element = $compile('<uib-timepicker ng-model="time" meridians="meridiansArray"></uib-timepicker>')($rootScope);
677677
$rootScope.$digest();
678678
}));
679679

@@ -691,7 +691,7 @@ describe('timepicker directive', function() {
691691
describe('`readonly-input` attribute', function() {
692692
beforeEach(inject(function() {
693693
$rootScope.meridiansArray = ['am', 'pm'];
694-
element = $compile('<timepicker ng-model="time" readonly-input="true"></timepicker>')($rootScope);
694+
element = $compile('<uib-timepicker ng-model="time" readonly-input="true"></uib-timepicker>')($rootScope);
695695
$rootScope.$digest();
696696
}));
697697

@@ -704,17 +704,17 @@ describe('timepicker directive', function() {
704704

705705
describe('setting timepickerConfig steps', function() {
706706
var originalConfig = {};
707-
beforeEach(inject(function(_$compile_, _$rootScope_, timepickerConfig) {
708-
angular.extend(originalConfig, timepickerConfig);
709-
timepickerConfig.hourStep = 2;
710-
timepickerConfig.minuteStep = 10;
711-
timepickerConfig.showMeridian = false;
712-
element = $compile('<timepicker ng-model="time"></timepicker>')($rootScope);
707+
beforeEach(inject(function(_$compile_, _$rootScope_, uibTimepickerConfig) {
708+
angular.extend(originalConfig, uibTimepickerConfig);
709+
uibTimepickerConfig.hourStep = 2;
710+
uibTimepickerConfig.minuteStep = 10;
711+
uibTimepickerConfig.showMeridian = false;
712+
element = $compile('<uib-timepicker ng-model="time"></uib-timepicker>')($rootScope);
713713
$rootScope.$digest();
714714
}));
715-
afterEach(inject(function(timepickerConfig) {
715+
afterEach(inject(function(uibTimepickerConfig) {
716716
// return it to the original state
717-
angular.extend(timepickerConfig, originalConfig);
717+
angular.extend(uibTimepickerConfig, originalConfig);
718718
}));
719719

720720
it('does not affect the initial value', function() {
@@ -751,16 +751,16 @@ describe('timepicker directive', function() {
751751

752752
describe('setting timepickerConfig meridian labels', function() {
753753
var originalConfig = {};
754-
beforeEach(inject(function(_$compile_, _$rootScope_, timepickerConfig) {
755-
angular.extend(originalConfig, timepickerConfig);
756-
timepickerConfig.meridians = ['π.μ.', 'μ.μ.'];
757-
timepickerConfig.showMeridian = true;
758-
element = $compile('<timepicker ng-model="time"></timepicker>')($rootScope);
754+
beforeEach(inject(function(_$compile_, _$rootScope_, uibTimepickerConfig) {
755+
angular.extend(originalConfig, uibTimepickerConfig);
756+
uibTimepickerConfig.meridians = ['π.μ.', 'μ.μ.'];
757+
uibTimepickerConfig.showMeridian = true;
758+
element = $compile('<uib-timepicker ng-model="time"></uib-timepicker>')($rootScope);
759759
$rootScope.$digest();
760760
}));
761-
afterEach(inject(function(timepickerConfig) {
761+
afterEach(inject(function(uibTimepickerConfig) {
762762
// return it to the original state
763-
angular.extend(timepickerConfig, originalConfig);
763+
angular.extend(uibTimepickerConfig, originalConfig);
764764
}));
765765

766766
it('displays correctly', function() {
@@ -921,7 +921,7 @@ describe('timepicker directive', function() {
921921

922922
it('handles 12/24H mode change', function() {
923923
$rootScope.meridian = true;
924-
element = $compile('<timepicker ng-model="time" show-meridian="meridian"></timepicker>')($rootScope);
924+
element = $compile('<uib-timepicker ng-model="time" show-meridian="meridian"></uib-timepicker>')($rootScope);
925925
$rootScope.$digest();
926926

927927
var el = getHoursInputEl();
@@ -941,7 +941,7 @@ describe('timepicker directive', function() {
941941

942942
describe('when model is not a Date', function() {
943943
beforeEach(inject(function() {
944-
element = $compile('<timepicker ng-model="time"></timepicker>')($rootScope);
944+
element = $compile('<uib-timepicker ng-model="time"></uib-timepicker>')($rootScope);
945945
}));
946946

947947
it('should not be invalid when the model is null', function() {
@@ -993,7 +993,7 @@ describe('timepicker directive', function() {
993993
describe('use with `ng-required` directive', function() {
994994
beforeEach(inject(function() {
995995
$rootScope.time = null;
996-
element = $compile('<timepicker ng-model="time" ng-required="true"></timepicker>')($rootScope);
996+
element = $compile('<uib-timepicker ng-model="time" ng-required="true"></uib-timepicker>')($rootScope);
997997
$rootScope.$digest();
998998
}));
999999

@@ -1012,7 +1012,7 @@ describe('timepicker directive', function() {
10121012
beforeEach(inject(function() {
10131013
$rootScope.changeHandler = jasmine.createSpy('changeHandler');
10141014
$rootScope.time = new Date();
1015-
element = $compile('<timepicker ng-model="time" ng-change="changeHandler()"></timepicker>')($rootScope);
1015+
element = $compile('<uib-timepicker ng-model="time" ng-change="changeHandler()"></uib-timepicker>')($rootScope);
10161016
$rootScope.$digest();
10171017
}));
10181018

@@ -1040,7 +1040,7 @@ describe('timepicker directive', function() {
10401040
describe('when used with min', function() {
10411041
var changeInputValueTo;
10421042
beforeEach(inject(function($sniffer) {
1043-
element = $compile('<timepicker ng-model="time" min="min"></timepicker>')($rootScope);
1043+
element = $compile('<uib-timepicker ng-model="time" min="min"></uib-timepicker>')($rootScope);
10441044
$rootScope.$digest();
10451045
changeInputValueTo = function(inputEl, value) {
10461046
inputEl.val(value);
@@ -1698,7 +1698,7 @@ describe('timepicker directive', function() {
16981698
it('should allow custom templates', function() {
16991699
$templateCache.put('foo/bar.html', '<div>baz</div>');
17001700

1701-
element = $compile('<timepicker ng-model="time" template-url="foo/bar.html"></timepicker>')($rootScope);
1701+
element = $compile('<uib-timepicker ng-model="time" template-url="foo/bar.html"></uib-timepicker>')($rootScope);
17021702
$rootScope.$digest();
17031703
expect(element[0].tagName.toLowerCase()).toBe('div');
17041704
expect(element.html()).toBe('baz');
@@ -1707,10 +1707,10 @@ describe('timepicker directive', function() {
17071707
it('should expose the controller on the view', function() {
17081708
$templateCache.put('template/timepicker/timepicker.html', '<div><div>{{timepicker.text}}</div></div>');
17091709

1710-
element = $compile('<timepicker ng-model="time"></timepicker>')($rootScope);
1710+
element = $compile('<uib-timepicker ng-model="time"></uib-timepicker>')($rootScope);
17111711
$rootScope.$digest();
17121712

1713-
var ctrl = element.controller('timepicker');
1713+
var ctrl = element.controller('uibTimepicker');
17141714
expect(ctrl).toBeDefined();
17151715

17161716
ctrl.text = 'foo';
@@ -1720,3 +1720,39 @@ describe('timepicker directive', function() {
17201720
});
17211721
});
17221722
});
1723+
1724+
/* Deprecation tests below */
1725+
1726+
describe('timepicker deprecation', function() {
1727+
beforeEach(module('ui.bootstrap.timepicker'));
1728+
beforeEach(module('ngAnimateMock'));
1729+
beforeEach(module('template/timepicker/timepicker.html'));
1730+
1731+
it('should suppress warning', function() {
1732+
module(function($provide) {
1733+
$provide.value('$timepickerSuppressWarning', true);
1734+
});
1735+
1736+
inject(function($compile, $log, $rootScope) {
1737+
spyOn($log, 'warn');
1738+
1739+
$rootScope.time = new Date().setHours(14, 40, 0, 0);
1740+
var element = '<timepicker ng-model="time"></timepicker>';
1741+
element = $compile(element)($rootScope);
1742+
$rootScope.$digest();
1743+
expect($log.warn.calls.count()).toBe(0);
1744+
});
1745+
});
1746+
1747+
it('should give warning by default', inject(function($compile, $log, $rootScope) {
1748+
spyOn($log, 'warn');
1749+
1750+
$rootScope.time = new Date().setHours(14, 40, 0, 0);
1751+
var element = '<timepicker ng-model="time"></timepicker>';
1752+
element = $compile(element)($rootScope);
1753+
$rootScope.$digest();
1754+
1755+
expect($log.warn.calls.count()).toBe(1);
1756+
expect($log.warn.calls.argsFor(0)).toEqual(['timepicker is now deprecated. Use uib-timepicker instead.']);
1757+
}));
1758+
});

src/timepicker/timepicker.js

+35-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
angular.module('ui.bootstrap.timepicker', [])
22

3-
.constant('timepickerConfig', {
3+
.constant('uibTimepickerConfig', {
44
hourStep: 1,
55
minuteStep: 1,
66
showMeridian: true,
@@ -11,7 +11,7 @@ angular.module('ui.bootstrap.timepicker', [])
1111
showSpinners: true
1212
})
1313

14-
.controller('TimepickerController', ['$scope', '$attrs', '$parse', '$log', '$locale', 'timepickerConfig', function($scope, $attrs, $parse, $log, $locale, timepickerConfig) {
14+
.controller('UibTimepickerController', ['$scope', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $attrs, $parse, $log, $locale, timepickerConfig) {
1515
var selected = new Date(),
1616
ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl
1717
meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS;
@@ -359,11 +359,11 @@ angular.module('ui.bootstrap.timepicker', [])
359359
};
360360
}])
361361

362-
.directive('timepicker', function() {
362+
.directive('uibTimepicker', function() {
363363
return {
364364
restrict: 'EA',
365-
require: ['timepicker', '?^ngModel'],
366-
controller:'TimepickerController',
365+
require: ['uibTimepicker', '?^ngModel'],
366+
controller: 'UibTimepickerController',
367367
controllerAs: 'timepicker',
368368
replace: true,
369369
scope: {},
@@ -379,3 +379,33 @@ angular.module('ui.bootstrap.timepicker', [])
379379
}
380380
};
381381
});
382+
383+
/* Deprecated timepicker below */
384+
385+
angular.module('ui.bootstrap.timepicker')
386+
387+
.value('$timepickerSuppressWarning', false)
388+
389+
.directive('timepicker', ['$log', '$timepickerSuppressWarning', function($log, $timepickerSuppressWarning) {
390+
return {
391+
restrict: 'EA',
392+
require: ['timepicker', '?^ngModel'],
393+
controller: 'UibTimepickerController',
394+
controllerAs: 'timepicker',
395+
replace: true,
396+
scope: {},
397+
templateUrl: function(element, attrs) {
398+
return attrs.templateUrl || 'template/timepicker/timepicker.html';
399+
},
400+
link: function(scope, element, attrs, ctrls) {
401+
if (!$timepickerSuppressWarning) {
402+
$log.warn('timepicker is now deprecated. Use uib-timepicker instead.');
403+
}
404+
var timepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];
405+
406+
if (ngModelCtrl) {
407+
timepickerCtrl.init(ngModelCtrl, element.find('input'));
408+
}
409+
}
410+
};
411+
}]);

0 commit comments

Comments
 (0)