@progress/kendo-vue-data-tools
Version:
9 lines (8 loc) • 3.14 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 r=require("vue"),l=require("@progress/kendo-vue-buttons"),d=require("@progress/kendo-vue-common"),h=require("@progress/kendo-vue-intl"),i=require("../messages/main.js");function m(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!r.isVNode(e)}const g=r.defineComponent({name:"KendoNumericButtons",props:{buttonCount:Number,totalPages:Number,currentPage:Number,size:String,responsiveSize:String,onPagechange:Function},inject:{kendoLocalizationService:{default:null}},computed:{start(){const e=this.$props.currentPage,s=this.$props.buttonCount;if(e>s){const n=e%s;return n===0?e-s+1:e-n+1}return 1},end(){return Math.min(this.start+this.$props.buttonCount-1,this.$props.totalPages)},dropdownClass(){const{size:e}=this.$props;return{"k-picker":!0,"k-dropdown-list":!0,"k-dropdown":!0,"k-rounded-md":!0,"k-picker-solid":!0,[`k-picker-${d.kendoThemeMaps.sizeMap[e]||e}`]:e}}},methods:{click(e,s){e.preventDefault(),this.$emit("pagechange",s,e)},ddlChange(e){this.$emit("pagechange",parseInt(e.target.value,10),e)}},render(){const e=h.provideLocalizationService(this),s=this.$props.messagesMap?this.$props.messagesMap(i.pagerSmallPageSelectorAriaLabel):{messageKey:i.pagerSmallPageSelectorAriaLabel,defaultMessage:i.messages[i.pagerSmallPageSelectorAriaLabel]},n=this.start>1&&r.createVNode(l.Button,{fillMode:"flat",themeColor:"primary",size:this.$props.size,rounded:null,onClick:t=>this.click(t,this.start-1)},{default:()=>[r.createTextVNode("...")]}),u=this.end<this.$props.totalPages&&r.createVNode(l.Button,{fillMode:"flat",themeColor:"primary",size:this.$props.size,rounded:null,onClick:t=>this.click(t,this.end+1)},{default:()=>[r.createTextVNode("...")]}),a=[];for(let t=this.start;t<=this.end;t++)a.push(t);const c=a.map(function(t){return r.createVNode(l.Button,{key:t,class:"k-link",onClick:o=>this.click(o,t),selected:this.$props.currentPage===t,fillMode:"flat",themeColor:"primary",size:this.$props.size,rounded:null,role:"button",title:"Page "+t,"aria-current":this.$props.currentPage===t?!0:void 0},m(t)?t:{default:()=>[t]})},this),p=function(t){return r.createVNode("select",{style:{width:"5em",margin:"0px 1em",display:this.$props.responsiveSize==="small"?"inline-flex":"none"},class:this.dropdownClass,"aria-label":e.toLanguageString(s.messageKey,s.defaultMessage),onChange:this.ddlChange},[t.map(function(o){return r.createVNode("option",{value:o,selected:o===this.$props.currentPage},[o])},this)])};return r.createVNode("div",{class:"k-pager-numbers-wrap"},[r.createVNode("div",{class:"k-pager-numbers",style:{display:this.$props.responsiveSize!=="small"?"":"none"}},[n,c,u]),p.call(this,a)])}});exports.PagerNumericButtons=g;