Класс - основной программный интерфейс для работы со слайдером. Является объектом-синглтоном.
Метод BX.SidePanel.Instance.open
BX.SidePanel.Instance.open(
url[,
options]
)
Метод открывает в слайдере страницу с указанным адресом в параметре url. Возвращает true, если слайдер успешно открылся, иначе false.
Параметры
Параметр | Описание | Тип |
url | Адрес страницы, которая будет открыта в iframe'е слайдера. Для слайдеров со своим контентом (указана опция contentCallback) в этом параметре указывается уникальный идентификатор. | string |
options | Коллекция опций слайдера. Все настройки являются необязательными.
- contentCallback {function(BX.SidePanel.Slider)} - Функция-callback, загружающая в слайдер произвольное содержимое. В первом аргументе принимает объект слайдера (экземпляр класса BX.SidePanel.Slider). Callback должен внутри себя:
- Создать и вернуть промис (
new Promise(function(resolve, reject) {}) ).
- Разрешить его (
resolve(content) ) с содержимым слайдера с содержимым слайдера (строка или DOM-элемент).
- В случае ошибки сообщить об этом (
reject(error) ).
- width {number} - Максимальная ширина слайдера.
- cacheable {boolean} - Кешировать слайдер после закрытия. Если указано false, при закрытии слайдер будет автоматически уничтожен. По умолчанию true.
- autoFocus {boolean} - При открытии слайдера происходит автоматическая фокусировка на iframe'е. Это поведение можно отменить, если указать false.
- allowChangeHistory {boolean} - Менять адрес страницы на адрес открытого слайдера. По умолчанию true.
- allowChangeTitle {true|false|null} - Менять заголовок страницы на заголовок открытого слайдера. По умолчанию null. При не установленном значении (null), название страницы будет меняться, если у слайдера явно задан заголовок (опция title) или разрешена смена адреса страницы (allowChangeHistory).
- allowCrossOrigin {true|false|null} - Открывать сторонние сайты в слайдере.
- Для открытия внешнего сайта передать true.
BX.SidePanel.Instance.open('http://testfiles.a-team.bx/demo/sidepanel.php?forceLoad=y', {cacheable: false, allowCrossOrigin: true})
- Для того, чтобы закрыть слайдер изнутри, то есть инициировать во внешнем сайте, нужно выполнить такой код:
if (window.parent)
{
parent.postMessage('BX:SidePanel:close', document.referrer);
}
- Чтобы просигнализировать слайдеру, что не нужно показывать лоадер до загрузки всех ресурсов, а показать по мере готовности:
if (window.parent)
{
parent.postMessage('BX:SidePanel:load:force', document.referrer);
}
- Если нужно из стороннего сайта отправить данные на портал:
if (window.parent)
{
parent.postMessage({type: 'BX:SidePanel:data:send', data: {key1: 'data 1', key2: 'data 2'}}, document.referrer);
}
- Чтобы портал мог получить эти данные, нужно добавить обработчик события
onXDomainMessage при вызове слайдера
BX.SidePanel.Instance.open(
'https://cross-domain',
{
cacheable: false,
allowCrossOrigin: true,
events: {
onXDomainMessage: (event: BX.SidePanel.MessageEvent) => {
const { command } = event.getData();
if (command === 'showHelper')
{
BX.Helper.show();
}
}
}
}
)
- Title {string} - Заголовок страницы. Если не указан, значение берется из document.title.
- requestMethod {string} - Если параметр равен post, то в iframe'е слайдера страница загрузится HTTP-методом POST. Это может понадобится для передачи большого объема данных, так как HTTP-метод GET может привести к ошибке
414 Request-URI Too Large .
- requestParams {object} - POST-параметры передаваемые в запросе. Имеет смысл только при
requestMethod="post" .
- loader {string} - Идентификатор лоадера вида moduleId:loaderId или путь к svg-файлу.
- data {object} - Произвольный набор своих данных для слайдера, с которыми можно работать (чтение/запись/удаление) на всем жизненном цикле.
- label {object} - Опция задает настройки для внешнего вида лейбла ("этикетки") слайдера. Объект вида:
label: {
text: "Моя этикетка",
color: "#FFFFFF", //цвет текста
bgColor: "#2FC6F6", //цвет фона
opacity: 80 //прозрачность фона
}
- animationDuration {number} - Время анимации открытия/закрытия слайдера в миллисекундах.
- events {object.} - Коллекция обработчиков событий.
| Object |
Примеры использования
Пример слайдера со своим содержимым и данными.
BX.SidePanel.Instance.open("crm:activity-view", {
//Пробрасываем свои данные в слайдер
data: {
minRepeats: 30,
maxRepeats: 100,
repeatString: "=========="
},
contentCallback: function(slider) {
var promise = new BX.Promise();
//Эмуляция асинхронной операции (как правило, это ajax)
setTimeout(function() {
//Читаем свои данные
var minRepeats = slider.getData().get("minRepeats");
var maxRepeats = slider.getData().get("maxRepeats");
var repeatString = slider.getData().get("repeatString");
var repeats = Math.floor(Math.random() * (maxRepeats - minRepeats) + minRepeats);
slider.getData().set("repeats", repeats); //Записываем новые данные
var result =
"minRepeats: " + minRepeats + "<br>" +
"maxRepeats: " + maxRepeats + "<br>" +
"repeats: " + repeats + "<br><br>" +
(repeatString + "<br>").repeat(repeats)
;
promise.fulfill(result);
}, 1000);
return promise;
},
animationDuration: 100,
width: 600,
events: {
onLoad: function(event) {
var slider = event.getSlider();
console.log(slider.getData().get("repeats")); //Читаем записанные данные
}
}
});
Открытие слайдера HTTP-методом POST.
BX.SidePanel.Instance.open("/mypage.php", {
requestMethod: "post",
requestParams: { // post-параметры
action: "load",
ids: [1, 2, 3],
dictionary: {
one: 1,
two: 2
}
}
});
Метод BX.SidePanel.Instance.bindAnchors(anchors)
BX.SidePanel.Instance.bindAnchors(
anchors
)
Метод регистрирует правила обработки нажатия ссылок на странице.
Параметры
Метод | Описание | Тип |
anchors | Настройки механизма обработки нажатия ссылок.
- rules {Array} - Массив правил. Каждое правило - объект со следующими ключами:
- condition {string[]|RegExp[]} - Массив шаблонов (регулярных выражений) ссылок. Обязательный параметр.
- options {Object} - Коллекция опций, с которыми откроется слайдер. См. BX.SidePanel.Instance.open.
- stopParameters {string[]} - Массив запрещенных параметров. Если адрес содержит хотя бы один из этих параметров, ссылка обработана не будет. Необязательный параметр.
- handler {function(event, link)} - Функция-обработчик нажатия на ссылку. С помощью этого параметра можно переопределить поведение по умолчанию (открытие слайдера). Необязательный параметр.
- event {MouseEvent} - Объект события нажатия на ссылку
- link - Объект с данными ссылки:
- href - Адрес ссылки.
- target - Значение атрибута target.
- anchor - DOM-объект ссылки (тег <a>).
- matches - Массив с совпадениями групп регулярного выражения.
- validate {function(link)} - Функция проверки корректности ссылки. Если возвращает false, ссылка обработана не будет. Необязательный параметр.
- link - объект с данными ссылки.
- allowCrossDomain {boolean} Разрешить открывать ссылки с внешних сайтов. По умолчанию false.
- mobileFriendly {boolean} Обрабатывать ссылки в мобильных браузерах. По умолчанию false.
| Object |
Другие методы класса
Метод | Описание | С версии |
BX.SidePanel.Instance.isOpen() | Возвращает true, если слайдер отображается на экране. | |
BX.SidePanel.Instance.close([immediately=false]) | Закрывает текущий слайдер на странице. immediately {boolean}Закрыть слайдер мгновенно, без анимации. | |
BX.SidePanel.Instance.closeAll([immediately=false]) | Закрывает все слайдеры на странице. immediately {boolean} Закрыть слайдеры мгновенно, без анимации. | |
BX.SidePanel.Instance.destroy(url) | Уничтожает слайдер на странице. url {string} Адрес страницы или идентификатор удаляемого слайдера. | |
BX.SidePanel.Instance.reload() | Перегружает текущий открытый слайдер. | |
BX.SidePanel.Instance.getTopSlider() | Возвращает текущий открытый слайдер (экземпляр класса [BX.SidePanel.Slider). | |
BX.SidePanel.Instance.getSlider(url) | Возвращает слайдер (экземпляр класса BX.SidePanel.Slider) по указанному адресу или идентификатору. url {string} - Адрес страницы или идентификатор слайдера. | |
BX.SidePanel.Instance.getSliderByWindow(window) | Возвращает слайдер (экземпляр класса BX.SidePanel.Slider) по окну iframe'а. window {Window} - Объект окна iframe'а. | |
BX.SidePanel.Instance.getOpenSliders() | Возвращает список всех открытых слайдеров (массив экземпляров класса BX.SidePanel.Slider). | |
BX.SidePanel.Instance.getLastOpenSlider() | Возвращает закрытый слайдер (экземпляр класса BX.SidePanel.Slider). | Object |