Системный алерт
Системный алерт — это блок для уведомлений, предупреждений и ошибок в интерфейсе. В него можно передать короткий текст или готовый DOM-узел. Компонент оформляет сообщение по правилам дизайн-системы: задает фон и рамку, может показать изображение слева и кнопку закрытия.
В Bitrix Framework за системный алерт отвечает расширение ui.system.alert. Оно экспортирует класс BX.UI.System.Alert.Alert, объект AlertDesign и Vue-компонент.
Подключить расширение
Если вы подключаете компонент из PHP, загрузите расширение ui.system.alert.
\Bitrix\Main\UI\Extension::load('ui.system.alert');
Если вы работаете в модульном JavaScript, импортируйте класс и константы из ui.system.alert.
import { Alert, AlertDesign } from 'ui.system.alert';
Создать алерт
Чтобы создать алерт, выполните основные действия:
-
Создайте экземпляр
Alert. -
Передайте текст или DOM-узел в параметр
content. -
Получите DOM-узел через
render(). -
Добавьте полученный узел на страницу.
import { Alert, AlertDesign } from 'ui.system.alert';
const alert = new Alert({
design: AlertDesign.tintedSuccess,
content: 'Настройки сохранены.',
});
document.getElementById('alert-container').append(alert.render());

Содержимым может быть не только строка, но и готовый DOM-элемент.
import { Alert, AlertDesign } from 'ui.system.alert';
const content = document.createElement('div');
content.textContent = 'Проверьте обязательные поля.';
const alert = new Alert({
design: AlertDesign.tintedWarning,
content,
});
document.getElementById('alert-container').append(alert.render());
Передать параметры
Конструктор Alert принимает объект с параметрами.
-
design— вариант оформления. По умолчанию компонент используетAlertDesign.tinted. -
hasCloseButton— кнопка закрытия. Передайтеtrue, чтобы показать кнопку. -
leftImage— URL изображения слева. По умолчаниюnull. Если передать пустую строку илиnull, изображение не выводится. -
content— содержимое алерта. Можно передать строку или DOM-узел. Если параметр не передан, компонент хранитnull.Если передать DOM-узел, компонент очистит контейнер и вставит этот узел внутрь блока
.ui-system-alert__content. Если передатьnull, компонент очистит контейнер без вставки нового содержимого. -
events.closeButtonClick— обработчик клика по кнопке закрытия. По умолчаниюnull.
Добавить кнопку закрытия
Чтобы добавить кнопку закрытия и обработать клик по ней, передайте hasCloseButton: true и обработчик в events.closeButtonClick.
Компонент сам не удаляет алерт по клику, а только вызывает обработчик закрытия. Чтобы удалить алерт при закрытии, вызовите destroy() в events.closeButtonClick или в обработчике, заданном через onClose.
import { Alert, AlertDesign } from 'ui.system.alert';
const alert = new Alert({
design: AlertDesign.tintedAlert,
content: 'Не удалось сохранить изменения.',
hasCloseButton: true,
events: {
closeButtonClick: () => {
alert.destroy();
},
},
});
document.getElementById('alert-container').append(alert.render());

Добавить изображение
Чтобы показать изображение слева, передайте URL в leftImage.
import { Alert, AlertDesign } from 'ui.system.alert';
const alert = new Alert({
design: AlertDesign.tinted,
content: 'Новая версия документации готова.',
leftImage: '/images/alert-illustration.svg',
});
document.getElementById('alert-container').append(alert.render());

Выбрать оформление
Оформление компонента задается значениями из AlertDesign.
-
AlertDesign.tinted— синий нейтральный алерт для информационных сообщений. -
AlertDesign.tintedSuccess— зеленый алерт для сообщений об успешном действии. -
AlertDesign.tintedWarning— желтый алерт для предупреждений, которые требуют внимания. -
AlertDesign.tintedAlert— красный алерт для ошибок и критичных сообщений.
Управлять компонентом
Используйте публичные свойства и методы Alert, чтобы управлять состоянием компонента.
-
render()возвращает корневой DOM-узел алерта. Повторный вызов возвращает тот же узел. -
destroy()удаляет DOM-узел алерта и отвязывает обработчик кнопки закрытия. -
contentпозволяет прочитать или заменить содержимое после создания компонента. -
designпозволяет прочитать или заменить вариант оформления. -
leftImageпозволяет прочитать или заменить URL изображения слева. -
hasCloseButtonпозволяет показать или скрыть кнопку закрытия. -
onCloseпозволяет прочитать или заменить обработчик кнопки закрытия. -
containerвозвращает корневой DOM-узел алерта илиnull, если компонент еще не отрисован.
Использовать Vue-компонент
Расширение экспортирует Vue-версию через пространство Vue. Компонент принимает design, hasCloseButton, leftImage и генерирует событие closeButtonClick.
import { Vue, AlertDesign } from 'ui.system.alert';
export const ExampleComponent = {
components: {
SystemAlert: Vue.Alert,
},
data()
{
return {
AlertDesign,
};
},
methods: {
handleClose()
{
// Обработайте закрытие алерта.
},
},
};
Используйте зарегистрированный SystemAlert в шаблоне.
import { AlertDesign } from 'ui.system.alert';
import { Alert } from 'ui.system.alert.vue';
export const ExampleComponent = {
components: {
Alert,
},
data()
{
return {
AlertDesign,
};
},
methods: {
handleClose()
{
// Обработайте закрытие алерта.
},
},
template: `
<Alert
:design="AlertDesign.tintedWarning"
:hasCloseButton="true"
@closeButtonClick="handleClose"
>
Проверьте обязательные поля.
</Alert>
`,
};
Подробнее о работе с Vue в Bitrix Framework читайте в статье Vue.js.