Current section
Files
Jump to
Current section
Files
lib/zf/grid.ex
defmodule Zf.Grid do
@moduledoc """
Documentation for Zf.Grid
"""
@doc """
Zurb Foundation Grid.
## Examples
iex> Zf.Grid.zf_grid([class: "expanded align-middle"], [[content: "Some content", class: "small-12"], [content: "Some content", class: "small-12"]])
{:safe,
[60, "div", [[32, "class", 61, 34, "expanded align-middle row", 34]], 62,
[[60, "div", [[32, "class", 61, 34, "small-12 columns", 34]], 62,
"Some content", 60, 47, "div", 62],
[60, "div", [[32, "class", 61, 34, "small-12 columns", 34]], 62,
"Some content", 60, 47, "div", 62]], 60, 47, "div", 62]}
"""
import Phoenix.HTML.Tag
def zf_grid(options, contents) do
row(options, contents |> Enum.map(fn(content) -> col(content) end))
end
def row(options, content) when is_list(options), do: row(Enum.into(options, %{}), content)
def row(options, content) do
class = %{class: "#{options[:class]} row"}
opts = options |> Map.drop([:tag])
content_tag(default_tag(options[:tag]), content, Map.merge(opts, class) |> Map.to_list)
end
def col(content) do
opts = [class: "#{content[:class]} columns"]
content_tag(default_tag(content[:tag]), content[:content], opts)
end
defp default_tag(nil), do: :div
defp default_tag(tag) when is_atom(tag), do: tag
defp default_tag(tag), do: String.to_atom(tag)
end