Class: StimulusReflex::SelectorBroadcaster
- Inherits:
-
Broadcaster
show all
- Defined in:
- lib/stimulus_reflex/broadcasters/selector_broadcaster.rb
Instance Attribute Summary
Attributes inherited from Broadcaster
#cable_ready, #logger, #operations, #reflex
Instance Method Summary
collapse
Methods inherited from Broadcaster
#broadcast_error, #broadcast_forbid, #broadcast_halt, #initialize, #nothing?, #page?
Instance Method Details
#append_morph(selectors, html) ⇒ Object
42
43
44
|
# File 'lib/stimulus_reflex/broadcasters/selector_broadcaster.rb', line 42
def append_morph(selectors, html)
morphs << [selectors, html]
end
|
#broadcast(_, data = {}) ⇒ Object
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/stimulus_reflex/broadcasters/selector_broadcaster.rb', line 5
def broadcast(_, data = {})
morphs.each do |morph|
selectors, html = morph
updates = create_update_collection(selectors, html)
updates.each do |update|
document = StimulusReflex::HTML::DocumentFragment.new(update.html)
match = document.match(update.selector)
if match.present?
operations << [update.selector, StimulusReflex.config.morph_operation]
cable_ready.send StimulusReflex.config.morph_operation, {
selector: update.selector,
html: match.inner_html,
payload: payload,
children_only: true,
permanent_attribute_name: permanent_attribute_name,
stimulus_reflex: data.merge(morph: to_sym)
}
else
operations << [update.selector, StimulusReflex.config.replace_operation]
cable_ready.send StimulusReflex.config.replace_operation, {
selector: update.selector,
html: update.html.to_s,
payload: payload,
stimulus_reflex: data.merge(morph: to_sym)
}
end
end
end
cable_ready.broadcast
morphs.clear
end
|
#morphs ⇒ Object
38
39
40
|
# File 'lib/stimulus_reflex/broadcasters/selector_broadcaster.rb', line 38
def morphs
@morphs ||= []
end
|
#selector? ⇒ Boolean
50
51
52
|
# File 'lib/stimulus_reflex/broadcasters/selector_broadcaster.rb', line 50
def selector?
true
end
|
#to_s ⇒ Object
54
55
56
|
# File 'lib/stimulus_reflex/broadcasters/selector_broadcaster.rb', line 54
def to_s
"Selector"
end
|
#to_sym ⇒ Object
46
47
48
|
# File 'lib/stimulus_reflex/broadcasters/selector_broadcaster.rb', line 46
def to_sym
:selector
end
|