> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ss14.art/llms.txt
> Use this file to discover all available pages before exploring further.

# Контейнеры

Container — это тип элемента управления, который определяет расположение других элементов. Логика контейнеров влияет только на непосредственные дочерние элементы. Контейнеры обычно располагают дочерние элементы каждый кадр, собирая их желаемый размер через `.Measure()`, а затем предоставляя им размер, который они могут себе позволить, через `.Arrange()`. После вычисления желаемого и доступного размеров своих дочерних элементов контейнер может при необходимости переопределить координаты дочерних компонентов. Этот документ охватывает лишь некоторые из наиболее часто используемых контейнеров. Дополнения с другими контейнерами приветствуются.

<Info>
  Эта страница является заготовкой; полные описания того, как контейнеры реагируют на добавление новых элементов, переполнение, тонкости `GridContainer` и т.д., не рассматриваются.
</Info>

## `BoxContainer`

`BoxContainer` — самый простой элемент управления расположением. Он размещает свои дочерние элементы последовательно в определённой `Orientation`, либо вертикально, либо горизонтально. Элементы не перекрываются.

| Поле                 | Тип                 | Значение по умолч. | Описание                                              |
| -------------------- | ------------------- | ------------------ | ----------------------------------------------------- |
| `Orientation`        | `LayoutOrientation` | `Horizontal`       | Располагать элементы горизонтально или вертикально.   |
| `Align`              | `AlignMode`         | `Begin`            | Выравнивание дочерних элементов вдоль оси ориентации. |
| `SeparationOverride` | `int`               | `0`                | Расстояние между элементами.                          |

## `GridContainer`

`GridContainer` размещает свои дочерние элементы в настраиваемой сетке.

| Поле                  | Тип     | Значение по умолч. | Описание                                                                                                     |
| --------------------- | ------- | ------------------ | ------------------------------------------------------------------------------------------------------------ |
| `Columns`             | `int`   |                    | Количество столбцов для организации дочерних элементов.                                                      |
| `Rows`                | `int`   |                    | Количество строк для организации дочерних элементов.                                                         |
| `MaxGridWidth`        | `float` |                    | Максимальная ширина сетки элементов; динамически определяет количество столбцов на основе размера элементов. |
| `MaxGridHeight`       | `float` |                    | Максимальная высота сетки; динамически определяет количество строк на основе размера элементов               |
| `VSeparationOverride` | `int`   | `0`                | Вертикальное расстояние между элементами.                                                                    |
| `HSeparationOverride` | `int`   | `0`                | Горизонтальное расстояние между элементами.                                                                  |
| `ExpandBackwards`     | `bool`  | `false`            | Расширять сетку в обратном направлении (снизу-справа наверх-слева).                                          |

## `ScrollContainer`

`ScrollContainer` — это контейнер, показывающий обрезанный вид своих дочерних элементов, с опциональной прокруткой по вертикали, горизонтали или обоим направлениям.

| Поле                    | Тип    | Значение по умолч. | Описание                                                                                                  |
| ----------------------- | ------ | ------------------ | --------------------------------------------------------------------------------------------------------- |
| `FallbackDeltaScroll`   | `bool` | `true`             | Если true, вертикальная прокрутка преобразуется в горизонтальную, если вертикальная прокрутка невозможна. |
| `ScrollSpeedX`          | `int`  | `50`               | Скорость прокрутки по оси X.                                                                              |
| `ScrollSpeedY`          | `int`  | `50`               | Скорость прокрутки по оси Y.                                                                              |
| `ReserveScrollbarSpace` | `bool` | `false`            | Будет ли полоса прокрутки занимать место в макете.                                                        |
| `VScrollEnabled`        | `bool` | `true`             | Включена ли вертикальная прокрутка.                                                                       |
| `HScrollEnabled`        | `bool` | `true`             | Включена ли горизонтальная прокрутка.                                                                     |

### `LayoutContainer`

`LayoutContainer` помогает в сложных макетах, позволяя дочерним элементам указывать, как они должны располагаться.

| Поле                  | Тип     | Значение по умолч. | Описание                                                                                |
| --------------------- | ------- | ------------------ | --------------------------------------------------------------------------------------- |
| `AnchorBegin`         | `float` | `0`                | Значение привязки в начале макета.                                                      |
| `AnchorEnd`           | `float` | `1`                | Значение привязки в конце макета.                                                       |
| `InheritChildMeasure` | `bool`  | `true`             | Если true, измерения этого элемента будут не меньше размера любого вложенного элемента. |

Дочерние элементы `LayoutContainer` могут использовать следующие поля для управления своим расположением:

| Поле             | Тип     |
| ---------------- | ------- |
| `MarginLeft`     | `float` |
| `MarginTop`      | `float` |
| `MarginRight`    | `float` |
| `MarginBottom`   | `float` |
| `AnchorLeft`     | `float` |
| `AnchorTop`      | `float` |
| `AnchorRight`    | `float` |
| `AnchorBottom`   | `float` |
| `GrowHorizontal` | `bool`  |
| `GrowVertical`   | `bool`  |
