added other units
This commit is contained in:
92
Unit 5/Day 2/js/lib/dismissible.js
Normal file
92
Unit 5/Day 2/js/lib/dismissible.js
Normal file
@@ -0,0 +1,92 @@
|
||||
(function (window) {
|
||||
class Dismissible {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {HTMLElement} root Root Element
|
||||
*/
|
||||
constructor(root, config = {
|
||||
icons: {
|
||||
dismiss: ['lni', 'lni-16', 'lni-close'],
|
||||
info: ['lni', 'lni-32', 'lni-popup'],
|
||||
success: ['lni', 'lni-32', 'lni-checkmark-circle'],
|
||||
error: ['lni', 'lni-32', 'lni-warning']
|
||||
}
|
||||
}) {
|
||||
this._container = root;
|
||||
this._config = config;
|
||||
this._container.classList.add('dismissible-container');
|
||||
}
|
||||
|
||||
show(level, message, icon) {
|
||||
this.dismiss();
|
||||
|
||||
const dismissible = this._createDismissible(level, message, icon);
|
||||
this._container.appendChild(dismissible);
|
||||
}
|
||||
|
||||
dismiss() {
|
||||
while (this._container.firstChild) {
|
||||
this._container.firstChild.remove();
|
||||
}
|
||||
}
|
||||
|
||||
error(message) {
|
||||
this.show('error', message, this._config.icons.error);
|
||||
}
|
||||
|
||||
info(message) {
|
||||
this.show('info', message, this._config.icons.info);
|
||||
}
|
||||
|
||||
success(message) {
|
||||
this.show('success', message, this._config.icons.success);
|
||||
}
|
||||
|
||||
_createDismissible(level, message, icon) {
|
||||
const dismissible = document.createElement('div');
|
||||
|
||||
dismissible.classList.add('dismissible');
|
||||
dismissible.classList.add(level);
|
||||
|
||||
dismissible.appendChild(this._createIcon(icon));
|
||||
dismissible.appendChild(this._createMessage(message));
|
||||
dismissible.appendChild(this._createDismissButton());
|
||||
|
||||
return dismissible;
|
||||
}
|
||||
|
||||
_createDismissButton() {
|
||||
const {
|
||||
icons
|
||||
} = this._config;
|
||||
|
||||
const button = document.createElement('button');
|
||||
button.classList.add('dismiss');
|
||||
button.addEventListener('click', () => this.dismiss());
|
||||
|
||||
const buttonIcon = document.createElement('i');
|
||||
buttonIcon.classList.add(...icons.dismiss);
|
||||
|
||||
button.appendChild(buttonIcon);
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
_createMessage(message) {
|
||||
const element = document.createElement('div');
|
||||
element.classList.add('dismissible-message');
|
||||
element.innerText = message;
|
||||
return element;
|
||||
}
|
||||
|
||||
_createIcon(icon, text) {
|
||||
const element = document.createElement('i');
|
||||
element.classList.add(...icon, 'dismissible-icon');
|
||||
return element;
|
||||
}
|
||||
}
|
||||
|
||||
window.Dismissible = Dismissible;
|
||||
|
||||
})(window);
|
||||
Reference in New Issue
Block a user