tingle.js — это минималистичная библиотека,
предназначенная для создания модальных окон с богатым функционалом и
гибкими настройками. Однако её возможности не ограничиваются только
модальными окнами. Она может быть использована для динамического
добавления элементов, таких как кнопки, в уже существующие модальные
окна. Это даёт возможность создавать интерфейсы с настраиваемыми
элементами управления без необходимости перезагружать страницу или
писать большой объём кода.
Прежде чем перейти к динамическому добавлению кнопок, необходимо
понять базовую работу с библиотекой. Чтобы создать модальное окно,
необходимо создать экземпляр объекта tingle.modal и
настроить его параметры. Обычно это делается следующим образом:
var modal = new tingle.modal({
closeMethods: ['overlay', 'button', 'escape'],
closeLabel: "Закрыть"
});
Здесь создаётся новое модальное окно с возможностью закрытия через клик на оверлей, кнопку закрытия или клавишу escape.
Чтобы добавить стандартную кнопку в модальное окно, используется
метод addFooterBtn. Этот метод позволяет добавить кнопку в
нижнюю часть модального окна. Важные параметры:
Пример:
modal.addFooterBtn('OK', 'tingle-btn tingle-btn--primary', function() {
modal.close();
});
Этот код добавляет кнопку с текстом «OK» и закрывает модальное окно при её нажатии. Но что если нужно добавить кнопку динамически, в ответ на действия пользователя или на событие?
Для динамического добавления кнопок в модальное окно на лету можно использовать следующий подход. Допустим, мы хотим добавлять кнопки в ответ на действия пользователя на странице или в зависимости от состояния контента модального окна.
Допустим, при запуске определённой функции или при наступлении какого-либо события, в модальном окне появляется дополнительная кнопка.
function addDynamicButton() {
var buttonText = "Новая кнопка";
var buttonClass = "tingle-btn tingle-btn--secondary";
var buttonAction = function() {
alert('Нажата динамическая кнопка!');
};
modal.addFooterBtn(buttonText, buttonClass, buttonAction);
}
В данном примере кнопка будет добавлена в модальное окно с текстом «Новая кнопка», и при нажатии на неё будет показываться alert.
Если требуется удалить кнопку после её добавления, например, для изменения состояния интерфейса, можно использовать методы для манипуляций с кнопками в модальном окне. Например, для удаления всех кнопок из футера модального окна:
modal.removeFooterBtn();
Этот метод удаляет все кнопки из нижней части окна. Однако, если нужно удалить только конкретную кнопку, можно использовать её идентификатор или ссылку на саму кнопку.
В зависимости от состояния приложения можно добавить кнопки с разными функциями. Например, если в модальном окне отображается форма, можно добавить кнопку «Отправить», а если отображается информация, то — кнопку «Закрыть».
if (isFormOpen) {
modal.addFooterBtn('Отправить', 'tingle-btn tingle-btn--primary', function() {
submitForm();
});
} else {
modal.addFooterBtn('Закрыть', 'tingle-btn tingle-btn--secondary', function() {
modal.close();
});
}
Здесь мы проверяем условие isFormOpen, чтобы определить,
какая кнопка должна быть добавлена.
Иногда требуется создавать кнопки с динамическими текстами или действиями, зависящими от данных, полученных из сервера или пользовательского ввода. В таком случае можно передать параметры в функцию добавления кнопки.
function createButtonFromData(data) {
var buttonText = data.buttonText || 'По умолчанию';
var buttonAction = function() {
alert('Данные: ' + data.info);
};
modal.addFooterBtn(buttonText, 'tingle-btn tingle-btn--default', buttonAction);
}
var buttonData = {
buttonText: 'Подтвердить',
info: 'Нажали на подтверждение!'
};
createButtonFromData(buttonData);
В этом примере данные для кнопки получаются из объекта
buttonData, и на основе этих данных создаётся кнопка с
текстом и действием.
Динамическое добавление кнопок даёт гибкость в разработке интерфейсов. Кнопки могут быть добавлены или удалены в ответ на события, что позволяет:
Для более сложных интерфейсов можно использовать обработчики событий на кнопках, добавленных динамически. Например, можно отслеживать, какие кнопки были нажаты, и в зависимости от этого изменять состояние модального окна или выполнять другие действия:
modal.addFooterBtn('Удалить', 'tingle-btn tingle-btn--danger', function() {
alert('Удаление...');
// Логика удаления
});
Эта кнопка может быть использована в контексте удаления данных, где нужно получить подтверждение от пользователя.
Использование библиотеки tingle.js для динамического
добавления кнопок в модальное окно позволяет создавать гибкие и
адаптивные пользовательские интерфейсы. Простейший механизм добавления
кнопок с помощью метода addFooterBtn легко расширяется для
динамического контента, что открывает широкие возможности для
взаимодействия с пользователем.