{{- $validFormats := slice "default" "terse" }} {{- $validAlignments := slice "begin" "center" "end" }} {{- $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." }} {{- $msg3 := "The 'align' specified in the map passed to the internal pagination template is invalid. Valid choices are: %s." }} {{- $page := . }} {{- $format := "default" }} {{- $align := "begin" }} {{- if reflect.IsMap . }} {{- with .page }} {{- $page = . }} {{- else }} {{- errorf $msg1 }} {{- end }} {{- with .format }} {{- $format = lower . }} {{- end }} {{- with .align }} {{- $align = lower . }} {{- end }} {{- end }} {{- $alignments := (dict "left" "" "center" "justify-content-center" "end" "justify-content-end") }} {{- if not (in $validFormats $format) }} {{- errorf $msg2 (delimit $validFormats ", ") }} {{- else if not (in $validFormats $format) }} {{- errorf $msg3 (delimit $validAlignments ", ") }} {{- else }} {{- if gt $page.Paginator.TotalPages 1 }} {{- end }} {{- end -}} {{/* Format: default {{/* --------------------------------------------------------------------- */}} {{- define "partials/pagination/default" }} {{- with .Paginator }} {{- $currentPageNumber := .PageNumber }} {{- with .First }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- else }}
  • {{- end }} {{- end }} {{- with .Prev }}
  • {{- else }}
  • {{- 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 }}
  • {{ $k }}
  • {{- else }}
  • {{ $k }}
  • {{- end }} {{- end }} {{- with .Next }}
  • {{- else }}
  • {{- end }} {{- with .Last }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- else }}
  • {{- end }} {{- end }} {{- end }} {{- end -}} {{/* Format: terse {{/* --------------------------------------------------------------------- */}} {{- define "partials/pagination/terse" }} {{- with .Paginator }} {{- $currentPageNumber := .PageNumber }} {{- with .First }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- end }} {{- end }} {{- with .Prev }}
  • {{- end }} {{- $slots := 3 }} {{- $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 }}
  • {{ $k }}
  • {{- else }}
  • {{ $k }}
  • {{- end }} {{- end }} {{- with .Next }}
  • {{- end }} {{- with .Last }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- end }} {{- end }} {{- end }} {{- end -}}