Add columns

This commit is contained in:
Jorge Manrubia
2025-09-27 08:40:45 +02:00
parent f3959ced0d
commit 47eaecae31
5 changed files with 53 additions and 20 deletions
@@ -1,7 +1,12 @@
class Collections::ColumnsController < ApplicationController
include CollectionScoped
before_action :set_column
before_action :set_column, only: :show
def create
@column = @collection.columns.create!(column_params)
render turbo_stream: turbo_stream.before("closed-cards", partial: "collections/show/column", locals: { column: @column })
end
def show
set_page_and_extract_portion_from @column.cards.active.reverse_chronologically
@@ -11,4 +16,8 @@ class Collections::ColumnsController < ApplicationController
def set_column
@column = @collection.columns.find(params[:id])
end
def column_params
params.require(:column).permit(:name)
end
end
+8 -1
View File
@@ -4,4 +4,11 @@ class Column < ApplicationRecord
validates :name, presence: true
validates :color, presence: true
end
before_validation :set_default_color
private
def set_default_color
self.color ||= Card::DEFAULT_COLOR
end
end
+15 -18
View File
@@ -1,20 +1,17 @@
<%= turbo_frame_tag :cards_container do %>
<div class="card-columns" data-controller="collapsible-columns" data-collapsible-columns-collapsed-class="is-collapsed">
<%= turbo_frame_tag :cards_container do %>
<div class="card-columns" data-controller="collapsible-columns" data-collapsible-columns-collapsed-class="is-collapsed">
<div class="card-columns__left">
<%= render "collections/show/not_now", collection: collection %>
</div>
<%= render "collections/show/stream", collection: collection, page: page %>
<div class="card-columns__right">
<%= render partial: "collections/show/column", collection: collection.columns, cached: true %>
<%= render "collections/show/closed", collection: collection %>
<button class="btn btn--circle txt-x-small borderless">
<%= icon_tag "menu-dots-horizontal" %>
<span class="for-screen-reader">Add a new column, etc.</span>
</button>
</div>
<div class="card-columns__left">
<%= render "collections/show/not_now", collection: collection %>
</div>
<% end %>
<%= render "collections/show/stream", collection: collection, page: page %>
<div class="card-columns__right">
<%= render partial: "collections/show/column", collection: collection.columns, cached: true %>
<%= render "collections/show/closed", collection: collection %>
<%= render "collections/show/columns_menu", collection: collection %>
</div>
</div>
<% end %>
@@ -0,0 +1,11 @@
<div class="position-relative" data-controller="dialog" data-action="keydown.esc->dialog#close click@document->dialog#closeOnClickOutside">
<button class="btn btn--circle txt-x-small borderless" data-action="click->dialog#open:stop" aria-label="Add a new column, etc.">
<%= icon_tag "add", class: "translucent", "aria-hidden": true %>
</button>
<dialog class="popup panel flex-column gap fill-white shadow txt-small margin-block-double" data-dialog-target="dialog">
<%= form_with model: [ collection, Column.new ], data: { action: "turbo:submit-end->dialog#close" } do |form| %>
<%= form.text_field :name, class: "input", placeholder: "Column name", required: true %>
<%= form.submit "Add a column", class: "btn btn--link" %>
<% end %>
</dialog>
</div>
+9
View File
@@ -0,0 +1,9 @@
require "test_helper"
class ColumnTest < ActiveSupport::TestCase
test "creates column with default color when color not provided" do
column = collections(:writebook).columns.create!(name: "New Column")
assert_equal Card::DEFAULT_COLOR, column.color
end
end