Add columns
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user