From 3b6fb85c519d2580d4c0f7e38502c5b486d95683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Fri, 8 Sep 2023 16:02:35 +0200 Subject: [PATCH] Use node packages to install jQuery and jQuery UI Other packages depend on jQuery, so that's why these are the first one we move from the Gemfile to the package.json file. This way we can also test whether dependabot correctly opens pull requests to update Node packages. I've tried several configuration options for the asset pipeline in order to be able to include images referenced in jQuery UI CSS files. So far, adding the `node_modules/jquery-ui/themes/base` folder to the assets paths is the only way I've found to make it work. Hopefully we can find a better solution in the future so we don't have to study the internals of every Node package in order to integrate it with the assets pipeline. --- Gemfile | 2 - Gemfile.lock | 8 --- app/assets/javascripts/application.js | 69 ++++++++++++++----------- app/assets/stylesheets/application.scss | 7 +-- config/application.rb | 1 + package-lock.json | 25 ++++++++- package.json | 7 ++- 7 files changed, 75 insertions(+), 44 deletions(-) diff --git a/Gemfile b/Gemfile index be5779c08..897cdf8ff 100644 --- a/Gemfile +++ b/Gemfile @@ -33,8 +33,6 @@ gem "image_processing", "~> 1.12.2" gem "initialjs-rails", "~> 0.2.0.9" gem "invisible_captcha", "~> 2.1.0" gem "jquery-fileupload-rails" -gem "jquery-rails", "~> 4.6.0" -gem "jquery-ui-rails", "~> 6.0.1" gem "kaminari", "~> 1.2.2" gem "leaflet-rails", "~> 1.9.3" gem "mini_magick", "~> 4.12.0" diff --git a/Gemfile.lock b/Gemfile.lock index 82c4283f2..141fb84e6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -287,12 +287,6 @@ GEM actionpack (>= 3.1) railties (>= 3.1) sassc - jquery-rails (4.6.0) - rails-dom-testing (>= 1, < 3) - railties (>= 4.2.0) - thor (>= 0.14, < 2.0) - jquery-ui-rails (6.0.1) - railties (>= 3.2.16) json (2.6.3) jwt (2.7.1) kaminari (1.2.2) @@ -727,8 +721,6 @@ DEPENDENCIES initialjs-rails (~> 0.2.0.9) invisible_captcha (~> 2.1.0) jquery-fileupload-rails - jquery-rails (~> 4.6.0) - jquery-ui-rails (~> 6.0.1) kaminari (~> 1.2.2) knapsack_pro (~> 5.7.0) launchy (~> 2.5.2) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 0b8813002..3353e6652 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -10,35 +10,46 @@ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // about supported directives. // -//= require jquery3 -//= require jquery_ujs -//= require jquery-ui/widgets/datepicker -//= require jquery-ui/i18n/datepicker-ar -//= require jquery-ui/i18n/datepicker-bs -//= require jquery-ui/i18n/datepicker-cs -//= require jquery-ui/i18n/datepicker-da -//= require jquery-ui/i18n/datepicker-de -//= require jquery-ui/i18n/datepicker-el -//= require jquery-ui/i18n/datepicker-es -//= require jquery-ui/i18n/datepicker-fa -//= require jquery-ui/i18n/datepicker-fr -//= require jquery-ui/i18n/datepicker-gl -//= require jquery-ui/i18n/datepicker-he -//= require jquery-ui/i18n/datepicker-hr -//= require jquery-ui/i18n/datepicker-id -//= require jquery-ui/i18n/datepicker-it -//= require jquery-ui/i18n/datepicker-nl -//= require jquery-ui/i18n/datepicker-pl -//= require jquery-ui/i18n/datepicker-pt-BR -//= require jquery-ui/i18n/datepicker-ru -//= require jquery-ui/i18n/datepicker-sl -//= require jquery-ui/i18n/datepicker-sq -//= require jquery-ui/i18n/datepicker-sv -//= require jquery-ui/i18n/datepicker-zh-CN -//= require jquery-ui/i18n/datepicker-zh-TW -//= require jquery-ui/i18n/datepicker-en-GB -//= require jquery-ui/widgets/autocomplete -//= require jquery-ui/widgets/sortable +//= require jquery +//= require jquery-ujs +//= require jquery-ui/ui/version +//= require jquery-ui/ui/data +//= require jquery-ui/ui/ie +//= require jquery-ui/ui/keycode +//= require jquery-ui/ui/position +//= require jquery-ui/ui/safe-active-element +//= require jquery-ui/ui/scroll-parent +//= require jquery-ui/ui/unique-id +//= require jquery-ui/ui/widget +//= require jquery-ui/ui/widgets/menu +//= require jquery-ui/ui/widgets/mouse +//= require jquery-ui/ui/widgets/datepicker +//= require jquery-ui/ui/i18n/datepicker-ar +//= require jquery-ui/ui/i18n/datepicker-bs +//= require jquery-ui/ui/i18n/datepicker-cs +//= require jquery-ui/ui/i18n/datepicker-da +//= require jquery-ui/ui/i18n/datepicker-de +//= require jquery-ui/ui/i18n/datepicker-el +//= require jquery-ui/ui/i18n/datepicker-es +//= require jquery-ui/ui/i18n/datepicker-fa +//= require jquery-ui/ui/i18n/datepicker-fr +//= require jquery-ui/ui/i18n/datepicker-gl +//= require jquery-ui/ui/i18n/datepicker-he +//= require jquery-ui/ui/i18n/datepicker-hr +//= require jquery-ui/ui/i18n/datepicker-id +//= require jquery-ui/ui/i18n/datepicker-it +//= require jquery-ui/ui/i18n/datepicker-nl +//= require jquery-ui/ui/i18n/datepicker-pl +//= require jquery-ui/ui/i18n/datepicker-pt-BR +//= require jquery-ui/ui/i18n/datepicker-ru +//= require jquery-ui/ui/i18n/datepicker-sl +//= require jquery-ui/ui/i18n/datepicker-sq +//= require jquery-ui/ui/i18n/datepicker-sv +//= require jquery-ui/ui/i18n/datepicker-zh-CN +//= require jquery-ui/ui/i18n/datepicker-zh-TW +//= require jquery-ui/ui/i18n/datepicker-en-GB +//= require jquery-ui/ui/widgets/autocomplete +//= require jquery-ui/ui/widgets/sortable //= require jquery-fileupload/basic //= require foundation //= require turbolinks diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 383d13091..068a33797 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -7,9 +7,10 @@ @import "font-awesome/path"; @import "font-awesome/mixins"; @import "font-awesome/core"; -@import "jquery-ui/autocomplete"; -@import "jquery-ui/datepicker"; -@import "jquery-ui/sortable"; +@import "jquery-ui/themes/base/theme"; +@import "jquery-ui/themes/base/autocomplete"; +@import "jquery-ui/themes/base/datepicker"; +@import "jquery-ui/themes/base/sortable"; @import "leaflet"; @import "foundation_and_overrides"; diff --git a/config/application.rb b/config/application.rb index 41571981c..9a37609a9 100644 --- a/config/application.rb +++ b/config/application.rb @@ -117,6 +117,7 @@ module Consul config.assets.paths << Rails.root.join("app", "assets", "fonts") config.assets.paths << Rails.root.join("vendor", "assets", "fonts") + config.assets.paths << Rails.root.join("node_modules", "jquery-ui", "themes", "base") config.assets.paths << Rails.root.join("node_modules") # Add lib to the autoload path diff --git a/package-lock.json b/package-lock.json index 40dc9185a..ac8a092f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,7 +4,30 @@ "requires": true, "packages": { "": { - "name": "consuldemocracy" + "name": "consuldemocracy", + "dependencies": { + "jquery": "^3.6.0", + "jquery-ui": "^1.12.1", + "jquery-ujs": "^1.2.2" + } + }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/jquery-ui": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.12.1.tgz", + "integrity": "sha512-K/kDBMXkTky5LH+gqbMvttU1ipqCTaecKyAFjwHjUnPTVfm5I5PZC7We31iNR3yWtAHNqoxkLoit06lR/gKVlA==" + }, + "node_modules/jquery-ujs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.2.2.tgz", + "integrity": "sha512-8AlF0ww/8mDdrT/Z2Nmv16r9LI2Xw/H3LiHNpPJYp4gnk/zIAfJTnhLcBRm6FZqQ/bWfW/rPl6j16lhO35DvOg==", + "dependencies": { + "jquery": ">=1.8.0" + } } } } diff --git a/package.json b/package.json index 2a38b2ee1..7f108272f 100644 --- a/package.json +++ b/package.json @@ -1,3 +1,8 @@ { - "name": "consuldemocracy" + "name": "consuldemocracy", + "dependencies": { + "jquery": "^3.6.0", + "jquery-ui": "^1.12.1", + "jquery-ujs": "^1.2.2" + } }