diff --git a/src/runtime/components/forms/InputMenu.vue b/src/runtime/components/forms/InputMenu.vue index 2a318851b5..dc58ad14e9 100644 --- a/src/runtime/components/forms/InputMenu.vue +++ b/src/runtime/components/forms/InputMenu.vue @@ -322,6 +322,10 @@ export default defineComponent({ } }) + function isObject(object: any): object is boolean { + return !Array.isArray(object) && object !== null && typeof object === 'object' + } + const label = computed(() => { if (!props.modelValue) return null @@ -334,7 +338,7 @@ export default defineComponent({ } function compareValues(value1: any, value2: any) { - if (by.value && typeof by.value !== 'function' && typeof value1 === 'object' && typeof value2 === 'object') { + if (by.value && typeof by.value !== 'function' && isObject(value1) && isObject(value2)) { return isEqual(value1[props.by], value2[props.by]) } return isEqual(value1, value2) diff --git a/src/runtime/components/forms/SelectMenu.vue b/src/runtime/components/forms/SelectMenu.vue index 714287dddd..96f907e9bd 100644 --- a/src/runtime/components/forms/SelectMenu.vue +++ b/src/runtime/components/forms/SelectMenu.vue @@ -389,7 +389,7 @@ export default defineComponent({ const selected = computed(() => { function compareValues(value1: any, value2: any) { - if (by.value && typeof by.value !== 'function' && typeof value1 === 'object' && typeof value2 === 'object') { + if (by.value && typeof by.value !== 'function' && isObject(value1) && isObject(value2)) { return isEqual(value1[by.value], value2[by.value]) } return isEqual(value1, value2) @@ -527,6 +527,10 @@ export default defineComponent({ return get(obj, key) } + function isObject(object: any): object is boolean { + return !Array.isArray(object) && object !== null && typeof object === 'object' + } + const filteredOptions = computed(() => { if (!query.value || debouncedSearch) { return options.value