mirror of https://github.com/ElemeFE/element
commit
7181b36543
|
@ -30,6 +30,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
v-show="showSeconds"
|
||||||
@mouseenter="emitSelectRange('seconds')"
|
@mouseenter="emitSelectRange('seconds')"
|
||||||
@mousewheel="handleScroll('second')"
|
@mousewheel="handleScroll('second')"
|
||||||
class="el-time-spinner__wrapper"
|
class="el-time-spinner__wrapper"
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
date.setHours(date.getHours() + 1);
|
date.setHours(date.getHours() + 1);
|
||||||
const maxTime = time[1] || date;
|
const maxTime = time[1] || date;
|
||||||
|
|
||||||
|
if (minTime > maxTime) return clacTime();
|
||||||
return { minTime, maxTime };
|
return { minTime, maxTime };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
|
|
||||||
<script type="text/babel">
|
<script type="text/babel">
|
||||||
import { limitRange } from '../util';
|
import { limitRange } from '../util';
|
||||||
import Vue from 'vue';
|
|
||||||
import { $t } from '../util';
|
import { $t } from '../util';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -86,8 +85,8 @@
|
||||||
minutes: 0,
|
minutes: 0,
|
||||||
seconds: 0,
|
seconds: 0,
|
||||||
selectableRange: [],
|
selectableRange: [],
|
||||||
currentDate: this.$options.defaultValue || this.date,
|
currentDate: this.$options.defaultValue || this.date || new Date(),
|
||||||
currentVisible: this.visible,
|
currentVisible: this.visible || false,
|
||||||
width: this.pickerWidth || 0
|
width: this.pickerWidth || 0
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -140,9 +139,6 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
!this.currentDate && Vue.set(this, 'currentDate', new Date());
|
|
||||||
!this.currentVisible && Vue.set(this, 'currentVisible', false);
|
|
||||||
|
|
||||||
this.hours = this.currentDate.getHours();
|
this.hours = this.currentDate.getHours();
|
||||||
this.minutes = this.currentDate.getMinutes();
|
this.minutes = this.currentDate.getMinutes();
|
||||||
this.seconds = this.currentDate.getSeconds();
|
this.seconds = this.currentDate.getSeconds();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { createTest } from '../util';
|
import { createTest, destroyVM } from '../util';
|
||||||
import TimePicker from 'packages/time-picker';
|
import TimePicker from 'packages/time-picker';
|
||||||
import Vue from 'vue';
|
import Vue from 'vue';
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ describe('TimePicker', () => {
|
||||||
});
|
});
|
||||||
expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
|
expect(vm.$el.querySelector('input').getAttribute('placeholder')).to.equal('test');
|
||||||
expect(vm.$el.querySelector('input').getAttribute('readonly')).to.ok;
|
expect(vm.$el.querySelector('input').getAttribute('readonly')).to.ok;
|
||||||
|
destroyVM(vm);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('format', () => {
|
it('format', () => {
|
||||||
|
@ -18,6 +19,7 @@ describe('TimePicker', () => {
|
||||||
value: new Date(2016, 9, 10, 18, 40)
|
value: new Date(2016, 9, 10, 18, 40)
|
||||||
});
|
});
|
||||||
expect(vm.$el.querySelector('input').value).to.equal('18-40-00');
|
expect(vm.$el.querySelector('input').value).to.equal('18-40-00');
|
||||||
|
destroyVM(vm);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('default value', done => {
|
it('default value', done => {
|
||||||
|
@ -37,6 +39,7 @@ describe('TimePicker', () => {
|
||||||
expect(times[0].textContent).to.equal('18');
|
expect(times[0].textContent).to.equal('18');
|
||||||
expect(times[1].textContent).to.equal('40');
|
expect(times[1].textContent).to.equal('40');
|
||||||
expect(times[2].textContent).to.equal('0');
|
expect(times[2].textContent).to.equal('0');
|
||||||
|
destroyVM(vm);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -70,11 +73,80 @@ describe('TimePicker', () => {
|
||||||
expect(date.getHours()).to.equal(4);
|
expect(date.getHours()).to.equal(4);
|
||||||
expect(date.getMinutes()).to.equal(36);
|
expect(date.getMinutes()).to.equal(36);
|
||||||
expect(date.getSeconds()).to.equal(20);
|
expect(date.getSeconds()).to.equal(20);
|
||||||
|
destroyVM(vm);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('click cancel button', done => {
|
||||||
|
const vm = createTest(TimePicker, true);
|
||||||
|
const input = vm.$el.querySelector('input');
|
||||||
|
|
||||||
|
input.blur();
|
||||||
|
input.focus();
|
||||||
|
|
||||||
|
Vue.nextTick(_ => {
|
||||||
|
vm.picker.$el.querySelector('.el-time-panel__btn.cancel').click();
|
||||||
|
|
||||||
|
Vue.nextTick(_ => {
|
||||||
|
expect(vm.picker.currentDate).to.empty;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('click confirm button', done => {
|
||||||
|
const vm = createTest(TimePicker, true);
|
||||||
|
const input = vm.$el.querySelector('input');
|
||||||
|
|
||||||
|
input.blur();
|
||||||
|
input.focus();
|
||||||
|
|
||||||
|
Vue.nextTick(_ => {
|
||||||
|
vm.picker.$el.querySelector('.el-time-panel__btn.confirm').click();
|
||||||
|
|
||||||
|
Vue.nextTick(_ => {
|
||||||
|
expect(vm.picker.currentDate).to.exist;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('set format', done => {
|
||||||
|
const vm = createTest(TimePicker, {
|
||||||
|
pickerOptions: {
|
||||||
|
format: 'HH:mm'
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
const input = vm.$el.querySelector('input');
|
||||||
|
input.blur();
|
||||||
|
input.focus();
|
||||||
|
|
||||||
|
setTimeout(_ => {
|
||||||
|
expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
|
||||||
|
destroyVM(vm);
|
||||||
|
done();
|
||||||
|
}, 20);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('set format to empty', done => {
|
||||||
|
const vm = createTest(TimePicker, {
|
||||||
|
pickerOptions: {
|
||||||
|
format: ''
|
||||||
|
}
|
||||||
|
}, true);
|
||||||
|
const input = vm.$el.querySelector('input');
|
||||||
|
input.blur();
|
||||||
|
input.focus();
|
||||||
|
|
||||||
|
setTimeout(_ => {
|
||||||
|
expect(vm.picker.$el.querySelectorAll('.el-time-spinner__wrapper')[2].style.display).to.equal('none');
|
||||||
|
destroyVM(vm);
|
||||||
|
done();
|
||||||
|
}, 20);
|
||||||
|
});
|
||||||
|
|
||||||
it('selectableRange', done => {
|
it('selectableRange', done => {
|
||||||
const vm = createTest(TimePicker, {
|
const vm = createTest(TimePicker, {
|
||||||
pickerOptions: {
|
pickerOptions: {
|
||||||
|
@ -95,7 +167,60 @@ describe('TimePicker', () => {
|
||||||
|
|
||||||
hoursElm.querySelectorAll('.disabled')[0].click();
|
hoursElm.querySelectorAll('.disabled')[0].click();
|
||||||
expect(disabledHours).to.not.include.members([18, 19, 20]);
|
expect(disabledHours).to.not.include.members([18, 19, 20]);
|
||||||
|
destroyVM(vm);
|
||||||
done();
|
done();
|
||||||
}, 150);
|
}, 20);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('TimePicker(range)', () => {
|
||||||
|
let vm;
|
||||||
|
beforeEach(done => {
|
||||||
|
vm = createTest(TimePicker, {
|
||||||
|
isRange: true,
|
||||||
|
value: [new Date(2016, 9, 10, 18, 40), new Date(2016, 9, 10, 19, 40)]
|
||||||
|
}, true);
|
||||||
|
const input = vm.$el.querySelector('input');
|
||||||
|
|
||||||
|
input.blur();
|
||||||
|
input.focus();
|
||||||
|
input.blur();
|
||||||
|
setTimeout(done, 20);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => destroyVM(vm));
|
||||||
|
|
||||||
|
it('create', () => {
|
||||||
|
expect(vm.picker.$el.querySelectorAll('.el-time-range-picker__cell')).to.length(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('default value', () => {
|
||||||
|
expect(vm.picker.minTime.getTime()).to.equal(new Date(2016, 9, 10, 18, 40).getTime());
|
||||||
|
expect(vm.picker.maxTime.getTime()).to.equal(new Date(2016, 9, 10, 19, 40).getTime());
|
||||||
|
});
|
||||||
|
|
||||||
|
it('minTime < maxTime', done => {
|
||||||
|
const vm2 = createTest(TimePicker, {
|
||||||
|
isRange: true,
|
||||||
|
value: [new Date(2016, 9, 10, 21, 40), new Date(2016, 9, 10, 20, 40)]
|
||||||
|
}, true);
|
||||||
|
const input = vm2.$el.querySelector('input');
|
||||||
|
|
||||||
|
input.blur();
|
||||||
|
input.focus();
|
||||||
|
input.blur();
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(vm2.picker.maxTime > vm2.picker.minTime).to.true;
|
||||||
|
destroyVM(vm2);
|
||||||
|
done();
|
||||||
|
}, 20);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('click cancel button', done => {
|
||||||
|
vm.picker.$el.querySelector('.el-time-panel__btn.cancel').click();
|
||||||
|
Vue.nextTick(_ => {
|
||||||
|
expect(vm.picker.currentDate).to.empty;
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue