Comments (2)
Thanks @janko for this detailed report. I think this PR #684 might fix it.
The PR mentions action added dynamically so it is not exactly the same. I ll see if I can create a test reproducing your but and run it against that PR.
from stimulus.
I ran some additional test
given this original test from the test suite:
async "test adding an action to the left"() {
this.actionValue = "c#log3 c#log d#log2"
await this.nextFrame
await this.triggerEvent(this.buttonElement, "click")
this.assertActions(
{ name: "log3", identifier: "c", eventType: "click", currentTarget: this.buttonElement },
{ name: "log", identifier: "c", eventType: "click", currentTarget: this.buttonElement },
{ name: "log2", identifier: "d", eventType: "click", currentTarget: this.buttonElement },
{ name: "log", identifier: "c", eventType: "click", currentTarget: this.element }
)
}
I modified it to add a :prevent
modifer
async "test adding an action to the left with a :prevent modifier"() {
this.actionValue = "c#log3:prevent c#log d#log2"
await this.nextFrame
await this.triggerEvent(this.buttonElement, "click")
console.log(this.actionLog.map(({ name }) => name))
this.assertActions(
{ name: "log3", identifier: "c", eventType: "click", currentTarget: this.buttonElement },
{ name: "log", identifier: "c", eventType: "click", currentTarget: this.buttonElement },
{ name: "log2", identifier: "d", eventType: "click", currentTarget: this.buttonElement },
{ name: "log", identifier: "c", eventType: "click", currentTarget: this.element }
)
}
The test fails events are received in this order
['log', 'log2', 'log3', 'log']
whereas it should be
['log3', 'log', 'log2', 'log']
Running the same test with #684 works. I'll what we can do to get this PR merged. While it is not a complete solution think it solves the vast majority of this issue
from stimulus.
Related Issues (20)
- Changed callbacks can fire before connect HOT 2
- Ability to use action options without controller? HOT 1
- Supporting Node.js 18 is helpful
- Exceptions in async controller action not caught by stimulus HOT 2
- initialize method runs only when browser tab is active? HOT 2
- PSA: Two Stimulus packages that aim to eliminate a lot of boilerplate
- TS -> JS? HOT 2
- Is 3.2.2 unpkg version correct? HOT 2
- Stimulus.js on Unpkg.com is 404 HOT 2
- [name]OutletConnected is fired after outlet initialized, not connected ?
- Using generator causes duplicative references in `app/javascript/controllers/index.js` HOT 6
- Is this repo dead? HOT 1
- Get information of a Stimulus Controller HOT 2
- Email autocomplete on `<input>` triggers `keydown.esc` data-action event HOT 4
- Defining Stimulus values on controller child elements HOT 4
- Proposal: Default controller action HOT 2
- Question about the passed Stimulus controller values HOT 3
- Can't route its own methods to events fired by initialize.
- Callback Ordering Inconsistency in Documentation HOT 1
- disconnect() not called if outlet is accessed in connect() HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stimulus.