mirror of
https://github.com/maikka39/Personal-Website.git
synced 2026-10-02 14:46:25 +00:00
feat: improve pagination
This commit is contained in:
@@ -109,98 +109,3 @@
|
|||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.pagination {
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
&__title {
|
|
||||||
display: flex;
|
|
||||||
text-align: center;
|
|
||||||
position: relative;
|
|
||||||
margin: 20px 0;
|
|
||||||
|
|
||||||
&-h {
|
|
||||||
text-align: center;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 5px 10px;
|
|
||||||
background: $light-background;
|
|
||||||
color: $light-color-secondary;
|
|
||||||
font-size: 0.8rem;
|
|
||||||
text-transform: uppercase;
|
|
||||||
text-decoration: none;
|
|
||||||
letter-spacing: 0.1em;
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
.dark-theme & {
|
|
||||||
background: $dark-background;
|
|
||||||
color: $dark-color-secondary;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 100%;
|
|
||||||
margin-top: 15px;
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__buttons {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
position: relative;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background: $light-background-secondary;
|
|
||||||
font-size: 1rem;
|
|
||||||
font-weight: 600;
|
|
||||||
border-radius: 8px;
|
|
||||||
max-width: 40%;
|
|
||||||
padding: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
appearance: none;
|
|
||||||
|
|
||||||
.dark-theme & {
|
|
||||||
background: $dark-background-secondary;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ .button {
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: flex;
|
|
||||||
padding: 8px 16px;
|
|
||||||
text-decoration: none;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__text {
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.next .button__icon {
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.previous .button__icon {
|
|
||||||
margin-right: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -169,9 +169,19 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
a {
|
ul, ol {
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button a {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
overflow: visible;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -190,6 +200,14 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
appearance: none;
|
appearance: none;
|
||||||
|
|
||||||
|
&:disabled, &[disabled], &.disabled {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background: darken($light-background-secondary, 25%);
|
||||||
|
}
|
||||||
|
|
||||||
.dark-theme & {
|
.dark-theme & {
|
||||||
background: $dark-background-secondary;
|
background: $dark-background-secondary;
|
||||||
}
|
}
|
||||||
@@ -198,7 +216,7 @@
|
|||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
> * {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 8px 16px;
|
padding: 8px 16px;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -207,6 +225,10 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
&__text {
|
&__text {
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|||||||
@@ -10,10 +10,6 @@
|
|||||||
<div class="content content-list">{{ .Content }}</div>
|
<div class="content content-list">{{ .Content }}</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- if .Paginator.HasPrev }}
|
|
||||||
{{ partial "pagination.html" . }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
<div class="posts-list">
|
<div class="posts-list">
|
||||||
{{ range $paginator.Pages }}
|
{{ range $paginator.Pages }}
|
||||||
<div class="post">
|
<div class="post">
|
||||||
|
|||||||
@@ -1,20 +1,46 @@
|
|||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
<div class="pagination__buttons">
|
<div class="pagination__buttons">
|
||||||
{{ if .Paginator.HasPrev }}
|
{{- if .Paginator.HasPrev }}
|
||||||
<span class="button previous">
|
<span class="button previous">
|
||||||
<a href="{{ .Paginator.Prev.URL }}">
|
<a href="{{ .Paginator.Prev.URL }}">
|
||||||
<span class="button__icon">←</span>
|
<span class="button__icon">←</span>
|
||||||
<span class="button__text">Newer posts</span>
|
<span class="button__text">Previous</span>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if .Paginator.HasNext }}
|
{{- with .Paginator }}
|
||||||
|
{{- $currentPage := .PageNumber }}
|
||||||
|
{{- $totalPages := .TotalPages }}
|
||||||
|
{{- if gt $totalPages 1 }}
|
||||||
|
<ol>
|
||||||
|
{{- range .Pagers }}
|
||||||
|
{{- $isFirst := eq .PageNumber 1 }}
|
||||||
|
{{- $isLast := eq .PageNumber $totalPages }}
|
||||||
|
{{- $inWindow := and (ge .PageNumber (sub $currentPage 2)) (le .PageNumber (add $currentPage 2)) }}
|
||||||
|
{{- $showPrevEllipsis := and (gt $currentPage 4) (eq .PageNumber 2) }}
|
||||||
|
{{- $showNextEllipsis := and (lt $currentPage (sub $totalPages 3)) (eq .PageNumber (sub $totalPages 1)) }}
|
||||||
|
{{- if or $showPrevEllipsis $showNextEllipsis }}
|
||||||
|
<li class="button disabled">
|
||||||
|
<span class="button__text">…</span>
|
||||||
|
</li>
|
||||||
|
{{- else if or $isFirst $isLast $inWindow }}
|
||||||
|
<li class="button {{- if eq $currentPage .PageNumber }} disabled active{{ end }}">
|
||||||
|
<a href="{{ .URL }}">
|
||||||
|
<span class="button__text">{{ .PageNumber }}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</ol>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Paginator.HasNext }}
|
||||||
<span class="button next">
|
<span class="button next">
|
||||||
<a href="{{ .Paginator.Next.URL }}">
|
<a href="{{ .Paginator.Next.URL }}">
|
||||||
<span class="button__text">Older posts</span>
|
<span class="button__text">Next</span>
|
||||||
<span class="button__icon">→</span>
|
<span class="button__icon">→</span>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
{{ end }}
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -10,10 +10,6 @@
|
|||||||
<div class="content content-list">{{ .Content }}</div>
|
<div class="content content-list">{{ .Content }}</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{- if .Paginator.HasPrev }}
|
|
||||||
{{ partial "pagination.html" . }}
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
<div class="posts-list masonry">
|
<div class="posts-list masonry">
|
||||||
{{ range $paginator.Pages }}
|
{{ range $paginator.Pages }}
|
||||||
<div class="post">
|
<div class="post">
|
||||||
|
|||||||
Reference in New Issue
Block a user