Skip to content

Commit cad86f3

Browse files
authoredOct 20, 2016
Merge pull request adopted-ember-addons#108 from IcarusWorks/fix-min-max-date
Wraps set min/max dates later so they get fired correctly.
2 parents 5279de1 + c2e2fd8 commit cad86f3

File tree

2 files changed

+55
-12
lines changed

2 files changed

+55
-12
lines changed
 

‎addon/mixins/pikaday.js

+14-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
import Ember from 'ember';
33
import moment from 'moment';
44

5-
const { isPresent } = Ember;
5+
const {
6+
isPresent,
7+
run,
8+
} = Ember;
69
const assign = Ember.assign || Ember.merge;
710

811
export default Ember.Mixin.create({
@@ -32,10 +35,10 @@ export default Ember.Mixin.create({
3235
field: this.get('field'),
3336
container: this.get('pikadayContainer'),
3437
bound: this.get('pikadayContainer') ? false : true,
35-
onOpen: Ember.run.bind(this, this.onPikadayOpen),
36-
onClose: Ember.run.bind(this, this.onPikadayClose),
37-
onSelect: Ember.run.bind(this, this.onPikadaySelect),
38-
onDraw: Ember.run.bind(this, this.onPikadayRedraw),
38+
onOpen: run.bind(this, this.onPikadayOpen),
39+
onClose: run.bind(this, this.onPikadayClose),
40+
onSelect: run.bind(this, this.onPikadaySelect),
41+
onDraw: run.bind(this, this.onPikadayRedraw),
3942
firstDay: (typeof firstDay !== 'undefined') ? parseInt(firstDay, 10) : 1,
4043
format: this.get('format') || 'DD.MM.YYYY',
4144
yearRange: this.determineYearRange(),
@@ -87,13 +90,17 @@ export default Ember.Mixin.create({
8790

8891
setMinDate: function() {
8992
if (this.get('minDate')) {
90-
this.get('pikaday').setMinDate(this.get('minDate'));
93+
run.later(() => {
94+
this.get('pikaday').setMinDate(this.get('minDate'));
95+
});
9196
}
9297
},
9398

9499
setMaxDate: function() {
95100
if (this.get('maxDate')) {
96-
this.get('pikaday').setMaxDate(this.get('maxDate'));
101+
run.later(() => {
102+
this.get('pikaday').setMaxDate(this.get('maxDate'));
103+
});
97104
}
98105
},
99106

‎tests/integration/components/pikaday-input-test.js

+41-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import { moduleForComponent, test } from 'ember-qunit';
22
import hbs from 'htmlbars-inline-precompile';
33
import { openDatepicker } from 'ember-pikaday/helpers/pikaday';
4+
import Ember from 'ember';
5+
6+
const later = Ember.run.later;
7+
8+
const {
9+
run,
10+
} = Ember;
411

512
const getFirstWeekendDayNumber = function() {
613
let date = new Date();
@@ -15,7 +22,20 @@ function closePikaday(context) {
1522
}
1623

1724
moduleForComponent('pikaday-input', 'Integration | Component | pikaday input', {
18-
integration: true
25+
integration: true,
26+
beforeEach() {
27+
Ember.run.later = function(ctx, fn) {
28+
if (typeof fn === 'function') {
29+
Ember.run.bind(ctx, fn)();
30+
} else {
31+
ctx();
32+
}
33+
};
34+
},
35+
36+
afterEach() {
37+
Ember.run.later = later;
38+
},
1939
});
2040

2141
test('it is an input tag', function(assert) {
@@ -120,7 +140,10 @@ test('set min date', function(assert) {
120140
tomorrow.setDate(tomorrow.getDate() + 1);
121141
this.set('tomorrow', tomorrow);
122142
this.render(hbs`{{pikaday-input minDate=tomorrow}}`);
123-
this.$('input').click();
143+
144+
run(() => {
145+
this.$('input').click();
146+
});
124147

125148
assert.ok($('.is-today').hasClass('is-disabled'));
126149
});
@@ -130,25 +153,38 @@ test('set max date', function(assert) {
130153
yesterday.setDate(yesterday.getDate() - 1);
131154
this.set('yesterday', yesterday);
132155
this.render(hbs`{{pikaday-input maxDate=yesterday}}`);
133-
this.$('input').click();
156+
157+
run(() => {
158+
this.$('input').click();
159+
});
134160

135161
assert.ok($('.is-today').hasClass('is-disabled'));
136162
});
137163

138164
test('set new date value with a new min date', function(assert) {
139165
var tommorow = new Date(2010, 7, 10);
166+
140167
this.set('tommorow', tommorow);
141168
this.render(hbs`{{pikaday-input value=tommorow minDate=tommorow}}`);
142-
this.set('tommorow', new Date(2010, 7, 9));
169+
170+
run(() => {
171+
this.set('tommorow', new Date(2010, 7, 9));
172+
});
173+
143174
assert.equal(this.$('input').val(), '09.08.2010');
144175
});
145176

146177

147178
test('set new date value with a new max date', function(assert) {
148179
var tommorow = new Date(2010, 7, 10);
180+
149181
this.set('tommorow', tommorow);
150182
this.render(hbs`{{pikaday-input value=tommorow maxDate=tommorow}}`);
151-
this.set('tommorow', new Date(2010, 7, 11));
183+
184+
run(() => {
185+
this.set('tommorow', new Date(2010, 7, 11));
186+
});
187+
152188
assert.equal(this.$('input').val(), '11.08.2010');
153189
});
154190

0 commit comments

Comments
 (0)