@progress/kendo-vue-upload
Version:
9 lines (8 loc) • 2.83 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 t=require("vue"),d=require("@progress/kendo-vue-common"),f=require("@progress/kendo-vue-intl"),o=require("./messages/main.js"),g=require("./UploadInput.js"),v=require("@progress/kendo-vue-buttons");function x(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!t.isVNode(e)}const S=t.defineComponent({name:"KendoVueUploadAddButton",props:{addButtonIndex:Number,navigationIndex:Number,notFocusedIndex:Number,tabIndex:Number,async:Object,multiple:Boolean,disabled:Boolean,accept:String,id:String,ariaLabelledBy:String,ariaDescribedBy:String},inject:{kendoLocalizationService:{default:null}},emits:{add:null,click:null},setup(){const e=t.ref(null),n=t.ref(null),i=t.inject("kendoLocalizationService",{});return{elementRef:e,uploadInputRef:n,kendoLocalizationService:i}},created(){this.uploadInputId=d.guid()},mounted(){this.element=this.elementRef,this.uploadInput=this.uploadInputRef},watch:{navigationIndex:function(e,n){this._prevNavigationIndex=n}},updated(){const{navigationIndex:e,addButtonIndex:n,notFocusedIndex:i}=this.$props;e!==this._prevNavigationIndex&&this._prevNavigationIndex!==i&&e===n&&this.element&&this.element.focus()},methods:{focus(){this.element&&this.element.focus()},onClick(){this.actionElement()&&this.actionElement().click(),this.$emit("click",this.$props.addButtonIndex)},onAdd(e){this.$emit("add",e)},onInputMouseDown(e){this.element&&(e.preventDefault(),this.element.focus())},actionElement(){if(this.uploadInput)return this.uploadInput.actionElement()}},render(){const{navigationIndex:e,addButtonIndex:n,tabIndex:i,id:c,async:r,multiple:s,disabled:l,accept:p,ariaLabelledBy:m,ariaDescribedBy:h}=this.$props,u=f.provideLocalizationService(this),a=s?u.toLanguageString(o.select,o.messages[o.select]):u.toLanguageString(o.selectSingle,o.messages[o.selectSingle]),I=d.classNames("k-upload-button",e===n?"k-focus":"");return t.createVNode("div",{class:"k-upload-button-wrap"},[t.createVNode(v.Button,{id:c,ref:d.setRef(this,"element"),role:"button",type:"button",disabled:l,ariaLabel:a,class:I,tabIndex:i,"aria-labelledby":m,"aria-describedby":h,onClick:this.onClick},x(a)?a:{default:()=>[a]}),t.createVNode(g.UploadInput,{id:this.uploadInputId,async:r,multiple:s,disabled:l,accept:p,onMousedown:this.onInputMouseDown,onAdd:this.onAdd,ref:b=>{this.uploadInputRef=b}},null)])}});exports.UploadAddButton=S;