From 9cc36211442aef09ba8a1e2ed3e2900e27ad6a1c Mon Sep 17 00:00:00 2001 From: Gavin McDonald Date: Sun, 11 May 2025 15:01:19 -0400 Subject: [PATCH] visual warning when max_label_length exceeded --- assets/css/app.css | 9 +++++++++ assets/tailwind.config.js | 1 + lib/labelmaker_web/controllers/label_controller.ex | 3 ++- lib/labelmaker_web/live/home.ex | 12 ++++++------ lib/labelmaker_web/tools.ex | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index f9da58f..0f204e4 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -28,3 +28,12 @@ -1px 1px 0 white, 1px 1px 0 white; } + +.outline-danger { + color: #ff6b6b; + text-shadow: + -1px -1px 0 #ff6b6b, + 1px -1px 0 #ff6b6b, + -1px 1px 0 #ff6b6b, + 1px 1px 0 #ff6b6b; +} diff --git a/assets/tailwind.config.js b/assets/tailwind.config.js index a12cde6..15c790c 100644 --- a/assets/tailwind.config.js +++ b/assets/tailwind.config.js @@ -13,6 +13,7 @@ module.exports = { colors: { primary: '#6495ED', // cornflowerblue highlight: '#74A0EF', + danger: '#FF6B6B', bg: { light: '#D1DFFA', dark: '#1E2D47', diff --git a/lib/labelmaker_web/controllers/label_controller.ex b/lib/labelmaker_web/controllers/label_controller.ex index 404e67a..d191b1c 100644 --- a/lib/labelmaker_web/controllers/label_controller.ex +++ b/lib/labelmaker_web/controllers/label_controller.ex @@ -1,5 +1,6 @@ defmodule LabelmakerWeb.LabelController do use LabelmakerWeb, :controller + alias LabelmakerWeb.Constants alias LabelmakerWeb.Tools @label_dir Path.join(:code.priv_dir(:labelmaker), "static/labels") @@ -36,7 +37,7 @@ defmodule LabelmakerWeb.LabelController do options.size, "-font", options.font, - "label:#{options.label}", + "label:#{String.slice(options.label, 0, Constants.max_label_length())}", "-set", "comment", inspect(Jason.encode!(options)), diff --git a/lib/labelmaker_web/live/home.ex b/lib/labelmaker_web/live/home.ex index 854d22a..73bbff9 100644 --- a/lib/labelmaker_web/live/home.ex +++ b/lib/labelmaker_web/live/home.ex @@ -33,18 +33,18 @@ defmodule LabelmakerWeb.Home do end def render(assigns) do + label_too_long = String.length(assigns.label) > Constants.max_label_length() + ~H"""

Labelmaker

- <%= if String.length(@label) > Constants.max_label_length() do %> + <%= if label_too_long do %> {Constants.max_label_error()} <% else %> <%= for {str, i} <- Enum.with_index(@preview_text) do %> @@ -63,7 +63,7 @@ defmodule LabelmakerWeb.Home do name="label" value={@label} placeholder="Enter text" - class="mt-1 block w-full rounded border border-gray-300 px-3 py-2 bg-secondary-light text-fg-light dark:bg-secondary-dark dark:text-fg-dark dark:border-gray-600 focus:ring-primary dark:placeholder-gray-400/50" + class={"mt-1 block w-full rounded border border-gray-300 px-3 py-2 text-fg-light dark:text-fg-dark dark:border-gray-600 focus:ring-primary dark:placeholder-gray-400/50 transition duration-300 #{if label_too_long, do: "bg-danger", else: "bg-secondary-light dark:bg-secondary-dark"}"} />
diff --git a/lib/labelmaker_web/tools.ex b/lib/labelmaker_web/tools.ex index 73b34a3..c5340ad 100644 --- a/lib/labelmaker_web/tools.ex +++ b/lib/labelmaker_web/tools.ex @@ -13,7 +13,7 @@ defmodule LabelmakerWeb.Tools do |> Enum.map(fn {:label, label} -> if String.length(label) > Constants.max_label_length(), - do: {:label, String.slice(label, 0, Constants.max_label_length())}, + do: {:label, String.slice(label, 0, Constants.max_label_length() + 1)}, else: {:label, label} {:preview_height, _} ->