{"version":3,"file":"kendo.splitbutton.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendosplitbutton","js","this","$","undefined$1","kendo","window","Widget","ui","NS","extend","html","outerWidth","_outerWidth","keys","ID","ARIA_DISABLED","ARIA_LABEL","ARIA_EXPANDED","DISABLED","DISABLEDSTATE","FOCUSSTATE","CLICK","OPEN","CLOSE","FOCUS","cssClasses","SplitButton","init","element","options","that","enabled","prop","fn","call","_wrapper","_renderButtons","_renderMenu","_enable","_aria","_attachEvents","notify","_applyCssClasses","name","items","rounded","size","fillMode","themeColor","icon","popup","arrowIcon","messages","labelSuffix","events","wrapperId","attr","guid","wrapper","wrap","parent","arrowButton","appendTo","addClass","_getAppearanceClasses","_clearCssClasses","removeClass","widgetName","__proto__","cssProperties","getValidClass","widget","propName","value","_mainButton","_arrowButton","type","click","renderButton","text","imageUrl","iconClass","menu","list","length","kendoButtonMenu","mainButton","toggleTarget","menuOpen","menuOpenHandler","bind","menuClose","menuCloseHandler","menuClick","_click","data","ev","computedWidth","trigger","target","preventDefault","sender","adjustPopupWidth","on","_keydown","_focus","_blur","closest","id","originalEvent","close","is","DOT","keyCode","ENTER","SPACEBAR","focus","enable","soft","add","toggleClass","removeAttr","menuItem","hide","show","open","_popup","setOptions","destroy","off","registerPrefix","registerValues","values","roundedValues","concat","plugin","jQuery"],"sources":["kendo.splitbutton.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.html.button.js'), require('kendo.button.menu.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.html.button', 'kendo.button.menu'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendosplitbutton = global.kendosplitbutton || {}, global.kendosplitbutton.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"splitbutton\",\n name: \"SplitButton\",\n category: \"web\",\n description: \"The SplitButton allows the user to execute a default action which is bound to a Button or to choose a predefined action from a drop-down list.\",\n depends: [\"button.menu\", \"html.button\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n NS = \".kendoSplitButton\",\n ui = kendo.ui,\n extend = $.extend,\n html = kendo.html,\n outerWidth = kendo._outerWidth,\n keys = kendo.keys,\n\n DOT = \".\",\n ID = \"id\",\n\n ARIA_HASPOPUP = \"aria-haspopup\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_CONTROLS = \"aria-controls\",\n ARIA_LABEL = \"aria-label\",\n ARIA_EXPANDED = \"aria-expanded\",\n\n DISABLED = \"disabled\",\n DISABLEDSTATE = \"k-disabled\",\n FOCUSSTATE = \"k-focus\",\n\n CLICK = \"click\",\n KEYDOWN = \"keydown\",\n OPEN = \"open\",\n CLOSE = \"close\",\n\n FOCUS = \"focus\",\n BLUR = \"blur\";\n\n var cssClasses = {\n widget: \"k-split-button k-button-group\"\n };\n\n var SplitButton = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n options.enabled = options.enabled !== false && !$(element).prop(DISABLED);\n Widget.fn.init.call(that, element, options);\n\n that._wrapper();\n that._renderButtons();\n that._renderMenu();\n\n that._enable(that.options.enabled);\n\n that._aria();\n\n that._attachEvents();\n\n kendo.notify(that);\n\n that._applyCssClasses();\n },\n\n options: {\n name: \"SplitButton\",\n enabled: true,\n items: [],\n rounded: \"medium\",\n size: \"medium\",\n fillMode: \"solid\",\n themeColor: \"base\",\n icon: null,\n popup: null,\n arrowIcon: \"caret-alt-down\",\n messages: {\n labelSuffix: \"splitbutton\"\n }\n },\n\n events: [\n CLICK,\n OPEN,\n CLOSE\n ],\n\n _wrapper: function() {\n var that = this,\n id = that.element.attr(ID) || kendo.guid(),\n wrapperId = id + \"_wrapper\";\n\n that.wrapper = that.element\n .wrap(\"
\")\n .parent(\".k-split-button\");\n\n that.arrowButton = $(\"\").appendTo(that.wrapper);\n },\n\n _applyCssClasses: function() {\n var that = this;\n\n that.wrapper.addClass(that._getAppearanceClasses());\n },\n\n _clearCssClasses: function() {\n var that = this;\n\n that.wrapper.removeClass(that._getAppearanceClasses());\n },\n\n _getAppearanceClasses: function() {\n var that = this,\n widgetName = that.__proto__.options.name,\n roundedClass = kendo.cssProperties.getValidClass({\n widget: widgetName,\n propName: \"rounded\",\n value: that.options.rounded\n });\n\n return roundedClass;\n },\n\n _renderButtons: function() {\n var that = this;\n\n that._mainButton();\n that._arrowButton();\n },\n\n _mainButton: function() {\n var that = this,\n options = extend({}, that.options, {\n type: that.element.attr(\"type\") || \"button\"\n });\n\n delete options.click;\n\n html.renderButton(that.element, options);\n },\n\n _arrowButton: function() {\n var that = this,\n options = extend({}, that.options, {\n type: \"button\",\n icon: that.options.arrowIcon,\n });\n\n delete options.text;\n delete options.imageUrl;\n delete options.click;\n delete options.iconClass;\n\n html.renderButton(that.arrowButton, options);\n },\n\n _aria: function() {\n var that = this,\n element = that.element,\n menu = that.menu;\n\n element.attr(ARIA_HASPOPUP, menu ? \"menu\" : null);\n element.attr(ARIA_EXPANDED, menu ? false : null);\n element.attr(ARIA_CONTROLS, menu ? menu.list.attr(ID) : null);\n\n if (!element.attr(ARIA_LABEL)) {\n element.attr(ARIA_LABEL, element.text() + \" \" + that.options.messages.labelSuffix);\n }\n },\n\n _renderMenu: function() {\n var that = this,\n options = extend({}, that.options),\n menu = $(\"\");\n\n delete options.click;\n delete options.name;\n\n if (!options.items.length) {\n return;\n }\n\n that.menu = menu.appendTo(that.wrapper).kendoButtonMenu(extend({\n mainButton: that.element,\n toggleTarget: that.arrowButton,\n menuOpen: that.menuOpenHandler.bind(that),\n menuClose: that.menuCloseHandler.bind(that),\n menuClick: that._click.bind(that)\n }, options)).data(\"kendoButtonMenu\");\n },\n\n menuOpenHandler: function(ev) {\n var that = this,\n computedWidth = outerWidth(that.wrapper);\n\n var isDefaultPrevented = that.trigger(OPEN, { target: that.element });\n if (isDefaultPrevented) {\n ev.preventDefault();\n return;\n }\n\n ev.sender.adjustPopupWidth(computedWidth);\n that.element.attr(ARIA_EXPANDED, true);\n },\n\n menuCloseHandler: function(ev) {\n var that = this,\n isDefaultPrevented = that.trigger(CLOSE, { target: that.element });\n\n if (isDefaultPrevented) {\n ev.preventDefault();\n return;\n }\n\n that.element.attr(ARIA_EXPANDED, false);\n that.element.trigger(FOCUS);\n },\n\n _attachEvents: function() {\n var that = this;\n\n that.element.on(CLICK + NS, that._click.bind(that));\n that.element.on(KEYDOWN + NS, that._keydown.bind(that));\n that.element.on(FOCUS + NS, that._focus.bind(that));\n that.element.on(BLUR + NS, that._blur.bind(that));\n },\n\n _focus: function() {\n this.wrapper.addClass(FOCUSSTATE);\n },\n\n _blur: function() {\n this.wrapper.removeClass(FOCUSSTATE);\n },\n\n _click: function(ev) {\n var that = this,\n target = $(ev.target).closest(\".k-button\"),\n id = target.attr(ID),\n originalEvent = ev;\n\n if (ev.type === \"menu-click\") {\n id = ev.id;\n target = ev.target;\n originalEvent = ev.originalEvent;\n }\n\n that.menu.close();\n\n that.trigger(CLICK, { id: id, target: target, originalEvent: originalEvent });\n },\n\n _keydown: function(ev) {\n var that = this;\n\n if (that.element.is(DOT + DISABLEDSTATE) && (ev.keyCode === keys.ENTER || ev.keyCode === keys.SPACEBAR)) {\n ev.preventDefault();\n }\n },\n\n focus: function() {\n var that = this;\n that.element.trigger(FOCUS);\n },\n\n _enable: function(enable, soft) {\n this.element.add(this.arrowButton)\n .toggleClass(DISABLEDSTATE, !enable);\n\n if (enable) {\n this.element.removeAttr(ARIA_DISABLED);\n } else {\n this.element.attr(ARIA_DISABLED, !enable);\n }\n\n if (!soft) {\n this.element.attr(DISABLED, !enable);\n }\n\n this.arrowButton.attr(DISABLED, !enable);\n },\n\n enable: function(enable, menuItem, soft) {\n var that = this;\n\n if (enable === undefined$1) {\n enable = true;\n }\n\n if (menuItem && menuItem.length) {\n that.menu.enable(enable, menuItem);\n return;\n }\n\n that.options.enabled = enable;\n\n that._enable(enable, soft);\n that.menu.enable(enable);\n },\n\n hide: function(menuItem) {\n var that = this;\n\n if (menuItem && menuItem.length) {\n that.menu.hide(menuItem);\n }\n },\n\n show: function(menuItem) {\n var that = this;\n\n if (menuItem && menuItem.length) {\n that.menu.show(menuItem);\n }\n },\n\n open: function() {\n this.menu._popup.open();\n },\n\n close: function() {\n this.menu._popup.close();\n },\n\n items: function() {\n return this.menu.items();\n },\n\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n if (options.popup || options.items || options.size) {\n that.menu.destroy();\n that._renderMenu();\n }\n\n that._renderButtons();\n\n that._aria();\n },\n\n destroy: function() {\n var that = this;\n\n that.menu.destroy();\n\n that.element.off(NS);\n\n Widget.fn.destroy.call(that);\n }\n });\n\n kendo.cssProperties.registerPrefix(\"SplitButton\", \"k-splitbutton-\");\n\n kendo.cssProperties.registerValues(\"SplitButton\", [{\n prop: \"rounded\",\n values: kendo.cssProperties.roundedValues.concat([[\"full\", \"full\"]])\n }]);\n\n ui.plugin(SplitButton);\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}