notie

notie is a clean and simple notification, input, and selection suite for javascript, with no dependencies.
demo: https://jaredreich.com/projects/notie
With notie you can:
- Alert users
- Confirm user choices
- Allow users to input information
- Allow users to select choices
- Allow users to select dates

Features
- Pure JavaScript, no dependencies, written in ES6
- Easily customizable
- Change colors to match your style/brand
- Modify styling with the sass file (notie.scss) or overwrite the CSS
- Font size auto-adjusts based on screen size
Browser Support
- IE 10+
- Chrome 11+
- Firefox 4+
- Safari 5.1+
- Opera 11.5+
Installation
HTML:
<head>
...
<link rel="stylesheet" type="text/css" href="https://unpkg.com/notie/dist/notie.min.css">
</head>
<body>
...
<script src="https://unpkg.com/notie"></script>
</body>
npm:
npm install notie
Usage
notie.alert({
type: Number|String,
message: String,
stay: Boolean,
time: Number
})
notie.force({
type: Number|String,
text: String,
buttonText: String
}, callback())
notie.confirm({
text: String,
yesText: String,
noText: String
}, yesCallbackOptional(), noCallbackOptional())
notie.input({
text: String,
submitText: String,
cancelText: String
autocapitalize: 'words',
autocomplete: 'on',
autocorrect: 'off',
autofocus: 'true',
inputmode: 'latin',
max: '10000',
maxlength: '10',
min: '5',
minlength: '1',
placeholder: 'Jane Smith',
spellcheck: 'false',
step: '5',
type: 'text',
allowed: ['an', 's']
}, submitCallbackOptional(value), cancelCallbackOptional(value))
notie.select({
text: String,
cancelText: String,
choices: [
{
type: Number|String,
text: String,
handler: Function
}
...
]
})
notie.date({
value: Date,
submitText: String,
cancelText: String
}, submitCallbackOptional(date), cancelCallbackOptional(date))
For example:
notie.alert({ text: 'Info!')
notie.alert({ type: 1, text: 'Success!', stay: true)
notie.alert({ type: 'success', text: 'Success!', time: 2 })
notie.alert({ type: 2, text: 'Warning<br><b>with</b><br><i>HTML</i><br><u>included.</u>' })
notie.alert({ type: 'warning', text: 'Watch it...' })
notie.alert({ type: 3, text: 'Error.' })
notie.alert({ type: 'error', text: 'Oops!' })
notie.alert({ type: 4, text: 'Information.' })
notie.alert({ type: 'info', text: 'FYI, blah blah blah.' })
notie.force({
type: 3,
text: 'You cannot do that, sending you back.',
buttonText: 'OK'
}, function () {
notie.alert({ type: 3, text: 'Maybe when you\'re older...' })
})
notie.confirm({
text: 'Are you sure you want to do that?',
yesText: 'Yes',
noText: 'Cancel'
}, function () {
notie.alert({ type: 1, text: 'Good choice!' })
}, function () {
notie.alert({ type: 3, text: 'Aw, why not? :(' })
})
notie.confirm({ text: 'Are you sure?' }, function() {
notie.confirm({ text: 'Are you <b>really</b> sure?' }, function() {
notie.confirm({ text: 'Are you <b>really</b> <i>really</i> sure?' }, function() {
notie.alert({ text: 'Okay, jeez...' })
})
})
})
notie.input({
text: 'Please enter your email:',
submitText: 'Submit',
cancelText: 'Cancel',
value: 'jane@doe.com',
type: 'email',
placeholder: 'name@example.com'
}, function(value) {
notie.alert({ type: 1, text: 'You entered: ' + value })
}, function(value) {
notie.alert({ type: 3, text: 'You cancelled with this value: ' + value })
})
notie.input({
text: 'Please enter your name:',
type: 'text',
placeholder: 'Jane Doe',
allowed: ['a', 's']
}, function(value) {
notie.alert({ type: 1, text: 'You entered: ' + value })
}, function(value) {
notie.alert({ type: 3, text: 'You cancelled with this value: ' + value })
})
notie.input({
text: 'Please enter the price:',
type: 'text',
placeholder: '500',
allowed: new RegExp('[^0-9]', 'g')
}, function(value) {
notie.alert({ type: 1, text: 'You entered: ' + value })
}, function(value) {
notie.alert({ type: 3, text: 'You cancelled with this value: ' + value })
})
notie.select({
text: 'Demo item #1, owner is Jane Smith',
cancelText: 'Cancel',
choices: [
{
text: 'Share',
handler: function () {
notie.alert({ type: 1, text: 'Share item!' })
}
},
{
text: 'Open',
handler: function () {
notie.alert({ type: 1, text: 'Open item!' })
}
},
{
type: 2,
text: 'Edit',
handler: function () {
notie.alert({ type: 2, text: 'Edit item!' })
}
},
{
type: 3,
text: 'Delete',
handler: function () {
notie.alert({ type: 3, text: 'Delete item!' })
}
}
]
})
notie.date({
value: new Date(2015, 8, 27),
submitText: 'Submit',
cancelText: 'Cancel'
}, function (date) {
notie.alert({ type: 1, text: 'You selected: ' + date.toISOString() })
}, function (date) {
notie.alert({ type: 3, text: 'You cancelled: ' + date.toISOString() })
})
Use ES6 to inherit 'this' while using notie
notie.confirm('Is ES6 great?', 'Yes', 'Cancel', () => {
this.location.href = 'htts://google.com'
})
Options
General
notie.setOptions({
alertTime: 3,
dateMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
overlayClickDismiss: true,
overlayOpacity: 0.75,
transitionCurve: 'ease',
transitionDuration: 0.3,
transitionSelector: 'all'
classes: {
container: 'notie-container',
textbox: 'notie-textbox',
textboxInner: 'notie-textbox-inner',
button: 'notie-button',
element: 'notie-element',
elementHalf: 'notie-element-half',
elementThird: 'notie-element-third',
overlay: 'notie-overlay',
backgroundSuccess: 'notie-background-success',
backgroundWarning: 'notie-background-warning',
backgroundError: 'notie-background-error',
backgroundInfo: 'notie-background-info',
backgroundNeutral: 'notie-background-neutral',
backgroundOverlay: 'notie-background-overlay',
alert: 'notie-alert',
inputField: 'notie-input-field',
selectChoiceRepeated: 'notie-select-choice-repeated',
dateSelectorInner: 'notie-date-selector-inner',
dateSelectorUp: 'notie-date-selector-up'
},
ids: {
overlay: 'notie-overlay'
}
})
Other Methods
notie.hideAlerts(callbackOptional)
License
MIT