diff --git a/assets/css/app.css b/assets/css/app.css index a3692de..8e34331 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -3,4 +3,5 @@ @import "tailwindcss/utilities"; /* This file is for your main application CSS */ -@import "./article.css" +@import "./article.css"; +@import "./tunit-editor.css"; diff --git a/assets/css/tunit-editor.css b/assets/css/tunit-editor.css new file mode 100644 index 0000000..d46c6ea --- /dev/null +++ b/assets/css/tunit-editor.css @@ -0,0 +1,3 @@ +.tunit-status input[type="radio"]:checked+label { + @apply opacity-100 text-gray-100 +} diff --git a/lib/outlook_web/components/tunit_editor_component.ex b/lib/outlook_web/components/tunit_editor_component.ex index e0a39e5..584c677 100644 --- a/lib/outlook_web/components/tunit_editor_component.ex +++ b/lib/outlook_web/components/tunit_editor_component.ex @@ -3,49 +3,48 @@ defmodule OutlookWeb.TunitEditorComponent do use Phoenix.Component import OutlookWeb.CoreComponents - # alias Phoenix.LiveView.JS - - defp statuses do - [ {:untranslated, "bg-red-800 col-span-3 disabled:border-gray-600"}, - {:passable, "bg-amber-500 col-span-2 disabled:border-gray-600"}, - {:done, "bg-green-700 disabled:border-gray-600"} ] - end attr :current_tunit, :any attr :target, :string def tunit_editor(assigns) do - assigns = unless assigns.current_tunit do - assigns - |> assign( - current_tunit: %Outlook.InternalTree.TranslationUnit{}, - disabled: true - ) - else - assigns |> assign(disabled: false) - end ~H""" -
- <%!--
- <%= @current_tunit.content |> raw %> -
--%> -
- -
-
-
-
- <.status_button class={class} status={status} target={@target} disabled={@current_tunit.status == status}> -
+
+ <%!--
+ <%= @current_tunit.content |> raw %> +
--%> +
+ +
+ <.status_selector target={@target} disabled={!@current_tunit.status} tunit={@current_tunit} /> +
+ """ + end + + defp statuses() do + [ {:untranslated, "bg-red-800"}, + {:passable, "bg-amber-500"}, + {:done, "bg-green-700"} ] + end + + defp status_selector(assigns) do + ~H""" +
+
+ <.status_button :for={{status, class} <- statuses()} forstatus={status} + status={@tunit.status} class={class} disabled={@disabled} />
+
""" end defp status_button(assigns) do ~H""" - <.link phx-click="tunit_status" phx-value-status={@status} phx-target={@target}> - <.button class={@class} title="select translation status" disabled={@disabled}><%= @status |> to_string %> - + + """ end end diff --git a/lib/outlook_web/live/translation_live/form_component.ex b/lib/outlook_web/live/translation_live/form_component.ex index 1059e4a..e659484 100644 --- a/lib/outlook_web/live/translation_live/form_component.ex +++ b/lib/outlook_web/live/translation_live/form_component.ex @@ -27,7 +27,6 @@ defmodule OutlookWeb.TranslationLive.FormComponent do options={Application.get_env(:outlook,:deepl)[:target_langs]} /> <.input field={{f, :title}} type="text" label="title" /> <.input field={{f, :teaser}} type="textarea" label="teaser" class="h-28" /> - <%!-- <.input field={{f, :content}} type="text" label="content" /> --%> <.input field={{f, :date}} type="datetime-local" label="date" />
<.input field={{f, :public}} type="checkbox" label="public" /> @@ -56,7 +55,7 @@ defmodule OutlookWeb.TranslationLive.FormComponent do {:ok, socket |> assign(assigns) - |> assign(:current_tunit, nil) + |> assign(:current_tunit, %TranslationUnit{status: nil}) |> assign(:changeset, changeset) |> assign_article_tree(translation) |> assign(:deepl_progress, nil)} diff --git a/lib/outlook_web/live/translation_live/new_edit.ex b/lib/outlook_web/live/translation_live/new_edit.ex index 8959f35..88baa12 100644 --- a/lib/outlook_web/live/translation_live/new_edit.ex +++ b/lib/outlook_web/live/translation_live/new_edit.ex @@ -50,6 +50,7 @@ defmodule OutlookWeb.TranslationLive.NewEdit do defp common_assigns(socket) do assign(socket, form_cmpnt_id: @form_cmpnt_id) + |> assign(:page_title, page_title(socket.assigns.live_action)) end @impl true