diff --git a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue index dc586639b0..8e03ad9746 100644 --- a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue +++ b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue @@ -81,6 +81,10 @@ const columnToValidate = [UITypes.Email, UITypes.URL, UITypes.PhoneNumber] const onlyNameUpdateOnEditColumns = [UITypes.LinkToAnotherRecord, UITypes.Lookup, UITypes.Rollup, UITypes.Links] +// To close column type dropdown on escape and +// close modal only when the type popup is close +const isColumnTypeOpen = ref(false) + const geoDataToggleCondition = (t: { name: UITypes }) => { if (!appInfo.value.ee) return true @@ -199,6 +203,8 @@ onMounted(() => { }) const handleEscape = (event: KeyboardEvent): void => { + if (isColumnTypeOpen.value) return + if (event.key === 'Escape') emit('cancel') } @@ -206,6 +212,16 @@ const isFieldsTab = computed(() => { return openedViewsTab.value === 'field' }) +const onDropdownChange = (value: boolean) => { + if (value) { + isColumnTypeOpen.value = value + } else { + setTimeout(() => { + isColumnTypeOpen.value = value + }, 300) + } +} + if (props.fromTableExplorer) { watch( formState, @@ -275,6 +291,7 @@ if (props.fromTableExplorer) { class="nc-column-type-input !rounded" :disabled="isKanban || readOnly" dropdown-class-name="nc-dropdown-column-type border-1 !rounded-md border-gray-200" + @dropdown-visible-change="onDropdownChange" @change="onUidtOrIdTypeChange" @dblclick="showDeprecated = !showDeprecated" >