Библиотека modals
Библиотека представлена файлом js/modals.js
. Позволяет ускорить процесс разработки с использованием модальных окон.
Есть 2 реализации: старая через глобальные функции и новая с использованием AModal
Создание кнопки вызова модального окна в Perl коде выглядит так:
my $load_to_modal_btn = $html->button( '', undef, { class => 'btn btn-sm btn-default', JAVASCRIPT => '', SKIP_HREF => 1, NO_LINK_FORMER => 1, ex_params => qq/onclick=loadToModal('?get_index=referral_show&header=2&USER_ID=$referrer_id')/, ICON => 'glyphicon glyphicon-tree-deciduous' } ); }
Ниже представлено описание основных методов
Глобальные функции
Для показа используется объявленное в metategs.tpl модальное окно #PopupModal
, контент для показа загружается непосредственно внутрь блока, или в блок #modalContent
loadToModal (url, [callback])
Динамически загружает страницу по заданному url, создаёт обьект aModal, устанавливает полученную страницу в modal-body и показывает новое модальное окно.
loadRawToModal (url, [callback])
Динамически загружает страницу по заданному url, создаёт обьект aModal, вставляет даные телом модального окна и показывает новое модальное окно.
Если данные не обернуты в div.modal-body или div.modal-content, фон модалки будет прозрачным
loadDataToModal(data, decorated, withoutButton)
Вставляет в модальное окно то, что передано в data
.
Если decorated=true, то data
обёртывается в тело модального окна.
Если withoutButton=true, то тело сгенерированного модального окна будет без кнопки.
showImgInModal(url)
Вставляет в модальное окно картинку, с атрибутом src
равным заданному url
Объект AModal
Свойства:
- id , дефолтное значение ('PopupModal')
- header
- body
- footer
- rawData
Объект представляет собой реализацию конкретной части паттерна Builder.
Пример использования:
Показать сообщение в модальном окне:
var modal = aModal.clear() .setBody('<div class="alert alert-success text-center">Самое обычное сообщение</div>') .show();
Показ сложного модального окна с обработчиком кнопки
// Для того чтобы не забивать память созданием нового обьекта, // просто очищаем предыдущее модальное окно modal = aModal.clear(); modal // Устанавливаем id (необязательно) .setId('modalTest') // Устанавливаем modal-header (необязательно) .setHeader('Header') // Устанавливаем modal-body (необязательно) .setBody('<h2>One fine body</h2>') // Устанавливаем modal-footer (необязательно) .setFooter('Footer') // Добавляем кнопку закрытия (необязательно, в header есть крестик) .addButton('Cancel', 'modalCancelBtn', 'default') // Показываем и устанавливаем обработчик (необязательно) .show(function(){ // Устанавливаем обработчики. // Спрятать модальное окно по клику на кнопку '#modalCancelBtn' $('#modalCancelBtn').on('click', aModal.hide); } );
Особые окна
Если нужно использовать особые параметры модального окна, можно использовать метод setRawMode(true).
особое окно будет без заголовка и футера, можно вставлять собственные.
При этом, значение, установленное через setBody()
будет вставлено внутрь .modal-content
Пример:
var modal = aModal.clear(); modal.setRawMode(true) .setBody('<div class="alert alert-success text-center">Самое обычное сообщение</div>') .show();
Открытие обычного (HTML) модального окна при загрузке страницы
Нужно прописать аттрибут data-open='1
'. Удобно использовать для этого переменную шаблона.
Если есть несколько окон, которые нужно открыть, откроется первое найденное (обычно, которое прописано выше).
<div class='modal fade' id='changeCreditModal' data-open='%OPEN_CREDIT_MODAL%'>