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"
>
-