Всплывающее сообщение. Отображает диалоговое содержимое в виде всплывающего сообщения. Поддерживает варианты
выравнивание, группировку, реакции и сворачиваемое содержимое.
❯buridan add всплывающее сообщение. отображает диалоговое содержимое в виде всплывающего сообщения. поддерживает вариантыОтображает диалоговый контент в пузыре сообщений. Поддерживает варианты, выравнивание, группировку, реакции и сворачиваемый контент.
Компонент Bubble отображает диалоговый контент в рамке. Используйте его для текста чата, краткого структурированного вывода, цитируемых ответов, предложений и реакций.
Для полнофункциональных интерфейсов чата используйте компонент §§IC_5§§. Bubble намеренно ограничен поверхностью пузыря. Размещайте аватары, имена, временные метки, метаданные и действия на уровне сообщений в §§IC_7§§.
Особенности
- Семь визуальных вариантов: от яркого основного пузырька до призрачного контента без рамки.
- Выравнивание начала и конца пузырьков отправителя и получателя.
- Реакции, которые привязываются к краю пузырька с настраиваемой стороной и выравниванием.
- Размер пузырьков относительно их содержимого, до 80% ширины контейнера
- Полиморфный контент через
renderдля ссылок и кнопок. - Настраиваемый стиль с помощью реквизита
class_nameна каждой части.
Примеры
Варианты
Используйте variant, чтобы изменить внешний вид пузыря.
Использованный реквизит: variant на bubble.root.
Размер пузырька соответствует его содержимому, до 80 % ширины контейнера. Вариант ghost удаляет максимальную ширину, поэтому вспомогательный текст и расширенный контент могут охватывать всю строку.
Выравнивание
Используйте align на bubble.root, чтобы выровнять всплывающее окно по началу или концу разговора.
Использованный реквизит: align на bubble.root.
Примечание. При создании интерфейсов чата вы, вероятно, захотите использовать выравнивание самого компонента Message, а не компонента Bubble. Вы можете использовать параметр role в компоненте message.root, чтобы автоматически выравнивать пузырь по началу или концу разговора.
Пузырьковая группа
Используйте bubble.group, чтобы сгруппировать последовательные пузырьки от одного отправителя. Обратите внимание, что свойство align должно быть установлено в самом компоненте bubble.root, а не в компоненте bubble.group.
bubble.group
├── bubble.root
│ └── bubble.content
└── bubble.root
└── bubble.content
Использованный реквизит: align на bubble.root (устанавливается для каждого пузыря, а не на bubble.group).
Ссылки и кнопки
Вы можете превратить пузырь в ссылку или кнопку, передав интерактивные элементы непосредственно в слот bubble.content. bubble.content принимает *children, поэтому простое размещение кнопки или ссылки отобразит этот компонент.
Использованный реквизит: не требуется — передайте button/rx.el.a как дочерний элемент bubble.content.
Реакции
Используйте bubble.reactions для реакций пузырьков. Вы можете использовать его для отображения реакций или кнопок быстрого действия. Используйте side и align для позиционирования строки — side="top" привязывает ее к верхнему краю. Реакции перекрывают край пузырька, поэтому оставляйте вертикальное пространство между строками — по этой причине в примерах ниже используется больший размер gap.
Использованный реквизит: side, align на bubble.reactions.
Доступность
bubble.root отображает презентационную поверхность сообщения. Сохраняйте семантику уровня диалога в окружающем контейнере и следуйте приведенным ниже рекомендациям.
Маркировка реакций
Реакции отображаются в виде ряда смайлов. Программа чтения с экрана считывает каждый глиф без контекста, а счетчики типа +8 объявляются как «плюс восемь». Сгруппируйте строку как одно изображение с описательным aria_label, чтобы она объявлялась один раз. role="img" также скрывает отдельные смайлы от вспомогательных технологий, поэтому aria_hidden не требуется.
bubble.reactions(
rx.el.span("👍"),
rx.el.span("🔥"),
rx.el.span("+8"),
role="img",
aria_label="Reactions: thumbs up, fire, and 8 more"
)
Если реакции интерактивны, вместо этого визуализируйте кнопки и присваивайте кнопкам, состоящим только из значков, aria_label.
bubble.reactions(
button(
...,
aria_label="Thumbs up",
variant="secondary",
size="sm"
)
)
Интерактивные пузыри
Когда пузырь доступен для клика, визуализируйте его как настоящий <button> или <a>. Содержимое bubble.-* принимает *children, поэтому простая передача интерактивного компонента будет отображена. bubble.content содержит видимое кольцо фокусировки для интерактивных элементов, а доступное имя получается из текста пузырька. Никакой дополнительной этикетки не требуется.
bubble.root(
bubble.content(
"I forgot my password",
rx.el.button(type="button", on_click=on_reply)
),
variant="muted",
align="end"
)
Значение за пределами цвета
Варианты пузырьков сигнализируют о роли и тоне цвета. Соедините их с текстом, выравниванием или значками, чтобы смысл не передавался только цветом. Для пузырька destructive сохраняйте контекст ошибки в тексте сообщения, а не полагайтесь на цветовую обработку.
Справочник по API
пузырь.корень
Корневая пузырчатая обертка.
пузырь.контент
Обертка пузырькового содержимого.
пузырь.реакции
Отображает перекрывающиеся реакции на пузырь.
пузырь.группа
Группирует последовательные пузырьки от одного отправителя.