Sha256: 1fb4a900ed5e41ed01b8d9bfde0b658b1bd8a84c4da7a31aebfcd8f569834362

Contents?: true

Size: 1.96 KB

Versions: 3

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true

module Blacklight
  module Assets
    class ImportmapGenerator < Rails::Generators::Base
      class_option :'bootstrap-version', type: :string, default: ENV.fetch('BOOTSTRAP_VERSION', '~> 5.1'), desc: "Set the generated app's bootstrap version"

      # This could be skipped if you want to use webpacker
      def add_javascript_dependencies
        gem 'bootstrap', options[:'bootstrap-version'].presence # in rails 7, only for stylesheets
        gem 'jquery-rails' if bootstrap_4? # Bootstrap 4 has a dependency on jquery
      end

      def import_javascript_assets
        append_to_file 'config/importmap.rb' do
          <<~CONTENT
            pin "@popperjs/core", to: "https://ga.jspm.io/npm:@popperjs/core@2.11.6/dist/umd/popper.min.js"
            pin "bootstrap", to: "https://ga.jspm.io/npm:bootstrap@#{(defined?(Bootstrap) && Bootstrap::VERSION) || '5.2.2'}/dist/js/bootstrap.js"
            pin "blacklight", to: "blacklight/blacklight.js"
            pin "dialog-polyfill", to: "https://ga.jspm.io/npm:dialog-polyfill@0.5.6/dist/dialog-polyfill.js"
          CONTENT
        end
      end

      def append_blacklight_javascript
        append_to_file 'app/javascript/application.js' do
          <<~CONTENT
            import bootstrap from "bootstrap"
            import "blacklight"
            import dialogPolyfill from "dialog-polyfill"
            Blacklight.onLoad(() => {
              const dialog = document.querySelector('dialog')
              dialogPolyfill.registerDialog(dialog)
            })
          CONTENT
        end
      end

      def add_stylesheet
        gem "sassc-rails", "~> 2.1" if Rails.version > '7'

        create_file 'app/assets/stylesheets/blacklight.scss' do
          <<~CONTENT
            @import 'bootstrap';
            @import 'blacklight/blacklight';
          CONTENT
        end
      end

      def bootstrap_4?
        options[:'bootstrap-version'].match?(/\A[^0-9]*4\./)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
blacklight-8.0.0.beta3 lib/generators/blacklight/assets/importmap_generator.rb
blacklight-8.0.0.beta2 lib/generators/blacklight/assets/importmap_generator.rb
blacklight-8.0.0.beta1 lib/generators/blacklight/assets/importmap_generator.rb