forked from elk-zone/elk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharia.ts
61 lines (47 loc) · 1.09 KB
/
aria.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
export type AriaLive = 'off' | 'polite' | 'assertive'
export type AriaAnnounceType = 'announce' | 'mute' | 'unmute'
const ariaAnnouncer = useEventBus<AriaAnnounceType, string | undefined>(Symbol('aria-announcer'))
export const useAriaAnnouncer = () => {
const announce = (message: string) => {
ariaAnnouncer.emit('announce', message)
}
const mute = () => {
ariaAnnouncer.emit('mute')
}
const unmute = () => {
ariaAnnouncer.emit('unmute')
}
return { announce, ariaAnnouncer, mute, unmute }
}
export const useAriaLog = () => {
let logs = $ref<any[]>([])
const announceLogs = (messages: any[]) => {
logs = messages
}
const appendLogs = (messages: any[]) => {
logs = logs.concat(messages)
}
const clearLogs = () => {
logs = []
}
return {
announceLogs,
appendLogs,
clearLogs,
logs,
}
}
export const useAriaStatus = () => {
let status = $ref<any>('')
const announceStatus = (message: any) => {
status = message
}
const clearStatus = () => {
status = ''
}
return {
announceStatus,
clearStatus,
status,
}
}