Add column color names

This commit is contained in:
Andy Smith
2025-11-13 17:30:01 -06:00
parent 9e0d9f4019
commit 8ad0d05750
11 changed files with 29 additions and 36 deletions
-8
View File
@@ -209,14 +209,6 @@
/* Colors: Cards */
--color-card-default: oklch(var(--lch-blue-dark));
--color-card-complete: var(--color-ink-darker);
--color-card-1: oklch(var(--lch-ink-medium));
--color-card-2: oklch(var(--lch-uncolor-medium));
--color-card-3: oklch(var(--lch-yellow-medium));
--color-card-4: oklch(var(--lch-lime-medium));
--color-card-5: oklch(var(--lch-aqua-medium));
--color-card-6: oklch(var(--lch-violet-medium));
--color-card-7: oklch(var(--lch-purple-medium));
--color-card-8: oklch(var(--lch-pink-medium));
/* Colors: Syntax highlighting */
--color-code-token__att: oklch(var(--lch-blue-dark));
+1 -1
View File
@@ -9,7 +9,7 @@ module CardsHelper
tag.article \
id: id,
style: "--card-color: #{card.color}; view-transition-name: #{id}",
style: "--card-color: #{card.color[:value]}; view-transition-name: #{id}",
class: classes,
**options,
&block
+1 -1
View File
@@ -2,7 +2,7 @@ module MessagesHelper
def messages_tag(card, &)
turbo_frame_tag dom_id(card, :messages),
class: "comments gap center",
style: "--card-color: #{card.color}",
style: "--card-color: #{card.color[:value]}",
role: "group", aria: { label: "Messages" },
data: {
controller: "created-by-current-user",
+1 -1
View File
@@ -29,7 +29,7 @@ module NotificationsHelper
link_to(notification,
class: [ "card card--notification", { "card--closed": notification.card.closed? }, { "unread": !notification.read? } ],
data: { turbo_frame: "_top", badge_target: "unread", action: "badge#update dialog#close" },
style: { "--card-color:": notification.card.color },
style: { "--card-color:": notification.card.color[:value] },
&)
end
end
+17 -16
View File
@@ -1,24 +1,25 @@
module Card::Colored
extend ActiveSupport::Concern
COLORS = %w[
var(--color-card-1)
var(--color-card-2)
var(--color-card-3)
var(--color-card-4)
var(--color-card-5)
var(--color-card-6)
var(--color-card-7)
var(--color-card-8)
COLORS = [
{ name: "Blue", value: "var(--color-card-default)" },
{ name: "Gray", value: "oklch(var(--lch-ink-dark))" },
{ name: "Tan", value: "oklch(var(--lch-uncolor-medium))" },
{ name: "Yellow", value: "oklch(var(--lch-yellow-medium))" },
{ name: "Lime", value: "oklch(var(--lch-lime-medium))" },
{ name: "Aqua", value: "oklch(var(--lch-aqua-medium))" },
{ name: "Violet", value: "oklch(var(--lch-violet-medium))" },
{ name: "Purple", value: "oklch(var(--lch-purple-medium))" },
{ name: "Pink", value: "oklch(var(--lch-pink-medium))" }
]
DEFAULT_COLOR = "var(--color-card-default)"
DEFAULT_COLOR = COLORS.first
def color
color_from_column || DEFAULT_COLOR
end
private
def color_from_column
column&.color&.presence
if column&.color.present?
found = COLORS.find { |c| c[:value] == column.color }
return found || { name: column.color, value: column.color }
else
DEFAULT_COLOR
end
end
end
+1 -1
View File
@@ -4,7 +4,7 @@ class Column < ApplicationRecord
belongs_to :board, touch: true
has_many :cards, dependent: :nullify
before_validation -> { self.color ||= Card::DEFAULT_COLOR }
before_validation -> { self.color ||= Card::DEFAULT_COLOR[:value] }
after_save_commit -> { cards.touch_all }, if: -> { saved_change_to_name? || saved_change_to_color? }
after_destroy_commit -> { board.cards.touch_all }
end
@@ -3,11 +3,11 @@
required: true, autocomplete: "off", pattern: ".*\\S.*", title: "Column name cannot be blank", data: { action: "focus->form#select" } %>
<div class="color-picker__colors">
<% ([Card::DEFAULT_COLOR] + Card::COLORS).each do |color| %>
<label class="btn txt-small borderless" style="--btn-background: <%= color %>" title="<%= color %>">
<%= form.radio_button :color, color, checked: (column.color == color || (column.new_record? && color == Card::DEFAULT_COLOR)) %>
<% (Card::COLORS).each do |color| %>
<label class="btn txt-small borderless" style="--btn-background: <%= color[:value] %>" title="<%= color[:name] %>">
<%= form.radio_button :color, color[:value], checked: (column.color == color[:value] || (column.new_record? && color[:value] == Card::DEFAULT_COLOR[:value])) %>
<%= icon_tag "check", class: "checked" %>
<span class="for-screen-reader"><%= color %></span>
<span class="for-screen-reader"><%= color[:name] %></span>
</label>
<% end %>
</div>
+1 -1
View File
@@ -1,5 +1,5 @@
<% cache card do %>
<section id="<%= dom_id(card, :card_container) %>" class="card-perma" style="--card-color: <%= card.color %>;">
<section id="<%= dom_id(card, :card_container) %>" class="card-perma" style="--card-color: <%= card.color[:value] %>;">
<div class="card-perma__actions card-perma__actions--left">
<%= render "cards/container/gild", card: card if card.published? && !card.closed? %>
<%= render "cards/container/image", card: card %>
+1 -1
View File
@@ -1,7 +1,7 @@
<%= link_to event.notifiable_target,
id: dom_id(event, "timelined"),
class: "event event--#{ event.action } #{ "golden-effect" if event.card.golden? } center-block flex flex-column full-width align-start justify-start position-relative",
style: "--card-color: #{ card.closed? ? "var(--color-card-complete)" : card.color };",
style: "--card-color: #{ card.closed? ? "var(--color-card-complete)" : card.color[:value] };",
target: "_top",
data: {
related_element_target: "related",
+1 -1
View File
@@ -19,7 +19,7 @@
<% end %>
<section id="<%= dom_id(@card, :card_container) %>"
class="card-perma card-perma--public" data-controller="lightbox" style="--card-color: <%= @card.color %>;">
class="card-perma card-perma--public" data-controller="lightbox" style="--card-color: <%= @card.color[:value] %>;">
<div class="card-perma__bg">
<%= card_article_tag @card, class: "card" do %>
<header class="card__header">
+1 -1
View File
@@ -4,7 +4,7 @@ class ColumnTest < ActiveSupport::TestCase
test "creates column with default color when color not provided" do
column = boards(:writebook).columns.create!(name: "New Column")
assert_equal Card::DEFAULT_COLOR, column.color
assert_equal Card::DEFAULT_COLOR[:value], column.color
end
test "touch all the cards when the name or color changes" do