Class: TurboBoost::Elements::TagBuilders::ToggleTagsBuilder
- Inherits:
-
BaseTagBuilder
- Object
- BaseTagBuilder
- TurboBoost::Elements::TagBuilders::ToggleTagsBuilder
- Defined in:
- lib/turbo_boost/elements/tag_builders/toggle_tags_builder.rb
Instance Attribute Summary
Attributes inherited from BaseTagBuilder
Instance Method Summary collapse
- #busy_tag(**kwargs, &block) ⇒ Object
- #target_collapsed?(dom_id) ⇒ Boolean
- #target_expanded?(dom_id) ⇒ Boolean
- #target_tag(id, collapse_on: [], collapse_selector: nil, focus_selector: nil, expanded: false, **kwargs, &block) ⇒ Object
- #trigger_tag(renders:, morphs:, controls:, collapse_selector: nil, focus_selector: nil, method: :toggle, disabled: false, expanded: false, remember: false, **kwargs, &block) ⇒ Object
Methods inherited from BaseTagBuilder
#initialize, #render_tag, #view_stack
Constructor Details
This class inherits a constructor from TurboBoost::Elements::TagBuilders::BaseTagBuilder
Instance Method Details
#busy_tag(**kwargs, &block) ⇒ Object
6 7 8 9 |
# File 'lib/turbo_boost/elements/tag_builders/toggle_tags_builder.rb', line 6 def busy_tag(**kwargs, &block) kwargs[:slot] = "busy" render_tag("turbo-boost", loading: :eager, **kwargs, &block) end |
#target_collapsed?(dom_id) ⇒ Boolean
88 89 90 |
# File 'lib/turbo_boost/elements/tag_builders/toggle_tags_builder.rb', line 88 def target_collapsed?(dom_id) !(dom_id) end |
#target_expanded?(dom_id) ⇒ Boolean
84 85 86 |
# File 'lib/turbo_boost/elements/tag_builders/toggle_tags_builder.rb', line 84 def (dom_id) !!controller_pack.command_state[dom_id] end |
#target_tag(id, collapse_on: [], collapse_selector: nil, focus_selector: nil, expanded: false, **kwargs, &block) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/turbo_boost/elements/tag_builders/toggle_tags_builder.rb', line 57 def target_tag( id, # REQUIRED, the `dom_id` for the element collapse_on: [], # list of events that will collapse this target collapse_selector: nil, # CSS selector for other matching targets to collapse when this target is expanded focus_selector: nil, # CSS selector for the element to focus when this target is expanded expanded: false, # override to force expansion **kwargs, # generic support for additional element attributes like `class` etc. &block # a Ruby block that emits this target's content ) kwargs = kwargs.with_indifferent_access kwargs[:id] = id kwargs[:collapse_on] = collapse_on.to_json if collapse_on.present? kwargs[:collapse_selector] = collapse_selector kwargs[:focus_selector] = focus_selector kwargs[:role] = "region" # aria kwargs[:aria] ||= {} kwargs[:aria][:live] ||= "polite" # rendering kwargs[:view_stack] = view_stack.to_json if Rails.env.development? loading = ( || (id)) ? :eager : :lazy render_tag("turbo-boost-toggle-target", loading: loading, **kwargs, &block) end |
#trigger_tag(renders:, morphs:, controls:, collapse_selector: nil, focus_selector: nil, method: :toggle, disabled: false, expanded: false, remember: false, **kwargs, &block) ⇒ Object
def content_tag(loading: :eager, **kwargs, &block)
kwargs[:slot] = "content"
kwargs[:hidden] = true
render_tag("turbo-boost", loading: loading, **kwargs, &block)
end
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/turbo_boost/elements/tag_builders/toggle_tags_builder.rb', line 17 def trigger_tag( renders:, # REQUIRED, the partial path to render morphs:, # REQUIRED, `dom_id` of the partial's outermost containing element controls:, # REQUIRED, `dom_id` of the toggle target collapse_selector: nil, # CSS selector for other matching targets to collapse when the target is expanded focus_selector: nil, # CSS selector for the element to focus when the target is expanded method: :toggle, # method to inovke (:show, :hide, :toggle) disabled: false, # disable the trigger expanded: false, # override to force expansion remember: false, # remember ephemeral UI state between requests **kwargs, # generic support for additional element attributes like `class` etc. &block # a Ruby block that emits this trigger's content ) kwargs = kwargs.with_indifferent_access kwargs[:id] ||= "#{controls}-toggle-trigger" # command kwargs[:data] ||= {} kwargs[:data][:turbo_command] = "TurboBoost::Elements::ToggleCommand##{method}" unless disabled # aria kwargs[:aria] ||= {} kwargs[:aria][:controls] = controls # toggle target kwargs[:aria][:expanded] = || (controls) kwargs[:aria][:atomic] ||= true kwargs[:aria][:relevant] ||= "all" # rendering kwargs[:renders] = renders kwargs[:morphs] = morphs kwargs[:view_stack] = view_stack.to_json if Rails.env.development? # misc kwargs[:collapse_selector] = collapse_selector kwargs[:focus_selector] = focus_selector kwargs[:remember] = !!remember render_tag("turbo-boost-toggle-trigger", loading: :eager, **kwargs, &block) end |