diff --git a/transforms/angle-brackets/transform.js b/transforms/angle-brackets/transform.js index c4a2ade9d..ea2b1bb43 100755 --- a/transforms/angle-brackets/transform.js +++ b/transforms/angle-brackets/transform.js @@ -205,10 +205,14 @@ function transformLinkToAttrs(params) { attributes = [firstParamOutput]; } else if (params.length === 2) { // @route and @model param - // eslint-disable-next-line no-unused-vars let [_, secondParamInput] = params; if (secondParamInput.type === 'SubExpression') { + let htmlAttrs; + if (secondParamInput.path.original === 'html-attributes') { + htmlAttrs = secondParamInput.hash.pairs; + } + let _queryParamOrModel; if (isQueryParam(secondParamInput)) { _queryParamOrModel = b.attr( @@ -216,12 +220,17 @@ function transformLinkToAttrs(params) { b.mustache(b.path('hash'), [], secondParamInput.hash) ); } else { - _queryParamOrModel = b.attr( - '@model', - b.mustache(secondParamInput.path, secondParamInput.params) - ); + if (secondParamInput.path.original !== 'html-attributes') { + _queryParamOrModel = b.attr( + '@model', + b.mustache(secondParamInput.path, secondParamInput.params) + ); + } + } + attributes = _queryParamOrModel ? [firstParamOutput, _queryParamOrModel] : [firstParamOutput]; + if (htmlAttrs) { + attributes = [...attributes, ...htmlAttrs]; } - attributes = [firstParamOutput, _queryParamOrModel]; } else { let _modelParam = b.attr('@model', transformModelParams(secondParamInput)); attributes = [firstParamOutput, _modelParam]; diff --git a/transforms/angle-brackets/transform.test.js b/transforms/angle-brackets/transform.test.js index b4607a831..78d0b42f5 100644 --- a/transforms/angle-brackets/transform.test.js +++ b/transforms/angle-brackets/transform.test.js @@ -382,6 +382,7 @@ test('link-to', () => { {{#link-to "user" this.first this.second (query-params foo="baz")}}Show{{/link-to}} {{#link-to "user" this.first}}Show{{/link-to}} {{#link-to "user" this.first (query-params foo="baz")}}Show{{/link-to}} + {{#link-to "categories" (html-attributes id="main-bar" class="large" data-foo="123")}}{{svg-jar "crate"}}{{/link-to}} `; expect(runTest('link-to.hbs', input)).toMatchInlineSnapshot(` @@ -393,6 +394,7 @@ test('link-to', () => { Show Show Show + {{svg-jar \\"crate\\"}} " `); });