diff --git a/packages/ember-glimmer/tests/integration/helpers/input-test.js b/packages/ember-glimmer/tests/integration/helpers/input-test.js index 10f5dcf07ba..b21d1b542ca 100644 --- a/packages/ember-glimmer/tests/integration/helpers/input-test.js +++ b/packages/ember-glimmer/tests/integration/helpers/input-test.js @@ -436,6 +436,27 @@ moduleFor('Helpers test: {{input}} with dynamic type', class extends InputRender this.assertAttr('type', 'password'); } + ['@test a subexpression can be used to determine type']() { + this.render(`{{input type=(if isTruthy trueType falseType)}}`, { + isTruthy: true, + trueType: 'text', + falseType: 'password' + }); + + this.assertAttr('type', 'text'); + + this.runTask(() => this.rerender()); + + this.assertAttr('type', 'text'); + + this.runTask(() => set(this.context, 'isTruthy', false)); + + this.assertAttr('type', 'password'); + + this.runTask(() => set(this.context, 'isTruthy', true)); + + this.assertAttr('type', 'text'); + } }); moduleFor(`Helpers test: {{input type='checkbox'}}`, class extends InputRenderingTest { diff --git a/packages/ember-template-compiler/lib/plugins/transform-input-type-syntax.js b/packages/ember-template-compiler/lib/plugins/transform-input-type-syntax.js index 1705551666c..8085dea48a5 100644 --- a/packages/ember-template-compiler/lib/plugins/transform-input-type-syntax.js +++ b/packages/ember-template-compiler/lib/plugins/transform-input-type-syntax.js @@ -62,8 +62,6 @@ function insertTypeHelperParameter(node, builders) { } } if (pair && pair.value.type !== 'StringLiteral') { - let path = pair.value.path ? pair.value.path.original : pair.value.original; - - node.params.unshift(builders.sexpr('-input-type', [builders.path(path, pair.loc)], null, pair.loc)); + node.params.unshift(builders.sexpr('-input-type', [pair.value], null, pair.loc)); } }