{"version":3,"file":"kendo.notification.min.js","sources":["kendo.notification.js"],"sourcesContent":["(function(f, define) {\n define('kendo.notification',[ \"kendo.core\", \"kendo.popup\" ], f);\n})(function() {\n\nvar __meta__ = {\n id: \"notification\",\n name: \"Notification\",\n category: \"web\",\n description: \"The Notification widget displays user alerts.\",\n depends: [ \"core\", \"popup\" ],\n features: [ {\n id: \"notification-fx\",\n name: \"Animation\",\n description: \"Support for animation\",\n depends: [ \"fx\" ]\n } ]\n};\n\n(function($, undefined) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n extend = $.extend,\n setTimeout = window.setTimeout,\n CLICK = \"click\",\n SHOW = \"show\",\n HIDE = \"hide\",\n KNOTIFICATION = \"k-notification\",\n KICLOSE = \".k-notification-wrap .k-i-close\",\n KHIDING = \"k-hiding\",\n INFO = \"info\",\n SUCCESS = \"success\",\n WARNING = \"warning\",\n ERROR = \"error\",\n TOP = \"top\",\n LEFT = \"left\",\n BOTTOM = \"bottom\",\n RIGHT = \"right\",\n UP = \"up\",\n NS = \".kendoNotification\",\n WRAPPER = '
',\n TEMPLATE = '
' +\n '' +\n '
#=content#
' +\n '' +\n '
',\n SAFE_TEMPLATE = TEMPLATE.replace(\"#=content#\", \"#:content#\");\n\n var Notification = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n options = that.options;\n\n if (!options.appendTo || !$(options.appendTo).is(element)) {\n that.element.hide();\n }\n\n that._compileTemplates(options.templates);\n that._guid = \"_\" + kendo.guid();\n that._isRtl = kendo.support.isRtl(element);\n that._compileStacking(options.stacking, options.position.top, options.position.left);\n\n kendo.notify(that);\n },\n\n events: [\n SHOW,\n HIDE\n ],\n\n options: {\n name: \"Notification\",\n position: {\n pinned: true,\n top: null,\n left: null,\n bottom: 20,\n right: 20\n },\n stacking: \"default\",\n hideOnClick: true,\n button: false,\n allowHideAfter: 0,\n autoHideAfter: 5000,\n appendTo: null,\n width: null,\n height: null,\n templates: [],\n title: null,\n animation: {\n open: {\n effects: \"fade:in\",\n duration: 300\n },\n close: {\n effects: \"fade:out\",\n duration: 600,\n hide: true\n }\n }\n },\n\n _compileTemplates: function(templates) {\n var that = this;\n var kendoTemplate = kendo.template;\n\n that._compiled = {};\n\n $.each(templates, function(key, value) {\n that._compiled[value.type] = kendoTemplate(value.template || $(\"#\" + value.templateId).html());\n });\n\n that._defaultCompiled = kendoTemplate(TEMPLATE);\n that._safeCompiled = kendoTemplate(SAFE_TEMPLATE);\n },\n\n _getCompiled: function(type, safe) {\n var defaultCompiled = safe ? this._safeCompiled : this._defaultCompiled;\n\n return type ? this._compiled[type] || defaultCompiled : defaultCompiled;\n },\n\n _compileStacking: function(stacking, top, left) {\n var that = this,\n paddings = { paddingTop: 0, paddingRight: 0, paddingBottom: 0, paddingLeft: 0 },\n horizontalAlignment = left !== null ? LEFT : RIGHT,\n origin, position;\n\n switch (stacking) {\n case \"down\":\n origin = BOTTOM + \" \" + horizontalAlignment;\n position = TOP + \" \" + horizontalAlignment;\n delete paddings.paddingBottom;\n break;\n case RIGHT:\n origin = TOP + \" \" + RIGHT;\n position = TOP + \" \" + LEFT;\n delete paddings.paddingRight;\n break;\n case LEFT:\n origin = TOP + \" \" + LEFT;\n position = TOP + \" \" + RIGHT;\n delete paddings.paddingLeft;\n break;\n case UP:\n origin = TOP + \" \" + horizontalAlignment;\n position = BOTTOM + \" \" + horizontalAlignment;\n delete paddings.paddingTop;\n break;\n default:\n if (top !== null) {\n origin = BOTTOM + \" \" + horizontalAlignment;\n position = TOP + \" \" + horizontalAlignment;\n delete paddings.paddingBottom;\n } else {\n origin = TOP + \" \" + horizontalAlignment;\n position = BOTTOM + \" \" + horizontalAlignment;\n delete paddings.paddingTop;\n }\n break;\n }\n\n that._popupOrigin = origin;\n that._popupPosition = position;\n that._popupPaddings = paddings;\n },\n\n _attachPopupEvents: function(options, popup) {\n var that = this,\n allowHideAfter = options.allowHideAfter,\n attachDelay = !isNaN(allowHideAfter) && allowHideAfter > 0,\n closeIcon;\n\n function attachClick(target) {\n target.on(CLICK + NS, function() {\n that._hidePopup(popup);\n });\n }\n\n if (options.hideOnClick) {\n popup.bind(\"activate\", function() {\n if (attachDelay) {\n setTimeout(function() {\n attachClick(popup.element);\n }, allowHideAfter);\n } else {\n attachClick(popup.element);\n }\n });\n } else if (options.button) {\n closeIcon = popup.element.find(KICLOSE);\n if (attachDelay) {\n setTimeout(function() {\n attachClick(closeIcon);\n }, allowHideAfter);\n } else {\n attachClick(closeIcon);\n }\n }\n },\n\n _showPopup: function(wrapper, options) {\n var that = this,\n autoHideAfter = options.autoHideAfter,\n x = options.position.left,\n y = options.position.top,\n popup, openPopup;\n\n openPopup = $(\".\" + that._guid + \":not(.\" + KHIDING + \")\").last();\n\n popup = new kendo.ui.Popup(wrapper, {\n anchor: openPopup[0] ? openPopup : document.body,\n origin: that._popupOrigin,\n position: that._popupPosition,\n animation: options.animation,\n copyAnchorStyles: false,\n modal: true,\n collision: \"\",\n isRtl: that._isRtl,\n close: function() {\n that._triggerHide(this.element);\n },\n deactivate: function(e) {\n e.sender.element.off(NS);\n e.sender.element.find(KICLOSE).off(NS);\n e.sender.destroy();\n }\n });\n\n that._attachPopupEvents(options, popup);\n\n wrapper.removeClass(\"k-group k-reset\");\n\n if (openPopup[0]) {\n popup.open();\n } else {\n if (x === null) {\n x = $(window).width() - wrapper.outerWidth() - options.position.right;\n }\n\n if (y === null) {\n y = $(window).height() - wrapper.outerHeight() - options.position.bottom;\n }\n\n popup.open(x, y);\n }\n\n popup.wrapper.addClass(that._guid).css(extend({ margin: 0,zIndex: 10050 }, that._popupPaddings));\n\n if (options.position.pinned) {\n popup.wrapper.css(\"position\", \"fixed\");\n if (openPopup[0]) {\n that._togglePin(popup.wrapper, true);\n }\n } else if (!openPopup[0]) {\n that._togglePin(popup.wrapper, false);\n }\n\n if (autoHideAfter > 0) {\n setTimeout(function() {\n that._hidePopup(popup);\n }, autoHideAfter);\n }\n },\n\n _hidePopup: function(popup) {\n popup.wrapper.addClass(KHIDING);\n popup.close();\n },\n\n _togglePin: function(wrapper, pin) {\n var win = $(window),\n sign = pin ? -1 : 1;\n\n wrapper.css({\n top: parseInt(wrapper.css(TOP), 10) + sign * win.scrollTop(),\n left: parseInt(wrapper.css(LEFT), 10) + sign * win.scrollLeft()\n });\n },\n\n _attachStaticEvents: function(options, wrapper) {\n var that = this,\n allowHideAfter = options.allowHideAfter,\n attachDelay = !isNaN(allowHideAfter) && allowHideAfter > 0;\n\n function attachClick(target) {\n target.on(CLICK + NS, that._hideStatic.bind(that, wrapper));\n }\n\n if (options.hideOnClick) {\n if (attachDelay) {\n setTimeout(function() {\n attachClick(wrapper);\n }, allowHideAfter);\n } else {\n attachClick(wrapper);\n }\n } else if (options.button) {\n if (attachDelay) {\n setTimeout(function() {\n attachClick(wrapper.find(KICLOSE));\n }, allowHideAfter);\n } else {\n attachClick(wrapper.find(KICLOSE));\n }\n }\n },\n\n _showStatic: function(wrapper, options) {\n var that = this,\n autoHideAfter = options.autoHideAfter,\n animation = options.animation,\n insertionMethod = options.stacking == UP || options.stacking == LEFT ? \"prependTo\" : \"appendTo\",\n initializedNotifications;\n\n wrapper\n .removeClass(\"k-popup\")\n .addClass(that._guid)\n [insertionMethod](options.appendTo)\n .hide()\n .kendoAnimate(animation.open || false);\n\n initializedNotifications = that.getNotifications();\n initializedNotifications.each(function(idx, element) {\n that._attachStaticEvents(options, $(element));\n\n if (autoHideAfter > 0) {\n setTimeout(function() {\n that._hideStatic($(element));\n }, autoHideAfter);\n }\n });\n },\n\n _hideStatic: function(wrapper) {\n wrapper.kendoAnimate(extend(this.options.animation.close || false, { complete: function() {\n wrapper.off(NS).find(KICLOSE).off(NS);\n wrapper.remove();\n } }));\n this._triggerHide(wrapper);\n },\n\n _triggerHide: function(element) {\n this.trigger(HIDE, { element: element });\n this.angular(\"cleanup\", function() {\n return { elements: element };\n });\n },\n\n show: function(content, type, safe) {\n var that = this,\n options = that.options,\n wrapper = $(WRAPPER),\n contentId = kendo.guid(),\n args, defaultArgs;\n\n if (!type) {\n type = INFO;\n }\n\n wrapper.attr(\"aria-label\", type);\n\n if (content !== null && content !== undefined && content !== \"\") {\n\n if (kendo.isFunction(content)) {\n content = content();\n }\n\n defaultArgs = { typeIcon: type, content: \"\", closeButton: options.button };\n\n if ($.isPlainObject(content)) {\n args = extend(defaultArgs, content);\n } else {\n args = extend(defaultArgs, { content: content });\n }\n\n wrapper\n .addClass(KNOTIFICATION + \"-\" + type)\n .toggleClass(KNOTIFICATION + \"-button\", options.button)\n .toggleClass(KNOTIFICATION + \"-closable\", options.button)\n .attr({\n \"data-role\": \"alert\",\n title: options.title\n })\n .css({ width: options.width, height: options.height })\n .append(that._getCompiled(type, safe)(args));\n\n wrapper.find(\".k-notification-content\").attr(\"id\", contentId);\n wrapper.attr(\"aria-describedby\", contentId);\n\n that.angular(\"compile\", function() {\n return {\n elements: wrapper,\n data: [{ dataItem: args }]\n };\n });\n\n if ($(options.appendTo)[0]) {\n that._showStatic(wrapper, options);\n } else {\n that._showPopup(wrapper, options);\n }\n\n that.trigger(SHOW, { element: wrapper });\n }\n\n return that;\n },\n\n showText: function(content, type) {\n this.show(content, type, true);\n },\n\n info: function(content) {\n return this.show(content, INFO);\n },\n\n success: function(content) {\n return this.show(content, SUCCESS);\n },\n\n warning: function(content) {\n return this.show(content, WARNING);\n },\n\n error: function(content) {\n return this.show(content, ERROR);\n },\n\n hide: function() {\n var that = this,\n openedNotifications = that.getNotifications();\n\n if (that.options.appendTo) {\n openedNotifications.each(function(idx, element) {\n that._hideStatic($(element));\n });\n } else {\n openedNotifications.each(function(idx, element) {\n var popup = $(element).data(\"kendoPopup\");\n if (popup) {\n that._hidePopup(popup);\n }\n });\n }\n\n return that;\n },\n\n getNotifications: function() {\n var that = this,\n guidElements = $(\".\" + that._guid + \":not(.\" + KHIDING + \")\");\n\n if (that.options.appendTo) {\n return guidElements;\n } else {\n return guidElements.children(\".\" + KNOTIFICATION);\n }\n },\n\n setOptions: function(newOptions) {\n var that = this,\n options;\n\n Widget.fn.setOptions.call(that, newOptions);\n\n options = that.options;\n\n if (newOptions.templates !== undefined) {\n that._compileTemplates(options.templates);\n }\n\n if (newOptions.stacking !== undefined || newOptions.position !== undefined) {\n that._compileStacking(options.stacking, options.position.top, options.position.left);\n }\n },\n\n destroy: function() {\n Widget.fn.destroy.call(this);\n this.getNotifications().off(NS).find(KICLOSE).off(NS);\n }\n });\n\n kendo.ui.plugin(Notification);\n\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n"],"names":["define","__meta__","id","name","category","description","depends","features","$","window","kendo","jQuery","undefined","Widget","ui","extend","setTimeout","CLICK","SHOW","HIDE","KNOTIFICATION","KICLOSE","KHIDING","INFO","SUCCESS","WARNING","ERROR","TOP","LEFT","BOTTOM","RIGHT","UP","NS","WRAPPER","TEMPLATE","SAFE_TEMPLATE","replace","Notification","init","element","options","that","this","fn","call","appendTo","is","hide","_compileTemplates","templates","_guid","guid","_isRtl","support","isRtl","_compileStacking","stacking","position","top","left","notify","events","pinned","bottom","right","hideOnClick","button","allowHideAfter","autoHideAfter","width","height","title","animation","open","effects","duration","close","kendoTemplate","template","_compiled","each","key","value","type","templateId","html","_defaultCompiled","_safeCompiled","_getCompiled","safe","defaultCompiled","paddings","paddingTop","paddingRight","paddingBottom","paddingLeft","horizontalAlignment","origin","_popupOrigin","_popupPosition","_popupPaddings","_attachPopupEvents","popup","attachDelay","isNaN","closeIcon","attachClick","target","on","_hidePopup","bind","find","_showPopup","wrapper","x","y","openPopup","last","Popup","anchor","document","body","copyAnchorStyles","modal","collision","_triggerHide","deactivate","e","sender","off","destroy","removeClass","outerWidth","outerHeight","addClass","css","margin","zIndex","_togglePin","pin","win","sign","parseInt","scrollTop","scrollLeft","_attachStaticEvents","_hideStatic","_showStatic","insertionMethod","initializedNotifications","kendoAnimate","getNotifications","idx","complete","remove","trigger","angular","elements","show","content","contentId","args","defaultArgs","attr","isFunction","typeIcon","closeButton","isPlainObject","toggleClass","data-role","append","data","dataItem","showText","info","success","warning","error","openedNotifications","guidElements","children","setOptions","newOptions","plugin","amd","a1","a2","a3"],"mappings":"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"}