defmodule MoonWeb.Pages.Components.PaginationPage do
@moduledoc false
use MoonWeb, :live_view
alias MoonWeb.Components.Facing.DeprecationWarning
alias Moon.Components.Pagination
alias MoonWeb.Components.ExampleAndCode
alias MoonWeb.Components.Page
alias MoonWeb.Components.ComponentPageDescription
alias MoonWeb.Components.PropsTable
data(breadcrumbs, :any,
default: [
%{
to: "#",
name: "Components v1"
},
%{
to: "/components/pagination",
name: "Pagination"
}
]
)
data(props_info_array, :list,
default: [
%{
:name => ~c"total_pages",
:type => ~c"number",
:required => ~c"true",
:default => ~c"-",
:description => ~c"The total number of pages."
},
%{
:name => ~c"range_before",
:type => ~c"number",
:required => ~c"No",
:default => ~c"1",
:description => ~c"Beginning of displayed range"
},
%{
:name => ~c"range_after",
:type => ~c"number",
:required => ~c"No",
:default => ~c"1",
:description => ~c"End of displayed range"
},
%{
:name => ~c"previous_button_label",
:type => ~c"string",
:required => ~c"No",
:default => ~c"Previous",
:description => ~c"Label for \"previous\" button"
},
%{
:name => ~c"next_button_label",
:type => ~c"string",
:required => ~c"No",
:default => ~c"Next",
:description => ~c"Label for \"next\" button"
},
%{
:name => ~c"on_change",
:type => ~c"event",
:required => ~c"No",
:default => ~c"-",
:description =>
~c"The method to call when a page is clicked. Exposes the current page object as an argument."
},
%{
:name => ~c"current_page_number",
:type => ~c"number",
:required => ~c"true",
:default => ~c"-",
:description => ~c"Current selected page"
},
%{
:name => ~c"page_size_section",
:type => ~c"-",
:required => ~c"-",
:default => ~c"-",
:description => ~c"TODO - Placeholder for \"page size\" component"
},
%{
:name => ~c"page_size_section",
:type => ~c"-",
:required => ~c"-",
:default => ~c"-",
:description => ~c"TODO - Placeholder for \"page size\" component"
},
%{
:name => ~c"go_to_page_section",
:type => ~c"-",
:required => ~c"-",
:default => ~c"-",
:description => ~c"TODO - Placeholder for \"go to page\" component"
}
]
)
def mount(_params, _session, socket) do
socket =
assign(socket,
total_pages: 10,
current_page_number: 6,
size_page_number: 6,
section_page_number: 6,
section_per_page: 5,
section_total_entries: 48
)
{:ok, socket}
end
def handle_params(_params, uri, socket) do
{:noreply, assign(socket, uri: uri)}
end
def render(assigns) do
~F"""
size prop. Default size is xsmall.
<:example>
@per_page = {@section_per_page}
@total_entries = {@section_total_entries}