diff options
author | Gleb Mazovetskiy <glex.spb@gmail.com> | 2022-07-20 11:45:40 +0300 |
---|---|---|
committer | Gleb Mazovetskiy <glex.spb@gmail.com> | 2022-07-20 11:45:40 +0300 |
commit | badd3aed1ad8e7659485865687412ad3a27ff6a3 (patch) | |
tree | 94a6cd881c59c537654ff94dc143d5f190f61af6 | |
parent | 9892831e005bdb2da72f41aa42a6391baa6ad188 (diff) |
Prepare for v5.2.0
Updater script:
1. Upstream uses relative paths for import. Support that.
2. Upstream no longer inlines any sources in js/dist/.
Integration JS:
1. Popper is now referenced via `globalThis["@popperjs/core"]`
(previously: `globalThis["Popper"]`).
Dependencies:
1. Minimum Popper version bumped to 2.11.5
-rw-r--r-- | assets/javascripts/bootstrap-global-this-define.js | 2 | ||||
-rw-r--r-- | bootstrap.gemspec | 2 | ||||
-rw-r--r-- | tasks/updater/js.rb | 13 |
3 files changed, 11 insertions, 6 deletions
diff --git a/assets/javascripts/bootstrap-global-this-define.js b/assets/javascripts/bootstrap-global-this-define.js index 82c26f5..f3a3cc1 100644 --- a/assets/javascripts/bootstrap-global-this-define.js +++ b/assets/javascripts/bootstrap-global-this-define.js @@ -1,6 +1,6 @@ // Set a `globalThis` so that bootstrap components are defined on window.bootstrap instead of window. window['bootstrap'] = { - Popper: window.Popper, + "@popperjs/core": window.Popper, _originalGlobalThis: window['globalThis'] }; window['globalThis'] = window['bootstrap']; diff --git a/bootstrap.gemspec b/bootstrap.gemspec index 98d163b..00c057f 100644 --- a/bootstrap.gemspec +++ b/bootstrap.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| # SassC requires Ruby 2.3.3. Also specify here to make it obvious. s.required_ruby_version = '>= 2.3.3' - s.add_runtime_dependency 'popper_js', '>= 2.9.3', '< 3' + s.add_runtime_dependency 'popper_js', '>= 2.11.5', '< 3' s.add_runtime_dependency 'sassc-rails', '>= 2.0.0' s.add_runtime_dependency 'autoprefixer-rails', '>= 9.1.0' diff --git a/tasks/updater/js.rb b/tasks/updater/js.rb index 4d5b50a..9d64607 100644 --- a/tasks/updater/js.rb +++ b/tasks/updater/js.rb @@ -1,8 +1,9 @@ +require 'pathname' require 'tsort' class Updater module Js - INLINED_SRCS = %w[util/backdrop.js util/component-functions.js util/focustrap.js util/index.js util/sanitizer.js util/scrollbar.js].freeze + INLINED_SRCS = %w[].freeze def update_javascript_assets log_status 'Updating javascripts...' @@ -49,7 +50,9 @@ class Updater imports = Deps.new # Get the imports from the ES6 files to order requires correctly. read_files('js/src', src_files).each do |name, content| - file_imports = content.scan(%r{import *(?:[a-zA-Z]*|\{[a-zA-Z ,]*\}) *from '\./([\w/-]+)}).flatten(1).map { |f| "#{f}.js" }.uniq + file_imports = content.scan(%r{import *(?:[a-zA-Z]*|\{[a-zA-Z ,]*\}) *from '([\w/.-]+)}).flatten(1).map do |f| + Pathname.new(name).dirname.join("#{f}.js").cleanpath.to_s + end.uniq imports.add name, *(file_imports - INLINED_SRCS) end imports.tsort @@ -68,13 +71,15 @@ class Updater end def add(from, *tos) - (@imports[from] ||= []).push(*tos.sort) + imports = (@imports[from] ||= []) + imports.push(*tos) + imports.sort! end def tsort_each_child(node, &block) node_imports = @imports[node] if node_imports.nil? - raise "No imports found for #{node.inspect}" + raise "No imports found for #{node.inspect}\nImports:\n#{@imports.inspect}" end node_imports.each(&block) end |