Skip to content

@param

Директива @param объявляет параметр внутри @block. Параметры управляют тем, какие CSS-правила применяются к компоненту.

Синтаксис

ecss
@param --name Type;
@param --name? Type;
@param --name? Type: default;

@param объявляется в начале тела @block.

Имя параметра

Имя параметра — custom property CSS (--имя). В JS оно преобразуется в camelCase:

ECSSJS
--variantvariant
--is-disabledisDisabled
--bg-colorbgColor

Обязательный и опциональный

Параметр без ?обязательный: его нужно передавать при каждом вызове.

ecss
@param --variant Variant;
@param --size unit;

Знак ? после имени делает параметр опциональным. Если значение не передано, используется null (или явный дефолт):

ecss
@param --label? string;
@param --label? string: "Submit";

INFO

Значение по умолчанию можно задать только для опционального параметра.

Тип параметра

Все поддерживаемые типы описаны в справочнике типов данных. Тип всегда указывается явно.

boolean

ecss
@param --disabled boolean;
@param --elevated? boolean: true;

В TypeScript: boolean.

string

ecss
@param --label? string: "Submit";
@param --href string;

В TypeScript: string.

number

ecss
@param --columns number;
@param --opacity? number: 1;

В TypeScript: number.

unit

ecss
@param --size unit;
@param --gap? unit: 8px;

В TypeScript: строковый литерал вида "16px", "1.5rem" — число с допустимой единицей.

color

ecss
@param --bg color;
@param --accent? color: #646cff;

В TypeScript: string.

Ссылка на @enum

Параметр принимает одно из значений перечисления. Тип — имя @enum:

ecss
@enum Variant {
  values: "primary", "danger", "ghost";
}

@block Button {
  @param --variant Variant;
}

В TypeScript: union-тип из значений перечисления.

Значение по умолчанию

Дефолт указывается через : и используется когда параметр не передан. Требует ?:

ecss
@param --variant? Variant: "primary";
@param --disabled? boolean: false;
@param --size? unit: 16px;

Опциональный параметр без явного дефолта получает null по умолчанию.

TypeScript-типы

СинтаксисТип TypeScriptДефолт
@param --p Type;Type
@param --p? Type;Type | null | undefinednull
@param --p? Type: value;Type | null | undefinedvalue

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

Параметры можно использовать в условиях @if и как значения CSS-свойств:

ecss
@block Badge {
  @param --status Status;
  @param --outlined? boolean: false;
  @param --gap? unit: 8px;

  padding: 8px 16px;
  column-gap: --gap; // var() не нужен

  @if (--outlined) {
    border: 1px solid currentColor;
  }

  @if (--status == "error") {
    background: #ffe0e0;
    color: #cc0000;
  }
}

Ограничения

  • @param объявляется только внутри @block, не внутри @element
  • Имена параметров уникальны в пределах блока и всех его наследников — дочерний блок не может объявить параметр с именем, уже существующим у родителя

См. также

  • Типы данных — полный справочник по типам
  • @enum — объявление типов-перечислений
  • @if — использование параметров в условиях
  • Core API: blocks — передача параметров при вызове