- // ==UserScript==
- // @license MIT
- // @original-script https://github.com/alihesari/notice.js
- // @original-author Toolkito
- // @original-license MIT
- // ==/UserScript==
-
- // MIT License
-
- // Copyright (c) 2018 Toolkito
-
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
-
- // The above copyright notice and this permission notice shall be included in all
- // copies or substantial portions of the Software.
-
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- // SOFTWARE.
-
- (function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory();
- else if(typeof define === 'function' && define.amd)
- define("NoticeJs", [], factory);
- else if(typeof exports === 'object')
- exports["NoticeJs"] = factory();
- else
- root["NoticeJs"] = factory();
- })(typeof self !== 'undefined' ? self : this, function() {
- return /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId]) {
- /******/ return installedModules[moduleId].exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ i: moduleId,
- /******/ l: false,
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Flag the module as loaded
- /******/ module.l = true;
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /******/
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
- /******/
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
- /******/
- /******/ // define getter function for harmony exports
- /******/ __webpack_require__.d = function(exports, name, getter) {
- /******/ if(!__webpack_require__.o(exports, name)) {
- /******/ Object.defineProperty(exports, name, {
- /******/ configurable: false,
- /******/ enumerable: true,
- /******/ get: getter
- /******/ });
- /******/ }
- /******/ };
- /******/
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function getDefault() { return module['default']; } :
- /******/ function getModuleExports() { return module; };
- /******/ __webpack_require__.d(getter, 'a', getter);
- /******/ return getter;
- /******/ };
- /******/
- /******/ // Object.prototype.hasOwnProperty.call
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
- /******/
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "dist/";
- /******/
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(__webpack_require__.s = 2);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var noticeJsModalClassName = exports.noticeJsModalClassName = 'noticejs-modal';
- var closeAnimation = exports.closeAnimation = 'noticejs-fadeOut';
-
- var Defaults = exports.Defaults = {
- title: '',
- text: '',
- type: 'success',
- position: 'topRight',
- timeout: 30,
- progressBar: true,
- closeWith: ['button'],
- animation: null,
- modal: false,
- scroll: {
- maxHeight: 300,
- showOnHover: true
- },
- rtl: false,
- callbacks: {
- beforeShow: [],
- onShow: [],
- afterShow: [],
- onClose: [],
- afterClose: [],
- onClick: [],
- onHover: [],
- onTemplate: []
- }
- };
-
- /***/ }),
- /* 1 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.appendNoticeJs = exports.addListener = exports.CloseItem = exports.AddModal = undefined;
- exports.getCallback = getCallback;
-
- var _api = __webpack_require__(0);
-
- var API = _interopRequireWildcard(_api);
-
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
- var options = API.Defaults;
-
- /**
- * @param {NoticeJs} ref
- * @param {string} eventName
- * @return {void}
- */
- function getCallback(ref, eventName) {
- if (ref.callbacks.hasOwnProperty(eventName)) {
- ref.callbacks[eventName].forEach(function (cb) {
- if (typeof cb === 'function') {
- cb.apply(ref);
- }
- });
- }
- }
-
- var AddModal = exports.AddModal = function AddModal() {
- if (document.getElementsByClassName(API.noticeJsModalClassName).length <= 0) {
- var element = document.createElement('div');
- element.classList.add(API.noticeJsModalClassName);
- element.classList.add('noticejs-modal-open');
- document.body.appendChild(element);
- // Remove class noticejs-modal-open
- setTimeout(function () {
- element.className = API.noticeJsModalClassName;
- }, 200);
- }
- };
-
- var CloseItem = exports.CloseItem = function CloseItem(item) {
- getCallback(options, 'onClose');
-
- // Set animation to close notification item
- if (options.animation !== null && options.animation.close !== null) {
- item.className += ' ' + options.animation.close;
- }
- setTimeout(function () {
- item.remove();
- }, 200);
-
- // Close modal
- if (options.modal === true && document.querySelectorAll("[noticejs-modal='true']").length >= 1) {
- document.querySelector('.noticejs-modal').className += ' noticejs-modal-close';
- setTimeout(function () {
- document.querySelector('.noticejs-modal').remove();
- }, 500);
- }
-
- // Remove container
- var position = '.' + item.closest('.noticejs').className.replace('noticejs', '').trim();
- setTimeout(function () {
- if (document.querySelectorAll(position + ' .item').length <= 0) {
- document.querySelector(position) && document.querySelector(position).remove();
- }
- }, 500);
- };
-
- var addListener = exports.addListener = function addListener(item) {
- // Add close button Event
- if (options.closeWith.includes('button')) {
- item.querySelector('.close').addEventListener('click', function () {
- CloseItem(item);
- });
- }
-
- // Add close by click Event
- if (options.closeWith.includes('click')) {
- item.style.cursor = 'pointer';
- item.addEventListener('click', function (e) {
- if (e.target.className !== 'close') {
- getCallback(options, 'onClick');
- CloseItem(item);
- }
- });
- } else {
- item.addEventListener('click', function (e) {
- if (e.target.className !== 'close') {
- getCallback(options, 'onClick');
- }
- });
- }
-
- item.addEventListener('mouseover', function () {
- getCallback(options, 'onHover');
- });
- };
-
- var appendNoticeJs = exports.appendNoticeJs = function appendNoticeJs(noticeJsHeader, noticeJsBody, noticeJsProgressBar) {
- var target_class = '.noticejs-' + options.position;
- // Create NoticeJs item
- var noticeJsItem = document.createElement('div');
- noticeJsItem.classList.add('item');
- noticeJsItem.classList.add(options.type);
- if (options.rtl === true) {
- noticeJsItem.classList.add('noticejs-rtl');
- }
-
- // Add Header
- if (noticeJsHeader && noticeJsHeader !== '') {
- noticeJsItem.appendChild(noticeJsHeader);
- }
-
- // Add body
- noticeJsItem.appendChild(noticeJsBody);
-
- // Add progress bar
- if (noticeJsProgressBar && noticeJsProgressBar !== '') {
- noticeJsItem.appendChild(noticeJsProgressBar);
- }
-
- // Empty top and bottom container
- if (['top', 'bottom'].includes(options.position)) {
- document.querySelector(target_class).innerHTML = '';
- }
-
- // Add open animation
- if (options.animation !== null && options.animation.open !== null) {
- noticeJsItem.className += ' ' + options.animation.open;
- }
-
- // Add Modal
- if (options.modal === true) {
- noticeJsItem.setAttribute('noticejs-modal', 'true');
- AddModal();
- }
-
- // Add Listener
- addListener(noticeJsItem, options.closeWith);
-
- getCallback(options, 'beforeShow');
- getCallback(options, 'onShow');
- document.querySelector(target_class).appendChild(noticeJsItem);
- getCallback(options, 'afterShow');
-
- return noticeJsItem;
- };
-
- /***/ }),
- /* 2 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _noticejs = __webpack_require__(3);
-
- var _noticejs2 = _interopRequireDefault(_noticejs);
-
- var _api = __webpack_require__(0);
-
- var API = _interopRequireWildcard(_api);
-
- var _components = __webpack_require__(4);
-
- var _helpers = __webpack_require__(1);
-
- var helper = _interopRequireWildcard(_helpers);
-
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var NoticeJs = function () {
- /**
- * @param {object} options
- * @returns {Noty}
- */
- function NoticeJs() {
- var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-
- _classCallCheck(this, NoticeJs);
-
- this.options = Object.assign(API.Defaults, options);
- this.component = new _components.Components();
-
- this.on('beforeShow', this.options.callbacks.beforeShow);
- this.on('onShow', this.options.callbacks.onShow);
- this.on('afterShow', this.options.callbacks.afterShow);
- this.on('onClose', this.options.callbacks.onClose);
- this.on('afterClose', this.options.callbacks.afterClose);
- this.on('onClick', this.options.callbacks.onClick);
- this.on('onHover', this.options.callbacks.onHover);
-
- return this;
- }
-
- /**
- * @returns {NoticeJs}
- */
-
-
- _createClass(NoticeJs, [{
- key: 'show',
- value: function show() {
- var container = this.component.createContainer();
- if (document.querySelector('.noticejs-' + this.options.position) === null) {
- document.body.appendChild(container);
- }
-
- var noticeJsHeader = void 0;
- var noticeJsBody = void 0;
- var noticeJsProgressBar = void 0;
-
- // Create NoticeJs header
- noticeJsHeader = this.component.createHeader(this.options.title, this.options.closeWith);
-
- // Create NoticeJs body
- noticeJsBody = this.component.createBody(this.options.text);
-
- // Create NoticeJs progressBar
- if (this.options.progressBar === true) {
- noticeJsProgressBar = this.component.createProgressBar();
- }
-
- //Append NoticeJs
- var noticeJs = helper.appendNoticeJs(noticeJsHeader, noticeJsBody, noticeJsProgressBar);
-
- return noticeJs;
- }
-
- /**
- * @param {string} eventName
- * @param {function} cb
- * @return {NoticeJs}
- */
-
- }, {
- key: 'on',
- value: function on(eventName) {
- var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
-
- if (typeof cb === 'function' && this.options.callbacks.hasOwnProperty(eventName)) {
- this.options.callbacks[eventName].push(cb);
- }
-
- return this;
- }
- }]);
-
- return NoticeJs;
- }();
-
- exports.default = NoticeJs;
- module.exports = exports['default'];
-
- /***/ }),
- /* 3 */
- /***/ (function(module, exports) {
-
- // removed by extract-text-webpack-plugin
-
- /***/ }),
- /* 4 */
- /***/ (function(module, exports, __webpack_require__) {
-
- "use strict";
-
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.Components = undefined;
-
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _api = __webpack_require__(0);
-
- var API = _interopRequireWildcard(_api);
-
- var _helpers = __webpack_require__(1);
-
- var helper = _interopRequireWildcard(_helpers);
-
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var options = API.Defaults;
-
- var Components = exports.Components = function () {
- function Components() {
- _classCallCheck(this, Components);
- }
-
- _createClass(Components, [{
- key: 'createContainer',
- value: function createContainer() {
- var element_class = 'noticejs-' + options.position;
- var element = document.createElement('div');
- element.classList.add('noticejs');
- element.classList.add(element_class);
-
- return element;
- }
- }, {
- key: 'createHeader',
- value: function createHeader() {
- var element = void 0;
- if (options.title && options.title !== '') {
- element = document.createElement('div');
- element.setAttribute('class', 'noticejs-heading');
- element.textContent = options.title;
- }
-
- // Add close button
- if (options.closeWith.includes('button')) {
- var close = document.createElement('div');
- close.setAttribute('class', 'close');
- close.innerHTML = '×';
- if (element) {
- element.appendChild(close);
- } else {
- element = close;
- }
- }
-
- return element;
- }
- }, {
- key: 'createBody',
- value: function createBody() {
- var element = document.createElement('div');
- element.setAttribute('class', 'noticejs-body');
- var content = document.createElement('div');
- content.setAttribute('class', 'noticejs-content');
- content.innerHTML = options.text;
- element.appendChild(content);
-
- if (options.scroll !== null && options.scroll.maxHeight !== '') {
- element.style.overflowY = 'auto';
- element.style.maxHeight = options.scroll.maxHeight + 'px';
-
- if (options.scroll.showOnHover === true) {
- element.style.visibility = 'hidden';
- }
- }
- return element;
- }
- }, {
- key: 'createProgressBar',
- value: function createProgressBar() {
- var element = document.createElement('div');
- element.setAttribute('class', 'noticejs-progressbar');
- var bar = document.createElement('div');
- bar.setAttribute('class', 'noticejs-bar');
- element.appendChild(bar);
-
- // Progress bar animation
- if (options.progressBar === true && typeof options.timeout !== 'boolean' && options.timeout !== false) {
- var frame = function frame() {
- if (width <= 0) {
- clearInterval(id);
-
- var item = element.closest('div.item');
- // Add close animation
- if (options.animation !== null && options.animation.close !== null) {
-
- // Remove open animation class
- item.className = item.className.replace(new RegExp('(?:^|\\s)' + options.animation.open + '(?:\\s|$)'), ' ');
- // Add close animation class
- item.className += ' ' + options.animation.close;
-
- // Close notification after 0.5s + timeout
- var close_time = parseInt(options.timeout) + 500;
- setTimeout(function () {
- helper.CloseItem(item);
- }, close_time);
- } else {
- // Close notification when progress bar completed
- helper.CloseItem(item);
- }
- } else {
- width--;
- bar.style.width = width + '%';
- }
- };
-
- var width = 100;
- var id = setInterval(frame, options.timeout);
- }
-
- return element;
- }
- }]);
-
- return Components;
- }();
-
- /***/ })
- /******/ ]);
- });