Repository navigation
Glimmer Big-Picture Integration Checklist #12907
Copy link
Copy link
Closed
Labels
Description
We will try to keep this up-to-date during integration. It enumerates the big-picture integration items.
If you hit a not-yet-completed item on this list while trying to help, it's probably better to wait for the initial integration work to finish. On the flip side, if initial integration work for a given feature has finished, it's probably fine to smooth out edge cases and do polish work.
- top-level templates
-
{{foo.bar}}for basic POJOsIntegrate with Glimmer reference interface #12901 -
{{foo.bar}}usingEmber.get(computed properties, etc.)Integrate with Glimmer reference interface #12901 - Handle
{{foo}}wherefooresolves toundefined,null, etcFix Glimmer 2 content normalization #13141 - Align glimmer and ember semantics for attrs vs props
-
- syntax
-
{{#if}}Some initial tests for,{{#if}}and{{#unless}}#12912Implement Ember semantics for {{#if}}/{{#unless}} #12914(need help reviewing/porting the rest of the tests) -
{{#unless}}Some initial tests for,{{#if}}and{{#unless}}#12912Implement Ember semantics for {{#if}}/{{#unless}} #12914(need help reviewing/porting the rest of the tests) -
{{#with}}with-tests #12919,[Glimmer2] More with tests #12927 -
{{#each}}Implement Ember semantics for Glimmer {{#each}} #13048 -
{{#each-in}}
-
- helpers
- "simple" (shorthand/function) helpers
Port{{concat}}helper test toember-glimmer#12910 - "class-based" ("stateful") helpers
Implement class-based helpers in Glimmer #13087 - builtin helpers
Port(e.g.{{concat}}helper test toember-glimmer#12910{{concat}}) - user helpers lookup
Implement user-helpers resolution #12917(need help reviewing/porting the rest of the tests)
- "simple" (shorthand/function) helpers
- components
- curly components
Basic (curly/classic) components support #12948Use new glimmer engine APIs for building component layout #12962(need help reviewing/porting the rest of the tests – note that a lot of features, are not implemented yet: see below) - glimmer components (
<angle-brackets>) -
{{component}}Glimmer dynamic components (component helpers) #13057 - view state transition
Implement Glimmer teardown #13008 - view hierarchy
Track view-tree hierarchy in Glimmer #12978 - teardown
Implement Glimmer teardown #13008 - old lifecycle hooks (
didInsertElement, etc.) [Glimmer2] Move willDestroyElement tests. #13156 [Glimmer 2] Implement component lifecycle hooks #13168 - new lifecycle hooks (
willRender, etc.) -
attributeBindings,classNameBindings,classNames[Glimmer 2] Implement attribute/classNameBindings #13160 -
tagName[Glimmer 2] Add support for dynamictagName#13145 -
this.elementImplementthis.elementfor components #12975 -
this.$()Implement Glimmer teardown #13008 -
{{yield}}-ing block arguments
- curly components
- partials
-
{{render}} - element helpers (
{{action}}etc.) -
legacy functionality when using addons-
{{view}}Track view-tree hierarchy in Glimmer #12978 -
{{view.prop}}Track view-tree hierarchy in Glimmer #12978 -
{{controller}}
-
-
{{outlet}}Implement{{outlet}}in Glimmer #13067 - runloop integration (auto rerender after
set, etc – this is shimmed by forcing a rerender insidethis.runTaskin the test cases, so it shouldn't be an immediate blocker) - framework-level integration (using
ember-glimmerto render route templates, injecting theember-glimmerrenderer to components/views etc) - make it possible to switch between the two engines in apps by toggling the feature flag
Available to work on (roughly ordered from easiest to most difficult):
- Add tests for rending
false,undefined,nulletc incontent-test.js, similar to. This would fail in glimmer atm, so it needs to beember.js/packages/ember-glimmer/tests/integration/syntax/if-unless-test.js
Lines 42 to 91 in 3ee1cfa
const BASIC_TRUTHY_TESTS = { cases: [ true, ' ', 'hello', 'false', 'null', 'undefined', 1, ['hello'], emberA(['hello']), {}, { foo: 'bar' }, EmberObject.create(), EmberObject.create({ foo: 'bar' }), /*jshint -W053 */ new String('hello'), new String(''), new Boolean(true), new Boolean(false), new Date() /*jshint +W053 */ ], generate(value) { return { [`@test it should consider ${JSON.stringify(value)} truthy`]() { this.renderValues(value); this.assertText('T1'); this.inZone(() => this.rerender()); this.assertText('T1'); this.inZone(() => set(this.context, 'cond1', false)); this.assertText('F1'); this.inZone(() => set(this.context, 'cond1', value)); this.assertText('T1'); } }; } }; @htmlbars. - Implement inline
if/elsehelpers (see comments in Implement Ember semantics for {{#if}}/{{#unless}} #12914). - Port remaining built-in helpers. Should be similar to Port
{{concat}}helper test toember-glimmer#12910. Some helpers are easier than the others. - Implement
{{#with}}(this is slightly more difficult, but generally follows the footsteps of Make{{#if}}and{{#unless}}a built-in syntax glimmerjs/glimmer-vm#61 and Implement Ember semantics for {{#if}}/{{#unless}} #12914). - Review and port remaining tests in
if_unless_test.js(see comments in Implement Ember semantics for {{#if}}/{{#unless}} #12914). This requires carefully analysis of the tests and git history digging.
Reactions are currently unavailable
Activity
[-]Glimmer integration checklist[/-][+]Glimmer Big-Picture Integration Checklist[/+]chadhietala commentedon Feb 16, 2016
{{#with}}should be updated to reflect #12927chancancode commentedon Jul 23, 2016
I think we are done here 😁
See #13644 for remaining edge-cases