Ryan Nowak
d175b4d38a
Konvert to KoreBuild
2018-03-14 11:23:42 +00:00
Ryan Nowak
0c162e8c5a
Allow non-property attributes to be set
...
This removes a limitation that prevented callers from passing
attributes to a component that aren't backed by properties.
The majority of the complication here is required to deal with the more
sophisticated way that HTML attributes are represented in the Razor IR.
2018-03-14 11:23:42 +00:00
Ryan Nowak
c05657c7f2
Add support general delegate types
...
This builds upon existing support for UIEventHandler-typed component
properties and applies the same principle to any delegate type.
We try to help by generating the LSH of the lambda `=>` allowing you to
write `OnClick="Foo()"` rather than `OnClick="(e) => Foo()"`. You can of
course use @ as an escape.
The only rough edge here is that if the parameter names aren't memorable
for the delgate type, it's not super helpful.
2018-03-14 11:23:42 +00:00
Steve Sanderson
c50f089269
Update BasicTestApp
2018-03-14 11:23:41 +00:00
Ryan Nowak
601e7914f7
Implement components as tag helpers
...
Implements Component code generation and tooling support end to end
udditionally adds some default `@addTagHelper` directives to make
programming in Blazor a little nicer.
Components are discovered as Tag Helpers using Razor's extensibility
during the build/IDE process. This drives the code generation during
build and lights up a bunch of editor features.
Add
2018-03-14 11:23:41 +00:00
Ryan Nowak
211561a6a6
Implement 2-phase compilation
...
This is a working (all tests passing) implementation of the two-phase
compilation system we will need for component discovery.
This builds on top of work we've doing in Razor, including the Razor
SDK, MSBuild tasks, and CLI/server.
This currently *does* discovery components during the build process, but
it doesn't use that data for anything yet.
It works like this:
1. Generate class declarations (structure only, no method bodies)
2. Compile a 'temp' assembly using the .cs files and output of 1.
3. Do component discovery using the 'temp' assembly
4. Generate class definitions (including method bodies)
5. Compile the 'real' assembly using the .cs files and output of 4.
2018-03-14 11:23:40 +00:00
Ryan Nowak
6182e8448d
Get rid of RazorCompiler
...
Adds a little more use of Razor extensibility.
Razor is a plugin model, so we can't be the 'first mover' for initiating
compilation in the build tools and IDE.
Reorganizes tests and fills out more reusable test infrastructure for
Razor-driven testing.
Adds tests for declaration-only configuration.
2018-03-14 11:23:40 +00:00
Ryan Nowak
daf6a404f9
Implement basic Component discovery
...
This is the basics of component discovery along with some tests.
The next set of changes will integrate it into the compilation process.
2018-03-14 11:23:40 +00:00
Ryan Nowak
a053155ab4
Implement layout and implements with directives
...
- Remove haxxxx
- Add proper directives with tooling support
2018-03-14 11:23:40 +00:00
Florian Dohrendorf
ef1b670b8b
fix #216
2018-03-13 01:03:26 +01:00
Steve Sanderson
48ae58196d
Add unit test to show JsonUtil handling IList<T> types
2018-03-12 10:52:59 +01:00
Steve Sanderson
0301250c4b
In SimpleJson, support enum values serialized as numbers.
...
Note: still doesn't support nullable enum types.
2018-03-05 02:02:26 +00:00
Steve Sanderson
61e07eb615
Support @bind for enum and DateTime values (with optional format string)
2018-03-05 02:02:26 +00:00
Steve Sanderson
3ef78dcb7b
Stop treating RenderFragment as immutable, because its output isn't
2018-03-05 02:02:26 +00:00
Steve Sanderson
649159e31d
Use real BCL System.Net.Http.HttpClient. Implements #159
2018-02-28 17:37:42 +00:00
Steve Sanderson
4bd3cd98d6
Simplify apps by moving some commonly used types into Microsoft.AspNetCore.Blazor namespace
2018-02-28 11:29:14 +00:00
Steve Sanderson
3e5381c17e
Rename .DevHost project to .Cli, and make it work as a DotNetCliTool
2018-02-27 12:17:35 +00:00
Steve Sanderson
6995b974e9
Support @bind for textboxes and checkboxes
2018-02-26 14:39:56 +00:00
Steve Sanderson
02a0be5c2b
Add JsonUtil unit tests plus E2E tests for new StandaloneApp pages
2018-02-26 13:01:11 +00:00
Steve Sanderson
c0bf73234c
Tweak (to force rebuild, since Travis just tried to build a branch that was already deleted)
2018-02-23 22:42:10 +00:00
Steve Sanderson
8590f6e7a5
Remainder of initial HttpClient features plus E2E tests
2018-02-23 22:31:26 +00:00
Steve Sanderson
88cc2caf45
Infrastructure for E2E tests where the app makes requests to an API server
2018-02-23 13:28:58 +00:00
Steve Sanderson
ea6b6bcd19
Add an example API server project that can be used in E2E tests
2018-02-23 13:07:49 +00:00
Steve Sanderson
0bb32ad628
Move BrowserRouter -> Router in Microsoft.AspNetCore.Blazor now it has no browser-specific aspects
2018-02-23 10:49:03 +00:00
Steve Sanderson
82bcf9172a
Convert the static UriHelper into a service, IUriHelper, and inject where needed
2018-02-23 10:35:28 +00:00
Steve Sanderson
c408045e31
In RazorCompiler, support @inject directive
2018-02-23 09:32:26 +00:00
Steve Sanderson
3f9d358004
Make ComponentFactory throw if you try to use [Inject] with a property that has no setter (otherwise it could be confusing)
2018-02-23 09:32:26 +00:00
Steve Sanderson
e524994734
Make ComponentFactory do all the reflection up-front and cache the resulting delegates
2018-02-23 09:32:26 +00:00
Steve Sanderson
ceacd489aa
Simplistic implementation of property injection
2018-02-23 09:32:26 +00:00
Steve Sanderson
ce10e6fa19
In preparation for DI, give every Renderer an IServiceProvider
2018-02-23 09:32:26 +00:00
Steve Sanderson
d388cb6510
Add E2E test covering nav menu and NavLink usage in StandaloneApp
2018-02-22 15:03:49 +00:00
Steve Sanderson
58ae5dea9a
Additional methods on ParameterCollection to simplify usage
2018-02-22 15:03:49 +00:00
Steve Sanderson
25b76bc6dc
Skip rerendering child components if their params are definitely unchanged
2018-02-22 13:23:52 +00:00
Steve Sanderson
08d7b77d38
Avoid component syntax confusion by making it a compile-time error. Fixes #145
2018-02-22 11:07:03 +00:00
Steve Sanderson
1a31634b70
Capture component child content as a RenderFragment parameter.
2018-02-22 11:07:03 +00:00
Steve Sanderson
bd455453d6
Report line/column when reporting mismatching tags
2018-02-22 11:07:03 +00:00
Steve Sanderson
0665d30e19
In RazorCompiler, reject malformed documents with mismatching tags
2018-02-22 11:07:03 +00:00
Steve Sanderson
95023c0300
In RazorCompiler, support components with children
2018-02-22 11:07:03 +00:00
Steve Sanderson
fc9cb1af65
Add E2E tests for BrowserRouter, plus implement querystring/hash support
2018-02-21 10:22:03 +00:00
Steve Sanderson
8bc7c92683
Support hosting at non-root URL. Prove it by updating BasicTestApp to serve from non-root location.
2018-02-21 10:22:03 +00:00
Steve Sanderson
7073429cd5
Clean up and include routing unit tests
2018-02-21 10:22:03 +00:00
Steve Sanderson
87fc15cc23
Add test to demonstrate current component attribute parsing inconsistencies
2018-02-21 10:22:03 +00:00
Steve Sanderson
78a19c07e9
In RazorCompiler, allow HTML comments
2018-02-21 10:22:03 +00:00
Steve Sanderson
58af3e1638
Allow blazor-boot script to be served from apps not hosted at domain root
2018-02-21 10:22:03 +00:00
Steve Sanderson
608da4c78b
Specifying entrypoint: Add tests and other stylistic tweaks
2018-02-19 14:22:03 +00:00
Eugene Bekker
1653e56b98
Adding ability to qualify the entry point of the main assembly
2018-02-19 14:11:25 +00:00
Steve Sanderson
1e0836167d
Make temporary "layout" and "implements" syntax work with _ViewImports hierarchies
2018-02-19 12:48:08 +00:00
Steve Sanderson
f649de2976
Support _ViewImports.cshtml files hierarchically
2018-02-18 23:57:20 +00:00
Steve Sanderson
be1400663b
Unit test to show the Razor compiler passes through any C# compilation errors
2018-02-18 23:54:12 +00:00
Steve Sanderson
782ca0137d
Support "@inherits ..." directive
2018-02-18 22:03:15 +00:00
Steve Sanderson
6e7c4ec6c0
Tests for LayoutDisplay component
2018-02-16 17:23:12 +00:00
Steve Sanderson
df825de86d
Reorganise some test helpers in shared locations
2018-02-16 17:23:04 +00:00
Steve Sanderson
f6d6714251
Serve static content from wwwroot
2018-02-16 15:56:22 +00:00
Steve Sanderson
f54df27c21
Define ILayoutComponent so there's compile-time validation that layouts are defined correctly
2018-02-16 15:04:51 +00:00
Steve Sanderson
7139cb70c5
Support temporary @(Implements<MyInterfaceType>()) syntax
2018-02-16 12:39:38 +00:00
Steve Sanderson
9e333e31c5
Support temporary @(Layout<MyLayoutType>()) syntax
2018-02-16 12:10:44 +00:00
Steve Sanderson
f91d1d4803
Better handling of render-after-disposed scenarios
2018-02-16 12:10:44 +00:00
Steve Sanderson
0595251ac2
E2E test showing rendering of RenderFragment
2018-02-16 10:10:14 +00:00
Steve Sanderson
ad2c63ca37
Make OpenRegion/CloseRegion not public because they are only to support AddContent(seq, fragment)
2018-02-16 10:10:12 +00:00
Steve Sanderson
41aae0b7e6
Add ability to append RenderFragment into a RenderTreeBuilder
2018-02-16 10:10:11 +00:00
Steve Sanderson
29a6175ac1
Define RenderFragment concept
2018-02-16 10:10:10 +00:00
Steve Sanderson
1ac5ee25c1
Rename RenderTreeBuilder's AddText to AddContent, since it will be used for other types too
2018-02-16 10:10:08 +00:00
Steve Sanderson
acc5b9461b
Add ability to add component frame using runtime type object instead of generic param
2018-02-16 10:10:07 +00:00
Steve Sanderson
2ebfddc237
Switch client apps to netstandard2.0 to fix type load errors
...
Do a "git clean -xdf" on your local copy if you get runtime errors after
updating to this.
2018-02-15 10:20:31 +00:00
Steve Sanderson
2da17602ed
Support "Region" frames in JS-side code
...
They only appear in a prepended subtree, because the .NET-side diffing
code resolves them out if they are top-level to any given edit
2018-02-14 23:41:25 +00:00
Steve Sanderson
848f24536a
Support "Region" frames in diffing
2018-02-14 23:41:24 +00:00
Steve Sanderson
a9822216f1
Add the concept of a "Region" render tree frame
2018-02-14 23:41:24 +00:00
Ryan Nowak
043e623d5b
Split Razor extensibility into its own assembly
...
This functionality will need to cross-compile to desktop framework
(net461) so that we can use it in VS. VS doesn't yet have netstandard2.0
support.
2018-02-14 14:08:14 -08:00
Steve Sanderson
86500ce761
Fix MonoSanityTest instability
2018-02-14 18:23:08 +00:00
Steve Sanderson
b7bbacf4ed
Skip MonoSanityTest due to instability since Chrome update
2018-02-14 16:27:24 +00:00
Steve Sanderson
5f41779b3e
Fix use of Chrome Headless on Travis macOS builds
2018-02-14 16:27:24 +00:00
Steve Sanderson
94261ded25
Fix RazorCompilerTest on Mac/Linux
2018-02-14 13:08:39 +00:00
Steve Sanderson
83b90d1980
Update AppVeyor/Travis configs to run on .NET Core, enable selenium
...
tests, etc.
2018-02-14 13:08:39 +00:00
Steve Sanderson
0eb0555303
Eliminate IComponent.BuildRenderTree to guarantee that components are only rendered by themselves
2018-02-13 19:47:37 +00:00
Steve Sanderson
e061b98f9d
In RazorCompilerTest, don't use BuildRenderTree directly (because it will soon be removed)
2018-02-13 17:18:06 +00:00
Steve Sanderson
70a3ee3d98
Remove externally-callable Renderer.RenderInNewBatch() now that rendering is triggered by components themselves
2018-02-13 17:06:00 +00:00
Steve Sanderson
804ab2d89f
Add IHandleEvent concept so components can define their own lifecycle around events
2018-02-13 16:42:21 +00:00
Steve Sanderson
a889cd3152
Beginning lifecycle methods on BlazorComponent
2018-02-13 15:55:37 +00:00
Steve Sanderson
861154764c
Introduce IComponent.SetParameters, moving parameter-setting and rerendering logic into component base class
2018-02-13 15:00:53 +00:00
Steve Sanderson
37217db73a
Implement ParameterCollection
2018-02-13 13:14:55 +00:00
Steve Sanderson
695ddc0fd6
Add Init/RenderHandle concepts so components can rerender themselves arbitrarily (e.g., after internal state change)
2018-02-13 11:49:33 +00:00
Steve Sanderson
7bb4bbbe5c
In IndexHtmlFileProvider, preserve original source formatting
2018-02-12 23:05:47 +00:00
Eugene Bekker
b38718d77f
Require <script type="blazor-boot"> to define script injection location
2018-02-12 21:49:27 +00:00
Steve Sanderson
e37e22aa27
Further renderer refactoring
2018-02-10 10:55:44 +00:00
Steve Sanderson
5a9c41af0e
Make AngleSharp not strong-named. Change assembly name to Microsoft.AspNetCore.Blazor.AngleSharp to ensure no conflicts with other usages.
2018-02-09 17:37:21 +00:00
Steve Sanderson
15ddcd03b0
Major refactor of responsibilities in rendering code. Not quite done
...
with this yet either.
2018-02-09 14:50:07 +00:00
Steve Sanderson
91314ee8c8
Rename RenderTreeDiffComputer -> RenderTreeDiffBuilder
2018-02-08 15:50:14 +00:00
Steve Sanderson
b8ed7bc2c5
Track event handlers via explicit IDs rather than by index into frames
...
array
2018-02-08 15:31:45 +00:00
Steve Sanderson
83fa72bc7e
Have RenderTreeDiff build its own array of referenced frames rather than pointing to the latest render tree
...
This is in preparation for supporting multiple diffs for the same
component in a single batch (which means we can't rely on there being at
most only new render tree per component)
2018-02-07 10:27:32 +00:00
Steve Sanderson
33932f41fc
Replace "DescendantsEndIndex" concept with "SubtreeLength"
...
In other words, use relative addressing so that frame data is
independent of its position in the array
2018-02-07 10:27:32 +00:00
Steve Sanderson
93f17219ea
Rename OpenComponentElement -> OpenComponent for consistency
2018-02-05 00:19:44 +00:00
Steve Sanderson
1fda744770
Make RenderTreeFrame properly readonly to allow more pass-by-ref cases
2018-02-05 00:16:08 +00:00
Steve Sanderson
f1332919bc
Rename RenderTreeNode -> RenderTreeFrame (and correspondingly, "node" ->
...
"frame" everywhere)
2018-02-04 22:21:29 +00:00
Steve Sanderson
76dafa819f
Mechanism for components running logic when parents change their properties
2018-01-31 16:19:01 +00:00
Steve Sanderson
1c9c74c801
In RazorCompiler, fix bug about attribute nodes having wrong sequence
...
numbers. Make tests explicit about sequence numbers.
2018-01-31 10:23:56 +00:00
Steve Sanderson
50a5baa872
Dispose components on removal
2018-01-30 10:00:30 +00:00
Steve Sanderson
55592f583b
Update RendererTests to be more explicit about batch expectations
2018-01-29 20:28:38 +00:00
Steve Sanderson
080e6395cb
Move to batched rendering
2018-01-29 20:16:42 +00:00
Steve Sanderson
27d0ce4da9
Begin differentiating between rendering as a new batch on in an existing batch (even though batches don't exist yet)
2018-01-29 16:47:52 +00:00
Steve Sanderson
7799c36d50
Add E2E test to show adding and removing child components dynamically
2018-01-29 12:56:42 +00:00
Steve Sanderson
772e3a1a44
Clean up E2E tests now elements are retained via diffing
2018-01-29 12:56:41 +00:00
Steve Sanderson
4f496f649a
Add E2E test showing we can pass properties to child components and auto re-render them on change
2018-01-29 12:56:40 +00:00
Steve Sanderson
882096755b
Rerender child components when their parameters change
2018-01-26 14:25:26 -08:00
Steve Sanderson
94ad26a479
Update properties on retained child components
2018-01-26 11:58:43 -08:00
Steve Sanderson
9f7dab3096
Better error handling when setting properties on child components
2018-01-26 10:10:06 -08:00
Steve Sanderson
3940ca8b60
For components, allow attribute values to be arbitrary objects
2018-01-26 09:54:35 -08:00
Steve Sanderson
1b4fa4781a
Give attribute nodes a single object-valued value so they can be used for component properties too.
2018-01-26 09:40:48 -08:00
Steve Sanderson
9dcb1c4fc4
Begin on setting properties on child components
2018-01-26 08:47:53 -08:00
Steve Sanderson
0aa164073d
Rename Microsoft.Blazor.* -> Microsoft.AspNetCore.Blazor.* everywhere
2018-01-24 15:48:38 -08:00
Steve Sanderson
9e90ff3689
Rename AddComponentElement->OpenComponentElement for clarity (you have to close it too)
2018-01-24 15:26:27 -08:00
Steve Sanderson
2469558410
Preserve child component instances across renders. Move instantiation into the diffing phase.
2018-01-24 14:29:46 -08:00
Steve Sanderson
23c2816bcd
Change ParentChildComponent test to use Razor. Add E2E tests showing events on child components work.
2018-01-24 11:04:30 -08:00
Steve Sanderson
2107a1927f
In RazorCompiler, support temporary <c:MyComponent /> syntax
2018-01-24 10:43:23 -08:00
Steve Sanderson
6e4d0dbca4
Move common resizable-array logic into shared ArrayBuilder. Replace ArraySegment with ArrayRange since Offset is never used.
2018-01-23 23:30:48 -08:00
Steve Sanderson
b049c7f574
Fix diffing for consecutive text nodes
2018-01-23 09:43:14 -08:00
Steve Sanderson
df321b9b8d
Make RenderTreeEdit specify which sibling node it acts on, so we can eliminate the Continue concept and no longer track indices on JS side
2018-01-22 20:17:32 -08:00
Steve Sanderson
5435582c0e
Update rendering APIs to supply the diff as well as the final state
2018-01-22 08:54:03 -08:00
Steve Sanderson
bea15241f2
Various renames of diff-related types, plus XML docs for newly-public types.
2018-01-22 08:31:07 -08:00
Steve Sanderson
7c30d51be9
In tree diffs, omit trailing Continue entries and skip over unmodified subtrees
2018-01-22 01:55:10 +00:00
Steve Sanderson
b021e19598
In diffing, support elements with descendants
2018-01-21 21:30:01 +00:00
Steve Sanderson
0a5e27fdcf
Support diffing attributes. This required tracking 'sequence' values on attributes too.
2018-01-21 20:57:11 +00:00
Steve Sanderson
7a1abbaca3
In tree diffing, better handle scenario where both old and new sequences loop back but to different locations
2018-01-21 19:37:34 +00:00
Steve Sanderson
6b37494e7c
Begin on RenderTree diffing. Doesn't yet recurse into elements to handle attributes/children.
2018-01-21 18:53:09 +00:00
Steve Sanderson
a0b354e0eb
Add concept of 'sequence' to RenderTreeNode. This is in preparation for diffing.
2018-01-21 11:51:26 +00:00
Steve Sanderson
374d19c1a4
Move child component instantiation into a post-render phase to bring it closer to how it will work with rendertree diffing
...
This is also needed to make it possible to have a helper to insert
Component nodes from Razor without doing anything messy to pass the
RenderTreeBuilder into that heper.
2018-01-18 00:29:00 +00:00
Steve Sanderson
d1f96153d3
Implement basics of @onclick()-type shorthand syntax
2018-01-16 18:01:06 +00:00
Steve Sanderson
946e25462e
In RazorCompiler, support @using statements
2018-01-16 17:17:22 +00:00
Steve Sanderson
7cd5228b7f
In RazorCompiler, support attributes whose values are C# code blocks (treated as event handlers)
2018-01-16 16:58:47 +00:00
Steve Sanderson
5949045319
In RazorCompiler, support expressions with non-string or null values
2018-01-16 16:30:29 +00:00
Steve Sanderson
8c2a32b87c
Remove a .csproj.user file that shouldn't be tracked in source control
2018-01-16 16:16:48 +00:00
Steve Sanderson
7bbb2b6660
In RazorCompiler, support attribute values of type UIEventHandler
2018-01-16 16:15:46 +00:00
Steve Sanderson
3a7b6b2178
In Razor compiler, support attributes with interpolated expressions
2018-01-16 15:24:34 +00:00
Steve Sanderson
b690aeee28
In RazorCompiler, support attributes with C# expression values
2018-01-16 13:15:13 +00:00
Steve Sanderson
5aa6ccaff7
Convert TextOnlyComponent to Razor format
2018-01-16 12:36:10 +00:00
Steve Sanderson
80b371c647
In RazorCompiler, support string-valued attributes
2018-01-16 12:23:12 +00:00
Steve Sanderson
1c1fd69bf2
In RazorCompiler, support self-closing and void elements
2018-01-16 11:50:40 +00:00
Steve Sanderson
a64ece0319
In RazorCompiler, support HTML elements
2018-01-16 11:36:55 +00:00
Steve Sanderson
75b083911c
Add AngleSharp with temporary InternalsVisibleTo
2018-01-16 11:11:49 +00:00
Steve Sanderson
604aa14518
Use Razor component in StandaloneApp sample
2018-01-15 23:11:54 +00:00
Steve Sanderson
7e40427ffe
Razor compilation: Support text literals and C# code
2018-01-15 23:11:48 +00:00
Steve Sanderson
3ccdc1d16f
Begin integrating with real Razor compiler
2018-01-14 16:37:01 +00:00
Steve Sanderson
a32b857d96
When compiling Razor files, generate namespace based on directory path
2018-01-14 14:35:13 +00:00
Steve Sanderson
654c16fb44
Begin unit tests for RazorCompiler
2018-01-12 15:08:10 +00:00
Steve Sanderson
f8cbed2326
Update unit tests to reflect updated Mono BCL. Much of this will disappear once we start optimizing the BCL.
2018-01-12 14:16:41 +00:00
Steve Sanderson
34d3eb5b72
Unit tests for Renderer
2018-01-09 17:21:50 +00:00
Steve Sanderson
07e31c6318
Unit tests relating to Renderer GC behavior
2018-01-09 15:08:27 +00:00
Steve Sanderson
04f9c476a8
Update StandaloneApp to render a component. Remove some redundant code.
2018-01-09 13:45:15 +00:00
Steve Sanderson
6585667ce6
Refactor most of the rendering logic into Microsoft.Blazor, keeping only browser-specific parts in Microsoft.Blazor.Browser
2018-01-09 13:33:49 +00:00
Steve Sanderson
674024ed61
Rename UITree -> RenderTree, UIEventInfo -> UIEventArgs
2018-01-09 09:55:14 +00:00
Steve Sanderson
5793bf700a
Add ability to render child components
2018-01-08 14:21:48 +00:00