UNPKG

@progress/kendo-ui

Version:

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

588 lines (461 loc) 20.4 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1265); /***/ }), /***/ 3: /***/ (function(module, exports) { module.exports = function() { throw new Error("define cannot be used indirect"); }; /***/ }), /***/ 1015: /***/ (function(module, exports) { module.exports = require("./kendo.data"); /***/ }), /***/ 1265: /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define){ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__(1015) ], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); })(function(){ var __meta__ = { // jshint ignore:line id: "pager", name: "Pager", category: "framework", depends: [ "data" ], advanced: true }; (function($, undefined) { var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, proxy = $.proxy, FIRST = ".k-i-arrow-end-left", LAST = ".k-i-arrow-end-right", PREV = ".k-i-arrow-60-left", NEXT = ".k-i-arrow-60-right", SIZE = "k-pager-lg k-pager-md k-pager-sm", CHANGE = "change", NS = ".kendoPager", CLICK = "click", KEYDOWN = "keydown", DISABLED = "disabled", MOUSEDOWN = "down", DOCUMENT_ELEMENT = $(document.documentElement), MAX_VALUE = Number.MAX_VALUE, iconTemplate = kendo.template('<a href="\\#" aria-label="#=text#" title="#=text#" class="k-link k-pager-nav #= wrapClassName #"><span class="k-icon #= className #"></span></a>'); function button(template, idx, text, numeric, title) { return template( { idx: idx, text: text, ns: kendo.ns, numeric: numeric, title: title || "" }); } function icon(className, text, wrapClassName) { return iconTemplate({ className: className.substring(1), text: text, wrapClassName: wrapClassName || "" }); } function update(element, selector, page, disabled) { element.find(selector) .parent() .attr(kendo.attr("page"), page) .attr("tabindex", -1) .toggleClass("k-state-disabled", disabled); } function first(element, page) { update(element, FIRST, 1, page <= 1); } function prev(element, page) { update(element, PREV, Math.max(1, page - 1), page <= 1); } function next(element, page, totalPages) { update(element, NEXT, Math.min(totalPages, page + 1), page >= totalPages); } function last(element, page, totalPages) { update(element, LAST, totalPages, page >= totalPages); } var Pager = Widget.extend( { init: function(element, options) { var that = this, page, totalPages; var sizeClassName = null; Widget.fn.init.call(that, element, options); options = that.options; that._createDataSource(options); that.linkTemplate = kendo.template(that.options.linkTemplate); that.selectTemplate = kendo.template(that.options.selectTemplate); that.currentPageTemplate = kendo.template(that.options.currentPageTemplate); page = that.page(); totalPages = that.totalPages(); that._refreshHandler = proxy(that.refresh, that); that.dataSource.bind(CHANGE, that._refreshHandler); that.downEvent = kendo.applyEventMap(MOUSEDOWN, kendo.guid()); if (options.previousNext) { if (!that.element.find(FIRST).length) { that.element.append(icon(FIRST, options.messages.first, "k-pager-first")); first(that.element, page, totalPages); } if (!that.element.find(PREV).length) { that.element.append(icon(PREV, options.messages.previous)); prev(that.element, page, totalPages); } } if (options.numeric) { that.list = that.element.find(".k-pager-numbers"); if (!that.list.length) { that.list = $('<ul class="k-pager-numbers k-reset" />').appendTo(that.element); } if (options.dataSource && !options.dataSource.total()) { that.list.empty().append(that.currentPageTemplate({ text: 0 })).append(that.selectTemplate({ text: 0 })); } that.list.wrap('<div class="k-pager-numbers-wrap"></div>'); } if (options.input) { if (!that.element.find(".k-pager-input").length) { that.element.append('<span class="k-pager-input k-label">'+ options.messages.page + '<input class="k-textbox">' + kendo.format(options.messages.of, totalPages) + '</span>'); } that.element.on(KEYDOWN + NS, ".k-pager-input input", proxy(that._keydown, that)); } if (options.previousNext) { if (!that.element.find(NEXT).length) { that.element.append(icon(NEXT, options.messages.next)); next(that.element, page, totalPages); } if (!that.element.find(LAST).length) { that.element.append(icon(LAST, options.messages.last, "k-pager-last")); last(that.element, page, totalPages); } } if (options.pageSizes){ if (!that.element.find(".k-pager-sizes").length){ var pageSizes = options.pageSizes.length ? options.pageSizes : ["all", 5, 10, 20]; var pageItems = $.map(pageSizes, function(size) { if (size.toLowerCase && size.toLowerCase() === "all") { return "<option value='all'>" + options.messages.allPages + "</option>"; } return "<option>" + size + "</option>"; }); $('<span class="k-pager-sizes k-label"><select/>' + options.messages.itemsPerPage + "</span>") .appendTo(that.element) .find("select").html(pageItems.join("")).end() .appendTo(that.element); } that.element.find(".k-pager-sizes select").val(that.pageSize()); if (kendo.ui.DropDownList) { that.element.find(".k-pager-sizes select").show().kendoDropDownList(); } that.element.on(CHANGE + NS, ".k-pager-sizes select", proxy(that._change, that)); } if (options.refresh) { if (!that.element.find(".k-pager-refresh").length) { that.element.append('<a href="#" class="k-pager-refresh k-link" title="' + options.messages.refresh + '" aria-label="' + options.messages.refresh + '"><span class="k-icon k-i-reload"></span></a>'); } that.element.on(CLICK + NS, ".k-pager-refresh", proxy(that._refreshClick, that)); } if (options.info) { if (!that.element.find(".k-pager-info").length) { that.element.append('<span class="k-pager-info k-label" />'); } } that.element .on(CLICK + NS , "a", proxy(that._click, that)) .addClass("k-pager-wrap k-widget k-floatwrap"); that.element.on(CLICK + NS , ".k-current-page", proxy(that._toggleActive, that)); if (options.autoBind) { that.refresh(); } that._resizeHandler = proxy(that.resize, that, true); $(window).on("resize" + NS, that._resizeHandler); sizeClassName = that._getWidthSizeClass(that.element.width()); if (sizeClassName) { that.element.addClass(sizeClassName); } kendo.notify(that); }, destroy: function() { var that = this; Widget.fn.destroy.call(that); that.element.off(NS); that.dataSource.unbind(CHANGE, that._refreshHandler); that._refreshHandler = null; $(window).off("resize" + NS, this._resizeHandler); kendo.destroy(that.element); that.element = that.list = null; }, events: [ CHANGE ], options: { name: "Pager", selectTemplate: '<li><span class="k-state-selected">#=text#</span></li>', currentPageTemplate: '<li class="k-current-page"><span class="k-link k-pager-nav">#=text#</span></li>', linkTemplate: '<li><a tabindex="-1" href="\\#" class="k-link" data-#=ns#page="#=idx#" #if (title !== "") {# title="#=title#" #}#>#=text#</a></li>', buttonCount: 10, autoBind: true, numeric: true, info: true, input: false, previousNext: true, pageSizes: false, refresh: false, responsive: true, messages: { allPages: "All", display: "{0} - {1} of {2} items", empty: "No items to display", page: "Page", of: "of {0}", itemsPerPage: "items per page", 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(dataSource) { var that = this; that.dataSource.unbind(CHANGE, that._refreshHandler); that.dataSource = that.options.dataSource = dataSource; dataSource.bind(CHANGE, that._refreshHandler); if (that.options.autoBind) { dataSource.fetch(); } }, _resize: function(size) { if (size.width) { var sizeClassName = this._getWidthSizeClass(size.width); var el = this.element; if (!sizeClassName) { el.removeClass(SIZE); } else if (!el.hasClass(sizeClassName)) { el.removeClass(SIZE); el.addClass(sizeClassName); } } }, _createDataSource: function(options) { this.dataSource = kendo.data.DataSource.create(options.dataSource); }, refresh: function(e) { var that = this, idx, end, start = 1, reminder, page = that.page(), html = "", options = that.options, pageSize = that.pageSize(), collapsedTotal = that._collapsedTotal(), total = that.dataSource.total(), totalPages = that.totalPages(), linkTemplate = that.linkTemplate, buttonCount = options.buttonCount; DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that)); if (e && e.action == "itemchange") { return; } if (options.numeric) { if (page > buttonCount) { reminder = (page % buttonCount); start = (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1; } end = Math.min((start + buttonCount) - 1, totalPages); if (start > 1) { html += button(linkTemplate, start - 1, "...", false, options.messages.morePages); } for (idx = start; idx <= end; idx++) { html += button(idx == page ? that.selectTemplate : linkTemplate, idx, idx, true); } if (end < totalPages) { html += button(linkTemplate, idx, "...", false, options.messages.morePages); } if (html === "") { html = that.selectTemplate({ text: 0 }); } html = this.currentPageTemplate({ text: page }) + html; that.list.removeClass("k-state-expanded").html(html); } if (options.info) { if (total > 0) { html = kendo.format(options.messages.display, that.dataSource.options.endless ? 1 : Math.min((page - 1) * (that.dataSource.pageSize() || 0) + 1, collapsedTotal), // first item in the page Math.min(page * pageSize, collapsedTotal), // last item in the page total); } else { html = options.messages.empty; } that.element.find(".k-pager-info").html(html); } if (options.input) { that.element .find(".k-pager-input") .html(that.options.messages.page + '<input class="k-textbox" aria-label="' + page + '">' + kendo.format(options.messages.of, totalPages)) .find("input") .val(page) .attr(DISABLED, total < 1) .toggleClass("k-state-disabled", total < 1); } if (options.previousNext) { first(that.element, page, totalPages); prev(that.element, page, totalPages); next(that.element, page, totalPages); last(that.element, page, totalPages); } if (options.pageSizes) { var hasAll = that.element.find(".k-pager-sizes option[value='all']").length > 0; var selectAll = hasAll && (pageSize === this.dataSource.total() || pageSize == MAX_VALUE); var text = pageSize; if (selectAll) { pageSize = "all"; text = options.messages.allPages; } that.element .find(".k-pager-sizes select") .val(pageSize) .attr("aria-label", pageSize) .filter("[" + kendo.attr("role") + "=dropdownlist]") .kendoDropDownList("value", pageSize) .kendoDropDownList("text", text); // handles custom values } }, _collapsedTotal: function() { return this.dataSource.total(); }, _keydown: function(e) { if (e.keyCode === kendo.keys.ENTER) { var input = this.element.find(".k-pager-input").find("input"), page = parseInt(input.val(), 10); if (isNaN(page) || page < 1 || page > this.totalPages()) { page = this.page(); } input.val(page); this.page(page); } }, _refreshClick: function(e) { e.preventDefault(); this.dataSource.read(); }, _change: function(e) { var value = e.currentTarget.value; var pageSize = parseInt(value, 10); var dataSource = this.dataSource; if (!isNaN(pageSize)){ dataSource.pageSize(pageSize); } else if ((value + "").toLowerCase() == "all") { dataSource._pageSize = undefined; dataSource._take = undefined; dataSource._skip = 0; dataSource.fetch(); } }, _toggleActive: function() { var that = this; if (that.list.hasClass("k-state-expanded")) { DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that)); } else { DOCUMENT_ELEMENT.bind(that.downEvent, $.proxy(that._hideList, that)); } that.list.toggleClass("k-state-expanded"); }, _hideList: function(e) { var that = this, target = kendo.eventTarget(e); if (!$.contains(that.list[0], target)) { DOCUMENT_ELEMENT.unbind(that.downEvent, $.proxy(that._hideList, that)); that.list.removeClass("k-state-expanded"); } }, _click: function(e) { var target = $(e.currentTarget); e.preventDefault(); if (!target.is(".k-state-disabled")) { this.page(target.attr(kendo.attr("page"))); } }, totalPages: function() { return Math.ceil((this.dataSource.total() || 0) / (this.pageSize() || 1)); }, pageSize: function() { return this.dataSource.pageSize() || this.dataSource.total(); }, page: function(page) { if (page !== undefined) { if (this.trigger("pageChange", { index: page })) { return; } this.dataSource.page(page); this.trigger(CHANGE, { index: page }); } else { if (this.dataSource.total() > 0) { return this.dataSource.page(); } else { return 0; } } }, _getWidthSizeClass: function(width) { var that = this, sizes = SIZE.split(" "); if (!that.options.responsive) { return null; } else if (width <= 480) { return sizes[2]; } else if (width <= 640) { return sizes[1]; } else if (width <= 1024) { return sizes[0]; } return null; } }); ui.plugin(Pager); })(window.kendo.jQuery); return window.kendo; }, __webpack_require__(3)); /***/ }) /******/ });