Browse Source

Merge pull request #4556 from nocodb/fix/4493-avoid-clearing-data

fix(gui): avoid clearing cell data if it's a non-typable column
pull/4350/head
Raju Udava 2 years ago committed by GitHub
parent
commit
965c928a3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      packages/nc-gui/composables/useMultiSelect/index.ts
  2. 31
      packages/nc-gui/utils/columnUtils.ts

20
packages/nc-gui/composables/useMultiSelect/index.ts

@ -10,6 +10,7 @@ import {
extractPkFromRow, extractPkFromRow,
extractSdkResponseErrorMsg, extractSdkResponseErrorMsg,
isMac, isMac,
isTypableInputColumn,
message, message,
reactive, reactive,
ref, ref,
@ -248,22 +249,7 @@ export function useMultiSelect(
const columnObj = unref(fields)[selectedCell.col] const columnObj = unref(fields)[selectedCell.col]
if ( if ((!unref(editEnabled) || !isTypableInputColumn(columnObj)) && (isMac() ? e.metaKey : e.ctrlKey)) {
(!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)
) {
switch (e.keyCode) { switch (e.keyCode) {
// copy - ctrl/cmd +c // copy - ctrl/cmd +c
case 67: case 67:
@ -350,7 +336,7 @@ export function useMultiSelect(
// Update not allowed for table which doesn't have primary Key // Update not allowed for table which doesn't have primary Key
return message.info(t('msg.info.updateNotAllowedWithoutPK')) 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] = '' rowObj.row[columnObj.title] = ''
} }
// editEnabled = true // editEnabled = true

31
packages/nc-gui/utils/columnUtils.ts

@ -190,4 +190,33 @@ const getUniqueColumnName = (initName: string, columns: ColumnType[]) => {
return name 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,
}

Loading…
Cancel
Save