@progress/kendo-vue-buttons
Version:
9 lines (8 loc) • 4.35 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("vue"),t=require("@progress/kendo-vue-common"),y=require("./util.js"),v=require("./package-metadata.js"),$=y.default.styles,k=i.defineComponent({name:"KendoButton",emits:{click:e=>!0,mousedown:e=>!0,mouseup:e=>!0,pointerdown:e=>!0,pointerup:e=>!0,focus:e=>!0,blur:e=>!0,keypress:e=>!0,keydown:e=>!0,contextmenu:e=>!0},props:{ariaLabel:String,ariaPressed:Boolean,title:String,dir:String,selected:{type:Boolean,default:void 0},togglable:{type:Boolean,default:!1},icon:{type:String,default:function(){}},svgIcon:Object,iconSize:{type:String,default:"medium"},iconClass:{type:String,default:function(){}},imageUrl:{type:String,default:function(){}},imageAlt:String,disabled:{type:Boolean,default:void 0},size:{type:String,default:"medium"},shape:{type:String},rounded:{type:String,default:"medium"},fillMode:{type:String,default:"solid"},themeColor:{type:String,default:"base"},tabIndex:Number,accessKey:String,id:String,type:String,role:String},created(){t.validatePackage(v.packageMetadata),this.currentActive=this.$props.togglable===!0&&this.$props.selected===!0,this._activeTemp=void 0},data(){return{currentActive:null}},computed:{computedSelected(){return this._activeTemp!==void 0?this._activeTemp:this.$props.selected!==void 0?this.$props.selected:this.currentActive},buttonClasses(){const{disabled:e,icon:a,iconClass:r,imageUrl:s,dir:u,svgIcon:p,size:o,shape:d,rounded:l,fillMode:n,themeColor:c}=this.$props,f=p!==void 0||a!==void 0||r!==void 0||s!==void 0,h=t.getDefaultSlots(this);return{[$.button]:!0,[`k-button-${t.kendoThemeMaps.sizeMap[o]||o}`]:o,[`k-button-${d}`]:d&&d!=="rectangle",[`k-rounded-${t.kendoThemeMaps.roundedMap[l]||l}`]:l,"k-icon-button":!h&&f,"k-disabled":e,"k-selected":this.computedSelected,"k-rtl":u==="rtl",[`k-button-${n}`]:n,[`k-button-${n}-${c}`]:n&&c}}},updated(){this.$props.togglable&&this.$props.selected!==void 0&&this.$props.selected!==this.currentActive&&(this.currentActive=this.$props.selected)},methods:{focus(e){this.$el.focus(e)},toggleIfApplicable(){if(!this.disabled&&this.$props.togglable&&this.$props.selected===void 0){const e=!this.currentActive;this._activeTemp=e,this.currentActive=e,this._activeTemp=void 0}},handleClick(e){this.toggleIfApplicable(),this.disabled||this.$emit("click",e)},handleMouseDown(e){this.disabled||this.$emit("mousedown",e)},handlePointerDown(e){this.disabled||this.$emit("pointerdown",e)},handleMouseUp(e){this.disabled||this.$emit("mouseup",e)},handlePointerUp(e){this.disabled||this.$emit("pointerup",e)},handleFocus(e){this.disabled||this.$emit("focus",{event:e})},handleBlur(e){this.disabled||this.$emit("blur",{event:e})},handleKeypress(e){this.disabled||this.$emit("keypress",e)},handleKeydown(e){this.disabled||this.$emit("keydown",e)},handleContextmenu(e){this.disabled||this.$emit("contextmenu",e)}},render(){const{togglable:e,icon:a,svgIcon:r,iconClass:s,imageUrl:u,imageAlt:p,accessKey:o,tabIndex:d,id:l,type:n,disabled:c,role:f,iconSize:m}=this.$props,h=t.getDefaultSlots(this),g=function(){if(u)return i.createVNode("img",{role:"presentation",class:"k-image",alt:p,src:u},null);if(a||r){const b=t.classNames("k-button-icon",s);return i.createVNode(t.Icon,{name:a,icon:r,class:b,size:m},null)}else if(s)return i.createVNode("span",{role:"presentation",class:s},null);return null};return i.createVNode("button",{class:this.buttonClasses,onClick:this.handleClick,onMousedown:this.handleMouseDown,onMouseup:this.handleMouseUp,onPointerdown:this.handlePointerDown,onPointerup:this.handlePointerUp,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeypress:this.handleKeypress,onKeydown:this.handleKeydown,onContextmenu:this.handleContextmenu,title:this.title,"aria-label":this.ariaLabel,"aria-disabled":c||void 0,"aria-pressed":e?!!this.currentActive:void 0,accesskey:o,tabindex:d,id:l,type:n,role:f},[g.call(this),h&&i.createVNode("span",{class:"k-button-text"},[h])])}});exports.Button=k;