LiveAnnouncer
상태가 바뀔 때만 한 줄로 알리는 라이브 리전.
- 출시 화면에서 사용
개요
미리보기
Recent announcements (catalog-only log; the real region is hidden)
- Nothing announced yet.
예시
상태
대기
Recent announcements (catalog-only log; the real region is hidden)
- Nothing announced yet.
assertive 메시지
Recent announcements (catalog-only log; the real region is hidden)
- Nothing announced yet.
이렇게 · 이렇게 하지 않기
- 이렇게 시작, 첫 결과, 일부 실패, 완료처럼 상태가 바뀔 때만 알린다. 알리는 문구는 화면에 보이는 문장과 같다.
- 이렇게 앱 셸에 한 번만 마운트한다. 두 번째 인스턴스는 아무것도 그리지 않는다.
- 이렇게 하지 않기 행이 추가될 때마다, 타이핑할 때마다 알리지 않는다. 초점 이동으로 이미 읽히는 것도 알리지 않는다.
- 이렇게 하지 않기 컴포넌트에서 aria-live를 직접 쓰지 않는다(design-lint R9). Toast 영역만 예외다.
토큰과 속성
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
message? | string | | announce()의 선언형. 비어 있지 않은 문장으로 바뀌면 한 번 읽는다. 대부분은 announce()를 직접 부른다. |
politeness? | 'polite' | 'assertive' | polite | assertive는 사용자 행동이 실패했을 때만(저장·복사 실패). 백그라운드 실패는 polite. |
announce(message, { politeness, dedupeMs = 2000, throttleKey, throttleMs }) | — | — | 모든 컴포넌트가 쓰는 함수. 같은 문장은 2초 안에 다시 오면 버리고, throttleKey가 같으면 throttleMs마다 한 번만 읽는다(ImportProgress 10초). |
window event 'cb:announce' | — | — | announce()는 이 이벤트를 보낸다. NewItemsChip/announce.ts와 같은 규약이라 기존 호출도 그대로 읽힌다. |
접근성
키보드: 대화형 요소가 없다.
- role="status"(polite)와 role="alert"(assertive) 두 리전을 VisuallyHidden으로 둔다. aria-atomic="true".
- 같은 문장을 다시 읽히려면 비운 뒤 50ms 뒤에 넣는다(2초가 지난 경우).