class RailsModalManager::Generators::InstallGenerator
def add_importmap_pins
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
def add_javascript
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
def add_stylesheet
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
def add_taskbar_partial
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
def importmap?
def importmap? File.exist?("config/importmap.rb") end
def show_post_install
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