diff --git a/packages/nc-gui/composables/useMultiSelect/index.ts b/packages/nc-gui/composables/useMultiSelect/index.ts index dd4e645609..a4c1024df5 100644 --- a/packages/nc-gui/composables/useMultiSelect/index.ts +++ b/packages/nc-gui/composables/useMultiSelect/index.ts @@ -10,6 +10,7 @@ import { extractPkFromRow, extractSdkResponseErrorMsg, isMac, + isTypableInputColumn, message, reactive, ref, @@ -248,22 +249,7 @@ export function useMultiSelect( const columnObj = unref(fields)[selectedCell.col] - if ( - (!unref(editEnabled) || - [ - UITypes.DateTime, - UITypes.Date, - UITypes.Year, - UITypes.Time, - UITypes.Lookup, - UITypes.Rollup, - UITypes.Formula, - UITypes.Attachment, - UITypes.Checkbox, - UITypes.Rating, - ].includes(columnObj.uidt as UITypes)) && - (isMac() ? e.metaKey : e.ctrlKey) - ) { + if ((!unref(editEnabled) || !isTypableInputColumn(columnObj)) && (isMac() ? e.metaKey : e.ctrlKey)) { switch (e.keyCode) { // copy - ctrl/cmd +c case 67: @@ -350,7 +336,7 @@ export function useMultiSelect( // Update not allowed for table which doesn't have primary Key return message.info(t('msg.info.updateNotAllowedWithoutPK')) } - if (makeEditable(rowObj, columnObj) && columnObj.title) { + if (isTypableInputColumn(columnObj) && makeEditable(rowObj, columnObj) && columnObj.title) { rowObj.row[columnObj.title] = '' } // editEnabled = true diff --git a/packages/nc-gui/utils/columnUtils.ts b/packages/nc-gui/utils/columnUtils.ts index 565498e2c6..54569a8cea 100644 --- a/packages/nc-gui/utils/columnUtils.ts +++ b/packages/nc-gui/utils/columnUtils.ts @@ -190,4 +190,33 @@ const getUniqueColumnName = (initName: string, columns: ColumnType[]) => { return name } -export { uiTypes, getUIDTIcon, getUniqueColumnName, isColumnRequiredAndNull, isColumnRequired, isVirtualColRequired } +const isTypableInputColumn = (colOrUidt: ColumnType | UITypes) => { + let uidt: UITypes + if (typeof colOrUidt === 'object') { + uidt = colOrUidt.uidt as UITypes + } else { + uidt = colOrUidt + } + return [ + UITypes.LongText, + UITypes.SingleLineText, + UITypes.Number, + UITypes.PhoneNumber, + UITypes.Email, + UITypes.Decimal, + UITypes.Currency, + UITypes.Percent, + UITypes.Duration, + UITypes.JSON, + ].includes(uidt) +} + +export { + uiTypes, + isTypableInputColumn, + getUIDTIcon, + getUniqueColumnName, + isColumnRequiredAndNull, + isColumnRequired, + isVirtualColRequired, +}