Класс Dialog
Основной класс для добавления в диалог элементов, вкладок и футера.
| Метод | Описание | С версии |
|---|---|---|
| static getSelectedItems(array $ids, array $options = []): ItemCollection | Статический метод, возвращающий коллекцию элементов (объект класса ItemCollection) по заданными идентификаторам.
Разницу между getItems и getSelectedItems удобнее всего показать на примере сущности "пользователь". Например, есть запись в блоге, которая адресована нескольким пользователям. При редактировании этой записи пользователи, указанные в поле "Кому", должны быть все отображены, даже если среди них есть уволенные (неактивные). Однако уволенных сотрудников точно не должно быть в списке "Последних" или на вкладке со структурой компании. Метод getSelectedItems вернет данные по уволенным сотрудникам, а getItems нет. Данный метод обычно используют, чтобы заранее выбрать данные элементов на бэкенде и прокинуть их в JavaScript. $preselectedItems = [ ['user', 1], ['department', 1], ['user', 7], ['project', 2], ['department', '2:F'], ['meta-user', 'all-users'], ['user', 27], ]; $options = [ ['id' => 'user', 'options' => ['nameTemplate' => '#LAST_NAME#']] ]; $items = \Bitrix\UI\EntitySelector\Dialog::getItems($preselectedItems, $options); $selectedItems = $items->toJsObject(); <script>
const tagSelector = new TagSelector({
dialogOptions: {
context: 'MY_MODULE_CONTEXT',
selectedItems: =$selectedItems?>,
entities: [
{
id: 'user', // пользователи
},
{
id: 'project', // группы и проекты
},
{
id: 'department', // структура компании
options: {
selectMode: 'usersAndDepartments' // выбор пользователей и отделов
}
},
{
id: 'meta-user',
options: {
'all-users': true // Все сотрудники
}
},
],
}
});
tagSelector.renderTo(document.getElementById('container'));
| |
| static getItems(array $ids, array $options = []): ItemCollection | Статический метод, возвращающий коллекцию элементов (объект класса ItemCollection) по заданными идентификаторам.
| |
| getId(): ?string | Возвращает идентификатор диалога. | |
| getContext(): ?string | Возвращает идентификатор контекста. | |
| getCurrentUserId(): int | Возвращает идентификатор текущего пользователя. | |
| addItem(Item $item) | Добавляет элемент в диалог.
public function fillDialog(Dialog $dialog): void
{
$dialog->addTab(new Tab([
'id' => 'my-tab',
'title' => 'Мой таб',
'stub' => true,
'icon' => [
'default' => '/path/to/tab-icon.svg',
'selected' => '/path/to/tab-icon-selected.svg'
]
]));
$dialog->addItem(
new Item([
'id' => 1000,
'entityId' => 'my-entity-id',
'tabs' => 'my-tab',
'title' => 'Мой элемент',
'avatar' => '/path/to/avatar.jpg',
'customData' => [
'myOption' => true,
],
])
);
}
| |
| addItems(array $items) | Добавляет элементы в диалог.
| |
| addRecentItem(Item $item) | Добавляет элемент на вкладку "Последние".
| |
| addRecentItems(array $items) | Добавляет элементы на вкладку "Последние".
public function fillDialog(Dialog $dialog): void
{
$dialog->addRecentItems([
new Item([
'id' => 1000,
'entityId' => 'my-entity-id',
'entityType' => 'active',
'title' => 'Мой элемент',
'avatar' => '/path/to/avatar.jpg',
'customData' => [
'myOption' => true,
],
]),
new Item([
'id' => 2000,
'entityId' => 'my-entity-id',
'entityType' => 'active',
'title' => 'Мой элемент 2',
'avatar' => '/path/to/avatar.jpg',
'customData' => [
'myStringOption' => 'kuku',
],
])
]);
}
| |
| getRecentItems(): RecentCollection | Возвращает коллекцию типа ItemCollection со списком элементов на вкладке "Последние", которые были выбраны в текущем контексте. Данные для коллекции выбираются диалогом автоматически.
public function fillDialog(Dialog $dialog): void
{
// выберем все элементы моей сущности на вкладке "Последние"
$recentItems = $dialog->getRecentItems()->getEntityItems('my-entity-id');
if ($recentItems < 10)
{
// если элементов мало, добавим еще.
$dialog->addRecentItem(new Item([
'id' => 1000,
'entityId' => 'my-entity-id',
'entityType' => 'active',
'title' => 'Мой элемент',
'avatar' => '/path/to/avatar.jpg',
'customData' => [
'myOption' => true,
],
]));
}
}
| |
| getGlobalRecentItems(): RecentCollection | Возвращает коллекцию типа ItemCollection со списком элементов на вкладке "Последние", которые были выбраны в глобальном контексте.
Данные для коллекции выбираются диалогом автоматически.
public function fillDialog(Dialog $dialog): void
{
$maxItemsInRecentTab = 30;
// выберем все элементы моей сущности на вкладке "Последние" для текущего контекста.
$recentItems = $dialog->getRecentItems()->getEntityItems('my-entity-id');
if (count($recentItems) < $maxItemsInRecentTab)
{
$limit = $maxItemsInRecentTab - count($recentItems);
// выберем все элементы моей сущности на вкладке "Последние" для глобального контекста.
$recentGlobalItems = $dialog->getGlobalRecentItems()->getEntityItems('my-entity-id');
foreach ($recentGlobalItems as $recentGlobalItem)
{
if ($limit <= 0)
{
break;
}
if (!isset($recentItems[$recentGlobalItem->getId()]) && $recentGlobalItem->isLoaded())
{
// добавим элементы из глобального контекста на вкладку "Последние".
$dialog->getRecentItems()->add($recentGlobalItem);
$limit--;
}
}
}
}
| |
| getItemCollection(): ItemCollection | Возвращает коллекцию типа ItemCollection со списком всех добавленных элементов (объекты класса Item) в диалог. | |
| setFooter(string $footer, array $options = []) | Устанавливает футер диалога.
public function fillDialog(Dialog $dialog): void
{
$dialog->setFooter('BX.SocialNetwork.EntitySelector.Footer', ['myOption' => true]);
}
| |
| getFooter(): ?string | Возвращает футер диалога. | |
| getFooterOptions(): ?array | Возвращает дополнительные опции футера. | |
| addTab(Tab $tab) | Добавляет новую вкладку в диалог.
public function fillDialog(Dialog $dialog): void
{
$dialog->addTab(new Tab([
'id' => 'my-tab',
'title' => 'Мой таб',
'stub' => true,
'icon' => [
'default' => '/path/to/tab-icon.svg',
'selected' => '/path/to/tab-icon-selected.svg'
]
]));
}
| |
| getTabs(): array | Возвращает массив вкладок (объекты класса Tab) диалога. | |
| getTab(string $tabId): ?Tab | Возвращает объект вкладки по идентификатору.
| |
| addEntity(Entity $entity) | Добавляет в диалог новую сущность.
| |
| getEntities(): array | Возвращает массив сущностей (объекты класса Entity) диалога. | |
| getEntity(string $entityId): ?Entity | Возвращает объект сущности по идентификатору.
public function fillDialog(Dialog $dialog): void
{
// если сущность одна в диалоге, то добавим элементы на вкладку "Последние".
if (count($dialog->getEntities()) === 1)
{
$dialog->addRecentItems([
new Item([
'id' => 1000,
'entityId' => 'my-entity-id',
'entityType' => 'active',
'title' => 'Мой элемент',
'avatar' => '/path/to/avatar.jpg',
'customData' => [
'myOption' => true,
],
]),
new Item([
'id' => 2000,
'entityId' => 'my-entity-id',
'entityType' => 'active',
'title' => 'Мой элемент 2',
'avatar' => '/path/to/avatar.jpg',
'customData' => [
'myStringOption' => 'kuku',
],
])
]);
}
}
|