Class: ModerntwConfirms::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/moderntw_confirms/install/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_modal_to_layoutObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/moderntw_confirms/install/install_generator.rb', line 25

def add_modal_to_layout
  say "Adding modal to application layout", :green

  layout_file = "app/views/layouts/application.html.erb"
  if File.exist?(Rails.root.join(layout_file))
    insert_into_file layout_file, before: "</body>" do
      "\n    <%= render 'shared/moderntw_confirms_modal' %>\n  "
    end
  else
    say "Please add <%= render 'shared/moderntw_confirms_modal' %> before </body> in your layout", :yellow
  end
end

#add_stimulus_controllerObject



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/generators/moderntw_confirms/install/install_generator.rb', line 38

def add_stimulus_controller
  if using_stimulus?
    say "Adding Stimulus controller for ModerntwConfirms", :green
    append_to_file "app/javascript/controllers/index.js" do
      <<~JS

        import ConfirmModalController from "moderntw_confirms/confirm_modal_controller"
        application.register("moderntw-confirms", ConfirmModalController)
      JS
    end
  end
end

#copy_modal_partialObject



20
21
22
23
# File 'lib/generators/moderntw_confirms/install/install_generator.rb', line 20

def copy_modal_partial
  say "Copying modal partial", :green
  copy_file "_moderntw_confirms_modal.html.erb", "app/views/shared/_moderntw_confirms_modal.html.erb"
end

#create_initializerObject



51
52
53
# File 'lib/generators/moderntw_confirms/install/install_generator.rb', line 51

def create_initializer
  template "moderntw_confirms.rb", "config/initializers/moderntw_confirms.rb"
end

#display_post_install_messageObject



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/generators/moderntw_confirms/install/install_generator.rb', line 55

def display_post_install_message
  say "\n  ModerntwConfirms has been installed successfully! 🎉", :green
  say "\n  Next steps:", :yellow
  say "  1. Make sure Tailwind CSS is installed and configured in your app"
  say "  2. Restart your Rails server"
  say "  3. All your data-confirm attributes will now use beautiful modals!"
  say "\n  Configuration:", :yellow
  say "  Edit config/initializers/moderntw_confirms.rb to customize modal styles"
  say "\n  Usage:", :yellow
  say "  Just use data-confirm as usual:"
  say '  <%= link_to "Delete", item_path(@item), method: :delete, data: { confirm: "Are you sure?" } %>'
  say "\n"
end

#install_javascriptObject



10
11
12
13
14
15
16
17
18
# File 'lib/generators/moderntw_confirms/install/install_generator.rb', line 10

def install_javascript
  if using_importmap?
    install_with_importmap
  elsif using_webpacker?
    install_with_webpacker
  else
    install_with_asset_pipeline
  end
end