From ffada98a8680df780676fad409058bbf70e891dd Mon Sep 17 00:00:00 2001 From: Ezequias Antunes Date: Wed, 29 Apr 2026 11:33:23 -0300 Subject: [PATCH 1/8] Permite gerenciar o select usando o teclado --- src/components/Select.vue | 192 +++++++++++++++++++++++++++----------- 1 file changed, 136 insertions(+), 56 deletions(-) diff --git a/src/components/Select.vue b/src/components/Select.vue index be42d389..568e52eb 100644 --- a/src/components/Select.vue +++ b/src/components/Select.vue @@ -17,17 +17,14 @@ :onkeypress="`return ${allowSearch};`" :placeholder="placeholder" :disabled="disabled" - :readonly="!searchable || !active" + :readonly="!searchable" :support-link-url="supportLinkUrl || linkUrl" :support-link="supportLink || linkText" :floating-label="floatingLabel || mobile" :class="inputClass" :fluid="computedFluid" :ghost - @keydown.enter.prevent="activateSelectionOnEnter" - @keydown.arrow-down.prevent="highlightOnArrowDown" - @keydown.arrow-up.prevent="highlightOnArrowUp" - @keydown="emitKeydown" + @keydown="handleKeydown" @click="activateSelectionOnClick" @update:model-value="filterOptions" @focus="activeSelection" @@ -54,10 +51,16 @@ v-for="(option, index) in localOptions" :key="option.id || option" :ref="(el) => { liRefs[`${option[optionsField]}-${index}`] = el }" - class="option__text" - @mousedown="selectItem" + :class="[ + 'option__text', + { + highlight: index === currentPos, + 'option__text--selected': isSelected(option) + } + ]" + @mousedown="selectItem(index)" @mouseover="highlightOnMouseOver(index)" - @mouseout="unhighlightOnMouseOut()" + @mouseout="currentPos = -1" >