UNPKG

amisa-pagination

Version:

amisa.pagination component of amisa!

76 lines (74 loc) 16.4 kB
"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __publicField=(obj,key,value)=>(__defNormalProp(obj,typeof key!="symbol"?key+"":key,value),value),__accessCheck=(obj,member,msg)=>{if(!member.has(obj))throw TypeError("Cannot "+msg)};var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>{if(member.has(obj))throw TypeError("Cannot add the same private member more than once");member instanceof WeakSet?member.add(obj):member.set(obj,value)},__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value);var __privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var _styleElement;class PaginationStyleManager{constructor(paginationManager){__privateAdd(this,_styleElement,void 0);this.paginationManager=paginationManager,__privateSet(this,_styleElement,document.createElement("style")),__privateGet(this,_styleElement).textContent=` nav { width: 100%; padding-top:3px; padding-bottom:3px; display: block; } ul { display: flex; align-items: center; justify-content: center; padding-left: 0; list-style: none; border-radius: 0.25rem; margin-top: 0.1rem; margin-bottom: 0.1rem; } ul > li:first-child > button { margin-right: 0; border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem; } ul > li:last-child > button { border-top-left-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } button.separator { display: block; padding: 0.4rem 0.6rem; margin-left: -1px; color: #6c757d; pointer-events: none; cursor: auto; background-color: #2c343f; border: 1px solid #dee2e6; border-radius: 0; } button { display: block; padding: 0.4rem 0.6rem; margin-left: -1px; color: rgba(255, 255, 255, 0.7); background-color: #2c343f; border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 0; min-width: 38px; } button:disabled { color: #6c757d; pointer-events: none; cursor: auto; background-color: #2c343f; border-color: rgba(255, 255, 255, 0.2); }button.active { z-index: 1; color: #1e2b41; background-color: rgba(255, 255, 255, 0.7); border-color: rgba(255, 255, 255, 0.2); } button:hover:not(.active) { color: #0056b3; text-decoration: none; background-color: #e9ecef; border-color: rgba(255, 255, 255, 0.2); } button:focus { z-index: 2; outline: 0; box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); } button:not(:disabled):not(.disabled) { cursor: pointer; } `}get styleElement(){return __privateGet(this,_styleElement)}}_styleElement=new WeakMap;var _navElement,_ulElement;class PaginationNavManager{constructor(paginationManager){__privateAdd(this,_navElement,void 0);__privateAdd(this,_ulElement,void 0);__publicField(this,"remove",()=>{});__publicField(this,"create",()=>{__privateGet(this,_navElement).classList.add("pagination"),this.initialize(),__privateGet(this,_navElement).appendChild(this.paginationManager.paginationStyleManager.styleElement),__privateGet(this,_navElement).appendChild(__privateGet(this,_ulElement))});__publicField(this,"initialize",()=>{this.paginationManager.pagesManager.previousPageManager.refresh(),__privateGet(this,_ulElement).appendChild(this.paginationManager.pagesManager.previousPageManager.liElement),this.paginationManager.pagesManager.pagesButton.forEach(element=>{__privateGet(this,_ulElement).appendChild(element.liElement)}),this.paginationManager.pagesManager.nextPageManager.refresh(),__privateGet(this,_ulElement).appendChild(this.paginationManager.pagesManager.nextPageManager.liElement)});__publicField(this,"refresh",()=>{this.paginationManager.pagesManager.refresh(),this.initialize()});this.paginationManager=paginationManager,__privateSet(this,_navElement,document.createElement("nav")),__privateGet(this,_navElement).style.userSelect="none",__privateSet(this,_ulElement,document.createElement("ul")),this.create()}get navElement(){return __privateGet(this,_navElement)}get ulElement(){return __privateGet(this,_ulElement)}}_navElement=new WeakMap,_ulElement=new WeakMap;var _liElement,_buttonElement,_onClick;class PageButtonManagerBase{constructor(paginationManager){__privateAdd(this,_liElement,void 0);__privateAdd(this,_buttonElement,void 0);__publicField(this,"refresh",()=>{__privateGet(this,_buttonElement).disabled=this.disabled,__privateGet(this,_buttonElement).textContent=this.caption,typeof this.pageNumber=="number"&&this.pageNumber===this.paginationManager.currentPage&&__privateGet(this,_buttonElement).classList.add("active")});__publicField(this,"remove",()=>{this.liElement.remove()});__privateAdd(this,_onClick,e=>{e.preventDefault(),this.onClick()});this.paginationManager=paginationManager,__privateSet(this,_liElement,document.createElement("li")),__privateSet(this,_buttonElement,document.createElement("button")),__privateGet(this,_liElement).appendChild(__privateGet(this,_buttonElement)),__privateGet(this,_buttonElement).addEventListener("click",__privateGet(this,_onClick))}get liElement(){return __privateGet(this,_liElement)}get buttonElement(){return __privateGet(this,_buttonElement)}}_liElement=new WeakMap,_buttonElement=new WeakMap,_onClick=new WeakMap;class NextPageManager extends PageButtonManagerBase{get disabled(){return this.paginationManager.currentPage>=this.paginationManager.totalPages}get caption(){return"بعد"}get pageNumber(){}constructor(paginationManager){super(paginationManager),this.refresh()}onClick(){this.paginationManager.currentPage<this.paginationManager.totalPages&&this.paginationManager.setActivePage(this.paginationManager.currentPage+1)}}class PageButtonNumberManager extends PageButtonManagerBase{constructor(paginationManager,pageNumber){super(paginationManager),this.pageNumber=pageNumber,this.refresh()}get disabled(){return!1}get caption(){var _a;return((_a=this.pageNumber)==null?void 0:_a.toString())||"??"}onClick(){this.paginationManager.setActivePage(this.pageNumber)}}class PageButtonSeperatorManager extends PageButtonManagerBase{get disabled(){return!0}get caption(){return"..."}get pageNumber(){}constructor(paginationManager){super(paginationManager),this.buttonElement.classList.add("separator"),this.refresh()}onClick(){}}class PreviousPageManager extends PageButtonManagerBase{get disabled(){return this.paginationManager.currentPage===1}get caption(){return"قبل"}get pageNumber(){}constructor(paginationManager){super(paginationManager),this.refresh()}onClick(){this.paginationManager.currentPage>1&&this.paginationManager.setActivePage(this.paginationManager.currentPage-1)}}var _totalPages,totalPages_get,_currentPage,currentPage_get,_previousPageManager,_nextPageManager,_pages,_initializeLessThan11,_initializeLessThan16,initializeLessThan16_fn,_initializeLessThan16To8,initializeLessThan16To8_fn,_initializeLessThan16MoreThan8,initializeLessThan16MoreThan8_fn,_initializeMoreThan15;class PagesManager{constructor(paginationManager){__privateAdd(this,_totalPages);__privateAdd(this,_currentPage);__privateAdd(this,_initializeLessThan16);__privateAdd(this,_initializeLessThan16To8);__privateAdd(this,_initializeLessThan16MoreThan8);__privateAdd(this,_previousPageManager,void 0);__privateAdd(this,_nextPageManager,void 0);__privateAdd(this,_pages,[]);__publicField(this,"initialize",()=>{__privateSet(this,_pages,[]),this.paginationManager.totalPages<11?__privateGet(this,_initializeLessThan11).call(this):this.paginationManager.totalPages<16?__privateMethod(this,_initializeLessThan16,initializeLessThan16_fn).call(this):__privateGet(this,_initializeMoreThan15).call(this)});__privateAdd(this,_initializeLessThan11,()=>{for(let page=1;page<=this.paginationManager.totalPages;page++)__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,page))});__privateAdd(this,_initializeMoreThan15,()=>{if(__privateGet(this,_currentPage,currentPage_get)<5)__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,2)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,3)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,4)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,5)),__privateGet(this,_pages).push(new PageButtonSeperatorManager(this.paginationManager)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-2)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-0));else if(__privateGet(this,_currentPage,currentPage_get)>4&&__privateGet(this,_currentPage,currentPage_get)<__privateGet(this,_totalPages,totalPages_get)-3)__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,2)),__privateGet(this,_pages).push(new PageButtonSeperatorManager(this.paginationManager)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_currentPage,currentPage_get)-1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_currentPage,currentPage_get)-0)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_currentPage,currentPage_get)+1)),__privateGet(this,_pages).push(new PageButtonSeperatorManager(this.paginationManager)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-0));else if(__privateGet(this,_currentPage,currentPage_get)>=this.totalPages_3&&__privateGet(this,_currentPage,currentPage_get)<=__privateGet(this,_totalPages,totalPages_get))__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,2)),__privateGet(this,_pages).push(new PageButtonSeperatorManager(this.paginationManager)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-5)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-4)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-3)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-2)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-0));else throw new Error(`Total page : '${__privateGet(this,_totalPages,totalPages_get)}' Current Page: '${__privateGet(this,_currentPage,currentPage_get)}'`)});__publicField(this,"refresh",()=>{__privateGet(this,_previousPageManager).remove(),__privateGet(this,_pages).forEach(button=>{button.liElement.remove()}),__privateGet(this,_nextPageManager).remove(),this.initialize()});this.paginationManager=paginationManager,__privateSet(this,_previousPageManager,new PreviousPageManager(this.paginationManager)),__privateSet(this,_nextPageManager,new NextPageManager(this.paginationManager))}get previousPageManager(){return __privateGet(this,_previousPageManager)}get nextPageManager(){return __privateGet(this,_nextPageManager)}get pagesButton(){return __privateGet(this,_pages)}get totalPages_3(){return __privateGet(this,_totalPages,totalPages_get)-3}}_totalPages=new WeakSet,totalPages_get=function(){return this.paginationManager.totalPages},_currentPage=new WeakSet,currentPage_get=function(){return this.paginationManager.currentPage},_previousPageManager=new WeakMap,_nextPageManager=new WeakMap,_pages=new WeakMap,_initializeLessThan11=new WeakMap,_initializeLessThan16=new WeakSet,initializeLessThan16_fn=function(){__privateGet(this,_currentPage,currentPage_get)<8?__privateMethod(this,_initializeLessThan16To8,initializeLessThan16To8_fn).call(this):__privateMethod(this,_initializeLessThan16MoreThan8,initializeLessThan16MoreThan8_fn).call(this)},_initializeLessThan16To8=new WeakSet,initializeLessThan16To8_fn=function(){for(let pageNumber=1;pageNumber<=8;pageNumber++)__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,pageNumber));__privateGet(this,_pages).push(new PageButtonSeperatorManager(this.paginationManager)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)-1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,__privateGet(this,_totalPages,totalPages_get)))},_initializeLessThan16MoreThan8=new WeakSet,initializeLessThan16MoreThan8_fn=function(){__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,1)),__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,2)),__privateGet(this,_pages).push(new PageButtonSeperatorManager(this.paginationManager));for(let pageNumber=__privateGet(this,_totalPages,totalPages_get)-8;pageNumber<=__privateGet(this,_totalPages,totalPages_get);pageNumber++)__privateGet(this,_pages).push(new PageButtonNumberManager(this.paginationManager,pageNumber))},_initializeMoreThan15=new WeakMap;var _paginationNavManager,_paginationStyleManager,_pagesManager,_currentPage2,_totalPages2,_triggerEvents,_events;class PaginationManager{constructor(){__privateAdd(this,_paginationNavManager,void 0);__privateAdd(this,_paginationStyleManager,void 0);__privateAdd(this,_pagesManager,void 0);__privateAdd(this,_currentPage2,1);__privateAdd(this,_totalPages2,1);__publicField(this,"setActivePage",newPageNumber=>{__privateGet(this,_triggerEvents).call(this,"onCurrentPageChange",newPageNumber,__privateGet(this,_currentPage2)),__privateSet(this,_currentPage2,newPageNumber),__privateGet(this,_paginationNavManager).refresh()});__publicField(this,"setData",(totalPages,currentPage)=>{__privateSet(this,_totalPages2,totalPages||1),__privateSet(this,_currentPage2,currentPage||1),this.refresh()});__publicField(this,"refresh",()=>{__privateGet(this,_paginationNavManager).refresh()});__privateAdd(this,_triggerEvents,async(eventName,newPageNumber,oldPageNumber)=>{__privateGet(this,_events).filter(i=>i[0]===eventName).forEach(async eventData=>{eventData[1](newPageNumber,oldPageNumber)})});__publicField(this,"addEventListener",(eventName,eventCallBackFunction)=>{__privateGet(this,_events).push([eventName,eventCallBackFunction])});__privateAdd(this,_events,[]);__privateSet(this,_pagesManager,new PagesManager(this)),__privateSet(this,_paginationStyleManager,new PaginationStyleManager(this)),__privateSet(this,_paginationNavManager,new PaginationNavManager(this))}get paginationNavManager(){return __privateGet(this,_paginationNavManager)}get paginationStyleManager(){return __privateGet(this,_paginationStyleManager)}get pagesManager(){return __privateGet(this,_pagesManager)}get navElement(){return __privateGet(this,_paginationNavManager).navElement}get currentPage(){return __privateGet(this,_currentPage2)}get totalPages(){return __privateGet(this,_totalPages2)}}_paginationNavManager=new WeakMap,_paginationStyleManager=new WeakMap,_pagesManager=new WeakMap,_currentPage2=new WeakMap,_totalPages2=new WeakMap,_triggerEvents=new WeakMap,_events=new WeakMap;exports.PaginationManager=PaginationManager;