{{- $validFormats := slice "default" "terse" }} {{- $msg1 := "When passing a map to the internal pagination template, one of the elements must be named 'page', and it must be set to the context of the current page." }} {{- $msg2 := "The 'format' specified in the map passed to the internal pagination template is invalid. Valid choices are: %s." }} {{- $page := . }} {{- $format := "default" }} {{- if reflect.IsMap . }} {{- with .page }} {{- $page = . }} {{- else }} {{- errorf $msg1 }} {{- end }} {{- with .format }} {{- $format = lower . }} {{- end }} {{- end }} {{- if in $validFormats $format }} {{- if gt $page.Paginator.TotalPages 1 }} <ul class="pagination pagination-{{ $format }}"> {{- partial (printf "partials/inline/pagination/%s" $format) $page }} </ul> {{- end }} {{- else }} {{- errorf $msg2 (delimit $validFormats ", ") }} {{- end -}} {{/* --------------------------------------------------------------------- */}} {{- define "partials/inline/pagination/default" }} {{- with .Paginator }} {{- $currentPageNumber := .PageNumber }} {{- with .First }} {{- if ne $currentPageNumber .PageNumber }} <li class="page-item"> <a href="{{ .URL }}" aria-label="First" class="page-link"><span aria-hidden="true">⇚</span></a> </li> {{- else }} <li class="page-item disabled"> <a aria-disabled="true" aria-label="First" class="page-link" tabindex="-1"><span aria-hidden="true">⇚</span></a> </li> {{- end }} {{- end }} {{- with .Prev }} <li class="page-item"> <a href="{{ .URL }}" aria-label="Previous" class="page-link"><span aria-hidden="true">←</span></a> </li> {{- else }} <li class="page-item disabled"> <a aria-disabled="true" aria-label="Previous" class="page-link" tabindex="-1"><span aria-hidden="true">←</span></a> </li> {{- end }} {{- $slots := 5 }} {{- $start := math.Max 1 (sub .PageNumber (math.Floor (div $slots 2))) }} {{- $end := math.Min .TotalPages (sub (add $start $slots) 1) }} {{- if lt (add (sub $end $start) 1) $slots }} {{- $start = math.Max 1 (add (sub $end $slots) 1) }} {{- end }} {{- range $k := seq $start $end }} {{- if eq $.Paginator.PageNumber $k }} <li class="page-item active"> [{{ $k }}] </li> {{- else }} <li class="page-item"> <a href="{{ (index $.Paginator.Pagers (sub $k 1)).URL }}" aria-label="Page {{ $k }}" class="page-link">{{ $k }}</a> </li> {{- end }} {{- end }} {{- with .Next }} <li class="page-item"> <a href="{{ .URL }}" aria-label="Next" class="page-link"><span aria-hidden="true">→</span></a> </li> {{- else }} <li class="page-item disabled"> <a aria-disabled="true" aria-label="Next" class="page-link" tabindex="-1"><span aria-hidden="true">→</span></a> </li> {{- end }} {{- with .Last }} {{- if ne $currentPageNumber .PageNumber }} <li class="page-item"> <a href="{{ .URL }}" aria-label="Last" class="page-link"><span aria-hidden="true">⇛</span></a> </li> {{- else }} <li class="page-item disabled"> <a aria-disabled="true" aria-label="Last" class="page-link" tabindex="-1"><span aria-hidden="true">⇛</span></a> </li> {{- end }} {{- end }} {{- end }} {{- end -}}