Class: RailsModalManager::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#add_importmap_pinsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/generators/rails_modal_manager/install_generator.rb', line 12

def add_importmap_pins
  return unless importmap?

  say "Adding importmap pins..."

  append_to_file "config/importmap.rb" do
    <<~RUBY

      # Rails Modal Manager
      pin "rails_modal_manager", to: "rails_modal_manager/index.js"
      pin "rails_modal_manager/modal_store", to: "rails_modal_manager/modal_store.js"
      pin "rails_modal_manager/history_stack_manager", to: "rails_modal_manager/history_stack_manager.js"
      pin "rails_modal_manager/controllers/rmm_modal_controller", to: "rails_modal_manager/controllers/rmm_modal_controller.js"
      pin "rails_modal_manager/controllers/rmm_overlay_controller", to: "rails_modal_manager/controllers/rmm_overlay_controller.js"
      pin "rails_modal_manager/controllers/rmm_header_controller", to: "rails_modal_manager/controllers/rmm_header_controller.js"
      pin "rails_modal_manager/controllers/rmm_sidebar_controller", to: "rails_modal_manager/controllers/rmm_sidebar_controller.js"
      pin "rails_modal_manager/controllers/rmm_submenu_controller", to: "rails_modal_manager/controllers/rmm_submenu_controller.js"
      pin "rails_modal_manager/controllers/rmm_taskbar_controller", to: "rails_modal_manager/controllers/rmm_taskbar_controller.js"
      pin "rails_modal_manager/controllers/rmm_resize_handle_controller", to: "rails_modal_manager/controllers/rmm_resize_handle_controller.js"
    RUBY
  end
end

#add_javascriptObject



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/generators/rails_modal_manager/install_generator.rb', line 35

def add_javascript
  say "Adding JavaScript initialization..."

  append_to_file "app/javascript/application.js" do
    <<~JS

      // Rails Modal Manager
      import { registerRMMControllers, initHistoryStack } from "rails_modal_manager"
      registerRMMControllers(window.Stimulus)
      initHistoryStack()
    JS
  end
end

#add_stylesheetObject



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/generators/rails_modal_manager/install_generator.rb', line 49

def add_stylesheet
  say "Adding stylesheet import..."

  if File.exist?("app/assets/stylesheets/application.css")
    inject_into_file "app/assets/stylesheets/application.css", before: " */" do
      " *= require rails_modal_manager\n"
    end
  elsif File.exist?("app/assets/stylesheets/application.scss")
    append_to_file "app/assets/stylesheets/application.scss" do
      "\n@import \"rails_modal_manager\";\n"
    end
  end
end

#add_taskbar_partialObject



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/generators/rails_modal_manager/install_generator.rb', line 63

def add_taskbar_partial
  say "Creating taskbar partial..."

  create_file "app/views/layouts/_rmm_taskbar.html.erb", <<~ERB
    <%# Rails Modal Manager Taskbar %>
    <div class="rmm-taskbar"
         data-controller="rmm-taskbar"
         data-rmm-taskbar-target="container">
      <div class="rmm-taskbar-items" data-rmm-taskbar-target="items"></div>
    </div>
  ERB
end

#show_post_installObject



76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/generators/rails_modal_manager/install_generator.rb', line 76

def show_post_install
  say ""
  say "Rails Modal Manager installed successfully!", :green
  say ""
  say "Next steps:"
  say "  1. Add taskbar to your layout:"
  say "     <%= render 'layouts/rmm_taskbar' %>"
  say ""
  say "  2. Read the documentation:"
  say "     https://github.com/ordars/rails-modal-manager"
  say ""
end