From c50e5c7621d80d2af8fd0ae21c73b1da29669d6e Mon Sep 17 00:00:00 2001 From: Santiago Balladares <744091+santiagoballadares@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:57:26 +0100 Subject: [PATCH] fix(kotti-fields): dont emit blur event when interacting with the content inside the field container --- .../kotti-field-currency/KtFieldCurrency.vue | 26 +++++-- .../KtFieldInlineEdit.vue | 7 +- .../kotti-field-number/KtFieldNumber.vue | 49 ++++-------- .../kotti-field-password/KtFieldPassword.vue | 25 ++++-- .../components/GenericSelectField.vue | 77 ++++++------------- .../source/kotti-field-text/KtFieldText.vue | 21 +++-- .../kotti-ui/source/kotti-field/KtField.vue | 2 +- packages/kotti-ui/source/kotti-field/hooks.ts | 71 +++++++++++++++++ 8 files changed, 169 insertions(+), 109 deletions(-) diff --git a/packages/kotti-ui/source/kotti-field-currency/KtFieldCurrency.vue b/packages/kotti-ui/source/kotti-field-currency/KtFieldCurrency.vue index b12bed19e..c85f5b69a 100644 --- a/packages/kotti-ui/source/kotti-field-currency/KtFieldCurrency.vue +++ b/packages/kotti-ui/source/kotti-field-currency/KtFieldCurrency.vue @@ -1,6 +1,10 @@ @@ -12,7 +16,12 @@ import type { InputHTMLAttributes } from 'vue/types/jsx' import { Yoco } from '@3yourmind/yoco' import { KtField } from '../kotti-field' -import { useField, useForceUpdate } from '../kotti-field/hooks' +import { + useEmitBlur, + useField, + useForceUpdate, + useKtFieldRef, +} from '../kotti-field/hooks' import { useI18nContext } from '../kotti-i18n/hooks' import type { KottiI18n } from '../kotti-i18n/types' import { makeProps } from '../make-props' @@ -57,6 +66,13 @@ export default defineComponent({ }) const i18nContext = useI18nContext() + const ktFieldRef = useKtFieldRef() + + useEmitBlur({ + emit, + field, + fieldTarget: computed(() => ktFieldRef.value?.inputContainerRef ?? null), + }) const currencyFormat = computed(() => { const result = i18nContext.currencyMap[props.currency] @@ -176,13 +192,11 @@ export default defineComponent({ }), ), inputRef, + ktFieldRef, modifiedField: computed(() => ({ ...field, prefix: currencyFormat.value.symbol, })), - onBlur: () => { - emit('blur', field.currentValue) - }, onInput: (event: Event) => { const value = (event.target as HTMLInputElement).value diff --git a/packages/kotti-ui/source/kotti-field-inline-edit/KtFieldInlineEdit.vue b/packages/kotti-ui/source/kotti-field-inline-edit/KtFieldInlineEdit.vue index 18ed92b4e..e6a80d6d8 100644 --- a/packages/kotti-ui/source/kotti-field-inline-edit/KtFieldInlineEdit.vue +++ b/packages/kotti-ui/source/kotti-field-inline-edit/KtFieldInlineEdit.vue @@ -34,7 +34,6 @@