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