DateTimePicker: changeToNow cheks disabledDate (#9470)

pull/9474/head
Jiewei Qian 2018-01-25 19:16:10 +08:00 committed by 杨奕
parent 8e466dda90
commit 1b59561e3f
2 changed files with 86 additions and 59 deletions

View File

@ -333,8 +333,12 @@
}, },
changeToNow() { changeToNow() {
// NOTE: not a permanent solution
// consider disable "now" button in the future
if (!this.disabledDate || !this.disabledDate(new Date())) {
this.date = new Date(); this.date = new Date();
this.emit(this.date); this.emit(this.date);
}
}, },
confirm() { confirm() {

View File

@ -1025,65 +1025,27 @@ describe('DatePicker', () => {
}); });
}); });
describe('default value', () => { it('now button: can not choose disabled date', done => {
it('single', done => {
let defaultValue = '2000-10-01';
let expectValue = [new Date(2000, 9, 1), new Date(2000, 9, 2)];
vm = createVue({ vm = createVue({
template: '<el-date-picker type="daterange" v-model="value" ref="compo" :default-value="defaultValue" />', template: '<el-date-picker type="datetime" v-model="value" ref="compo" :pickerOptions="pickerOptions" />',
data() { data() {
return { return {
value: '', value: '',
defaultValue pickerOptions: {
disabledDate() { return true; }
}
}; };
} }
}, true); }, true);
vm.$refs.compo.$el.querySelector('input').focus();
vm.$el.querySelector('input').focus();
setTimeout(_ => { setTimeout(_ => {
const $el = vm.$refs.compo.picker.$el; // click now button
const defaultEls = $el.querySelectorAll('.el-date-table td.default'); vm.$refs.compo.picker.$el.querySelector('.el-picker-panel__footer .el-button--text').click();
expect(defaultEls.length).to.equal(1);
defaultEls[0].click();
setTimeout(_ => { setTimeout(_ => {
$el.querySelector('.el-date-table td.default + td').click(); expect(vm.value).to.equal('');
setTimeout(_ => {
expect(vm.value).to.eql(expectValue);
done(); done();
}, DELAY); }, DELAY);
}, DELAY); }, DELAY);
}, DELAY);
});
it('array', done => {
let defaultValue = ['2000-01-01', '2000-02-01'];
let expectValue = [new Date(2000, 0, 1), new Date(2000, 1, 1)];
vm = createVue({
template: '<el-date-picker type="daterange" v-model="value" ref="compo" :default-value="defaultValue" />',
data() {
return {
value: '',
defaultValue
};
}
}, true);
vm.$el.querySelector('input').focus();
setTimeout(_ => {
const defaultEls = vm.$refs.compo.picker.$el.querySelectorAll('.el-date-table td.default');
expect(defaultEls.length).to.equal(2);
defaultEls[0].click();
setTimeout(_ => {
defaultEls[1].click();
setTimeout(_ => {
expect(vm.value).to.eql(expectValue);
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
}); });
}); });
@ -1260,6 +1222,67 @@ describe('DatePicker', () => {
}, DELAY); }, DELAY);
}, DELAY); }, DELAY);
}); });
describe('default value', () => {
it('single', done => {
let defaultValue = '2000-10-01';
let expectValue = [new Date(2000, 9, 1), new Date(2000, 9, 2)];
vm = createVue({
template: '<el-date-picker type="daterange" v-model="value" ref="compo" :default-value="defaultValue" />',
data() {
return {
value: '',
defaultValue
};
}
}, true);
vm.$el.querySelector('input').focus();
setTimeout(_ => {
const $el = vm.$refs.compo.picker.$el;
const defaultEls = $el.querySelectorAll('.el-date-table td.default');
expect(defaultEls.length).to.equal(1);
defaultEls[0].click();
setTimeout(_ => {
$el.querySelector('.el-date-table td.default + td').click();
setTimeout(_ => {
expect(vm.value).to.eql(expectValue);
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
it('array', done => {
let defaultValue = ['2000-01-01', '2000-02-01'];
let expectValue = [new Date(2000, 0, 1), new Date(2000, 1, 1)];
vm = createVue({
template: '<el-date-picker type="daterange" v-model="value" ref="compo" :default-value="defaultValue" />',
data() {
return {
value: '',
defaultValue
};
}
}, true);
vm.$el.querySelector('input').focus();
setTimeout(_ => {
const defaultEls = vm.$refs.compo.picker.$el.querySelectorAll('.el-date-table td.default');
expect(defaultEls.length).to.equal(2);
defaultEls[0].click();
setTimeout(_ => {
defaultEls[1].click();
setTimeout(_ => {
expect(vm.value).to.eql(expectValue);
done();
}, DELAY);
}, DELAY);
}, DELAY);
});
});
}); });
describe('type:datetimerange', () => { describe('type:datetimerange', () => {