showDialog
Диалоговое окно которое сделает все само!
А если серьезно это маленькая библиотечка, а точнее там одна функция которая создает очень простое окно, где нет ничего лишнего.
Данный пример и все файлы на github
Разбор по шагам
Шаг 1.
В head нужно подключить два файла showDialog.js, showDialog.css
Шаг 2.
Функция showDialog принимает объект который может содержать следующие ключи
title — заголовок
message — сообщение или шаблон
data — данные которые будут вставлены в шаблон
buttons — кнопки
Hello world
Самый базовый пример
Два аргумента title и message (строка)
showDialog({
title: 'Сообщение',
message: "Hello world"
})
message
message — может принимать несколько типов данных
- строки
- функции
- промисы
Пример message — тип функция
showDialog({
title: 'Ширина окна',
message: () => document.body.offsetWidth
})
Пример message — тип промис
showDialog({
title: 'json с сервера',
message: fetch('https://jsonplaceholder.typicode.com/todos/1')
})
buttons
buttons — принимает объект
- где ключ надпись на кнопке
- а значение callback функция
которая будет вызвана при нажатии на кнопку
Пример окна валидации
в message передадим строку в которой два input, у каждого input укажем атрибут name
(email и password)
showDialog({
title: 'Авторизация',
message: `<input type="text" placeholder="Логин" name="email">
<input type="password" placeholder="Пароль" name="password">`,
buttons: {
'Вход': function(data){
// Проверка данных
console.log('Данные', data)
},
'Забыл пароль': function(data){
// Сброс пароля
}
}
})
Получаем рабочее окно с двумя кнопками
При клике на [Вход] в консоли видим сообщение с данными которые мы ввели
при этом ключи это те самые "name" которые указали
data
data — это объект который встраивается в шаблон по ключам
К примеру в message мы можем указать строку как шаблон "Привет $name"
showDialog({
title: 'data',
message: 'Привет $name',
data: {
name: 'Вася'
}
})
теперь добавим кнопку [Это не мое имя] при клике на эту кнопку выведем input где можно будет указать свое имя. Для этого можно воспользоваться встроенным методом right, для вызова боковой панели
showDialog({
title: 'data',
message: 'Привет $name',
data: {
name: 'Вася'
},
buttons: {
'Это не мое имя': function(data) {
this.right({
message: `<input type='text' name='name' placeholder='Введите свое имя'>`
})
}
}
})
this.right принимает объект с ключами message и buttons
и по умолчанию добавляется кнопка "Сохранить".
При нажатии на эту кнопку в data добавляются новые данные и основной шаблон перерисовывается.
На этом пока все, спасибо за внимание.