diff --git a/src/core-tags/migrate/all-tags/w-on.js b/src/core-tags/migrate/all-tags/w-on.js index f9197b45f..daacb7b3c 100644 --- a/src/core-tags/migrate/all-tags/w-on.js +++ b/src/core-tags/migrate/all-tags/w-on.js @@ -19,9 +19,21 @@ module.exports = function migrate(el, context) { context.setMigrationFlag("legacyWidgetAttrsWithoutBind"); } - name = name.substring("w-on".length); - if (name.startsWith("-")) name = name.substring("-".length); - attr.name = `on${name.charAt(0).toUpperCase() + name.slice(1)}`; + name = name.slice("w-on".length); + const isNativeTag = el.tagDef && el.tagDef.html; + const isCamelCase = name[0] !== "-"; + + if (isNativeTag) { + name = name.toLowerCase(); + } else if (isCamelCase) { + name = name[0].toLowerCase() + name.slice(1); + } + + if (isCamelCase) { + name = "-" + name; + } + + attr.name = `on${name}`; attr.argument = printJS(attr.value, context); attr.value = null; }); diff --git a/test/migrate/fixtures/w-on/components/some-tag/template.marko b/test/migrate/fixtures/w-on/components/some-tag/template.marko new file mode 100644 index 000000000..61da16d02 --- /dev/null +++ b/test/migrate/fixtures/w-on/components/some-tag/template.marko @@ -0,0 +1 @@ +
diff --git a/test/migrate/fixtures/w-on/snapshot-expected.marko b/test/migrate/fixtures/w-on/snapshot-expected.marko index bb63b7610..6d86f5a85 100644 --- a/test/migrate/fixtures/w-on/snapshot-expected.marko +++ b/test/migrate/fixtures/w-on/snapshot-expected.marko @@ -1,7 +1,21 @@