Skip to content

Commit

Permalink
Merge pull request #17004 from emberjs/beta-triple-curlies-bugfix
Browse files Browse the repository at this point in the history
[BUGFIX beta] triple curlies bugfix
  • Loading branch information
chancancode committed Sep 25, 2018
2 parents 25501ba + d34e557 commit d752b94
Show file tree
Hide file tree
Showing 6 changed files with 205 additions and 88 deletions.
10 changes: 9 additions & 1 deletion CHANGELOG.md
@@ -1,5 +1,9 @@
# Ember Changelog

### v3.5.0-beta.4 (Unreleased)

- [#17003](https://github.com/emberjs/ember.js/pull/17003) [BUGFIX] Fix rendering of empty content with `{{{...}}}` and `htmlSafe`

### v3.5.0-beta.3 (September 24, 2018)

- [#16978](https://github.com/emberjs/ember.js/pull/16978) [BUGFIX] Properly teardown alias
Expand All @@ -15,6 +19,10 @@
- [#16877](https://github.com/emberjs/ember.js/pull/16877) [CLEANUP] Allow routes to be named "array" and "object"
- [#16907](https://github.com/emberjs/ember.js/pull/16907) Upgrade to TypeScript 3.0

### v3.4.3 (September 25, 2018)

- [#17003](https://github.com/emberjs/ember.js/pull/17003) [BUGFIX] Fix rendering of empty content with `{{{...}}}` and `htmlSafe`

### v3.4.2 (September 24, 2018)

- [#16860](https://github.com/emberjs/ember.js/pull/16860) [BUGFIX] Clear chains in ProxyMixin when destroyed
Expand Down Expand Up @@ -48,7 +56,7 @@

- [#16836](https://github.com/emberjs/ember.js/pull/16836/commits) [DOC] Fix Broken 3.3 API Documentation

### v3.3.0 (July 16, 2018)
### v3.3.0 (July 16, 2018)

- [#16687](https://github.com/emberjs/ember.js/pull/16687) [FEATURE] Implement optional jQuery integration (see [emberjs/rfcs#294](https://github.com/emberjs/rfcs/blob/master/text/0294-optional-jquery.md) for more details).
- [#16690](https://github.com/emberjs/ember.js/pull/16690) [DEPRECATION] [emberjs/rfcs#294](emberjs/rfcs#294) Deprecate accessing `jQuery.Event#originalEvent`.
Expand Down
14 changes: 7 additions & 7 deletions package.json
Expand Up @@ -66,14 +66,14 @@
"resolve": "^1.6.0"
},
"devDependencies": {
"@glimmer/compiler": "^0.35.8",
"@glimmer/compiler": "^0.35.9",
"@glimmer/env": "^0.1.7",
"@glimmer/interfaces": "^0.35.8",
"@glimmer/node": "^0.35.8",
"@glimmer/opcode-compiler": "^0.35.8",
"@glimmer/program": "^0.35.8",
"@glimmer/reference": "^0.35.8",
"@glimmer/runtime": "^0.35.8",
"@glimmer/interfaces": "^0.35.9",
"@glimmer/node": "^0.35.9",
"@glimmer/opcode-compiler": "^0.35.9",
"@glimmer/program": "^0.35.9",
"@glimmer/reference": "^0.35.9",
"@glimmer/runtime": "^0.35.9",
"@types/qunit": "^2.5.0",
"@types/rsvp": "^4.0.1",
"amd-name-resolver": "^1.2.0",
Expand Down
Expand Up @@ -503,5 +503,28 @@ moduleFor(
}, expectedBacktrackingMessage);
});
}

['@test route templates with {{{undefined}}} [GH#14924] [GH#16172]']() {
this.router.map(function() {
this.route('first');
this.route('second');
});

this.addTemplate('first', 'first');
this.addTemplate('second', '{{{undefined}}}second');

return this.visit('/first')
.then(() => {
this.assertText('first');
return this.visit('/second');
})
.then(() => {
this.assertText('second');
return this.visit('/first');
})
.then(() => {
this.assertText('first');
});
}
}
);
60 changes: 60 additions & 0 deletions packages/ember-glimmer/tests/integration/content-test.js
Expand Up @@ -702,6 +702,22 @@ moduleFor(
this.assertTextNode(this.firstChild, content);
// this.takeSnapshot();
}

['@test it can render empty safe strings [GH#16314]']() {
this.render('before {{value}} after', { value: htmlSafe('hello') });

this.assertHTML('before hello after');

this.assertStableRerender();

this.runTask(() => set(this.context, 'value', htmlSafe('')));

this.assertHTML('before <!----> after');

this.runTask(() => set(this.context, 'value', htmlSafe('hello')));

this.assertHTML('before hello after');
}
}
);

Expand Down Expand Up @@ -818,6 +834,50 @@ moduleFor(

this.assertContent('<b>Max</b><i>James</i>');
}

['@test empty content in trusted curlies [GH#14978]']() {
this.render('before {{{value}}} after', {
value: 'hello',
});

this.assertContent('before hello after');

this.runTask(() => this.rerender());

this.assertStableRerender();

this.runTask(() => set(this.context, 'value', undefined));

this.assertContent('before <!----> after');

this.runTask(() => set(this.context, 'value', 'hello'));

this.assertContent('before hello after');

this.runTask(() => set(this.context, 'value', null));

this.assertContent('before <!----> after');

this.runTask(() => set(this.context, 'value', 'hello'));

this.assertContent('before hello after');

this.runTask(() => set(this.context, 'value', ''));

this.assertContent('before <!----> after');

this.runTask(() => set(this.context, 'value', 'hello'));

this.assertContent('before hello after');

this.runTask(() => set(this.context, 'value', htmlSafe('')));

this.assertContent('before <!----> after');

this.runTask(() => set(this.context, 'value', 'hello'));

this.assertContent('before hello after');
}
}
);

Expand Down
28 changes: 27 additions & 1 deletion packages/ember-glimmer/tests/integration/syntax/each-test.js
Expand Up @@ -2,7 +2,7 @@ import { get, set, notifyPropertyChange } from 'ember-metal';
import { applyMixins, strip } from '../../utils/abstract-test-case';
import { moduleFor, RenderingTest } from '../../utils/test-case';
import { A as emberA, ArrayProxy, RSVP } from 'ember-runtime';
import { Component } from '../../utils/helpers';
import { Component, htmlSafe } from '../../utils/helpers';
import { HAS_NATIVE_SYMBOL } from 'ember-utils';

import {
Expand Down Expand Up @@ -827,6 +827,32 @@ class EachTest extends AbstractEachTest {
this.assertText('');
}

['@test empty trusted content clears properly [GH#16314]']() {
this.makeList(['hello']);

this.render(`before {{#each list as |value|}}{{{value}}}{{/each}} after`);

this.assertText('before hello after');

this.assertStableRerender();

this.runTask(() => this.pushObjects([null, ' world']));

this.assertText('before hello world after');

this.runTask(() => this.replace(1, 2, [undefined, ' world!']));

this.assertText('before hello world! after');

this.runTask(() => this.replace(1, 2, [htmlSafe(''), ' world!!']));

this.assertText('before hello world!! after');

this.replaceList(['hello']);

this.assertText('before hello after');
}

/* multi each */

['@test re-using the same variable with different {{#each}} blocks does not override each other']() {
Expand Down
158 changes: 79 additions & 79 deletions yarn.lock
Expand Up @@ -2,105 +2,105 @@
# yarn lockfile v1


"@glimmer/compiler@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.35.8.tgz#1096f8d1abfbe2101c454bce476a6e829a3776a9"
"@glimmer/compiler@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.35.9.tgz#3342f6249826258e1428e0566b21f64f878bce51"
dependencies:
"@glimmer/interfaces" "^0.35.8"
"@glimmer/syntax" "^0.35.8"
"@glimmer/util" "^0.35.8"
"@glimmer/wire-format" "^0.35.8"
"@glimmer/interfaces" "^0.35.9"
"@glimmer/syntax" "^0.35.9"
"@glimmer/util" "^0.35.9"
"@glimmer/wire-format" "^0.35.9"

"@glimmer/encoder@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.35.8.tgz#ce57a9d60e49e2faef987c6cb22c31fb78bb0a48"
"@glimmer/encoder@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.35.9.tgz#4aff747cc62c334eba7ed8918ed86c70b2d4f606"

"@glimmer/env@^0.1.7":
version "0.1.7"
resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07"

"@glimmer/interfaces@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.35.8.tgz#bd82fcb0a77959b17d5adeaf561fea9dfb3b9a9a"
"@glimmer/interfaces@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.35.9.tgz#26b4fa0f2acfcab3b4309826068292a9e7a006df"
dependencies:
"@glimmer/wire-format" "^0.35.8"
"@glimmer/wire-format" "^0.35.9"

"@glimmer/low-level@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.35.8.tgz#0c16ed531a8d14b57a86862768f10072de876dfe"
"@glimmer/low-level@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.35.9.tgz#9d2e755d39cbdc4161f0110ee55ba59d9245d342"

"@glimmer/node@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.35.8.tgz#7ab3fbc114cf1a7b3d0c60db936c80c8b60c0af3"
"@glimmer/node@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.35.9.tgz#1a9cb7333eacd007bc1882b3d5d20e0e575864a5"
dependencies:
"@glimmer/interfaces" "^0.35.8"
"@glimmer/runtime" "^0.35.8"
"@glimmer/interfaces" "^0.35.9"
"@glimmer/runtime" "^0.35.9"
simple-dom "^0.3.0"

"@glimmer/opcode-compiler@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.35.8.tgz#85728a11d33d66c5cc06b8a4cb8a61771e6dc1db"
dependencies:
"@glimmer/encoder" "^0.35.8"
"@glimmer/interfaces" "^0.35.8"
"@glimmer/program" "^0.35.8"
"@glimmer/reference" "^0.35.8"
"@glimmer/util" "^0.35.8"
"@glimmer/vm" "^0.35.8"
"@glimmer/wire-format" "^0.35.8"

"@glimmer/program@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.35.8.tgz#3dbf9b85a9c1b12fdaaf9fc2036c280e16df395f"
dependencies:
"@glimmer/encoder" "^0.35.8"
"@glimmer/interfaces" "^0.35.8"
"@glimmer/util" "^0.35.8"

"@glimmer/reference@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.35.8.tgz#95283835698bc7ee5fef6208b9dc66c2bbad8a71"
dependencies:
"@glimmer/util" "^0.35.8"

"@glimmer/runtime@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.35.8.tgz#4aaabe3682b01c77f47b95768b74d70d9e64d2a6"
dependencies:
"@glimmer/interfaces" "^0.35.8"
"@glimmer/low-level" "^0.35.8"
"@glimmer/program" "^0.35.8"
"@glimmer/reference" "^0.35.8"
"@glimmer/util" "^0.35.8"
"@glimmer/vm" "^0.35.8"
"@glimmer/wire-format" "^0.35.8"

"@glimmer/syntax@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.35.8.tgz#52fa3075514851f5ffc2ea629d35716c9eebb7f2"
dependencies:
"@glimmer/interfaces" "^0.35.8"
"@glimmer/util" "^0.35.8"
"@glimmer/opcode-compiler@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.35.9.tgz#402c8618fc3c84650be8d91d25ab0b25da0177af"
dependencies:
"@glimmer/encoder" "^0.35.9"
"@glimmer/interfaces" "^0.35.9"
"@glimmer/program" "^0.35.9"
"@glimmer/reference" "^0.35.9"
"@glimmer/util" "^0.35.9"
"@glimmer/vm" "^0.35.9"
"@glimmer/wire-format" "^0.35.9"

"@glimmer/program@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.35.9.tgz#57ceda2c5f7b4df64f417880724afa3d321eecde"
dependencies:
"@glimmer/encoder" "^0.35.9"
"@glimmer/interfaces" "^0.35.9"
"@glimmer/util" "^0.35.9"

"@glimmer/reference@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.35.9.tgz#10e2ca42ef1b92ad195ce4d6b305bf256325fbb6"
dependencies:
"@glimmer/util" "^0.35.9"

"@glimmer/runtime@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.35.9.tgz#d2358046e9d13c983180ff79734ac5d0d39fe310"
dependencies:
"@glimmer/interfaces" "^0.35.9"
"@glimmer/low-level" "^0.35.9"
"@glimmer/program" "^0.35.9"
"@glimmer/reference" "^0.35.9"
"@glimmer/util" "^0.35.9"
"@glimmer/vm" "^0.35.9"
"@glimmer/wire-format" "^0.35.9"

"@glimmer/syntax@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.35.9.tgz#9710e3418d60436ce368acb4d3e9c7802defa6ca"
dependencies:
"@glimmer/interfaces" "^0.35.9"
"@glimmer/util" "^0.35.9"
handlebars "^4.0.6"
simple-html-tokenizer "^0.5.5"

"@glimmer/util@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.35.8.tgz#ec2d7aa4897b77ba96275bb2ea803c6c6dcf0eef"
"@glimmer/util@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.35.9.tgz#59e8bbfb2bb7a764d0098be49d083c200d113a61"

"@glimmer/vm@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.35.8.tgz#2db9a0f7cb94340640253da339f91b09546179c3"
"@glimmer/vm@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.35.9.tgz#8c54c675a625384f7ff0539b47841d877acf6b9f"
dependencies:
"@glimmer/interfaces" "^0.35.8"
"@glimmer/program" "^0.35.8"
"@glimmer/util" "^0.35.8"
"@glimmer/interfaces" "^0.35.9"
"@glimmer/program" "^0.35.9"
"@glimmer/util" "^0.35.9"

"@glimmer/wire-format@^0.35.8":
version "0.35.8"
resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.35.8.tgz#61f58bce456f7c9aca0d338c31b91aa74b911911"
"@glimmer/wire-format@^0.35.9":
version "0.35.9"
resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.35.9.tgz#96f0c302583da3311303458ae9634b7fc72db9f4"
dependencies:
"@glimmer/util" "^0.35.8"
"@glimmer/util" "^0.35.9"

"@types/acorn@^4.0.3":
version "4.0.3"
Expand Down

0 comments on commit d752b94

Please sign in to comment.