@@ -6,7 +6,8 @@ export default Ember.Mixin.create({
66 setupBootstrapDatepicker : function ( ) {
77 var self = this ,
88 element = this . $ ( ) ,
9- value = this . get ( 'value' ) ;
9+ value = this . get ( 'value' ) ,
10+ dates = [ ] ;
1011
1112 element .
1213 datepicker ( {
@@ -39,19 +40,18 @@ export default Ember.Mixin.create({
3940 if ( this . get ( 'multidate' ) ) {
4041 // split datesIsoString by multidate separator
4142 var multidateSeparator = this . get ( 'multidateSeparator' ) || ',' ;
42- var dateIsoStrings = value . split ( multidateSeparator ) ;
43+ var isoDates = value . split ( multidateSeparator ) ;
44+
4345 // generate array of date objecs
44- var dateObjects = dateIsoStrings . map ( function ( dateIsoString ) {
45- return new Date ( dateIsoString ) ;
46+ dates = isoDates . map ( function ( date ) {
47+ return self . _resetTime ( new Date ( date ) ) ;
4648 } ) ;
47- // set datepickers internal date
48- element . datepicker ( 'setDates' , dateObjects ) ;
49- // update datepicker view
50- element . datepicker ( 'update' ) ;
5149 }
5250 else {
53- element . datepicker ( 'update' , new Date ( value ) ) ;
51+ dates = [ self . _resetTime ( new Date ( value ) ) ] ;
5452 }
53+ element . datepicker .
54+ apply ( element , Array . prototype . concat . call ( [ 'update' ] , dates ) ) ;
5555 }
5656 } . on ( 'didInsertElement' ) ,
5757
@@ -75,5 +75,34 @@ export default Ember.Mixin.create({
7575 }
7676
7777 this . set ( 'value' , isoDate ) ;
78+ } ,
79+
80+ didChangeValue : function ( ) {
81+ var self = this ,
82+ element = this . $ ( ) ,
83+ value = this . get ( 'value' ) ,
84+ dates = [ ] ;
85+
86+ if ( Ember . isArray ( value ) ) {
87+ dates = value . map ( function ( date ) {
88+ return self . _resetTime ( new Date ( date ) ) ;
89+ } ) ;
90+ } else {
91+ dates = [ self . _resetTime ( new Date ( value ) ) ] ;
92+ }
93+
94+ element . datepicker .
95+ apply ( element , Array . prototype . concat . call ( [ 'update' ] , dates ) ) ;
96+ } . observes ( 'value' ) ,
97+
98+ // HACK: Have to reset time to 00:00:00 because of the bug in
99+ // bootstrap-datepicker
100+ // Issue: http://git.io/qH7Hlg
101+ _resetTime : function ( date ) {
102+ date . setHours ( 0 ) ;
103+ date . setMinutes ( 0 ) ;
104+ date . setSeconds ( 0 ) ;
105+
106+ return date ;
78107 }
79108} ) ;
0 commit comments