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 @@