Commit Graph

529 Commits

Author SHA1 Message Date
Attila Hajdrik 043556d111 Add support for pointer events
Change oncontextmenu event from pointerevent to mouseevent (based on MDN docs) - it
2018-05-04 16:29:00 -07:00
Steve Sanderson 20e43adac5 camelCase all the JSONs (#746)
* Add camelCase utility

* Use camelCase when JSON-serializing (but not for dictionary keys)

* Make JSON deserialization treat member names case-insensitively (but retain case on dictionary keys)

* Use camelCase in JSON in the samples and templates

* Reverse the order of the params for the camelcase test because it's weird otherwise

* CR feedback
2018-05-04 16:14:38 +01:00
Mark Dickinson f9ab9cc6e5 Added readFloatField 2018-05-04 15:12:26 +01:00
Steve Sanderson 27a676c4c7 Update TemplateBlazorPackageVersion in development 2018-05-04 09:13:18 +01:00
Ryan Nowak b390ae0c1c Rewrite of HTML handling for Blazor
This change replaces the parsing of HTML that we perform during the code
generation phase, which parsing of HTML during the IR lowering phase.
The main benefit of this change is that the structure of the HTML is
reflected in the IR tree, allowing us to do more more advance
transformations.

As an example, see how the the handling of `<script>` tags is now a
separate pass.

As an aside from this I also redesigned the structure of component IR
nodes to match the new HTML element nodes. Passes are now more easily
aware of the nodes they are expected to handle and are more easily aware
of the difference between a component and element. This still isn't as
clean as I would like, but I think it's a reasonable improvement.

Another benefit of this is that the code generation is much simpler and
requires much less bookkeeping and statefulness.
2018-05-03 21:56:03 -07:00
Steve Sanderson b4e70e72a0 Disable autorebuild in hosted projects due to VS 15.7pre5+ issue 2018-05-02 18:34:16 +01:00
Ryan Nowak 87375f6ba1 Add support for most (if not all events)
This change adds tag helpers and defines event types for all of the DOM
events we could find. You'll find it much easier now to subcribe to
these events.

While we did define new event types, we didn't substantially expand the
set of data that we serialize for events. We're looking for feedback on
what is most critical to have, and looking for contributions adding
those data and tests.
2018-05-02 11:07:49 +01:00
Daniel Roth 6a4e5726ac Update survey link 2018-05-01 09:55:11 -07:00
Steve Sanderson 20a7fe7c2e Add isMultiProjectTemplate to hosted template vs-2017.3.host.json. Fixes #332 2018-05-01 17:49:57 +01:00
Steve Sanderson be8f2d43ee Support custom events and non-bubbling standard events (#722)
* Support non-bubbling events

* Support responding to arbitrary events. E2E coverage of this and bubbling.

* Rename E2E test files to avoid clash with other PR
2018-05-01 17:12:03 +01:00
Steve Sanderson f61ed4df4f For checkboxes, bind to 'checked'. Fix special property handling in BrowserRenderer.ts. Fixes #659 and #703
* Stop the value<-->checked conversions for checkboxes. Just use native 'checked' property. Fixes #703

* Properly handle removal of 'checked' and 'value' attributes

* E2E coverage for removing 'value'
2018-05-01 16:40:07 +01:00
Steve Sanderson 370edda02d Use separate filenames for the two different reference arg files 2018-05-01 10:15:21 +01:00
Marcus Bowyer e5d78f8886 Pass list of references via temp file for resolve-dependencies and build commands 2018-05-01 10:15:21 +01:00
Steve Sanderson 18b9a70dbe Encourage encapsulation of component parameter properties (#713)
* Before refactoring ParameterCollection assignment logic, add more test coverage

* Begin caching parameter assignment info

* Factor out some reflection code to a reusable location

* Use IPropertySetter to avoid all per-property-assignment reflection

* More error cases and tests for parameter assignment

* Enable binding to nonpublic properties

* Add analyzer to warn and provide fix for public component parameters

* Unit test for analyzer

* Component tag helper now includes private properties if they have [Parameter]

* CR feedback: Remove garbage from csproj

* CR feedback: Rename .Build.Analyzers to .Analyzers

* CR feedback: Move BlazorApi.cs to shared; use it from Analyzers test

* Fix incorrect test name

* Make as many parameters private as possible. Replace ILayoutComponent with BlazorLayoutComponent.

* In component tag helper discovery, consider private members too

* Reduce the work in component parameter discovery by not inspecting the BlazorComponent base class (or System.Object)
2018-05-01 10:08:01 +01:00
Daniel Roth ec1b220b7d Fixup project templates to handle project names with dashes (#692)
Fixes #291
2018-04-30 21:27:22 -07:00
Ryan Nowak f661021324 Add [Parameter] for component parameters
This change introduces ParameterAttribute to specify a bindable
component parameter. As of the 0.3 release of Blazor we plan to make
[Parameter] required to make a property bindable by callers.

This also applies to parameters when their value is set by the
infrastructure, such as `Body` for layouts, and route paramters.

The rationale behind this change is that we think there is a need to
separate the definition of properties from their suitability for a
caller to set them through markup. We plan to introduce more features in
this area in the future such as marking parameters as required. This is
first step, and we think that this approach will scale nicely as we add
more functionaly.

The 0.3 release seems like the right time to change this behavior since
we're also introducing `ref` for captures in this release.
2018-04-30 13:35:08 -07:00
Steve Sanderson 76bf82eb49 OnAfterRender / OnAfterRenderAsync (#691)
* Implement OnAfterRender and OnAfterRenderAsync

* Add E2E test combining OnAfterRender with "ref" and JS interop

... because this combination is the key to integration with 3rd-party JS
libs
2018-04-27 19:45:19 +01:00
Steve Sanderson 4033560734 Support 'ref' syntax for capturing references to elements and components (#685) 2018-04-27 17:41:21 +01:00
Steve Sanderson a700fa945e Fix ordering issue with nested logical element insertion 2018-04-27 15:43:59 +01:00
Emanuele Filardo 74b2b6b232 Set Program class as public in standalone project template 2018-04-26 23:25:13 +01:00
Ryan Nowak ed06d7b12e Rough cut at async events 2018-04-26 13:31:28 -07:00
Steve Sanderson c8cc0145e0 Make Razor.Design a transitive dependency
By making Razor.Design a transitive dependency of Blazor.Build we can
avoid the need for users to care which version of Razor we depend upon,
and take it out of the templates.
2018-04-25 15:46:48 -04:00
Steve Sanderson 60dcc6e568 In Razor compilation, trim leading and trailing whitespace nodes (#586)
* In Razor compilation, trim leading and trailing whitespace

* Update all unit tests to account for whitespace trimming

* Recognize that TagHelperIntermediateNode produces output too

* Skip TrimWhitespacePass during first phase of two-phase compile

* Skip TrimWhitespacePass during design-time builds

* Update baselines after rebase
2018-04-24 21:44:30 +01:00
Steve Sanderson 6e85f4cb13 Replace 'nobr' with 'span.text-nowrap'. Fixes #652 2018-04-23 09:36:37 +01:00
Steve Sanderson 9f589b71df Fix diffing when "bind" is combined with conditional attribute. Fixes #624 2018-04-20 22:49:12 +01:00
Daniel Roth d0e09a066c Change blazorlib output type to Library 2018-04-19 16:06:32 -07:00
Ryan Nowak f5dc6df13d Fix #597 Allow multiple tokens in attributes
The issue here is that we were missing tests for the design time code
path. We have tests that the bind-... cases work at runtime but were
missing coverage for the editor.

I took the most relevant set of the tests for running bind-... code and
added them to the tests for codegen.
2018-04-19 16:14:10 -04:00
Steve Sanderson d02436d55c Bootstrap 4 and new styling (#619)
* Upgrade to bootstrap v4

Remove  redundant MIME type

* Add new styling to StandaloneApp

* Update THIRD-PARTY-NOTICES.txt

* Update version of Blazor used by templates when running from source

* Update styling on BlazorStandalone.CSharp template

* Tweak brace style

* Update styling in BlazorHosted.CSharp template

* Update E2E tests that rely on specific CSS

* Add Open Ionic fonts license to notices too
2018-04-19 21:06:28 +01:00
Steve Sanderson ac1af2274b Eliminate wrapper elements (#602)
* Factor out all DOM-structure modifying code into an abstraction. Currently, implementation is still backed by the same underlying DOM APIs

* Implement LogicalElement properly (store hierarchy in own property; use comment nodes as containers)

* In LogicalElement, be explicit about unsupported scenarios

* Update E2E tests to stop assuming existence of wrapper elements

* Where supported, store private properties using opaque symbols as keys
2018-04-18 13:54:25 +01:00
Zachary Becknell a9dc626cbe SimpleJson: more informative exception when attempting to deserialize
object with non-empty constructor
2018-04-17 14:35:02 +01:00
Steve Sanderson 6c5f2a2262 Fix for logic around whether to include custom restore sources in template output 2018-04-17 09:43:45 +01:00
Guillaume ZAHRA 5112f9b310 AutoRebuild: System.ComponentModel.Win32Exception : 'Access denied'
Current AutoRebuild implementation crash if trying to launch the app hosted in IIS.

Current found hierarchy:

- svchost
|
   -- w3wp
   |
     -- VSIISExeLauncher
     |
       -- dotnet

devenv is not found of course in this scenario.

Even if the try catch seem to be good, when accessing the root process svchost, this exception is thrown:

System.ComponentModel.Win32Exception : 'Access denied'

in the 'while' statement

Due to this behavior, the try/catch need to be bubbled on the top of the while loop in order to have the correct behavior in case of fatal failure.
2018-04-16 16:01:39 +01:00
Steve Sanderson 03b8f2c99f Update templates' global.json files to require SDK 2.1.300-preview2-008533 2018-04-16 10:03:19 +01:00
Steve Sanderson b4c023b053 Only remove templates' custom RestoreSources for final 'rtm' builds 2018-04-16 09:52:28 +01:00
Steve Sanderson edf84cb80a Update link in compiler error message 2018-04-13 17:02:07 +01:00
Steve Sanderson 4cbf6cc64b Enable GenerateDocumentationFile. Add/fix XML docs. 2018-04-13 16:57:09 +01:00
Steve Sanderson 2f792cf53b Pass list of embedded resources candidate assemblies via temp file in intermediate dir. Fixes #554 2018-04-13 16:55:30 +01:00
Steve Sanderson ce8088f9a3 Inject MSBuild properties into templates during build 2018-04-13 16:50:33 +01:00
Steve Sanderson ce3c79e051 Reject script tags in components, but allow overriding. Fixes #552 (#553) 2018-04-12 16:28:31 +01:00
Steve Sanderson 2f4e60b134 Set 'NoRestartServerOnBuild' by default. This means we can re-enable IISExpress when we think people are all on VS15.7Pre3 or later 2018-04-12 12:12:09 +01:00
Steve Sanderson 2b5f61c8b1 Fixed version number of built templates package 2018-04-12 11:53:52 +01:00
Ryan Nowak 846d377b2c Update version numbers to 0.2 in preparation for 0.2 2018-04-11 11:10:17 -07:00
Steve Sanderson 50c4f4910f Update templates to Blazor 0.2.0-preview1-10195 2018-04-11 18:08:04 +01:00
Steve Sanderson fc4179efe6 Have server project template use Microsoft.AspNetCore.App preview 2 now we're requiring the newer .NET SDK 2018-04-11 18:08:04 +01:00
Steve Sanderson c9ecf46ed0 Change templates' global.json to specify SDK 2.1.300-preview2-008530 2018-04-11 18:08:04 +01:00
Steve Sanderson 39238d1884 Show templates in VS for ASP.NET 2.0 and 2.1 2018-04-11 18:08:04 +01:00
Ryan Nowak 8485e2ea10 Add support for Action event handlers
This change adds `Action` to the set of types that have an overload on
RenderTreeBuilder. Additionally, we special case `Action` in the runtime
because passing the event args via DynamicInvoke() would throw.

Finally, reverted some of the clutter introduced by the first pass of
the event handler feature.
2018-04-11 07:36:05 -07:00
Ryan Nowak 6d3838ef9d [WIP] Update templates
This is work in progress right now. We'll need to update again once
there's a build with the Action fix in it, and again to point to the
final package versions.

Just getting things staged ahead of time.
2018-04-11 14:25:54 +01:00
Steve Sanderson e727cf2419 Rename "blazor content" project to "blazor library". Fixes #539 2018-04-11 14:26:29 +01:00
Steve Sanderson 3d787d7988 Auto rebuild when reloading after a file change. 2018-04-11 10:51:44 +01:00
Luke Latham 945995199c Template/sample updates 2018-04-10 22:41:07 -07:00
Ryan Nowak ed2dbbd2f8 Update to preview2 release versions 2018-04-10 18:14:40 -07:00
Ryan Nowak 15ba614e6f Remove old workaround @onclick and @bind
This change removes support for the old syntax used for event handlers
and two-way binding.

See the relevant issues for details on the new features and
improvements:

bind https://github.com/aspnet/Blazor/issues/409
event handlers https://github.com/aspnet/Blazor/issues/503

Along with this change we've removed a few additional things Blazor
could do that aren't part of Razor's usual syntax.

----

The features that was used to make something like:
```
<button @onclick(...) />
```

is an expression that's embedded in a an element's attribute. This
feature might be useful in the future if we want to support 'splatting'
arbitrary attributes into a tag, but the runtime support for this isn't
accessible outside the Blazor core.

----

The features that implement:
```
<button onclick=@{ } />
```

have been removed in favor of a better design for lambdas, method group
conversions and other things for event handler attributes.

use `<button onclick=@(x => ...} />` instead.

We think is a better approach in general, because we want the app
developer to write and see the parameter list.

----

Both syntactic features that have been removed have dedicated error
messages in the compiler. If you're porting old code it should help you
figure out what to do.
2018-04-10 16:54:15 -07:00
Steve Sanderson bd2c8a09ef Improve JS-side event handling code. Fixes #433 2018-04-10 18:15:22 +01:00
Ryan Nowak df13669362 Improvements for delegate types (#516)
* Improve support for more types of event handlers

Improves support for for other types of event handlers with eventargs
types derived from UIEventArgs. Additionally fleshes out the set of
event handler types.

This change improves support for using more specific event handler types
like:

```
<button onclick="@Clicked" />

@functions {
    public void Clicked(UIMouseEventArgs e) { ... }
}
```

And:
```
builder.AddAttribute(12, "onkeypressed", KeyPressed);

...

void KeyPressed(UIKeyboardEventArgs e) { ... }

```

In particular what got better is:
- overload resolution for the AddAttribute method
- performance of different cases for AddAttribute

-----

The runtime now treats delegates as one of three types:
- arbitrary delegate: not attached to DOM events, not tracked by
renderer
- UIEventHandler: can attach to DOM events, tracked by renderer, first
class in IHandleEvents
- UIEventHandler-like: can attach to DOM events, tracked by renderer,
requires some special runtime support.

The set of overloads on AddAttribute has been tuned with a few specific
cases in mind.

Lambda expressions in an attribute will be inferred as UIEventHandler
unless the compiler does something more specific. So for instance,
passing a lambda as an attribute value for a component, where the
component doesn't define a matching attribute, will always be inferred
as UIEventHandler.

We now support method-group to delegate conversion for methods that
accept a derived UIEventArgs type. This means you can use a signature
like `void KeyPressed(UIKeyboardEventArgs e)` without any compiler
magic, and this will work in the runtime as long as the event type
produced by the runtime matches.

We also allow user-defined UIEventArgs-derived types. There's a pattern
for this and it requires defining an extension method and delegate type.

The method-group to delegate conversion part required some doing. It
doesn't play well with generics (Action<T> where T : UIEventArgs)
doesn't work at all. Adding more actual overloads (as opposed to
extensions) would cause lambda cases we want to work to be ambiguous.

----

The performance win here is to remove the need for a 'wrapper' delegate
created by the event handler tag helper code. This wrapper is now
created by the runtime, but only *after* we have checked the frame for
changes. This requires more heavy lifting in the runtime, but has the
advantage of producing no-op diffs as often as possible.

You will still get some inefficient behavior if your component uses a
capturing lambda in an event handler, so don't do that.

* Add selenium logs to test output

* Minor feedback

* WIP
2018-04-09 13:21:12 -07:00
Steve Sanderson 281d5a8751 Enable same-origin credentials by default. Add E2E test to show they can be sent to different-origin domains too. 2018-04-09 12:54:13 +01:00
flash2048 e096d7e0b1 Correct the use of a parameter 'autoSpace' in the constructor 2018-04-09 12:08:20 +01:00
Ryan Nowak d3bdb987b0 Add a new feed dotnet-core
This is the *new* and most correct feed for our developer builds.
Leaving the old ones there for now because the other ASP.NET Repos also
left them there.
2018-04-08 14:24:06 -07:00
Daniel Roth 08d5a15013 Update survey links for 0.2.0 2018-04-06 15:15:48 -07:00
Ryan Nowak c3366bc956 Add event handlers as tag helpers
This change adds support for mapping DOM event handlers as tag helpers
that function in a bi-modal way.

This is a new first-class feature for DOM events, and replaces a few
workarounds like using `@onclick(...)` or `click=@{ ... }`. I haven't
removed those things yet, this is a first pass to get the new support
in, we'll remove those things when we're totally satisfied.

When used with a string like `<button onclick="foo" />` the result is
a simple HTML attribute .

But when used with an implicit expression like
`<button onclick="@Foo" />` or
`<button onclick="@(x => Clicked = true)" />` a C# function is bound to
the click event from the DOM.
2018-04-06 13:00:04 -07:00
flash2048 3369208c28 Fix mistake in array index 2018-04-06 11:41:47 +01:00
Steve Sanderson a82fd5099e Force browsers to check for modifications to Blazor-served resources. Fixes #371 2018-04-06 10:58:23 +01:00
Steve Sanderson fef5a52183 Reference static content from referenced assemblies. Implements #340 2018-04-06 09:50:10 +01:00
Daniel Roth 05059d9aa3 Rename configure parameter to services 2018-04-05 12:03:54 -07:00
Daniel Roth 907832524a Add DI extension method namespace to Program.cs in templates 2018-04-05 12:03:54 -07:00
Steve Sanderson 902625579b For better consistency between VS and CLI, specify resource sources in csproj rather than NuGet.config
This was not possible before because of the
`Microsoft.NET.Sdk.Razor/2.1.0-preview2-30230` entry in `Sdk`, which
can't be loaded from a custom restore source. But since that's on
NuGet.org now, it's no longer a problem.
2018-04-05 10:41:13 +01:00
Steve Sanderson d3dc294d5e Revert live reloading implementation. See PR for explanation. 2018-04-04 18:10:12 +01:00
Ryan Nowak 707e781e5d Add Razor baseline test infrastructure
Ports somee infrastructure and converts Razor code generation tests to use
it. This makes it much easier to make cross cutting changes to code
generation and see the effect.

Use build /p:GenerateBaselines=true to update all of the generated code
in place or when adding new tests. Generally if tests are failing, the
easiest thing to do is to update the baselines and do a git diff to see
what the deltas are.

The changes to the tests here are to use the new baseline infrastructure
and to rename classes/methods to result in shorter file paths.
2018-04-04 08:05:59 -07:00
Steve Sanderson 2d89c11183 Update templates to Blazor 0.2.0-preview1-10168 2018-04-04 14:08:06 +01:00
Steve Sanderson f1283940b7 In live reloading, also reload if the server is being recycled. Plus rewrite LiveReloading.ts completely to be better organized. 2018-04-04 14:06:30 +01:00
Steve Sanderson 6f7c188a76 Revert the attempt to share signal file path between MSBuild and VS extension code, because it doesn't get populated at the right time 2018-04-04 12:26:51 +01:00
Guillaume ZAHRA 3b0f1313fe Resolution for "The path must be absolute" on published projects
Trying to replace the internal "." folder with the local assembly path in order to have an absolute path for the PhysicalFileStorage class at startup ("The path must be absolute" error at startup for published projects)

May resolve the issue of #376 on dev
2018-04-04 11:41:56 +01:00
Steve Sanderson 049673db0d Update templates to Blazor 0.2.0-preview1-10165 2018-04-04 11:31:36 +01:00
Steve Sanderson 71a3e31799 Trigger live reload feature after successful builds in VS 2018-04-04 11:29:59 +01:00
Steve Sanderson 5dfa857eab Minor NavLink cleanups 2018-04-04 10:21:07 +01:00
Austin Cummings 30ec582767 Add `ActiveClass` option to NavLink component 2018-04-04 10:16:49 +01:00
Olivier Lefebvre 1626b3b8c8 Support arbitrary 'fetch' arguments 2018-04-04 10:12:42 +01:00
Ryan Nowak 0c942ccc76 Fix for #453
This fix adds missing line mappings for the Blazor runtime code
generation. We had the correct line mappings for design time code, but
they were missing in this case for runtime code - where they are used
for error messages and debugging (not yet supported).

Once this fix is is in the error window and output log will report the
file/line/column of the original source in .cshtml.

It looks like jumping to the code from the error window is currently not
working correctly in VS. It works from the output window.

I'm going to follow up on the VS issue in the Razor repo, since the fix
won't come from the Blazor side.
2018-04-03 15:34:41 -07:00
Ryan Nowak d097190824 Add support for conditional attributes
Adds conditional attributes for HTML elements.

This means that an attribute with a 'false' .NET bool value or a null
.NET value of another type will not be rendered in the HTML.
2018-04-03 14:06:48 -07:00
Steve Sanderson 2c268a4eca Live reloading (currently enabled only for command-line builds - will
add VS support next)
2018-04-02 15:33:00 +01:00
Steve Sanderson 1fe90e2c0f Avoid unnecessary assembly/type lookups when retrieving cached method handles 2018-04-02 13:14:48 +01:00
Grahame Horner 590a47f6c7 Mono Platform Method Caching 2018-04-02 13:11:12 +01:00
flash2048 e696325b76 Corrects spelling of some comments 2018-04-02 12:34:08 +01:00
Steve Sanderson 38cdb870f8 Update templates to Blazor 0.2.0-preview1-10152 2018-03-30 12:22:58 +01:00
Steve Sanderson b596d0d9f8 Reorder package-lock.json to make NPM happy 2018-03-30 12:22:58 +01:00
Steve Sanderson b52912a460 Handle ternary expressions inside interpolated attributes. Fixes #446 2018-03-30 11:38:10 +01:00
Luke Latham 2a8d06b539 Double-quote attribute values? 2018-03-30 10:12:35 +01:00
Ryouko Konpaku ef3db51bbf Text Area Bind Fix for issue #434 (#439)
* Text Area Bind Fix for issue #434

* Correct Typo/Mispelling on test method name.
2018-03-30 10:10:23 +01:00
Stephen Roe cda3692d0b Added SVG support (#366) (#435)
* Added SVG support (#366)

* Added E2E tests for SVG
2018-03-30 10:07:10 +01:00
Ryan Nowak 5b658c80a1 Replace @bind with bind-...
This change introduces a 'tag helper' that replaces @bind with custom
code generation that accomplishes roughly the same thing.

This feature lights up by dynamically generating tag helpers that are
visible to tooling and affect the code generation based on:
- pattern recognition of component properties
- attributes that create definitions for elements
- a 'fallback' case for elements

'bind' also supports format strings (currently only for DateTime) via
a separate attribute.

This change introduces the basic framework for bind and tooling support.
We know that we'll have to do more work to define the set of default
'bind' cases for the DOM and to flesh out the conversion/formatting
infrastructure.

This change gets us far enough to replace all of the cases we currently
have tests for :) with the new features. The old @bind technique still
works for now.

Examples:

@* bind an input element to an expression *@
<input bind="@SelectedDate" format="mm/dd/yyyy" />
@functions {
    public DateTime SelectedDate { get; set; }
}

@* bind an arbitrary expression to an arbitrary set of attributes *@
<div bind-myvalue-myevent="@SomeExpression">...</div>

@* write a component that supports bind *@

@* in Counter.cshtml *@
<div>...html omitted for brevity...</div>
@functions {
    public int Value { get; set; } = 1;
    public Action<int> ValueChanged { get; set; }
}

@* in another file *@
<Counter bind-Value="@CurrentValue" />
@functions {
    public int CurrentValue { get; set; }
}
2018-03-29 22:04:24 -07:00
flash2048 b53d39e16f Corrects spelling of some comments, method name and remove an excess flag 2018-03-29 14:20:04 +01:00
Steve Sanderson f15c995a2a Ensure JSON deserializer only uses Activator.CreateInstance implicitly for structs 2018-03-29 10:41:07 +01:00
Matthew Lazarow 25cf73ed80 Json to struct error 388 2018-03-29 10:41:07 +01:00
Benjamin 64d7091b2b fix #396 - added TimeSpan serialization and deserialization 2018-03-29 10:07:00 +01:00
Miha Markič 9a01ec5743 Corrects spelling of some comments and method names (#398)
* Corrects spelling of some comments and method names

* Correctly renames one more instance of wrongly spelled enableNavigationInteception
2018-03-28 08:15:27 -07:00
Ryan Nowak f6479a75cb Remove workaround for old Razor tooling
This isn't needed anymore to support the Blazor design-time experience.

Now that it's gone, it will no longer cause conflicts with MVC's types
so we can remove the other workaround (privateassets).
2018-03-27 19:24:10 -07:00
Ryan Nowak d7d0c617ce Add a Blazor project capability 2018-03-27 19:21:48 -07:00
Javier Calvarro Nelson a1ba0ab8ea [Fixes #355] Generated index.html not regenerating when source Index.html changes (#375) 2018-03-25 18:36:27 -07:00
Steve Sanderson 29a7d4e5bc In Hosted template, exclude .sln when generating from VS (to avoid duplication) 2018-03-22 19:39:12 +00:00
Steve Sanderson b3619f3e10 Fix serving of woff/woff2 files for standalone-published apps on IIS/Azure 2018-03-22 10:15:55 +00:00
Ryan Nowak 808f741cdd Fix for #314 - streamline lambda component args
This change removes the magic 'auto-lambda' feature that has some
unconvincing UX.

Also working around a razor bug where explicit expressions are lowered
incorrectly. This should make it possible to write code like:

<Foo Bar="@(e => { OnChanged(e); })" />
2018-03-21 13:59:35 -07:00
Steve Sanderson 3b5ce7f4a7 In templates, move survey content out into a separate component 2018-03-21 16:22:32 +00:00
Steve Sanderson fb3beab270 Link on build by default for all configurations, not only Release 2018-03-21 15:58:49 +00:00
Steve Sanderson 992c873019 For standalone publishing, add configure MIME type for .json
As per
https://blogs.msdn.microsoft.com/africaapps/2013/06/07/how-to-serve-static-json-files-from-a-windows-azure-website/
2018-03-21 12:33:59 +00:00
Steve Sanderson 4d7670a979 Update templates to Blazor 0.1.0-rc1-10117 2018-03-20 22:37:30 +00:00
Steve Sanderson cf237707f9 Log info message if IL linking is disabled. Fixes #302 2018-03-20 22:28:43 +00:00
Steve Sanderson 3e4ba1a35f Add survey links to templates. Fixes #221 2018-03-20 22:27:29 +00:00
Steve Sanderson 678721cbad In hosted template, enable response compression for .wasm 2018-03-20 20:07:25 +00:00
Steve Sanderson 4eb78b3a8f Add global.json files to templates. Implements #300. 2018-03-20 19:45:43 +00:00
Steve Sanderson 4a8dc5c4a6 Add missing quotes to illink command. Fixes #301. 2018-03-20 19:42:25 +00:00
Steve Sanderson f703732e98 In templates, update _ViewImports/NavMenu to match updated APIs 2018-03-20 13:59:20 +00:00
Steve Sanderson aa43496d00 Update templates to Blazor 0.1.0-preview1-10112 2018-03-20 13:29:53 +00:00
Steve Sanderson 1760688d24 In BlazorComponent, add OnParametersSetAsync and make SetParameters overridable 2018-03-20 13:15:40 +00:00
Steve Sanderson 5bf0b891e9 In NavLink, support matching either complete URLs or just URL prefixes (both are necessary for typical nav menus) 2018-03-20 13:15:37 +00:00
Steve Sanderson d921705881 Add ParameterCollection.GetValueOrDefault methods 2018-03-20 12:18:44 +00:00
Steve Sanderson a88ab0db49 Support route constraints of the form ":type" (e.g, ":int", ":guid", etc.) 2018-03-20 10:17:00 +00:00
Steve Sanderson c58df0b739 Temporary workaround for #219 ("data-" attributes don't compile) 2018-03-19 18:09:53 +00:00
Steve Sanderson 58cc946a88 Update templates to use new @page routing feature 2018-03-19 13:18:42 +00:00
Steve Sanderson 139601894a Update templates to Blazor 0.1.0-preview1-10107 2018-03-19 13:13:07 +00:00
Javier Calvarro Nelson 70c4501497 [Fixes #220] Support `@page` with custom route template on components
* Updates the router component to scan for components within assemblies.
* Parses the templates on `[Route]` in component instances and builds a
  route table that maps paths to components.
* Uses the route table to map paths to components.
2018-03-16 19:15:00 -07:00
Steve Sanderson 2150820efe Implement Blazor.navigateTo for triggering navigation from JS code, and use it in E2E tests 2018-03-16 16:55:46 +00:00
Steve Sanderson 0cfb25e2ad Enable Razor build server by default 2018-03-16 12:49:59 +00:00
Steve Sanderson d0731c337d Add IUriHelper.NavigateTo 2018-03-16 11:19:09 +00:00
Steve Sanderson a02ac60c8c Fix selection on <select> box. Fixes #157 2018-03-16 10:27:26 +00:00
Steve Sanderson 03ac95f086 A better fix for the VS publishing hosted projects issue (#274) 2018-03-16 09:13:48 +00:00
Steve Sanderson 4202a6c9e1 In JsonUtil, support DateTimeOffset. Fixes #218. 2018-03-15 17:25:50 +00:00
Steve Sanderson e0481e1276 Update templates to Blazor 0.1.0-preview1-10098 2018-03-15 17:06:09 +00:00
Steve Sanderson eb727c0464 In standalone template, generate a launchSettings.json that doesn't have
IISExpress. Fixes #235
2018-03-15 17:03:54 +00:00
Steve Sanderson 1d31a80b50 Apply equivalent change to BlazorHosted.CSharp.Client 2018-03-15 13:38:55 +00:00
Pranav K b0d4e43a75 Make things build with preview1 SDK without warnings 2018-03-15 13:28:02 +00:00
Steve Sanderson eb0a0a8154 Due to #267, revert "In templates, specify blazor-dev feed in csproj instead of NuGet.config. Fixes #255"
This reverts commit d75e518ed0b9c22f80955261e98ad368d8e5ac65.
2018-03-15 13:04:33 +00:00
Steve Sanderson 2176aa8c87 Stop IL linker from stripping System.Threading.WasmRuntime. Fixes #239 2018-03-15 09:26:53 +00:00
Steve Sanderson fa54b0ab6e Update templates to Blazor 0.1.0-preview1-10092 2018-03-14 14:32:41 +00:00
Steve Sanderson 75958845d2 Temporary workaround for #261. Still need a proper fix. 2018-03-14 13:36:32 +00:00
Steve Sanderson 1d4ed4c0d6 In templates, specify blazor-dev feed in csproj instead of NuGet.config. Fixes #255 2018-03-14 12:13:16 +00:00
Steve Sanderson 5fce1edc99 Update templates to Blazor 0.1.0-preview1-10090 2018-03-14 12:09:54 +00:00
Steve Sanderson f7830e7b77 Publishing support 2018-03-14 11:23:43 +00:00
Javier Calvarro Nelson 04df5491c2 [Fixes #254] Microsoft.AspNetCore.Blazor.Build fails to build when referenced as a package. 2018-03-14 11:23:43 +00:00
Javier Calvarro Nelson 07d00442b1 Fix incremental builds 2018-03-14 11:23:43 +00:00
Steve Sanderson 0e9d52fe11 Support components and static content in external NuGet packages (#247)
* On build, drop <BlazorPackageContentFiles> items into dist\_content\(PackageName)\

* Add <script> and <link> tags to generated index.html

* Add testapp coverage of external content package. Still need to add E2E tests that uses it.

* Add missing unit test update

* Add example of packaging an entire Blazor component including CSS and images

* Add E2E test for component from NuGet package
2018-03-14 11:23:43 +00:00
Ryan Nowak 9549dccc54 Add @page directive
Adds the @page directive and support for specifying routes in components
at compile time.

For now the route is required and must begin with a leading /.
2018-03-14 11:23:43 +00:00
Javier Calvarro Nelson 700c2203c6 [Fixes #66] Adds linking support to the build
* Switch the tasks used to generate the blazor output to be MSBuild based.
* Package the optimized mono runtime and the BCL inside a nuget package.
* Add opt-in support for linking the application on build.
* Make the whole build process incremental.
2018-03-14 11:23:43 +00:00
Ryan Nowak ffadeecb45 Remove old <c:Foo> syntax 2018-03-14 11:23:42 +00:00
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 d1cfe0191a Update templates to Blazor 0.1.0-preview1-10071 again, now the CI builds
are running again
2018-03-14 11:23:42 +00:00
Steve Sanderson 9027f82928 Revert "Update templates to Blazor 0.1.0-preview1-10071"
This reverts commit b448a5d096a27de5c8e700e43a264673de16b632.

This is because CI is currently unable to complete the signing process
so we can't upload that particular build.
2018-03-14 11:23:42 +00:00
Steve Sanderson 13719a60ea Update templates to Blazor 0.1.0-preview1-10071 2018-03-14 11:23:41 +00:00
Steve Sanderson 0c736300d5 Update BlazorHosted template content to new APIs 2018-03-14 11:23:41 +00:00