summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assets/sass/_pagination.scss24
-rw-r--r--layouts/_default/archives.html58
-rw-r--r--layouts/_default/list.html58
-rw-r--r--layouts/_default/tag.html63
-rw-r--r--layouts/partials/fas/fa-angle-double-left.html1
-rw-r--r--layouts/partials/fas/fa-angle-double-right.html1
-rw-r--r--layouts/partials/fas/fa-angle-left.html1
-rw-r--r--layouts/partials/fas/fa-angle-right.html1
-rw-r--r--layouts/partials/fas/fa-angle-up.html1
-rw-r--r--layouts/partials/scripts.html2
10 files changed, 185 insertions, 25 deletions
diff --git a/assets/sass/_pagination.scss b/assets/sass/_pagination.scss
index 8e5d248..6c5200b 100644
--- a/assets/sass/_pagination.scss
+++ b/assets/sass/_pagination.scss
@@ -1,28 +1,26 @@
#pagination {
- font-size: $font-size-l3;
text-align: center;
// spliter between pagination and last post block
border-top: $spliter;
padding: 1em 0 1em 0;
- ul li {
+ li {
display: inline;
@include link-primary();
- // darker number when active
- &.active a {
- color: $color-primary-dark;
+ &.pag-item a {
+ vertical-align: middle;
}
- // remove prev page at first page, next page at last page
- &.disabled {
- display: none;
+ // darker number when active
+ &.pag-current a {
+ color: $color-secondary;
}
+ }
- // remove first page link and last page link
- &:first-child,
- &:last-child {
- display: none;
- }
+ svg {
+ height: 1em;
+ width: 1em;
+ vertical-align: middle;
}
} \ No newline at end of file
diff --git a/layouts/_default/archives.html b/layouts/_default/archives.html
index d4459ff..dab458f 100644
--- a/layouts/_default/archives.html
+++ b/layouts/_default/archives.html
@@ -14,9 +14,61 @@
</div>
</div>
{{ end }}
+<!-- custom smart pagination -->
+{{ $offsetLinks := 2 }}
+{{ $maxLinks := (add (mul $offsetLinks 2) 1) }}
+{{ $lowerLimit := (add $offsetLinks 1) }}
+{{ $upperLimit := (sub $paginator.TotalPages $offsetLinks) }}
{{ if gt $paginator.TotalPages 1 }}
-<div id="pagination">
- {{ template "_internal/pagination.html" . }}
-</div>
+<ul id="pagination">
+ {{ if ne $paginator.PageNumber 1 }}
+ <li class="pag-first">
+ <a href="{{ $paginator.First.URL }}">{{ partial "fas/fa-angle-double-left" . }}</a>
+ </li>
+ {{ end }}
+ {{ if $paginator.HasPrev }}
+ <li class="pag-previous">
+ <a href="{{ $paginator.Prev.URL }}">{{ partial "fas/fa-angle-left" . }}</a>
+ </li>
+ {{ end }}
+
+ {{ range $paginator.Pagers }}
+ {{ $.Scratch.Set "pageNumFlag" false }}
+ {{ if gt $paginator.TotalPages $maxLinks }}
+ {{ if le $paginator.PageNumber $lowerLimit }}
+ {{ if le .PageNumber $maxLinks }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ else if ge $paginator.PageNumber $upperLimit }}
+ {{ if gt .PageNumber (sub $paginator.TotalPages $maxLinks) }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ else }}
+ {{ if and ( ge .PageNumber (sub $paginator.PageNumber $offsetLinks) ) ( le .PageNumber (add $paginator.PageNumber $offsetLinks) ) }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ end }}
+ {{ else }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ if eq ($.Scratch.Get "pageNumFlag") true }}
+ <li class="pag-item{{ if eq . $paginator }} pag-current{{ end }}">
+ <a href="{{ .URL }}">{{ .PageNumber }}</a>
+ </li>
+ {{ end }}
+ {{ end }}
+
+ {{ if $paginator.HasNext }}
+ <li class="pag-next">
+ <a href="{{ $paginator.Next.URL }}">{{ partial "fas/fa-angle-right" . }}</a>
+ </li>
+ {{ end }}
+ {{ if ne $paginator.PageNumber $paginator.TotalPages }}
+ <li class="pag-last">
+ <a href="{{ $paginator.Last.URL }}">{{ partial "fas/fa-angle-double-right" . }}</a>
+ </li>
+ {{ end }}
+</ul>
{{ end }}
+
{{ end }} \ No newline at end of file
diff --git a/layouts/_default/list.html b/layouts/_default/list.html
index e459763..567e577 100644
--- a/layouts/_default/list.html
+++ b/layouts/_default/list.html
@@ -17,9 +17,61 @@
</div>
</div>
{{ end }}
+<!-- custom smart pagination -->
+{{ $offsetLinks := 2 }}
+{{ $maxLinks := (add (mul $offsetLinks 2) 1) }}
+{{ $lowerLimit := (add $offsetLinks 1) }}
+{{ $upperLimit := (sub $paginator.TotalPages $offsetLinks) }}
{{ if gt $paginator.TotalPages 1 }}
-<div id="pagination">
- {{ template "_internal/pagination.html" . }}
-</div>
+<ul id="pagination">
+ {{ if ne $paginator.PageNumber 1 }}
+ <li class="pag-first">
+ <a href="{{ $paginator.First.URL }}">{{ partial "fas/fa-angle-double-left" . }}</a>
+ </li>
+ {{ end }}
+ {{ if $paginator.HasPrev }}
+ <li class="pag-previous">
+ <a href="{{ $paginator.Prev.URL }}">{{ partial "fas/fa-angle-left" . }}</a>
+ </li>
+ {{ end }}
+
+ {{ range $paginator.Pagers }}
+ {{ $.Scratch.Set "pageNumFlag" false }}
+ {{ if gt $paginator.TotalPages $maxLinks }}
+ {{ if le $paginator.PageNumber $lowerLimit }}
+ {{ if le .PageNumber $maxLinks }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ else if ge $paginator.PageNumber $upperLimit }}
+ {{ if gt .PageNumber (sub $paginator.TotalPages $maxLinks) }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ else }}
+ {{ if and ( ge .PageNumber (sub $paginator.PageNumber $offsetLinks) ) ( le .PageNumber (add $paginator.PageNumber $offsetLinks) ) }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ end }}
+ {{ else }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ if eq ($.Scratch.Get "pageNumFlag") true }}
+ <li class="pag-item{{ if eq . $paginator }} pag-current{{ end }}">
+ <a href="{{ .URL }}">{{ .PageNumber }}</a>
+ </li>
+ {{ end }}
+ {{ end }}
+
+ {{ if $paginator.HasNext }}
+ <li class="pag-next">
+ <a href="{{ $paginator.Next.URL }}">{{ partial "fas/fa-angle-right" . }}</a>
+ </li>
+ {{ end }}
+ {{ if ne $paginator.PageNumber $paginator.TotalPages }}
+ <li class="pag-last">
+ <a href="{{ $paginator.Last.URL }}">{{ partial "fas/fa-angle-double-right" . }}</a>
+ </li>
+ {{ end }}
+</ul>
{{ end }}
+
{{ end }} \ No newline at end of file
diff --git a/layouts/_default/tag.html b/layouts/_default/tag.html
index 4373558..dd15f58 100644
--- a/layouts/_default/tag.html
+++ b/layouts/_default/tag.html
@@ -3,7 +3,8 @@
<span>{{ i18n "tagsCurrentTag" . }}</span>
</div>
<!-- tags page range in posts -->
-{{ range .Paginator.Pages }}
+{{ $paginator := .Paginator }}
+{{ range $paginator.Pages }}
<div id="post">
<h2 id="post-title">
<a href="{{ .Permalink }}">{{ .Title }}</a>
@@ -19,9 +20,61 @@
</div>
</div>
{{ end }}
-{{ if gt .Paginator.TotalPages 1 }}
-<div id="pagination">
- {{ template "_internal/pagination.html" . }}
-</div>
+<!-- custom smart pagination -->
+{{ $offsetLinks := 2 }}
+{{ $maxLinks := (add (mul $offsetLinks 2) 1) }}
+{{ $lowerLimit := (add $offsetLinks 1) }}
+{{ $upperLimit := (sub $paginator.TotalPages $offsetLinks) }}
+{{ if gt $paginator.TotalPages 1 }}
+<ul id="pagination">
+ {{ if ne $paginator.PageNumber 1 }}
+ <li class="pag-first">
+ <a href="{{ $paginator.First.URL }}">{{ partial "fas/fa-angle-double-left" . }}</a>
+ </li>
+ {{ end }}
+ {{ if $paginator.HasPrev }}
+ <li class="pag-previous">
+ <a href="{{ $paginator.Prev.URL }}">{{ partial "fas/fa-angle-left" . }}</a>
+ </li>
+ {{ end }}
+
+ {{ range $paginator.Pagers }}
+ {{ $.Scratch.Set "pageNumFlag" false }}
+ {{ if gt $paginator.TotalPages $maxLinks }}
+ {{ if le $paginator.PageNumber $lowerLimit }}
+ {{ if le .PageNumber $maxLinks }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ else if ge $paginator.PageNumber $upperLimit }}
+ {{ if gt .PageNumber (sub $paginator.TotalPages $maxLinks) }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ else }}
+ {{ if and ( ge .PageNumber (sub $paginator.PageNumber $offsetLinks) ) ( le .PageNumber (add $paginator.PageNumber $offsetLinks) ) }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ end }}
+ {{ else }}
+ {{ $.Scratch.Set "pageNumFlag" true }}
+ {{ end }}
+ {{ if eq ($.Scratch.Get "pageNumFlag") true }}
+ <li class="pag-item{{ if eq . $paginator }} pag-current{{ end }}">
+ <a href="{{ .URL }}">{{ .PageNumber }}</a>
+ </li>
+ {{ end }}
+ {{ end }}
+
+ {{ if $paginator.HasNext }}
+ <li class="pag-next">
+ <a href="{{ $paginator.Next.URL }}">{{ partial "fas/fa-angle-right" . }}</a>
+ </li>
+ {{ end }}
+ {{ if ne $paginator.PageNumber $paginator.TotalPages }}
+ <li class="pag-last">
+ <a href="{{ $paginator.Last.URL }}">{{ partial "fas/fa-angle-double-right" . }}</a>
+ </li>
+ {{ end }}
+</ul>
{{ end }}
+
{{ end }} \ No newline at end of file
diff --git a/layouts/partials/fas/fa-angle-double-left.html b/layouts/partials/fas/fa-angle-double-left.html
new file mode 100644
index 0000000..95887a1
--- /dev/null
+++ b/layouts/partials/fas/fa-angle-double-left.html
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-double-left" class="svg-inline--fa fa-angle-double-left fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"></path></svg> \ No newline at end of file
diff --git a/layouts/partials/fas/fa-angle-double-right.html b/layouts/partials/fas/fa-angle-double-right.html
new file mode 100644
index 0000000..998f859
--- /dev/null
+++ b/layouts/partials/fas/fa-angle-double-right.html
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-double-right" class="svg-inline--fa fa-angle-double-right fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"></path></svg> \ No newline at end of file
diff --git a/layouts/partials/fas/fa-angle-left.html b/layouts/partials/fas/fa-angle-left.html
new file mode 100644
index 0000000..39198fc
--- /dev/null
+++ b/layouts/partials/fas/fa-angle-left.html
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-left" class="svg-inline--fa fa-angle-left fa-w-8" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path fill="currentColor" d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path></svg> \ No newline at end of file
diff --git a/layouts/partials/fas/fa-angle-right.html b/layouts/partials/fas/fa-angle-right.html
new file mode 100644
index 0000000..26cb61e
--- /dev/null
+++ b/layouts/partials/fas/fa-angle-right.html
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-right" class="svg-inline--fa fa-angle-right fa-w-8" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path fill="currentColor" d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path></svg> \ No newline at end of file
diff --git a/layouts/partials/fas/fa-angle-up.html b/layouts/partials/fas/fa-angle-up.html
new file mode 100644
index 0000000..47ffb0b
--- /dev/null
+++ b/layouts/partials/fas/fa-angle-up.html
@@ -0,0 +1 @@
+<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-up" class="svg-inline--fa fa-angle-up fa-w-10" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path></svg> \ No newline at end of file
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
index eceda37..e807e36 100644
--- a/layouts/partials/scripts.html
+++ b/layouts/partials/scripts.html
@@ -49,7 +49,7 @@
trailColor: '#E5E2E4',
trailWidth: 12,
text: {
- value: '<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-up" class="svg-inline--fa fa-angle-up fa-w-10" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="currentColor" d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path></svg>',
+ value: '{{ partial "fas/fa-angle-up" . }}',
autoStyleContainer: false,
style: null
},