View Source Inertia.ScrollMetadata protocol (Inertia v2.6.0)
Protocol for extracting scroll metadata from paginated data structures.
This protocol allows different pagination libraries to provide their own implementation for extracting metadata needed by the InfiniteScroll component.
Required Metadata
Implementations should return a map with the following keys:
:page_name- The query parameter name for pagination (e.g., "page"):current_page- The current page number:previous_page- The previous page number, or nil if on first page:next_page- The next page number, or nil if on last page
Example Implementation
defimpl Inertia.ScrollMetadata, for: Scrivener.Page do
def to_scroll_metadata(page) do
%{
page_name: "page",
current_page: page.page_number,
previous_page: if(page.page_number > 1, do: page.page_number - 1),
next_page: if(page.page_number < page.total_pages, do: page.page_number + 1)
}
end
end
Summary
Functions
Extracts scroll metadata from paginated data.
Types
@type t() :: term()
All the types that implement this protocol.
Functions
@spec to_scroll_metadata(t()) :: %{ page_name: String.t(), current_page: integer() | String.t() | nil, previous_page: integer() | String.t() | nil, next_page: integer() | String.t() | nil }
Extracts scroll metadata from paginated data.
Returns a map with :page_name, :current_page, :previous_page, and :next_page.