From 0f8859eca1cb8413803a79179e8a0b9cbafc722d Mon Sep 17 00:00:00 2001 From: stephann <3025661+stephannv@users.noreply.github.com> Date: Tue, 19 Nov 2024 10:45:04 -0300 Subject: [PATCH] Add tailwindcss-animate config --- lib/generators/ruby_ui/component_generator.rb | 34 ++---------------- .../ruby_ui/install/install_generator.rb | 9 +++++ .../tailwind.config.js.js-package.erb | 3 ++ .../tailwind.config.js.tailwindcss-rails.erb | 1 + lib/generators/ruby_ui/javascript_utils.rb | 36 +++++++++++++++++++ 5 files changed, 52 insertions(+), 31 deletions(-) create mode 100644 lib/generators/ruby_ui/javascript_utils.rb diff --git a/lib/generators/ruby_ui/component_generator.rb b/lib/generators/ruby_ui/component_generator.rb index b77d5940..c65d9680 100644 --- a/lib/generators/ruby_ui/component_generator.rb +++ b/lib/generators/ruby_ui/component_generator.rb @@ -1,6 +1,9 @@ +require_relative "javascript_utils" module RubyUI module Generators class ComponentGenerator < Rails::Generators::Base + include RubyUI::Generators::JavascriptUtils + namespace "ruby_ui:component" source_root File.expand_path("../../ruby_ui", __dir__) @@ -92,29 +95,6 @@ def install_js_packages(js_packages) end end - def install_js_package(package) - if using_importmap? - pin_with_importmap(package) - elsif using_yarn? - run "yarn add #{package}" - elsif using_npm? - run "npm install #{package}" - else - say "Could not detect the package manager, you need to install '#{package}' manually", :red - end - end - - def pin_with_importmap(package) - case package - when "motion" - pin_motion - when "tippy.js" - pin_tippy_js - else - run "bin/importmap pin #{package}" - end - end - def pin_motion say <<~TEXT WARNING: Installing motion from CDN because `bin/importmap pin motion` doesn't download the correct file. @@ -141,14 +121,6 @@ def dependencies @dependencies[component_folder_name] end - - def using_importmap? - File.exist?(Rails.root.join("config/importmap.rb")) && File.exist?(Rails.root.join("bin/importmap")) - end - - def using_npm? = File.exist?(Rails.root.join("package-lock.json")) - - def using_yarn? = File.exist?(Rails.root.join("yarn.lock")) end end end diff --git a/lib/generators/ruby_ui/install/install_generator.rb b/lib/generators/ruby_ui/install/install_generator.rb index 27d3c775..4d542387 100644 --- a/lib/generators/ruby_ui/install/install_generator.rb +++ b/lib/generators/ruby_ui/install/install_generator.rb @@ -1,8 +1,11 @@ require "rails/generators" +require_relative "../javascript_utils" module RubyUI module Generators class InstallGenerator < Rails::Generators::Base + include RubyUI::Generators::JavascriptUtils + namespace "ruby_ui:install" source_root File.expand_path("templates", __dir__) @@ -66,6 +69,12 @@ def add_tailwind_config end end + def install_tailwind_animate + say "Installing tailwindcss-animate plugin" + + install_js_package("tailwindcss-animate") + end + def add_ruby_ui_base say "Adding RubyUI::Base component" template "../../../../ruby_ui/base.rb", Rails.root.join("app/components/ruby_ui/base.rb") diff --git a/lib/generators/ruby_ui/install/templates/tailwind.config.js.js-package.erb b/lib/generators/ruby_ui/install/templates/tailwind.config.js.js-package.erb index 490640ef..fb50dfe8 100644 --- a/lib/generators/ruby_ui/install/templates/tailwind.config.js.js-package.erb +++ b/lib/generators/ruby_ui/install/templates/tailwind.config.js.js-package.erb @@ -71,4 +71,7 @@ module.exports = { }, }, }, + plugins: [ + require("tailwindcss-animate"), + ], } diff --git a/lib/generators/ruby_ui/install/templates/tailwind.config.js.tailwindcss-rails.erb b/lib/generators/ruby_ui/install/templates/tailwind.config.js.tailwindcss-rails.erb index 4ef7d106..0189af0a 100644 --- a/lib/generators/ruby_ui/install/templates/tailwind.config.js.tailwindcss-rails.erb +++ b/lib/generators/ruby_ui/install/templates/tailwind.config.js.tailwindcss-rails.erb @@ -77,5 +77,6 @@ module.exports = { require('@tailwindcss/forms'), require('@tailwindcss/typography'), require('@tailwindcss/container-queries'), + require("../vendor/javascript/tailwindcss-animate") ] } diff --git a/lib/generators/ruby_ui/javascript_utils.rb b/lib/generators/ruby_ui/javascript_utils.rb new file mode 100644 index 00000000..89b10183 --- /dev/null +++ b/lib/generators/ruby_ui/javascript_utils.rb @@ -0,0 +1,36 @@ +module RubyUI + module Generators + module JavascriptUtils + def install_js_package(package) + if using_importmap? + pin_with_importmap(package) + elsif using_yarn? + run "yarn add #{package}" + elsif using_npm? + run "npm install #{package}" + else + say "Could not detect the package manager, you need to install '#{package}' manually", :red + end + end + + def pin_with_importmap(package) + case package + when "motion" + pin_motion + when "tippy.js" + pin_tippy_js + else + run "bin/importmap pin #{package}" + end + end + + def using_importmap? + File.exist?(Rails.root.join("config/importmap.rb")) && File.exist?(Rails.root.join("bin/importmap")) + end + + def using_npm? = File.exist?(Rails.root.join("package-lock.json")) + + def using_yarn? = File.exist?(Rails.root.join("yarn.lock")) + end + end +end