Skip to content

Commit bf2bdb9

Browse files
committed
Only call triggers after updating state
1 parent 071c2d3 commit bf2bdb9

File tree

4 files changed

+30
-21
lines changed

4 files changed

+30
-21
lines changed

DateTime.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,10 @@ var Datetime = createClass({
212212
showView: function( view ) {
213213
var me = this;
214214
return function() {
215-
me.state.currentView !== view && me.props.onViewModeChange( view );
216-
me.setState({ currentView: view });
215+
var previousView = me.state.currentView;
216+
me.setState({ currentView: view }, function() {
217+
previousView !== view && me.props.onViewModeChange( view );
218+
});
217219
};
218220
},
219221

@@ -228,34 +230,37 @@ var Datetime = createClass({
228230
me.setState({
229231
viewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value'), 10) ).startOf( type ),
230232
currentView: nextViews[ type ]
233+
}, function() {
234+
me.props.onViewModeChange( nextViews[ type ] );
231235
});
232-
me.props.onViewModeChange( nextViews[ type ] );
233236
};
234237
},
235238

236239
subtractTime: function( amount, type, toSelected ) {
237240
var me = this;
238241
return function() {
239-
me.props.onNavigateBack( amount, type );
240-
me.updateTime( 'subtract', amount, type, toSelected );
242+
me.updateTime( 'subtract', amount, type, toSelected, function() {
243+
me.props.onNavigateBack( amount, type );
244+
});
241245
};
242246
},
243247

244248
addTime: function( amount, type, toSelected ) {
245249
var me = this;
246250
return function() {
247-
me.props.onNavigateForward( amount, type );
248-
me.updateTime( 'add', amount, type, toSelected );
251+
me.updateTime( 'add', amount, type, toSelected, function() {
252+
me.props.onNavigateForward( amount, type );
253+
});
249254
};
250255
},
251256

252-
updateTime: function( op, amount, type, toSelected ) {
257+
updateTime: function( op, amount, type, toSelected, callback ) {
253258
var update = {},
254259
date = toSelected ? 'selectedDate' : 'viewDate';
255260

256261
update[ date ] = this.state[ date ].clone()[ op ]( amount, type );
257262

258-
this.setState( update );
263+
this.setState( update, callback );
259264
},
260265

261266
allowedSetTime: ['hours', 'minutes', 'seconds', 'milliseconds'],

dist/react-datetime.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,9 @@ return /******/ (function(modules) { // webpackBootstrap
273273
showView: function( view ) {
274274
var me = this;
275275
return function() {
276-
me.state.currentView !== view && me.props.onViewModeChange( view );
277-
me.setState({ currentView: view });
276+
me.setState({ currentView: view }, function() {
277+
me.state.currentView !== view && me.props.onViewModeChange( view );
278+
});
278279
};
279280
},
280281

@@ -289,34 +290,37 @@ return /******/ (function(modules) { // webpackBootstrap
289290
me.setState({
290291
viewDate: me.state.viewDate.clone()[ type ]( parseInt(e.target.getAttribute('data-value'), 10) ).startOf( type ),
291292
currentView: nextViews[ type ]
293+
}, function() {
294+
me.props.onViewModeChange( nextViews[ type ] );
292295
});
293-
me.props.onViewModeChange( nextViews[ type ] );
294296
};
295297
},
296298

297299
subtractTime: function( amount, type, toSelected ) {
298300
var me = this;
299301
return function() {
300-
me.props.onNavigateBack( amount, type );
301-
me.updateTime( 'subtract', amount, type, toSelected );
302+
me.updateTime( 'subtract', amount, type, toSelected, function() {
303+
me.props.onNavigateBack( amount, type );
304+
});
302305
};
303306
},
304307

305308
addTime: function( amount, type, toSelected ) {
306309
var me = this;
307310
return function() {
308-
me.props.onNavigateForward( amount, type );
309-
me.updateTime( 'add', amount, type, toSelected );
311+
me.updateTime( 'add', amount, type, toSelected, function() {
312+
me.props.onNavigateForward( amount, type );
313+
});
310314
};
311315
},
312316

313-
updateTime: function( op, amount, type, toSelected ) {
317+
updateTime: function( op, amount, type, toSelected, callback ) {
314318
var update = {},
315319
date = toSelected ? 'selectedDate' : 'viewDate';
316320

317321
update[ date ] = this.state[ date ].clone()[ op ]( amount, type );
318322

319-
this.setState( update );
323+
this.setState( update, callback );
320324
},
321325

322326
allowedSetTime: ['hours', 'minutes', 'seconds', 'milliseconds'],

dist/react-datetime.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-datetime.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)