forked from shibao/cannery
update components and templates to heex
This commit is contained in:
parent
094e214a55
commit
26b47ab060
121
lib/cannery_web/component/topbar.ex
Normal file
121
lib/cannery_web/component/topbar.ex
Normal file
@ -0,0 +1,121 @@
|
||||
defmodule CanneryWeb.Component.Topbar do
|
||||
use CanneryWeb, :component
|
||||
|
||||
alias Cannery.{Accounts}
|
||||
alias CanneryWeb.{HomeLive}
|
||||
|
||||
def topbar(assigns) do
|
||||
assigns =
|
||||
%{results: [], title_content: nil, flash: nil, current_user: nil} |> Map.merge(assigns)
|
||||
|
||||
~H"""
|
||||
<header class="mb-8 px-8 py-4 w-full bg-primary-400">
|
||||
<nav role="navigation">
|
||||
<div class="flex flex-row justify-between items-center space-x-4">
|
||||
<div class="flex flex-row justify-start items-center space-x-2">
|
||||
<%= link to: Routes.live_path(CanneryWeb.Endpoint, HomeLive) do %>
|
||||
<h1 class="leading-5 text-xl text-white hover:underline">Cannery</h1>
|
||||
<% end %>
|
||||
|
||||
<%= if @title_content do %>
|
||||
<span>|</span>
|
||||
<%= @title_content %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<ul class="flex flex-row flex-wrap justify-center items-center
|
||||
space-x-4 text-lg text-white">
|
||||
<%# user settings %>
|
||||
<%= if @current_user do %>
|
||||
<li>
|
||||
<%= link "Tags", class: "hover:underline",
|
||||
to: Routes.tag_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link "Containers", class: "hover:underline",
|
||||
to: Routes.container_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link "Ammo", class: "hover:underline",
|
||||
to: Routes.ammo_type_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link "Manage", class: "hover:underline",
|
||||
to: Routes.ammo_group_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
|
||||
<%= if @current_user.role == :admin do %>
|
||||
<li>
|
||||
<%= link "Invites", class: "hover:underline",
|
||||
to: Routes.invite_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<%# search %>
|
||||
<%#
|
||||
<form phx-change="suggest" phx-submit="search" phx-target="<%= @myself %#>">
|
||||
<input type="text" name="q" class="input input-primary"
|
||||
placeholder="Search" list="results" autocomplete="off"/>
|
||||
<datalist id="results">
|
||||
<%= for {app, _vsn} <- @results do %#>
|
||||
<option value={app}><%= app %#></option>
|
||||
<% end %#>
|
||||
</datalist>
|
||||
</form>
|
||||
%>
|
||||
|
||||
<li>
|
||||
<%= link @current_user.email, class: "hover:underline",
|
||||
to: Routes.user_settings_path(CanneryWeb.Endpoint, :edit) %>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<%= link to: Routes.user_session_path(CanneryWeb.Endpoint, :delete), method: :delete,
|
||||
data: [confirm: "Are you sure you want to log out?"] do %>
|
||||
<i class="fas fa-sign-out-alt"></i>
|
||||
<% end %>
|
||||
</li>
|
||||
|
||||
<%= if @current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2) do %>
|
||||
<li>
|
||||
<%= link to: Routes.live_dashboard_path(CanneryWeb.Endpoint, :home) do %>
|
||||
<i class="fas fa-tachometer-alt"></i>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<% else %>
|
||||
|
||||
<%= if Accounts.allow_registration?() do %>
|
||||
<li>
|
||||
<%= link "Register", class: "hover:underline",
|
||||
to: Routes.user_registration_path(CanneryWeb.Endpoint, :new) %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<li>
|
||||
<%= link "Log in", class: "hover:underline",
|
||||
to: Routes.user_session_path(CanneryWeb.Endpoint, :new) %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<%= if @flash && @flash |> Map.has_key?(:info) do %>
|
||||
<p class="alert alert-info" role="alert"
|
||||
phx-click="lv:clear-flash" phx-value-key="info">
|
||||
<%= live_flash(@flash, :info) %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<%= if @flash && @flash |> Map.has_key?(:error) do %>
|
||||
<p class="alert alert-danger" role="alert"
|
||||
phx-click="lv:clear-flash" phx-value-key="error">
|
||||
<%= live_flash(@flash, :error) %>
|
||||
</p>
|
||||
<% end %>
|
||||
</header>
|
||||
"""
|
||||
end
|
||||
end
|
@ -27,6 +27,36 @@ defmodule CanneryWeb.AmmoGroupLive.FormComponent do
|
||||
save_ammo_group(socket, socket.assigns.action, ammo_group_params)
|
||||
end
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
<div>
|
||||
<h2><%= @title %></h2>
|
||||
|
||||
<.form let={f} for={@changeset},
|
||||
id="ammo_group-form"
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save">
|
||||
|
||||
<%= label f, :count, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :count %>
|
||||
<%= error_tag f, :count %>
|
||||
|
||||
<%= label f, :price_paid, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :price_paid, step: "any" %>
|
||||
<%= error_tag f, :price_paid %>
|
||||
|
||||
<%= label f, :notes, class: "title text-lg text-primary-500" %>
|
||||
<%= textarea f, :notes, class: "input" %>
|
||||
<%= error_tag f, :notes %>
|
||||
|
||||
<%= submit "Save", phx_disable_with: "Saving..." %>
|
||||
</.form>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
defp save_ammo_group(socket, :edit, ammo_group_params) do
|
||||
case Ammo.update_ammo_group(socket.assigns.ammo_group, ammo_group_params) do
|
||||
{:ok, _ammo_group} ->
|
||||
|
@ -1,22 +0,0 @@
|
||||
<h2><%= @title %></h2>
|
||||
|
||||
<%= f = form_for @changeset, "#",
|
||||
id: "ammo_group-form",
|
||||
phx_target: @myself,
|
||||
phx_change: "validate",
|
||||
phx_submit: "save" %>
|
||||
|
||||
<%= label f, :count, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :count %>
|
||||
<%= error_tag f, :count %>
|
||||
|
||||
<%= label f, :price_paid, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :price_paid, step: "any" %>
|
||||
<%= error_tag f, :price_paid %>
|
||||
|
||||
<%= label f, :notes, class: "title text-lg text-primary-500" %>
|
||||
<%= textarea f, :notes, class: "input" %>
|
||||
<%= error_tag f, :notes %>
|
||||
|
||||
<%= submit "Save", phx_disable_with: "Saving..." %>
|
||||
</form>
|
@ -27,6 +27,48 @@ defmodule CanneryWeb.AmmoTypeLive.FormComponent do
|
||||
save_ammo_type(socket, socket.assigns.action, ammo_type_params)
|
||||
end
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
<div>
|
||||
<h2><%= @title %></h2>
|
||||
|
||||
<.form let={f} for={@changeset}
|
||||
id="ammo_type-form"
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save">
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary" %>
|
||||
<%= error_tag f, :name %>
|
||||
|
||||
<%= label f, :desc, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :desc, class: "input input-primary" %>
|
||||
<%= error_tag f, :desc %>
|
||||
|
||||
<%= label f, :case_material, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :case_material, class: "input input-primary" %>
|
||||
<%= error_tag f, :case_material %>
|
||||
|
||||
<%= label f, :bullet_type, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :bullet_type, class: "input input-primary" %>
|
||||
<%= error_tag f, :bullet_type %>
|
||||
|
||||
<%= label f, :weight, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :weight, step: "any" %>
|
||||
<%= error_tag f, :weight %>
|
||||
|
||||
<%= label f, :manufacturer, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :manufacturer, class: "input input-primary" %>
|
||||
<%= error_tag f, :manufacturer %>
|
||||
|
||||
<%= submit "Save", phx_disable_with: "Saving..." %>
|
||||
</.form>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
defp save_ammo_type(socket, :edit, ammo_type_params) do
|
||||
case Ammo.update_ammo_type(socket.assigns.ammo_type, ammo_type_params) do
|
||||
{:ok, _ammo_type} ->
|
||||
|
@ -1,34 +0,0 @@
|
||||
<h2><%= @title %></h2>
|
||||
|
||||
<%= f = form_for @changeset, "#",
|
||||
id: "ammo_type-form",
|
||||
phx_target: @myself,
|
||||
phx_change: "validate",
|
||||
phx_submit: "save" %>
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary" %>
|
||||
<%= error_tag f, :name %>
|
||||
|
||||
<%= label f, :desc, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :desc, class: "input input-primary" %>
|
||||
<%= error_tag f, :desc %>
|
||||
|
||||
<%= label f, :case_material, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :case_material, class: "input input-primary" %>
|
||||
<%= error_tag f, :case_material %>
|
||||
|
||||
<%= label f, :bullet_type, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :bullet_type, class: "input input-primary" %>
|
||||
<%= error_tag f, :bullet_type %>
|
||||
|
||||
<%= label f, :weight, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :weight, step: "any" %>
|
||||
<%= error_tag f, :weight %>
|
||||
|
||||
<%= label f, :manufacturer, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :manufacturer, class: "input input-primary" %>
|
||||
<%= error_tag f, :manufacturer %>
|
||||
|
||||
<%= submit "Save", phx_disable_with: "Saving..." %>
|
||||
</form>
|
@ -1,13 +0,0 @@
|
||||
defmodule CanneryWeb.Live.Component.Topbar do
|
||||
use CanneryWeb, :live_component
|
||||
|
||||
alias Cannery.{Accounts}
|
||||
|
||||
def mount(socket) do
|
||||
{:ok, socket |> assign(results: [], title_content: nil)}
|
||||
end
|
||||
|
||||
def update(assigns, socket) do
|
||||
{:ok, socket |> assign(assigns)}
|
||||
end
|
||||
end
|
@ -1,107 +0,0 @@
|
||||
<header class="mb-8 px-8 py-4 w-full bg-primary-400">
|
||||
<nav role="navigation">
|
||||
<div class="flex flex-row justify-between items-center space-x-4">
|
||||
<div class="flex flex-row justify-start items-center space-x-2">
|
||||
<%= link to: Routes.home_path(CanneryWeb.Endpoint, :index) do %>
|
||||
<h1 class="leading-5 text-xl text-white hover:underline">Cannery</h1>
|
||||
<% end %>
|
||||
|
||||
<%= if @title_content do %>
|
||||
<span>|</span>
|
||||
<%= @title_content %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<ul class="flex flex-row flex-wrap justify-center items-center
|
||||
space-x-4 text-lg text-white">
|
||||
<%# user settings %>
|
||||
<%= if @current_user do %>
|
||||
<li>
|
||||
<%= link "Tags", class: "hover:underline",
|
||||
to: Routes.tag_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link "Containers", class: "hover:underline",
|
||||
to: Routes.container_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link "Ammo", class: "hover:underline",
|
||||
to: Routes.ammo_type_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<li>
|
||||
<%= link "Manage", class: "hover:underline",
|
||||
to: Routes.ammo_group_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
|
||||
<%= if @current_user.role == :admin do %>
|
||||
<li>
|
||||
<%= link "Invites", class: "hover:underline",
|
||||
to: Routes.invite_index_path(CanneryWeb.Endpoint, :index) %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<%# search %>
|
||||
<%#
|
||||
<form phx-change="suggest" phx-submit="search" phx-target="<%= @myself %#>">
|
||||
<input type="text" name="q" class="input input-primary"
|
||||
placeholder="Search" list="results" autocomplete="off"/>
|
||||
<datalist id="results">
|
||||
<%= for {app, _vsn} <- @results do %#>
|
||||
<option value="<%= app %#>"><%= app %#></option>
|
||||
<% end %#>
|
||||
</datalist>
|
||||
</form>
|
||||
%>
|
||||
|
||||
<li>
|
||||
<%= link @current_user.email, class: "hover:underline",
|
||||
to: Routes.user_settings_path(CanneryWeb.Endpoint, :edit) %>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<%= link to: Routes.user_session_path(CanneryWeb.Endpoint, :delete), method: :delete,
|
||||
data: [confirm: "Are you sure you want to log out?"] do %>
|
||||
<i class="fas fa-sign-out-alt"></i>
|
||||
<% end %>
|
||||
</li>
|
||||
|
||||
<%= if @current_user.role == :admin and function_exported?(Routes, :live_dashboard_path, 2) do %>
|
||||
<li>
|
||||
<%= link to: Routes.live_dashboard_path(CanneryWeb.Endpoint, :home) do %>
|
||||
<i class="fas fa-tachometer-alt"></i>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<% else %>
|
||||
|
||||
<%= if Accounts.allow_registration?() do %>
|
||||
<li>
|
||||
<%= link "Register", class: "hover:underline",
|
||||
to: Routes.user_registration_path(CanneryWeb.Endpoint, :new) %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<li>
|
||||
<%= link "Log in", class: "hover:underline",
|
||||
to: Routes.user_session_path(CanneryWeb.Endpoint, :new) %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<%= if live_flash(@flash, :info) do %>
|
||||
<p class="alert alert-info" role="alert"
|
||||
phx-click="lv:clear-flash" phx-value-key="info">
|
||||
<%= live_flash(@flash, :info) %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<%= if live_flash(@flash, :error) do %>
|
||||
<p class="alert alert-danger" role="alert"
|
||||
phx-click="lv:clear-flash" phx-value-key="error">
|
||||
<%= live_flash(@flash, :error) %>
|
||||
</p>
|
||||
<% end %>
|
||||
</header>
|
@ -27,6 +27,40 @@ defmodule CanneryWeb.ContainerLive.FormComponent do
|
||||
save_container(socket, socket.assigns.action, container_params)
|
||||
end
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
<div>
|
||||
<h2><%= @title %></h2>
|
||||
|
||||
<.form let={f} for={@changeset}
|
||||
id="container-form"
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save">
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary" %>
|
||||
<%= error_tag f, :name %>
|
||||
|
||||
<%= label f, :desc, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :desc, class: "input input-primary" %>
|
||||
<%= error_tag f, :desc %>
|
||||
|
||||
<%= label f, :type, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :type, class: "input input-primary" %>
|
||||
<%= error_tag f, :type %>
|
||||
|
||||
<%= label f, :location, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :location, class: "input input-primary" %>
|
||||
<%= error_tag f, :location %>
|
||||
|
||||
<%= submit "Save", phx_disable_with: "Saving..." %>
|
||||
</.form>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
defp save_container(socket, :edit, container_params) do
|
||||
case Containers.update_container(socket.assigns.container, container_params) do
|
||||
{:ok, _container} ->
|
||||
|
@ -1,26 +0,0 @@
|
||||
<h2><%= @title %></h2>
|
||||
|
||||
<%= f = form_for @changeset, "#",
|
||||
id: "container-form",
|
||||
phx_target: @myself,
|
||||
phx_change: "validate",
|
||||
phx_submit: "save" %>
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary" %>
|
||||
<%= error_tag f, :name %>
|
||||
|
||||
<%= label f, :desc, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :desc, class: "input input-primary" %>
|
||||
<%= error_tag f, :desc %>
|
||||
|
||||
<%= label f, :type, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :type, class: "input input-primary" %>
|
||||
<%= error_tag f, :type %>
|
||||
|
||||
<%= label f, :location, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :location, class: "input input-primary" %>
|
||||
<%= error_tag f, :location %>
|
||||
|
||||
<%= submit "Save", phx_disable_with: "Saving..." %>
|
||||
</form>
|
@ -27,6 +27,40 @@ defmodule CanneryWeb.InviteLive.FormComponent do
|
||||
save_invite(socket, socket.assigns.action, invite_params)
|
||||
end
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
<div>
|
||||
<h2 class="title text-xl text-primary-500">
|
||||
<%= @title %>
|
||||
</h2>
|
||||
|
||||
<.form let={f} for={@changeset}
|
||||
id="invite-form"
|
||||
class="grid grid-cols-3 justify-center items-center space-y-4"
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save">
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary col-span-2" %>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :name %>
|
||||
</span>
|
||||
|
||||
<%= label f, :uses_left, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :uses_left, min: 0, class: "input input-primary col-span-2" %>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :uses_left %>
|
||||
</span>
|
||||
|
||||
<%= submit "Save", class: "mx-auto btn btn-primary col-span-3",
|
||||
phx_disable_with: "Saving..." %>
|
||||
</.form>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
defp save_invite(socket, :edit, invite_params) do
|
||||
case Invites.update_invite(socket.assigns.invite, invite_params) do
|
||||
{:ok, _invite} ->
|
||||
|
@ -1,26 +0,0 @@
|
||||
<h2 class="title text-xl text-primary-500">
|
||||
<%= @title %>
|
||||
</h2>
|
||||
|
||||
<%= f = form_for @changeset, "#",
|
||||
id: "invite-form",
|
||||
class: "grid grid-cols-3 justify-center items-center space-y-4",
|
||||
phx_target: @myself,
|
||||
phx_change: "validate",
|
||||
phx_submit: "save" %>
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary col-span-2" %>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :name %>
|
||||
</span>
|
||||
|
||||
<%= label f, :uses_left, class: "title text-lg text-primary-500" %>
|
||||
<%= number_input f, :uses_left, min: 0, class: "input input-primary col-span-2" %>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :uses_left %>
|
||||
</span>
|
||||
|
||||
<%= submit "Save", class: "mx-auto btn btn-primary col-span-3",
|
||||
phx_disable_with: "Saving..." %>
|
||||
</form>
|
@ -3,15 +3,15 @@ defmodule CanneryWeb.ModalComponent do
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~L"""
|
||||
<div id="<%= @id %>" class="fixed z-10 left-0 top-0
|
||||
~H"""
|
||||
<div id={@id} class="fixed z-10 left-0 top-0
|
||||
w-full h-full overflow-hidden
|
||||
p-8 flex flex-col justify-center items-center"
|
||||
style="opacity: 1 !important; background-color: rgba(0,0,0,0.4);"
|
||||
phx-capture-click="close"
|
||||
phx-window-keydown="close"
|
||||
phx-key="escape"
|
||||
phx-target="#<%= @id %>"
|
||||
phx-target={"#{@id}"}
|
||||
phx-page-loading>
|
||||
|
||||
<div class="w-full max-w-4xl relative
|
||||
|
@ -30,6 +30,50 @@ defmodule CanneryWeb.TagLive.FormComponent do
|
||||
save_tag(socket, socket.assigns.action, tag_params)
|
||||
end
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
<div>
|
||||
<h2 class="title text-xl text-primary-500">
|
||||
<%= @title %>
|
||||
</h2>
|
||||
|
||||
<.form let={f} for={@changeset}
|
||||
id="tag-form"
|
||||
class="grid grid-cols-3 justify-center items-center space-y-4"
|
||||
phx-target={@myself}
|
||||
phx-change="validate"
|
||||
phx-submit="save">
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary col-span-2" %>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :name %>
|
||||
</span>
|
||||
|
||||
<%= label f, :bg_color, class: "title text-lg text-primary-500" %>
|
||||
<span class="mx-auto col-span-2" phx-update="ignore">
|
||||
<%= color_input f, :bg_color, value: random_color() %>
|
||||
</span>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :bg_color %>
|
||||
</span>
|
||||
|
||||
<%= label f, :text_color, class: "title text-lg text-primary-500" %>
|
||||
<span class="mx-auto col-span-2" phx-update="ignore">
|
||||
<%= color_input f, :text_color, value: "#ffffff" %>
|
||||
</span>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :text_color %>
|
||||
</span>
|
||||
|
||||
<%= submit "Save", class: "mx-auto btn btn-primary col-span-3",
|
||||
phx_disable_with: "Saving..." %>
|
||||
</.form>
|
||||
</div>
|
||||
"""
|
||||
end
|
||||
|
||||
defp save_tag(socket, :edit, tag_params) do
|
||||
case Tags.update_tag(socket.assigns.tag, tag_params) do
|
||||
{:ok, _tag} ->
|
||||
@ -54,8 +98,7 @@ defmodule CanneryWeb.TagLive.FormComponent do
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
{:noreply, socket |> assign(changeset: changeset)}
|
||||
end
|
||||
end
|
||||
|
||||
end-
|
||||
@doc """
|
||||
Returns a random tag color in `#ffffff` hex format
|
||||
"""
|
||||
|
@ -1,36 +0,0 @@
|
||||
<h2 class="title text-xl text-primary-500">
|
||||
<%= @title %>
|
||||
</h2>
|
||||
|
||||
<%= f = form_for @changeset, "#",
|
||||
id: "tag-form",
|
||||
class: "grid grid-cols-3 justify-center items-center space-y-4",
|
||||
phx_target: @myself,
|
||||
phx_change: "validate",
|
||||
phx_submit: "save" %>
|
||||
|
||||
<%= label f, :name, class: "title text-lg text-primary-500" %>
|
||||
<%= text_input f, :name, class: "input input-primary col-span-2" %>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :name %>
|
||||
</span>
|
||||
|
||||
<%= label f, :bg_color, class: "title text-lg text-primary-500" %>
|
||||
<span class="mx-auto col-span-2" phx-update="ignore">
|
||||
<%= color_input f, :bg_color, value: random_color() %>
|
||||
</span>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :bg_color %>
|
||||
</span>
|
||||
|
||||
<%= label f, :text_color, class: "title text-lg text-primary-500" %>
|
||||
<span class="mx-auto col-span-2" phx-update="ignore">
|
||||
<%= color_input f, :text_color, value: "#ffffff" %>
|
||||
</span>
|
||||
<span class="col-span-3">
|
||||
<%= error_tag f, :text_color %>
|
||||
</span>
|
||||
|
||||
<%= submit "Save", class: "mx-auto btn btn-primary col-span-3",
|
||||
phx_disable_with: "Saving..." %>
|
||||
</form>
|
@ -1,10 +1,12 @@
|
||||
|
||||
<main class="container min-w-full min-h-full">
|
||||
<header>
|
||||
<%= live_component CanneryWeb.Live.Component.Topbar, current_user: assigns[:current_user] %>
|
||||
<CanneryWeb.Component.Topbar.topbar
|
||||
current_user={assigns[:current_user]}>
|
||||
</CanneryWeb.Component.Topbar.topbar>
|
||||
|
||||
<div class="mx-8 my-2 flex flex-col space-y-4 text-center">
|
||||
<%= if live_flash(@flash, :info) do %>
|
||||
<%= if @flash && @flash |> Map.has_key?(:info) do %>
|
||||
<p class="alert alert-info" role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="info">
|
||||
@ -12,7 +14,7 @@
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
<%= if live_flash(@flash, :error) do %>
|
||||
<%= if @flash && @flash |> Map.has_key?(:error) do %>
|
||||
<p class="alert alert-danger" role="alert"
|
||||
phx-click="lv:clear-flash"
|
||||
phx-value-key="error">
|
||||
|
Loading…
Reference in New Issue
Block a user