Компонент аватара
Расширение ui.avatar
— это инструмент для отображения аватаров пользователей в различных стилях и формах. Он поддерживает круглые, шестиугольные и квадратные аватары, а также специальные стили для гостей, пользователей экстранета и акцентных аватаров с градиентами. Компонент автоматически генерирует инициалы, поддерживает изображения и иконки по умолчанию. Позволяет настраивать цвета, размеры и обработку событий.
Подключение
JS (ES6)
import { AvatarRound, AvatarHexagonAccent, AvatarSquareGuest } from 'ui.avatar'; const avatar = new AvatarRound({ title: 'Иван Петров', size: 40, baseColor: '#4a7cf5' }); avatar.renderTo(document.getElementById('avatar-container'));
JS (ES5)
var AvatarRound = require('ui.avatar').AvatarRound; var AvatarHexagonAccent = require('ui.avatar').AvatarHexagonAccent; var avatar = new AvatarRound({ title: 'Иван Петров', size: 40, baseColor: '#4a7cf5' }); avatar.renderTo(document.getElementById('avatar-container'));
PHP
<?php use Bitrix\UI\Extension; // Подключаем расширение ui.avatar Extension::load('ui.avatar'); ?> <div id="avatar-container"></div> <script> BX.ready(function() { var AvatarRound = BX.UI.AvatarRound; var avatar = new AvatarRound({ title: 'Иван Петров', size: 40, baseColor: '#4a7cf5' }); avatar.renderTo(document.getElementById('avatar-container')); }); </script>
Типы аватаров
Расширение ui.avatar
поддерживает три основные формы и несколько стилей для каждой.
- Круглые:
AvatarRound
,AvatarRoundGuest
,AvatarRoundExtranet
,AvatarRoundAccent
,AvatarRoundCopilot
. - Шестиугольные:
AvatarHexagon
,AvatarHexagonGuest
,AvatarHexagonExtranet
,AvatarHexagonAccent
. - Квадратные:
AvatarSquare
,AvatarSquareGuest
,AvatarSquareExtranet
,AvatarSquareAccent
.
Каждый тип наследуется от базового класса AvatarBase
и может иметь дополнительные визуальные эффекты: рамки, градиенты или специальные маски.
Особенности стилей
--base
— минимальный стиль без рамок,--guest
— двойная граница, используется для гостевых пользователей,--extranet
— стиль для пользователей экстранета,--accent
— акцентный стиль с градиентной заливкой,
Параметры конструктора AvatarOptions
Объект параметров, который передавается в конструктор любого аватара. Все параметры опциональны.
Параметртип | Описание | Возможные значения | По умолчанию |
---|---|---|---|
titlestring |
Текст, который отображается как подсказка. Используется для генерации инициалов, если они не заданы | Любая строка | '' |
userNamestring |
Имя пользователя, резервное поле для title |
Любая строка | '' |
initialsstring |
Инициалы, которые отображаются в аватаре. Если не заданы — извлекаются из title |
Строка из 1–2 символов (например, ИП) | null |
userpicPath / picPathstring |
Путь к изображению аватара. picPath — синоним для совместимости |
URL изображения | null |
sizenumber |
Размер аватара в пикселях. Управляет CSS-переменной --ui-avatar-size |
Любое положительное число | 32 |
baseColorstring |
Цвет фона аватара в формате HEX. Например, #4a7cf5 . Преобразуется в RGB для CSS |
HEX-код цвета | null |
borderColorstring |
Цвет внешней границы, в HEX | HEX-код цвета | null |
borderInnerColorstring |
Цвет внутренней границы, в HEX | HEX-код цвета | null |
Методы
Общие методы, которые доступны во всех классах аватаров. Наследуются от AvatarBase
.
Метод | Описание | Параметры | Возвращаемое значение |
---|---|---|---|
renderTo(node: HTMLElement): void |
Отрисовывает аватар в указанном DOM-узле | node — HTML-элемент, в который будет добавлен аватар |
void |
setPic(url: string): this |
Устанавливает изображение аватара по URL | url — путь к изображению |
Экземпляр аватара для цепочки вызовов |
removePic(): this |
Удаляет изображение аватара и восстанавливает инициалы или иконку по умолчанию | — | Экземпляр аватара |
setTitle(text: string): this |
Устанавливает текст подсказки и обновляет инициалы, если они не заданы вручную | text — строка с именем пользователя |
Экземпляр аватара |
setInitials(text: string): this |
Устанавливает инициалы в аватаре | text — строка с инициалами, например, ИП |
Экземпляр аватара |
setSize(size: number): this |
Устанавливает размер аватара в пикселях | size — положительное число |
Экземпляр аватара |
setBaseColor(colorCode: string): this |
Устанавливает цвет фона аватара в формате HEX | colorCode — HEX-код цвета |
Экземпляр аватара |
setBorderColor(colorCode: string): this |
Устанавливает цвет внешней границы | colorCode — HEX-код цвета |
Экземпляр аватара |
setBorderInnerColor(colorCode: string): this |
Устанавливает цвет внутренней границы | colorCode — HEX-код цвета |
Экземпляр аватара |
setEvents(events: {[key: string]: Function}): this |
Назначает обработчики событий, например, click. Добавляет класс --cursor-pointer |
events — объект с парами тип события → функция |
Экземпляр аватара |
getContainer(): HTMLElement |
Возвращает корневой DOM-элемент аватара. Создается при первом вызове | — | HTML-элемент <div class="ui-avatar ..."> |
Примеры использования
1. Простой круглый аватар с инициалами
import { AvatarRound } from 'ui.avatar'; const avatar = new AvatarRound({ title: 'Анна Смирнова', size: 48 }); avatar.renderTo(document.getElementById('container'));
2. Аватар с изображением и обработкой клика
import { AvatarSquareAccent } from 'ui.avatar'; const avatar = new AvatarSquareAccent({ title: 'Иван Иванов', userpicPath: '/images/user.jpg', size: 64 }); avatar.setEvents({ click: () => { console.log('Аватар кликнут!'); } }); avatar.renderTo(document.getElementById('container'));
3. Динамическое изменение аватара
const avatar = new AvatarHexagon({ title: 'Максим Петров', baseColor: '#ff5733' }); avatar .setSize(40) .setBaseColor('#2ecc71') .setPic('/images/new-photo.jpg'); avatar.renderTo(document.getElementById('container'));
4. Аватар для пользователя экстранета
import { AvatarRoundExtranet } from 'ui.avatar'; const extranetAvatar = new AvatarRoundExtranet({ title: 'John Doe', size: 32 }); extranetAvatar.renderTo(document.getElementById('extranet-container'));
Дополнительная информация
- Все аватары используют SVG для масштабируемого отображения и наложения масок.
- Для генерации инициалов используется первая буква каждого слова из
title
, до двух букв. - Аватары с суффиксом
Guest
(например,AvatarRoundGuest
) имеют двойную границу и используют отдельную маску для изображения. - Акцентные аватары
Accent
используют градиентную заливку через CSS-переменные:--ui-avatar-color-gradient-start
--ui-avatar-color-gradient-stop
- Иконка по умолчанию пользователя отображается, если не заданы ни изображение, ни инициалы.
- Метод
setEvents
автоматически добавляет стильcursor: pointer
. - Размер аватара управляется через CSS-переменную
--ui-avatar-size
, что позволяет легко кастомизировать внешний вид.