From cedc04c32029a3657917b8e862d72a17fe9bd0e1 Mon Sep 17 00:00:00 2001 From: Chuck Jazdzewski Date: Tue, 13 Mar 2018 17:29:57 -0700 Subject: [PATCH] docs(ivy): document project status (#22751) Moves the status reporting from the issue #21706 to a file that can be updated as changes are being made. This addresses one of the comments on the issue and allows better tracking of updates to this status and changes made. PR Close #22751 --- packages/core/src/render3/STATUS.md | 162 ++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 packages/core/src/render3/STATUS.md diff --git a/packages/core/src/render3/STATUS.md b/packages/core/src/render3/STATUS.md new file mode 100644 index 0000000000..fdd8b4b277 --- /dev/null +++ b/packages/core/src/render3/STATUS.md @@ -0,0 +1,162 @@ +## Annotations +| Annotation | `defineXXX()` | Run time | Spec | Compiler | Back Patch | +| -------------------- | ------------------------------ | ------- | -------- | -------- | -------- | +| `@Component` | ✅ `defineComponent()` | ✅ | ✅ | ✅ | ❌ | +| `@Directive` | ✅ `defineDirective()` | ✅ | ✅ | ✅ | ❌ | +| `@Directive` | ❌ `defineAbstractDirective()` | ❌ | ❌ | ❌ | ❌ | +| `@Pipe` | ✅ `definePipe()` | ✅ | ✅ | ✅ | ❌ | +| `@Injectable` | ❌ `defineInjectable()` | ❌ | ❌ | ❌ | ❌ | +| `@NgModule` | ❌ `defineInjector()` | ❌ | ❌ | ❌ | ❌ | +| `@ConfigureInjector` | ❌ `defineInjector()` | ❌ | ❌ | ❌ | ❌ | + + + +## Component Composition +| Feature | Runtime | Spec | Compiler | +| ---------------------------------------- | ------- | -------- | -------- | +| creation reordering based on injection | ❌ | ❌ | ✅ | +| `class CompA extends CompB {}` | ❌ | ❌ | ❌ | +| `class CompA extends CompB { @Input }` | ❌ | ❌ | ❌ | +| `class CompA extends CompB { @Output }` | ❌ | ❌ | ❌ | + + + +## Life Cycle Hooks +| Feature | Runtime | Spec | Compiler | +| ------------------------- | ------- | -------- | -------- | +| `onChanges()` | ✅ | ✅ | ✅ | +| `onDestroy()` | ✅ | ✅ | ✅ | +| `onInit()` | ✅ | ✅ | ✅ | +| `onChanges()` | ✅ | ✅ | ✅ | +| `doCheck()` | ✅ | ✅ | ✅ | +| `afterViewChecked()` | ✅ | ✅ | ✅ | +| `afterViewInit()` | ✅ | ✅ | ✅ | +| `afterContentChecked()` | ✅ | ✅ | ✅ | +| `afterContentInit()` | ✅ | ✅ | ✅ | +| listener teardown | ✅ | ✅ | ✅ | + + + +## Template Syntax +| Feature | Runtime | Spec | Compiler | +| -------------------------------- | ------- | -------- | -------- | +| `
` | ✅ | ✅ | ✅ | +| `
{{exp}}
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ✅ | ✅ | ❌ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ❌ | ❌ | ❌ | +| `
` | ✅ | ✅ | ❌ | +| `
` | ✅ | ✅ | ✅ | +| `
` | ❌ | ❌ | ❌ | +| `
` | ✅ | ✅ | ❌ | +| `{{ ['literal', exp ] }}` | ✅ | ✅ | ❌ | +| `{{ { a: 'literal', b: exp } }}` | ✅ | ✅ | ❌ | +| `{{ exp \| pipe: arg }}` | ✅ | ✅ | ❌ | + + + +## `@Query` +| Feature | Runtime | Spec | Compiler | +| ------------------------------- | ------- | -------- | -------- | +| `@Query(descendants)` | ✅ | ✅ | ❌ | +| `@Query(one)` | ✅ | ✅ | ❌ | +| `@Query(read)` | ✅ | ✅ | ❌ | +| `@Query(selector)` | ✅ | ✅ | ❌ | +| `@Query(Type)` | ✅ | ✅ | ❌ | +| `@ContentChildred` | ✅ | ✅ | ❌ | +| `@ContentChild` | ✅ | ✅ | ❌ | +| `@ViewChildren` | ✅ | ✅ | ❌ | +| `@ViewChild` | ✅ | ✅ | ❌ | + + + +## Content Projection +| Feature | Runtime | Spec | Compiler | +| ------------------------------- | ------- | -------- | -------- | +| `` | ✅ | ✅ | ✅ | +| `` | ✅ | ✅ | ✅ | +| container `projectAs` | ✅ | ✅ | ❌ | + + + +## Injection Features +| Feature | Runtime | Spec | Compiler | +| ----------------------------------- | ------- | -------- | -------- | +| `inject(Type)` | ✅ | ✅ | ✅ | +| `directiveInject(Type)` | ✅ | ✅ | ❌ | +| `inject(Type, SkipSelf)` | ❌ | ❌ | ❌ | +| `attribute('name')` | ✅ | ✅ | ❌ | +| `injectChangeDetectionRef()` | ✅ | ✅ | ❌ | +| `injectElementRef()` | ✅ | ✅ | ✅ | +| `injectViewContainerRef()` | ✅ | ✅ | ✅ | +| `injectTemplateRef()` | ✅ | ✅ | ✅ | +| default `inject()` with no injector | ❌ | ❌ | ❌ | +| sanitization with no injector | ✅ | ✅ | ❌ | + + + +## Change Detection +| Feature | Runtime | +| ----------------------------------- | ------- | +| `markDirty()` | ✅ | +| `detectChanges()` | ✅ | +| `tick()` | ✅ | +| `attach()` | ✅ | +| `detach()` | ✅ | +| `ON_PUSH` | ✅ | +| `ALWAYS` | ✅ | +| `DIRTY` | ✅ | +| `ATTACHED` | ✅ | + + + +## Bootstrap API +| Feature | Runtime | +| ----------------------------------- | ------- | +| `renderComponent()` | ✅ | +| `getHostElement()` | ✅ | +| `Injector.create()` | ❌ | + + + +## I18N +| Feature | Runtime | Spec | Compiler | +| ----------------------------------- | ------- | -------- | -------- | +| translate text literals | ❌ | ❌ | ❌ | +| rearrange text nodes | ❌ | ❌ | ❌ | +| ICU | ❌ | ❌ | ❌ | + + + + + +## `______Ref`s +| Method | View Container Ref | Template Ref | Embeded View Ref | View Ref | Element Ref | Change Detection Ref | +| ---------------------- | ------------------ | ------------ | ---------------- | -------- | ----------- | -------------------- | +| `clear()` | ❌ | n/a | n/a | n/a | n/a | n/a | +| `get()` | ❌ | n/a | n/a | n/a | n/a | n/a | +| `createEmbededView()` | ✅ | ✅ | n/a | n/a | n/a | n/a | +| `createComponent()` | ✅ | n/a | n/a | n/a | n/a | n/a | +| `insert()` | ✅ | n/a | n/a | n/a | n/a | n/a | +| `move()` | ❌ | n/a | n/a | n/a | n/a | n/a | +| `indexOf()` | ❌ | n/a | n/a | n/a | n/a | n/a | +| `destroy()` | n/a | n/a | ❌ | ❌ | n/a | n/a | +| `destroyed` | n/a | n/a | ❌ | ❌ | n/a | n/a | +| `onDestroy()` | n/a | n/a | ❌ | ❌ | n/a | n/a | +| `markForCheck()` | n/a | n/a | ❌ | n/a | n/a | ✅ | +| `detach()` | ❌ | n/a | ❌ | n/a | n/a | ✅ | +| `detachChanges()` | n/a | n/a | ❌ | n/a | n/a | ✅ | +| `checkNoChanges()` | n/a | n/a | ❌ | n/a | n/a | ✅ | +| `reattach()` | n/a | n/a | ❌ | n/a | n/a | ✅ | +| `nativeElement()` | n/a | n/a | n/a | n/a | ✅ | n/a | + +## Missing Pieces +- Sanitization ✅ +- Back patching in tree shakable way. ❌ +- attribute namespace ❌ \ No newline at end of file