diff --git a/packages/nc-gui/components/cell/Url.vue b/packages/nc-gui/components/cell/Url.vue index 11a2ba5562..9fc73bccfb 100644 --- a/packages/nc-gui/components/cell/Url.vue +++ b/packages/nc-gui/components/cell/Url.vue @@ -79,7 +79,7 @@ watch( v-if="editEnabled" :ref="focus" v-model="vModel" - class="outline-none text-sm w-full px-2" + class="outline-none text-sm w-full px-2 bg-transparent h-full" @blur="editEnabled = false" @keydown.down.stop @keydown.left.stop diff --git a/packages/nc-gui/components/dlg/TableRename.vue b/packages/nc-gui/components/dlg/TableRename.vue index 212f02e3cb..9462044a00 100644 --- a/packages/nc-gui/components/dlg/TableRename.vue +++ b/packages/nc-gui/components/dlg/TableRename.vue @@ -80,9 +80,7 @@ const validators = computed(() => { return reject(new Error('Leading or trailing whitespace not allowed in table name')) } if ( - !(tables?.value || []).every( - (t) => t.id === tableMeta.id || t.table_name.toLowerCase() !== (value || '').toLowerCase(), - ) + !(tables?.value || []).every((t) => t.id === tableMeta.id || t.title.toLowerCase() !== (value || '').toLowerCase()) ) { return reject(new Error('Duplicate table alias')) } diff --git a/packages/nc-gui/components/smartsheet/Cell.vue b/packages/nc-gui/components/smartsheet/Cell.vue index 23cd2bf49d..784cbaf1a0 100644 --- a/packages/nc-gui/components/smartsheet/Cell.vue +++ b/packages/nc-gui/components/smartsheet/Cell.vue @@ -76,6 +76,8 @@ provide(ReadonlyInj, readOnly) const isForm = inject(IsFormInj, ref(false)) +const isGrid = inject(IsGridInj, ref(false)) + const isPublic = inject(IsPublicInj, ref(false)) const isLocked = inject(IsLockedInj, ref(false)) @@ -123,14 +125,26 @@ const syncAndNavigate = (dir: NavigateDir, e: KeyboardEvent) => { if (!isForm.value) e.stopImmediatePropagation() } + +const isNumericField = computed(() => { + return ( + isInt(column.value, abstractType.value) || + isFloat(column.value, abstractType.value) || + isDecimal(column.value) || + isCurrency(column.value) || + isPercent(column.value) || + isDuration(column.value) + ) +}) + + diff --git a/packages/nc-gui/components/smartsheet/Grid.vue b/packages/nc-gui/components/smartsheet/Grid.vue index f16aca60f2..44996558ba 100644 --- a/packages/nc-gui/components/smartsheet/Grid.vue +++ b/packages/nc-gui/components/smartsheet/Grid.vue @@ -97,7 +97,6 @@ const contextMenuTarget = ref<{ row: number; col: number } | null>(null) const expandedFormDlg = ref(false) const expandedFormRow = ref() const expandedFormRowState = ref>() -const tbodyEl = ref() const gridWrapper = ref() const tableHead = ref() @@ -182,6 +181,8 @@ const { clearSelectedRange, copyValue, isCellActive, + tbodyEl, + resetSelectedRange, } = useMultiSelect( meta, fields, @@ -279,6 +280,17 @@ const { if (isAddingEmptyRowAllowed) { $e('c:shortcut', { key: 'ALT + R' }) addEmptyRow() + activeCell.row = data.value.length - 1 + activeCell.col = 0 + resetSelectedRange() + makeEditable(data.value[activeCell.row], fields.value[activeCell.col]) + nextTick(() => { + ;( + document.querySelector('td.cell.active')?.querySelector('input,textarea') as + | HTMLInputElement + | HTMLTextAreaElement + )?.focus() + }) } break } @@ -702,7 +714,7 @@ const rowHeight = computed(() => { @contextmenu="showContextMenu" > - +