diff --git a/app/controllers/collections/columns_controller.rb b/app/controllers/collections/columns_controller.rb index 8fe6a796b..f9a746d41 100644 --- a/app/controllers/collections/columns_controller.rb +++ b/app/controllers/collections/columns_controller.rb @@ -1,11 +1,16 @@ class Collections::ColumnsController < ApplicationController - include CollectionScoped + include ActionView::RecordIdentifier, CollectionScoped - before_action :set_column, only: :show + before_action :set_column, only: [:show, :update] def create @column = @collection.columns.create!(column_params) - render turbo_stream: turbo_stream.before("closed-cards", partial: "collections/show/column", locals: { column: @column }) + render turbo_stream: turbo_stream.before("closed-cards", partial: "collections/show/column", method: :morph, locals: { column: @column }) + end + + def update + @column.update!(column_params) + render turbo_stream: turbo_stream.replace(dom_id(@column), partial: "collections/show/column", method: :morph, locals: { column: @column }) end def show diff --git a/app/javascript/controllers/clicker_controller.js b/app/javascript/controllers/clicker_controller.js new file mode 100644 index 000000000..d09cb9ede --- /dev/null +++ b/app/javascript/controllers/clicker_controller.js @@ -0,0 +1,11 @@ +import { Controller } from "@hotwired/stimulus" +import { nextFrame } from "helpers/timing_helpers"; + +export default class extends Controller { + static targets = [ "clickable" ] + + async click() { + await nextFrame() + this.clickableTarget.click() + } +} diff --git a/app/javascript/controllers/dialog_controller.js b/app/javascript/controllers/dialog_controller.js index 9341f4c25..44876b231 100644 --- a/app/javascript/controllers/dialog_controller.js +++ b/app/javascript/controllers/dialog_controller.js @@ -8,7 +8,7 @@ export default class extends Controller { } connect() { - this.dialogTarget.setAttribute('aria-hidden', 'true') + this.dialogTarget.setAttribute("aria-hidden", "true") } open() { @@ -21,7 +21,7 @@ export default class extends Controller { orient(this.dialogTarget) } - this.dialogTarget.setAttribute('aria-hidden', 'false') + this.dialogTarget.setAttribute("aria-hidden", "false") this.dispatch("show") } @@ -35,7 +35,7 @@ export default class extends Controller { close() { this.dialogTarget.close() - this.dialogTarget.setAttribute('aria-hidden', 'true') + this.dialogTarget.setAttribute("aria-hidden", "true") this.dialogTarget.blur() orient(this.dialogTarget, false) } diff --git a/app/views/collections/show/_column.html.erb b/app/views/collections/show/_column.html.erb index 1e21449fb..421343d58 100644 --- a/app/views/collections/show/_column.html.erb +++ b/app/views/collections/show/_column.html.erb @@ -3,10 +3,23 @@ data-drag-and-drop-target="container" data-drag-and-strum-target="container" data-collapsible-columns-target="column" + data-controller="clicker" data-action="turbo:before-morph-attribute->collapsible-columns#preventToggle" data-drag-and-drop-url="<%= columns_card_drops_column_path("__id__", column_id: column.id) %>" > - <%= render "collections/show/expander", title: column.name, count: column.cards.active.count %> + <%= render "collections/show/expander", title: column.name, count: column.cards.active.count do %> + <%= render "collections/show/menu/column", column: column %> + <% end %> + +