feat(Input/Textarea): nullify model modifier (#2309)

This commit is contained in:
Gerben Mulder
2024-10-14 12:45:15 +02:00
committed by GitHub
parent 33b9a445c4
commit 9dd7e615e9
2 changed files with 12 additions and 4 deletions

View File

@@ -158,7 +158,7 @@ export default defineComponent({
default: () => ({}) default: () => ({})
}, },
modelModifiers: { modelModifiers: {
type: Object as PropType<{ trim?: boolean, lazy?: boolean, number?: boolean }>, type: Object as PropType<{ trim?: boolean, lazy?: boolean, number?: boolean, nullify?: boolean }>,
default: () => ({}) default: () => ({})
} }
}, },
@@ -172,7 +172,7 @@ export default defineComponent({
const size = computed(() => sizeButtonGroup.value ?? sizeFormGroup.value) const size = computed(() => sizeButtonGroup.value ?? sizeFormGroup.value)
const modelModifiers = ref(defu({}, props.modelModifiers, { trim: false, lazy: false, number: false })) const modelModifiers = ref(defu({}, props.modelModifiers, { trim: false, lazy: false, number: false, nullify: false }))
const input = ref<HTMLInputElement | null>(null) const input = ref<HTMLInputElement | null>(null)
@@ -193,6 +193,10 @@ export default defineComponent({
value = looseToNumber(value) value = looseToNumber(value)
} }
if (modelModifiers.value.nullify) {
value ||= null
}
emit('update:modelValue', value) emit('update:modelValue', value)
emitFormInput() emitFormInput()
} }

View File

@@ -127,7 +127,7 @@ export default defineComponent({
default: () => ({}) default: () => ({})
}, },
modelModifiers: { modelModifiers: {
type: Object as PropType<{ trim?: boolean, lazy?: boolean, number?: boolean }>, type: Object as PropType<{ trim?: boolean, lazy?: boolean, number?: boolean, nullify?: boolean }>,
default: () => ({}) default: () => ({})
} }
}, },
@@ -137,7 +137,7 @@ export default defineComponent({
const { emitFormBlur, emitFormInput, inputId, color, size, name } = useFormGroup(props, config) const { emitFormBlur, emitFormInput, inputId, color, size, name } = useFormGroup(props, config)
const modelModifiers = ref(defu({}, props.modelModifiers, { trim: false, lazy: false, number: false })) const modelModifiers = ref(defu({}, props.modelModifiers, { trim: false, lazy: false, number: false, nullify: false }))
const textarea = ref<HTMLTextAreaElement | null>(null) const textarea = ref<HTMLTextAreaElement | null>(null)
@@ -183,6 +183,10 @@ export default defineComponent({
value = looseToNumber(value) value = looseToNumber(value)
} }
if (modelModifiers.value.nullify) {
value ||= null
}
emit('update:modelValue', value) emit('update:modelValue', value)
emitFormInput() emitFormInput()
} }