diff --git a/app/controllers/collections/columns_controller.rb b/app/controllers/collections/columns_controller.rb
index f69a8b80b..8fe6a796b 100644
--- a/app/controllers/collections/columns_controller.rb
+++ b/app/controllers/collections/columns_controller.rb
@@ -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
diff --git a/app/models/column.rb b/app/models/column.rb
index 7191d333b..f62a728ce 100644
--- a/app/models/column.rb
+++ b/app/models/column.rb
@@ -4,4 +4,11 @@ class Column < ApplicationRecord
validates :name, presence: true
validates :color, presence: true
-end
\ No newline at end of file
+
+ before_validation :set_default_color
+
+ private
+ def set_default_color
+ self.color ||= Card::DEFAULT_COLOR
+ end
+end
diff --git a/app/views/collections/show/_columns.html.erb b/app/views/collections/show/_columns.html.erb
index 71e8b4e43..267a7a5c0 100644
--- a/app/views/collections/show/_columns.html.erb
+++ b/app/views/collections/show/_columns.html.erb
@@ -1,20 +1,17 @@
- <%= turbo_frame_tag :cards_container do %>
-
+<%= turbo_frame_tag :cards_container do %>
+
-
- <%= render "collections/show/not_now", collection: collection %>
-
-
- <%= render "collections/show/stream", collection: collection, page: page %>
-
-
- <%= render partial: "collections/show/column", collection: collection.columns, cached: true %>
- <%= render "collections/show/closed", collection: collection %>
-
-
- <%= icon_tag "menu-dots-horizontal" %>
- Add a new column, etc.
-
-
+
+ <%= render "collections/show/not_now", collection: collection %>
- <% end %>
+
+ <%= render "collections/show/stream", collection: collection, page: page %>
+
+
+ <%= render partial: "collections/show/column", collection: collection.columns, cached: true %>
+ <%= render "collections/show/closed", collection: collection %>
+
+ <%= render "collections/show/columns_menu", collection: collection %>
+
+
+<% end %>
diff --git a/app/views/collections/show/_columns_menu.html.erb b/app/views/collections/show/_columns_menu.html.erb
new file mode 100644
index 000000000..44f33b0ae
--- /dev/null
+++ b/app/views/collections/show/_columns_menu.html.erb
@@ -0,0 +1,11 @@
+
+
+ <%= icon_tag "add", class: "translucent", "aria-hidden": true %>
+
+
+ <%= 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 %>
+
+
diff --git a/test/models/column_test.rb b/test/models/column_test.rb
new file mode 100644
index 000000000..b65ff2037
--- /dev/null
+++ b/test/models/column_test.rb
@@ -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