Commit Graph

53 Commits

Author SHA1 Message Date
Ryan Nowak cb21edc500
Fix #7258 - remove components.server dependencies on blazor-specific plumbing (#7934)
* Removes a bunch of trivial usage of Blazor

... in names and comments where we don't specifically mean Blazor.

* Remove obsolete Startup from Components app

* Move UseBlazor into Blazor.Server

Moves UseBlazor and the related features in Blazor.Server - along with
some other general cleanup of misc shared files.

Now Components.Server has a much slimmer set of dependencies (MVC is
gone) and doesn't contain the "double startup" pattern that we
introduced (sorry).

We'll revisit UseBlazor and the dependencies there once the new
MapFallbackToFile support is available from static files.

* minor PR feedback

* Update reference assemblies

* fix broken test
2019-02-28 10:36:07 -08:00
Doug Bunting d515bd977f
Merge branch 'master' into merge/release/3.0-preview3-to-master 2019-02-25 15:56:46 -08:00
Steve Sanderson 87f4ca7299
[Templates] Imports and CSS tweaks for forms/validation (#7914)
* Add Microsoft.AspNetCore.Components.Forms to default Components imports

* Add default validation CSS rules in Components/Blazor templates

* Add default validation CSS styles to Components testassets projects
2019-02-25 21:50:12 +00:00
Steve Sanderson 61098b6680
Make InputBase use EventCallback for ValueChanged (#7915)
* Make InputBase use EventCallback for ValueChanged

... so that the host component gets re-rendered automatically after each value change (like when binding to DOM elements).

* Improve E2E test code

... so that the host component gets re-rendered automatically after each value change (like when binding to DOM elements).
2019-02-25 21:49:28 +00:00
Nate McMaster 7fe3b7640d
Merge branch 'release/3.0-preview3' 2019-02-22 15:07:50 -08:00
Nate McMaster 5be7d30231 Replace npm commands with yarn 2019-02-22 13:30:19 -08:00
Javier Calvarro Nelson 2d9cba86fd [Components] Prerrendering startup experience (#7770)
[Components] Prerrendering startup experience
* Introduces an IComponentPrerrenderer to handle Prerrendering
  * MVC registers a basic static prerrrenderer.
  * Components registers a more feature complete prerrender that will
    handle reconnection to the original circuit after prerrendering in
    the future to allow for prerrendered interactive components.
* Removes UseRazorComponents
  * Removes the SPA fallback in favor of a catch all route in
    Index.cshtml
  * Moves the framework files to be served by the default StaticFiles
    middleware in the pipeline by way of plugging specific providers
    through options.
  * Lifts UseSignalR(r => r.MapHub<ComponentHub>()) into startup and
    replaces it with a shorthand for MapHub using endpoint routing.
  * Adds extension methods to map components to selectors for a given
    hub.
* Updates the razor component templates to include prerendering and use a razor page as the entry 
   point.
2019-02-21 16:26:44 -08:00
Ryan Nowak ebb527d347 [wip] Update Razor SDK and resolve issues
I'm still chasing one more issue.

(cherry picked from commit 616a4a36f5)
2019-02-21 11:42:23 -08:00
Ryan Nowak 616a4a36f5 [wip] Update Razor SDK and resolve issues
I'm still chasing one more issue.
2019-02-21 09:14:17 -08:00
Ryan Brandenburg 5a7bfbbc01
Use Bootstrap 3.4.1 and 4.3.1 (#7719)
Use Bootstrap 3.4.1. and 4.3.1
2019-02-20 15:55:49 -08:00
Nate McMaster 85ae18c723
Make Visual Studio 2019 a prerequisite to building this repo (#7005)
Changes:

* Make Visual Studio 2019 a prerequisite for building this repo
* Update .sln files
* Update Windows SDK to 17134
* Update developer docs
* Disable ANCM tests
* Update to .NET Core SDK 3.0 Preview 2
* Use Microsoft.NET.Sdk.Razor as a package consistently accross the repo
* React to changes in metadata from Microsoft.NETCore.App
* React to changes in .NET Core SDK
* Attempt to workaround CodeCheck.ps1 failure which doesn't repro locally or on different agents. Possibly due to differences in the version of the PowerShell task?
* Remove dead YML file
* Rename usages of win7-{x64,x86} to win-{x64,x86}
* Update KoreBuild to 3.0.0-build-20190219.1
2019-02-20 09:53:53 -08:00
Steve Sanderson 7a2dfd3200
Components: Forms and validation (#7614) 2019-02-20 09:56:32 +00:00
Chris Ross 4e44025a52
Replace IHostingEnvironment with IWebHostEnvironment (#7725) 2019-02-19 21:11:52 -08:00
Ryan Nowak 98fe8a8328 Improvements to bind and event handling
The changes here make event dispatching (including bind) more
user-friendly by avoiding the need for manual calls to StateHasChnaged.

We also introduce a new type `EventCallback` (and `EventCallback<T>`).
This is a new primitive that is like a super-powered version of a
delegate. When writing a component that accepts delegates as parameters,
consider using `EventCallback` for the following reasons:
- Allows consumer to pass a variety of different delegate signatures
- Does proper event dispatching and error handling

Using `EventCallback` will eliminate most of the remaining cases where a
manual `StateHasChanged` is required when components are passing content
and delegates to each other.

`EventCallback` is inherently async for the reason that this is really
the only way to provide correct error handling.

-----

The fix for this will be two-phase by first creating a set of APIs that
can be targeted by the compiler that has the desired behaviour and then
updating the compiler to target this new infrastructure.
2019-02-17 15:58:08 -08:00
Pranav K fe1c2c84ee
Remove uses of JSRuntime.Current (#7599)
* Remove uses of JSRuntime.Current

Prerequisite for https://github.com/aspnet/AspNetCore/issues/6828
2019-02-15 15:14:00 -08:00
Pranav K cddbc2e888
Improve Components error handling (#7165)
* Improve Components error handling

* Change event handlers IHandleEvent, IHandleAfterEvent to be async.
* Return faulted tasks to Renderer instead of handling exceptions in ComponentBase
* Use ILogger in RemoteRenderer, and log to console in WebAssemblyRenderer
* Cleaning up touched files

Fixes https://github.com/aspnet/AspNetCore/issues/4964
2019-02-13 14:22:46 -08:00
Hao Kung c9499e14e4
Run helix tests on master (#6728) 2019-02-07 09:20:08 -08:00
Javier Calvarro Nelson f456e3d153
[Components] [Fixes #6953, #7226]
* Moves the Synchronization context from the remote renderer to the base renderer.
* Removes all the locking from the base renderer.
2019-02-07 07:03:52 -08:00
Pranav K 2e54d6485b
Introduce CircuitHandler to handle circuit lifetime events (#6971)
Introduce CircuitHandler to handle circuit lifetime events

Partial fix to https://github.com/aspnet/AspNetCore/issues/6353
2019-02-04 10:53:01 -08:00
Pranav K e312d64194
[Design]: Introduce CircuitHandler to handle circuit lifetime events
Partial fix to https://github.com/aspnet/AspNetCore/issues/6353
2019-02-04 09:38:39 -08:00
Nate McMaster 6081fec894
Add new build.cmd/sh options for suppressing restore, NodeJS, setting target arch and OS name, and more (#7137)
Add new command line parameters for working with the project:

* `-NoBuild`, `-NoRestore` - these already existed, but users found it hard to discover this powershell syntax: '-build:$false'
* `-Arch`/`--arch` - set the target CPU architecture to build. Defaults to x64
* `--os-name` - on non-Windows builds, manually specify if the build should target Alpine. generic Linux, or MacOS
* Rename flags used to build specific project types. The pattern now is `--build-$(group)` or `--no-build-$(group)` (In PowerShell its `-Build$(Group)` or `-NoBuild$(Group). Example: -NoBuildJava

Changes to build definitions:
* Update the ci build definition to build all supported architectures
* Support publishing multiple artifacts per job

Other changes:
* `-NoBuild` implies `-NoRestore`
* Add new properties, `TargetArchitecture`, `TargetOsName`, and `TargetRuntimeIdentifier`
* Replace usages of `SharedFxRid` with these new properties
* To make `--no-build-nodejs` actually work, replaced Components.Browser.JS.csproj with Components.Browser.JS.npmproj
* Fix errors when building for win-arm on a clean machine
* Fix a few other project errors, like using the wrong syntax for DefaultItemExcludes, or using the wrong Platform value for x86
2019-01-31 15:47:47 -08:00
Pranav K 16228c646a
Changes per PR 2019-01-25 13:53:07 -08:00
Pranav K c8319ece2a
Cleanup some infrastructure pieces in Components 2019-01-25 13:51:03 -08:00
Steve Sanderson a1d49e19b5 Revert feature that resets unspecified parameters to default(type). Fixes #6864 (#6931) 2019-01-22 16:16:07 -08:00
Steve Sanderson c901cc069d Rename IBlazorApplicationBuilder->IComponentsApplicationBuilder 2019-01-18 14:22:37 -08:00
Nate McMaster 5a70f5312f
Convert Components projects to use ProjectRef (#6698)
This addresses #4246 for src/Components/. A few other changes were necessary because components had been using stale dependencies.
2019-01-16 12:28:04 -08:00
Pranav K b56c589773
Dispose components on client disconnects (#6693)
* Dispose components on client disconnects
Fixes https://github.com/aspnet/AspNetCore/issues/4047
2019-01-15 14:52:40 -08:00
Steve Sanderson cbbdeaefd4
Enforce correct sync context on render, and allow explicit dispatch to sync context. Fixes #5639 (#6604)
* Only use async marshalling to renderer sync context when necessary

Note that the lifecycle methods already take care of capturing the correct sync context, so continuations will already be serialized.
Avoiding an extra layer of asynchrony keeps the semantics of rendering closer to the WebAssembly cases, and will fix a range of intermittent errors in the wild.

* Add E2E test of triggering rendering from outside the sync context

* Actually throw if attempting to render from incorrect sync context

* Add "Dispatch" API

* Handle dispatch within dispatch. Also test Dispatch on WebAssembly.

* Avoid heap allocation

* Simplify E2E test

* Replace Dispatch() with Invoke() and InvokeAsync()

* Add E2E test to validate async execution order

* Clean up
2019-01-14 15:31:53 +00:00
Steve Sanderson 70cdf11f76
Make Razor Components apps not use Blazor build (#6562)
* Replace UseServerSideBlazor with UseRazorComponents, which doesn't require Blazor build artifacts

* Make UseRazorComponents serve blazor.server.js from embedded resource

... so we don't need a build step to put it on disk somewhere.

* Fix TestServer

* Update ComponentsApp not to use Blazor build targets

* Update ComponentsApp.App sample to use new build package

* Update string constant in test

* Rename blazor.*.js to components.*.js

* Ensure correct build order

* Update nav menu title in Components sample app

* Fix remaining paths

* Switch ComponentsApp.App to use Sdk="Microsoft.NET.Sdk.Razor"

* Update mono.cecil version

* CR: Replace FrameworkFilesProvider with EmbeddedFileProvider

* CR: Use ManifestEmbeddedFileProvider
2019-01-11 16:14:11 +00:00
Steve Sanderson 8446b260d9
Split .Components.Build into .Blazor.Build+.Components.Build (#6538)
* Move Components.Build to blazor/src/. No content changes yet.

* Rename Components.Build to Blazor.Build and update file paths

* Move Components.Build.Test files. No content changes yet.

* Update contents in Blazor.Test

* Fix names of props/targets files

* Add minimal Components.Build package that just imports Razor targets and analyzer

* Make Blazor.Build depend on Components.Build and get Razor compilation targets from there

* Fix version of reference from .Blazor.Build to .Components.Build

* Fix signing error on local builds

* Update artifacts.props
2019-01-10 11:23:36 +00:00
Pranav K 6b0c0761a4 Avoid doing selenium 2019-01-09 17:17:22 -08:00
Steve Sanderson 326e329018
Run components E2E tests in CI (#5158)
* Auto-install local copy of selenium-standalone on build

* Automatically start/stop selenium-standalone when running E2E tests

* Update after rebase

* Exclude node_modules from E2ETests project

* Avoid deadlocks

* Include E2E tests when running all tests in src/Components

* Be more forgiving about waiting for selenium-server to be ready

* Update usage of shared source file
2019-01-08 16:07:07 +00:00
Ryan Nowak 9003c3cd75 PR Feedback
From:
2cb3964411..45adea0c6d (diff-9328b73f3a66921c3ef3fa8a4ce90031)
2019-01-04 13:38:32 -08:00
Ryan Nowak b1f4a7bafd Delete baseline files 2019-01-02 00:32:09 -08:00
Ryan Nowak 0dd1bf8cd3 Make the tests pass
- Remove baseline tests. Those live with tooling
- Unskip tests that should have been fixed years ago
- Fix rendering test infrastructure
2019-01-02 00:32:09 -08:00
Ryan Nowak bdb5982dbd Remove Blazor Compiler 2019-01-02 00:32:09 -08:00
Ryan Nowak 9e89a69a78 Update RazorCompilation.targets for new SDK 2019-01-02 00:32:09 -08:00
Ryan Nowak 4424594c9b Allow build to specify Razor SDK version 2019-01-02 00:32:09 -08:00
Ryan Nowak 688ab7fc49 Fix dotnet-blazor serve
This wasn't properly forwarding the base path to the configuration.
Basically nothing was setting RemainingArguments. We have a test project
that sets the base path, but it was never used when debugging locally.

I also cleaned this up a bit and changed it to use dotnet exec. This
allow you to debug the CLI and related server pipeline, but has the
tradeoff of not rebuilding.
2019-01-02 00:32:09 -08:00
Ajay Bhargav Baaskaran ffec555118 Added missed files 2018-12-18 15:35:38 -08:00
Ajay Bhargav Baaskaran 2a696f6a1c Merge branch 'release/2.2' 2018-12-18 12:50:01 -08:00
Steve Sanderson ceb1c8e562
Refactor Components.Browser package (#5166)
* Add empty Microsoft.AspNetCore.Blazor project

* Reorganize Blazor-specific parts of .Components.Browser into Microsoft.AspNetCore.Blazor. Delete redundant Components-CSharp template (it now ships from Templating).

* Fix unit test

* Add missing assembly description

* Move WebAssemblyBlazorApplicationBuilder

* Rename BrowserHttpMessageHandler -> WebAssemblyHttpMessageHandler

* Delete obsolete BrowserServiceProvider. Rename BrowserRenderer -> WebAssemblyRenderer.

* Rename BrowserUriHelper -> WebAssemblyUriHelper

* Remove redundant ActivateMonoJSRuntime helper

* Fix namespace

* Remove redundant MicrosoftNETCoreAppPackageVersion override

* Update test namespaces
2018-12-18 12:32:57 +00:00
Javier Calvarro Nelson 436b5461ad
[Components] Create a renderer to render components into HTML (#4463)
* Adds an HtmlRenderer to Microsoft.AspNetCore.Components
 * It renders the component into a list of strings.
 * It only handles synchronous rendering.
2018-12-14 21:28:05 +01:00
Steve Sanderson ec9676f51e
Make component parameter analyzer allow public getters. Imported from Blazor PR 1702. (#4594) 2018-12-14 18:50:45 +00:00
Steve Sanderson d30c407dd0
Support IServiceProviderFactory in WebAssemblyHostBuilder (imported from Blazor PR 1623) (#4785) 2018-12-14 17:37:14 +00:00
Steve Sanderson 343208331d
Replace AssignToProperties with SetParameterProperties, which also clears unspecified parameter properties (imported from Blazor PR 1108) (#4797) 2018-12-14 17:07:07 +00:00
Steve Sanderson 3757908b14
Fallback for Components router (imported from Blazor PR 1534) (#4794) 2018-12-14 17:06:47 +00:00
Steve Sanderson e768a78c2b
Ensure ComponentBase async lifecycle methods return non-null task (imported from Blazor PR 1620) (#4790) 2018-12-14 17:06:30 +00:00
Steve Sanderson 8a9df6c873
HttpClientJsonExtensions better handling for failed requests (imported from Blazor PR 1660) (#4788) 2018-12-14 17:06:03 +00:00
Steve Sanderson 93127b39e8
Overload UriHelper to forceLoad the page (imported from Blazor PR 1154) (#4786) 2018-12-14 17:05:45 +00:00