|
@@ -1,5 +1,12 @@
|
|
|
import { createVue, triggerEvent, destroyVM } from '../util';
|
|
|
|
|
|
+const keyDown = (el, keyCode) => {
|
|
|
+ const evt = document.createEvent('Events');
|
|
|
+ evt.initEvent('keydown', true, true);
|
|
|
+ evt.keyCode = keyCode;
|
|
|
+ el.dispatchEvent(evt);
|
|
|
+};
|
|
|
+
|
|
|
describe('Dropdown', () => {
|
|
|
let vm;
|
|
|
afterEach(() => {
|
|
@@ -182,4 +189,102 @@ describe('Dropdown', () => {
|
|
|
}, 300);
|
|
|
}, 300);
|
|
|
});
|
|
|
+ it('triggerElm keydown', done => {
|
|
|
+ vm = createVue({
|
|
|
+ template: `
|
|
|
+ <el-dropdown ref="dropdown">
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ 下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
|
|
|
+ <el-dropdown-item>黄金糕</el-dropdown-item>
|
|
|
+ <el-dropdown-item>狮子头</el-dropdown-item>
|
|
|
+ <el-dropdown-item>螺蛳粉</el-dropdown-item>
|
|
|
+ <el-dropdown-item>双皮奶</el-dropdown-item>
|
|
|
+ <el-dropdown-item>蚵仔煎</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ `
|
|
|
+ }, true);
|
|
|
+ let dropdown = vm.$refs.dropdown;
|
|
|
+ let dropdownElm = dropdown.$el;
|
|
|
+ let triggerElm = dropdownElm.children[0];
|
|
|
+ keyDown(triggerElm, 13); // enter
|
|
|
+ setTimeout(() => {
|
|
|
+ expect(dropdown.visible).to.be.true;
|
|
|
+ keyDown(triggerElm, 27); // esc
|
|
|
+ setTimeout(() => {
|
|
|
+ expect(dropdown.visible).to.be.false;
|
|
|
+ done();
|
|
|
+ }, 300);
|
|
|
+ }, 400);
|
|
|
+ });
|
|
|
+ it('dropdown menu keydown', done => {
|
|
|
+ vm = createVue({
|
|
|
+ template: `
|
|
|
+ <el-dropdown ref="dropdown">
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ 下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
|
|
|
+ <el-dropdown-item command="a">黄金糕</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="b">狮子头</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="c">螺蛳粉</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="d">双皮奶</el-dropdown-item>
|
|
|
+ <el-dropdown-item command="e">蚵仔煎</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ `
|
|
|
+ }, true);
|
|
|
+ let dropdown = vm.$refs.dropdown;
|
|
|
+ let dropdownElm = dropdown.$el;
|
|
|
+ let triggerElm = dropdownElm.children[0];
|
|
|
+ let dropdownMenu = dropdown.dropdownElm;
|
|
|
+
|
|
|
+ triggerEvent(triggerElm, 'mouseenter');
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ expect(dropdown.visible).to.be.true;
|
|
|
+ keyDown(dropdownMenu, 40); // down
|
|
|
+ setTimeout(() => {
|
|
|
+ keyDown(dropdownMenu, 13); // enter
|
|
|
+ setTimeout(() => {
|
|
|
+ expect(dropdown.visible).to.be.false;
|
|
|
+ done();
|
|
|
+ }, 100);
|
|
|
+ }, 100);
|
|
|
+ }, 300);
|
|
|
+ });
|
|
|
+ it('updatePopper', done => {
|
|
|
+ vm = createVue({
|
|
|
+ template: `
|
|
|
+ <el-dropdown ref="dropdown">
|
|
|
+ <span class="el-dropdown-link">
|
|
|
+ 下拉菜单<i class="el-icon-caret-bottom el-icon-right"></i>
|
|
|
+ </span>
|
|
|
+ <el-dropdown-menu slot="dropdown" class="dropdown-test-creat">
|
|
|
+ <el-dropdown-item>黄金糕</el-dropdown-item>
|
|
|
+ <el-dropdown-item>狮子头</el-dropdown-item>
|
|
|
+ <el-dropdown-item>螺蛳粉</el-dropdown-item>
|
|
|
+ <el-dropdown-item>双皮奶</el-dropdown-item>
|
|
|
+ <el-dropdown-item>蚵仔煎</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </el-dropdown>
|
|
|
+ `
|
|
|
+ }, true);
|
|
|
+ let dropdown = vm.$refs.dropdown;
|
|
|
+ let dropdownElm = dropdown.$el;
|
|
|
+ let triggerElm = dropdownElm.children[0];
|
|
|
+
|
|
|
+ triggerEvent(triggerElm, 'mouseenter');
|
|
|
+ setTimeout(() => {
|
|
|
+ const zIndex1 = document.querySelector('.el-dropdown-menu').style.zIndex;
|
|
|
+ dropdown.broadcast('ElDropdownMenu', 'updatePopper');
|
|
|
+ setTimeout(() => {
|
|
|
+ const zIndex2 = document.querySelector('.el-dropdown-menu').style.zIndex;
|
|
|
+ expect(zIndex2 > zIndex1).to.be.true;
|
|
|
+ done();
|
|
|
+ }, 100);
|
|
|
+ }, 300);
|
|
|
+ });
|
|
|
});
|