Skip to content
This repository was archived by the owner on Dec 8, 2023. It is now read-only.

Commit 3654694

Browse files
committed
add layout directory to separate components, based on #74
1 parent 6544ce1 commit 3654694

File tree

12 files changed

+153
-129
lines changed

12 files changed

+153
-129
lines changed

deployment/templates/test1.html

+88-69
Large diffs are not rendered by default.

lib/mishka_template_creator/components/blocks/aside.ex lib/mishka_template_creator/components/Layout/aside.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
defmodule MishkaTemplateCreator.Components.Blocks.Aside do
1+
defmodule MishkaTemplateCreator.Components.Layout.Aside do
22
use Phoenix.Component
3-
alias MishkaTemplateCreator.Components.Blocks.ElementMenu
3+
alias MishkaTemplateCreator.Components.Layout.ElementMenu
44
alias Phoenix.LiveView.JS
55

66
attr(:selected_form, :string, required: false, default: nil)

lib/mishka_template_creator/components/blocks/content.ex lib/mishka_template_creator/components/Layout/content.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule MishkaTemplateCreator.Components.Blocks.Content do
1+
defmodule MishkaTemplateCreator.Components.Layout.Content do
22
use Phoenix.Component
33
alias MishkaTemplateCreator.Components.Elements.Layout
44

lib/mishka_template_creator/components/blocks/element_menu.ex lib/mishka_template_creator/components/Layout/element_menu.ex

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
defmodule MishkaTemplateCreator.Components.Blocks.ElementMenu do
1+
defmodule MishkaTemplateCreator.Components.Layout.ElementMenu do
22
use Phoenix.Component
33
alias MishkaTemplateCreator.Data.Elements
4-
alias MishkaTemplateCreatorWeb.MishkaCoreComponent
4+
alias MishkaTemplateCreator.Components.Blocks.Icon
55

66
attr :id, :string, required: true
77
attr :title, :string, required: true
@@ -47,7 +47,7 @@ defmodule MishkaTemplateCreator.Components.Blocks.ElementMenu do
4747
title={title}
4848
parent_type={Enum.join(parent_type, ",")}
4949
>
50-
<MishkaCoreComponent.dynamic_icon module={module} />
50+
<Icon.dynamic module={module} />
5151
</.block_menu>
5252
</div>
5353
</div>

lib/mishka_template_creator/components/blocks/history.ex lib/mishka_template_creator/components/Layout/history.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
defmodule MishkaTemplateCreator.Components.Blocks.History do
1+
defmodule MishkaTemplateCreator.Components.Layout.History do
22
use Phoenix.LiveComponent
33

44
@impl true

lib/mishka_template_creator/components/blocks/settings.ex lib/mishka_template_creator/components/Layout/settings.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule MishkaTemplateCreator.Components.Blocks.Settings do
66
import MishkaTemplateCreatorWeb.MishkaCoreComponent
77

88
alias MishkaTemplateCreator.{
9-
Components.Blocks.ElementMenu,
9+
Components.Layout.ElementMenu,
1010
Components.Blocks.CustomClass,
1111
Data.TailwindSetting,
1212
Components.ConfigSelector
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
defmodule MishkaTemplateCreator.Components.Blocks.Icon do
2+
use Phoenix.Component
3+
alias MishkaTemplateCreator.Data.TailwindSetting
4+
5+
attr(:module, :string, required: true)
6+
attr(:class, :string, required: false, default: "w-6 h-6 mx-auto stroke-current")
7+
8+
def dynamic(assigns) do
9+
~H"""
10+
<%= Phoenix.LiveView.TagEngine.component(
11+
Code.eval_string("&(#{@module}/1)") |> elem(0),
12+
[class: @class],
13+
{__ENV__.module, __ENV__.function, __ENV__.file, __ENV__.line}
14+
) %>
15+
"""
16+
end
17+
18+
attr(:myself, :integer, required: true)
19+
attr(:selected, :string, required: false, default: nil)
20+
attr(:block_id, :string, required: false, default: nil)
21+
22+
attr(:class, :string,
23+
required: false,
24+
default: "w-4 h-4 mx-auto stroke-current text-black cursor-pointer"
25+
)
26+
27+
def select(assigns) do
28+
assigns = assign(assigns, icons: TailwindSetting.hero_icons())
29+
30+
~H"""
31+
<div class="flex flex-wrap w-full gap-1 border border-gray-300 p-3 rounded-md mb-3 justify-start">
32+
<span
33+
:for={icon <- @icons}
34+
phx-click="select_icon"
35+
phx-value-name={icon}
36+
phx-value-block-id={@block_id}
37+
phx-target={@myself}
38+
>
39+
<.dynamic
40+
module={"Heroicons.#{icon}"}
41+
class={@class <> "#{if @selected == icon, do: " !text-red-600", else: ""}"}
42+
/>
43+
</span>
44+
</div>
45+
"""
46+
end
47+
end

lib/mishka_template_creator/components/elements/tab.ex

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ defmodule MishkaTemplateCreator.Components.Elements.Tab do
33
import Phoenix.HTML.Form
44
use Phoenix.Component
55

6-
alias MishkaTemplateCreator.Components.Blocks.Aside
6+
alias MishkaTemplateCreator.Components.Layout.Aside
77
alias MishkaTemplateCreatorWeb.MishkaCoreComponent
88
import MishkaTemplateCreatorWeb.CoreComponents
99
alias MishkaTemplateCreator.Data.TailwindSetting
1010
alias Phoenix.LiveView.JS
1111
alias MishkaTemplateCreator.Components.Blocks.Tag
12+
alias MishkaTemplateCreator.Components.Blocks.Icon
1213

1314
@svg_height [
1415
"h-1",
@@ -456,7 +457,7 @@ defmodule MishkaTemplateCreator.Components.Elements.Tab do
456457
phx-click={reset_and_select(@children, key)}
457458
id={"button-#{key}"}
458459
>
459-
<MishkaCoreComponent.dynamic_icon
460+
<Icon.dynamic
460461
module={data["icon"]}
461462
class={Enum.join(@header["icon"], " ")}
462463
/>
@@ -711,7 +712,7 @@ defmodule MishkaTemplateCreator.Components.Elements.Tab do
711712
<div id={"form-icon-#{@key}"} class="hidden">
712713
<p class="w-full font-bold text-sm pb-5 border-b border-gray-300 mb-5">Select Tab Icon:</p>
713714
<div class="px-5 pb-3">
714-
<MishkaCoreComponent.select_icons
715+
<Icon.select
715716
selected={String.replace(@data["icon"], "Heroicons.", "")}
716717
myself={@myself}
717718
block_id={@key}

lib/mishka_template_creator/components/elements/table.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule MishkaTemplateCreator.Components.Elements.Table do
44
import Phoenix.HTML.Form
55
import MishkaTemplateCreatorWeb.CoreComponents
66

7-
alias MishkaTemplateCreator.Components.Blocks.Aside
7+
alias MishkaTemplateCreator.Components.Layout.Aside
88
alias MishkaTemplateCreatorWeb.MishkaCoreComponent
99
alias MishkaTemplateCreator.Data.TailwindSetting
1010
alias Phoenix.LiveView.JS

lib/mishka_template_creator/components/elements/text.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule MishkaTemplateCreator.Components.Elements.Text do
33
import Phoenix.HTML.Form
44

55
alias MishkaTemplateCreator.Components.Blocks.Tag
6-
alias MishkaTemplateCreator.Components.Blocks.Aside
6+
alias MishkaTemplateCreator.Components.Layout.Aside
77
alias MishkaTemplateCreatorWeb.MishkaCoreComponent
88
import MishkaTemplateCreatorWeb.CoreComponents
99
alias MishkaTemplateCreator.Data.TailwindSetting
@@ -107,7 +107,7 @@ defmodule MishkaTemplateCreator.Components.Elements.Text do
107107
</ul>
108108
</div>
109109
110-
<Aside.aside_accordion id={"text-#{@id}"} title="Change Text" open={false}>
110+
<Aside.aside_accordion id={"text-#{@id}"} title="Change Text">
111111
<MishkaCoreComponent.custom_simple_form
112112
:let={f}
113113
for={%{}}

lib/mishka_template_creator/components/mishka_core_component.ex

+1-44
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ defmodule MishkaTemplateCreatorWeb.MishkaCoreComponent do
33
import Phoenix.HTML.Form
44
import MishkaTemplateCreatorWeb.CoreComponents
55
alias MishkaTemplateCreator.Data.TailwindSetting
6-
alias MishkaTemplateCreator.Components.Blocks.{Content, Aside, History}
6+
alias MishkaTemplateCreator.Components.Layout.{Content, Aside, History}
77
alias Phoenix.LiveView.JS
88
alias MishkaTemplateCreator.Data.Elements
99

@@ -212,49 +212,6 @@ defmodule MishkaTemplateCreatorWeb.MishkaCoreComponent do
212212
"""
213213
end
214214

215-
attr(:module, :string, required: true)
216-
attr(:class, :string, required: false, default: "w-6 h-6 mx-auto stroke-current")
217-
218-
def dynamic_icon(assigns) do
219-
~H"""
220-
<%= Phoenix.LiveView.TagEngine.component(
221-
Code.eval_string("&(#{@module}/1)") |> elem(0),
222-
[class: @class],
223-
{__ENV__.module, __ENV__.function, __ENV__.file, __ENV__.line}
224-
) %>
225-
"""
226-
end
227-
228-
attr(:class, :string,
229-
required: false,
230-
default: "w-4 h-4 mx-auto stroke-current text-black cursor-pointer"
231-
)
232-
233-
attr(:myself, :integer, required: true)
234-
attr(:selected, :string, required: false, default: nil)
235-
attr(:block_id, :string, required: false, default: nil)
236-
237-
def select_icons(assigns) do
238-
assigns = assign(assigns, icons: TailwindSetting.hero_icons())
239-
240-
~H"""
241-
<div class="flex flex-wrap w-full gap-1 border border-gray-300 p-3 rounded-md mb-3 justify-start">
242-
<span
243-
:for={icon <- @icons}
244-
phx-click="select_icon"
245-
phx-value-name={icon}
246-
phx-value-block-id={@block_id}
247-
phx-target={@myself}
248-
>
249-
<.dynamic_icon
250-
module={"Heroicons.#{icon}"}
251-
class={@class <> "#{if @selected == icon, do: " !text-red-600", else: ""}"}
252-
/>
253-
</span>
254-
</div>
255-
"""
256-
end
257-
258215
attr(:myself, :integer, required: true)
259216
attr(:classes, :list, required: true)
260217
attr(:title, :string, required: false, default: "Color:")

lib/mishka_template_creator/data/elements.ex

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ defmodule MishkaTemplateCreator.Data.Elements do
55
{"text", "Text", "Heroicons.inbox_stack", ["section"]},
66
{"tab", "Tab", "Heroicons.inbox_stack", ["section"]},
77
{"table", "Table", "Heroicons.inbox_stack", ["section"]},
8-
{"accordion", "Accordion", "Heroicons.inbox_stack", ["section"]}
8+
{"accordion", "Accordion", "Heroicons.inbox_stack", ["section"]},
9+
{"buttons", "Buttons", "Heroicons.inbox_stack", ["section"]}
910
]
1011
@elements_items [
1112
{"alerts", "Alerts", "Heroicons.inbox_stack", ["section"]},
1213
{"quotes", "Quotes", "Heroicons.inbox_stack", ["section"]},
13-
{"buttons", "Buttons", "Heroicons.inbox_stack", ["section"]},
1414
{"links", "Links", "Heroicons.inbox_stack", ["section"]},
1515
{"code", "Code", "Heroicons.inbox_stack", ["section"]},
1616
{"notes", "Notes", "Heroicons.inbox_stack", ["section"]}

0 commit comments

Comments
 (0)