Библиотека Noty позволяет создавать интерактивные уведомления с кнопками, текст которых можно полностью настраивать. Управление текстом кнопок — важный аспект пользовательского интерфейса, влияющий на понятность и удобство взаимодействия.
Кнопки в Noty добавляются через параметр buttons,
который принимает массив объектов Noty.button. Каждый такой
объект описывает отдельную кнопку, включая её текст.
Пример базового создания уведомления с кнопкой:
new Noty({
text: 'Удалить файл?',
buttons: [
Noty.button('Да', 'btn btn-success', function () {
console.log('Удалено');
})
]
}).show();
Noty.buttonNoty.button(text, className, callback, attributes)
Текст может быть любой строкой:
Noty.button('ОК', 'btn btn-primary', function () {})
Текст кнопки может динамически изменяться в зависимости от языка интерфейса:
const lang = 'ru';
const texts = {
ru: 'Подтвердить',
en: 'Confirm'
};
Noty.button(texts[lang], 'btn btn-success', function () {});
Noty поддерживает HTML внутри текста кнопки. Это позволяет добавлять иконки, форматирование и дополнительные элементы.
Noty.button('<b>Да</b>', 'btn btn-success', function () {});
Noty.button('<i class="fa fa-check"></i> Подтвердить', 'btn btn-success', function () {});
Важно учитывать:
Текст кнопки можно формировать на основе данных или состояния приложения.
let isSaved = false;
new Noty({
text: 'Сохранить изменения?',
buttons: [
Noty.button(
isSaved ? 'Сохранено' : 'Сохранить',
'btn btn-primary',
function () {}
)
]
}).show();
Noty не предоставляет встроенного API для изменения текста кнопки после рендера, но это можно сделать через DOM.
let notification = new Noty({
text: 'Обработка...',
buttons: [
Noty.button('Ждать', 'btn btn-warning', function () {})
]
}).show();
// изменение текста через DOM
setTimeout(() => {
document.querySelector('.noty_buttons button').innerText = 'Готово';
}, 2000);
При использовании нескольких кнопок важно выбирать понятные и короткие тексты.
new Noty({
text: 'Сохранить изменения?',
buttons: [
Noty.button('Да', 'btn btn-success', function () {}),
Noty.button('Нет', 'btn btn-danger', function () {}),
Noty.button('Отмена', 'btn btn-secondary', function () {})
]
}).show();
Текст кнопки может использоваться как часть логики:
function handleClick(action) {
console.log(action);
}
new Noty({
text: 'Выберите действие',
buttons: [
Noty.button('Удалить', 'btn btn-danger', function () {
handleClick('delete');
}),
Noty.button('Архивировать', 'btn btn-warning', function () {
handleClick('archive');
})
]
}).show();
Дополнительные атрибуты позволяют расширить поведение кнопок:
Noty.button(
'Подробнее',
'btn btn-info',
function () {},
{ id: 'more-info-btn', 'data-action': 'info' }
);
Это может быть полезно для:
Текст кнопки наследует стили CSS. Можно управлять:
Пример:
.noty_buttons .btn {
font-size: 14px;
font-weight: bold;
}
Если текст слишком длинный, возможны проблемы с версткой. Подходы:
const text = 'Очень длинный текст кнопки...'.slice(0, 20);
.noty_buttons button {
white-space: normal;
}
Noty.button(userInput, 'btn', function () {});
Риск XSS-атаки при передаче пользовательского ввода.
Усложняют восприятие и портят интерфейс.
Разные кнопки с похожим смыслом, но разными формулировками:
new Noty({
text: 'Удалить элемент?',
buttons: [
Noty.button(
'<i class="fa fa-trash"></i> Удалить',
'btn btn-danger',
function () {
console.log('Удаление');
}
),
Noty.button(
'Отмена',
'btn btn-secondary',
function () {
this.close();
}
)
]
}).show();
Грамотно подобранный текст кнопки повышает понятность интерфейса, снижает вероятность ошибок пользователя и делает взаимодействие с уведомлениями более эффективным.