Packages
moon
2.87.9
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon/parts/wizzard/buttons.ex
defmodule Moon.Parts.Wizard.Buttons do
@moduledoc false
use Moon.StatelessComponent
alias Moon.Parts.Button
alias Moon.Parts.Wizard
@doc "Id attribute for DOM element"
prop(id, :string)
@doc "Additional Tailwind classes for container"
prop(class, :css_class)
@doc "Data-testid attribute for DOM element"
prop(testid, :string)
@doc "On save event, button is appeared if set & wizard is completed"
prop(on_save, :event)
@doc "Next button click event"
prop(on_next, :event, from_context: :on_next)
@doc "Previous button click event"
prop(on_prev, :event, from_context: :on_prev)
@doc "Cancel button click event, button is appeared if set"
prop(on_cancel, :event)
@doc "Values for a button to be sent on server by those events"
prop(values, :map, from_context: :button_values)
@doc "Additional buttons etc."
slot(default)
def render(assigns) do
~F"""
<div
{=@id}
data-testid={@testid}
class={merge(["absolute w-3/4 md:w-2/3 end-0 bottom-0 px-4 md:px-8 flex justify-between", @class])}
>
<#slot>
<Wizard.ButtonsBlock class="md:inline hidden">
<Button.White
:if={@on_cancel}
{=@values}
on_click={@on_cancel}
class="min-w-[7.5rem] justify-self-start"
>Cancel</Button.White>
</Wizard.ButtonsBlock>
<Wizard.ButtonsBlock class="justify-center md:justify-end">
<Button.White
:if={@on_prev}
{=@values}
on_click={@on_prev}
class="min-w-[5.5rem] md:min-w-[7.5rem]"
disabled={@values[:selected] <= 0}
>Previous</Button.White>
<Button
:if={@on_next && @values[:selected] < @values[:total] - 1}
{=@values}
on_click={@on_next}
class="min-w-[5.5rem] md:min-w-[7.5rem]"
>Next</Button>
<Button
:if={@on_save && @values[:selected] >= @values[:total] - 1}
{=@values}
on_click={@on_save}
class="min-w-[5.5rem] md:min-w-[7.5rem]"
>Save</Button>
</Wizard.ButtonsBlock>
</#slot>
</div>
"""
end
end