forked from Mirrors/elk
27 lines
551 B
Vue
27 lines
551 B
Vue
<script setup lang="ts">
|
|
import type { AriaLive } from '~/composables/aria/types'
|
|
import { useAriaStatus } from '~/composables/aria'
|
|
|
|
// tsc complaining when using $defineProps
|
|
withDefaults(defineProps<{
|
|
ariaLive?: AriaLive
|
|
}>(), {
|
|
ariaLive: 'polite',
|
|
})
|
|
|
|
const { announceStatus, clearStatus, status } = useAriaStatus()
|
|
|
|
defineExpose({
|
|
announceStatus,
|
|
clearStatus,
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<slot />
|
|
<p sr-only role="status" :aria-live="ariaLive">
|
|
<slot name="status" :status="status">
|
|
{{ status }}
|
|
</slot>
|
|
</p>
|
|
</template>
|