@@ -27,13 +27,15 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
27
27
var self = this ,
28
28
ngModelCtrl = { $setViewValue : angular . noop } , // nullModelCtrl;
29
29
ngModelOptions = { } ,
30
- watchListeners = [ ] ;
30
+ watchListeners = [ ] ,
31
+ optionsUsed = ! ! $attrs . datepickerOptions ;
31
32
32
33
// Modes chain
33
34
this . modes = [ 'day' , 'month' , 'year' ] ;
34
35
35
- if ( $attrs . datepickerOptions ) {
36
- angular . forEach ( [
36
+ if ( optionsUsed ) {
37
+ [
38
+ 'datepickerMode' ,
37
39
'formatDay' ,
38
40
'formatDayHeader' ,
39
41
'formatDayTitle' ,
@@ -50,15 +52,21 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
50
52
'startingDay' ,
51
53
'yearColumns' ,
52
54
'yearRows'
53
- ] , function ( key ) {
55
+ ] . forEach ( function ( key ) {
54
56
switch ( key ) {
57
+ case 'datepickerMode' :
58
+ $scope . datepickerMode = angular . isDefined ( $scope . datepickerOptions . datepickerMode ) ?
59
+ $scope . datepickerOptions . datepickerMode : datepickerConfig . datepickerMode ;
60
+ break ;
55
61
case 'formatDay' :
56
62
case 'formatDayHeader' :
57
63
case 'formatDayTitle' :
58
64
case 'formatMonth' :
59
65
case 'formatMonthTitle' :
60
66
case 'formatYear' :
61
- self [ key ] = angular . isDefined ( $scope . datepickerOptions [ key ] ) ? $interpolate ( $scope . datepickerOptions [ key ] ) ( $scope . $parent ) : datepickerConfig [ key ] ;
67
+ self [ key ] = angular . isDefined ( $scope . datepickerOptions [ key ] ) ?
68
+ $interpolate ( $scope . datepickerOptions [ key ] ) ( $scope . $parent ) :
69
+ datepickerConfig [ key ] ;
62
70
break ;
63
71
case 'showWeeks' :
64
72
case 'shortcutPropagation' :
@@ -103,9 +111,10 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
103
111
if ( $scope . datepickerOptions [ key ] ) {
104
112
$scope . $watch ( function ( ) { return $scope . datepickerOptions [ key ] ; } , function ( value ) {
105
113
self [ key ] = $scope [ key ] = angular . isDefined ( value ) ? value : datepickerOptions [ key ] ;
106
- if ( key === 'minMode' && self . modes . indexOf ( $scope . datepickerMode ) < self . modes . indexOf ( self [ key ] ) ||
107
- key === 'maxMode' && self . modes . indexOf ( $scope . datepickerMode ) > self . modes . indexOf ( self [ key ] ) ) {
114
+ if ( key === 'minMode' && self . modes . indexOf ( $scope . datepickerOptions . datepickerMode ) < self . modes . indexOf ( self [ key ] ) ||
115
+ key === 'maxMode' && self . modes . indexOf ( $scope . datepickerOptions . datepickerMode ) > self . modes . indexOf ( self [ key ] ) ) {
108
116
$scope . datepickerMode = self [ key ] ;
117
+ $scope . datepickerOptions . datepickerMode = self [ key ] ;
109
118
}
110
119
} ) ;
111
120
} else {
@@ -217,10 +226,15 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
217
226
} else {
218
227
this . activeDate = new Date ( ) ;
219
228
}
229
+
230
+ if ( $attrs . datepickerMode && datepickerAttributeWarning ) {
231
+ $log . warn ( 'uib-datepicker datepickerMode attribute usage is deprecated, use datepicker-options attribute instead' ) ;
232
+ }
233
+
234
+ $scope . datepickerMode = $scope . datepickerMode ||
235
+ datepickerConfig . datepickerMode ;
220
236
}
221
237
222
- $scope . datepickerMode = $scope . datepickerMode ||
223
- datepickerConfig . datepickerMode ;
224
238
$scope . uniqueId = 'datepicker-' + $scope . $id + '-' + Math . floor ( Math . random ( ) * 10000 ) ;
225
239
226
240
$scope . disabled = angular . isDefined ( $attrs . disabled ) || false ;
@@ -331,7 +345,8 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
331
345
ngModelCtrl . $render ( ) ;
332
346
} else {
333
347
self . activeDate = date ;
334
- $scope . datepickerMode = self . modes [ self . modes . indexOf ( $scope . datepickerMode ) - 1 ] ;
348
+ setMode ( self . modes [ self . modes . indexOf ( $scope . datepickerMode ) - 1 ] ) ;
349
+
335
350
$scope . $emit ( 'uib:datepicker.mode' ) ;
336
351
}
337
352
} ;
@@ -351,7 +366,8 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
351
366
return ;
352
367
}
353
368
354
- $scope . datepickerMode = self . modes [ self . modes . indexOf ( $scope . datepickerMode ) + direction ] ;
369
+ setMode ( self . modes [ self . modes . indexOf ( $scope . datepickerMode ) + direction ] ) ;
370
+
355
371
$scope . $emit ( 'uib:datepicker.mode' ) ;
356
372
} ;
357
373
@@ -396,6 +412,13 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootst
396
412
watchListeners . shift ( ) ( ) ;
397
413
}
398
414
} ) ;
415
+
416
+ function setMode ( mode ) {
417
+ $scope . datepickerMode = mode ;
418
+ if ( optionsUsed ) {
419
+ $scope . datepickerOptions . datepickerMode = mode ;
420
+ }
421
+ }
399
422
} ] )
400
423
401
424
. controller ( 'UibDaypickerController' , [ '$scope' , '$element' , 'dateFilter' , function ( scope , $element , dateFilter ) {
@@ -833,10 +856,6 @@ function($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $
833
856
834
857
if ( $scope . datepickerOptions ) {
835
858
datepickerEl . attr ( 'datepicker-options' , 'datepickerOptions' ) ;
836
-
837
- if ( angular . isDefined ( $scope . datepickerOptions . datepickerMode ) ) {
838
- datepickerEl . attr ( 'datepicker-mode' , 'datepickerOptions.datepickerMode' ) ;
839
- }
840
859
}
841
860
842
861
angular . forEach ( [ 'minMode' , 'maxMode' , 'datepickerMode' , 'shortcutPropagation' ] , function ( key ) {
0 commit comments