Feature #42510
openAdd Stimulus as a Javascript framework
0%
Description
Stimulus is part of the Rails ecosystem, it does not have a huge footprint and the integration is quite minimal. Also, it can be integrated incrementally in our existing code base without any breaking change.
In the community, there are a series of components that can be used in order to slowly drop the jQuery UI (at least) dependency. I'm not saying that just replacing jQuery UI with Stimulus is enough, but I think it can make our life easier.
Below some examples:- https://www.stimulus-components.com/
- https://github.com/lazaronixon/css-zero: these components are a front-end starter, but they are depending on Stimulus as well where JS is required.
I made also a basic patch that integrates Stimulus and rewrite the existing functionality of copyTextToClipboard
in Stimulus.
Katsuya HIDAKA written in #42515:
This patch introduces Stimulus, a JavaScript framework within the Rails ecosystem, and reimplements the partial quote feature added in #41294 using Stimulus.
Why introduce Stimulus?¶
Here's why I propose introducing Stimulus:
- The current frontend JavaScript is becoming too complex and harder to develop. application.js is getting large, and everything operates in the global scope.
- It will make it easier to begin the migration from jQuery UI, which is no longer being developed. Stimulus helps create UI components in vanilla Rails, and many third-party components are also available.
- Stimulus works well with Turbo, which is a strong candidate to replace the deprecated rails-ujs, making future adoption smoother.
- Introducing a modern environment can revitalize Redmine development and simply make development more enjoyable.
As a next step after introducing Stimulus, I plan to migrate the tooltip implementation to Stimulus to further reduce the dependency on jQuery UI.
Implementation¶
- importmap-rails was also introduced to install Stimulus and its necessary libraries.
bin/rails stimulus:install
creates app/javascript/application.js by default. To avoid conflicts with the existing app/assets/application.js, I renamed the new file to main.js.- turndown, which is used for the partial quote feature, is now also installed via importmap-rails.
- I confirmed that CI builds pass and all system tests are successful.
Files
Related issues
Updated by Katsuya HIDAKA 22 days ago
I strongly support the introduction of Stimulus. I have created #42515 to reimplement the existing quote reply functionality using Stimulus. I would appreciate your feedback.
Updated by Marius BĂLTEANU 21 days ago
- Related to Patch #42515: Introduce Stimulus and reimplement partial quote feature added
Updated by Marius BĂLTEANU 21 days ago
- File 0001-Introduce-Stimulus-to-facilitate-JavaScript-moderniz.patch 0001-Introduce-Stimulus-to-facilitate-JavaScript-moderniz.patch added
- Description updated (diff)
- Assignee set to Marius BĂLTEANU
- Target version set to Candidate for next major release
Katsuya HIDAKA, I've update the description of this issue with the one provided by you in #42515.
I'm in favour of this move, but being quite an important change, I would like to get feedback from Go MAEDA and someone from Plan.io (Holger Just). Once we decide to integrate this, we can move on to the tickets that rewrite existing functionality.
I've created a patch that only integrates Stimulus without any other change.
Updated by Marius BĂLTEANU 21 days ago
- Related to Patch #42521: Reimplement modal dialog with Stimulus added
Updated by Go MAEDA 16 days ago
I am strongly in favor of introducing Stimulus. It is a well-established JavaScript framework that has matured over the years and is now the standard in Rails.
Using Stimulus for new JavaScript code and gradually replacing existing jQuery and jQuery UI code is a practical approach.
I believe this change will help improve Redmine's user interface and user experience.
Updated by Marius BĂLTEANU 16 days ago
- Target version changed from Candidate for next major release to 6.1.0
Updated by Jens Krämer 11 days ago
We've had a chat about this at Planio and consensus was that introducing Stimulus for new functionality and, over time, migrating existing features from JQuery / JQueryUI to Stimulus seems to be a good course of action.
Updated by Marius BĂLTEANU 6 days ago
- Subject changed from Evaluate the option to add Stimulus as a Javascript framework to Add Stimulus as a Javascript framework
- Category set to Gems support
Updated by Marius BĂLTEANU 6 days ago
- Status changed from Resolved to New
I've committed the first patch that adds Stimulus to the core. Thanks Go MAEDA and Jens Krämer for supporting this!
I keep this open in order to provide details for plugins developers.
Updated by Marius BĂLTEANU 6 days ago
- Related to Feature #35536: Use webpack to improve javascripts and stylesheets management added
Updated by Marius BĂLTEANU 6 days ago
- Related to Feature #30486: Convert all jQuery to ECMA Script added