Sayfa.Pagination (Sayfa v0.5.0)

Copy Markdown View Source

Pagination for content lists.

Splits a list of items into pages and generates URL paths for navigation. Page 1 uses the base path directly, page 2+ appends /page/N/.

Examples

pages = Sayfa.Pagination.paginate(articles, page_size: 5, base_path: "/articles")
first_page = hd(pages)
first_page.page_number  #=> 1
first_page.has_next     #=> true
first_page.next_url     #=> "/articles/page/2/"

Summary

Functions

Paginates a list of items into Page structs.

Functions

paginate(items, opts \\ [])

@spec paginate(
  [term()],
  keyword()
) :: [Sayfa.Pagination.Page.t()]

Paginates a list of items into Page structs.

Options

  • :page_size — number of items per page (default: 10)
  • :base_path — URL base path for generating page URLs (default: "/")

Returns an empty list if items is empty.

Examples

iex> pages = Sayfa.Pagination.paginate(Enum.to_list(1..25), page_size: 10, base_path: "/articles")
iex> length(pages)
3
iex> hd(pages).page_number
1
iex> hd(pages).url
"/articles/"