Module: UI::SheetBehavior

Included in:
Sheet, SheetComponent
Defined in:
app/behaviors/ui/sheet_behavior.rb

Overview

UI::SheetBehavior

Instance Method Summary collapse

Instance Method Details

#merged_sheet_data_attributesObject

Merge user-provided data attributes



44
45
46
47
# File 'app/behaviors/ui/sheet_behavior.rb', line 44

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

#sheet_base_classesObject

Base CSS classes



59
60
61
# File 'app/behaviors/ui/sheet_behavior.rb', line 59

def sheet_base_classes
  ""
end

#sheet_classesObject

Generate final classes using TailwindMerge



64
65
66
# File 'app/behaviors/ui/sheet_behavior.rb', line 64

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

#sheet_data_attributesObject

Generate data attributes for Stimulus controller



30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/behaviors/ui/sheet_behavior.rb', line 30

def sheet_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

#sheet_html_attributesObject

Build complete HTML attributes hash



50
51
52
53
54
55
56
# File 'app/behaviors/ui/sheet_behavior.rb', line 50

def sheet_html_attributes
  base_attrs = @attributes&.except(:data) || {}
  base_attrs.merge(
    class: sheet_classes,
    data: merged_sheet_data_attributes
  )
end