From 8987ac16dba9bf7d4d93d10f87bd1b041bc0d82e Mon Sep 17 00:00:00 2001 From: Lorenz van Herwaarden Date: Fri, 23 May 2025 09:06:48 +0200 Subject: [PATCH] feat(GlFilteredSearch): emit 'change' event whenever token completes --- .../base/filtered_search/filtered_search.spec.js | 14 ++++++++++++++ .../base/filtered_search/filtered_search.vue | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/src/components/base/filtered_search/filtered_search.spec.js b/src/components/base/filtered_search/filtered_search.spec.js index ae5b75934b..e5733b8e1b 100644 --- a/src/components/base/filtered_search/filtered_search.spec.js +++ b/src/components/base/filtered_search/filtered_search.spec.js @@ -442,6 +442,20 @@ describe('Filtered search', () => { wrapper.findComponent(GlFilteredSearchTerm).vm.$emit('submit'); expect(wrapper.emitted('submit')).toBeDefined(); }); + + it('emits "change" event when token is complete', async () => { + createComponent({ + value: ['one', { type: 'faketoken', value: '' }], + }); + + await nextTick(); + wrapper.findComponent(FakeToken).vm.$emit('activate'); + await nextTick(); + + expect(wrapper.emitted('change')).toBeUndefined(); + wrapper.findComponent(FakeToken).vm.$emit('complete'); + expect(wrapper.emitted('change')).toHaveLength(1); + }); }); it('normalizes term tokens to strings on submit', () => { diff --git a/src/components/base/filtered_search/filtered_search.vue b/src/components/base/filtered_search/filtered_search.vue index 1aa77f41bd..065acc611f 100644 --- a/src/components/base/filtered_search/filtered_search.vue +++ b/src/components/base/filtered_search/filtered_search.vue @@ -376,6 +376,10 @@ export default { } else { this.activeTokenIdx = null; } + /** + * Emitted when token is completed + */ + this.$emit('change'); }, submit() { -- GitLab