@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 16.5 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.data.js"),require("kendo.dropdownlist.js"),require("kendo.icons.js")):"function"==typeof define&&define.amd?define(["exports","kendo.data","kendo.dropdownlist","kendo.icons"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Pager={}))}(this,(function(e){!function(e,t){var a=window.kendo,i=a.ui,n=i.Widget,s=a.keys,r=(a.mediaQuery,a.support,a.htmlEncode),o=a.template,l="caret-alt-to-left",p="caret-alt-to-right",d="caret-alt-left",u="caret-alt-right",c="caret-alt-to-left",g="caret-alt-to-right",m="caret-alt-left",f="caret-alt-right",h=":kendoFocusable:not([tabindex='-1'])",k="change",_=".kendoPager",b="click",v=Number.MAX_VALUE,S=!1;function w(e){return e.template({idx:e.idx,text:e.text,ns:a.ns,numeric:e.numeric,size:e.size,title:e.title||"",tabindex:e.navigatable?0:-1,navigatable:e.navigatable})}function z(e,t,a,i){return e({idx:t,text:a||t,selected:i||!1})}function x(t,i,n,s,r){return(({text:t,wrapClassName:i,className:n,size:s})=>`<button role="button" title="${t}" aria-label="${t}" class="k-pager-nav k-button k-button-flat k-button-flat-base k-icon-button ${i} ${s}">${a.ui.icon(e('<span class="k-button-icon"></span>'),n)}</button>`)({className:t,text:i,wrapClassName:n||"",id:s||"",size:r})}function C(e,t,i,n){e.find(`[class*="-i-${t}"]`).parent().attr(a.attr("page"),i).attr("tabindex",n?-1:0).attr("aria-disabled",n).toggleClass("k-disabled",n)}function T(e,t){C(e,l,1,t<=1)}function P(e,t){C(e,d,Math.max(1,t-1),t<=1)}function y(e,t,a){C(e,u,Math.min(a,t+1),t>=a)}function W(e,t,a){C(e,p,a,t>=a)}var D=n.extend({init:function(t,i){var s,o,h=this,v="",w="";if(n.fn.init.call(h,t,i),i=h.options,h._createDataSource(i),h.linkTemplate=a.template(h.options.linkTemplate),h.selectTemplate=a.template(h.options.selectTemplate),h.numericSelectItemTemplate=a.template(h.options.numericSelectItemTemplate),s=h.page(),o=h.totalPages(),h._refreshHandler=h.refresh.bind(h),h.dataSource.bind(k,h._refreshHandler),h.downEvent=a.applyEventMap("down",a.guid()),S=a.support.isRtl(t),h._numericWrap=h.element.find(".k-pager-numbers-wrap"),S?(l=g,p=c,d=f,u=m,h._numericWrap.length&&h._numericWrap.empty()):(l=c,p=g,d=m,u=f),i.size&&(v=a.getValidCssClass("k-button-","size",i.size),w="k-rounded-md "+a.getValidCssClass("k-picker-","size",i.size)),i.navigatable&&(h._id=h.element.attr("id")||a.guid()),h._template(),(i.previousNext||i.numeric)&&0===h._numericWrap.length&&(h._numericWrap=e("<div class='k-pager-numbers-wrap' />").appendTo(h.element)),i.previousNext&&(h._numericWrap.find("[class*='-i-"+l+"']").length||(h._numericWrap.append(x(l,i.messages.first,"k-pager-first",h._id,v)),T(h._numericWrap,s)),h._numericWrap.find("[class*='-i-"+d+"']").length||(h._numericWrap.append(x(d,i.messages.previous,null,h._id,v)),P(h._numericWrap,s))),i.numeric&&(h._numericSelect||(h._numericSelect=h._numericWrap.find(".k-dropdown"),0===h._numericSelect.length&&(h._numericSelect=e("<select aria-label='"+h.options.messages.numbersSelectLabel+"' class='k-dropdown k-picker k-picker-solid k-dropdown-list "+w+"' />").appendTo(h._numericWrap))),h.list||(h.list=h._numericWrap.find(".k-pager-numbers"),0===h.list.length&&(h.list=e('<div class="k-pager-numbers" />').appendTo(h._numericWrap))),i.dataSource&&!i.dataSource.total()&&(h._numericSelect.empty().append("<option value='0' />"),h.list.empty().append(h.selectTemplate({text:0,tabindex:i.navigatalbe?0:-1,navigatable:i.navigatable,title:a.format(i.messages.pageButtonLabel,0)})))),i.input&&(h.element.find(".k-pager-input").length||h.element.append('<span class="k-pager-input k-label">'+r(i.messages.page)+'<span class="k-textbox k-input k-input-md k-rounded-md k-input-solid"><input class="k-input-inner" /></span>'+r(a.format(i.messages.of,o))+"</span>"),h.element.on("keydown"+_,".k-pager-input input",h._keydown.bind(h))),i.previousNext&&(h._numericWrap.find("[class*='-i-"+u+"']").length||(h._numericWrap.append(x(u,i.messages.next,null,h._id,v)),y(h._numericWrap,s,o)),h._numericWrap.find("[class*='-i-"+p+"']").length||(h._numericWrap.append(x(p,i.messages.last,"k-pager-last",h._id,v)),W(h._numericWrap,s,o))),i.pageSizes){if(!h.element.find(".k-pager-sizes").length){var z=i.pageSizes.length?i.pageSizes:["all",5,10,20],C=e.map(z,(function(e){return e.toLowerCase&&"all"===e.toLowerCase()?"<option value='all'>"+r(i.messages.allPages)+"</option>":"<option>"+e+"</option>"}));e('<span class="k-pager-sizes"><select></select><span>'+r(i.messages.itemsPerPage)+"</span></span>").appendTo(h.element).find("select").html(C.join("")).end().appendTo(h.element)}h.element.find(".k-pager-sizes select").val(h.pageSize()),a.ui.DropDownList&&h.element.find(".k-pager-sizes select").show().attr("aria-label",i.messages.pageSizeDropDownLabel).kendoDropDownList({size:i.size}),h.element.on(k+_,".k-pager-sizes select",h._change.bind(h))}i.refresh&&(h.element.find(".k-pager-refresh").length||h.element.append('<button role="button" href="#" class="k-pager-refresh k-button '+v+' k-button-flat k-button-flat-base k-icon-button" title="'+i.messages.refresh+'" aria-label="'+i.messages.refresh+'">'+a.ui.icon(e('<span class="k-button-icon"></span>'),"arrow-rotate-cw")+"</button>"),h.element.on(b+_,".k-pager-refresh",h._refreshClick.bind(h))),i.info&&(h.element.find(".k-pager-info").length||h.element.append('<span class="k-pager-info" />')),h.element.on(b+_,"button",h._click.bind(h)).on(k+_,"select.k-dropdown",h._numericSelectChange.bind(h)).addClass("k-pager"),i.size&&h.element.addClass(a.getValidCssClass("k-pager-","size",i.size)),i.autoBind&&h.refresh(),h._resizeHandler=h.resize.bind(h,!0),e(window).on("resize"+_,h._resizeHandler),h._navigatable(),h._responsive(),a.notify(h)},destroy:function(){var t=this;n.fn.destroy.call(t),t.element.off(_),t.dataSource.unbind(k,t._refreshHandler),t._refreshHandler=null,e(window).off("resize"+_,this._resizeHandler),a.destroy(t.element),t.element=t.list=null},events:[k],options:{name:"Pager",ARIATemplate:({page:e,totalPages:t})=>`Page navigation, page ${e} of ${t}`,selectTemplate:({text:e,title:t,tabindex:a,size:i})=>`<button role="button" aria-current="page" tabindex="${a}" aria-label="${t}" class="k-button ${i} k-button-flat k-button-flat-primary k-selected"><span class="k-button-text">${r(e)}</span></button>`,linkTemplate:({ns:e,idx:t,text:a,title:i,tabindex:n,size:s})=>`<button class="k-button ${s} k-button-flat k-button-flat-primary" tabindex="${n}" href="#" data-${e}page="${t}" ${""!==i?`title="${i}"`:""}><span class="k-button-text">${r(a)}</span></button>`,numericSelectItemTemplate:({idx:e,selected:t,text:a})=>`<option value="${e}" ${t?'selected="selected"':""}>${r(a)}</option>`,buttonCount:10,autoBind:!0,numeric:!0,info:!0,input:!1,previousNext:!0,pageSizes:!1,refresh:!1,responsive:!0,navigatable:!1,size:"medium",messages:{allPages:"All",display:"{0} - {1} of {2} items",empty:"No items to display",page:"Page",of:"of {0}",itemsPerPage:"items per page",pageButtonLabel:"Page {0}",pageSizeDropDownLabel:"Page sizes drop down",numbersSelectLabel:"Page select",first:"Go to the first page",previous:"Go to the previous page",next:"Go to the next page",last:"Go to the last page",refresh:"Refresh",morePages:"More pages"}},setDataSource:function(e){var t=this;t.dataSource.unbind(k,t._refreshHandler),t.dataSource=t.options.dataSource=e,e.bind(k,t._refreshHandler),t.options.autoBind&&e.fetch()},_aria:function(){this.element.attr({role:"application","aria-roledescription":"pager","aria-keyshortcuts":"Enter ArrowRight ArrowLeft"})},_adaptiveStep:function(e,t,a){var i=this;switch(e){case 0:return i._toggleButtons(t,a);case 1:return i._toggleRefresh(t,a);case 2:return i._togglePagerInfo(t,a);case 3:return i._toggleInputSizesLabel(t,a);case 4:return i._togglePageSizesLabel(t,a);case 5:return i._togglePageSizesDropDown(t,a);case 6:return i._togglePageInputs(t,a)}},_calculateNeededWidth:function(){var t=0,a=parseInt(this.element.css("gap"));return this.element.children().each((function(){const i=e(this),n=i.hasClass("k-pager-info");n&&i.removeClass("k-pager-info k-label"),t+=i.is(":visible")?i.width():0,t+=a,n&&i.addClass("k-pager-info k-label")})),t},_resize:function(e){var t=this;if(t._responsive(e),t.element.is(":visible")&&t._lastWidth&&t.options.responsive){if(t._lastWidth<e.width)for(let a=6;a>=0;a--){const i=t._calculateNeededWidth();if(e.width<i)break;if(t._adaptiveStep(a,!1,e.width-i))break}else if(t._lastWidth>e.width)for(let a=0;a<7&&!(e.width>t._calculateNeededWidth());a++)t._adaptiveStep(a,!0);t._lastWidth=e.width}},_toggleButtons:function(e,t){this._numericWrap&&this.list&&this._numericSelect&&(e?(this._numericSelect.show(),this.list.hide()):t&&this.list.width()-this._numericSelect.width()<t&&(this._numericSelect.hide(),this.list.show()))},_toggleRefresh:function(e,t){if(!this.options.refresh)return;const a=this.element.find(".k-pager-refresh");if(e)a.hide();else{if(!(t&&a.width()<t))return!0;a.show()}},_togglePagerInfo:function(e,t){if(!this.options.info)return;const a=this.element.find(".k-pager-info");if(e)a.hide();else if(t&&a.width()<t)a.show();else if(!a.is(":visible"))return!0},_toggleInputSizesLabel:function(e,t){if(!this.options.input)return;const a=this.element.find(".k-pager-input").children(),i=a.eq(0).add(a.eq(2));if(e)i.hide();else{if(!(t&&a.eq(0).width()+a.eq(2).width()<t))return!0;i.show()}},_togglePageSizesLabel:function(e,t){if(!this.options.pageSizes)return;const a=this.element.find(".k-pager-sizes").children().eq(1);if(e)a.hide();else{if(!(t&&a.width()<t))return!0;a.show()}},_togglePageSizesDropDown:function(e,t){if(!this.options.pageSizes)return;const a=this.element.find(".k-pager-sizes .k-picker");if(e)a.hide();else{if(!(t&&a.width()<t))return!0;a.show()}},_togglePageInputs:function(e,t){if(this.options.input&&this._numericSelect)if(e)this._numericSelect.hide();else{if(!(t&&this._numericSelect.width()<t)||this.list.is(":visible"))return!0;this._numericSelect.show()}},_createDataSource:function(e){this.dataSource=a.data.DataSource.create(e.dataSource)},_responsive:function(e){var t,a,i=this,n=i.options;n.responsive?(t=i.element.outerWidth(),e&&e.width>0&&(t=e.width),a=i.element.find(".k-pager-info"),t<=480?(a.hide(),i.element.find(".k-pager-sizes").children().hide(),n.numeric&&(i._numericSelect.show(),i.list.hide())):t<=600?(a.hide(),n.numeric&&(i._numericSelect.show(),i.list.hide())):n.numeric&&(i._numericSelect.hide(),i.list.show())):i._numericSelect&&i._numericSelect.hide()},refresh:function(t){var i,n,s,o=this,l=1,p=o.page(),d="",u="",c=o.options,g=o.pageSize(),m=o._collapsedTotal(),f=o.dataSource._isGroupPaged()?o.dataSource.groupsTotal(!0):o.dataSource.total(),h=o.totalPages(),k=o.linkTemplate,_=c.navigatable,b=o.numericSelectItemTemplate,S=c.size?a.getValidCssClass("k-button-","size",c.size):"",x=c.buttonCount;if(!t||"itemchange"!=t.action){if(c.numeric){for(p>x&&(l=0===(s=p%x)?p-x+1:p-s+1),n=Math.min(l+x-1,h),l>1&&(d+=w({template:k,navigatable:_,size:S,idx:l-1,text:"...",numeric:!1,title:c.messages.morePages}),u+=z(b,l-1,c.messages.morePages)),i=l;i<=n;i++)d+=w({template:i==p?o.selectTemplate:k,navigatable:_,idx:i,text:i,size:S,numeric:!0,title:a.format(c.messages.pageButtonLabel,i)}),u+=z(b,i,i,i==p);n<h&&(d+=w({template:k,navigatable:_,idx:i,size:S,text:"...",numeric:b,title:c.messages.morePages}),u+=z(b,i,c.messages.morePages)),""===d&&(d=o.selectTemplate({text:0,size:S,tabindex:_?0:-1,navigatable:_,title:a.format(c.messages.pageButtonLabel,0)}),u=e("<option value='0' />")),o.list.html(d),o._numericSelect.html(u)}if(c.info&&(d=f>0?a.format(c.messages.display,o.dataSource.options.endless?1:Math.min((p-1)*(o.dataSource.pageSize()||0)+1,m),Math.min(p*g,m),f):c.messages.empty,o.element.find(".k-pager-info").html(d)),c.input&&o.element.find(".k-pager-input").html("<span>"+r(o.options.messages.page)+'</span><span class="k-textbox k-input k-input-md k-rounded-md k-input-solid"><input class="k-input-inner" aria-label="'+o.options.messages.page+" "+p+'"></span><span>'+r(a.format(c.messages.of,h))+"</span>").find("input").val(p).attr("disabled",f<1).attr("aria-disabled",f<1).toggleClass("k-disabled",f<1),c.previousNext&&(T(o.element,p),P(o.element,p),y(o.element,p,h),W(o.element,p,h)),c.pageSizes){var C=g;o.element.find(".k-pager-sizes option[value='all']").length>0&&(g===this.dataSource.total()||g==v)&&(g="all",C=c.messages.allPages),o.element.find(".k-pager-sizes select").val(g).filter("["+a.attr("role")+"=dropdownlist]").kendoDropDownList("value",g).kendoDropDownList("text",C)}o._restoreFocus(l,n,h),o._excludeChildrenFromTab(),o._updateAria(),h?(o._lastWidth=a._outerWidth(o.element)+12,o.resize(!0)):o._lastWidth&&(o._lastWidth=a._outerWidth(o.element))}},_excludeChildrenFromTab:function(){var t=a._activeElement();!this.options.navigatable||t!==this.element[0]&&e.contains(this.element[0],t)||this.element.find(h).attr("tabindex",-1)},_restoreFocus:function(e,t,a){var i=this;i.options.navigatable&&(i._focusSelected&&(i.element.find(".k-selected").trigger("focus"),i._focusSelected=null),null!==i._focusMore&&(t<a&&i._focusMore&&i.list.find("li").last().find("a").trigger("focus"),!i._focusMore&&e>1&&i.list.find("li").first().find("a").trigger("focus"),i._focusMore=null))},_restoreTabIndexes:function(){this.element.find("[tabindex='-1']:not(.k-disabled):not(.k-dropdownlist > .k-icon-button)").attr("tabindex",0)},_collapsedTotal:function(){return this.dataSource.total()},_keydown:function(e){if(e.keyCode===a.keys.ENTER){var t=this.element.find(".k-pager-input").find("input"),i=parseInt(t.val(),10);(isNaN(i)||i<1||i>this.totalPages())&&(i=this.page()),t.val(i),this.page(i)}},_refreshClick:function(e){e.preventDefault(),this.dataSource.read()},_change:function(e){var a=e.currentTarget.value,i=parseInt(a,10),n=this.dataSource;isNaN(i)?"all"==(a+"").toLowerCase()&&(n._pageSize=t,n._take=t,n._skip=0,n.fetch()):n.pageSize(i)},_template:function(){this._ariaTemplate=o(this.options.ARIATemplate).bind(this)},_updateAria:function(){this.options.navigatable&&this.element.attr("aria-label",this._ariaTemplate({page:this.page(),totalPages:this.totalPages()}))},_navigatable:function(){var e=this;e.options.navigatable&&(e._aria(),e.element.attr("id",e._id),e._template(),e._updateAria(),e._tabindex(e.element),e.element.on("keydown"+_,e,e._keyDown.bind(e)),e.element.on("focusout"+_,(function(){e.element.removeClass("k-focus")})),e.element.on("focusin"+_,(function(t){e.element.addClass("k-focus"),t.target===e.element[0]?e.element.find(h).attr("tabindex",-1):e.element.removeClass("k-focus")})))},_keyDown:function(t){var a,i,n=this,r=e(t.target),o=!1;r[0]===n.element[0]&&t.keyCode==s.ENTER&&(n._restoreTabIndexes(),n.element.find(h).first().trigger("focus"),o=!0),r[0]!==n.element[0]&&t.keyCode==s.ESC&&(n.element.trigger("focus"),o=!0),r[0]===n.element[0]&&t.keyCode==s.HOME&&(n.page(1),o=!0),r[0]===n.element[0]&&t.keyCode==s.END&&(n.page(n.totalPages()),o=!0),r[0]!==n.element[0]||t.keyCode!=(S?s.LEFT:s.RIGHT)&&t.keyCode!=s.PAGEDOWN||(n.page(n.page()+1),o=!0),r[0]!==n.element[0]||t.keyCode!=(S?s.RIGHT:s.LEFT)&&t.keyCode!=s.PAGEUP||(n.page(n.page()-1||1),o=!0),r[0]!==n.element[0]&&t.keyCode==s.TAB&&(n.options._isToolbarItem&&n._restoreTabIndexes(),i=(a=n.element.find(h)).index(r),t.shiftKey?i-1<0?a.last().trigger("focus"):a.eq(i-1).trigger("focus"):i+1<a.length?a.eq(i+1).trigger("focus"):a.first().trigger("focus"),o=!0),o&&(t.preventDefault(),t.stopPropagation())},_numericSelectChange:function(e){var t=e.currentTarget.value,a=parseInt(t,10);this.page(a)},_click:function(t){const i=this,n=e(t.currentTarget);t.preventDefault(),i.options.navigatable&&(n.attr("title")==i.options.messages.morePages?i._focusMore=n.parent().index():n.hasClass("k-pager-refresh")||n.hasClass("k-pager-nav")||(i._focusSelected=!0),i._restoreTabIndexes()),n.is(".k-disabled")||i.page(parseInt(n.attr(a.attr("page")),10))},totalPages:function(){return Math.ceil((this.dataSource.total()||0)/(this.pageSize()||1))},pageSize:function(){return this.dataSource.pageSize()||this.dataSource.total()},page:function(e){if(!e)return this.dataSource.total()>0?this.dataSource.page():0;this.trigger("pageChange",{index:e})||(this.dataSource.page(e),this.trigger(k,{index:e}))}});i.plugin(D)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"pager",name:"Pager",category:"framework",depends:["data","icons"],advanced:!0},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.pager.min.js.map