amisa-pagination
Version:
amisa.pagination component of amisa!
76 lines (74 loc) • 16.4 kB
JavaScript
"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;