From d395d643bbc835df3adbc0beeb13e20ca80d8444 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 29 Dec 2022 13:09:49 +0530 Subject: [PATCH] fix(gui): treat empty string as null for number fields re #4701 Signed-off-by: Pranav C --- packages/nc-gui/components/cell/Decimal.vue | 13 ++++++++++++- packages/nc-gui/components/cell/Float.vue | 13 ++++++++++++- packages/nc-gui/components/cell/Integer.vue | 13 ++++++++++++- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/components/cell/Decimal.vue b/packages/nc-gui/components/cell/Decimal.vue index 5e7ed247e3..0529cb206e 100644 --- a/packages/nc-gui/components/cell/Decimal.vue +++ b/packages/nc-gui/components/cell/Decimal.vue @@ -16,7 +16,18 @@ const emits = defineEmits() const editEnabled = inject(EditModeInj) -const vModel = useVModel(props, 'modelValue', emits) +const _vModel = useVModel(props, 'modelValue', emits) + +const vModel = computed({ + get: () => _vModel.value, + set: (value: string) => { + if (value === '') { + _vModel.value = null + } else { + _vModel.value = value + } + }, +}) const focus: VNodeRef = (el) => (el as HTMLInputElement)?.focus() diff --git a/packages/nc-gui/components/cell/Float.vue b/packages/nc-gui/components/cell/Float.vue index 86c8a47cba..44e9babee2 100644 --- a/packages/nc-gui/components/cell/Float.vue +++ b/packages/nc-gui/components/cell/Float.vue @@ -16,7 +16,18 @@ const emits = defineEmits() const editEnabled = inject(EditModeInj) -const vModel = useVModel(props, 'modelValue', emits) +const _vModel = useVModel(props, 'modelValue', emits) + +const vModel = computed({ + get: () => _vModel.value, + set: (value: string) => { + if (value === '') { + _vModel.value = null + } else { + _vModel.value = value + } + }, +}) const focus: VNodeRef = (el) => (el as HTMLInputElement)?.focus() diff --git a/packages/nc-gui/components/cell/Integer.vue b/packages/nc-gui/components/cell/Integer.vue index e9103ea54f..7b4426925f 100644 --- a/packages/nc-gui/components/cell/Integer.vue +++ b/packages/nc-gui/components/cell/Integer.vue @@ -16,7 +16,18 @@ const emits = defineEmits() const editEnabled = inject(EditModeInj) -const vModel = useVModel(props, 'modelValue', emits) +const _vModel = useVModel(props, 'modelValue', emits) + +const vModel = computed({ + get: () => _vModel.value, + set: (value: string) => { + if (value === '') { + _vModel.value = null + } else { + _vModel.value = value + } + }, +}) const focus: VNodeRef = (el) => (el as HTMLInputElement)?.focus()