19659 Commits

Author SHA1 Message Date
Andrew Scott 141fd3a0ea refactor(router): Update recognize to return null when there is no match (#40029) (#40315)
This commit updates the `recognize` algorithm to return `null` when a
segment does not match a given config rather than throwing an error.
This makes the code much easier to follow because the "no match" result
has to be explicitly handled rather than catching the error in very
specific places.

PR Close #40029

PR Close #40315
2021-01-05 13:51:42 -08:00
Andrew Scott ed42c93636 refactor(router): Use for...of rather than mapChildrenIntoArray helper (#40029) (#40315)
When stepping through the `recognize` algorithm, it is much easier to
follow when using a simple `for...of` rather than the helper
`mapChildrenIntoArray` with the passed closure. The only special thing that
`mapChildrenIntoArray` does is ensure the primary route appears first.
This change will have no affect on the result because `processChildren` later calls
`sortActivatedRouteSnapshots`, which does the same thing.

PR Close #40029

PR Close #40315
2021-01-05 13:51:42 -08:00
Joey Perrott 7e583abfe0 ci: remove autolabeling from pullapprove config (#40314)
Remove the autolabeling configuration from the pullapprove config as it conflicts
too often with other tooling.

PR Close #40314
2021-01-05 12:30:43 -08:00
Andrew Kushnir 45838c033e fix(core): take @Host into account while processing useFactory arguments (#40122) (#40313)
DI providers can be defined via `useFactory` function, which may have arguments configured via `deps` array.
The `deps` array may contain DI flags represented by DI decorators (such as `@Self`, `@SkipSelf`, etc). Prior to this
commit, having the `@Host` decorator in `deps` array resulted in runtime error in Ivy. The problem was that the `@Host`
decorator was not taken into account while `useFactory` argument list was constructed, the `@Host` decorator was
treated as a token that should be looked up.

This commit updates the logic which prepares `useFactory` arguments to recognize the `@Host` decorator.

PR Close #40122

PR Close #40313
2021-01-05 10:56:14 -08:00
George Kalpakas ec5b09b6f3 build(docs-infra): upgrade cli command docs sources to 5dd818279 (#40251)
Updating [angular#11.0.x](https://github.com/angular/angular/tree/11.0.x) from
[cli-builds#11.0.x](https://github.com/angular/cli-builds/tree/11.0.x).

##
Relevant changes in
[commit range](https://github.com/angular/cli-builds/compare/715d873ae...5dd818279):

**Modified**
- help/test.json

PR Close #40251
2021-01-05 10:03:53 -08:00
Andrew Scott a1dcfc58ae fix(router): Router should focus element after scrolling (#40241)
According to the [spec](https://html.spec.whatwg.org/#scroll-to-fragid),
we should attempt to set the browser focus after scrolling to a
fragment. Note that this change does not exactly follow the robust steps
outlined in the spec by finding a fallback target if the original is not
focusable. Instead, we simply attempt to focus the element by calling
`focus` on it, which will do nothing if the element is not focusable.

fixes #30067

PR Close #40241
2021-01-05 09:48:49 -08:00
Andrew Scott 426653e35c test(router): update scroller tests to use real objects (#40241)
The current tests in the router scroller are
[change-detector tests](https://testing.googleblog.com/2015/01/testing-on-toilet-change-detector-tests.html)
and do not ensure the correct behavior of the scroller.
This commit updates the tests to assert actual scrolling behavior of the
browser.

PR Close #40241
2021-01-05 09:48:48 -08:00
Andrew Scott a96189345c refactor(router): Remove unused property in BrowserViewportScroller (#40241)
The `BrowserViewportScroller` injects but does not use the `ErrorHandler`.
This commit removes the `ErrorHandler` from the constructor.

PR Close #40241
2021-01-05 09:48:48 -08:00
Mario Sabo 938f417875 docs: fix interchanged values (#40302)
PR Close #40302
2021-01-05 09:46:57 -08:00
Howard Jing c83163ecfe docs(router): fix typo (#40244)
Replace the word Angualr with Angular.

PR Close #40244
2020-12-23 10:05:31 -08:00
Alan Agius 002806beb0 docs: update boolean and enumerated CLI section (#40224)
With this change we change the `Boolean and enumerated options` to use kebab-case flags
 as the camelCase variant are deprecated. We also remove the `enumerated option description`
 as this is no longer correct and needed following the CLI MAN page update in #40038

PR Close #40224
2020-12-23 09:51:29 -08:00
Keen Yee Liau 9a149d4c49 docs: use kebab-case for CLI commands (#40240)
Kebab-case is preferred over camelCase in Angular CLI.
camelCase support is deprecated and will be removed eventually.

PR Close #40240
2020-12-23 08:36:32 -08:00
Kristiyan Kostadinov ef13e834fe fix(core): error if detectChanges is called at the wrong time under specific circumstances (#40206)
Internally we store lifecycle hooks in the format `[index, hook, index, hook]` and when
iterating over them, we check one place ahead to figure out whether we've hit found
a hook or an index. The problem is that the loop is set up to iterate up to `hooks.length`
which means that we may go out of bounds on the last iteration, depending on where
we started. This appears to happen under a specific set of circumstances where a
directive calls `detectChanges` from an input setter while it has `ngOnChanges` and
`ngAfterViewInit` hooks.

These changes resolve the issue by only iterating up to `length - 1` which guarantees that
we can always look one place ahead.

This appears to have regressed some time in version 10.

Fixes #38611.

PR Close #40206
2020-12-22 14:52:12 -08:00
Pete Bacon Darwin b865b32ffa fix(compiler-cli): handle \r\n line-endings correctly in source-mapping (#40187)
Previously `\r\n` was being treated as a single character in source-map
line start positions, which caused segment positions to become offset.

Now the `\r` is ignored when splitting, leaving it at the end of the
previous line, which solves the offsetting problem, and does not affect
source-mappings.

Fixes #40169
Fixes #39654

PR Close #40187
2020-12-22 14:50:57 -08:00
Misko Hevery 632fe6011d fix(core): Call onDestroy in production mode as well (#40120)
PR #39876 introduced an error where the `onDestroy` of `ComponentRef`
would only get called if `ngDevMode` was set to true. This was because
in dev mode we would freeze `TCleanup` to verify that no more
static cleanup would get added to `TCleanup` array. This ensured
that `TCleanup` was always present in dev mode. In production the
`TCleanup` would get created only when needed. The resulting cleanup
code was incorrectly indented and would only run if `TCleanup` was
present causing this issue.

Fix #40105

PR Close #40120
2020-12-22 08:02:27 -08:00
George Kalpakas b3041aeee3 docs: fix SpyDirective in lifecycle-hooks docs example to use one ID per instance (#40208)
Previously, the `SpyDirective` in the `lifecycle-hooks` docs example
would use a different ID when logging `onInit` and when logging
`onDestroy` for the same instance, making it impossible to associate the
two calls. This was not helpful and came in constrast with how the
directive was described in the corresponding guide and shown in the
accompanying `spy-directive.gif` image.

This commit fixes the logic of the `SpyDirective` class to use the same
ID for all log operations of an instance.

Partially addresses #40193.

PR Close #40208
2020-12-21 14:22:16 -08:00
George Kalpakas 92a9c66341 docs: make the spy-directive docregion (in lifecycle-hooks example) easier to follow (#40208)
Previously, the docregion code referenced a `nextId` variable that was
not shown in the code, which was confusing for the reader.

This commit makes the declaration of the `nextId` variable part of the
docregion, so it is clear to the reader where it comes from and how it
is initialized.
This commit also removes the `logIt()` helper method, which didn't seem
to add value and calls `logger.log()` directly instead.

PR Close #40208
2020-12-21 14:22:16 -08:00
George Kalpakas 4a29b986a5 docs: fix the order of links in lifecycle-hooks docs example (#40208)
This commit aligns the order of the links to the various sections of the
`lifecycle-hooks` docs example with the order in which the sections
appear in the template (which also coincides with the order in which
they are presented/discussed in the corresponding guide).

PR Close #40208
2020-12-21 14:22:16 -08:00
Amadou Sall 7519cbf74b docs: HTTP in HttpClient should not be written in uppercase (#40195)
PR Close #40195
2020-12-21 14:21:33 -08:00
George Kalpakas 09ebd534bf build: use the latest versions of Chrome (v87) and Firefox (v84) in tests (#40150)
This commit updates the versions of Chrome and Firefox used in tests -
both with Bazel and without (via Puppeteer) - to the latest:
- Chrome v87
- Firefox v84

PR Close #40150
2020-12-21 14:15:32 -08:00
George Kalpakas 19eba4bca0 docs(dev-infra): add instructions for updating GeckoDriver in browsers/README.md (#40150)
This commit adds instructions in `dev-infra/browsers/README.md` on how
to update the version of GeckoDriver (the WebDriver implementation for
Firefox browsers).

NOTE:
The gecko driver download URLs perform redirection, so the `curl`
command needs to be run with the `-L/--location` option to follow
redirects. I updated all `curl` commands (even those that are not used
on gecko driver download URLs) for consistency.

PR Close #40150
2020-12-21 14:15:32 -08:00
George Kalpakas 8d22e73341 build: fix instructions and process for updating Chrome version (#40150)
Previously, the instructions and process for updating the version of
Chrome ued in tests assumed that there was always going to be a
ChromeDriver version that corresponded to a Chrome version. For example,
if we wanted to use Chrome v87.0.4272.x, we assumed that there was going
to be ChromeDriver v87.0.4272.x. It turns out that this is not always
the case.

This commit updates the instructions and process for updating the Chrome
version to ensure a valid version of ChromeDriver will be used as well.

PR Close #40150
2020-12-21 14:15:32 -08:00
George Kalpakas bfb9b40884 docs(dev-infra): fix command and typos in browsers/README.md (#40150)
This commit fixes the instructions in `dev-infra/browsers/README.md` to
use the `shasum` executable (instead of `sha256`, which does not exist
afaict).

The commit also fixes a couple of typos.

PR Close #40150
2020-12-21 14:15:31 -08:00
George Kalpakas 6c0270ad93 docs(dev-infra): refactor browsers/README.md to use one sentence per line (#40150)
This commit refactor the `dev-infra/browsers/README.md` file to have one
sentence per line. This makes it consistent with other Markdown files in
the repository and makes diffs for future changes more readable.

This commit also uses proper Markdown numbered lists and fixes
indentation.

PR Close #40150
2020-12-21 14:15:31 -08:00
George Kalpakas 3f4a1d6154 build(docs-infra): update Lighthouse to v7.0.0 (#40198)
This commit updates `lighthouse` to version 7.0.0.

It also adds a `width` attribute to the `code-icon.svg` image on the
homepage, which was pointed out as missing in the Lighthouse report.
(Explicit `width`/`height` attributes on images help reduce the
[layout shift][1] of the page.)

[1]: https://web.dev/cls/

PR Close #40198
2020-12-21 10:36:02 -08:00
Alexey Elin 353b9db535 docs: remove -webkit-transition-timing-function CSS property (#40153)
Angular has stopped to support browser that requires that CSS property.
All supported browsers support standard transition-timing-function CSS property

PR Close #40153
2020-12-21 10:23:58 -08:00
Aristeidis Bampakos 1d13073173 docs: fix styles in binding guides (#40182)
Fix styling issues with the visual representation of the content

PR Close #40182
2020-12-21 10:22:32 -08:00
Hadrien TOMA d3afcc5fb0 docs: update App Shell guide to reflect its actual behavior (#40210)
PR Close #40210
2020-12-21 10:21:00 -08:00
George Kalpakas 089cc174da ci: correctly rebase PRs for branches contain a slash (/) (#40184)
Previously, due to a bug in `rebase-pr.js`, PRs for branches containing
a slash (/) in their name would fail to be rebased
([example failure][1]).

This commit ensures that such branch names are handled correctly.

[1]: https://circleci.com/gh/angular/angular/884503

PR Close #40184
2020-12-21 10:12:03 -08:00
George Kalpakas 7afd74db0c build(docs-infra): upgrade cli command docs sources to 715d873ae (#40214)
Updating [angular#11.0.x](https://github.com/angular/angular/tree/11.0.x) from
[cli-builds#11.0.x](https://github.com/angular/cli-builds/tree/11.0.x).

##
Relevant changes in
[commit range](https://github.com/angular/cli-builds/compare/5baf8ed65...715d873ae):

**Modified**
- help/lint.json

PR Close #40214
2020-12-21 10:10:09 -08:00
Troels Lenda 2075cf79a3 docs: use an explicit product id in the getting started example (#34934)
Simplyfing the example by prodiving an id for each
product instead of relying on their index in the array.

Closes #34738

PR Close #34934
2020-12-17 12:02:10 -08:00
Alan Agius 24c6d56d5a refactor(core): remove custom globalThis (#40123)
This is provided by TypeScript since version 3.4

PR Close #40123
2020-12-17 11:43:28 -08:00
Andrew Kushnir f1aabf1c2f build: use "outFiles" in .vscode/launch.json to speed up debugging sessions (#39848)
This commit adds the "outFiles" config options into the .vscode/recommended-launch.json, which helps speed up
the startup time of a debugging session by limiting the number of files that should be loaded.

PR Close #39848
2020-12-17 11:23:14 -08:00
Tasos Alexiou ab34211eed refactor(docs-infra): enable tslint rules for the angular.io app (#39307)
Signed-off-by: Tasos Alexiou <tasos@arrikto.com>

PR Close #39307
2020-12-17 10:02:39 -08:00
George Kalpakas 35cde145e0 ci: fail CI jobs when rebasing on master fails (#40161)
As part of the `setup` CI job (which is a prerequisite for all other CI
jobs), we rebase the current code on master to make sure the PR changes
are compatible with the latest code from master, even if the PR has not
been rebased recently.

When it is not possible to automatically rebase (i.e. when there are
conflicts that need to be resolved manually), the job and subsequently
the entire workflow should fail.

This behavior has been accidentally broken in #39592, so that the job
would succeed even if the rebase operation failed.

This commit fixes it by ensuring the `exec()` helper used in
`rebase-pr.js` will throw an error if the underlying command execution
fails. Previously, the function would always return stdout output as a
string and attach a `code` property indicating the exit code of the
command.

Since the exit code isn't necessary in the `rebase-pr.js` script, this
commit simplifies the `exec()` helper by making it return the stdout
output as a plain string (without extra properties) and re-throw any
errors (unless the `ignoreError` argument is set to `true`).

(Initially reported [here][1] by @JoostK.)

[1]: https://angular-team.slack.com/archives/C042EU9T5/p1608070403128900

PR Close #40161
2020-12-17 09:43:48 -08:00
Joey Perrott e0e2157a28 release: cut the v11.0.5 release (#40164)
PR Close #40164
11.0.5
2020-12-16 15:17:38 -08:00
Alan Agius 922f492a3b fix(core): set ngDevMode to false when calling enableProdMode() (#40124)
The `ngDevMode` description also mentions that calling `enableProdMode` will set this the value to `false`.
https://github.com/angular/angular/blob/4610093c87975b6355f31a9c849351129908783a/packages/core/src/util/ng_dev_mode.ts#L22 which is currently not the case.

PR Close #40124
2020-12-16 13:20:59 -08:00
Misko Hevery 0aa220bc00 fix(core): fix possible XSS attack in development through SSR. (#40136)
Escape the content of the strings so that it can be safely inserted into a comment node.
The issue is that HTML does not specify any way to escape comment end text inside the comment.
`<!-- The way you close a comment is with "-->". -->`. Above the `"-->"` is meant to be text
not an end to the comment. This can be created programmatically through DOM APIs.

```
div.innerHTML = div.innerHTML
```
One would expect that the above code would be safe to do, but it turns out that because comment
text is not escaped, the comment may contain text which will prematurely close the comment
opening up the application for XSS attack. (In SSR we programmatically create comment nodes which
may contain such text and expect them to be safe.)
This function escapes the comment text by looking for the closing char sequence `-->` and replace
it with `-_-_>` where the `_` is a zero width space `\u200B`. The result is that if a comment
contains `-->` text it will render normally but it will not cause the HTML parser to close the
comment.

PR Close #40136
2020-12-16 09:38:08 -08:00
Stepan Suvorov 03e8a92a98 docs(docs-infra): link to angular-pro screencasit (#39472)
PR Close #39472
2020-12-15 14:37:56 -08:00
Joey Perrott a1c82e772d build: update config flags for snapshot builds (#40095)
Update the config flags used for snapshot builds and release builds.

PR Close #40095
2020-12-15 13:36:57 -08:00
Joey Perrott e715a50b82 feat(dev-infra): support --mode flag for building environment stamp (#40095)
When building the environment stamp, support two modes: release and snapshot

The release mode will always stamp using the current version of in the root package.json
and in snapshot mode will use a version stamp expressing a version based on the tag and
the number of commits from the tag.

PR Close #40095
2020-12-15 13:36:57 -08:00
Alexey Elin 7d9ac37ce0 docs: fix typo (#40106)
PR Close #40106
2020-12-14 11:51:25 -08:00
Zach Arend 3c384651f2 fix(dev-infra): add vim .swp files to gitignore (#40094)
The vim editor produces temporarily files that can end in both .swo and
.swp. This commits add .swp to the .gitignore so we don't accidentaly
commit temporary files.

PR Close #40094
2020-12-14 11:39:41 -08:00
George Kalpakas 407e58343b ci: reduce flakiness of docs-infra deploy-to-firebase.js tests (#40088)
The `deploy-to-firebase.js` tests rely on git info retrieved from the
`angular/angular` repository (via `git ls-remote ...`).

Previously, different calls to `git ls-remote ...` could return
different values if a new commit was pushed or a new branch was created
during test execution, resulting in errors ([example CI failure][1]).

This commit makes the tests more stable by memoizing the result of
`git ls-remote ...` and returning the same result for subsequent calls
with the same arguments (even if meanwhile the remote has been updated).

[1]: https://circleci.com/gh/angular/angular/877626

PR Close #40088
2020-12-14 11:38:32 -08:00
Alexey Elin df41340c0b docs: remove prefixed animation related CSS properties (#40084)
Angular has stopped to support browser that requires these CSS properties.
All supported browsers support standard CSS properties:
* @keyframes rule
* animation

PR Close #40084
2020-12-14 11:36:49 -08:00
Alexey Elin 142c9659ed docs: remove unused CSS rule (#40080)
Removed rule don't affect their component views.
The reason - the templates don't contain elements to which that rule is applied.
See https://angular.io/guide/view-encapsulation for more details

PR Close #40080
2020-12-14 11:35:37 -08:00
Alan Agius 1176b6102d docs: update CLI MAN page format (#40038)
With this change we update the CLI docs template to seperate
the following the default and value types from the argument field.

This should make it clearer and more understandable

PR Close #40038
2020-12-14 11:31:08 -08:00
David Shevitz 7033b8648b docs: Rename Main concepts to Understanding Angular, Built-in Features to Developer Guides (#39930)
PR Close #39930
2020-12-14 11:30:22 -08:00
Alexey Elin e90a7f7ff1 docs: remove unused CSS rules (#40069)
Removed rules don't affect their component views.
The reason - the templates don't contain elements to which that rules are applied.
See https://angular.io/guide/view-encapsulation for more details

PR Close #40069
2020-12-10 14:30:18 -08:00
Alexey Elin eda5b20a5f docs: remove prefixed border-radius related properties (#40066)
Angular has stopped to support browser that requires these CSS properties.
All supported browsers support standard CSS properties:
* border-radius
* border-bottom-left-radius
* border-bottom-right-radius

PR Close #40066
2020-12-10 14:29:39 -08:00