diff --git a/frontend/src/components/content_value/ContentValueString.vue b/frontend/src/components/content_value/ContentValueString.vue index 90af829..eba984e 100644 --- a/frontend/src/components/content_value/ContentValueString.vue +++ b/frontend/src/components/content_value/ContentValueString.vue @@ -77,25 +77,31 @@ const displayValue = computed(() => { watch( () => props.value, (val, oldVal) => { - if (val !== undefined && oldVal !== undefined) { + if (val !== undefined) { onFormatChanged(viewAs.decode, viewAs.format) } }, ) +const converting = ref(false) const onFormatChanged = async (decode = '', format = '') => { - const { - value, - decode: retDecode, - format: retFormat, - } = await browserStore.convertValue({ - value: props.value, - decode, - format, - }) - editingContent.value = viewAs.value = value - viewAs.decode = decode || retDecode - viewAs.format = format || retFormat + try { + converting.value = true + const { + value, + decode: retDecode, + format: retFormat, + } = await browserStore.convertValue({ + value: props.value, + decode, + format, + }) + editingContent.value = viewAs.value = value + viewAs.decode = decode || retDecode + viewAs.format = format || retFormat + } finally { + converting.value = false + } } /** @@ -152,9 +158,10 @@ const onSave = async () => { defineExpose({ reset: () => { viewAs.value = '' + viewAs.decode = '' + viewAs.format = '' editingContent.value = '' }, - beforeShow: () => onFormatChanged(), }) @@ -195,9 +202,9 @@ defineExpose({