{"version":3,"file":"kendo.bottomnavigation.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendobottomnavigation","js","this","$","undefined$1","kendo","window","ui","Widget","extend","template","keys","isPlainObject","isEmptyObject","NS","DOT","SELECT","isString","value","bottomNavigationStyles","widget","item","navIcon","icon","text","itemFlow","vertical","horizontal","selected","disabled","border","shadow","focus","templates","anchor","ref","url","htmlEncode","size","BottomNavigation","init","element","options","that","fn","call","fillMode","fill","_updateCssClasses","_items","_bindEvents","name","positionMode","items","themeColor","events","destroy","off","_tabindex","target","TABINDEX","cachedTabIndex","attr","ns","tabindex","removeAttr","isNaN","styles","removeClass","index","className","indexOf","addClass","getValidCssClass","toggleClass","_itemFlow","_applyCssClasses","orientation","orientationStyles","_toggleClassGroup","group","key","i","length","_renderItem","append","elm","itemTemplate","isLink","enabled","cssClass","attributes","data","iconClass","encoded","clickProxy","_click","bind","keydownProxy","_keydown","on","ev","closest","is","preventDefault","_triggerSelect","trigger","originalEvent","select","keyCode","ENTER","SPACEBAR","_isItem","find","children","state","selectedItem","filter","enable","eq","itemById","id","add","before","method","targetElement","remove","showText","toggle","setOptions","empty","plugin","cssProperties","registerPrefix","jQuery"],"sources":["kendo.bottomnavigation.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendobottomnavigation = global.kendobottomnavigation || {}, global.kendobottomnavigation.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"bottomnavigation\",\n name: \"BottomNavigation\",\n category: \"web\",\n description: \"The BottomNavigation widget is a navigation element that allows movement between primary destinations in an app.\",\n depends: [ \"core\", \"icons\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Widget = ui.Widget,\n extend = $.extend,\n template = kendo.template,\n keys = kendo.keys,\n isPlainObject = $.isPlainObject,\n isEmptyObject = $.isEmptyObject,\n\n NS = \".kendoBottomNavigation\",\n PREFIX = \"k-bottom-nav-\",\n K_POS = \"k-pos-\",\n DOT = \".\",\n\n SELECT = \"select\";\n\n var isString = function(value) {\n return typeof value === \"string\";\n };\n\n var bottomNavigationStyles = {\n widget: \"k-bottom-nav\",\n item: \"k-bottom-nav-item\",\n navIcon: \"k-bottom-nav-item-icon\",\n icon: \"k-icon\",\n text: \"k-bottom-nav-item-text\",\n itemFlow: {\n vertical: \"k-bottom-nav-item-flow-vertical\",\n horizontal: \"k-bottom-nav-item-flow-horizontal\"\n },\n selected: \"k-selected\",\n disabled: \"k-disabled\",\n border: \"k-bottom-nav-border\",\n shadow: \"k-bottom-nav-shadow\",\n focus: \"k-focus\"\n };\n\n var templates = {\n item: template(function () { return (\"\"); }),\n anchor: template(function (ref) {\n var url = ref.url;\n\n return (\"\");\n }),\n text: template(function (ref) {\n var text = ref.text;\n\n return (\"\" + text + \"\");\n }),\n icon: template(function (ref) {\n var icon = ref.icon;\n\n return kendo.ui.icon($((\"\")), { icon: icon, size: \"xlarge\" });\n })\n };\n\n var BottomNavigation = Widget.extend({\n init: function(element, options) {\n var that = this;\n options = options || {};\n Widget.fn.init.call(that, element, options);\n\n that.element = $(element);\n\n // Backwards compatibility, so that we keep 'fill' as a legacy option\n if (this.options.fillMode === null) {\n this.options.fillMode = this.options.fill;\n }\n\n that._updateCssClasses();\n that._items();\n that._bindEvents();\n },\n\n options: {\n name: \"BottomNavigation\",\n positionMode: \"fixed\",\n items: [],\n themeColor: \"primary\",\n itemFlow: \"vertical\",\n // Backwards compatibility, so that we keep 'fill' as a legacy option\n fillMode: null,\n fill: \"flat\",\n shadow: false,\n border: true,\n template: null\n },\n\n events: [\n SELECT\n ],\n\n destroy: function() {\n var that = this;\n\n that.element.off(NS);\n\n Widget.fn.destroy.call(this);\n },\n\n _tabindex: function(target) {\n var that = this,\n element = that.element,\n TABINDEX = \"tabindex\",\n cachedTabIndex = element.attr(\"data-\" + kendo.ns + TABINDEX),\n tabindex = target.attr(TABINDEX) || element.attr(TABINDEX) || cachedTabIndex;\n\n if (!cachedTabIndex) {\n element.removeAttr(TABINDEX);\n element.attr(\"data-\" + kendo.ns + TABINDEX, tabindex);\n }\n\n target.attr(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n },\n\n _updateCssClasses: function() {\n var that = this,\n options = that.options,\n styles = bottomNavigationStyles;\n\n // Remove all class names\n that.element.removeClass(function(index, className) {\n if (className.indexOf('k-') === 0) {\n that.element.removeClass(className);\n }\n });\n\n that.element.addClass(styles.widget);\n that.element.addClass(kendo.getValidCssClass(K_POS, \"positionMode\", options.positionMode));\n that.element.toggleClass(styles.border, options.border);\n that.element.toggleClass(styles.shadow, options.shadow);\n that._itemFlow(options.itemFlow);\n\n that._applyCssClasses();\n },\n\n _itemFlow: function(orientation) {\n var that = this,\n orientationStyles = bottomNavigationStyles.itemFlow;\n\n that._toggleClassGroup(that.element, orientation, orientationStyles);\n },\n\n _toggleClassGroup: function(element, value, group) {\n if (isString(group[value])) {\n for (var key in group) {\n element.removeClass(group[key]);\n }\n\n element.addClass(group[value]);\n }\n },\n\n _items: function() {\n var that = this,\n options = that.options,\n items = options.items,\n item;\n\n for (var i = 0; i < items.length; i++) {\n item = that._renderItem(items[i]);\n that.element.append(item);\n }\n },\n\n _renderItem: function(item) {\n var that = this,\n itemTemplate = item.template || that.options.template,\n isLink = item.url && isString(item.url),\n elm, icon;\n\n elm = $(isLink ? template(templates.anchor)(item) : template(templates.item)(item));\n\n elm.toggleClass(bottomNavigationStyles.selected, item.selected === true)\n .toggleClass(bottomNavigationStyles.disabled, item.enabled === false)\n .addClass(item.cssClass)\n .attr(extend({}, item.attributes, {\n \"aria-disabled\": item.enabled === false\n }))\n .data(item.data);\n\n that._tabindex(elm);\n\n if (!elm.attr(\"role\") && !isLink) {\n elm.attr(\"role\", \"link\");\n }\n\n if (itemTemplate) {\n elm.append(template(itemTemplate)(item));\n return elm;\n }\n\n item = extend({}, {\n icon: \"\"\n }, item);\n\n icon = $(templates.icon(item)).addClass(item.iconClass);\n\n elm.append(icon);\n\n if (item.text) {\n item.text = item.encoded === false ? item.text : kendo.htmlEncode(item.text);\n elm.append($(templates.text(item)));\n }\n\n return elm;\n },\n\n _bindEvents: function() {\n var that = this,\n clickProxy = that._click.bind(that),\n keydownProxy = that._keydown.bind(that);\n\n that.element.on(\"click\" + NS, DOT + bottomNavigationStyles.item, clickProxy)\n .on(\"keydown\" + NS, DOT + bottomNavigationStyles.item, keydownProxy);\n },\n\n _click: function(ev) {\n var that = this,\n item = $(ev.target).closest(DOT + bottomNavigationStyles.item);\n\n if (item.is(DOT + bottomNavigationStyles.disabled)) {\n ev.preventDefault();\n return;\n }\n\n that._triggerSelect(item, ev);\n },\n\n _triggerSelect: function(item, ev) {\n var that = this;\n\n if (item.is(DOT + bottomNavigationStyles.disabled)) {\n return;\n }\n\n if (that.trigger(SELECT, { originalEvent: ev, item: item, data: item.data() })) {\n return;\n }\n\n that.select(item);\n },\n\n _keydown: function(ev) {\n var that = this,\n target = $(ev.target),\n key = ev.keyCode;\n\n if (key === keys.ENTER || key === keys.SPACEBAR) {\n if (that._isItem(target)) {\n that._triggerSelect(target, ev);\n\n if (key === keys.SPACEBAR) {\n ev.preventDefault();\n }\n }\n }\n },\n\n _isItem: function(item) {\n var that = this;\n\n item = $(item);\n\n return item.is(DOT + bottomNavigationStyles.item) && !!that.element.find(item).length;\n },\n\n items: function() {\n var that = this;\n\n return that.element.children();\n },\n\n select: function(item, state) {\n var that = this,\n selectedItem = that.items().filter(DOT + bottomNavigationStyles.selected);\n\n if (!item) {\n return selectedItem;\n }\n\n state = state !== false;\n\n if (that._isItem(item)) {\n selectedItem.removeClass(bottomNavigationStyles.selected);\n $(item).toggleClass(bottomNavigationStyles.selected, state);\n }\n },\n\n enable: function(item, state) {\n var that = this;\n\n state = state === false;\n\n if (item && that._isItem(item)) {\n $(item).toggleClass(bottomNavigationStyles.disabled, state);\n $(item).attr(\"aria-disabled\", state);\n }\n },\n\n item: function(index) {\n var that = this;\n\n if (isNaN(index)) {\n return null;\n }\n\n return that.items().eq(index);\n },\n\n itemById: function(id) {\n var that = this;\n\n return that.element.find(\"#\" + id);\n },\n\n add: function(item, before) {\n var that = this,\n method = \"append\",\n targetElement = that.element;\n\n if (before && that._isItem(before)) {\n method = \"before\";\n targetElement = $(before);\n }\n\n if (item && isPlainObject(item) && !isEmptyObject(item)) {\n targetElement[method](that._renderItem(item));\n }\n },\n\n remove: function(item) {\n var that = this;\n\n if (item && that._isItem(item)) {\n item.remove();\n }\n },\n\n showText: function(toggle) {\n var that = this,\n textItems = that.items().find(DOT + bottomNavigationStyles.text);\n\n toggle = toggle !== false;\n\n textItems.toggle(toggle);\n },\n\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(this, options);\n that._updateCssClasses();\n\n if (\"items\" in options || \"template\" in options) {\n that.element.empty();\n that._items();\n }\n }\n });\n\n ui.plugin(BottomNavigation);\n\n kendo.cssProperties.registerPrefix(\"BottomNavigation\", \"k-bottom-nav-\");\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}