UNPKG

baseframe-js

Version:

A suite of useful Javascript plugins and functions to help with Front-end Development on websites

210 lines (209 loc) 8.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _cashDom = _interopRequireDefault(require("cash-dom")); var _helpers = require("./util/helpers"); var _Store = _interopRequireDefault(require("./core/Store")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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, _toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var VERSION = "1.0.0"; var DATA_NAME = 'Toastr'; var EVENT_NAME = 'toastr'; var DEFAULTS = { duration: 3000, appendTo: document.body, animationDuration: 500, content: '', outerCss: 'toastr', enabledCss: 'toastr--enabled', dismissCss: 'toastr--dismiss', btnDismissCss: 'toastr__btn-dismiss', closeIconCss: 'ico i-close', ariaLive: 'polite', closeTextCopy: 'Dismiss', cssGroupKey: 'std', oneOnly: false }; var toastContainers = new Map(); var currentlyToastingGlobal = false; var Toastr = exports["default"] = /*#__PURE__*/function () { function Toastr(element, options) { _classCallCheck(this, Toastr); _defineProperty(this, "toastrFinallyTimer", void 0); _defineProperty(this, "currentlyToasting", void 0); _defineProperty(this, "toasterBodyBuilt", void 0); _defineProperty(this, "$element", void 0); _defineProperty(this, "$toastrBody", void 0); _defineProperty(this, "$toastrWrap", void 0); _defineProperty(this, "params", void 0); var s = this; var dataOptions = (0, _helpers.getDataOptions)(element, EVENT_NAME); //state s.$element = (0, _cashDom["default"])(element); s.toastrFinallyTimer = null; s.$toastrBody = null; s.$toastrWrap = null; s.currentlyToasting = false; s.params = _cashDom["default"].extend({}, Toastr.defaults, options, dataOptions); s.$element.on("click.".concat(EVENT_NAME, " ").concat(EVENT_NAME), function () { return s.launch(); }); return s; } return _createClass(Toastr, [{ key: "dismiss", value: function dismiss() { var s = this; var _s$params = s.params, animationDuration = _s$params.animationDuration, dismissCss = _s$params.dismissCss; s.toastrFinallyTimer && clearTimeout(s.toastrFinallyTimer); s.$toastrWrap.addClass(dismissCss); setTimeout(function () { var $toatrContainer = s.getToasterContainer(); s.$toastrWrap.removeClass(dismissCss).detach(); if (!$toatrContainer.children('div').length) { s.getToasterContainer().detach(); } s.currentlyToasting = false; currentlyToastingGlobal = false; }, animationDuration); } }, { key: "setContent", value: function setContent(content) { var updateNow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var s = this; _cashDom["default"].extend(s.params, { content: content }); if (updateNow) { s.updateContent(s.params.content); } } }, { key: "launch", value: function launch() { var s = this; var _s$params2 = s.params, content = _s$params2.content, dismissCss = _s$params2.dismissCss, duration = _s$params2.duration, enabledCss = _s$params2.enabledCss, oneOnly = _s$params2.oneOnly; if (!s.currentlyToasting) { if (currentlyToastingGlobal && oneOnly) { return; } if (!s.toasterBodyBuilt) { s.buildElems(); } s.$toastrWrap.removeClass("".concat(dismissCss, " ").concat(enabledCss)); s.updateContent(content); (0, _cashDom["default"])(document.body).append(s.getToasterContainer().append(s.$toastrWrap)); setTimeout(function () { return s.$toastrWrap.addClass(enabledCss); }, 0); // Auto remove if not dismissed s.toastrFinallyTimer = setTimeout(function () { return s.dismiss(); }, duration); s.currentlyToasting = true; currentlyToastingGlobal = true; } } }, { key: "getToasterContainer", value: function getToasterContainer() { var _this$params = this.params, cssGroupKey = _this$params.cssGroupKey, outerCss = _this$params.outerCss; var toasterWrapCss = "".concat(outerCss, "-wrap ").concat(outerCss, "-wrap--").concat(cssGroupKey); if (!toastContainers.has(toasterWrapCss)) { toastContainers.set(toasterWrapCss, (0, _cashDom["default"])('<div/>').attr({ "class": toasterWrapCss })); } return toastContainers.get(toasterWrapCss); } }, { key: "buildElems", value: function buildElems() { var s = this; var _s$params3 = s.params, ariaLive = _s$params3.ariaLive, btnDismissCss = _s$params3.btnDismissCss, closeIconCss = _s$params3.closeIconCss, closeTextCopy = _s$params3.closeTextCopy, outerCss = _s$params3.outerCss; s.$toastrBody = (0, _cashDom["default"])('<div>').attr({ "class": s.params.outerCss + '__body' }); s.$toastrWrap = (0, _cashDom["default"])('<div>').attr({ "class": outerCss, role: 'alert', 'aria-live': ariaLive }).append(s.$toastrBody, (0, _cashDom["default"])('<button>').attr({ type: 'button', "class": btnDismissCss }).append((0, _cashDom["default"])('<i>').attr({ "class": closeIconCss }).append((0, _cashDom["default"])('<span>').attr({ "class": 'sr-only' }).text(closeTextCopy)))); s.toasterBodyBuilt = true; // click event to dismiss s.$toastrWrap.on('click', 'button', function () { return s.dismiss(); }); } }, { key: "updateContent", value: function updateContent(content) { var s = this; if (s.$toastrBody) { s.$toastrBody.empty(); if ('string' === typeof content) { s.$toastrBody.html(content); } else { s.$toastrBody.append(content); } } } }], [{ key: "setContent", value: function setContent(element, content) { var updateNow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; (0, _cashDom["default"])(element).each(function () { var s = (0, _Store["default"])(this, DATA_NAME); _cashDom["default"].extend(s.params, { content: content }); if (updateNow) { s.updateContent(s.params.content); } }); } }, { key: "remove", value: function remove(element, plugin) { (0, _cashDom["default"])(element).each(function () { var s = plugin || (0, _Store["default"])(this, DATA_NAME); s.$element.off("click.".concat(EVENT_NAME, " ").concat(EVENT_NAME)); (0, _Store["default"])(this, DATA_NAME, null); }); } }]); }(); _defineProperty(Toastr, "defaults", DEFAULTS); _defineProperty(Toastr, "version", VERSION); _defineProperty(Toastr, "pluginName", DATA_NAME); _defineProperty(Toastr, "DismissedEventName", 'toastDismissed');