defmodule MoonWeb.Pages.Components.CheckboxPage do @moduledoc false use MoonWeb, :live_view alias Moon.Components.Button alias Moon.Components.Checkbox alias Moon.Components.ErrorTag alias Moon.Components.Field alias Moon.Components.Form alias Moon.Autolayouts.TopToDown alias MoonWeb.Components.ExampleAndCode alias MoonWeb.Components.Page alias MoonWeb.Components.ComponentPageDescription alias MoonWeb.Components.PropsTable alias MoonWeb.Pages.Tutorials.AddDataUsingForm.User alias MoonWeb.Components.Facing.DeprecationWarning data(breadcrumbs, :any, default: [ %{ to: "#", name: "Components v1" }, %{ to: "/components/checkbox", name: "Checkbox" } ] ) data(props_info_array, :list, default: [ %{ :name => ~c"checked", :type => ~c"boolean", :required => ~c"No", :default => ~c"false", :description => ~c"Preset value for checkbox state" }, %{ :name => ~c"disabled", :type => ~c"boolean", :required => ~c"No", :default => ~c"false", :description => ~c"Checkbox disabled state" }, %{ :name => ~c"readonly", :type => ~c"boolean", :required => ~c"No", :default => ~c"false", :description => "Checkbox isn't disabled but its value can't be changed" }, %{ :name => ~c"field", :type => ~c"atom", :required => ~c"Yes", :default => ~c"-", :description => ~c"Field name for the inner input form control" }, %{ :name => ~c"#slot", :type => ~c"element", :required => ~c"Yes", :default => ~c"-", :description => ~c"Label for the control" } ] ) def render(assigns) do ~F""" <:example>
I agree to terms and services. I agree to receive bonus & marketing emails.
<:code>{checkbox_1_code()} <:state>{checkbox_1_state(assigns)}
<:example>
<:code>{checkbox_2_code()}
<:example>
I agree to terms and services.
<:code>{checkbox_3_code()}
<:example>
I agree to terms and services.
<:code>{checkbox_4_code()}
""" end def mount(_params, _session, socket) do user_changeset = User.changeset(%User{}, %{ agrees_to_terms_of_service: false, agrees_to_marketing_emails: true }) user_changeset2 = User.changeset(%User{}, %{ agrees_to_terms_of_service: false, agrees_to_marketing_emails: true }) {:ok, assign(socket, user_changeset: user_changeset, user_changeset2: user_changeset2 )} end def handle_params(_params, uri, socket) do {:noreply, assign(socket, uri: uri)} end def get_agrees_to_terms_of_service(user_changeset) do Checkbox.is_true(user_changeset.changes[:agrees_to_terms_of_service]) || Checkbox.is_true(user_changeset.data.agrees_to_terms_of_service) end def handle_event( "register_form_update", %{ "user" => params }, socket ) do user_changeset = User.changeset(%User{}, params) {:noreply, assign(socket, user_changeset: user_changeset)} end def handle_event( "register_form_update2", %{ "user" => params }, socket ) do user_changeset2 = User.changeset(%User{}, params) {:noreply, assign(socket, user_changeset2: user_changeset2)} end def handle_event("register_form_submit", _, socket) do user_changeset = Map.merge(socket.assigns.user_changeset, %{action: :insert}) {:noreply, assign(socket, user_changeset: user_changeset)} end def checkbox_1_code do """
I agree to terms and services. I agree to receive bonus & marketing emails.
""" end def checkbox_2_code do """
""" end def checkbox_3_code do """
I agree to terms and services.
""" end def checkbox_4_code do """
I agree to terms and services.
""" end def checkbox_1_state(assigns) do ~F""" @user_changeset = {inspect(@user_changeset, pretty: true)} """ end end