diff --git a/src/core/action.ts b/src/core/action.ts
index 63b59dde..00832f72 100644
--- a/src/core/action.ts
+++ b/src/core/action.ts
@@ -31,7 +31,7 @@ export class Action {
get params() {
const params:{ [key: string]: any } = {}
- const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`)
+ const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, "i")
for (const { name, value } of Array.from(this.element.attributes)) {
const match = name.match(pattern)
diff --git a/src/tests/modules/core/action_params_case_insensitive_tests.ts b/src/tests/modules/core/action_params_case_insensitive_tests.ts
new file mode 100644
index 00000000..764c4c39
--- /dev/null
+++ b/src/tests/modules/core/action_params_case_insensitive_tests.ts
@@ -0,0 +1,62 @@
+import ActionParamsTests from "./action_params_tests"
+
+export default class ActionParamsCaseInsensitiveTests extends ActionParamsTests {
+ identifier = ["CamelCase", "AnotherOne"]
+ fixtureHTML = `
+
+
+ `
+ expectedParamsForCamelCase = {
+ id: 123,
+ multiWordExample: "/path",
+ payload: {
+ value: 1
+ },
+ active: true,
+ empty: "",
+ inactive: false
+ }
+
+ async "test clicking on the element does return its params"() {
+ this.actionValue = "click->CamelCase#log"
+ await this.nextFrame
+ await this.triggerEvent(this.buttonElement, "click")
+
+ this.assertActions(
+ { identifier: "CamelCase", params: this.expectedParamsForCamelCase },
+ )
+ }
+
+ async "test global event return element params where the action is defined"() {
+ this.actionValue = "keydown@window->CamelCase#log"
+ await this.nextFrame
+ await this.triggerEvent("#outside", "keydown")
+
+ this.assertActions(
+ { identifier: "CamelCase", params: this.expectedParamsForCamelCase },
+ )
+ }
+
+ async "test passing params to namespaced controller"() {
+ this.actionValue = "click->CamelCase#log click->AnotherOne#log2"
+ await this.nextFrame
+ await this.triggerEvent(this.buttonElement, "click")
+
+ this.assertActions(
+ { identifier: "CamelCase", params: this.expectedParamsForCamelCase },
+ { identifier: "AnotherOne", params: { id: 234 } },
+ )
+ }
+}
diff --git a/src/tests/modules/core/action_params_tests.ts b/src/tests/modules/core/action_params_tests.ts
index 982c03cc..eadb0a28 100644
--- a/src/tests/modules/core/action_params_tests.ts
+++ b/src/tests/modules/core/action_params_tests.ts
@@ -69,10 +69,10 @@ export default class ActionParamsTests extends LogControllerTestCase {
{ identifier: "c", params: this.expectedParamsForC },
)
- await this.buttonElement.setAttribute("data-c-id-param", "234")
- await this.buttonElement.setAttribute("data-c-new-param", "new")
- await this.buttonElement.removeAttribute("data-c-payload-param")
- await this.triggerEvent(this.buttonElement, "click")
+ this.buttonElement.setAttribute("data-c-id-param", "234")
+ this.buttonElement.setAttribute("data-c-new-param", "new")
+ this.buttonElement.removeAttribute("data-c-payload-param")
+ this.triggerEvent(this.buttonElement, "click")
this.assertActions(
{ identifier: "c", params: this.expectedParamsForC },