Created
July 10, 2016 20:36
-
-
Save TylerJPresley/3359f25efe34fe9340e962941c006c6f to your computer and use it in GitHub Desktop.
Toast notificaitons / Aurelia (CLI/RequireJS)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.toast-title { font-weight: bold; } | |
.toast-message { -ms-word-wrap: break-word; word-wrap: break-word; } | |
.toast-message a, | |
.toast-message label { color: #ffffff; } | |
.toast-message a:hover { color: #cccccc; text-decoration: none; } | |
.toast-close-button { | |
position: relative; | |
right: -0.3em; | |
top: -0.3em; | |
float: right; | |
font-size: 20px; | |
font-weight: bold; | |
color: #ffffff; | |
-webkit-text-shadow: 0 1px 0 #ffffff; | |
text-shadow: 0 1px 0 #ffffff; | |
opacity: 0.8; | |
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); | |
filter: alpha(opacity=80); | |
} | |
.toast-close-button:hover, | |
.toast-close-button:focus { | |
color: #000000; | |
text-decoration: none; | |
cursor: pointer; | |
opacity: 0.4; | |
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); | |
filter: alpha(opacity=40); | |
} | |
/*Additional properties for button version | |
iOS requires the button element instead of an anchor tag. | |
If you want the anchor version, it requires `href="#"`.*/ | |
button.toast-close-button { | |
padding: 0; | |
cursor: pointer; | |
background: transparent; | |
border: 0; | |
-webkit-appearance: none; | |
} | |
.toast-top-center { | |
top: 0; | |
right: 0; | |
width: 100%; | |
} | |
.toast-bottom-center { | |
bottom: 0; | |
right: 0; | |
width: 100%; | |
} | |
.toast-top-full-width { | |
top: 0; | |
right: 0; | |
width: 100%; | |
} | |
.toast-bottom-full-width { | |
bottom: 0; | |
right: 0; | |
width: 100%; | |
} | |
.toast-top-left { | |
top: 12px; | |
left: 12px; | |
} | |
.toast-top-right { | |
top: 12px; | |
right: 12px; | |
} | |
.toast-bottom-right { | |
right: 12px; | |
bottom: 12px; | |
} | |
.toast-bottom-left { | |
bottom: 12px; | |
left: 12px; | |
} | |
#toast-container { | |
position: fixed; | |
z-index: 999999; | |
/*overrides*/ | |
} | |
#toast-container * { | |
-moz-box-sizing: border-box; | |
-webkit-box-sizing: border-box; | |
box-sizing: border-box; | |
} | |
#toast-container > div { | |
position: relative; | |
overflow: hidden; | |
margin: 0 0 .5rem .5rem; | |
padding: 1rem; | |
min-width: 25rem; | |
-moz-box-shadow: 0 2px 4px rgba(#000000, .2); | |
-webkit-box-shadow: 0 2px 4px rgba(#000000, .2); | |
box-shadow: 0 2px 4px rgba(#000000, .2); | |
color: #ffffff; | |
} | |
#toast-container > :hover { | |
cursor: pointer; | |
} | |
#toast-container.toast-top-center > div, | |
#toast-container.toast-bottom-center > div { | |
width: 300px; | |
margin: auto; | |
} | |
#toast-container.toast-top-full-width > div, | |
#toast-container.toast-bottom-full-width > div { | |
width: 96%; | |
margin: auto; | |
} | |
.toast { | |
background-color: #030303; | |
} | |
.toast-success { background-color: $green-500; color: $green-500-text; } | |
.toast-error { background-color: $red-500; color: $red-500-text; } | |
.toast-info { background-color: $grey-800; color: $grey-800-text; } | |
.toast-warning { background-color: $yellow-500; color: $yellow-500-text; } | |
.toast-progress { | |
position: absolute; | |
left: 0; | |
bottom: 0; | |
height: 4px; | |
background-color: #000000; | |
opacity: 0.4; | |
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); | |
filter: alpha(opacity=40); | |
} | |
/*Responsive Design*/ | |
@media all and (max-width: 240px) { | |
#toast-container > div { | |
padding: 8px 8px 8px 50px; | |
width: 11em; | |
} | |
#toast-container .toast-close-button { | |
right: -0.2em; | |
top: -0.2em; | |
} | |
} | |
@media all and (min-width: 241px) and (max-width: 480px) { | |
#toast-container > div { | |
padding: 8px 8px 8px 50px; | |
width: 18em; | |
} | |
#toast-container .toast-close-button { | |
right: -0.2em; | |
top: -0.2em; | |
} | |
} | |
@media all and (min-width: 481px) and (max-width: 768px) { | |
#toast-container > div { | |
padding: 15px 15px 15px 50px; | |
width: 25em; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Imports | |
*/ | |
import {transient, inject} from 'aurelia-framework'; | |
import Toastr from 'toastr'; | |
/** | |
* Decorators | |
*/ | |
@inject(Toastr) | |
/** | |
* Notification Class | |
* @class | |
*/ | |
export class Notification { | |
/** | |
* Constructs a ServiceUtility instance | |
* @param toastr {object} - toastr instance | |
* @constructor | |
*/ | |
constructor(toastr) { | |
this.toastr = toastr; | |
this.toastr.options = { | |
'closeButton': false, | |
'debug': false, | |
'newestOnTop': false, | |
'progressBar': false, | |
'positionClass': 'toast-bottom-left', | |
'preventDuplicates': false, | |
'onclick': null, | |
'showDuration': '300', | |
'hideDuration': '1000', | |
'timeOut': '7500', | |
'extendedTimeOut': '1000', | |
'showEasing': 'swing', | |
'hideEasing': 'linear', | |
'showMethod': 'fadeIn', | |
'hideMethod': 'fadeOut' | |
}; | |
} | |
/** | |
* Shows an error notification | |
* @param msg {String} - message to be displayed | |
*/ | |
showError(msg) { | |
this.toastr.error(msg, null, { 'timeOut': '12500' }); | |
} | |
/** | |
* Shows a success notification | |
* @param msg {String} - message to be displayed | |
*/ | |
showSuccess(msg) { | |
this.toastr.success(msg); | |
} | |
/** | |
* Shows a warning notification | |
* @param msg {String} - message to be displayed | |
*/ | |
showWarning(msg) { | |
this.toastr.warning(msg); | |
} | |
/** | |
* Shows an info notification | |
* @param msg {String} - message to be displayed | |
*/ | |
showInfo(msg) { | |
this.toastr.info(msg); | |
} | |
/** | |
* Handles showing any messages coming back form the server payload | |
* @param messages {object} - object with message arrays | |
*/ | |
handleServerMessages(messages) { | |
for (let message of messages.successes) { | |
this.showSuccess(message); | |
} | |
for (let message of messages.errors) { | |
this.showError(message); | |
} | |
for (let message of messages.infos) { | |
this.showInfo(message); | |
} | |
for (let message of messages.warnings) { | |
this.showWarning(message); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment