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

Настраиваемое меню

Описание

BX.UI.MenuConfigurable.Menu используется для отрисовки настраиваемого списка пунктов, разделенных на «видимые» и «скрытые», с возможностью drag-and-drop'а и кнопками Сохранить/Отменить.

Названия и поведение многих параметров аналогичны таким из {Menu} from 'main.popup'.



Публичные методы

  • constructor(parameters: Parameters) – Создание объекта.
    • id: string – уникальный строковый идентификатор;
    • items: Item[] – массив с описанием пунктов, где каждый элемент имеет структуру:
      • isHidden boolean – если true, то входит в группу «скрытые»;
      • text: ?string – текст элемента (аналогично PopupItem);
      • html: ?string – html элемента (аналогично PopupItem);
      • id: ?string – уникальный строковый идентификатор элемента.
    • bindElement: ?HTMLElement – элемент, к которому привязывается выпадающее меню<;/li>
    • maxVisibleItems: ?number – ограничение на максимальное количество элементов в разделе «видимые».

  • open(bindElement: ?HTMLElement): Promise – Показывает меню.

    Если передан bindElement, то меню будет показано у него.

    Метод возвращает Promise, который всегда резолвится. На вход придет объект.

    Если меню закрыли без сохранения (кликнули мимо, или нажали «отмена»), то объект будет иметь вид {isCanceled: true}.

    Если пользователь нажал «Сохранить», то объект будет иметь вид {items: Item[]}, где items – массив элементов в их текущем состоянии (в котором их оставил пользователь).


  • close(): void – скрывает меню. Промис, который до этого вернул метод open, будет выполнен.

  • setItems(items: Item[]): this – перезапишет состав элементов.

  • getItemsFromMenu(): Item[] – вернет состав элементов в том виде, в котором его оставил пользователь.


События


  • Save – бросается при клике на кнопку «Сохранить».

  • Без параметров.

    Если в обработчике вызвать event.preventDefault(), то процесс сохранения будет прерван.


  • Cancel – бросается при клике на кнопку «Отмена».
  • Без параметров.

    Если в обработчике вызвать event.preventDefault(), то процесс меню не скроется (поведение по умолчанию).

Пример


import {Event, Type} from 'main.core';
import {MenuConfigurable} from 'ui.menu-configurable';

const menuConfigurable = new MenuConfigurable({
	items: [
		{
			id: 'first',
		text: 'visible item',  
		},
		{
			id: 'second',
			text: 'hidden item',
			isHidden: true,
		},
	],
	bindElement: document.getElementById('my-button'),
	maxVisibleItems: 1, // only one item can be visible
});
menuConfigurable.subscribe('Cancel', () => {
	console.log('cancel button was clicked');
});

Event.bind(document.getElementById('my-button'), 'click', () => {
	menuConfigurable.open().then((result) => {
		if (result.isCanceled)
		{
			return;
		}
		if (Type.isArray(result.items))
		{
			// save items
		}
	});
});


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх