don't erase what a user wrote when they go over max_label_length
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
defmodule LabelmakerWeb.Constants do
|
||||
@defaults %{
|
||||
label: "64 character maximum",
|
||||
label: "",
|
||||
font: "Helvetica",
|
||||
color: "black",
|
||||
outline: "none",
|
||||
size: "24"
|
||||
outline: "white",
|
||||
size: "32"
|
||||
}
|
||||
|
||||
@preview %{
|
||||
@@ -36,6 +36,7 @@ defmodule LabelmakerWeb.Constants do
|
||||
|> Enum.map(&String.trim_leading(&1, " Font: "))
|
||||
|
||||
@max_label_length 64
|
||||
@max_label_error "64-character maximum"
|
||||
|
||||
@outlines ~w(none white black gray)
|
||||
|
||||
@@ -50,6 +51,7 @@ defmodule LabelmakerWeb.Constants do
|
||||
def fonts, do: @fonts
|
||||
def font_count, do: @fonts |> length()
|
||||
def max_label_length, do: @max_label_length
|
||||
def max_label_error, do: @max_label_error
|
||||
def outlines, do: @outlines
|
||||
def permitted_keys, do: @permitted_keys
|
||||
def preview, do: @preview
|
||||
|
||||
@@ -6,7 +6,6 @@ defmodule LabelmakerWeb.Home do
|
||||
def mount(_params, _session, socket) do
|
||||
assigns =
|
||||
Constants.defaults()
|
||||
|> Map.replace(:label, "")
|
||||
|> Map.merge(Constants.preview())
|
||||
|> Enum.to_list()
|
||||
|
||||
@@ -45,9 +44,13 @@ defmodule LabelmakerWeb.Home do
|
||||
]}
|
||||
style={"height: calc(2rem + #{@preview_height}px); color: #{@color}; font-family: #{@font}; font-size: #{@size}px; line-height: #{@size}px;"}
|
||||
>
|
||||
<%= for {str, i} <- Enum.with_index(@preview_text) do %>
|
||||
{str}
|
||||
{if i < length(@preview_text) - 1, do: raw("<br />")}
|
||||
<%= if String.length(@label) > Constants.max_label_length() do %>
|
||||
{Constants.max_label_error()}
|
||||
<% else %>
|
||||
<%= for {str, i} <- Enum.with_index(@preview_text) do %>
|
||||
{str}
|
||||
{if i < length(@preview_text) - 1, do: raw("<br />")}
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -11,14 +11,23 @@ defmodule LabelmakerWeb.Tools do
|
||||
|> Map.take(Constants.permitted_keys())
|
||||
|> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
|
||||
|> Enum.map(fn
|
||||
{:preview_height, _} -> {:preview_height, size + size * line_breaks}
|
||||
{:preview_text, _} -> {:preview_text, String.split(label, "\\n")}
|
||||
pair -> pair
|
||||
{:label, label} ->
|
||||
if String.length(label) > Constants.max_label_length(),
|
||||
do: {:label, String.slice(label, 0, Constants.max_label_length())},
|
||||
else: {:label, label}
|
||||
|
||||
{:preview_height, _} ->
|
||||
{:preview_height, size + size * line_breaks}
|
||||
|
||||
{:preview_text, _} ->
|
||||
{:preview_text, String.split(label, "\\n")}
|
||||
|
||||
pair ->
|
||||
pair
|
||||
end)
|
||||
|> Enum.filter(fn
|
||||
{:color, color} -> color in Constants.colors()
|
||||
{:font, font} -> font in Constants.fonts()
|
||||
{:label, label} -> String.length(label) <= Constants.max_label_length()
|
||||
{:outline, outline} -> outline in Constants.outlines()
|
||||
{:size, size} -> size in Constants.sizes()
|
||||
_ -> true
|
||||
|
||||
Reference in New Issue
Block a user