Сообщение в разделе
Сообщение в разделе говорит пользователю что-то об одной части страницы. Оно стоит среди содержимого и остаётся, пока проблему не решат или сообщение не закроют.
<tk-section-message> <span slot="title">Heads up</span> Two-factor authentication will be required for all admins next month. </tk-section-message>
Анатомия
| Часть | Что это |
|---|---|
tk-section-message |
сам элемент; тонированный блок со скруглёнными углами (part message) |
слот и part icon |
иконка смысла в начале; декоративная |
слот и part title |
заголовок, по желанию; настоящий заголовок или <span> |
слот по умолчанию (part body) |
само сообщение: одно-два коротких предложения, обязательно |
слот и part actions |
действия под сообщением, по желанию |
| кнопка закрытия | ✕, только с dismissible |
Варианты
<tk-section-message>New members get access in about an hour.</tk-section-message> <tk-section-message tone="neutral">Drafts are saved for 30 days.</tk-section-message> <tk-section-message tone="success">Your calendar is connected.</tk-section-message> <tk-section-message tone="warning">Vacation mode is on. You won't get alerts.</tk-section-message> <tk-section-message tone="error">We couldn't save your changes. Try again.</tk-section-message>
info(по умолчанию): сведения или совет.neutral: тихая заметка, не очень важная.success: действие выполнено.warning: предупреждение до или во время действия.error: действие не удалось или что-то нужно исправить.
У каждого тона своя форма иконки: треугольник у warning, круг у остальных. Назовите смысл
и в тексте: одного цвета мало, его видят не все. В контрастной теме у блока появляется ещё
рамка 1px.
Иконка
<tk-section-message hide-icon>Prices include VAT.</tk-section-message> <tk-section-message tone="success"> <tk-icon slot="icon" name="bookmark"></tk-icon> Saved to your reading list. </tk-section-message>
hide-iconубирает иконку. вtk-iconslot="icon"заменяет её. Она так же скрыта от скринридеров, как и иконка по умолчанию.
Действия
<tk-section-message tone="warning"> <span slot="title">Turn on notifications</span> You won't get alerts until notifications are enabled for this browser. <tk-button slot="actions" size="small">Enable</tk-button> <tk-link slot="actions" treatment="quiet" href="/settings">Not now</tk-link> </tk-section-message>
- В
slot="actions"кладите видаtk-buttonsecondaryилиghostили тихую . Не беритеtk-linkoutline: на тонеneutralего рамки не видно. - Не больше одного главного и одного второстепенного действия. Если нужно больше, берите диалог или отдельную страницу.
Закрытие
<tk-section-message tone="error" dismissible> <span slot="title">Upload failed</span> The file is larger than 25 MB. </tk-section-message>
dismissible добавляет ✕ с именем из dismiss-label. Нажатие запускает отменяемое
событие tk-dismiss, и сообщение прячется само, если вы не вызвали preventDefault().
- Не давайте закрыть сообщение, если пользователь обязан решить проблему. Сообщение о неудавшемся действии закрываемым быть может.
- ✕ исчезает вместе с сообщением, поэтому после закрытия переведите фокус в разумное место.
Когда использовать
- Сообщение в разделе — для заметки об одной части страницы: предупреждение в разделе настроек, подтверждение после подключения сервиса, сводка ошибок над формой.
- Для проблемы с одним полем есть текст ошибки у
Field . Сводка нескольких ошибок формы — это сообщение в разделе; у каждого поля всё равно своя ошибка. - Для сообщения обо всём приложении есть
Banner . - Для короткого подтверждения, которое исчезнет само, есть
Toast . - Если пользователь должен что-то сделать, прежде чем продолжить, нужен
Dialog . Сообщение в разделе ничего не блокирует и не забирает фокус.
Текст
- Заголовок: три-четыре слова, которые называют событие, например «Не удалось загрузить». Текст его не повторяет.
- Текст: одно-два предложения: что случилось и что делать дальше.
- Действие: конкретный глагол, например «Обновить карту». Никогда не «ОК».
Подробнее в
Можно / нельзя
| ✅ Можно | ❌ Нельзя |
|---|---|
| Рядом с тем, о чём оно, среди содержимого | Как полоса на всё приложение или всплывающий toast |
live, если сообщение добавлено после действия |
Объявлять сообщение, которое было при загрузке |
| Тихие действия, не больше одного главного | Много кнопок; для этого есть диалог или страница |
| Диалог, если сначала нужно действие | Давать закрыть сообщение, требующее действия |
Настоящий заголовок в title |
Обычный текст, оформленный под заголовок |
Связанные
Banner : сообщение обо всём приложении.Toast : короткое сообщение, которое исчезает само.Dialog : сообщение, которое блокирует работу до действия.Badge : маленькая метка статуса с теми же тонами.Button иLink : что кладут вactions.
API
Атрибуты
| Атрибут | Тип | По умолчанию | Что делает |
|---|---|---|---|
tone |
info | neutral | success | warning | error |
info |
смысл: оттенок и иконка |
live |
off | polite | assertive |
off |
объявить сообщение, добавленное после загрузки |
dismissible |
boolean | false |
показывает ✕ |
dismiss-label |
string | "Dismiss" |
доступное имя ✕ |
hide-icon |
boolean | false |
убирает иконку смысла |
Слоты
| Слот | Содержимое |
|---|---|
| по умолчанию | сообщение, обязательно |
title |
заголовок (<h2>–<h6>) или <span> |
icon |
заменяет иконку смысла; скрыт от скринридеров |
actions |
ссылки и кнопки под сообщением |
События
| Событие | Что означает |
|---|---|
tk-dismiss |
нажали ✕; отменяемое, сообщение прячется, если вы не отменили событие |
CSS
- Parts:
message,icon,title,body,actions.
Токены
| Тон | Заливка | Текст | Иконка | Рамка (контрастная тема) |
|---|---|---|---|---|
neutral |
surface/sunken |
text/secondary |
icon/secondary |
border/default |
info · success · warning · error |
surface/{tone} |
text/{tone} |
icon/{tone} |
border/{tone} |
Углы radius-16, отступ space-16. Значения по темам:
Доступность
Встроено:
- По умолчанию сообщение не объявляется; если оно есть при загрузке, его читают по порядку.
live="polite"даёт емуrole="status",live="assertive"—role="alert".- Сообщение не забирает фокус. У ✕ есть доступное имя, а иконка смысла скрыта.
- Текст не ниже 4.5:1, иконка не ниже 3:1 во всех тонах и темах.
На вашей стороне:
- Выберите
liveпо тому, как появляется сообщение:offпри загрузке страницы,politeдляinfo,successилиneutralпосле действия,assertiveдляwarningилиerrorпосле действия. - В
title— настоящий заголовок нужного для страницы уровня. - Называйте смысл словами.