Module: UI::DialogBehavior

Included in:
Dialog, DialogComponent
Defined in:
app/behaviors/ui/dialog_behavior.rb

Overview

UI::DialogBehavior

Instance Method Summary collapse

Instance Method Details

#dialog_base_classesObject

Base CSS classes



63
64
65
# File 'app/behaviors/ui/dialog_behavior.rb', line 63

def dialog_base_classes
  ""
end

#dialog_classesObject

Generate final classes using TailwindMerge



68
69
70
# File 'app/behaviors/ui/dialog_behavior.rb', line 68

def dialog_classes
  TailwindMerge::Merger.new.merge([dialog_base_classes, @classes].compact.join(" "))
end

#dialog_data_attributesObject

Generate data attributes for Stimulus controller



34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/behaviors/ui/dialog_behavior.rb', line 34

def dialog_data_attributes
  attrs = {
    controller: "ui--dialog",
    ui__dialog_open_value: @open.to_s
  }

  # Only add optional values if they are explicitly set (not nil)
  attrs[:ui__dialog_close_on_escape_value] = @close_on_escape.to_s unless @close_on_escape.nil?
  attrs[:ui__dialog_close_on_overlay_click_value] = @close_on_overlay_click.to_s unless @close_on_overlay_click.nil?

  attrs
end

#dialog_html_attributesObject

Build complete HTML attributes hash



54
55
56
57
58
59
60
# File 'app/behaviors/ui/dialog_behavior.rb', line 54

def dialog_html_attributes
  base_attrs = @attributes&.except(:data) || {}
  base_attrs.merge(
    class: dialog_classes,
    data: merged_dialog_data_attributes
  )
end

#merged_dialog_data_attributesObject

Merge user-provided data attributes



48
49
50
51
# File 'app/behaviors/ui/dialog_behavior.rb', line 48

def merged_dialog_data_attributes
  user_data = @attributes&.fetch(:data, {}) || {}
  user_data.merge(dialog_data_attributes)
end