# Стек управляющих элементов

Утилита для управления сплошным обьединением элементов друг с другом.

WIP

Пока доступна только горизонтальная версия обьединения.

# API

# Mixns

  • control-stack-first-styling - Слилизация для первого элемента в стеке.
  • control-stack-last-styling - Стилизация для последнего элемента в стеке.
  • control-stack-elements($selectors) - Внутренняя примесь. Адаптивно применяет павила из @content для списка селекторов.
  • control-stack($selectors) - Формирует правила обьединения для переданной группы селекторов.
  • control-stack-add - Более простая версия control-stack миксина, применяет правила группировки для текущего сложносоствного селектора.

Для втнутреннего элемента стека исопользуется одновременно стилизация первого и последнего элементов.

# Переменные

  • $control-stack-selectors - Список селекторов, которые нужно внедрить в "стек". Лучше пользоваться этой переменной - она поможет избежать дублирования кода(политика наследования в sass не дает эффективно наследоваться).

# Примеры

Например при такой базовой стилизациии:

.d-control-input-example,
.d-control-button-example
  border-radius: 4px

.d-control-input-example
  +control-box

  --control-box-border-width: 1px
  border-color: var(--theme-relief-3)

.d-control-button-example
  +control-box

  background: var(--theme-relief-6)
  color: var(--theme-relief-1)

  &--variant_accent
    background: var(--theme-relief-2)
    color: var(--theme-text-2)

Элементы легко можно "подключить" к механизму стека.

Так:

.d-control-input-example
  +control-stack-add

.d-control-button-example
  +control-stack-add

Или добавить селекторы в настройки:

$control-stack-selectors: (
  '&.d-control-button-example',
  '&.d-control-input-example'
);

# Сложные селекторы

Если стилизован радиус не у корневого элемента блока, а у какого-либо внутреннего - нужно применять миксины для составного селектора. Например:

.d-control-input-example .d-control-input-example__element
  +control-stack-add

Или:

$control-stack-selectors: (
  '&.d-control-input-example .d-control-input-example__element'
);

# Адаптивность