mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-09-09 22:44:38 +08:00
Add support for boxed grid (#1375)
This commit is contained in:
parent
4b3aa2dbda
commit
8bb6b05625
3 changed files with 22 additions and 28 deletions
|
@ -157,12 +157,8 @@ solely client-side operations.
|
|||
@apply absolute bottom-2 right-2;
|
||||
}
|
||||
|
||||
[data-el-output]:not([data-wrapper]) {
|
||||
@apply py-4;
|
||||
}
|
||||
|
||||
[data-el-output][data-border] {
|
||||
@apply px-4 border border-t-0 border-gray-200 divide-y divide-gray-200;
|
||||
@apply p-4 border border-t-0 border-gray-200 divide-y divide-gray-200;
|
||||
}
|
||||
|
||||
[data-el-output][data-border]:first-child {
|
||||
|
|
|
@ -765,14 +765,24 @@ defmodule Livebook.Notebook do
|
|||
end
|
||||
|
||||
# Keep layout output and its relevant contents
|
||||
defp do_prune_outputs([{idx, {type, tabs_outputs, _info}} | outputs], acc)
|
||||
when type in [:tabs, :grid] do
|
||||
defp do_prune_outputs([{idx, {:tabs, tabs_outputs, info}} | outputs], acc) do
|
||||
case prune_outputs(tabs_outputs) do
|
||||
[] ->
|
||||
do_prune_outputs(outputs, acc)
|
||||
|
||||
pruned_tabs_outputs ->
|
||||
do_prune_outputs(outputs, [{idx, {type, pruned_tabs_outputs, :__pruned__}} | acc])
|
||||
info = Map.replace(info, :labels, :__pruned__)
|
||||
do_prune_outputs(outputs, [{idx, {:tabs, pruned_tabs_outputs, info}} | acc])
|
||||
end
|
||||
end
|
||||
|
||||
defp do_prune_outputs([{idx, {:grid, grid_outputs, info}} | outputs], acc) do
|
||||
case prune_outputs(grid_outputs) do
|
||||
[] ->
|
||||
do_prune_outputs(outputs, acc)
|
||||
|
||||
pruned_grid_outputs ->
|
||||
do_prune_outputs(outputs, [{idx, {:grid, pruned_grid_outputs, info}} | acc])
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@ defmodule LivebookWeb.Output do
|
|||
id={"output-wrapper-#{@dom_id_map[idx] || idx}"}
|
||||
data-el-output
|
||||
data-border={border?(output)}
|
||||
data-wrapper={wrapper?(output)}
|
||||
>
|
||||
<%= render_output(output, %{
|
||||
id: "output-#{idx}",
|
||||
|
@ -34,15 +33,9 @@ defmodule LivebookWeb.Output do
|
|||
defp border?({:stdout, _text}), do: true
|
||||
defp border?({:text, _text}), do: true
|
||||
defp border?({:error, _message}), do: true
|
||||
# TODO fix spacing and make it an option
|
||||
defp border?({:grid, _, _}), do: true
|
||||
defp border?({:grid, _, info}), do: Map.get(info, :boxed, false)
|
||||
defp border?(_output), do: false
|
||||
|
||||
defp wrapper?({:frame, _outputs, _info}), do: true
|
||||
defp wrapper?({:tabs, _tabs, _info}), do: true
|
||||
defp wrapper?({:grid, _tabs, _info}), do: true
|
||||
defp wrapper?(_output), do: false
|
||||
|
||||
defp render_output({:stdout, text}, %{id: id}) do
|
||||
text = if(text == :__pruned__, do: nil, else: text)
|
||||
live_component(Output.StdoutComponent, id: id, text: text)
|
||||
|
@ -105,7 +98,7 @@ defmodule LivebookWeb.Output do
|
|||
client_id: client_id
|
||||
}) do
|
||||
{labels, active_idx} =
|
||||
if info == :__pruned__ do
|
||||
if info.labels == :__pruned__ do
|
||||
{[], nil}
|
||||
else
|
||||
labels =
|
||||
|
@ -179,17 +172,13 @@ defmodule LivebookWeb.Output do
|
|||
input_values: input_values,
|
||||
client_id: client_id
|
||||
}) do
|
||||
style =
|
||||
if info == :__pruned__ do
|
||||
nil
|
||||
else
|
||||
columns = info[:columns] || 1
|
||||
"grid-template-columns: repeat(#{columns}, minmax(0, 1fr));"
|
||||
end
|
||||
columns = info[:columns] || 1
|
||||
gap = info[:gap] || 8
|
||||
|
||||
assigns = %{
|
||||
id: id,
|
||||
style: style,
|
||||
columns: columns,
|
||||
gap: gap,
|
||||
outputs: outputs,
|
||||
socket: socket,
|
||||
session_id: session_id,
|
||||
|
@ -201,9 +190,8 @@ defmodule LivebookWeb.Output do
|
|||
<div id={@id} class="overflow-auto tiny-scrollbar">
|
||||
<div
|
||||
id={"#{@id}-grid"}
|
||||
class="grid grid-cols-2 gap-x-4 w-full"
|
||||
style={@style}
|
||||
data-keep-attribute="style"
|
||||
class="grid grid-cols-2 w-full"
|
||||
style={"grid-template-columns: repeat(#{@columns}, minmax(0, 1fr)); gap: #{@gap}px"}
|
||||
phx-update="append"
|
||||
>
|
||||
<%= for {output_idx, output} <- @outputs do %>
|
||||
|
|
Loading…
Add table
Reference in a new issue