Skip to content

Commit ebdbfd6

Browse files
Added matching categories to the search results of ElementsPanel for better accessibility. (#264)
* Added Matching Categories in search results of ElementsPanel for better accessibility * Moved up No elements found above matching categories to maintain consistancy * modified condition for rendering no elements found --------- Co-authored-by: Arnabdaz <[email protected]>
1 parent af41067 commit ebdbfd6

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

src/components/Panels/ElementsPanel/ElementsPanel.vue

+53-1
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,48 @@
4242
<img :src="element.imgURL" :alt="element.name" />
4343
</div>
4444
</div>
45+
<v-expansion-panels
46+
v-if="elementInput && searchCategories().length"
47+
id="menu"
48+
class="accordion"
49+
variant="accordion"
50+
>
51+
<v-expansion-panel
52+
v-for="category in searchCategories()"
53+
:key="category[0]"
54+
>
55+
<v-expansion-panel-title>
56+
{{
57+
$t(
58+
'simulator.panel_body.circuit_elements.expansion_panel_title.' +
59+
category[0]
60+
)
61+
}}
62+
</v-expansion-panel-title>
63+
<v-expansion-panel-text eager>
64+
<div class="panel customScroll">
65+
<div
66+
v-for="element in category[1]"
67+
:id="element.name"
68+
:key="element"
69+
:title="element.label"
70+
class="icon logixModules"
71+
@click="createElement(element.name)"
72+
@mousedown="createElement(element.name)"
73+
@mouseover="getTooltipText(element.name)"
74+
@mouseleave="tooltipText = 'null'"
75+
>
76+
<img
77+
:src="element.imgURL"
78+
:alt="element.name"
79+
/>
80+
</div>
81+
</div>
82+
</v-expansion-panel-text>
83+
</v-expansion-panel>
84+
</v-expansion-panels>
4585
<div
46-
v-if="elementInput && !searchElements().length"
86+
v-if="elementInput && !searchElements().length && !searchCategories().length"
4787
class="search-results"
4888
>
4989
{{ $t('simulator.panel_body.circuit_elements.search_result') }}
@@ -163,6 +203,18 @@ function searchElements() {
163203
return finalResult
164204
}
165205
206+
function searchCategories() {
207+
const result = panelData.filter((category) => {
208+
const categoryName = category[0];
209+
const categoryNameWords = categoryName.split(' ');
210+
211+
return categoryNameWords.some((word) =>
212+
word.toLowerCase().startsWith(elementInput.value.toLowerCase())
213+
);
214+
})
215+
return result;
216+
}
217+
166218
function createElement(elementName) {
167219
if (simulationArea.lastSelected && simulationArea.lastSelected.newElement)
168220
simulationArea.lastSelected.delete()

0 commit comments

Comments
 (0)