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
@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/"