| import React, { useEffect, useContext } from 'react'; |
| import AnnouncerContext from '~/Providers/AnnouncerContext'; |
|
|
| interface LiveMessageProps { |
| message: string; |
| 'aria-live': 'polite' | 'assertive'; |
| clearOnUnmount?: boolean | 'true' | 'false'; |
| } |
|
|
| const LiveMessage: React.FC<LiveMessageProps> = ({ |
| message, |
| 'aria-live': ariaLive, |
| clearOnUnmount, |
| }) => { |
| const { announceAssertive, announcePolite } = useContext(AnnouncerContext); |
|
|
| useEffect(() => { |
| if (ariaLive === 'assertive') { |
| announceAssertive(message); |
| } else if (ariaLive === 'polite') { |
| announcePolite(message); |
| } |
| }, [message, ariaLive, announceAssertive, announcePolite]); |
|
|
| useEffect(() => { |
| return () => { |
| if (clearOnUnmount === true || clearOnUnmount === 'true') { |
| announceAssertive(''); |
| announcePolite(''); |
| } |
| }; |
| }, [clearOnUnmount, announceAssertive, announcePolite]); |
|
|
| return null; |
| }; |
|
|
| export default LiveMessage; |
|
|