streamlinked icon_helpers, added helper to set nav links 'active' on current route
This commit is contained in:
parent
6d99d289df
commit
015c7fe0a7
8 changed files with 63 additions and 88 deletions
lib/bones73k_web/views
|
|
@ -1,35 +0,0 @@
|
|||
defmodule Bones73kWeb.IconHelpers do
|
||||
@moduledoc """
|
||||
Generate SVG sprite use tags for SVG icons
|
||||
"""
|
||||
|
||||
use Phoenix.HTML
|
||||
import Bones73k.Util.List
|
||||
alias Bones73kWeb.Router.Helpers, as: Routes
|
||||
|
||||
def icon_div(conn, name, div_opts \\ [], svg_opts \\ []) do
|
||||
content_tag(:div, tag_opts(name, div_opts)) do
|
||||
icon_svg(conn, name, svg_opts)
|
||||
end
|
||||
end
|
||||
|
||||
def icon_svg(conn, name, opts \\ []) do
|
||||
content_tag(:svg, tag_opts(name, opts)) do
|
||||
tag(:use, "xlink:href": Routes.static_path(conn, "/images/icons.svg#" <> name))
|
||||
end
|
||||
end
|
||||
|
||||
defp tag_opts(name, opts) do
|
||||
classes = "#{Keyword.get(opts, :class, "")} #{name}" |> String.trim_leading()
|
||||
styles = Keyword.get(opts, :style)
|
||||
width = Keyword.get(opts, :width)
|
||||
height = Keyword.get(opts, :height)
|
||||
id = Keyword.get(opts, :id)
|
||||
|
||||
[class: classes]
|
||||
|> prepend_if(styles, {:style, styles})
|
||||
|> prepend_if(width, {:style, width})
|
||||
|> prepend_if(height, {:style, height})
|
||||
|> prepend_if(id, {:id, id})
|
||||
end
|
||||
end
|
||||
|
|
@ -4,7 +4,6 @@ defmodule Bones73kWeb.IconHelpers do
|
|||
"""
|
||||
|
||||
use Phoenix.HTML
|
||||
import Bones73k.Util.List
|
||||
alias Bones73kWeb.Router.Helpers, as: Routes
|
||||
|
||||
def icon_div(conn, name, div_opts \\ [], svg_opts \\ []) do
|
||||
|
|
@ -15,21 +14,11 @@ defmodule Bones73kWeb.IconHelpers do
|
|||
|
||||
def icon_svg(conn, name, opts \\ []) do
|
||||
content_tag(:svg, tag_opts(name, opts)) do
|
||||
tag(:use, "xlink:href": Routes.static_path(conn, "/images/icons.svg#" <> name))
|
||||
tag(:use, "xlink:href": Routes.static_path(conn, "/images/icons.svg##{name}"))
|
||||
end
|
||||
end
|
||||
|
||||
defp tag_opts(name, opts) do
|
||||
classes = "#{Keyword.get(opts, :class, "")} #{name}" |> String.trim_leading()
|
||||
styles = Keyword.get(opts, :style)
|
||||
width = Keyword.get(opts, :width)
|
||||
height = Keyword.get(opts, :height)
|
||||
id = Keyword.get(opts, :id)
|
||||
|
||||
[class: classes]
|
||||
|> prepend_if(styles, {:style, styles})
|
||||
|> prepend_if(width, {:style, width})
|
||||
|> prepend_if(height, {:style, height})
|
||||
|> prepend_if(id, {:id, id})
|
||||
Keyword.update(opts, :class, name, fn c -> "#{c} #{name}" end)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,3 +1,10 @@
|
|||
defmodule Bones73kWeb.LayoutView do
|
||||
use Bones73kWeb, :view
|
||||
|
||||
def nav_link_opts(conn, opts) do
|
||||
case Keyword.get(opts, :to) == Phoenix.Controller.current_path(conn) do
|
||||
false -> opts
|
||||
true -> Keyword.update(opts, :class, "active", fn c -> "#{c} active" end)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue