class HotwiredComponent::ComponentGenerator

Generates ViewComponents with Stimulus/Hotwire

Public Instance Methods

create_component_file() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 9
def create_component_file
  template(
    "component.rb.erb",
    File.join("app/components", class_path, "#{file_name}_component.rb")
  )
end
create_javascript_file() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 38
def create_javascript_file
  template(
    "component_controller.js.erb",
    File.join(
      "app/components",
      class_path,
      "#{file_name}_component/component_controller.js"
    )
  )
end
create_scss_file() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 16
def create_scss_file
  template(
    "component.scss.erb",
    File.join(
      "app/components",
      class_path,
      "#{file_name}_component/#{file_name}_component.scss"
    )
  )
end
create_template_file() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 27
def create_template_file
  create_file(
    File.join(
      "app/components",
      class_path,
      "#{file_name}_component/#{file_name}_component.html.erb"
    ),
    component_div
  )
end
create_test_file() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 49
def create_test_file
  template(
    "component_test.rb.erb",
    File.join("test/components", class_path,
      "#{file_name}_component_test.rb")
  )
end

Private Instance Methods

component_div() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 63
def component_div
  "<div class=\"#{css_class_name}\" " \
    "data-controller=\"#{class_path.join('--')}--" \
    "#{file_name.dasherize}--component\">" \
  "</div>"
end
css_class_name() click to toggle source
# File lib/generators/hotwired_component/component/component_generator.rb, line 59
def css_class_name
  "#{class_path.join('-')}-#{file_name}"
end