Кнопки ui.buttons
ui.buttons — JavaScript-расширение Bitrix Framework для кнопок в интерфейсе. Оно создает одиночные кнопки Button, разделенные кнопки SplitButton, кнопки с меню, счетчиками, иконками и состояниями.
Используйте ui.buttons, когда нужно добавить действие в клиентский интерфейс или создать кнопку для другого UI-компонента.
JavaScript API создает и меняет кнопку в браузере. PHP-классы Bitrix\UI\Buttons формируют HTML-кнопку на сервере и добавляют данные для инициализации JavaScript-объекта.
Выбрать API для создания кнопки
Используйте API, который соответствует месту формирования кнопки:
-
ButtonиSplitButtonизui.buttons— для модульного JavaScript, когда кнопку создает код в браузере. -
ui.vue3.components.button— для Vue-приложений наui.vue3. -
Bitrix\UI\Buttons— для PHP-кода, когда HTML формирует сервер.
Кнопки ui.buttons можно передавать в системный диалог, окно сообщения и всплывающее окно или меню main.popup.
Подключить расширение
Если вы подключаете кнопки из PHP, загрузите расширение ui.buttons.
\Bitrix\Main\UI\Extension::load('ui.buttons');
Если вы работаете в модульном JavaScript, импортируйте нужные классы и значения из ui.buttons.
import {
Button,
SplitButton,
ButtonColor,
ButtonIcon,
ButtonSize,
ButtonState,
ButtonTag,
AirButtonStyle,
} from 'ui.buttons';
Создать кнопку
Класс Button создает одну кнопку. Передайте текст, оформление и обработчик клика, затем добавьте кнопку в DOM через renderTo().
import { Button, ButtonColor } from 'ui.buttons';
const container = document.getElementById('actions-container');
if (container)
{
const saveButton = new Button({
text: 'Сохранить',
color: ButtonColor.PRIMARY,
onclick: () => {
console.log('Сохранение');
},
});
saveButton.renderTo(container);
}

В JavaScript метод render() возвращает DOM-элемент кнопки. Используйте его, если компонент принимает готовый элемент.
const buttonNode = saveButton.render();
Передать параметры Button
Конструктор Button принимает объект параметров. Чтобы создать кнопку с текстом, передайте text и обработчик.
Содержимое и поведение
|
Параметр |
Тип данных |
Описание |
|
|
|
Текст кнопки. Для |
|
|
|
Идентификатор кнопки внутри объекта |
|
|
|
Пользовательский контекст. Его можно сохранить в кнопке и получить через |
|
|
|
Отключает кнопку при создании. По умолчанию |
|
|
|
Обработчик клика. Получает объект кнопки и событие. По умолчанию не задан. |
|
|
|
Обработчики DOM-событий. Ключ — имя события, значение — функция. По умолчанию пустой объект. |
|
|
|
Параметры меню из |
|
|
|
HTML-атрибуты кнопки. Ключ — имя атрибута, значение — его значение. По умолчанию пустой объект. |
|
|
|
|
|
|
|
Дополнительные CSS-классы кнопки. По умолчанию пустая строка. |
|
|
|
HTML-тег кнопки: |
|
|
|
Адрес для кнопки-ссылки. Значение работает только с тегом |
|
|
|
Добавляет или отключает визуальный признак выпадающего меню. Если передано меню, признак включается автоматически. По умолчанию |
|
|
|
Растягивает кнопку по доступной ширине. По умолчанию |
Оформление
|
Параметр |
Тип данных |
Описание |
|
|
|
Размер кнопки. Значения доступны в |
|
|
|
Цветовой вариант кнопки. Значения описаны в разделе Цвет кнопки без Air Design. По умолчанию |
|
|
|
Иконка кнопки. Для стандартных иконок используйте |
|
|
|
Иконка для свернутой кнопки. По умолчанию |
|
|
|
Положение иконки относительно текста. По умолчанию |
|
|
|
Задает состояние кнопки. По умолчанию |
|
|
|
Максимальная ширина кнопки в пикселях. По умолчанию |
|
|
|
Отключает автоматическое преобразование текста в верхний регистр. По умолчанию |
|
|
|
Делает кнопку круглой. По умолчанию |
|
|
|
Включает оформление, зависящее от темы интерфейса. По умолчанию |
Счетчики и Air Design
|
Параметр |
Тип данных |
Описание |
|
|
|
Счетчик для кнопки без |
|
|
|
Левый или правый счетчик для Air-кнопки. Работает только с |
|
|
|
Включает оформление |
|
|
|
Стиль Air-кнопки. При включенном |
|
|
|
Убирают левые или правые скругления у Air-кнопки, если передать |
Объекты leftCounter и rightCounter принимают параметры счетчика.
|
Параметр |
Тип данных |
Описание |
|
|
|
Значение счетчика. По умолчанию |
|
|
|
Максимальное отображаемое значение. По умолчанию |
|
|
|
Вариант оформления счетчика. Значения описаны в разделе Стиль счетчика. По умолчанию |
|
|
|
Цвет счетчика. Значения описаны в разделе Цвет счетчика. По умолчанию |
|
|
|
Добавляет знак процента к значению. По умолчанию |
Для кнопки-ссылки передайте link. Класс сам установит тег ссылки. Если вызвать setLink() у кнопки с другим тегом, JavaScript-класс выбросит ошибку.
Кнопки с тегами ButtonTag.INPUT и ButtonTag.SUBMIT не поддерживают иконку и счетчик. Для кнопки с иконкой или счетчиком используйте обычный button или ссылку.
import { Button, ButtonColor } from 'ui.buttons';
const openButton = new Button({
text: 'Открыть карточку',
color: ButtonColor.LINK,
link: '/crm/deal/details/42/',
});

Использовать Air Design
Air Design включается параметром useAirDesign: true. Для Air-кнопок используйте style из AirButtonStyle, а счетчики задавайте через leftCounter или rightCounter.
import { Button, AirButtonStyle, ButtonCounterStyle } from 'ui.buttons';
const button = new Button({
text: 'Согласовать',
useAirDesign: true,
style: AirButtonStyle.FILLED_SUCCESS,
rightCounter: {
value: 3,
style: ButtonCounterStyle.FILLED_SUCCESS_INVERTED,
},
onclick: () => {
console.log('Согласование');
},
});

style не меняет кнопку без useAirDesign: true. Если вызвать setStyle() у кнопки без Air Design, стиль не применится.
Для кнопок без Air Design используйте color, size, icon, state и counter.
Выбрать оформление и состояние
Цвет кнопки без Air Design
Для кнопки без Air Design используйте ButtonColor.
|
Значение |
Описание |
|
|
Основная голубая кнопка с заливкой. |
|
|
Темный вариант основной голубой кнопки. |
|
|
Основная кнопка без заливки, с цветной рамкой. |
|
|
Зеленая кнопка с заливкой для сохранения, создания или подтверждения. |
|
|
Темный вариант зеленой кнопки. |
|
|
Светлый вариант зеленой кнопки. |
|
|
Красная кнопка с заливкой для удаления и других критичных действий. |
|
|
Темный вариант красной кнопки. |
|
|
Светлый вариант красной кнопки. |
|
|
Голубая кнопка с менее контрастной заливкой для вторичного действия. |
|
|
Светлый вариант вторичной голубой кнопки. |
|
|
Светлая желтая кнопка для предупреждения. |
|
|
Кнопка без заливки и рамки, оформленная как текстовое действие. |
|
|
Нейтральная кнопка без заливки и рамки. |
|
|
Нейтральная кнопка без заливки, с серой рамкой. |
|
|
Нейтральная кнопка со светло-серой заливкой. |
|
|
Фиолетовая кнопка для AI-сценариев. |
|
|
Зеленая кнопка для сценариев совместной работы. |
|
|
Основная голубая кнопка с контрастной рамкой для выезжающей панели. |
|
|
Полупрозрачная кнопка с белым текстом и рамкой для выезжающей панели. |

Стиль Air-кнопки
Для Air-кнопки используйте AirButtonStyle.
|
Значение |
Описание |
|
|
Основной стиль с плотной заливкой. Используется по умолчанию. |
|
|
Плотная заливка для успешного действия. |
|
|
Плотная заливка для критичного действия. |
|
|
Плотная заливка для сценариев ВitrixGPT. |
|
|
Акцентная градиентная заливка. |
|
|
Светлая заливка для вторичного действия. |
|
|
Светлая заливка для критичного действия или предупреждения. |
|
|
Контурный стиль с основным акцентом. |
|
|
Контурный стиль с первым акцентным вариантом оформления. |
|
|
Контурный стиль со вторым акцентным вариантом оформления. |
|
|
Нейтральный контурный стиль без акцентного цвета. |
|
|
Стиль без заливки и видимой рамки. |
|
|
Стиль без заливки с акцентным цветом содержимого. |
|
|
Нейтральный стиль без заливки и акцентного цвета. |
|
|
Стиль для кнопки в сценарии выбора. |

Цвет счетчика
Цвет счетчика задается значением ButtonCounterColor.
|
Значение |
Описание |
|
|
Красный цвет для ошибок, просроченных элементов и критичных значений. |
|
|
Желтый цвет для предупреждений и значений, которые требуют внимания. |
|
|
Зеленый цвет для успешных состояний и завершенных действий. |
|
|
Основной акцентный цвет интерфейса. |
|
|
Серый нейтральный цвет для второстепенной информации. |
|
|
Светлый нейтральный цвет для темного или насыщенного фона. |
|
|
Белый цвет для контрастного отображения на темном фоне. |
|
|
Темный цвет для светлого фона. |
|
|
Цвет, который зависит от текущей темы интерфейса. |

Стиль счетчика
Стиль определяет сочетание фона, текста и границы счетчика.
|
Значение |
Описание |
|
|
Плотная градиентная заливка с белым текстом. |
|
|
Плотная заливка в основной палитре. |
|
|
Инвертированный вариант основной заливки: цвета фона и текста меняются местами. |
|
|
Плотная заливка для ошибки или критичного значения. Значение по умолчанию для счетчика кнопки. |
|
|
Инвертированный вариант оформления ошибки. |
|
|
Плотная заливка для предупреждения. |
|
|
Плотная заливка для успешного состояния. |
|
|
Инвертированный вариант успешного состояния. |
|
|
Плотная нейтральная заливка без акцентного цвета. |
|
|
Инвертированная нейтральная заливка. |
|
|
Светлая нейтральная подложка без акцентного цвета. |
|
|
Нейтральное контурное оформление без плотной заливки. |

Состояния Button
Состояние обычной кнопки задается значением ButtonState.
|
Значение |
Описание |
|
|
Состояние при наведении указателя на кнопку. |
|
|
Активное состояние. Например, кнопка меню переходит в него, пока меню открыто. |
|
|
Неактивное состояние. Для включения и отключения кнопки используйте метод |
|
|
Состояние выполнения с индикатором времени. Для управления состоянием используйте метод |
|
|
Состояние ожидания выполнения операции. Для управления состоянием используйте метод |
|
|
Состояние ожидания выполнения AI-операции. |

Состояния SplitButton
Состояние разделенной кнопки задается значением SplitButtonState. Общее состояние применяется ко всей кнопке, состояние с префиксом MAIN_ — к основной части, с префиксом MENU_ — к части меню.
|
Значение |
Описание |
|
|
Состояние наведения для всей разделенной кнопки. |
|
|
Состояние наведения для основной части. |
|
|
Состояние наведения для части меню. |
|
|
Активное состояние всей разделенной кнопки. |
|
|
Активное состояние основной части. |
|
|
Активное состояние части меню. |
|
|
Неактивное состояние всей разделенной кнопки. |
|
|
Неактивное состояние основной части. |
|
|
Неактивное состояние части меню. |
|
|
Состояние выполнения с индикатором времени для всей кнопки. |
|
|
Состояние ожидания выполнения операции для всей кнопки. |
|
|
Состояние ожидания выполнения AI-операции для всей кнопки. |

Дополнительные параметры оформления:
-
ButtonSizeзадает размер кнопки:EXTRA_LARGE,LARGE,MEDIUM,SMALL,EXTRA_SMALLилиEXTRA_EXTRA_SMALL. -
ButtonTagзадает тег:BUTTON,LINK,SUBMIT,INPUTилиDIV. ЗначениеSPANэкспортируется, но в текущей реализации не создает отдельный тегspan. -
ButtonIconсодержит стандартные иконки для действий, статусов, навигации, связи, файлов и бизнес-процессов. Строковый идентификатор добавляет иконку из расширенияui.icon-set.api.core. Полный набор описан в статье Иконки.
Добавить меню
Параметр menu принимает настройки меню из main.popup. Если в menu.items есть пункты, кнопка открывает меню по клику и переводит себя в активное состояние на время показа меню. Метод getMenuWindow() возвращает объект Menu, если нужно управлять созданным меню напрямую.
import { Button, ButtonColor } from 'ui.buttons';
const actionsButton = new Button({
text: 'Действия',
color: ButtonColor.LIGHT_BORDER,
menu: {
items: [
{
id: 'edit',
text: 'Редактировать',
onclick: () => {
console.log('Редактировать');
},
},
{
id: 'delete',
text: 'Удалить',
onclick: () => {
console.log('Удалить');
},
},
],
},
});
const container = document.getElementById('actions-container');
if (container)
{
actionsButton.renderTo(container);
}

Управлять кнопкой после создания
После создания экземпляра используйте методы Button, чтобы менять текст, оформление, состояние и обработчики.
Отрисовка
|
Метод |
Что делает |
|
|
Возвращает DOM-элемент кнопки. |
|
|
Добавляет DOM-элемент кнопки в переданный контейнер и возвращает этот элемент. |
|
|
Возвращает DOM-элемент кнопки. |
Текст, оформление и состояние
|
Метод |
Что делает |
|
|
Меняет текст кнопки. |
|
|
Возвращает текущий текст кнопки. |
|
|
Меняет цвет кнопки без Air Design. |
|
|
Возвращает текущее значение из |
|
|
Меняет значение из |
|
|
Возвращает текущее значение из |
|
|
Меняет иконку. |
|
|
Задает иконку для свернутой кнопки. |
|
|
Возвращает текущую иконку или |
|
|
Устанавливает состояние кнопки или очищает его, если передать |
|
|
Возвращает текущее состояние кнопки или |
|
|
Включает или выключает активное состояние. |
|
|
Возвращает |
|
|
Включает или выключает состояние наведения. |
|
|
Возвращает |
|
|
Отключает или включает кнопку. |
|
|
Возвращает |
|
|
Включает или выключает состояние ожидания и блокирует кнопку. |
|
|
Возвращает |
|
|
Включает или выключает состояние с индикатором времени и блокирует кнопку. |
|
|
Возвращает |
|
|
Включает или выключает режим без верхнего регистра. |
|
|
Возвращает |
|
|
Включает или выключает круглую форму кнопки. |
|
|
Возвращает |
|
|
Включает или выключает визуальный признак выпадающего меню. |
|
|
Возвращает |
|
|
Сворачивает кнопку до компактного вида или возвращает обычный вид. |
|
|
Возвращает |
|
|
Включает или выключает растягивание кнопки по ширине. |
|
|
Возвращает |
|
|
Включает или выключает оформление, зависящее от темы интерфейса. |
Ссылки и размеры
|
Метод |
Что делает |
|
|
Устанавливает адрес ссылки. Метод работает только для кнопки с тегом |
|
|
Возвращает адрес ссылки. |
|
|
Задает максимальную ширину кнопки в пикселях. |
|
|
Возвращает максимальную ширину или |
Счетчики и Air Design
|
Метод |
Что делает |
|
|
Меняет счетчик кнопки без |
|
|
Возвращает значение счетчика или |
|
|
Создает или удаляет левый счетчик Air-кнопки. |
|
|
Возвращает объект левого счетчика. |
|
|
Создает или удаляет правый счетчик Air-кнопки. |
|
|
Возвращает объект правого счетчика. |
|
|
Включает или выключает |
|
|
Возвращает |
|
|
Устанавливает стиль Air-кнопки. |
|
|
Возвращает текущий стиль Air-кнопки. |
|
|
Показывает или убирает левые скругления Air-кнопки. |
|
|
Показывает или убирает правые скругления Air-кнопки. |
Меню и события
|
Метод |
Что делает |
|
|
Возвращает объект меню |
|
|
Добавляет обработчик DOM-события. |
|
|
Удаляет обработчик DOM-события. |
|
|
Добавляет обработчики из объекта, где ключ — имя DOM-события. |
|
|
Удаляет обработчики событий из массива имен. |
Атрибуты и дополнительные данные
|
Метод |
Что делает |
|
|
Добавляет или меняет HTML-атрибуты. |
|
|
Возвращает HTML-атрибуты без |
|
|
Добавляет, меняет или удаляет |
|
|
Возвращает |
|
|
Добавляет CSS-класс. |
|
|
Удаляет CSS-класс. |
|
|
Возвращает значение тега из |
|
|
Задает идентификатор кнопки. |
|
|
Возвращает идентификатор, переданный в |
|
|
Сохраняет пользовательский контекст в объекте кнопки. |
|
|
Возвращает сохраненный пользовательский контекст. |
|
|
Добавляет эффект перелива. |
|
|
Удаляет эффект перелива. |
import { Button, ButtonColor, ButtonState } from 'ui.buttons';
const button = new Button({
text: 'Экспорт',
color: ButtonColor.PRIMARY,
});
button.setWaiting(true);
BX.ajax.runAction('example.Export.start')
.then(() => {
button.setWaiting(false);
button.setText('Файл готов');
button.setState(ButtonState.ACTIVE);
})
.catch(() => {
button.setWaiting(false);
})
;
Создать разделенную кнопку
SplitButton создает кнопку из двух частей: основной кнопки и кнопки меню. Основная часть выполняет главное действие, а правая часть открывает меню.
import {
SplitButton,
ButtonColor,
SplitSubButtonType,
} from 'ui.buttons';
const splitButton = new SplitButton({
text: 'Создать',
color: ButtonColor.PRIMARY,
menuTarget: SplitSubButtonType.MENU,
mainButton: {
onclick: () => {
console.log('Создать объект');
},
},
menu: {
items: [
{
id: 'create-task',
text: 'Создать задачу',
onclick: () => {
console.log('Создать задачу');
},
},
{
id: 'create-event',
text: 'Создать событие',
onclick: () => {
console.log('Создать событие');
},
},
],
},
});
const container = document.getElementById('create-container');
if (container)
{
splitButton.renderTo(container);
}

SplitButton принимает параметры Button, кроме tag, round и ButtonState. Для него используйте состояния SplitButton.
|
Параметр |
Тип данных |
Описание |
|
|
|
Параметры основной части. Можно передать |
|
|
|
Параметры правой части, которая открывает меню. Принимает тот же набор параметров, что и |
|
|
|
Определяет элемент привязки меню. |
|
|
|
Заменяет правую кнопку переключателем. Объект принимает параметры из |
|
|
|
Задает состояние всей кнопки или отдельной части. По умолчанию |
Если передать switcher: true или объект настроек переключателя, вместо кнопки меню будет создана часть с переключателем. Получить переключатель можно через getSwitcher().
Методы SplitButton работают с контейнером разделенной кнопки, основной кнопкой и кнопкой меню.
|
Метод |
Что делает |
|
|
Возвращает основную часть кнопки. |
|
|
Возвращает часть, которая открывает меню. |
|
|
Возвращает часть с переключателем, если она создана. |
|
|
Возвращает объект переключателя или |
|
|
Возвращает часть кнопки, к которой привязано меню. |
|
|
Меняет текст основной части. |
|
|
Возвращает текст основной части. |
|
|
Меняет счетчик основной части. |
|
|
Возвращает счетчик основной части или |
|
|
Создает или удаляет левый счетчик основной части Air-кнопки. |
|
|
Создает или удаляет правый счетчик основной части Air-кнопки. |
|
|
Устанавливает ссылку для основной части. |
|
|
Возвращает ссылку основной части. |
|
|
Устанавливает состояние разделенной кнопки. |
|
|
Отключает или включает обе части кнопки. |
Использовать готовые кнопки
Расширение экспортирует классы с локализованным текстом и базовым оформлением. Все они принимают параметры Button, которыми можно переопределить значения по умолчанию. Назначение цветов описано в разделе Цвет кнопки без Air Design.
|
Класс |
Значения по умолчанию |
|
|
Текст «Добавить», цвет |
|
|
Текст «Применить», цвет |
|
|
Текст «Отменить», цвет |
|
|
Текст «Закрыть», цвет |
|
|
Текст «Создать», цвет |
|
|
Текст «Сохранить», цвет |
|
|
Текст «Отправить», цвет |
|
|
Иконка |

Для разделенных кнопок доступны AddSplitButton, ApplySplitButton, CancelSplitButton, CloseSplitButton, CreateSplitButton, SaveSplitButton и SendSplitButton. Они используют те же тексты и цвета, что и одноименные одиночные кнопки.
import { SaveButton } from 'ui.buttons';
const button = new SaveButton({
onclick: () => {
console.log('Сохранение');
},
});
const container = document.getElementById('actions-container');
if (container)
{
button.renderTo(container);
}
Использовать Vue-компонент
Расширение ui.vue3.components.button экспортирует Vue-компонент Button. Компонент создает Air-кнопку на основе класса Button из ui.buttons, поэтому использует те же размеры, состояния, стили Air-кнопки и наборы иконок.
Если вы подключаете Vue-компонент из PHP, загрузите расширение ui.vue3.components.button.
\Bitrix\Main\UI\Extension::load('ui.vue3.components.button');
В модульном JavaScript импортируйте компонент и нужные значения из этого расширения.
import {
Button,
AirButtonStyle,
ButtonIcon,
ButtonSize,
} from 'ui.vue3.components.button';
Передать свойства и обработать клик
Основные свойства Vue-компонента соответствуют параметрам Button.
|
Свойство |
Тип данных |
Описание |
|
|
|
Задает HTML-атрибут |
|
|
|
Задает внутренний идентификатор объекта |
|
|
|
Добавляет CSS-классы кнопки при создании компонента. По умолчанию ``. |
|
|
|
Задает текст кнопки. По умолчанию пустая строка. |
|
|
|
Создает кнопку-ссылку с указанным адресом. По умолчанию пустая строка. |
|
|
|
Задает размер кнопки. По умолчанию ``. |
|
|
|
Задает состояние кнопки. По умолчанию ``. |
|
|
|
Задает стиль Air-кнопки. По умолчанию |
|
|
|
Отключает кнопку. По умолчанию |
|
|
|
Показывает состояние ожидания и блокирует кнопку. По умолчанию |
|
|
|
Задает HTML-атрибут |
|
|
|
Добавляет иконку слева. Можно передать значение из |
|
|
|
Задает стандартную иконку для свернутой кнопки. По умолчанию |
|
|
|
Задают значения счетчиков слева и справа. Положительное значение показывает счетчик, |
|
|
|
Добавляет визуальный признак выпадающего меню. Компонент не создает меню. По умолчанию |
|
|
|
Растягивает кнопку по доступной ширине. По умолчанию |
|
|
|
Сворачивает кнопку до компактного вида. По умолчанию |
|
|
|
Управляет преобразованием текста в верхний регистр. По умолчанию |
|
|
|
Убирают скругления с соответствующей стороны. По умолчанию |
|
|
|
Включает или выключает эффект перелива. По умолчанию |
|
|
|
Добавляет |
Компонент генерирует событие click без аргументов.
Компонент обновляет кнопку при изменении свойств:
-
содержимое и состояние —
text,state,disabled,loading,leftIcon,collapsedIconи значения счетчиков; -
оформление —
size,style,dropdown,wide,collapsed,noCaps,removeLeftCorners,removeRightCorners,shimmerиtype.
Свойства id, idKey, class, link и dataset применяются только при создании кнопки.
Vue-компонент всегда включает Air Design. Для основного оформления используйте AirButtonStyle, а не ButtonColor. Расширение также экспортирует ButtonColor, ButtonIcon, ButtonState, ButtonTag и ButtonCounterColor.
import {
Button,
AirButtonStyle,
ButtonSize,
} from 'ui.vue3.components.button';
export const SaveButton = {
components: {
Button,
},
setup(): Object
{
return {
AirButtonStyle,
ButtonSize,
};
},
data(): Object
{
return {
isLoading: false,
};
},
methods: {
handleClick()
{
this.isLoading = true;
},
},
template: `
<Button
text="Сохранить"
:style="AirButtonStyle.FILLED"
:size="ButtonSize.MEDIUM"
:loading="isLoading"
:rightCounterValue="3"
@click="handleClick"
/>
`,
};
После завершения асинхронной операции присвойте isLoading значение false, чтобы выключить состояние ожидания.
Подробнее о регистрации и запуске Vue-приложения читайте в статье Vue.js.
Использовать PHP-классы
PHP-классы Bitrix\UI\Buttons нужны, когда кнопку формирует серверный код. Метод render() возвращает HTML и по умолчанию добавляет JavaScript-инициализацию через ButtonManager.createFromNode().
Класс Bitrix\UI\Buttons\Button по умолчанию создает кнопку с цветом Color::SUCCESS. Передайте color, если нужен другой вариант оформления.
Основные параметры совпадают с параметрами Button. PHP-классы дополнительно принимают настройки серверной разметки.
|
Параметр |
Описание |
|
|
Включает |
|
|
Задает стиль счетчика из |
|
|
Задает |
|
|
Альтернативное имя обработчика клика. Принимает те же значения, что и |
|
|
Добавляет CSS-классы из строки, разделенной пробелами. По умолчанию пустая строка. |
|
|
Добавляет CSS-классы из массива. По умолчанию пустой массив. |
|
|
Добавляет встроенные стили из массива. По умолчанию пустой массив. |
Для обработчиков используйте JsCode, если нужно передать готовый JavaScript-код, или JsHandler, если обработчик уже объявлен как JavaScript-функция.
В PHP доступны готовые классы AddButton, ApplyButton, CancelButton, CloseButton, CreateButton, SaveButton, SendButton и SettingsButton. Для всех перечисленных классов, кроме SettingsButton, есть разделенные варианты в пространстве имен Bitrix\UI\Buttons\Split.
use Bitrix\UI\Buttons\Button;
use Bitrix\UI\Buttons\Color;
use Bitrix\UI\Buttons\JsCode;
use Bitrix\UI\Buttons\Size;
\Bitrix\Main\UI\Extension::load('ui.buttons');
$button = new Button([
'text' => 'Сохранить',
'color' => Color::PRIMARY,
'size' => Size::MEDIUM,
'onclick' => new JsCode("console.log('Сохранение');"),
]);
$button->setUniqId('uibtn-example');
echo $button->render();
Если нужно получить JavaScript-объект кнопки, которую уже отрисовал PHP-класс, используйте ButtonManager.createFromNode(node) или ButtonManager.createByUniqId(id).
import { ButtonManager } from 'ui.buttons';
const button = ButtonManager.createByUniqId('uibtn-example');
if (button)
{
button.setWaiting(true);
}
Кнопку можно настроить цепочкой методов.
use Bitrix\UI\Buttons\Button;
use Bitrix\UI\Buttons\Color;
\Bitrix\Main\UI\Extension::load('ui.buttons');
$button =
(new Button())
->setText('Подождите')
->setColor(Color::LIGHT_BORDER)
->setWaiting()
;
echo $button->render();
Для разделенной кнопки используйте Bitrix\UI\Buttons\Split\Button.
use Bitrix\UI\Buttons\JsCode;
use Bitrix\UI\Buttons\Split\Button as SplitButton;
use Bitrix\UI\Buttons\Split\Type;
\Bitrix\Main\UI\Extension::load('ui.buttons');
$button = new SplitButton([
'text' => 'Создать',
'mainButton' => [
'onclick' => new JsCode("console.log('Создать объект');"),
],
'menuTarget' => Type::MENU,
'menu' => [
'items' => [
[
'id' => 'create-task',
'text' => 'Создать задачу',
'onclick' => new JsCode("console.log('Создать задачу');"),
],
],
],
]);
echo $button->render();
В PHP-классах для Air Design используется параметр 'air' => true или метод setAirDesign(). Метод включает Air-оформление только если в окружении определена константа AIR_SITE_TEMPLATE.