К содержимому

SusSnackbar ​

SusSnackbar

Кратковременный toast — текст, timeout, location, опциональные actions.

Пакет

SusKit · Атомы (коммерческий)

Открыть в песочнице

SusKit · Atoms

Свойства

ИмяТипПо умолчанию
TextProp<string>""v-model
KickerProp<string>""v-model
VariantProp<string>"info"v-model
TimeoutProp<int>5000v-model
LocationProp<string>"bottom-center"v-model
CloseOnContentClickProp<bool>falsev-model
VerticalProp<bool>falsev-model
MultiLineProp<bool>falsev-model
ShowTimerProp<bool>falsev-model
CloseLabelProp<string>"OK"v-model
OverlayProp<bool>falsev-model
StackOffsetProp<float>-1fv-model

Слоты

Имя
(по умолчанию)
actions

События

ИмяПолеPayload
CloseOnClose—

Хуки стиля ​

Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:

  • sus-hidden
  • sus-slot
  • sus-snackbar
  • sus-snackbar__actions
  • sus-snackbar__body
  • sus-snackbar__close-btn
  • sus-snackbar__kicker
  • sus-snackbar__main
  • sus-snackbar__text
  • sus-snackbar__timer
  • sus-snackbar--bottom
  • sus-snackbar--center
  • sus-snackbar--error
  • sus-snackbar--info
  • sus-snackbar--left
  • sus-snackbar--multi-line
  • sus-snackbar--overlay
  • sus-snackbar--right
  • sus-snackbar--success
  • sus-snackbar--top
  • sus-snackbar--vertical
  • sus-snackbar--warning
  • sus-snackbar--with-timer
  • unity-label
  • unity-text-element

Использование ​

xml
<template>
  <sus:SusSnackbar Text="Saved"
                   Variant="success"
                   Timeout="4000"
                   Location="bottom-center"
                   CloseLabel="OK"
                   @close="OnClosed" />
</template>

<script>
void OnClosed() { /* … */ }
</script>
csharp
var toast = new SusSnackbar();
toast.Text.Value = "Connection lost";
toast.Variant.Value = "error";
toast.Timeout.Value = 5000;
toast.ShowTimer.Value = true;
toast.OnClose += () => { /* … */ };

Вариант ​

info · success · warning · error

Смещение стека toast ​

Toast'ы SusSnack.Show(...) живут в общем overlay-хосте и складываются в стек кодом: каждый получает инлайновый bottom. Инлайновые стили сильнее USS, поэтому USS-bottom на toast не срабатывает никогда. Сдвигайте стек смещением:

СпособДействует на
--sus-snackbar-stack-offset (px) на классе toastКаждый toast с этим классом; не задано — 24 px
StackOffset на вашем собственном SusSnackbarЭтот toast; сильнее USS-свойства
SusSnack.Show(text, variant, timeoutMs, className)Классы только на этом toast
SusSnack.ContextClassКлассы на каждом toast, пока не вернёте null

Overlay-хост лежит вне корня вашего экрана и скина, поэтому правило с префиксом корневого класса скина до toast не дотягивается. Кладите правило в слой таблицы компонентов скина:

css
.hud-toast { --sus-snackbar-stack-offset: 216px; }
csharp
SusSnack.ContextClass = "hud-toast";   // while the HUD is on screen
SusSnack.ContextClass = null;          // when it closes

Заметки ​

  • Слот actions — для кастомных кнопок; закрытие по умолчанию использует CloseLabel.
  • Предпочитайте молекулу очереди (SusSnackbarQueue) при стекировании нескольких toast.