From 8f8cc3a51677d88d6296c36d213965ee20dcf08e Mon Sep 17 00:00:00 2001 From: Beatriz Mendes Date: Wed, 25 Jan 2023 15:26:48 +0100 Subject: [PATCH] feat(popup-menu): allow additional search terms Related to https://github.com/bpmn-io/bpmn-js/issues/1816 --- lib/features/popup-menu/PopupMenuComponent.js | 3 ++- .../popup-menu/PopupMenuComponentSpec.js | 22 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/features/popup-menu/PopupMenuComponent.js b/lib/features/popup-menu/PopupMenuComponent.js index 36fab8a7d..34399b502 100644 --- a/lib/features/popup-menu/PopupMenuComponent.js +++ b/lib/features/popup-menu/PopupMenuComponent.js @@ -93,7 +93,8 @@ export default function PopupMenuComponent(props) { const search = [ entry.description || '', - entry.label || '' + entry.label || '', + entry.search || '' ] .join('---') .toLowerCase(); diff --git a/test/spec/features/popup-menu/PopupMenuComponentSpec.js b/test/spec/features/popup-menu/PopupMenuComponentSpec.js index 2d7ed3a43..647ab8cf2 100644 --- a/test/spec/features/popup-menu/PopupMenuComponentSpec.js +++ b/test/spec/features/popup-menu/PopupMenuComponentSpec.js @@ -439,7 +439,7 @@ describe('features/popup-menu - ', function() { { id: '2', label: 'Entry 2' }, { id: '3', label: 'Entry 3' }, { id: '4', label: 'Entry 4' }, - { id: '5', label: 'Entry 5' }, + { id: '5', label: 'Entry 5', search: 'foo' }, { id: 'some_entry_id', label: 'Last' } ]; @@ -525,6 +525,26 @@ describe('features/popup-menu - ', function() { }); + it('should search additional "search" terms', async function() { + + // given + createPopupMenu({ container, entries, search: true }); + + var searchInput = domQuery('.djs-popup-search input', container); + searchInput.value = entries[4].search; + + // when + searchInput.dispatchEvent(keyDown('ArrowUp')); + searchInput.dispatchEvent(keyUp('ArrowUp')); + + await whenStable(); + + // then + expect(domQueryAll('.entry', container)).to.have.length(1); + expect(domQuery('.entry .djs-popup-label', container).textContent).to.eql('Entry 5'); + }); + + it('should not search id', async function() { // given