{"version":3,"file":"kendo.dialog.min.js","sources":["kendo.dialog.js"],"sourcesContent":["(function(f, define) {\n define('kendo.dialog',[\"kendo.core\", \"kendo.popup\", \"kendo.textbox\"], f);\n})(function() {\n\n var __meta__ = {\n id: \"dialog\",\n name: \"Dialog\",\n category: \"web\", // suite\n description: \"The dialog widget is a modal popup that brings information to the user.\",\n depends: [\"core\", \"popup\", \"textbox\"] // dependencies\n };\n\n (function($, undefined) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n TabKeyTrap = kendo.ui.Popup.TabKeyTrap,\n template = kendo.template,\n keys = kendo.keys,\n isFunction = kendo.isFunction,\n NS = \"kendoWindow\",\n KDIALOG = \".k-dialog\",\n KWINDOW = \".k-window\",\n KICONCLOSE = \".k-dialog-close\",\n KCONTENTCLASS = \"k-window-content k-dialog-content\",\n KCONTENTSELECTOR = \".k-window-content\",\n KSCROLL = \"k-scroll\",\n KTITLELESS = \"k-dialog-titleless\",\n KDIALOGTITLE = \".k-dialog-title\",\n KDIALOGTITLEBAR = \".k-dialog-titlebar\",\n KBUTTONGROUP = \".k-dialog-buttongroup\",\n // KACTIONS = \".k-actions\",\n KBUTTON = \".k-button\",\n KALERT = \"k-alert\",\n KCONFIRM = \"k-confirm\",\n KPROMPT = \"k-prompt\",\n KTEXTBOX = \".k-input-inner\",\n KOVERLAY = \".k-overlay\",\n VISIBLE = \":visible\",\n ZINDEX = \"zIndex\",\n BODY = \"body\",\n INITOPEN = \"initOpen\",\n TOUCHSTART = \"touchstart\",\n TOUCHMOVE = \"touchmove\",\n OPEN = \"open\",\n CLOSE = \"close\",\n SHOW = \"show\",\n HIDE = \"hide\",\n SIZE = {\n small: \"k-window-sm\",\n medium: \"k-window-md\",\n large: \"k-window-lg\"\n },\n HIDDEN = \"hidden\",\n OVERFLOW = \"overflow\",\n DATADOCOVERFLOWRULE = \"original-overflow-rule\",\n DATAHTMLTAPYRULE = \"tap-y\",\n messages = {\n okText: \"OK\",\n cancel: \"Cancel\",\n promptInput: \"Input\"\n },\n ceil = Math.ceil,\n templates,\n overlaySelector = \":not(link,meta,script,style)\";\n\n function defined(x) {\n return (typeof x != \"undefined\");\n }\n\n function constrain(value, low, high) {\n return Math.max(Math.min(parseInt(value, 10), high === Infinity ? high : parseInt(high, 10)), parseInt(low, 10));\n }\n\n function buttonKeyTrigger(e) {\n return e.keyCode == keys.ENTER || e.keyCode == keys.SPACEBAR;\n }\n\n var DialogBase = Widget.extend({\n init: function(element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n that._init(that.element, that.options);\n kendo.notify(that);\n },\n\n _init: function(element, options) {\n var that = this,\n wrapper;\n\n that._centerCallback = that._center.bind(that);\n\n that.appendTo = $(BODY);\n if (!defined(options.visible) || options.visible === null) {\n options.visible = element.is(VISIBLE);\n }\n\n if (that.wrapperTemplate === undefined) {\n that.wrapperTemplate = templates.wrapper;\n }\n\n that._createDialog();\n wrapper = that.wrapper = element.closest(KDIALOG);\n\n if (options._defaultFocus === undefined) {\n that._defaultFocus = element[0];\n }\n\n that._tabindex(element);\n that._dimensions();\n\n this._tabKeyTrap = new TabKeyTrap(wrapper);\n\n if (!that.options.visible) {\n that.wrapper.hide();\n } else {\n that._triggerOpen();\n }\n },\n\n setOptions: function(options) {\n var that = this;\n var sizeClass = that.options.size;\n\n options = $.extend(that.options, options);\n\n Widget.fn.setOptions.call(that, options);\n\n if (options.title !== undefined) {\n that.title(options.title);\n }\n\n if (options.content) {\n kendo.destroy(that.element.children());\n that.element.html(options.content);\n }\n\n if (options.actions) {\n that.wrapper.children(KBUTTONGROUP).remove();\n that._createActionbar(that.wrapper);\n }\n\n that.wrapper.show();\n that._closable(that.wrapper);\n\n that.wrapper.removeClass(SIZE[sizeClass]);\n that._dimensions();\n\n if (!options.visible) {\n that.wrapper.hide();\n } else {\n that._triggerOpen();\n }\n\n if (typeof options.modal !== \"undefined\") {\n var visible = that.options.visible !== false;\n that._enableDocumentScrolling();\n that._overlay(options.modal && visible);\n }\n },\n\n _dimensions: function() {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n width = options.width,\n height = options.height,\n sizeClass = options.size,\n dimensions = [\"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"];\n\n for (var i = 0; i < dimensions.length; i++) {\n var value = options[dimensions[i]];\n if (value && value != Infinity) {\n wrapper.css(dimensions[i], value);\n }\n }\n\n this._setElementMaxHeight();\n\n if (width) {\n if (width.toString().indexOf(\"%\") > 0) {\n wrapper.width(width);\n } else {\n wrapper.outerWidth(constrain(width, options.minWidth, options.maxWidth));\n }\n }\n\n if (height) {\n if (height.toString().indexOf(\"%\") > 0) {\n wrapper.height(height);\n } else {\n wrapper.outerHeight(constrain(height, options.minHeight, options.maxHeight));\n }\n\n this._setElementHeight();\n }\n\n if (sizeClass && SIZE[sizeClass]) {\n wrapper.addClass(SIZE[sizeClass]);\n }\n },\n\n _setElementMaxHeight: function() {\n var that = this,\n element = that.element,\n maxHeight = that.options.maxHeight,\n elementMaxHeight;\n\n if (maxHeight != Infinity) {\n elementMaxHeight = parseFloat(maxHeight, 10) - that._uiHeight();\n if (elementMaxHeight > 0) {\n element.css({\n maxHeight: ceil(elementMaxHeight) + \"px\"\n });\n }\n }\n\n },\n\n _setElementHeight: function() {\n var that = this,\n element = that.element,\n height = that.wrapper.outerHeight(true),\n elementHeight = parseFloat(height, 10) - that._uiHeight();\n\n if (elementHeight < 0) {\n elementHeight = 0;\n }\n\n element.css({\n height: ceil(elementHeight) + \"px\"\n });\n\n this._applyScrollClassName(element);\n\n },\n\n _applyScrollClassName: function(element) {\n var hasScroll = element.get(0).scrollHeight > element.outerHeight();\n\n if (hasScroll) {\n element.addClass(KSCROLL);\n } else {\n element.removeClass(KSCROLL);\n }\n },\n\n _uiHeight: function() {\n var that = this,\n wrapper = that.wrapper,\n actionbar = wrapper.children(KBUTTONGROUP),\n actionbarHeight = actionbar[0] && actionbar[0].offsetHeight || 0,\n titlebar = wrapper.children(KDIALOGTITLEBAR),\n titlebarHeight = titlebar[0] && titlebar[0].offsetHeight || 0;\n\n return actionbarHeight + titlebarHeight;\n },\n\n _overlay: function(visible) {\n var overlay = this.appendTo.children(KOVERLAY),\n wrapper = this.wrapper;\n\n\n if (!overlay.length) {\n overlay = $(templates.overlay);\n }\n\n overlay\n .insertBefore(wrapper[0])\n .toggle(visible)\n .css(ZINDEX, parseInt(wrapper.css(ZINDEX), 10) - 1);\n\n if (visible) {\n this._waiAriaOverlay();\n }\n else {\n this._removeWaiAriaOverlay();\n }\n\n if (this.options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n\n return overlay;\n },\n\n _waiAriaOverlay: function() {\n var node = this.wrapper;\n\n this._overlayedNodes = node.prevAll(overlaySelector).add(node.nextAll(overlaySelector))\n .each(function() {\n var jthis = $(this);\n jthis.data(\"ariaHidden\", jthis.attr(\"aria-hidden\"));\n jthis.attr(\"aria-hidden\", \"true\");\n });\n },\n\n _removeWaiAriaOverlay: function() {\n return this._overlayedNodes && this._overlayedNodes.each(function() {\n var node = $(this);\n var hiddenValue = node.data(\"ariaHidden\");\n if (hiddenValue) {\n node.attr(\"aria-hidden\", hiddenValue);\n }\n else {\n node.removeAttr(\"aria-hidden\");\n }\n });\n },\n\n _closeClick: function(e) {\n e.preventDefault();\n this.close(false);\n },\n\n _closeKeyHandler: function(e) {\n if (buttonKeyTrigger(e) || e.keyCode == keys.ESC) {\n this.close(false);\n }\n },\n\n _keydown: function(e) {\n var that = this,\n options = that.options,\n keyCode = e.keyCode;\n\n if (keyCode == keys.ESC && !that._closing && options.closable) {\n that.close(false);\n }\n },\n\n _createDialog: function() {\n var that = this,\n content = that.element,\n options = that.options,\n isRtl = kendo.support.isRtl(content),\n titlebar = $(templates.titlebar(options)),\n titleId = (content.id || kendo.guid()) + \"_title\",\n wrapper = $(that.wrapperTemplate(options));\n\n wrapper.toggleClass(\"k-rtl\", isRtl);\n\n content.addClass(KCONTENTCLASS);\n that.appendTo.append(wrapper);\n\n if (options.title !== false) {\n wrapper.append(titlebar);\n titlebar.attr(\"id\", titleId);\n wrapper.attr(\"aria-labelledby\", titleId);\n } else {\n wrapper.addClass(KTITLELESS);\n }\n\n that._closable(wrapper);\n\n wrapper.append(content);\n\n if (options.content) {\n kendo.destroy(content.children());\n content.html(options.content);\n }\n\n if (options.actions.length) {\n that._createActionbar(wrapper);\n }\n },\n\n _closable: function(wrapper) {\n var that = this;\n var options = that.options;\n var titlebar = wrapper.children(KDIALOGTITLEBAR);\n var titlebarActions = titlebar.find(\".k-window-actions\");\n var closeAction = titlebarActions.length ? titlebarActions.find(\".k-dialog-close\") : wrapper.find(\".k-dialog-close\");\n\n closeAction.remove();\n\n if (options.closable !== false) {\n if (options.title !== false && titlebarActions.length) {\n titlebarActions.append(templates.close(options));\n }\n else {\n wrapper.prepend(templates.close(options));\n }\n\n wrapper.autoApplyNS(NS);\n that.element.autoApplyNS(NS);\n\n wrapper.find(KICONCLOSE)\n .on(\"click\", that._closeClick.bind(that))\n .on(\"keydown\", that._closeKeyHandler.bind(that));\n\n that.element.on(\"keydown\", that._keydown.bind(that));\n }\n },\n\n _createActionbar: function(wrapper) {\n var isStretchedLayout = (this.options.buttonLayout === \"stretched\");\n var buttonLayout = isStretchedLayout ? \"stretch\" : \"end\";\n var actionbar = $(templates.actionbar({ buttonLayout: buttonLayout }));\n\n this._addButtons(actionbar);\n wrapper.append(actionbar);\n },\n\n _addButtons: function(actionbar) {\n var that = this,\n actionClick = that._actionClick.bind(that),\n actionKeyHandler = that._actionKeyHandler.bind(that),\n actions = that.options.actions,\n length = actions.length,\n action,\n text;\n\n for (var i = 0; i < length; i++) {\n action = actions[i];\n text = that._mergeTextWithOptions(action);\n\n $(templates.action(action))\n .autoApplyNS(NS)\n .html(text)\n .appendTo(actionbar)\n .addClass(action.cssClass)\n .data(\"action\", action.action)\n .on(\"click\", actionClick)\n .on(\"keydown\", actionKeyHandler);\n }\n },\n\n _mergeTextWithOptions: function(action) {\n var text = action.text;\n return text ? template(text)(this.options) : \"\";\n },\n\n _tabindex: function(target) {\n var that = this;\n var wrapper = that.wrapper;\n var closeBtn = wrapper.find(KICONCLOSE);\n var actionButtons = wrapper.find(KBUTTONGROUP + \" \" + KBUTTON);\n\n Widget.fn._tabindex.call(this, target);\n\n var tabIndex = target.attr(\"tabindex\");\n\n closeBtn.attr(\"tabIndex\", tabIndex);\n actionButtons.attr(\"tabIndex\", tabIndex);\n },\n\n _actionClick: function(e) {\n if (this.wrapper.is(VISIBLE)) {\n this._runActionBtn(e.currentTarget);\n }\n },\n\n _actionKeyHandler: function(e) {\n if (buttonKeyTrigger(e)) {\n e.preventDefault();\n this._runActionBtn(e.currentTarget);\n } else if (e.keyCode == keys.ESC) {\n this.close(false);\n }\n },\n\n _runActionBtn: function(target) {\n var that = this;\n if (that._closing) {\n return;\n }\n\n var action = $(target).data(\"action\"),\n preventClose = (isFunction(action) && action({ sender: that }) === false);\n\n if (!preventClose) {\n that.close(false);\n }\n },\n\n _triggerOpen: function() {\n var that = this;\n var options = that.options;\n var wrapper = that.wrapper;\n\n that.toFront();\n that._triggerInitOpen();\n that.trigger(OPEN);\n if (options.modal) {\n that._overlay(wrapper.is(VISIBLE)).css({ opacity: 0.5 });\n that._focusDialog();\n }\n },\n\n open: function() {\n var that = this,\n wrapper = that.wrapper,\n showOptions = this._animationOptions(OPEN),\n options = that.options,\n overlay, otherModalsVisible;\n\n this._triggerInitOpen();\n\n if (!that.trigger(OPEN)) {\n if (that._closing) {\n wrapper.kendoStop(true, true);\n }\n\n that._closing = false;\n\n that.toFront();\n options.visible = true;\n if (options.modal) {\n otherModalsVisible = !!that._modals().length;\n overlay = that._overlay(otherModalsVisible);\n\n overlay.kendoStop(true, true);\n\n if (showOptions.duration && kendo.effects.Fade && !otherModalsVisible) {\n var overlayFx = kendo.fx(overlay).fadeIn();\n overlayFx.duration(showOptions.duration || 0);\n overlayFx.endValue(0.5);\n overlayFx.play();\n } else {\n overlay.css(\"opacity\", 0.5);\n }\n\n overlay.show();\n }\n\n wrapper.show().kendoStop().kendoAnimate({\n effects: showOptions.effects,\n duration: showOptions.duration,\n complete: that._openAnimationEnd.bind(that)\n });\n wrapper.show();\n\n }\n\n return that;\n },\n\n _animationOptions: function(id) {\n var animation = this.options.animation;\n var basicAnimation = {\n open: { effects: {} },\n close: { hide: true, effects: {} }\n };\n\n return animation && animation[id] || basicAnimation[id];\n },\n\n _openAnimationEnd: function() {\n if (this.options.modal) {\n this._focusDialog();\n }\n this.trigger(SHOW);\n },\n\n _triggerInitOpen: function() {\n if (!defined(this._initOpenTriggered)) {\n this._initOpenTriggered = true;\n this.trigger(INITOPEN);\n }\n },\n\n toFront: function() {\n var that = this,\n wrapper = that.wrapper,\n zIndex = +wrapper.css(ZINDEX),\n originalZIndex = zIndex;\n\n that.center();\n\n $(KWINDOW).each(function(i, element) {\n var windowObject = $(element),\n zIndexNew = windowObject.css(ZINDEX);\n\n if (!isNaN(zIndexNew)) {\n zIndex = Math.max(+zIndexNew, zIndex);\n }\n });\n\n if (!wrapper[0].style.zIndex || originalZIndex < zIndex) {\n wrapper.css(ZINDEX, zIndex + 2);\n }\n\n that.element.find(\"> .k-overlay\").remove();\n wrapper = null;\n\n return that;\n },\n\n close: function(systemTriggered) {\n if (!arguments.length) {\n systemTriggered = true;\n }\n\n this._close(systemTriggered);\n this._stopCenterOnResize();\n return this;\n },\n\n _close: function(systemTriggered) {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n showOptions = this._animationOptions(\"open\"),\n hideOptions = this._animationOptions(\"close\");\n\n if (wrapper.is(VISIBLE) && !that.trigger(CLOSE, { userTriggered: !systemTriggered })) {\n if (that._closing) {\n return;\n }\n that._closing = true;\n\n options.visible = false;\n this._removeOverlay();\n\n wrapper.kendoStop().kendoAnimate({\n effects: hideOptions.effects || showOptions.effects,\n reverse: hideOptions.reverse === true,\n duration: hideOptions.duration,\n complete: this._closeAnimationEnd.bind(this)\n });\n }\n\n return that;\n },\n\n center: function() {\n this._center();\n this._centerOnResize();\n },\n\n _center: function() {\n var that = this,\n wrapper = that.wrapper,\n documentWindow = $(window),\n scrollTop = 0,\n scrollLeft = 0,\n newLeft = scrollLeft + Math.max(0, (documentWindow.width() - wrapper.width()) / 2),\n newTop = scrollTop + Math.max(0, (documentWindow.height() - wrapper.height() - parseInt(wrapper.css(\"paddingTop\"), 10)) / 2);\n\n wrapper.css({\n left: newLeft,\n top: newTop\n });\n\n return that;\n },\n\n _centerOnResize: function() {\n if (this._trackResize) {\n return;\n }\n\n kendo.onResize(this._centerCallback);\n this._trackResize = true;\n },\n\n _stopCenterOnResize: function() {\n kendo.unbindResize(this._centerCallback);\n this._trackResize = false;\n },\n\n _removeOverlay: function() {\n var modals = this._modals();\n var options = this.options;\n var hideOverlay = options.modal && !modals.length;\n\n if (hideOverlay) {\n this._overlay(false).remove();\n\n if (options.modal.preventScroll) {\n this._enableDocumentScrolling();\n }\n } else if (modals.length) {\n this._object(modals.last())._overlay(true);\n\n if (options.modal.preventScroll) {\n this._stopDocumentScrolling();\n }\n }\n },\n\n _stopDocumentScrolling: function() {\n var that = this;\n\n var $body = $(\"body\");\n that._storeOverflowRule($body);\n $body.css(OVERFLOW, HIDDEN);\n\n var $html = $(\"html\");\n var html = $html[0];\n that._storeOverflowRule($html);\n $html.css(OVERFLOW, HIDDEN);\n\n // prevent touch due to bug in ios\n if (kendo.support.mobileOS.ios) {\n html.addEventListener(TOUCHSTART, that._touchStart, { passive: false });\n html.addEventListener(TOUCHMOVE, that._touchMove, { passive: false });\n }\n },\n\n _touchStart: function(e) {\n $(this).data(DATAHTMLTAPYRULE, e.changedTouches[0].pageY);\n },\n\n _touchMove: function(e) {\n var target = e.target;\n var $target = $(e.target);\n var upScroll = e.changedTouches[0].pageY - $(this).data(DATAHTMLTAPYRULE) > 0;\n var preventYScroll = $target.is(KCONTENTSELECTOR) &&\n (upScroll && $target.scrollTop() === 0) ||\n (!upScroll && $target.scrollTop() === target.scrollHeight - target.clientHeight);\n if (!$target.is(KCONTENTSELECTOR) || preventYScroll) {\n e.preventDefault();\n }\n },\n\n _enableDocumentScrolling: function() {\n var that = this;\n var $body = $(document.body);\n var $html = $(\"html\");\n var html = $html[0];\n\n that._restoreOverflowRule($body);\n that._restoreOverflowRule($html);\n\n if (kendo.support.mobileOS.ios) {\n $html.removeData(DATAHTMLTAPYRULE);\n html.removeEventListener(TOUCHSTART, that._touchStart, { passive: false });\n html.removeEventListener(TOUCHMOVE, that._touchMove, { passive: false });\n }\n },\n\n _storeOverflowRule: function($element) {\n if (this._isOverflowStored($element)) {\n return;\n }\n\n var overflowRule = $element.get(0).style.overflow;\n\n if (typeof overflowRule === \"string\") {\n $element.data(DATADOCOVERFLOWRULE, overflowRule);\n }\n },\n\n _isOverflowStored: function($element) {\n return typeof $element.data(DATADOCOVERFLOWRULE) === \"string\";\n },\n\n _restoreOverflowRule: function($element) {\n var overflowRule = $element.data(DATADOCOVERFLOWRULE);\n\n if (overflowRule !== null && overflowRule !== undefined) {\n $element.css(OVERFLOW, overflowRule);\n $element.removeData(DATADOCOVERFLOWRULE);\n } else {\n $element.css(OVERFLOW, \"\");\n }\n },\n\n _closeAnimationEnd: function() {\n var that = this,\n previousFocus = that._previousFocus;\n\n that._closing = false;\n that.wrapper.hide().css(\"opacity\", \"\");\n that.trigger(HIDE);\n\n if (that.options.modal) {\n var lastModal = that._object(that._modals().last());\n if (lastModal) {\n lastModal.toFront();\n } else if (previousFocus) {\n that._previousFocus = null;\n\n setTimeout(function() {\n previousFocus.focus();\n });\n }\n }\n },\n\n _modals: function() {\n var that = this;\n\n var zStack = $(KWINDOW).filter(function() {\n var modal = that._object($(this));\n\n return modal &&\n modal.options &&\n modal.options.modal &&\n modal.options.visible &&\n modal.options.appendTo === that.options.appendTo &&\n !modal.containment &&\n $(modal.element).is(VISIBLE);\n }).sort(function(a, b) {\n return +$(a).css(\"zIndex\") - +$(b).css(\"zIndex\");\n });\n\n that = null;\n\n return zStack;\n },\n\n _object: function(element) {\n var content = element.children(KCONTENTSELECTOR);\n var widget = kendo.widgetInstance(content);\n\n if (widget) {\n return widget;\n }\n\n return undefined;\n },\n\n destroy: function() {\n var that = this;\n that._destroy();\n\n Widget.fn.destroy.call(that);\n\n kendo.destroy(that.wrapper);\n\n that.wrapper.remove();\n that.wrapper = that.element = $();\n },\n\n _destroy: function() {\n var that = this;\n var ns = \".\" + NS;\n\n that.wrapper.off(ns);\n that.element.off(ns);\n that.wrapper.find(KICONCLOSE + \",\" + KBUTTONGROUP + \" > \" + KBUTTON).off(ns);\n that._stopCenterOnResize();\n },\n\n title: function(html) {\n var that = this,\n wrapper = that.wrapper,\n options = that.options,\n titlebar = wrapper.children(KDIALOGTITLEBAR),\n title = titlebar.children(KDIALOGTITLE),\n encodedHtml = kendo.htmlEncode(html);\n\n if (!arguments.length) {\n return title.html();\n }\n\n if (html === false) {\n titlebar.remove();\n wrapper.addClass(KTITLELESS);\n } else {\n if (!titlebar.length) {\n titlebar = $(templates.titlebar(options)).prependTo(wrapper);\n title = titlebar.children(KDIALOGTITLE);\n wrapper.removeClass(KTITLELESS);\n }\n title.html(encodedHtml);\n }\n\n that.options.title = encodedHtml;\n\n return that;\n },\n\n content: function(html, data) {\n var that = this,\n content = that.wrapper.children(KCONTENTSELECTOR);\n\n if (!defined(html)) {\n return content.html();\n }\n\n this.angular(\"cleanup\", function() {\n return { elements: content.children() };\n });\n\n kendo.destroy(content.children());\n content.html(html);\n\n this.angular(\"compile\", function() {\n var a = [];\n for (var i = content.length; --i >= 0;) {\n a.push({ dataItem: data });\n }\n return {\n elements: content.children(),\n data: a\n };\n });\n\n that.options.content = html;\n\n return that;\n },\n\n _focusDialog: function() {\n var firstModal = this._object(this._modals().first());\n\n this._previousFocus = firstModal && firstModal._previousFocus ? firstModal._previousFocus : document.activeElement;\n\n if (this._defaultFocus) {\n this._focus(this._defaultFocus);\n }\n this._tabKeyTrap.trap();\n },\n\n _focus: function(node) {\n if (node) {\n node.focus();\n }\n },\n\n events: [\n INITOPEN,\n OPEN,\n CLOSE,\n SHOW,\n HIDE\n ],\n\n options: {\n title: \"\",\n buttonLayout: \"stretched\",\n actions: [],\n modal: true,\n size: \"auto\",\n width: null,\n height: null,\n minWidth: 0,\n minHeight: 0,\n maxWidth: Infinity,\n maxHeight: Infinity,\n content: null,\n visible: null,\n appendTo: BODY,\n closable: true\n }\n });\n\n var Dialog = DialogBase.extend({\n options: {\n name: \"Dialog\",\n messages: {\n close: \"Close\"\n }\n }\n });\n\n kendo.ui.plugin(Dialog);\n\n var PopupBox = DialogBase.extend({\n _init: function(element, options) {\n var that = this;\n\n that.wrapperTemplate = templates.alertWrapper;\n options._defaultFocus = null;\n that._ensureContentId(element);\n\n DialogBase.fn._init.call(that, element, options);\n\n that.bind(HIDE, that.destroy.bind(that));\n\n that._ariaDescribedBy();\n that._initFocus();\n },\n\n _ensureContentId: function(element) {\n var node = $(element);\n if (!node.attr(\"id\")) {\n node.attr(\"id\", kendo.guid() + \"_k-popup\");\n }\n },\n\n _ariaDescribedBy: function() {\n this.wrapper.attr(\"aria-describedby\", this.element.attr(\"id\"));\n },\n\n _initFocus: function() {\n var o = this.options;\n\n this._defaultFocus = this._chooseEntryFocus();\n if (this._defaultFocus && o.visible && o.modal) {\n this._focusDialog();\n }\n },\n\n _chooseEntryFocus: function() {\n return this.wrapper.find(KBUTTONGROUP + \" > \" + KBUTTON)[0];\n },\n\n options: {\n title: window.location.host,\n closable: false,\n messages: messages\n }\n });\n\n var Alert = PopupBox.extend({\n _init: function(element, options) {\n var that = this;\n PopupBox.fn._init.call(that, element, options);\n that.wrapper.addClass(KALERT);\n },\n\n options: {\n name: \"Alert\",\n modal: true,\n actions: [{\n text: \"#: messages.okText #\"\n }]\n }\n });\n\n kendo.ui.plugin(Alert);\n\n var kendoAlert = function(text) {\n return $(templates.alert).kendoAlert({ content: text }).data(\"kendoAlert\").open();\n };\n\n var Confirm = PopupBox.extend({\n _init: function(element, options) {\n var that = this;\n PopupBox.fn._init.call(that, element, options);\n that.wrapper.addClass(KCONFIRM);\n that.result = $.Deferred();\n },\n\n options: {\n name: \"Confirm\",\n modal: true,\n actions: [{\n text: \"#: messages.okText #\",\n primary: true,\n action: function(e) {\n e.sender.result.resolve();\n }\n }, {\n text: \"#: messages.cancel #\",\n action: function(e) {\n e.sender.result.reject();\n }\n }]\n }\n });\n\n kendo.ui.plugin(Confirm);\n\n var kendoConfirm = function(text) {\n var confirmDialog = $(templates.confirm).kendoConfirm({ content: text }).data(\"kendoConfirm\").open();\n return confirmDialog.result;\n };\n\n var Prompt = PopupBox.extend({\n _init: function(element, options) {\n var that = this;\n PopupBox.fn._init.call(that, element, options);\n that.wrapper.addClass(KPROMPT);\n that._createPrompt();\n that.result = $.Deferred();\n },\n\n _createPrompt: function() {\n var value = this.options.value,\n promptContainer = $(templates.promptInputContainer(this.options)).insertAfter(this.element);\n\n this.input = new kendo.ui.TextBox(promptContainer.find(\"input\"));\n\n if (value) {\n this.input.value(value);\n }\n\n this._defaultFocus = this._chooseEntryFocus();\n this._focusDialog();\n },\n\n _chooseEntryFocus: function() {\n return this.wrapper.find(KTEXTBOX)[0];\n },\n\n options: {\n name: \"Prompt\",\n modal: true,\n value: \"\",\n actions: [{\n text: \"#: messages.okText #\",\n primary: true,\n action: function(e) {\n var sender = e.sender,\n value = sender.input.value();\n\n sender.result.resolve(value);\n }\n }, {\n text: \"#: messages.cancel #\",\n action: function(e) {\n var sender = e.sender,\n value = sender.input.value();\n\n e.sender.result.reject(value);\n }\n }]\n }\n });\n\n kendo.ui.plugin(Prompt);\n\n var kendoPrompt = function(text, value) {\n var promptDialog = $(templates.prompt).kendoPrompt({\n content: text,\n value: value\n }).data(\"kendoPrompt\").open();\n\n return promptDialog.result;\n };\n\n templates = {\n wrapper: template(\"
\"),\n action: template(\"\"),\n titlebar: template(\n \" \"\n ),\n close: template(\"\" +\n \"\"),\n actionbar: template(\"\"),\n overlay: \"\",\n alertWrapper: template(\"\"),\n alert: \"\",\n confirm: \"\",\n prompt: \"\",\n promptInputContainer: template(\"\")\n };\n\n kendo.alert = kendoAlert;\n kendo.confirm = kendoConfirm;\n kendo.prompt = kendoPrompt;\n\n })(window.kendo.jQuery);\n\n return 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","$","window","kendo","jQuery","undefined","Widget","ui","TabKeyTrap","Popup","template","keys","isFunction","NS","KDIALOG","KWINDOW","KICONCLOSE","KCONTENTCLASS","KCONTENTSELECTOR","KSCROLL","KTITLELESS","KDIALOGTITLE","KDIALOGTITLEBAR","KBUTTONGROUP","KBUTTON","KALERT","KCONFIRM","KPROMPT","KTEXTBOX","KOVERLAY","VISIBLE","ZINDEX","BODY","INITOPEN","TOUCHSTART","TOUCHMOVE","OPEN","CLOSE","SHOW","HIDE","SIZE","small","medium","large","HIDDEN","OVERFLOW","DATADOCOVERFLOWRULE","DATAHTMLTAPYRULE","messages","okText","cancel","promptInput","ceil","Math","templates","overlaySelector","defined","x","constrain","value","low","high","max","min","parseInt","Infinity","buttonKeyTrigger","e","keyCode","ENTER","SPACEBAR","DialogBase","extend","init","element","options","that","this","fn","call","_init","notify","wrapper","_centerCallback","_center","bind","appendTo","visible","is","wrapperTemplate","_createDialog","closest","_defaultFocus","_tabindex","_dimensions","_tabKeyTrap","hide","_triggerOpen","setOptions","sizeClass","size","title","content","destroy","children","html","actions","remove","_createActionbar","show","_closable","removeClass","modal","_enableDocumentScrolling","_overlay","width","height","dimensions","i","length","css","_setElementMaxHeight","toString","indexOf","outerWidth","minWidth","maxWidth","outerHeight","minHeight","maxHeight","_setElementHeight","addClass","elementMaxHeight","parseFloat","_uiHeight","elementHeight","_applyScrollClassName","hasScroll","get","scrollHeight","actionbar","actionbarHeight","offsetHeight","titlebar","titlebarHeight","overlay","insertBefore","toggle","_waiAriaOverlay","_removeWaiAriaOverlay","preventScroll","_stopDocumentScrolling","node","_overlayedNodes","prevAll","add","nextAll","each","jthis","data","attr","hiddenValue","removeAttr","_closeClick","preventDefault","close","_closeKeyHandler","ESC","_keydown","_closing","closable","isRtl","support","titleId","guid","toggleClass","append","titlebarActions","find","closeAction","prepend","autoApplyNS","on","isStretchedLayout","buttonLayout","_addButtons","actionClick","_actionClick","actionKeyHandler","_actionKeyHandler","action","text","_mergeTextWithOptions","cssClass","target","closeBtn","actionButtons","tabIndex","_runActionBtn","currentTarget","preventClose","sender","toFront","_triggerInitOpen","trigger","opacity","_focusDialog","open","showOptions","_animationOptions","otherModalsVisible","kendoStop","_modals","duration","effects","Fade","overlayFx","fx","fadeIn","endValue","play","kendoAnimate","complete","_openAnimationEnd","animation","basicAnimation","_initOpenTriggered","zIndex","originalZIndex","center","windowObject","zIndexNew","isNaN","style","systemTriggered","arguments","_close","_stopCenterOnResize","hideOptions","userTriggered","_removeOverlay","reverse","_closeAnimationEnd","_centerOnResize","documentWindow","scrollTop","scrollLeft","newLeft","newTop","left","top","_trackResize","onResize","unbindResize","modals","hideOverlay","_object","last","$body","_storeOverflowRule","$html","mobileOS","ios","addEventListener","_touchStart","passive","_touchMove","changedTouches","pageY","$target","upScroll","preventYScroll","clientHeight","document","body","_restoreOverflowRule","removeData","removeEventListener","$element","_isOverflowStored","overflowRule","overflow","previousFocus","_previousFocus","lastModal","setTimeout","focus","zStack","filter","containment","sort","a","b","widget","widgetInstance","_destroy","ns","off","encodedHtml","htmlEncode","prependTo","angular","elements","push","dataItem","firstModal","first","activeElement","_focus","trap","events","Dialog","PopupBox","plugin","alertWrapper","_ensureContentId","_ariaDescribedBy","_initFocus","o","_chooseEntryFocus","location","host","Alert","kendoAlert","alert","Confirm","result","Deferred","primary","resolve","reject","kendoConfirm","confirmDialog","confirm","Prompt","_createPrompt","promptContainer","promptInputContainer","insertAfter","input","TextBox","kendoPrompt","promptDialog","prompt","amd","a1","a2","a3"],"mappings":"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"}