Hide More Actions tooltip when the menu opens

This commit is contained in:
Simon Knox 2019-01-09 23:46:43 +00:00 committed by Simon Knox
parent 3daa53e821
commit be485a781d
3 changed files with 33 additions and 8 deletions

View File

@ -126,6 +126,11 @@ export default {
onResolve() { onResolve() {
this.$emit('handleResolve'); this.$emit('handleResolve');
}, },
closeTooltip() {
this.$nextTick(() => {
this.$root.$emit('bv::hide::tooltip');
});
},
}, },
}; };
</script> </script>
@ -202,6 +207,7 @@ export default {
title="More actions" title="More actions"
class="note-action-button more-actions-toggle btn btn-transparent" class="note-action-button more-actions-toggle btn btn-transparent"
data-toggle="dropdown" data-toggle="dropdown"
@click="closeTooltip"
> >
<icon css-classes="icon" name="ellipsis_v" /> <icon css-classes="icon" name="ellipsis_v" />
</button> </button>

View File

@ -0,0 +1,5 @@
---
title: Close More Actions tooltip when menu opens
merge_request: 24285
author:
type: fixed

View File

@ -1,5 +1,5 @@
import Vue from 'vue'; import Vue from 'vue';
import { shallowMount, createLocalVue } from '@vue/test-utils'; import { shallowMount, createLocalVue, createWrapper } from '@vue/test-utils';
import createStore from '~/notes/stores'; import createStore from '~/notes/stores';
import noteActions from '~/notes/components/note_actions.vue'; import noteActions from '~/notes/components/note_actions.vue';
import { TEST_HOST } from 'spec/test_constants'; import { TEST_HOST } from 'spec/test_constants';
@ -10,7 +10,7 @@ describe('noteActions', () => {
let store; let store;
let props; let props;
const createWrapper = propsData => { const shallowMountNoteActions = propsData => {
const localVue = createLocalVue(); const localVue = createLocalVue();
return shallowMount(noteActions, { return shallowMount(noteActions, {
store, store,
@ -44,7 +44,7 @@ describe('noteActions', () => {
beforeEach(() => { beforeEach(() => {
store.dispatch('setUserData', userDataMock); store.dispatch('setUserData', userDataMock);
wrapper = createWrapper(props); wrapper = shallowMountNoteActions(props);
}); });
it('should render access level badge', () => { it('should render access level badge', () => {
@ -90,13 +90,27 @@ describe('noteActions', () => {
it('should be possible to delete comment', () => { it('should be possible to delete comment', () => {
expect(wrapper.find('.js-note-delete').exists()).toBe(true); expect(wrapper.find('.js-note-delete').exists()).toBe(true);
}); });
it('closes tooltip when dropdown opens', done => {
wrapper.find('.more-actions-toggle').trigger('click');
const rootWrapper = createWrapper(wrapper.vm.$root);
Vue.nextTick()
.then(() => {
const emitted = Object.keys(rootWrapper.emitted());
expect(emitted).toEqual(['bv::hide::tooltip']);
done();
})
.catch(done.fail);
});
}); });
}); });
describe('user is not logged in', () => { describe('user is not logged in', () => {
beforeEach(() => { beforeEach(() => {
store.dispatch('setUserData', {}); store.dispatch('setUserData', {});
wrapper = createWrapper({ wrapper = shallowMountNoteActions({
...props, ...props,
canDelete: false, canDelete: false,
canEdit: false, canEdit: false,
@ -127,7 +141,7 @@ describe('noteActions', () => {
describe('for showReply = true', () => { describe('for showReply = true', () => {
beforeEach(() => { beforeEach(() => {
wrapper = createWrapper({ wrapper = shallowMountNoteActions({
...props, ...props,
showReply: true, showReply: true,
}); });
@ -142,7 +156,7 @@ describe('noteActions', () => {
describe('for showReply = false', () => { describe('for showReply = false', () => {
beforeEach(() => { beforeEach(() => {
wrapper = createWrapper({ wrapper = shallowMountNoteActions({
...props, ...props,
showReply: false, showReply: false,
}); });
@ -169,7 +183,7 @@ describe('noteActions', () => {
describe('for showReply = true', () => { describe('for showReply = true', () => {
beforeEach(() => { beforeEach(() => {
wrapper = createWrapper({ wrapper = shallowMountNoteActions({
...props, ...props,
showReply: true, showReply: true,
}); });
@ -184,7 +198,7 @@ describe('noteActions', () => {
describe('for showReply = false', () => { describe('for showReply = false', () => {
beforeEach(() => { beforeEach(() => {
wrapper = createWrapper({ wrapper = shallowMountNoteActions({
...props, ...props,
showReply: false, showReply: false,
}); });