UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

171 lines (170 loc) 5.42 kB
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); require("./kendo.core-kmRaf_Lg.js"); require("./kendo.badge.js"); require("./kendo.html.button.js"); //#region ../src/kendo.button.js const __meta__ = { id: "button", name: "Button", category: "web", description: "The Button widget displays styled buttons.", depends: [ "core", "badge", "html.button" ] }; (function($, undefined) { var kendo = window.kendo, Widget = kendo.ui.Widget, html = kendo.html, ui = kendo.ui, keys = kendo.keys, CLICK = "click", MOUSEDOWN = kendo.support.mousedown, MOUSEUP = kendo.support.mouseup, MOUSEOUT = "mouseout", NS = ".kendoButton", DISABLED = "disabled", DISABLEDSTATE = "k-disabled", FOCUSEDSTATE = "k-focus", ACTIVESTATE = "k-active", KENDO_KEYDOWN = "kendoKeydown"; kendo.setDefaults("button", { icon: "", iconClass: "", spriteCssClass: "", imageUrl: "", badge: null }); var Button = Widget.extend({ init: function(element, options) { var that = this; Widget.fn.init.call(that, element, options); element = that.wrapper = that.element; options = that.options; html.renderButton(element, $.extend({}, options, { autoAriaLabel: true })); if (!that._isNativeButton()) element.attr("role", "button"); options.enable = options.enable && options.enabled && !element.attr(DISABLED); that.enable(options.enable); if (options.enable) that._tabindex(); that._badge(); element.on(CLICK + NS, that._click.bind(that)).on("focus" + NS, that._focus.bind(that)).on("blur" + NS, that._blur.bind(that)).on("keydown" + NS, that, that._keydown.bind(that)).on("keyup" + NS, that._removeActive.bind(that)).on(MOUSEDOWN + NS, that._addActive.bind(that)).on(MOUSEUP + NS + " " + MOUSEOUT + NS, that._removeActive.bind(that)); kendo.notify(that); Widget.fn.endInit.call(that); }, destroy: function() { var that = this; that.wrapper.off(NS); if (that.badge) that.badge.destroy(); Widget.fn.destroy.call(that); }, events: [CLICK, KENDO_KEYDOWN], options: { name: "Button", enable: true, enabled: true, icon: "", iconClass: "", spriteCssClass: "", imageUrl: "", badge: null, size: undefined, shape: "rectangle", rounded: undefined, fillMode: undefined, themeColor: undefined }, _isNativeButton: function() { return this.element.prop("tagName").toLowerCase() == "button"; }, _click: function(e) { if (this.options.enable) { if (this.trigger(CLICK, { event: e, id: this.element.attr("id"), target: this.element })) e.preventDefault(); } }, _focus: function() { if (this.options.enable) this.element.addClass(FOCUSEDSTATE); }, _blur: function() { var that = this; that.element.removeClass(FOCUSEDSTATE); setTimeout(function() { that.element.removeClass(ACTIVESTATE); }); }, _keydown: function(e) { var that = this; if (e.keyCode == keys.ENTER || e.keyCode == keys.SPACEBAR) { that._addActive(); if (!that._isNativeButton()) { if (e.keyCode == keys.SPACEBAR) e.preventDefault(); that._click(e); } } }, _removeActive: function() { this.element.removeClass(ACTIVESTATE); }, _addActive: function() { if (this.options.enable) this.element.addClass(ACTIVESTATE); }, enable: function(enable) { var that = this, element = that.element; if (enable === undefined) enable = true; enable = !!enable; that.options.enable = enable; element.toggleClass(DISABLEDSTATE, !enable); if (that._isNativeButton()) { element.attr(DISABLED, !enable); if (enable) element.removeAttr("aria-disabled"); else element.attr("aria-disabled", true); } else element.attr("aria-disabled", !enable).attr(DISABLED, !enable); if (enable) that._tabindex(); try { element.trigger("blur"); } catch (err) {} }, _badge: function(options) { var that = this; var badgeOptions = options || that.options.badge; var badgeEelement; if (badgeOptions === null || badgeOptions === undefined) return; if (badgeOptions.constructor !== Object) badgeOptions = { text: badgeOptions }; if (badgeOptions.position === undefined || badgeOptions.position === "") { badgeOptions.position = "edge"; if (badgeOptions.align === undefined || badgeOptions.align === "") badgeOptions.align = "top end"; } badgeOptions._classNames = ["k-button-badge"]; that.element.addClass("k-badge-container"); badgeEelement = $("<span />").appendTo(that.element); that.badge = new ui.Badge(badgeEelement, badgeOptions); } }); if (Button.fn.hasOwnProperty("defaults") === false) Object.defineProperty(Button.fn, "defaults", { get: function() { return kendo.defaults.button; } }); kendo.cssProperties.registerPrefix("Button", "k-button-"); kendo.cssProperties.registerValues("Button", [ { prop: "fillMode", values: kendo.cssProperties.fillModeValues.concat(["link", "clear"]) }, { prop: "themeColor", values: [ "base", "primary", "secondary", "tertiary", "info", "success", "warning", "error", "inverse" ] }, { prop: "rounded", values: kendo.cssProperties.roundedValues.concat([["full", "full"]]) } ]); kendo.ui.plugin(Button); })(window.kendo.jQuery); var kendo_button_default = kendo; //#endregion exports.__meta__ = __meta__; exports.default = kendo_button_default;