Propagate type changes to panel

This commit is contained in:
Sergio Crisostomo 2017-09-14 07:57:01 +02:00
parent ccb6a76d90
commit 9ffdd6daea
2 changed files with 55 additions and 1 deletions

View file

@ -23,6 +23,17 @@ export default {
},
value: {}
},
watch: {
type(value){
const typeMap = {
year: 'year',
month: 'month',
date: 'day'
};
const validType = oneOf(value, Object.keys(typeMap));
if (validType) this.Panel.selectionMode = typeMap[value];
}
},
created () {
if (!this.currentValue) {
if (this.type === 'daterange' || this.type === 'datetimerange') {

View file

@ -1,4 +1,4 @@
import { createVue, destroyVM, stringToDate } from '../util';
import { createVue, destroyVM, stringToDate, promissedTick } from '../util';
describe('DatePicker.vue', () => {
let vm;
@ -76,6 +76,49 @@ describe('DatePicker.vue', () => {
});
});
it('should change type progamatically', done => {
vm = createVue({
template: '<Date-picker :type="dateType"></Date-picker>',
data() {
return {
dateType: 'month'
};
}
});
const picker = vm.$children[0];
picker.handleIconClick();
vm.$nextTick(() => {
const panel = vm.$el.querySelector('.ivu-picker-panel-content');
const dayPanel = panel.querySelector('[class="ivu-date-picker-cells"]');
const monthPanel = panel.querySelector('.ivu-date-picker-cells-month');
const yearPanel = panel.querySelector('.ivu-date-picker-cells-year');
expect(dayPanel.style.display).to.equal('none');
expect(monthPanel.style.display).to.equal('');
expect(yearPanel.style.display).to.equal('none');
expect(picker.type).to.equal('month');
expect(picker.selectionMode).to.equal('month');
vm.dateType = 'year';
promissedTick(picker)
.then(() => {
expect(picker.type).to.equal('year');
expect(picker.selectionMode).to.equal('year');
vm.dateType = 'date';
return promissedTick(picker);
})
.then(() => {
expect(picker.type).to.equal('date');
expect(picker.selectionMode).to.equal('day');
done();
});
});
});
it('should have same behavior after a reset as before the reset', done => {
vm = createVue(`
<Date-picker type="datetimerange"></Date-picker>