From efaf340e863dba165ed0e98661bfbf4c0657b347 Mon Sep 17 00:00:00 2001 From: distalx Date: Thu, 7 Apr 2022 20:44:35 +0530 Subject: [PATCH 1/3] Migrating from `jQuery` to vanilla JS --- bert.js | 48 +++++++++++++++++++++++++++++++++++++----------- package.js | 4 ++-- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/bert.js b/bert.js index 289bc00..66725e6 100755 --- a/bert.js +++ b/bert.js @@ -1,3 +1,7 @@ +function delay(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + class BertAlert { constructor() { this.styles = [ @@ -42,7 +46,9 @@ class BertAlert { } isVisible() { - return $( '.bert-alert' ).hasClass( 'show' ); + // return $( '.bert-alert' ).hasClass( 'show' ); + const el = document.getElementsByClassName('bert-alert')[0]; + return el.classList.contains('show'); } handleAlert( alert ) { @@ -53,8 +59,12 @@ class BertAlert { } registerClickHandler() { - $( '.bert-alert' ).off( 'click' ); - $( '.bert-alert' ).on( 'click', () => { this.hide(); } ); + + // $( '.bert-alert' ).off( 'click' ); + // $( '.bert-alert' ).on( 'click', () => { this.hide(); } ); + const el = document.getElementsByClassName('bert-alert')[0]; + el.removeEventListener('click', () => {}); + el.addEventListener('click', () => { this.hide(); } ); } bertTimer() { @@ -64,18 +74,34 @@ class BertAlert { } show() { - $( '.bert-alert' ).addClass( 'show' ).delay( 25 ).queue( () => { - $( '.bert-alert' ).addClass( 'animate' ).dequeue(); - }); + // $( '.bert-alert' ).addClass( 'show' ).delay( 25 ).queue( () => { + // $( '.bert-alert' ).addClass( 'animate' ).dequeue(); + // }); + + const el = document.getElementsByClassName('bert-alert')[0]; + el.classList.add('show'); + delay(25).then(() => el.classList.add('animate')) } hide() { - $( '.bert-alert' ).removeClass( 'animate' ); - setTimeout( () => { - $( '.bert-alert' ).removeClass( 'show' ); - $( '.bert-icon').remove(); + // $( '.bert-alert' ).removeClass( 'animate' ); + // setTimeout( () => { + // $( '.bert-alert' ).removeClass( 'show' ); + // $( '.bert-icon').remove(); + // Session.set( 'bertAlert', null ); + // }, 300 ); + const el = document.getElementsByClassName('bert-alert')[0]; + el.classList.remove('animate'); + delay(300).then(() => { + el.classList.remove('show'); + const el2 = document.getElementsByClassName('bert-icon')[0]; + if (el2.parentNode !== null) { + el2.parentNode.removeChild(el2); + } Session.set( 'bertAlert', null ); - }, 300 ); + }) + + } setBertOnSession( alert ) { diff --git a/package.js b/package.js index 4bd6837..0e830ab 100755 --- a/package.js +++ b/package.js @@ -7,10 +7,10 @@ Package.describe({ }); Package.onUse(function (api) { - api.versionsFrom("1.2.0.2"); + api.versionsFrom("2.6"); api.use( - ["ecmascript", "templating", "session", "jquery", "fourseven:scss@4.12.0"], + ["ecmascript", "templating", "session", "fourseven:scss@4.15.0"], "client" ); From 1fd1cb59f4eccbc2ed1298228bde39f22525e1cd Mon Sep 17 00:00:00 2001 From: distalx Date: Fri, 8 Apr 2022 04:37:57 +0530 Subject: [PATCH 2/3] Replace `FontAwesome` in favour of `Bootstrap Icons` --- README.md | 23 ++++++++++++++--------- bert.js | 15 ++++++++++----- tests/client.js | 8 ++++---- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index bb563ff..ad42476 100755 --- a/README.md +++ b/README.md @@ -36,6 +36,11 @@ Bert hit the gym since v1.0 came out and has dropped some fat and put on a bit o Despite having totally ripped abs now—and aside from the changes to defaults mentioned above—Bert's API is 100% backwards compatible. Bert doesn't forget where he came from. Represent. + +#### Changes & Deprecations in v3.x +Bert has shed `jQuery`. Bert is now using a [Bootstrap Icons](https://github.com/twbs/icons) for it's default icons. Don't forget to add them as a dependency. [Instructions for installation are found here](https://icons.getbootstrap.com/#install) + + #### Basic Usage There are two ways to display messages with Bert. The classic way, passing a message, type, and style: @@ -51,14 +56,14 @@ Bert.alert({ message: 'Ernie — Rubber Duckie', type: 'info', style: 'growl-top-right', - icon: 'fas fa-music' + icon: 'bi bi-music-note-beamed' }); ``` It's important to point out that the Classic version has also picked up support for adding an icon, but requires that you specify all arguments before it: ``` -Bert.alert( 'Ernie, pick up your rubber duckies, now!', 'danger', 'fixed-top', 'fas fa-frown-open' ); +Bert.alert( 'Ernie, pick up your rubber duckies, now!', 'danger', 'fixed-top', 'bi bi-emoji-frown' ); ``` #### API & Defaults @@ -82,11 +87,11 @@ Bert wants to make sure that your users know how angry (or happy) he is about wh - `Bert.icons` (based on the type passed to Bert) - - `default`: `'fas fa-bell'`, - - `success`: `'fas fa-check'`, - - `info`: `'fas fa-info'`, - - `warning`: `'fas fa-exclamation-triangle'`, - - `danger`: `'fas fa-times'` + - `default`: `'bi bi-bell'`, + - `success`: `'bi bi-check'`, + - `info`: `'bi bi-info'`, + - `warning`: `'bi bi-exclamation-triangle'`, + - `danger`: `'bi bi-x'` If you'd like (recommended), you can set any of the values above as defaults, along with a few other settings: @@ -101,7 +106,7 @@ Bert.defaults = { // Accepts: default, success, info, warning, danger. }; ``` -To add new types and styles, you can call `Bert.types.push( '' )` or `Bert.styles.push( '