Packages
livebook
0.7.1
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/env_var_component.ex
defmodule LivebookWeb.EnvVarComponent do
use LivebookWeb, :live_component
alias Livebook.Settings
alias Livebook.Settings.EnvVar
@impl true
def update(assigns, socket) do
{env_var, operation} =
if assigns.env_var,
do: {assigns.env_var, :edit},
else: {%EnvVar{}, :new}
changeset = Settings.change_env_var(env_var)
{:ok,
socket
|> assign(assigns)
|> assign(changeset: changeset, env_var: env_var, operation: operation)}
end
@impl true
def render(assigns) do
assigns = assign_new(assigns, :on_save, fn -> "save" end)
~H"""
<div class="p-6 flex flex-col space-y-5">
<h3 class="text-2xl font-semibold text-gray-800">
<%= if @operation == :new, do: "Add environment variable", else: "Edit environment variable" %>
</h3>
<p class="text-gray-700">
<%= @headline %>
</p>
<.form
:let={f}
id={"#{@id}-form"}
for={@changeset}
phx-submit={@on_save}
phx-change={JS.push("validate", target: @myself)}
autocomplete="off"
spellcheck="false"
>
<div class="flex flex-col space-y-4">
<.input_wrapper form={f} field={:name} class="flex flex-col space-y-1">
<div class="input-label">
Name <span class="text-xs text-gray-500">(alphanumeric and underscore)</span>
</div>
<%= text_input(f, :name, class: "input", autofocus: @operation == :new) %>
</.input_wrapper>
<.input_wrapper form={f} field={:value} class="flex flex-col space-y-1">
<div class="input-label">Value</div>
<%= text_input(f, :value, class: "input", autofocus: @operation == :edit) %>
</.input_wrapper>
<%= text_input(f, :operation, type: "hidden", value: @operation) %>
<div class="flex space-x-2">
<%= submit("Save",
class: "button-base button-blue",
disabled: not @changeset.valid?,
phx_disabled_with: "Adding..."
) %>
<%= live_patch("Cancel",
to: @return_to,
type: "button",
class: "button-base button-outlined-gray"
) %>
</div>
</div>
</.form>
</div>
"""
end
@impl true
def handle_event("validate", %{"env_var" => attrs}, socket) do
{:noreply, assign(socket, changeset: Settings.change_env_var(socket.assigns.env_var, attrs))}
end
end