uHamkorДокументация
Руководство пользователя

Состояния (States)

Условный показ частей виджета: восемь операторов, связки AND/OR и вложенные группы.

🎛 Состояния (States)

Состояние — это именованное правило видимости. Оно показывает или скрывает всё внутри узла State в зависимости от данных. В одном виджете может быть несколько состояний, и работают они независимо.


1️⃣ Объявите состояние

На вкладке States добавьте состояние: имя и режим видимости.

  • Всегда видно — отрисовывается всегда.
  • Всегда скрыто — не отрисовывается никогда (удобно временно спрятать блок, не удаляя код).
  • По условию — отрисовывается при выполнении условий.

2️⃣ Используйте в коде

<Card gap={3}>
  <State name="offer">
    <Title value={hotel.name} size="lg" />
    <Button label="Забронировать" onClickAction={{ functionName: 'book_hotel' }} />
  </State>

  <State name="booked">
    <Row align="center" gap={2}>
      <Icon name="check-circle" color="success" />
      <Text value="Бронирование подтверждено" />
    </Row>
  </State>
</Card>

Когда book_hotel через set_variables устанавливает booked в true, первый блок исчезает, а второй появляется.

Вкладка States
Условное состояние: имя, режим видимости и условие «booked ≠ true»; ниже второе состояние с однострочным описанием.

3️⃣ Условия

Каждое условие состоит из трёх частей: поле, оператор, значение.

  • equals — равно
  • not_equals — не равно
  • contains — содержит
  • not_contains — не содержит
  • greater_than — больше
  • less_than — меньше
  • is_empty — пусто (значение не нужно)
  • is_not_empty — не пусто

4️⃣ AND / OR и группы

  • Связка (AND / OR) выбирается начиная со второго условия — каждое условие само задаёт, как соединяется с предыдущим.
  • Условия можно объединять в группы, а группы вкладывать друг в друга.
status equals "active"  AND  role equals "admin"
   OR
(plan equals "pro"  AND  seats greater_than 5)

💡 Практические советы

  • Давайте состояниям короткие понятные имена: offer, booked, error, empty.
  • Для пустого списка заведите отдельное состояние: orders.length equals 0.
  • Ошибки тоже показывайте состоянием — записывайте переменную error в onFailure у call_api.
  • На вкладке States каждая строка показывает свои условия одной строкой, например booked = true.