From c3503bc82b42399cae5a8342515e97754da05304 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 11 Jan 2023 14:54:05 +0530 Subject: [PATCH] fix(gui): handle empty string in percent and currency cell as null Signed-off-by: Pranav C --- packages/nc-gui/components/cell/Currency.vue | 13 ++++++++++++- packages/nc-gui/components/cell/Percent.vue | 13 ++++++++++++- packages/nc-gui/composables/useMultiSelect/index.ts | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/components/cell/Currency.vue b/packages/nc-gui/components/cell/Currency.vue index c65a699d98..2ff0e2560a 100644 --- a/packages/nc-gui/components/cell/Currency.vue +++ b/packages/nc-gui/components/cell/Currency.vue @@ -14,7 +14,18 @@ const column = inject(ColumnInj)! const editEnabled = inject(EditModeInj)! -const vModel = useVModel(props, 'modelValue', emit) +const _vModel = useVModel(props, 'modelValue', emit) + +const vModel = computed({ + get: () => _vModel.value, + set: (value: unknown) => { + if (value === '') { + _vModel.value = null + } else { + _vModel.value = value as number + } + }, +}) const lastSaved = ref() diff --git a/packages/nc-gui/components/cell/Percent.vue b/packages/nc-gui/components/cell/Percent.vue index c8907656d2..bea2acd71b 100644 --- a/packages/nc-gui/components/cell/Percent.vue +++ b/packages/nc-gui/components/cell/Percent.vue @@ -12,7 +12,18 @@ const emits = defineEmits(['update:modelValue']) const editEnabled = inject(EditModeInj) -const vModel = useVModel(props, 'modelValue', emits) +const _vModel = useVModel(props, 'modelValue', emits) + +const vModel = computed({ + get: () => _vModel.value, + set: (value) => { + if (value === '') { + _vModel.value = null + } else { + _vModel.value = value + } + }, +}) const focus: VNodeRef = (el) => { ;(el as HTMLInputElement)?.focus() diff --git a/packages/nc-gui/composables/useMultiSelect/index.ts b/packages/nc-gui/composables/useMultiSelect/index.ts index 7ac874e192..37a350379c 100644 --- a/packages/nc-gui/composables/useMultiSelect/index.ts +++ b/packages/nc-gui/composables/useMultiSelect/index.ts @@ -268,7 +268,7 @@ export function useMultiSelect( case 67: // set clipboard context only if single cell selected // or if selected range is empty - if ((selectedRange.isSingleCell() || selectedRange.isEmpty()) && rowObj.row[columnObj.title!]) { + if (selectedRange.isSingleCell() || (selectedRange.isEmpty() && rowObj && columnObj)) { clipboardContext = { value: rowObj.row[columnObj.title!], uidt: columnObj.uidt as UITypes,