Project

General

Profile

Actions

Feature #42510

open

Evaluate the option to add Stimulus as a Javascript framework

Added by Marius BĂLTEANU 3 days ago. Updated about 12 hours ago.

Status:
New
Priority:
Normal
Category:
-
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:

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:

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":https://stimulus.hotwired.dev/, a JavaScript framework within the Rails ecosystem, and reimplements the partial quote feature added in #41294 using Stimulus.

h3. 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.

h3. 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

Related to Redmine - Patch #42515: Introduce Stimulus and reimplement partial quote featureNew

Actions
Related to Redmine - Patch #42521: Reimplement modal dialog with StimulusNew

Actions
Actions #1

Updated by Marius BĂLTEANU 3 days ago

  • Description updated (diff)
Actions #2

Updated by Katsuya HIDAKA 2 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.

Actions #3

Updated by Marius BĂLTEANU about 13 hours ago

  • Related to Patch #42515: Introduce Stimulus and reimplement partial quote feature added
Actions #4

Updated by Marius BĂLTEANU about 12 hours ago

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.

Actions #5

Updated by Marius BĂLTEANU about 12 hours ago

  • Related to Patch #42521: Reimplement modal dialog with Stimulus added
Actions

Also available in: Atom PDF