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
JavaScript
;
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');