@@ -96,6 +96,14 @@ const slots = defineSlots<ChatMessagesSlots>()
|
96 | 96 | |
97 | 97 | const getProxySlots = () => omit(slots, ['default', 'indicator', 'viewport']) |
98 | 98 | |
| 99 | +const showIndicator = computed(() => { |
| 100 | + if (props.status === 'submitted') return true |
| 101 | + if (props.status !== 'streaming') return false |
| 102 | + |
| 103 | + const lastMessage = props.messages?.[props.messages.length - 1] |
| 104 | + return lastMessage?.role === 'assistant' && !lastMessage.parts?.length |
| 105 | +}) |
| 106 | + |
99 | 107 | const appConfig = useAppConfig() as ChatMessages['AppConfig'] |
100 | 108 | const uiProp = useComponentUI('chatMessages', props) |
101 | 109 | |
@@ -311,7 +319,7 @@ onMounted(() => {
|
311 | 319 | </slot> |
312 | 320 | |
313 | 321 | <UChatMessage |
314 | | -v-if="status === 'submitted'" |
| 322 | +v-if="showIndicator" |
315 | 323 | id="indicator" |
316 | 324 | role="assistant" |
317 | 325 | v-bind="{ ...assistantProps, actions: undefined, parts: [] }" |
|