Skip to content

Commit

Permalink
Turbo::StreamsChannel can set targets attribute
Browse files Browse the repository at this point in the history
Background:
- hotwired/turbo#113 allowed for multiple targets in turbo frame streams.
- hotwired#194 implemented it for `Turbo::Streams::TagBuilder`

This attempts to expose the feature on `Turbo::StreamsChannel` methods.
  • Loading branch information
ceritium committed Jul 29, 2021
1 parent ba86832 commit d645c29
Showing 1 changed file with 30 additions and 32 deletions.
62 changes: 30 additions & 32 deletions app/channels/turbo/streams/broadcasts.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,71 +5,69 @@
module Turbo::Streams::Broadcasts
include Turbo::Streams::ActionHelper

def broadcast_remove_to(*streamables, target:)
broadcast_action_to *streamables, action: :remove, target: target
def broadcast_remove_to(*streamables, **opts)
broadcast_action_to *streamables, action: :remove, **opts
end

def broadcast_replace_to(*streamables, target:, **rendering)
broadcast_action_to *streamables, action: :replace, target: target, **rendering
def broadcast_replace_to(*streamables, **opts)
broadcast_action_to *streamables, action: :replace, **opts
end

def broadcast_update_to(*streamables, target:, **rendering)
broadcast_action_to *streamables, action: :update, target: target, **rendering
def broadcast_update_to(*streamables, **opts)
broadcast_action_to *streamables, action: :update, **opts
end

def broadcast_before_to(*streamables, target:, **rendering)
broadcast_action_to *streamables, action: :before, target: target, **rendering
def broadcast_before_to(*streamables, **opts)
broadcast_action_to *streamables, action: :before, **opts
end

def broadcast_after_to(*streamables, target:, **rendering)
broadcast_action_to *streamables, action: :after, target: target, **rendering
def broadcast_after_to(*streamables, **opts)
broadcast_action_to *streamables, action: :after, **opts
end

def broadcast_append_to(*streamables, target:, **rendering)
broadcast_action_to *streamables, action: :append, target: target, **rendering
def broadcast_append_to(*streamables, **opts)
broadcast_action_to *streamables, action: :append, **opts
end

def broadcast_prepend_to(*streamables, target:, **rendering)
broadcast_action_to *streamables, action: :prepend, target: target, **rendering
def broadcast_prepend_to(*streamables, **opts)
broadcast_action_to *streamables, action: :prepend, **opts
end

def broadcast_action_to(*streamables, action:, target:, **rendering)
broadcast_stream_to *streamables, content: turbo_stream_action_tag(action, target: target, template:
def broadcast_action_to(*streamables, action:, target: nil, targets: nil, **rendering)
broadcast_stream_to *streamables, content: turbo_stream_action_tag(action, target: target, targets: targets, template:
rendering.delete(:content) || (rendering.any? ? render_format(:html, **rendering) : nil)
)
end


def broadcast_replace_later_to(*streamables, target:, **rendering)
broadcast_action_later_to *streamables, action: :replace, target: target, **rendering
def broadcast_replace_later_to(*streamables, **opts)
broadcast_action_later_to *streamables, action: :replace, **opts
end

def broadcast_update_later_to(*streamables, target:, **rendering)
broadcast_action_later_to *streamables, action: :update, target: target, **rendering
def broadcast_update_later_to(*streamables, **opts)
broadcast_action_later_to *streamables, action: :update, **opts
end

def broadcast_before_later_to(*streamables, target:, **rendering)
broadcast_action_later_to *streamables, action: :before, target: target, **rendering
def broadcast_before_later_to(*streamables, **opts)
broadcast_action_later_to *streamables, action: :before, **opts
end

def broadcast_after_later_to(*streamables, target:, **rendering)
broadcast_action_later_to *streamables, action: :after, target: target, **rendering
def broadcast_after_later_to(*streamables, **opts)
broadcast_action_later_to *streamables, action: :after, **opts
end

def broadcast_append_later_to(*streamables, target:, **rendering)
broadcast_action_later_to *streamables, action: :append, target: target, **rendering
def broadcast_append_later_to(*streamables, **opts)
broadcast_action_later_to *streamables, action: :append, **opts
end

def broadcast_prepend_later_to(*streamables, target:, **rendering)
broadcast_action_later_to *streamables, action: :prepend, target: target, **rendering
def broadcast_prepend_later_to(*streamables, **opts)
broadcast_action_later_to *streamables, action: :prepend, **opts
end

def broadcast_action_later_to(*streamables, action:, target:, **rendering)
def broadcast_action_later_to(*streamables, action:, target: nil, targets: nil, **rendering)
Turbo::Streams::ActionBroadcastJob.perform_later \
stream_name_from(streamables), action: action, target: target, **rendering
stream_name_from(streamables), action: action, target: target, targets: targets, **rendering
end


def broadcast_render_to(*streamables, **rendering)
broadcast_stream_to *streamables, content: render_format(:turbo_stream, **rendering)
end
Expand Down

0 comments on commit d645c29

Please sign in to comment.