mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-07 22:52:39 +00:00
pagination controls render separately
This commit is contained in:
@@ -75,6 +75,32 @@ const ArchivePage = createClass({
|
|||||||
window.history.replaceState(null, null, url);
|
window.history.replaceState(null, null, url);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
renderPaginationControls() {
|
||||||
|
const { title, brewCollection, page, totalPages, error } = this.state;
|
||||||
|
const pages = new Array(totalPages).fill().map((_, index) => (
|
||||||
|
<li key={index} className={`pageNumber ${page === index + 1 ? 'currentPage' : ''}`} onClick={() => this.loadPage(index+1)}>{index + 1}</li>
|
||||||
|
));
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="paginationControls">
|
||||||
|
{page > 1 && (
|
||||||
|
<button
|
||||||
|
className="previousPage"
|
||||||
|
onClick={() => this.loadPage(page - 1)}
|
||||||
|
>
|
||||||
|
<<
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
<ol className='pages'>{pages}</ol>
|
||||||
|
{page < totalPages && (
|
||||||
|
<button className="nextPage" onClick={() => this.loadPage(page + 1)}>
|
||||||
|
>>
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
renderFoundBrews() {
|
renderFoundBrews() {
|
||||||
const { title, brewCollection, page, totalPages, error } = this.state;
|
const { title, brewCollection, page, totalPages, error } = this.state;
|
||||||
|
|
||||||
@@ -102,15 +128,7 @@ const ArchivePage = createClass({
|
|||||||
{brewCollection.map((brew, index)=>(
|
{brewCollection.map((brew, index)=>(
|
||||||
<BrewItem brew={brew} key={index} reportError={this.props.reportError} />
|
<BrewItem brew={brew} key={index} reportError={this.props.reportError} />
|
||||||
))}
|
))}
|
||||||
<div className='paginationControls'>
|
{this.renderPagination()}
|
||||||
{page > 1 && (
|
|
||||||
<button className='previousPage' onClick={()=>this.loadPage(page - 1)}>Previous Page</button>
|
|
||||||
)}
|
|
||||||
<span className='currentPage'>Page {page}</span>
|
|
||||||
{page < totalPages && (
|
|
||||||
<button className='nextPage' onClick={()=>this.loadPage(page + 1)}>Next Page</button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -166,28 +166,49 @@ body {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
translate: -50%;
|
translate: -50%;
|
||||||
width: 500px;
|
width: auto;
|
||||||
display: grid;
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
grid-template-areas: "previousPage currentPage nextPage";
|
grid-template-areas: "previousPage currentPage nextPage";
|
||||||
|
grid-template-columns: 50px 1fr 50px;
|
||||||
|
|
||||||
.currentPage {
|
.pages {
|
||||||
grid-area: currentPage;
|
grid-area: currentPage;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: block;
|
display: flex;
|
||||||
|
justify-content:space-evenly;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: white;
|
|
||||||
font-family: Open Sans;
|
|
||||||
font-weight: 900;
|
|
||||||
padding: 5px 8px;
|
padding: 5px 8px;
|
||||||
|
|
||||||
|
.pageNumber {
|
||||||
|
color: white;
|
||||||
|
font-family: Open Sans;
|
||||||
|
font-weight: 900;
|
||||||
|
text-underline-position: under;
|
||||||
|
margin-inline:10px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&.currentPage {
|
||||||
|
color:gold;
|
||||||
|
text-decoration:underline;
|
||||||
|
pointer-events:none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
width:max-content;
|
||||||
|
border-radius:5px;
|
||||||
|
|
||||||
|
&.previousPage {
|
||||||
|
grid-area: previousPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.nextPage {
|
||||||
|
grid-area: nextPage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
button.previousPage {
|
|
||||||
grid-area: previousPage;
|
|
||||||
}
|
|
||||||
button.nextPage {
|
|
||||||
grid-area: nextPage;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
|
|||||||
Reference in New Issue
Block a user