Системный хайлайтер

Системный хайлайтер — это CSS-обводка для временного выделения элемента интерфейса. Расширение добавляет анимированную градиентную рамку и при необходимости внешнее свечение.

Хайлайтер используют, когда нужно привлечь внимание к уже существующему блоку: новому элементу, результату действия, важному состоянию или области, с которой пользователь должен продолжить работу.

Расширение ui.system.highlighter работает через CSS-классы и CSS-переменные на DOM-элементе.

Подключить расширение

Если вы подключаете стили из PHP, загрузите расширение ui.system.highlighter.

\Bitrix\Main\UI\Extension::load('ui.system.highlighter');
        

Если хайлайтер нужен внутри собственного расширения, добавьте import 'ui.system.highlighter'; .

После подключения добавьте класс ui-highlighter к элементу, который нужно выделить.

<div class="task-card ui-highlighter">
            Новая задача
        </div>
        

Для корректного отображения рамки задайте выделяемому элементу position: relative.

.task-card {
            position: relative;
            border-radius: 12px;
        }
        

Добавить свечение

Чтобы добавить внешнее свечение, передайте класс —with-glow.

<div class="task-card ui-highlighter —with-glow">
            Новая задача
        </div>
        

После завершения цикла анимации свечение плавно скрывается. Рамка остается на элементе.

Если у элемента или его родителя задан overflow: hidden, внешнее свечение может обрезаться. Учитывайте это для карточек, строк таблиц и элементов внутри прокручиваемых контейнеров.

Выбрать оформление

Цветовая схема задается модификаторами.

  • Без модификатора — синяя рамка с зеленым переходом. Используется как базовое выделение.

  • —success — зеленая рамка с зеленым переходом. Подходит для успешного состояния или завершенного действия.

  • —alert — оранжевая рамка с желтым переходом. Подходит для предупреждения или состояния, которое требует внимания.

<div class="task-card ui-highlighter —success —with-glow">
            Задача выполнена
        </div>
        
        <div class="task-card ui-highlighter —alert —with-glow">
            Проверьте срок задачи
        </div>
        

Настроить толщину рамки и свечения

Толщину рамки можно задать готовыми классами.

  • —border-md — рамка 1px.

  • —border-lg — рамка 2px.

Толщину свечения задают классы —glow-md и —glow-lg. Эти классы работают только вместе с —with-glow.

  • —glow-md — свечение 1px.

  • —glow-lg — свечение 2px.

<div class="task-card ui-highlighter —with-glow —border-lg —glow-lg">
            Важное изменение
        </div>
        

Задать собственные значения

Хайлайтер поддерживает CSS-переменные. Передайте их в стиле элемента или в отдельном CSS-классе на том же элементе.

  • —ui-highlighter-radius — радиус скругления рамки. Значение по умолчанию — 29px.

  • —ui-highlighter-border-size — толщина рамки. Значение по умолчанию — 1px.

  • —ui-highlighter-glow-size — толщина свечения. Значение по умолчанию — 2px.

  • —ui-highlighter-animation-duration — длительность одного оборота градиента. Значение по умолчанию — 5s.

  • —ui-highlighter-iteration-count — количество оборотов градиента. Значение по умолчанию — 2.

<div class="pipeline-stage ui-highlighter —with-glow">
            Стадия изменена
        </div>
        
.pipeline-stage {
            position: relative;
            border-radius: 8px;
            —ui-highlighter-radius: 8px;
            —ui-highlighter-border-size: 2px;
            —ui-highlighter-glow-size: 4px;
            —ui-highlighter-animation-duration: 3s;
            —ui-highlighter-iteration-count: 3;
        }
        

Задайте для —ui-highlighter-radius то же значение, что и для border-radius элемента. Так рамка повторит форму блока и не будет выглядеть отдельной от него.

Ограничения компонента

Хайлайтер отвечает только за визуальное выделение. Он не добавляет и не удаляет классы, не меняет содержимое элемента и не обрабатывает клики.

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

В примере после изменения задачи компонент добавляет хайлайтер к карточке, а затем снимает выделение.

import { Dom } from 'main.core';
        
        const taskCard = document.querySelector('.task-card');
        
        if (taskCard)
        {
            // Показать выделение после действия.
            Dom.addClass(taskCard, ['ui-highlighter', '—with-glow', '—success']);
        
            setTimeout(() => {
                // Убрать выделение, когда оно больше не нужно.
                Dom.removeClass(taskCard, ['ui-highlighter', '—with-glow', '—success']);
            }, 12000);
        }