Version 3.18.1
Show:

File: paginator/js/paginator.js

            /**
             The Paginator utility allows you to display an item or a group of items
             depending on the number of items you wish to display at one time.
            
             Paginator's primary functionality is contained in `paginator-core` and is mixed
             into `paginator` to allow `paginator` to have extra functionality added to it
             while leaving the core functionality untouched. This allows `paginator-core` to
             remain available for use later on or used in isolation if it is the only piece
             you need.
            
             Due to the vast number of interfaces a paginator could possibly consist of,
             `Paginator` does not contain any ready to use UIs. However, `Paginator` is
             ready to be used in any Based-based, module such as a Widget, by extending your
             desired class and mixing in `Paginator`. This is displayed in the following
             example:
            
             <pre><code>
             YUI().use('paginator-url', 'widget', function (Y){
                 var MyPaginator = Y.Base.create('my-paginator', Y.Widget, [Y.Paginator], {
            
                    renderUI: function () {
                        var numbers = '',
                            i, numberOfPages = this.get('totalPages');
            
                        for (i = 1; i <= numberOfPages; i++) {
                            // use paginator-url's formatUrl method
                            numbers += '&lt;a href="' + this.formatUrl(i) + '">' + i + '&lt;/a>';
                        }
            
                        this.get('boundingBox').append(numbers);
                    },
            
                    bindUI: function () {
                        this.get('boundingBox').delegate('click', function (e) {
                            // let's not go to the page, just update internally
                            e.preventDefault();
                            this.set('page', parseInt(e.currentTarget.getContent(), 10));
                        }, 'a', this);
            
                        this.after('pageChange', function (e) {
                            // mark the link selected when it's the page being displayed
                            var bb = this.get('boundingBox'),
                                activeClass = 'selected';
            
                            bb.all('a').removeClass(activeClass).item(e.newVal).addClass(activeClass);
                        });
                    }
            
                 });
            
                 var myPg = new MyPaginator({
                                totalItems: 100,
                                pageUrl: '?pg={page}'
                            });
            
                 myPg.render();
             });
             </code></pre>
            
             @module paginator
             @main paginator
             @class Paginator
             @constructor
             @since 3.11.0
             */
            
            Y.Paginator = Y.mix(
                Y.Base.create('paginator', Y.Base, [Y.Paginator.Core]),
                Y.Paginator
            );