@@ -15,58 +15,6 @@ export class CommentPagination extends LitElement {
1515 return Math . ceil ( this . total / this . size ) ;
1616 }
1717
18- renderPageNumbers ( ) {
19- const pageNumbers = [ ] ;
20- const currentPage = this . page ;
21- const totalPageNumbersToShow = 3 ;
22- let startPage : number ;
23- let endPage : number ;
24-
25- if ( this . totalPages <= totalPageNumbersToShow ) {
26- startPage = 1 ;
27- endPage = this . totalPages ;
28- } else {
29- if ( currentPage <= 3 ) {
30- startPage = 1 ;
31- endPage = totalPageNumbersToShow ;
32- } else if ( currentPage + 2 >= this . totalPages ) {
33- startPage = this . totalPages - ( totalPageNumbersToShow - 1 ) ;
34- endPage = this . totalPages ;
35- } else {
36- startPage = currentPage - 2 ;
37- endPage = currentPage + 2 ;
38- }
39- }
40-
41- if ( startPage > 1 ) {
42- pageNumbers . push ( 1 ) ;
43- if ( startPage > 2 ) pageNumbers . push ( '...' ) ;
44- }
45-
46- for ( let i = startPage ; i <= endPage ; i ++ ) {
47- pageNumbers . push ( i ) ;
48- }
49-
50- if ( endPage < this . totalPages ) {
51- if ( endPage < this . totalPages - 1 ) pageNumbers . push ( '...' ) ;
52- pageNumbers . push ( this . totalPages ) ;
53- }
54-
55- return pageNumbers . map ( ( number ) => {
56- if ( number === '...' ) {
57- return html `<li class= "px-3.5 inline-flex items-center justify-center" >
58- <i class= "i-tabler:dots size-4" aria-hidden = "true" > </ i>
59- </ li> ` ;
60- } else {
61- return html `<li>
62- <butto n class= "pagination-button px-3.5 ${ this . page === number ? 'bg-muted-3' : '' } " @click = ${ ( ) => this . gotoPage ( number ) } ?dis abled= ${ number === this . page } >
63- ${ number }
64- </ butto n>
65- </ li> ` ;
66- }
67- } ) ;
68- }
69-
7018 gotoPage ( page : number | string ) {
7119 if ( page !== this . page ) {
7220 this . dispatchEvent (
@@ -81,7 +29,7 @@ export class CommentPagination extends LitElement {
8129
8230 override render ( ) {
8331 return html `
84- <ul class= "pagination flex items-center gap-2 " role = "navigation">
32+ <ul class= "pagination flex items-center gap-4 " role = "navigation" >
8533 <li>
8634 <butto n
8735 rel= "prev"
@@ -94,7 +42,12 @@ export class CommentPagination extends LitElement {
9442 ${ msg ( 'Previous' ) }
9543 </ butto n>
9644 </ li>
97- ${ this . renderPageNumbers ( ) }
45+ <li class= "inline-flex items-center gap-1 text-sm text-text-3 hover:text-text-1 transition-all" >
46+ <select name= "pagination-value" id = "pagination-value" class = "pagination-select appearance-none outline-none bg-transparent" @change = ${ ( e : Event ) => this . gotoPage ( ( e . target as HTMLSelectElement ) . value ) } >
47+ ${ Array . from ( { length : this . totalPages } , ( _ , i ) => i + 1 ) . map ( ( page ) => html `<option .selected = ${ page === this . page } value= ${ page } > ${ page } / ${ this . totalPages } </ option> ` ) }
48+ </ select>
49+ <i class= "i-tabler:chevron-down size-4" aria-hidden = "true" > </ i>
50+ </ li>
9851 <li>
9952 <butto n
10053 rel= "next"
0 commit comments