Skip to content

Commit ddc88a4

Browse files
committed
fix: prefer invisible screen reader loading indicator
1 parent d7e1eae commit ddc88a4

File tree

4 files changed

+22
-3
lines changed

4 files changed

+22
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<template>
2+
<div class="sr-only" aria-label="Loading..." role="status" />
3+
</template>
4+
5+
<style scoped>
6+
.sr-only {
7+
position: absolute;
8+
width: 1px;
9+
height: 1px;
10+
padding: 0;
11+
margin: -1px;
12+
overflow: hidden;
13+
clip: rect(0, 0, 0, 0);
14+
border: 0;
15+
}
16+
</style>

src/runtime/components/ScriptGoogleMaps.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { ElementScriptTrigger } from '../types'
1111
import { scriptRuntimeConfig } from '../utils'
1212
import { useScriptTriggerElement } from '../composables/useScriptTriggerElement'
1313
import { useScriptGoogleMaps } from '../registry/google-maps'
14+
import ScriptAriaLoadingIndicator from './ScriptAriaLoadingIndicator.vue'
1415
1516
interface PlaceholderOptions {
1617
width?: string | number
@@ -458,7 +459,7 @@ onBeforeUnmount(async () => {
458459
<img v-bind="placeholderAttrs">
459460
</slot>
460461
<slot v-if="status !== 'awaitingLoad' && !ready" name="loading">
461-
<ScriptLoadingIndicator color="black" />
462+
<ScriptAriaLoadingIndicator />
462463
</slot>
463464
<slot v-if="status === 'awaitingLoad'" name="awaitingLoad" />
464465
<slot v-else-if="status === 'error'" name="error" />

src/runtime/components/ScriptVimeoPlayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { useHead } from '@unhead/vue'
88
import type { ElementScriptTrigger } from '../types'
99
import { useScriptTriggerElement } from '../composables/useScriptTriggerElement'
1010
import { useScriptVimeoPlayer } from '../registry/vimeo-player'
11+
import ScriptAriaLoadingIndicator from './ScriptAriaLoadingIndicator.vue'
1112
1213
interface VimeoOptions {
1314
// copied from @types/vimeo__player
@@ -274,7 +275,7 @@ onBeforeUnmount(() => player?.unload())
274275
<img v-if="placeholder" v-bind="placeholderAttrs">
275276
</slot>
276277
<slot v-if="status === 'loading'" name="loading">
277-
<ScriptLoadingIndicator color="white" />
278+
<ScriptAriaLoadingIndicator color="white" />
278279
</slot>
279280
<slot v-if="status === 'awaitingLoad'" name="awaitingLoad" />
280281
<slot v-else-if="status === 'error'" name="error" />

src/runtime/components/ScriptYouTubePlayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useHead } from '@unhead/vue'
77
import type { ElementScriptTrigger } from '../types'
88
import { useScriptTriggerElement } from '../composables/useScriptTriggerElement'
99
import { useScriptYouTubePlayer } from '../registry/youtube-player'
10+
import ScriptAriaLoadingIndicator from './ScriptAriaLoadingIndicator.vue'
1011
1112
const props = withDefaults(defineProps<{
1213
placeholderAttrs?: ImgHTMLAttributes
@@ -178,7 +179,7 @@ const placeholderAttrs = computed(() => {
178179
<img v-bind="placeholderAttrs">
179180
</slot>
180181
<slot v-if="status === 'loading'" name="loading">
181-
<ScriptLoadingIndicator />
182+
<ScriptAriaLoadingIndicator />
182183
</slot>
183184
<slot v-if="status === 'awaitingLoad'" name="awaitingLoad" />
184185
<slot v-else-if="status === 'error'" name="error" />

0 commit comments

Comments
 (0)