Документация для разработчиков
Темная тема

Типовое использование

Подключение

toolbar.png

Если необходимо на странице вывести аналогичный тулбар с кнопками, фильтром, то обратите внимание на примеры ниже.

Доступно с ui 19.0.100.

\Bitrix\Main\Loader::includeModule('ui'); 

Важно: если необходимо показывать страницу в слайдере, то при вызове компонента ui.sidepanel.wrapper передайте параметр "USE_UI_TOOLBAR" => "Y".

Добавление фильтра

Параметры для добавления фильтра аналогичны параметрам для подключения компонента bitrix:main.ui.filter.

\Bitrix\UI\Toolbar\Facade\Toolbar::addFilter([
	'GRID_ID' => $arResult['GRID']['ID'],
	'FILTER_ID' => $arResult['FILTER']['FILTER_ID'],
	'FILTER' => $arResult['FILTER']['FILTER'],
	'FILTER_PRESETS' => $arResult['FILTER']['FILTER_PRESETS'],
	'ENABLE_LIVE_SEARCH' => $arResult['FILTER']['ENABLE_LIVE_SEARCH'],
	'ENABLE_LABEL' => $arResult['FILTER']['ENABLE_LABEL'],
	'RESET_TO_DEFAULT_MODE' => $arResult['FILTER']['RESET_TO_DEFAULT_MODE'],
]);

Добавление кнопок

Кнопки в Toolbar добавляются методом

\Bitrix\UI\Toolbar\Facade\Toolbar::addButton(array|Button $button) 

Примеры описания кнопок

<?
//кнопка-ссылка
$linkButton = new \Bitrix\UI\Buttons\Button([
	"link" => "https://cp.bitrix.ru",
	"text" => "Home"
]);

\Bitrix\UI\Toolbar\Facade\Toolbar::addButton($linkButton);

//либо можно сразу передавать массив. На основне него будет создан
// \Bitrix\UI\Buttons\Button 
\Bitrix\UI\Toolbar\Facade\Toolbar::addButton([
	"link" => "https://cp.bitrix.ru",
	"text" => "Home"
]);

//кнопка с обработкой на js, статический метод
$connectButton = new \Bitrix\UI\Buttons\Button([
	"color" => \Bitrix\UI\Buttons\Color::LIGHT_BORDER,
	"icon" => \Bitrix\UI\Buttons\Icon::DISK,
	"click" => new \Bitrix\UI\Buttons\JsHandler(
		"BX.SomeModule.Actions.handleClick" //ссылка на функцию
	),
	"text" => "Connect me"
]);

//кнопка с обработкой на js, произвольный код
$connectButton = new \Bitrix\UI\Buttons\Button([
	"color" => \Bitrix\UI\Buttons\Color::LIGHT_BORDER,
	"icon" => \Bitrix\UI\Buttons\Icon::DISK,
	"click" => new \Bitrix\UI\Buttons\JsCode(
		"BX.SidePanel.Instance.open('calendar-settings')" //произвольный код, который будет выполнен при клике на кнопку
	),
	"text" => "Connect me"
]);

//кнопка с обработкой на js, произвольный код
$connectButton = new \Bitrix\UI\Buttons\Button([
	"color" => \Bitrix\UI\Buttons\Color::LIGHT_BORDER,
	"icon" => \Bitrix\UI\Buttons\Icon::DISK,
	"click" => new \Bitrix\UI\Buttons\JsCode(
		"BX.SidePanel.Instance.open('calendar-settings')" //произвольный код, который будет выполнен при клике на кнопку
	),
	"text" => "Connect me"
]);

//кнопка с обработкой на js, выполнение события
$connectButton = new \Bitrix\UI\Buttons\Button([
	"color" => \Bitrix\UI\Buttons\Color::LIGHT_BORDER,
	"icon" => \Bitrix\UI\Buttons\Icon::DISK,
	"click" => new \Bitrix\UI\Buttons\JsEvent(
		"BX.SomeModule.SomeClass:onClick" //событие, которое выполнится при клике на кнопку
	),
	"text" => "Connect me"
]);

//выпадающее меню из кнопки. Структура аналогична BX.PopupMenuWindow
$menuButton = new \Bitrix\UI\Buttons\Button([
	"text" => "Menu",
	"menu" => [
		"items" => [
			["text" => "Детальное описание", "href" => "/path/to/page"],
			["text" => "Редактировать", "disabled" => true],
			["delimiter" => true],
			[
				"text" => "Уничтожить", 
				"onclick" => new \Bitrix\UI\Buttons\JsHandler(
					"BX.SomeModule.handleClick" //ссылка на функцию
				)
			],
		],
	],
]);


//Split-кнопки
$splitButton = new Bitrix\UI\Buttons\Split\CreateButton();
//аналогично меню, как в пример выше
$splitButton->setMenu([
	"items" => [
		["text" => "Детальное описание", "href" => "/path/to/page"],
		["delimiter" => true],
	],
]);

//можно получить доступ к главной кнопке
$mainButton = $splitButton->getMainButton();
$mainButton->setHovered();
//или к кнопке меню, из которой обычно что-то выпадает
$menuButton = $splitButton->getMenuButton();
$menuButton->setActive(false);


//у объекта кнопки есть много вспомогательных методов, 
//для изменения визуального отображения
$connectButton->addClass('intranet-button-some');]
$connectButton->removeClass('intranet-button-another-one');
$connectButton->setText(string);
$connectButton->setColor(\Bitrix\UI\Buttons\Color);
$connectButton->setIcon(\Bitrix\UI\Buttons\Icon);
$connectButton->setState(\Bitrix\UI\Buttons\State);
$connectButton->setSize(\Bitrix\UI\Buttons\Size);
$connectButton->setMaxWidth(integer);
$connectButton->setCounter(integer|string);
$connectButton->setMenu([...]);
$connectButton->setNoCaps(false|true);
$connectButton->setRound(false|true);
$connectButton->setDropdown(false|true);
$connectButton->setLink(string);
$connectButton->setTag(\Bitrix\UI\Buttons\Tag);

Предустановленные кнопки

В этих кнопках по умолчанию есть текст и цвет.

\Bitrix\UI\Buttons\AddButton
\Bitrix\UI\Buttons\CancelButton
\Bitrix\UI\Buttons\CreateButton
\Bitrix\UI\Buttons\ApplyButton
\Bitrix\UI\Buttons\CloseButton
\Bitrix\UI\Buttons\SendButton
\Bitrix\UI\Buttons\SaveButton
\Bitrix\UI\Buttons\SettingsButton

\Bitrix\UI\Buttons\Split\AddButton
\Bitrix\UI\Buttons\Split\CancelButton
\Bitrix\UI\Buttons\Split\CreateButton
\Bitrix\UI\Buttons\Split\ApplyButton
\Bitrix\UI\Buttons\Split\CloseButton
\Bitrix\UI\Buttons\Split\SendButton
\Bitrix\UI\Buttons\Split\SaveButton

Минимальная ширина заголовка в px

 \Bitrix\UI\Toolbar\Facade\Toolbar::setTitleMinWidth(158);

Иконки и Кнопки

Панель тулбара является адаптивной. Если не хватает свободного места на экране, кнопки, начиная с правой стороны, поочередно схлопываются. Текст пропадает, остается только иконка.

Если по умолчанию кнопка не имеет иконки, то в атрибуте data-toolbar-collapsed-icon необходимо указать класс иконки, которая появится при схлопывании. Если у кнопки нет ни иконки, ни дата-атрибута, она не схлопывается и в консоль выводится предупреждение.

$splitButton = new Bitrix\UI\Buttons\Split\CreateButton([
	'text' => 'Split Button',
	'dataset' => [
		'toolbar-collapsed-icon' => Bitrix\UI\Buttons\Icon::CAMERA
	]
]);



© «Битрикс», 2001-2024, «1С-Битрикс», 2024