all files / pager/ numeric-container.js

100% Statements 148/148
93.02% Branches 40/43
100% Functions 21/21
100% Lines 148/148
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249   168×   165× 165× 165× 165×   558× 558× 558×   558×   167× 167× 167× 167× 167× 167× 1477×         1477× 153×   1477×   167× 167×   165×   135×   135×   165×     165× 165× 165× 165× 165× 165×   165×               165×               165×   165× 165×                   165× 165×   165× 165×                   165× 165×   165×               165×               165×   21× 21× 21× 21× 17× 17×   21×   558× 558× 558× 558× 558×   558× 558×   558× 4952× 4952× 955× 955× 955× 955× 693×     262×       3997× 3997×   4952×   558× 558× 558× 558× 558× 558× 558× 558× 558× 558×   558× 558× 558× 558× 558× 558×     558× 558× 558× 558× 558× 70× 70× 70× 70×     488× 488× 488× 488×     558× 38×     520×     558× 558× 558× 500×     58×     558× 558× 558× 558× 558× 558× 354× 354× 354× 354×     204× 204× 204× 204×          
define(["require", "exports", "@syncfusion/ej2-base", "@syncfusion/ej2-base", "@syncfusion/ej2-base"], function (require, exports, ej2_base_1, ej2_base_2, ej2_base_3) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var NumericContainer = (function () {
        function NumericContainer(pagerModule) {
            this.pagerModule = pagerModule;
        }
        NumericContainer.prototype.render = function () {
            this.pagerElement = this.pagerModule.element;
            this.renderNumericContainer();
            this.refreshNumericLinks();
            this.wireEvents();
        };
        NumericContainer.prototype.refresh = function () {
            this.pagerModule.updateTotalPages();
            Eif (this.links.length) {
                this.updateLinksHtml();
            }
            this.updateStyles();
        };
        NumericContainer.prototype.refreshNumericLinks = function () {
            var link;
            var pagerObj = this.pagerModule;
            var div = pagerObj.element.querySelector('.e-numericcontainer');
            var frag = document.createDocumentFragment();
            div.innerHTML = '';
            for (var i = 1; i <= pagerObj.pageCount; i++) {
                link = ej2_base_3.createElement('a', {
                    className: 'e-link e-numericitem e-spacing e-pager-default',
                    attrs: { role: 'link', tabindex: '-1', 'aria-label': 'Goto Page ' + i,
                        href: 'javascript:void(0);', name: 'Goto page' + i }
                });
                if (pagerObj.currentPage === i) {
                    ej2_base_3.classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);
                }
                frag.appendChild(link);
            }
            div.appendChild(frag);
            this.links = [].slice.call(div.childNodes);
        };
        NumericContainer.prototype.wireEvents = function () {
            ej2_base_2.EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);
        };
        NumericContainer.prototype.unwireEvents = function () {
            ej2_base_2.EventHandler.remove(this.pagerElement, 'click', this.clickHandler);
        };
        NumericContainer.prototype.destroy = function () {
            this.unwireEvents();
        };
        NumericContainer.prototype.renderNumericContainer = function () {
            this.element = ej2_base_3.createElement('div', {
                className: 'e-pagercontainer', attrs: { 'role': 'navigation' }
            });
            this.renderFirstNPrev(this.element);
            this.renderPrevPagerSet(this.element);
            this.element.appendChild(ej2_base_3.createElement('div', { className: 'e-numericcontainer' }));
            this.renderNextPagerSet(this.element);
            this.renderNextNLast(this.element);
            this.pagerModule.element.appendChild(this.element);
        };
        NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {
            this.first = ej2_base_3.createElement('div', {
                className: 'e-first e-icons e-icon-first',
                attrs: {
                    title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),
                    'aria-label': this.pagerModule.getLocalizedLabel('firstPageTooltip'),
                    tabindex: '-1'
                }
            });
            this.prev = ej2_base_3.createElement('div', {
                className: 'e-prev e-icons e-icon-prev',
                attrs: {
                    title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),
                    'aria-label': this.pagerModule.getLocalizedLabel('previousPageTooltip'),
                    tabindex: '-1'
                }
            });
            ej2_base_3.append([this.first, this.prev], pagerContainer);
        };
        NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {
            var prevPager = ej2_base_3.createElement('div');
            this.PP = ej2_base_3.createElement('a', {
                className: 'e-link e-pp e-spacing', innerHTML: '...',
                attrs: {
                    title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',
                    'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),
                    tabindex: '-1',
                    name: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),
                    href: 'javascript:void(0);'
                }
            });
            prevPager.appendChild(this.PP);
            pagerContainer.appendChild(prevPager);
        };
        NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {
            var nextPager = ej2_base_3.createElement('div');
            this.NP = ej2_base_3.createElement('a', {
                className: 'e-link e-np e-spacing',
                innerHTML: '...', attrs: {
                    title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',
                    'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),
                    tabindex: '-1',
                    name: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),
                    href: 'javascript:void(0);'
                }
            });
            nextPager.appendChild(this.NP);
            pagerContainer.appendChild(nextPager);
        };
        NumericContainer.prototype.renderNextNLast = function (pagerContainer) {
            this.next = ej2_base_3.createElement('div', {
                className: 'e-next e-icons e-icon-next',
                attrs: {
                    title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),
                    'aria-label': this.pagerModule.getLocalizedLabel('nextPageTooltip'),
                    tabindex: '-1'
                }
            });
            this.last = ej2_base_3.createElement('div', {
                className: 'e-last e-icons e-icon-last',
                attrs: {
                    title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),
                    'aria-label': this.pagerModule.getLocalizedLabel('lastPageTooltip'),
                    tabindex: '-1'
                }
            });
            ej2_base_3.append([this.next, this.last], pagerContainer);
        };
        NumericContainer.prototype.clickHandler = function (e) {
            var pagerObj = this.pagerModule;
            var target = e.target;
            pagerObj.previousPageNo = pagerObj.currentPage;
            if (!target.classList.contains('e-disable') && !ej2_base_1.isNullOrUndefined(target.getAttribute('index'))) {
                pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);
                pagerObj.dataBind();
            }
            return false;
        };
        NumericContainer.prototype.updateLinksHtml = function () {
            var pagerObj = this.pagerModule;
            var currentPageSet;
            var pageNo;
            pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;
            if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {
                pagerObj.currentPage = pagerObj.totalPages;
            }
            currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);
            if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {
                currentPageSet = currentPageSet - 1;
            }
            for (var i = 0; i < pagerObj.pageCount; i++) {
                pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;
                if (pageNo <= pagerObj.totalPages) {
                    this.links[i].style.display = '';
                    this.links[i].setAttribute('index', pageNo.toString());
                    this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;
                    if (pagerObj.currentPage !== pageNo) {
                        this.links[i].classList.add('e-pager-default');
                    }
                    else {
                        this.links[i].classList.remove('e-pager-default');
                    }
                }
                else {
                    this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;
                    this.links[i].style.display = 'none';
                }
                ej2_base_3.classList(this.links[i], [], ['e-currentitem', 'e-active']);
            }
            this.first.setAttribute('index', '1');
            this.last.setAttribute('index', pagerObj.totalPages.toString());
            this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());
            this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());
            this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');
            this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());
            this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());
            this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());
            this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());
            this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());
        };
        NumericContainer.prototype.updateStyles = function () {
            this.updateFirstNPrevStyles();
            this.updatePrevPagerSetStyles();
            this.updateNextPagerSetStyles();
            this.updateNextNLastStyles();
            Eif (this.links.length) {
                ej2_base_3.classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);
            }
        };
        NumericContainer.prototype.updateFirstNPrevStyles = function () {
            var firstPage = ['e-firstpage', 'e-pager-default'];
            var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];
            var prevPage = ['e-prevpage', 'e-pager-default'];
            var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];
            if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {
                ej2_base_3.classList(this.prev, prevPage, prevPageDisabled);
                ej2_base_3.classList(this.first, firstPage, firstPageDisabled);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);
            }
            else {
                ej2_base_3.classList(this.prev, prevPageDisabled, prevPage);
                ej2_base_3.classList(this.first, firstPageDisabled, firstPage);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);
            }
        };
        NumericContainer.prototype.updatePrevPagerSetStyles = function () {
            if (this.pagerModule.currentPage > this.pagerModule.pageCount) {
                ej2_base_3.classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);
            }
            else {
                ej2_base_3.classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);
            }
        };
        NumericContainer.prototype.updateNextPagerSetStyles = function () {
            var pagerObj = this.pagerModule;
            var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');
            if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {
                ej2_base_3.classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);
            }
            else {
                ej2_base_3.classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);
            }
        };
        NumericContainer.prototype.updateNextNLastStyles = function () {
            var lastPage = ['e-lastpage', 'e-pager-default'];
            var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];
            var nextPage = ['e-nextpage', 'e-pager-default'];
            var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];
            var pagerObj = this.pagerModule;
            if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {
                ej2_base_3.classList(this.last, lastPageDisabled, lastPage);
                ej2_base_3.classList(this.next, nextPageDisabled, nextPage);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);
            }
            else {
                ej2_base_3.classList(this.last, lastPage, lastPageDisabled);
                ej2_base_3.classList(this.next, nextPage, nextPageDisabled);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);
                ej2_base_3.classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);
            }
        };
        return NumericContainer;
    }());
    exports.NumericContainer = NumericContainer;
});