diff --git a/packages/nc-gui/components/cell/MultiSelect.vue b/packages/nc-gui/components/cell/MultiSelect.vue index 9fe19858b0..d57f4490da 100644 --- a/packages/nc-gui/components/cell/MultiSelect.vue +++ b/packages/nc-gui/components/cell/MultiSelect.vue @@ -16,6 +16,7 @@ import { useProject, watch, } from '#imports' +import { useSelectedCellKeyupListener } from '~/composables/useSelectedCellKeyupListener' import MdiCloseCircle from '~icons/mdi/close-circle' interface Props { @@ -73,13 +74,13 @@ const selectedTitles = computed(() => ? typeof modelValue === 'string' ? isMysql ? modelValue.split(',').sort((a, b) => { - const opa = options.value.find((el) => el.title === a) - const opb = options.value.find((el) => el.title === b) - if (opa && opb) { - return opa.order! - opb.order! - } - return 0 - }) + const opa = options.value.find((el) => el.title === a) + const opb = options.value.find((el) => el.title === b) + if (opa && opb) { + return opa.order! - opb.order! + } + return 0 + }) : modelValue.split(',') : modelValue : [], @@ -93,9 +94,13 @@ const handleKeys = (e: KeyboardEvent) => { break case 'ArrowDown': case 'ArrowUp': + e.stopPropagation() + break case 'Enter': + isOpen.value = true e.stopPropagation() break + } } @@ -135,11 +140,17 @@ watch( watch(isOpen, (n, _o) => { if (!n) aselect.value?.$el.blur() }) + +useEventListener(document, 'keydown', (e) => { + if (active.value && e.key === 'Enter') { + isOpen.value = true + } +})