livebook/lib/livebook_web/live/hub/edit/enterprise_component.ex

73 lines
1.9 KiB
Elixir
Raw Normal View History

2022-10-11 22:27:27 +08:00
defmodule LivebookWeb.Hub.Edit.EnterpriseComponent do
use LivebookWeb, :live_component
alias Livebook.Hubs.Enterprise
@impl true
def update(assigns, socket) do
changeset = Enterprise.change_hub(assigns.hub)
{:ok,
socket
|> assign(assigns)
|> assign(changeset: changeset)}
end
@impl true
def render(assigns) do
~H"""
<div id={"#{@id}-component"}>
<div class="flex flex-col space-y-10">
<div class="flex flex-col space-y-2">
<h2 class="text-xl text-gray-800 font-medium pb-2 border-b border-gray-200">
General
</h2>
<.form
:let={f}
id={@id}
class="flex flex-col mt-4 space-y-4"
for={@changeset}
phx-submit="save"
phx-change="validate"
phx-target={@myself}
>
<div class="grid grid-cols-1 md:grid-cols-1 gap-3">
2023-02-23 02:34:54 +08:00
<.emoji_field field={f[:hub_emoji]} label="Emoji" />
</div>
<div>
<button
class="button-base button-blue"
type="submit"
phx-disable-with="Updating..."
disabled={not @changeset.valid?}
>
Update Hub
</button>
2022-10-11 22:27:27 +08:00
</div>
</.form>
</div>
</div>
</div>
"""
end
@impl true
def handle_event("save", %{"enterprise" => params}, socket) do
case Enterprise.update_hub(socket.assigns.hub, params) do
{:ok, hub} ->
{:noreply,
socket
|> put_flash(:success, "Hub updated successfully")
2023-02-23 02:34:54 +08:00
|> push_navigate(to: ~p"/hub/#{hub.id}")}
2022-10-11 22:27:27 +08:00
{:error, changeset} ->
{:noreply, assign(socket, changeset: changeset)}
end
end
def handle_event("validate", %{"enterprise" => attrs}, socket) do
{:noreply, assign(socket, changeset: Enterprise.validate_hub(socket.assigns.hub, attrs))}
2022-10-11 22:27:27 +08:00
end
end