Pagination

Documentation and examples explaining how to use pagination component.

## Overview

Use a wrapping `<nav>` element to identify it as a navigation section to screen readers and other assistive technologies.

In addition, as pages likely have more than one such navigation section, it's advisable to provide a descriptive `aria-label` for the `<nav>` to reflect its purpose. For example, if the pagination component is used to navigate between a set of search results, an appropriate label could be `aria-label="Search results pages"`.

      <nav aria-label="Page navigation example">
        <ul class="pagination font-weight-semi-bold">
          <li class="page-item"><a class="page-link" href="#">Previous</a></li>
          <li class="page-item"><a class="page-link" href="#">1</a></li>
          <li class="page-item"><a class="page-link" href="#">2</a></li>
          <li class="page-item"><a class="page-link" href="#">3</a></li>
          <li class="page-item"><a class="page-link" href="#">Next</a></li>
        </ul>
      </nav>

## Working with icons

Are you looking to use an icon or symbol in place of text for some pagination links? Be sure to provide proper screen reader support with `aria` attributes and the `.sr-only` utility.

      <nav aria-label="Page navigation example">
        <ul class="pagination font-weight-semi-bold">
          <li class="page-item">
            <a class="page-link" href="#" aria-label="Previous">
              <i class="gd-angle-left icon-text icon-text-xs d-inline-block" aria-hidden="true"></i>
              <span class="sr-only">Previous</span>
            </a>
          </li>
          <li class="page-item"><a class="page-link" href="#">1</a></li>
          <li class="page-item"><a class="page-link" href="#">2</a></li>
          <li class="page-item"><a class="page-link" href="#">3</a></li>
          <li class="page-item">
            <a class="page-link" href="#" aria-label="Next">
              <i class="gd-angle-right icon-text icon-text-xs d-inline-block" aria-hidden="true"></i>
              <span class="sr-only">Next</span>
            </a>
          </li>
        </ul>
      </nav>

## Disabled and active states

Pagination links are customizable for different circumstances. Use `.disabled` for links that appear un-clickable and `.active` to indicate the current page.

While the `.disabled` class uses `pointer-events: none` to try to disable the link functionality of `<a>`s, that CSS property is not yet standardized and doesn't account for keyboard navigation. As such, you should always add `tabindex="-1"` on disabled links and use custom JavaScript to fully disable their functionality.

      <nav aria-label="...">
        <ul class="pagination font-weight-semi-bold">
          <li class="page-item disabled">
            <a class="page-link" href="#" tabindex="-1">Previous</a>
          </li>
          <li class="page-item"><a class="page-link" href="#">1</a></li>
          <li class="page-item active">
            <a class="page-link" href="#">2 <span class="sr-only">(current)</span></a>
          </li>
          <li class="page-item"><a class="page-link" href="#">3</a></li>
          <li class="page-item">
            <a class="page-link" href="#">Next</a>
          </li>
        </ul>
      </nav>

## Alignment

Change the alignment of pagination components with flexbox utilities.

      <nav aria-label="Page navigation example">
        <ul class="pagination justify-content-center font-weight-semi-bold">
          <li class="page-item disabled">
            <a class="page-link" href="#" tabindex="-1">Previous</a>
          </li>
          <li class="page-item"><a class="page-link" href="#">1</a></li>
          <li class="page-item"><a class="page-link" href="#">2</a></li>
          <li class="page-item"><a class="page-link" href="#">3</a></li>
          <li class="page-item">
            <a class="page-link" href="#">Next</a>
          </li>
        </ul>
      </nav>

      <nav aria-label="Page navigation example">
        <ul class="pagination justify-content-end font-weight-semi-bold">
          <li class="page-item disabled">
            <a class="page-link" href="#" tabindex="-1">Previous</a>
          </li>
          <li class="page-item"><a class="page-link" href="#">1</a></li>
          <li class="page-item"><a class="page-link" href="#">2</a></li>
          <li class="page-item"><a class="page-link" href="#">3</a></li>
          <li class="page-item">
            <a class="page-link" href="#">Next</a>
          </li>
        </ul>
      </nav>

## With pager

      <nav class="d-flex justify-content-between align-items-center" aria-label="Page navigation example">
        <small class="text-muted">Showing 3 of 8</small>
        <ul class="pagination font-weight-semi-bold">
          <li class="page-item">
            <a class="page-link" href="#" aria-label="Previous">
              <i class="gd-angle-left icon-text icon-text-xs d-inline-block" aria-hidden="true"></i>
              <span class="sr-only">Previous</span>
            </a>
          </li>
          <li class="page-item"><a class="page-link" href="#">1</a></li>
          <li class="page-item"><a class="page-link" href="#">2</a></li>
          <li class="page-item"><a class="page-link" href="#">3</a></li>
          <li class="page-item disabled"><a class="page-link" href="#">3</a></li>
          <li class="page-item"><a class="page-link" href="#">8</a></li>
          <li class="page-item">
            <a class="page-link" href="#" aria-label="Next">
              <i class="gd-angle-right icon-text icon-text-xs d-inline-block" aria-hidden="true"></i>
              <span class="sr-only">Next</span>
            </a>
          </li>
        </ul>
      </nav>