Tobias Bosch
bfa381b35a
refactor(view): introduce AppViewManager to consolidate logic
...
AppViewManager is the single entry point to changing the view hierarchy.
It is split between the manager itself which does coordination and
helper methods, so both are easily testable in isolation.
Also, ViewContainer is now only a pure reference to a bound element
with the previous functionality but does not contain the list of views
any more.
Part of #1477
2015-04-24 20:26:18 -07:00
Pawel Kozlowski
4bab25b366
feat: alllow specifying directives as bindings
...
Related to #709
Closes #1498
2015-04-24 11:02:17 -07:00
vsavkin
8ccafb0524
feat(view): reimplemented property setters using change detection
2015-04-23 11:55:27 -07:00
Marc Laval
22c6c09daf
chore(build): run event tests in Node
...
Closes #1476
2015-04-21 16:21:39 -07:00
Tobias Bosch
ada1e642c5
feat(view): add imperative views
2015-04-20 17:18:44 -07:00
vsavkin
681d06386d
feat(view): implemented loading component next to existing location
2015-04-20 13:41:10 -07:00
Tobias Bosch
02997f473a
fix(viewFactory): allow empty view cache
2015-04-20 11:36:39 -07:00
Marc Laval
883e1c1541
feat(events): support preventdefault
...
Fixes #1039
Closes #1397
2015-04-20 15:20:52 +02:00
vsavkin
56f3429cc9
fix(view): chagned view factory to keep AstWithSource
2015-04-17 17:40:43 -07:00
vsavkin
4943c0f887
fix(view): fixed hydrator to pass the right element index when attaching an event listener
2015-04-17 17:27:12 -07:00
Tobias Bosch
f830cfca12
refactor(view): provide ViewContainers dynamically on any element
2015-04-17 12:35:59 -07:00
vsavkin
eac5c88893
fix(view): fixed hydrator to export the dom element instead of ng element
2015-04-17 12:32:33 -07:00
vsavkin
5408abca68
refactor(change_detection): removed global change detection objects so it is possible to override pipe registry
2015-04-16 15:57:45 -07:00
vsavkin
233cb0f96a
feat(view): changed event emitters to be observables
2015-04-16 14:44:14 -07:00
Tobias Bosch
923d90bce8
refactor(views): clean up creating views in place and extract view_hydrator
...
Major changes:
- `compiler.compileRoot(el, type)`
-> `compiler.compileInHost(type) + viewHydrator.hydrateHostViewInPlace(el, view)`
- move all `hydrate`/`dehydrate` methods out of `View` and `ViewContainer` into
a standalone class `view_hydrator` as private methods and provide new public
methods dedicated to the individual use cases.
Note: This PR does not change the current functionality, only moves it
into different places.
See design discussion in #1351 , in preparation for imperative views.
2015-04-16 11:58:01 -07:00
Kevin Moore
957384ceeb
fix: Fix issues found by Dart analyzer
2015-04-15 20:58:29 -07:00
vsavkin
68faddbf5c
feat(change_detection): updated handling ON_PUSH detectors so they get notified when their bindings change
2015-04-15 16:21:21 -07:00
vsavkin
8c1adabe1c
refactor(change_detection): renamed BindingPropagationConfig to ChangeDetectorRef
2015-04-15 12:58:58 -07:00
Tobias Bosch
213dabdceb
fix(view): remove dynamic components when the parent view is dehydrated
...
Also adds a bunch of unit tests for affected parts.
Fixes #1201
2015-04-15 12:53:21 -07:00
vsavkin
8b97cf1479
cleanup(view): changed ComponentRef to contain ElementRef instead of extending it
2015-04-13 19:30:00 -07:00
vsavkin
b5c9f9ed9b
cleanup(element_injector): added a missing test
2015-04-13 19:30:00 -07:00
Yegor Jbanov
308823b6ea
perf(view): use pre-resolved bindings for child injector init
...
Creating a child injector from pre-resolved bindings (if any) is an
order of magnitude faster.
2015-04-13 15:06:44 -07:00
Yegor Jbanov
4a961f4ecb
feat(di): provide two ways to create an injector, resolved and unresolved
...
Add two factory static functions to Injector: resolveAndCreate and
fromResolvedBindings.
We want to avoid resolution and flattening every time we create a new
injector. This commit allows the user to cache resolved bindings and
reuse them.
2015-04-13 15:06:43 -07:00
Marc Laval
b96e560c8d
feat(events): add support for global events
...
Fixes #1098
Closes #1255
2015-04-13 22:35:36 +02:00
vsavkin
6f8fef4f13
feat(bootstrap): changed bootstrap to return ComponentRef
2015-04-10 18:14:59 -07:00
Tobias Bosch
6ce085a21a
feat(benchmark): make view cache a parameter to the tree benchmark
2015-04-10 16:57:46 -07:00
Tobias Bosch
e34146fc14
fix(view_factory): fix caching of views
...
Previous implementation had bugs, and did not cache per ProtoView.
2015-04-10 16:57:45 -07:00
Pawel Kozlowski
bf7933714a
chore(rename): rename View and Template concepts for #1244
2015-04-10 12:00:37 -07:00
vsavkin
f45281a10a
feat(view): generalized loading of dynamic components
2015-04-09 22:15:42 -07:00
Rado Kirov
e9f70293ac
feat(query): adds initial implementation of the query api.
...
Queries allow a directive to inject a live list of directives of a given
type from its LightDom. The injected list is Iterable (in JS and Dart).
It will be Observable when Observables are support in JS, for now it
maintains a simple list of onChange callbacks API.
To support queries, element injectors now maintain a list of
child injectors in the correct DOM order (dynamically updated by
viewports).
For performance reasons we allow only 3 active queries in an injector
subtree. The feature adds no overhead to the application when not
used. Queries walk the injector tree only during dynamic view
addition/removal as triggered by viewport directives.
Syncs changes between viewContainer on the render and logic sides.
Closes #792
2015-04-09 19:07:19 -07:00
Tobias Bosch
50098767fc
refactor(render): use render layer fully
...
Introduces angular2/src/core/compiler/ViewFactory which
extracts ProtoView.instantiate and replaces ViewPool.
Note: This is a work in progress commit to unblock other commits.
There will be follow ups to add unit tests, remove TODOs, …
2015-04-08 20:51:31 -07:00
Tobias Bosch
ca958464c4
refactor(render): create and store render ProtoViewRef in every app ProtoView
...
Needed to change Renderer.mergeChildComponentProtoViews to not create
new ProtoViews to be able to deal with cyclic references.
This commit is part of using the new render layer in Angular.
2015-04-07 20:27:25 -07:00
Pawel Kozlowski
a3387b7f48
fix(di): allow injecting static attrs without type annotations
...
Closes #1226
2015-04-06 12:33:37 +02:00
Victor Berchet
438c2b31e4
test(TestBed): initial implementation
2015-04-06 10:30:16 +02:00
Tobias Bosch
1d4d18d9db
refactor(render): user render compiler
2015-04-03 23:41:00 -07:00
vsavkin
abea92af59
refactor(change_detection): call onChange from the change detector
2015-04-02 21:22:42 -07:00
Tobias Bosch
c1aa65239e
refactor(render): move services to render folder
...
property_setter_factory
selector
style_inliner
style_url_resolver
shadow_css
2015-04-02 14:40:49 -07:00
Tobias Bosch
4f56628566
refactor(render): move services to right location
...
core/compiler/events -> render/dom/events
core/compiler/url_resolver -> services/url_resolver
core/compiler/xhr/* -> services/*
2015-04-02 10:35:27 -07:00
Pawel Kozlowski
ae30d7ba40
fix(di): allow injecting event emitter fns without specifying type annotation
...
Fixes #965
Closes #1155
2015-04-02 19:07:49 +02:00
Marc Laval
1d79d534d9
test(selector): add tests with multiple attributes
...
Fixes #1025
Closes #1117
2015-04-02 18:06:44 +02:00
Julie Ralph
e81e5fb2b9
feat(testability): add an initial scaffold for the testability api
...
Make each application component register itself onto the testability
API and exports the API onto the window object.
2015-04-01 13:54:06 -07:00
vsavkin
514ba54282
feat(change_detection): added changeDetection to Component
2015-03-31 20:54:44 -07:00
Martin Probst
eb7b7581ca
fix(build): Actually code in the subset of JS that Traceur-Dart supports.
2015-03-31 16:08:49 -07:00
Martin Probst
54a4e4a67c
fix(dart): The Traceur dart transpiler doesn't support shorthand syntax.
2015-03-31 13:17:56 -07:00
Martin Probst
136f64f4ac
fix(dart): don't instantiate abstract directive.
...
Directive is an abstract class, so it should not
be instantiated directly in tests.
2015-03-31 11:38:59 -07:00
Marc Laval
d822793229
fix(test): add a test for @PropertySetter on a class with a dash
...
Closes #1113
Fixes #1099
2015-03-28 16:17:43 +01:00
vsavkin
e92918bbfe
feat(change_detector): split light dom and shadow dom children
2015-03-27 13:26:37 -07:00
vsavkin
723e8fde93
feat(change_detection): added a directive lifecycle hook that is called after children are checked
2015-03-27 13:26:36 -07:00
vsavkin
8d85b839b6
feat(change_detection): pass binding propagation config to pipe registry
2015-03-26 16:57:04 -07:00
Pawel Kozlowski
edc3709451
fix(ElementBinderBuilder): properly bind CSS classes with "-" in their names
...
Fixes #1057
Closes #1059
2015-03-26 19:25:31 +01:00
Marc Laval
b1dc6239ef
feat(core): @Attribute annotation
...
Closes #1091
Fixes #622
2015-03-26 10:51:44 +01:00
Yegor Jbanov
99045b2f6a
refactor: update Dart package dependencies
2015-03-25 15:54:12 -07:00
Marc Laval
58dd75a1c8
feat(compiler): Add support for setting attributes to Component host element
...
Fixes #1008
Fixes #1009
Closes #1052
2015-03-25 17:32:07 +01:00
Victor Berchet
101a4aa3cf
feat(PrivateComponentLoader): Explicit error message when loading a non-component
...
fixes #1062
2015-03-24 22:11:41 +01:00
vsavkin
f8e7a37c0d
fix(view): fixed view instantiation to use the component template's change detector when creating BindingPropagationConfig
2015-03-24 07:49:28 -07:00
Victor Berchet
aab084866c
doc(test): add a comment on why tests are disabled
2015-03-24 09:52:41 +01:00
Marc Laval
41b53e71e1
feat(selector): support , for multiple targets
...
Fixes #867
Closes #1019
2015-03-23 10:06:33 +01:00
Pawel Kozlowski
0fb9f3bd6c
fix(ElementBinderBuilder): properly bind to web component properties
...
Fixes #776
Closes #1024
2015-03-22 14:14:36 +01:00
Pawel Kozlowski
81f3f32217
refactor(DirectiveParser): remove checks for missing directives
...
Based on the discussion in #776 we can't reliably check if a given
element has a particular property at the compilation time. As such
the existing algorithm detecting "missing" directives can't be used.
We need to see if there is a different / better algorithm or maybe
those checks need to be moved later in the process (runtime). Leaving
integration tests in place (disabled) so we can come back to the
topic after unblocking the situation.
This commit effectivelly reverts 94e203b9df
2015-03-22 14:14:36 +01:00
Marc Laval
02aa8e7945
feat(compiler): support bindings for any attribute
...
Closes #1029
2015-03-21 14:55:11 -07:00
Victor Berchet
ee523efcb4
feat(ShadowCss): Support the new deep combinator syntax >>>
...
fixes #990
ref http://dev.w3.org/csswg/css-scoping-1/#deep-combinator
Closes #1028
2015-03-21 14:55:11 -07:00
Marc Laval
2ff2ce3c6c
refactor(test_lib): remove IS_NODEJS
...
Closes #1015
2015-03-20 15:50:05 +01:00
Pawel Kozlowski
e0710c4613
fix(PropertyBindingParser): detect bindings using full attribute name
...
Fixes #1001
Closes #1004
2015-03-18 21:52:15 -07:00
Patrice Chalin
376bdf4dc7
fix(bootstrap): report error on bootstrapping non-Component directive
...
Fixes #951 . Test case added to exercise new error reporting. Also added
extra test for when Template is missing.
Closes #961
2015-03-18 21:51:46 -07:00
Pawel Kozlowski
a35cc27781
fix(PropertyBindingParser): properly parse event bindings as actions
...
Fixes #981
Closes #987
2015-03-18 19:09:59 +01:00
Pawel Kozlowski
59a1f836a2
fix: allow creation of var with camelCased names
...
Closes #957
2015-03-17 21:39:26 -07:00
vsavkin
99f2d7faf6
removed circular deps so tests run on node
2015-03-17 16:31:37 -07:00
vsavkin
2041860a21
feat: added an ability to dynamically load components
2015-03-17 15:23:59 -07:00
vsavkin
7488456d68
feat(element_injector): added PrivateComponentLocation
2015-03-17 15:23:58 -07:00
vsavkin
b69f3043e0
feat(compiler): added the DynamicComponent annotation
2015-03-17 15:23:58 -07:00
vsavkin
a16954d3a5
refactor(view): separate context and locals
2015-03-17 14:25:57 -07:00
Yegor Jbanov
70c875ee14
refactor(shadow dom): do not use injectors nor directives
...
This prepares us for the app/render split in the compiler.
2015-03-16 16:58:38 -07:00
vsavkin
33bff17f33
refactor(tests): refactor tests to clarify the behavior of onChange
2015-03-13 18:09:31 -07:00
vsavkin
3273adade5
refactor(view): change view to pass all bindings to proto change detector at once
2015-03-13 14:03:57 -07:00
Pawel Kozlowski
b39d2c0101
fix: properly bind to camelCased properties
...
Fixes #866
Closes #941
2015-03-13 19:50:47 +01:00
Victor Berchet
7322ed721e
refactor: remove reference to the FIELD class
2015-03-13 18:59:51 +01:00
Marc Laval
8d2ee6bbda
feat(selector): add support for :not
...
Fixes #609
Closes #948
2015-03-13 18:26:10 +01:00
Victor Berchet
30253592ff
refactor(tests): refactor some tests to use the test injector
2015-03-13 18:20:02 +01:00
Victor Berchet
33b5ba863e
feat(tests): add a test injector
...
fixes #614
Asynchronous test should inject an AsyncTestCompleter:
Before:
it("async test", (done) => {
// ...
done();
});
After:
it("async test", inject([AsyncTestCompleter], (async) => {
// ...
async.done();
}));
Note: inject() is currently a function and the first parameter is the
array of DI tokens to inject as the test function parameters. This
construct is linked to Traceur limitations. The planned syntax is:
it("async test", @Inject (async: AsyncTestCompleter) => {
// ...
async.done();
});
2015-03-13 18:20:02 +01:00
Pawel Kozlowski
5926d2e2f7
refactor: use attributes for directives matching
...
Closes #940
2015-03-13 17:24:14 +01:00
Rado Kirov
f7963e1ea6
fix(shadowdom): allow conditional content tags.
...
Distribution is triggered on the host element injector after each new
view creation.
2015-03-12 12:06:47 -07:00
Victor Berchet
951a808e0e
refactor(PropertySetter): use the global reflector
2015-03-12 19:49:34 +01:00
Marc Laval
c67194a3ef
fix(test_lib): remove getDistributedNodes emulation in NodeJS
2015-03-12 11:16:47 +01:00
Rado Kirov
dd3e6271c2
chore(services): rename services.
...
Closes #711
2015-03-11 18:30:37 -07:00
Rado Kirov
f1593ebca5
feat(shadowdom): turn on ShadowDom Emulated Mode by default.
...
Closes : #526
2015-03-11 12:46:15 -07:00
Marc Laval
1d4ff9bcdc
feat(compiler): parse5 DOM adapter
...
Closes #841
2015-03-11 14:42:54 +01:00
Marc Laval
5acde20c7d
refactor(compiler): remove direct accesses to DOM in tests
...
Closes #899
2015-03-10 22:08:27 +01:00
Victor Berchet
370643539f
refactor(EventHandler): have a single instance of event handlers per ProtoView
2015-03-10 15:26:06 +01:00
Victor Berchet
bfa18ffd9b
feat(Directives): add the ability to declaratively bind events
...
relates to #621
2015-03-10 08:14:24 +01:00
Victor Berchet
b349c35678
feat(ElementInjector): implement @PropertySetter
...
relates to #621
2015-03-09 18:28:39 +01:00
Victor Berchet
c3873be295
fix(Compiler): asynchronous error reporting
2015-03-09 16:42:37 +01:00
Victor Berchet
03793d0714
feat(CssProcessor): add support for CssTransformers
...
Closes #860
2015-03-03 11:24:08 -08:00
Victor Berchet
9982520a23
refactor(Compiler): make shadow DOM stragegy support more flexible
2015-03-03 11:24:08 -08:00
vsavkin
ba0a1ec459
feat(di): add support for optional dependencies
2015-03-02 14:38:02 -08:00
Bertrand Laporte
3059104e8d
add compilation error test for dart
...
Closes #812
2015-03-02 14:38:02 -08:00
vsavkin
21f24d19dd
feat(change_detection): implement hydration/dehydration
2015-03-02 13:28:39 -08:00
Richard Harrington
f30e3e59b5
fix(docs): fix typo in compiler integration_spec.js
...
Closes #834
2015-02-28 12:00:49 +01:00
Yegor Jbanov
757eae8ad3
feat(compiler): DOM adapters + html5lib implementation; misc fixes
2015-02-27 16:49:14 -08:00
Pawel Kozlowski
7e6f536cf5
fix(compiler): properly bind to properties that don't have matching attr name
...
Fixes #619
Closes #783
2015-02-27 16:10:16 +01:00
Victor Berchet
8541cfd26d
feat(ShadowDomStrategy): implemented EmulatedUnscopedShadowDomStrategy
...
- The new strategy do not scope component styles but make them global,
- The former EmulatedShadowStrategy has been renamed to
EmulatedScopedShadowDomStrategy. It does scope the styles.
2015-02-26 20:00:23 +01:00