diff --git a/packages/nc-gui/components/cell/Checkbox.vue b/packages/nc-gui/components/cell/Checkbox.vue index efa710d539..155bd454d6 100644 --- a/packages/nc-gui/components/cell/Checkbox.vue +++ b/packages/nc-gui/components/cell/Checkbox.vue @@ -63,7 +63,7 @@ const vModel = computed({ set: (val: any) => emits('update:modelValue', isMssql(column?.value?.source_id) ? +val : val), }) -function onClick(force?: boolean, event?: MouseEvent) { +function onClick(force?: boolean, event?: MouseEvent | KeyboardEvent) { if ( (event?.target as HTMLElement)?.classList?.contains('nc-checkbox') || (event?.target as HTMLElement)?.closest('.nc-checkbox') @@ -75,6 +75,19 @@ function onClick(force?: boolean, event?: MouseEvent) { } } +const keydownEnter = (e: KeyboardEvent) => { + if (!isSurveyForm.value) { + onClick(true, e) + e.stopPropagation() + } +} +const keydownSpace = (e: KeyboardEvent) => { + if (isSurveyForm.value) { + onClick(true, e) + e.stopPropagation() + } +} + useSelectedCellKeyupListener(active, (e) => { switch (e.key) { case 'Enter': @@ -101,8 +114,8 @@ useSelectedCellKeyupListener(active, (e) => { }" :tabindex="readOnly ? -1 : 0" @click="onClick(false, $event)" - @keydown.enter.stop="!isSurveyForm ? onClick(true, $event) : undefined" - @keydown.space.stop="isSurveyForm ? onClick(true, $event) : undefined" + @keydown.enter="keydownEnter" + @keydown.space="keydownSpace($event)" >
{