diff --git a/index.js b/index.js index 2103b53..9b78143 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,28 @@ // Notification object var Notification = window.Notification || window.webkitNotification +const onerror = function onerror (event) { +} + +const onclick = function onclick (event) { + event.preventDefault() + window.focus() + event.target.close() +} + +const onclose = function onclose (event) { +} + +const onshow = function onshow (event) { +} + +const defaultEvents = { + onerror: onerror, + onclick: onclick, + onclose: onclose, + onshow: onshow +} + // Plugin const VueNativeNotification = { install: function (Vue, options) { @@ -18,7 +40,12 @@ const VueNativeNotification = { Vue.prototype.$notification.requestPermission = requestPermission // Show function - var show = function (title, opts) { + var show = function (title, opts, { + onerror = defaultEvents.onerror, + onclick = defaultEvents.onclick, + onclose = defaultEvents.onclose, + onshow = defaultEvents.onshow + }) { return Promise.resolve() .then(function () { if (options.requestOnNotify && Notification.permission !== 'granted') { @@ -35,7 +62,38 @@ const VueNativeNotification = { } // Create Notification object - return new Notification(title, opts) + const notification = new Notification(title, opts) + + const bindOnError = function (event) { + 'use strict' + defaultEvents.onerror(event) + onerror(event) + } + + const bindOnClick = function (event) { + 'use strict' + defaultEvents.onclick(event) + onclick(event) + } + + const bindOnClose = function (event) { + 'use strict' + defaultEvents.onclose(event) + onclose(event) + } + + const bindOnShow = function (event) { + 'use strict' + defaultEvents.onshow(event) + onshow(event) + } + + notification.onerror = bindOnError + notification.onclick = bindOnClick + notification.onclose = bindOnClose + notification.onshow = bindOnShow + + return notification }) } Vue.notification.show = show diff --git a/package.json b/package.json index 212c1bd..4967fba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-native-notification", - "version": "1.0.0", + "version": "1.0.1", "description": "Vue.js plugin for native notifications", "main": "index.js", "repository": "https://github.com/dennisbruner/vue-native-notification.git", diff --git a/vue-native-notification.min.js b/vue-native-notification.min.js index 54a08b5..3c87e7c 100644 --- a/vue-native-notification.min.js +++ b/vue-native-notification.min.js @@ -1 +1 @@ -(function e(n,t,i){function r(u,f){if(!t[u]){if(!n[u]){var s=typeof require=="function"&&require;if(!f&&s)return s(u,!0);if(o)return o(u,!0);var a=new Error("Cannot find module '"+u+"'");throw a.code="MODULE_NOT_FOUND",a}var c=t[u]={exports:{}};n[u][0].call(c.exports,function(e){var t=n[u][1][e];return r(t?t:e)},c,c.exports,e,n,t,i)}return t[u].exports}var o=typeof require=="function"&&require;for(var u=0;u