[ELMA4] Кнопки (Buttons)

Кнопки позволяют создать html-элемент с различными параметрами:

  • стиль;
  • размер;
  • действие на клик;
  • URL-ссылка;
  • текст;
  • иконка;
  • формат отображения.

Кнопки полезно использовать, когда необходимо выровнять иконку с текстом. Кроме того, для кнопок можно задать шаблон отображения.

Методы для работы с кнопками

C#

HtmlHelper.Button – метод, возвращающий строитель кнопок. Перегрузки метода:

  • Button(this HtmlHelper htmlHelper) – метод, возвращающий строитель кнопок и принимающий на вход только HtmlHelper;
  • Button(this HtmlHelper htmlHelper, ActionButton button) – принимает на вход модель кнопки ActionButton;
  • Button(this HtmlHelper htmlHelper, string icon, string text) – принимает на вход путь файла иконки и текст кнопки.

HtmlHelper.ImageButton – метод для построения кнопки с иконкой. Существует несколько перегрузок данного метода:

  • ImageButton(this HtmlHelper htmlHelper, string imageUrl) принимает на вход путь до иконки и возвращает строитель кнопок, аналогичный HtmlHelper.Button();
  • ImageButton(this HtmlHelper htmlHelper, string imageUrl, string alt, string clickAction, object imgHtmlAttributes = null, object anchorHtmlAttributes = null, string text = "", bool textRight = true) принимает на вход: imageUrl ссылка на изображение, alt наименование картинки, clickAction действие на клик. Необязательные параметры: imgHtmlAttributes атрибуты иконки, anchorHtmlAttributes атрибуты кнопки, text текст, textRight отобразить текст справа. Возвращает готовую html-разметку кнопки с иконкой.

HtmlHelper.SwitchButton(this HtmlHelper htmlHelper, SwitchButtonModel model) – метод, возвращающий разметку кнопки-переключателя. Принимает на вход модель кнопки-переключателя.

HtmlHelper.FilterButton(this HtmlHelper htmlHelper) – метод для построения кнопки-фильтра. Возвращает строитель кнопки-фильтра. Подробнее: FilterButtonBuilder.

HtmlHelper.ArrowButton – метод для построения разметки кнопки с галочкой. Возвращает строку с разметкой. Перегрузки:

  • ArrowButton(this HtmlHelper htmlHelper, string name, string arrowTagId, bool isOpen) – принимает на вход название кнопки, идентификатор кнопки с галочкой, положение галки: true, если раскрыта, иначе – false;
  • ArrowButton(this HtmlHelper htmlHelper, MvcHtmlString name, string arrowTagId, bool isOpen) – принимает на вход название кнопки типа строки разметки, идентификатор кнопки с галочкой, положение галки: true, если раскрыта, иначе – false.

Основные методы строителя кнопок Html.Button():

  • Uid – установить уникальный идентификатор;
  • Text – установить текст для кнопки;
  • IconAttributes – установить атрибуты для иконки;
  • IconUrl – указать иконку для кнопки;
  • Disabled – сделать кнопку отключенной;
  • Style – задать стиль (цвет) кнопки. Подробнее в ButtonStyle;
  • Size – установить размер кнопки. Подробнее в UISize;
  • Template – задать шаблон содержимого кнопки. Может быть полезно, когда внутри кнопки необходимо отобразить собственную разметку;
  • Url – установить переход по ссылке на кнопку;
  • Click – установить действие на клик по кнопке;
  • AsLink – отобразить кнопку в виде ссылки;
  • Circle – отобразить кнопку в виде круга. Может быть полезно при отображении одной иконки;
  • NoFill – отобразить кнопку без заливки;
  • NoBorder – отобразить кнопку без рамки;
  • AsSwitcher – отобразить кнопку в виде переключателя;
  • Checked – задать значение для переключателя "Выбран / Не выбран";
  • ReadOnly – отобразить кнопку только для чтения (без границ и не работает наведение указателем). Может быть полезно, когда необходимо выровнять текст и иконку;
  • ReadOnlyHover – отобразить кнопку только для чтения (отображает кнопку без границ);
  • Buttons – добавить кнопки во внутрь кнопки. Подробнее можно посмотреть в ActionButtonBuilder.

Примеры использования:

//  Рендер круглой кнопки с иконкой большого размера красного цвета. При клике сработает вызов js-метода someAction()
@(Html.ImageButton("#control.svg")
    .Size(UISize.Large)
    .Style(ButtonStyle.Red)
    .Click("someAction()"))
//  Рендер кнопки без рамки и без заливки
@(Html.Button()
    .Text(SR.T("Кнопка без рамки и заливки"))
    .NoBorder()
    .NoFill())
//  Рендер кнопки c рамкой синего цвета
@(Html.Button()
    .Text(SR.T("Кнопка синего цвета"))
    .Style(ButtonStyle.Blue))
//  Рендер кнопки-переключателя
@Html.SwitchButton(new SwitchButtonModel
{
    Prefix = "Prefix",
    Target = "#SomeItem",
    EnumValues = new List<Enum> { ButtonStyle.Red, ButtonStyle.Blue },
    Value = (int)ButtonStyle.Red
})
//  Рендер кнопки-фильтра
@Html.FilterButton().Text(SR.T("Кнопка-фильтр"))
//  Рендер кнопки с галкой
@Html.ArrowButton(SR.T("Кнопка с галкой"), "arrowButton", true)

Пример отображения кнопок, отрисованных с помощью C#

JS

В JavaScript для создания кнопок может использоваться метод elma.Button.create(options).
Метод возвращает HtmlElement.
Для получения разметки необходимо обратиться к свойству outerHTML.
Данные кнопки имеют аналогичное представление, что и Button в C#.
В качестве опций используются:

  • url – ссылка;
  • text – текст кнопки;
  • attributes – атрибуты кнопки;
  • click – действие на клик;
  • isChecked – значение для переключателя "Выбран / Не выбран";
  • asLink – отобразить кнопку как ссылку;
  • disabled – отключить кнопку;
  • isCircle – отобразить кнопку в виде круга;
  • noFill – отобразить кноку без заливки;
  • noBorder – отобразить кнопку без рамки;
  • readOnly – отобразить кнопку только для чтения;
  • readOnlyHover – отобразить кнопку только для чтения, но с заливкой при наведении;
  • style – стиль кнопки.

Методы, доступные в elma.Button:

  • toggleCheck – переключить состояние кнопки в противоположное, если не указано состояние. Если указан параметр selected, то состояние переключается в значение, указанное в selected. Аргументы: button кнопка, selected состояние кнопки, необязательный параметр;
  • isCheck – получить состояние кнопки. Аргумент: button кнопка;
  • setStyle – установить стиль для кнопки. Если стиль не задан или не входит в множество допустимых стилей – устанавливает стиль по умолчанию. Аргументы: button кнопка, style стиль кнопки.

Примеры использования:

//  Создание кнопки
var deleteButton = elma.Button.create({
    iconUrl: '#basket.svg',
    noBorder: true,
    isCircle: true,
    attributes: {
        tooltiptext: SR.T('Удалить')
    }
});
//  ...
//  установим стиль на красный
elma.Button.setStyle(deleteButton, "red");

Особенности работы с подкнопками

Подкнопки в кнопке построены на меню. При создании подкнопок вызывается Html.ActionMenu – стандартная реализация меню. При этом есть методы в JavaScript для работы с ним, расположенные в Elma.ElmaMenuMgr.

Обновление с ELMA3 на ELMA4

Некоторые методы были отмечены как устаревшие, необходимо заменить их на актуальные. Отмечены устаревшими:

public static string ImageButton(
    UrlHelper url,
    string imageUrl,
    string alt,
    string clickAction,
    object imgHtmlAttributes = null,
    object anchorHtmlAttributes = null,
    string text = "",
    bool textRight = true
)

public static string ImageLink(
    UrlHelper url,
    string imageUrl,
    string text,
    string href,
    object imgHtmlAttributes = null,
    object anchorHtmlAttributes = null,
    string title = "",
    bool textRight = true
)

public static string ImageHighlightLink(
    UrlHelper url,
    string imageUrl,
    string highlightText,
    string href,
    object imgHtmlAttributes = null,
    object anchorHtmlAttributes = null,
    string title = "",
    string openTag = null,
    string closeTag = null
)