Компонент аватара
Расширение 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
, что позволяет легко кастомизировать внешний вид.
Пользовательские комментарии
Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.