Стандартные провайдеры в ui.entity-selector
Bitrix Framework регистрирует стандартные провайдеры данных для пользователей, отделов, проектов, чатов и чат-ботов. Чтобы использовать такой тип объекта в Dialog или TagSelector, подключите модуль, который его регистрирует.
В JavaScript передавайте идентификатор стандартного провайдера в поле entities[].id. Например, для провайдера user используйте entities: [{ id: 'user' }].
Параметры провайдера передавайте в EntityOptions.options. Связь настроек dynamicLoad, dynamicSearch, preselectedItems и методов PHP-провайдера описана в статье Провайдеры данных.
Если нужного типа объекта нет среди стандартных, зарегистрируйте собственный провайдер данных.
user
Провайдер Bitrix\Socialnetwork\Integration\UI\EntitySelector\UserProvider ищет и возвращает пользователей текущей установки. Модуль: socialnetwork. entityId: user.
Провайдер автоматически заполняет вкладку «Последние» первыми пользователями текущей установки и историей выбора текущего контекста. Если установлен модуль intranet, провайдер может добавить в футер диалога ссылку приглашения сотрудника или внешнего пользователя.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{
id: 'user',
options: {
intranetUsersOnly: true,
inviteEmployeeLink: false,
},
},
],
});
Отбор пользователей
| Параметр | Тип | Что делает |
|---|---|---|
userId |
int или int[] |
Ограничивает выбор списком разрешенных идентификаторов пользователей |
!userId |
int или int[] |
Исключает пользователей по списку идентификаторов |
activeUsers |
boolean |
Отбирает только активных (true) или только уволенных (false) пользователей. Если не задано, отбираются активные пользователи |
intranetUsersOnly |
boolean |
Показывает только сотрудников компании |
extranetUsersOnly |
boolean |
Показывает только внешних пользователей |
onlyWithEmail |
boolean |
Показывает только пользователей с заполненным email |
emailUsers |
boolean |
Включает в выборку почтовых пользователей. По умолчанию false |
emailUsersOnly |
boolean |
Показывает только почтовых пользователей |
myEmailUsers |
boolean |
Ограничивает почтовых пользователей теми, кого пригласил текущий пользователь. По умолчанию true |
networkUsers |
boolean |
Включает в выборку пользователей из Битрикс24.Network. По умолчанию false |
networkUsersOnly |
boolean |
Показывает только пользователей из Битрикс24.Network |
collabers |
boolean |
Включает в выборку коллаберов. По умолчанию true |
Оформление и футер
| Параметр | Тип | Что делает |
|---|---|---|
nameTemplate |
string |
Шаблон формата имени пользователя в заголовке элемента. По умолчанию берется формат имени сайта |
selectFields |
string[] |
Дополнительные поля профиля пользователя, которые провайдер добавит в customData элемента, например workPosition, email, phone |
showInvitationFooter |
boolean |
Показывает в футере диалога ссылку приглашения. По умолчанию true |
inviteEmployeeLink |
boolean |
Показывает ссылку приглашения сотрудника. По умолчанию true |
inviteExtranetLink |
boolean |
Показывает ссылку приглашения внешнего пользователя. По умолчанию false |
inviteGuestLink |
boolean |
Показывает ссылку приглашения гостя. По умолчанию false |
footerInviteIntranetOnly |
boolean |
Ограничивает приглашение только сотрудниками компании. По умолчанию совпадает с состоянием функциональности совместной работы (collab) в текущей установке |
lockGuestLink |
boolean |
Блокирует ссылку приглашения гостя. По умолчанию false |
lockGuestLinkFeatureId |
string |
Идентификатор тарифного ограничения, из-за которого заблокирована ссылка приглашения гостя |
Загрузка
| Параметр | Тип | Что делает |
|---|---|---|
fillDialog |
boolean |
Разрешает автоматически заполнять диалог пользователями и вкладку «Последние». По умолчанию true |
maxUsersInRecentTab |
number |
Максимум пользователей во вкладке «Последние». По умолчанию 50, сервер не отдаст больше 50 |
searchLimit |
number |
Максимум пользователей в результатах поиска. По умолчанию 100, сервер не отдаст больше 100 |
department
Провайдер Bitrix\Intranet\Integration\UI\EntitySelector\DepartmentProvider строит дерево структуры компании. Модули: intranet, socialnetwork, iblock. entityId: department.
Провайдер автоматически добавляет вкладку «Отделы» с деревом подразделений. Режим selectMode определяет, что можно выбрать: сотрудников, отделы целиком или оба варианта.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{
id: 'department',
options: {
selectMode: 'usersAndDepartments',
allowFlatDepartments: true,
},
},
],
});
| Параметр | Тип | Что делает |
|---|---|---|
selectMode |
'usersOnly', 'departmentsOnly' или 'usersAndDepartments' |
Что можно выбрать в диалоге. По умолчанию usersOnly |
allowFlatDepartments |
boolean |
Добавляет для режима usersAndDepartments вариант «сотрудники отдела без вложенных подразделений». По умолчанию false |
allowOnlyUserDepartments |
boolean |
Ограничивает дерево отделами текущего пользователя. По умолчанию false |
allowSelectRootDepartment |
boolean |
Разрешает выбрать корневой отдел (компанию целиком). По умолчанию true для режима departmentsOnly, иначе false |
hideChatBotDepartment |
boolean |
Скрывает служебный отдел чат-бота. По умолчанию true |
fillDepartmentsTab |
boolean |
Разрешает автоматически заполнять вкладку «Отделы» при открытии диалога. По умолчанию true |
fillRecentTab |
boolean |
Разрешает автоматически заполнять вкладку «Последние» отделами. Работает только вместе с selectMode: 'departmentsOnly'. По умолчанию false |
depthLevel |
number |
Глубина дерева, которую провайдер загружает во вкладку «Последние». Учитывается, только если включен fillRecentTab. По умолчанию 1 |
shouldCountSubdepartments |
boolean |
Добавляет в customData элемента количество вложенных подразделений. Работает для режимов departmentsOnly и usersAndDepartments. По умолчанию false |
shouldCountUsers |
boolean |
Добавляет в customData элемента количество сотрудников отдела. Работает для режимов usersOnly и usersAndDepartments. По умолчанию false |
userOptions |
Object |
Параметры для внутреннего UserProvider, который отдел использует для списка сотрудников. Принимает те же параметры, что и провайдер user |
project
Провайдер Bitrix\Socialnetwork\Integration\UI\EntitySelector\ProjectProvider возвращает группы и проекты, в которых участвует текущий пользователь. Модуль: socialnetwork. entityId: project.
Провайдер автоматически добавляет вкладку «Группы» и, если пользователь может создать проект, футер со ссылкой создания.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{
id: 'project',
options: {
extranet: false,
type: ['group'],
},
},
],
});
Отбор проектов
| Параметр | Тип | Что делает |
|---|---|---|
projectId |
int или int[] |
Ограничивает выбор списком разрешенных идентификаторов проектов |
!projectId |
int или int[] |
Исключает проекты по списку идентификаторов |
type |
string[] |
Ограничивает выбор типами проектов. В примерах используется group |
!type |
string[] |
Исключает типы проектов из выбора. Используйте те же значения, что и в type |
project |
boolean |
Показывает только группы, отмеченные как проект |
extranet |
boolean |
Показывает только внешние (true) или только внутренние (false) проекты |
landing |
boolean |
Показывает только проекты, отмеченные для публикации на витрине |
features |
Object |
Ограничивает выбор проектами, где у пользователя есть указанные права на функциональность, например { tasks: ['view'] } |
checkCollabInviteOption |
boolean |
Учитывает настройку «кто может приглашать» при выборе для совместной работы (collab). По умолчанию false |
Полный набор значений type зависит от типов проектов, доступных в модуле socialnetwork. Если значение не подтверждено для текущей установки, не передавайте этот параметр.
Загрузка и футер
| Параметр | Тип | Что делает |
|---|---|---|
fillRecentTab |
boolean |
Разрешает автоматически заполнять вкладку «Последние» проектами. Если не задано, включается автоматически, если project — единственный тип объекта в диалоге |
maxProjectsInRecentTab |
number |
Максимум проектов во вкладке «Последние». По умолчанию 30, сервер не отдаст больше 30 |
searchLimit |
number |
Максимум проектов в результатах поиска. По умолчанию 100, сервер не отдаст больше 100 |
createProjectLink |
boolean |
Показывает в футере ссылку создания проекта. Если не задано, показывается автоматически, если project — единственный тип объекта в диалоге |
checkFeatureForCreate |
boolean |
Скрывает ссылку создания проекта, если в текущей установке отключена функциональность групп. По умолчанию false |
lockProjectLink |
boolean |
Блокирует ссылку создания проекта. По умолчанию false |
lockProjectLinkFeatureId |
string |
Идентификатор тарифного ограничения, из-за которого заблокирована ссылка создания проекта |
shouldSelectProjectDates |
boolean |
Добавляет в customData элемента даты начала и окончания проекта. По умолчанию false |
shouldSelectDialogId |
boolean |
Добавляет в customData элемента идентификатор диалога чата проекта. По умолчанию false |
Для выбора кодов доступа проектов используйте провайдер Bitrix\Socialnetwork\Integration\UI\EntitySelector\ProjectAccessCodesProvider. entityId провайдера — project-access-codes.
const dialog = new Dialog({
targetNode: button,
context: 'MY_MODULE_PROJECT_ACCESS',
entities: [
{
id: 'project-access-codes',
dynamicLoad: true,
dynamicSearch: true,
},
],
});
meta-user
Провайдер Bitrix\Socialnetwork\Integration\UI\EntitySelector\MetaUserProvider добавляет в диалог составные элементы, которые обозначают группу пользователей, а не одного человека. Модуль: socialnetwork. entityId: meta-user.
Провайдер возвращает элементы all-users («Все сотрудники» или «Все пользователи») и other-users («Остальные сотрудники» или «Остальные пользователи»). Сценарий, который использует диалог, сам разворачивает эти значения в список конкретных пользователей.
const dialog = new Dialog({
targetNode: button,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{ id: 'user' },
{
id: 'meta-user',
options: {
'all-users': { title: 'Все сотрудники компании' },
},
},
],
});
Параметры all-users и other-users принимают одинаковый набор вложенных полей:
| Параметр | Тип | Что делает |
|---|---|---|
allowView |
boolean |
Определяет, показывать ли элемент в диалоге. По умолчанию виден всем пользователям, если модуль intranet не установлен, иначе — только сотрудникам компании |
title |
string |
Текст заголовка элемента. По умолчанию — локализованное «Все сотрудники»/«Все пользователи» или «Остальные сотрудники»/«Остальные пользователи» |
deselectable |
boolean |
Разрешает снять выбор с элемента. По умолчанию true |
searchable |
boolean |
Включает элемент в клиентский поиск. По умолчанию false |
availableInRecentTab |
boolean |
Показывает элемент во вкладке «Последние». По умолчанию true |
sort |
number |
Порядок элемента среди недавних. По умолчанию — порядковый номер элемента в списке (all-users получает 1, следующий за ним — 2 и так далее) |
im-chat
Провайдер Bitrix\Im\Integration\UI\EntitySelector\ChatProvider ищет и возвращает чаты текущего пользователя. Модуль: im. entityId: im-chat.
Провайдер автоматически заполняет вкладку «Последние» недавними чатами. При открытии выше показываются новые чаты, а при поиске — чаты с более поздними сообщениями.
Каждый элемент содержит в customData ключ imChat с данными чата. Используйте этот ключ в обработчике выбора, если сценарию нужен идентификатор или параметры чата из модуля im.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{
id: 'im-chat',
options: {
searchableChatTypes: ['C', 'L', 'O'],
},
},
],
});
| Параметр | Тип | Что делает |
|---|---|---|
searchableChatTypes |
string[] |
Ограничивает поиск и автозаполнение типами чатов: C — групповые чаты, L — открытые линии, O — открытые каналы. Передавайте только те типы, которые нужны сценарию |
fillDialog |
boolean |
Разрешает автоматически заполнять диалог чатами. По умолчанию true |
fillDialogWithDefaultValues |
boolean |
Разрешает подгружать чаты для заполнения вкладки «Последние», а не только уже сохраненные записи истории. По умолчанию true |
Для интранет-пользователей поиск ищет среди групповых чатов и открытых линий, где участвует пользователь, и среди всех открытых каналов. Для экстранет-пользователей поиск ограничен групповыми чатами.
У searchableChatTypes нет значения по умолчанию. Без этого параметра провайдер не найдет новых чатов ни в поиске, ни при автозаполнении вкладки «Последние» — передавайте параметр явно.
im-bot
Провайдер Bitrix\Im\Integration\UI\EntitySelector\BotProvider ищет и возвращает чат-ботов текущей установки. Модуль: im. entityId: im-bot. Провайдер недоступен для внешних (экстранет) пользователей.
Провайдер автоматически заполняет вкладку «Последние» ботами. В поиске и среди уже сохраненных недавних ботов выше показываются те, кому пользователь отправил больше сообщений. Остальные боты во вкладке добираются в порядке новизны регистрации.
Каждый элемент содержит в customData ключи imBot, imUser и imChat с данными бота. imBot относится к боту, imUser — к связанному пользователю, imChat — к чату бота.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{
id: 'im-bot',
options: {
searchableBotTypes: ['H', 'B', 'S'],
},
},
],
});
| Параметр | Тип | Что делает |
|---|---|---|
searchableBotTypes |
string[] |
Ограничивает поиск типами ботов: H — бот с задержкой ответа, B — бот с мгновенным ответом, S — привилегированный бот. Передавайте только те типы, которые нужны сценарию |
fillDialog |
boolean |
Разрешает автоматически заполнять диалог ботами. По умолчанию true |
fillDialogWithDefaultValues |
boolean |
Разрешает подгружать ботов для заполнения вкладки «Последние», а не только уже сохраненные записи истории. По умолчанию true |
im-recent
Провайдер Bitrix\Im\Integration\UI\EntitySelector\RecentChatProvider заполняет вкладку «Последние» элементами из списка последних чатов пользователя. Модуль: im. entityId: im-recent.
Провайдер использует динамическую загрузку и не выполняет поиск. Для поиска подключайте вместе с ним провайдеры user, im-chat и im-bot с отключенным автозаполнением диалога.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
entities: [
{
id: 'im-bot',
options: {
searchableBotTypes: ['H', 'B', 'S'],
fillDialog: false,
},
},
{
id: 'im-chat',
options: {
searchableChatTypes: ['C', 'L', 'O'],
fillDialog: false,
},
},
{
id: 'user',
options: {
fillDialog: false,
},
filters: [
{
id: 'im.userDataFilter',
},
],
},
{
id: 'im-recent',
dynamicLoad: true,
options: {
limit: 100,
},
},
],
});
| Параметр | Тип | Что делает |
|---|---|---|
limit |
int |
Ограничивает количество элементов из списка последних чатов. По умолчанию 50 |
Элементы, которые добавляет im-recent, получают entityId не от самого провайдера, а по типу элемента списка: user, im-chat или im-bot. Для чатов провайдер добавляет в customData ключ imChat, для пользователей — imUser, для чат-ботов — imUser и imBot.
Провайдер создает элементы с saveable: false, поэтому сам элемент из списка последних чатов не сохраняется повторно в недавние элементы ui.entity-selector.
im.userDataFilter
Фильтр Bitrix\Im\Integration\UI\EntitySelector\UserDataFilter дополняет элементы провайдера user данными модуля im. Фильтр используется в entities[].filters с идентификатором im.userDataFilter.
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
entities: [
{
id: 'user',
dynamicLoad: true,
filters: [
{
id: 'im.userDataFilter',
},
],
},
],
});
Фильтр доступен авторизованным пользователям. При обработке элементов он добавляет в customData ключ imUser с данными пользователя из модуля im. Если элемент относится к текущему пользователю, фильтр добавляет бейдж «Это вы».
Использовать стандартный тип объекта
Идентификатор встроенного провайдера (entityId) передайте в поле entities[].id. Собственный провайдер регистрировать не нужно: сервер найдет встроенный провайдер по идентификатору типа объекта.
import { Dialog } from 'ui.entity-selector';
const dialog = new Dialog({
targetNode: button,
enableSearch: true,
context: 'MY_MODULE_RESPONSIBLE',
entities: [
{
id: 'user',
dynamicLoad: true,
dynamicSearch: true,
},
],
});
Модуль, который регистрирует нужный провайдер (socialnetwork, intranet или im), должен быть установлен в текущей установке. Без установленного модуля метод isAvailable() провайдера вернет false, и диалог не покажет элементы этого типа объекта.
Для стандартных провайдеров флаги dynamicLoad и dynamicSearch можно передавать в конкретном диалоге явно. Явная передача флагов фиксирует сценарий в коде и не зависит от глобальных настроек типа объекта.
Если элементы стандартного типа не отображаются, проверьте:
- в
entities[].idпередан правильныйentityId:user,department,project,meta-user,im-chat,im-botилиim-recent; - установлен модуль, который регистрирует провайдер;
- текущему пользователю доступны элементы этого типа;
- фильтры в
optionsне исключают все элементы; - для чатов явно передан
searchableChatTypes, если нужно находить новые чаты в поиске или при автозаполнении.