Releases: angular/components
tartan-tonsure
material
bug fix | chips: only add type attribute to button remove icons (#18477) (584cd49), closes #18095 #18464 |
bug fix | sidenav: not restoring focus to SVG elements (#18614) (ed763f5) |
material-experimental
bug fix | mdc-button: add base css class to all buttons (#18422) (144cb41) |
bug fix | mdc-chips: align with latest MDC markup (#18472) (7db3e3a) |
bug fix | mdc-chips: don't allow focus on checkmark icon (#18588) (8637f66) |
bug fix | mdc-radio: able to focus disabled radio button via click (#18584) (cdd3600), closes #15499 |
bug fix | mdc-radio: use consistent ripple timings (#18590) (2658d9d) |
adamantium-mannequin
Highlights
- Column resizing for tables is now in experimental (198911)
- Selection list now supports a single selection mode. Enable it with the
multiple
input set tofalse
. FakeMatIconRegistry
has been added for unit testing.- Added a new Sass mixin,
mat-strong-focus-indicators
, that can be used to add a stronger focus
indicator to Angular Material components
cdk
bug fix | text-field: fix autofill listener on Chrome 80 (#18468) (4b329f0) |
feature | testing: add isFocused method to TestElement (#18183) (e704996) |
material
Deprecations:
MAT_LABEL_GLOBAL_OPTIONS
exported in
@angular/material/core
is deprecated. UseMAT_FORM_FIELD_DEFAULT_OPTIONS
from@angular/material/form-field
. Note that the propertyfloat
is
now matching the input namefloatLabel
.FloatLabelType
exported in@angular/material/core
is
deprecated. Import the symbol from@angular/material/from-field
.
bug fix | a11y: focus trap incorrectly moving focus internally if focus was already moved into it (#18541) (c704d17), closes #18538 |
bug fix | chips: unable to set custom tabindex on chip (#17699) (bbb92a7) |
bug fix | clipboard: leak if directive is destroyed while a copy is pending (#18066) (9227c7b) |
bug fix | datepicker: don't call date filter function if date is out of bounds (#18419) (5e34de2), closes #18411 |
bug fix | datepicker: memory leak in popup mode (#18102) (5fe233a), closes #17896 |
bug fix | drag-drop: auto scrolling not working if list uses scroll snapping (#18294) (9459f5b), closes #18162 |
bug fix | drag-drop: error when dragging items inside transplanted views with OnPush change detection (#18356) (f2f78a0), closes #18341 |
bug fix | drag-drop: not working correctly inside transplanted views (#18499) (d1a6ea7), closes #18482 |
bug fix | expansion-panel: Fix clipped box-shadow between expansion panel headers. (#18378) (dddbca2) |
bug fix | form-field: fix underline jank in fill variant (#18407) (52fea06) |
bug fix | icon/testing: Adds size specs to fake icon (#18306) (27ef842) |
bug fix | input: apply static class binding to host (#18196) (8f62ffe) |
bug fix | list: allow for list and list items to be disabled (#17584) (c6a9f15), closes #17574 |
bug fix | list: Selection List element should not be focusable. (#18445) (fd1593d) |
bug fix | ng-update: avoid error if project has folder ending with style extension (#18454) (411d048), closes #18434 |
bug fix | ng-update: do not throw if project does not have dependencies (#18470) (01e4fba), closes #18469 |
bug fix | overlay: incorrectly calculating using minWidth and minHeight as a string (#18540) (0d7e2f0), closes #18486 |
bug fix | overlay: restore previous host element before attaching (#17855) (ee96e05) |
bug fix | platform: RTL scrolling behavior detection not using cached value in some cases (#18389) (633e4c2) |
bug fix | selection-list: incorrectly handling A key in some cases (#18513) (ff0de11) |
bug fix | consistently use const enum (#18390) (8ae7b18) |
bug fix | popover-edit: Call markForCheck against row hover content when showing (#18258) (5c9f0d6) |
bug fix | progress-bar: changed after checked error on animation end event with noop animations (#18441) (004eeb8) |
bug fix | slide-toggle: clicks not landing correctly in some cases on Chrome (#18285) (99b27e8), closes #18269 |
bug fix | ng-add should always install matching CDK version (#18076) (fba22bc), closes #18020 #18020 |
bug fix | slider: inject document token (#18275) (3bae800) |
bug fix | tree: not allowing horizontal overflow (#18215) (c5923d6), closes #18182 |
feature | autocomplete: add event when option is activated (#18387) (4629e23), closes #17587 |
feature | chip: Add focus indicator (#18019) (78cfd3c) |
feature | drag-drop: add injection token for configuring the input defaults (#17970) (4667cd4), closes #17921 |
feature | drag-drop: add option to match size of dragged element in custom preview (#18362) (74b3441), closes #18177 |
feature | drag-drop: support scrolling parent elements apart from list and viewport (#18082) (c319431), closes #18072 #13588 |
feature | icon: New FakeMatIconRegistry for unit tests (#18151) (71955d2) |
feature | list: Add single select mode. (#18126) (3b242f0) |
feature | paginator: add provider to configure default options (#17595) (c7c6262), closes [#17123](https://github.com/angular/components/issues... |
copper-canoe
material
bug fix | drag-drop: error when dragging items inside transplanted views with OnPush change detection (#18356) (bd68a4f), closes #18341 |
bug fix | list: selection list element should not be focusable (#18445) (b61582c) |
bug fix | ng-update: avoid error if project has folder ending with style extension (#18454) (1cb7099), closes #18434 |
bug fix | ng-update: better detection for workspace project in v9 hammer migration (#18525) (7a2d372), closes #18504 |
bug fix | slider: inject document token in constructor (#18275) (d8b726d) |
tungsten-hombre
Highlights
New @angular/cdk/testing
infrastructure and Angular Material test harnesses
Testing components has historically relied on using implementation details such as CSS selectors to
find components and to trigger events. This meant that whenever a component library changed its
implementation, all of the tests relying on those components would need to be updated.
In version 9, we are introducing component harnesses, which offer an alternative way to test
components. By abstracting away the implementation details, you can make sure your unit tests are
correctly scoped and less brittle.
Most of Angular Material's components can now be tested via harnesses, and we are making harnesses
available to any component author as part of the Component Dev Kit (CDK).
Here's an example test before harnesses:
it('should switch to bug report template', async () => {
expect(fixture.debugElement.query('bug-report-form')).toBeNull();
const selectTrigger = fixture.debugElement.query(By.css('.mat-select-trigger'));
selectTrigger.triggerEventHandler('click', {});
fixture.detectChanges();
await fixture.whenStable();
const options = document.querySelectorAll('.mat-select-panel mat-option');
options[1].click(); // Click the second option, "Bug".
fixture.detectChanges();
await fixture.whenStable();
expect(fixture.debugElement.query('bug-report-form')).not.toBeNull();
});
And the same test with harnesses:
it('should switch to bug report template', async () => {
expect(fixture.debugElement.query('bug-report-form')).toBeNull();
const select = await loader.getHarness(MatSelect);
await select.clickOptions({text: 'Bug'});
expect(fixture.debugElement.query('bug-report-form')).not.toBeNull();
});
Learn more about Angular Material's component harnesses or building your own with the CDK.
New @angular/google-maps
package!
Earlier this year, we changed the name of this repo to "angular/components" to emphasize our goal
to provide more than Material Design components. The 9.0.0 release includes one of the next new
features in that regard- a new package that wraps the Google Maps JavaScript API in an easy-to-use Angular component.
You can see the documentation on GitHub for the time being.
Big thanks to @mbehrlich for contributing this!
New cdk/clipboard
subpackage containing helpers for working with the clipboard.
This new capability for @angular/cdk
provides some convenient helpers for dealing with
the clipboard. See the documentation for more information.
Big thanks to @xkxx for contributing this!
Breaking changes
We no longer have a direct depedency on tslib
. Instead it is now listed a peerDependency
.
This matches Angular framework.
Users not using the Angular CLI will need to manually install tslib
via;
yarn add tslib
# or
npm install tslib --save
material
Deprecations:
- checkbox: MAT_CHECKBOX_CLICK_ACTION is deprecated, use MAT_CHECKBOX_DEFAULT_OPTIONS
bug fix | autocomplete: not picking up indirect descendant option g… (#17510) (f0df308) |
bug fix | drag-drop: coerce drop list autoScrollDisabled input (#17480) (e2de5e6), closes #17475 |
bug fix | grid-list: not picking up indirect descendant lines (#17530) (044a360) |
bug fix | list: Do not rely on input binding order (#17501) (4301fb0), closes #17500 |
bug fix | list: selection list option not picking up indirect desce… (#17514) (ee863b2) |
bug fix | stepper: not picking up indirect descendant elements (#17529) (5f0f2dc) |
bug fix | tree: not picking up indirect descendant node definitions (#17522) (7f1c2ca) |
feature | checkbox: add options defaults config (#17473) (3fdab10) |
bug fix | button-toggle: indirect descendant buttons not picked up… (#17451) (67b009f) |
bug fix | chips: don't set aria-required when element doesn't have… (#17425) (939c18d), closes #17397 |
bug fix | dialog: don't move focus if it was moved during close ani… (#17300) (3476f51), closes #17296 |
bug fix | drag-drop: global resize subscription not cleared (#17257) (f10b222), closes #17255 |
bug fix | drag-drop: not picking up indirect descendant items (#17226) (ef92091), closes #17047 |
bug fix | drag-drop: only call enterPredicate when pointer is inside drop list (#17310) (9fe32c0), closes #17266 |
bug fix | drag-drop: unable to drop into connected list inside shad… (#17424) (593a06c), closes #16899 #17422 |
bug fix | form-field: annotate base class with Directive for Ivy (#17457) (4663d8f), closes #17022 |
bug fix | form-field: ensure that descendants are picked up in Ivy (#17439) (1d40ec9) |
bug fix | form-field: outline gap no calculated in shadow dom (#17303) (1b94295), closes #17262 |
bug fix | menu: trigger should aria-controls panel (#17365) (405f5d0) |
bug fix | schematics: secondary entry point migration not working against v9 (#17452) (5e10833), closes #17433 |
bug fix | select: not picking up indirect descendant option groups (#17458) (d773cce) |
bug fix | sidenav: container not picking up indirect descendant sid… (#17453) (9933479) |
bug fix | snack-bar: handle large numbers passed in as duration (#17239) (86a8fee), closes #17234 |
bug fix | tabs: no longer use OnPush (#16529) (35b3226), closes #15440 |
bug fix | tabs: not picking up indirect descendant tabs in ivy (#17346) (ed0067e), closes #17336 |
bug fix | toolbar: not picking up indirect descendant rows (#17469) (646d47f) |
feature | autocomplete/testing: polish harness API (#17350) ([7a748fc](7a748... |
brocade-arcade
material
bug fix | form-field: fix underline jank in fill variant (#18406) (351d0c4) |
bug fix | ng-add: do not overwrite version range specified in ng add (#18365) (06b7378) |
bug fix | ng-add: support "navigation" in additon to "nav" for navigation schematic (#18364) (06b7378) |
youtube-player
bug fix | handle API interactions before API has loaded (#18368) (98fac6c), closes #18279 |
uranium-surfboard
cdk
bug fix | a11y: make cdk-high-contrast work w/ emulated view encapsulation (#18152) (aff21e8) |
material
bug fix | reduce amount of generated high contrast styles (#18332) (b119472) |
bug fix | checkbox: outline not visible when checked in high contrast mode (#18048) (75a7681) |
bug fix | chips: set aria-required on chip input (#18098) (05d072a), closes #18049 |
bug fix | datepicker: able to focus disabled datepicker toggle while disabled via click (#18231) (9086a4b) |
bug fix | drag-drop: error if next sibling is removed after drag sequence has started (#18230) (7a167a2), closes #18205 |
bug fix | drag-drop: not picking up initial disabled state of handle (#16643) (3b28d33), closes #16642 |
bug fix | drag-drop: prevent dragging selected text with the mouse (#18103) (fbbac37) |
bug fix | expansion: unable to toggle disabled panel via methods (#18181) (796db4d), closes #18171 |
bug fix | input: input harness not matching matNativeControl (#18221) (f0d3a6b) |
bug fix | overlay: don't reset global overlay alignment when width is 100% and there's a maxWidth (#17842) (37d0191), closes #17841 |
bug fix | overlay: only clear duplicate containers from different platform (#17006) (67d27fd), closes #16851 |
bug fix | schematics: global typography class always being added (#18315) (2b83a0a), closes #17602 #16776 |
bug fix | tabs: better high contrast indication on supported browsers (#18160) (01b31de) |
bug fix | tabs: don't start auto-scroll when right clicking on buttons (#18033) (ca9b204) |
youtube-player
bug fix | memory leak if player is destroyed before it is done initializing (#18046) (6b3a271) |
bug fix | not picking up static startSeconds and endSeconds (#18214) (8ea430f), closes #18212 |
material-experimental
bug fix | errors with latest MDC canary version (#18173) (5d13491) |
bug fix | mdc-theming and mdc-typography files not published (#18251) (77a25eb) |
stone-stallion
obsidian-elephant
material
bug fix | chips: avoid accidental form submits when pressing remove button (#18095) (3b4e496) |
bug fix | datepicker: not respecting form control updateOn: blur for invalid values (#18063) (61029c8), closes #16461 |
bug fix | datepicker: re-render calendar when locale changes (#18094) (be17c25), closes #18087 |
bug fix | form-field: delete top border from focus animation (#17885) (09dc459), closes #17884 |
bug fix | form-field: error when focusing outline form field angular elements on IE/Edge (#18062) (f573072), closes #16095 |
bug fix | scrolling: update virtual scroll viewport size on resize (#18058) (c36466c), closes #16802 |
bug fix | sidenav: move focus into sidenav in side mode if autoFocus enabled explicitly (#17995) (c9856ee), closes #17967 |
bug fix | slide-toggle: fix and simplify high contrast styles (#18104) (2fd862d) |
feature | grid-list: add test harness (#18001) (5e9ca28) |
feature | table: add test harness (#17799) (a30094b) |
google-maps
bug fix | incorrect event name (#18027) (f2cbc06), closes #17845 #18026 |
material-experimental
bug fix | mdc-chips: avoid potential server-side rendering errors (#18044) (17a7bcb) |
bug fix | mdc-chips: checkmark not visible in high contrast black-on-white mode (#18061) (99af8e9) |
bug fix | mdc-chips: error on IE and Edge due to unsupported classList (#18074) (5fccd24) |
bug fix | mdc-chips: prevent default space and enter (#18084) (7b7e633) |
bug fix | mdc-chips: remove aria-hidden from focusable element (#18054) (55ee988) |
bug fix | mdc-chips: Set aria-required on input instead of grid (#18049) (22d7f77) |
bug fix | mdc-chips: removed chip still focusable (#18083) (403377d) |
bug fix | mdc-slide-toggle: fix extra border in latest canary version (#18035) (b989701) |
bug fix | mdc-slide-toggle: initial checked and disabled state not reflected visually (#17991) (e746895) |
bug fix | mdc-slide-toggle: update adapter to match new interface (#18124) (636ae5c) |
bug fix | mdc-tabs: incorrect tab text color in dark theme (#18068) (86a4ba7) |
feature | mdc-form-field initial prototype of mdc-form-field (#17903) (697c3a0) |
fluoride-floor
material
bug fix | menu: forward aria attribute to menu panel (#17957) (3299d8c), closes #17952 |
bug fix | chips: fix ripple element opacity when using CSS variable theming (#17576) (e7508ad) |
bug fix | form-field: deprecate legacy and standard appearances (#17961) (527f1b5) |
bug fix | chips: clear user agent styles when set on button (#17871) (26e73ac) |
bug fix | sort: no focus indication for active header (#17735) (191357a), closes #17716 |
bug fix | text-field: correctly check _initialHeight (#17900) (a3e953e) |
feature | button-toggle: add test harness (#17996) (9a6be0d) |
feature | core: add test harnesses for mat-option and mat-optgroup (#17940) (0ec499d) |
feature | paginator: add test harness (#17969) (5a6cdaf) |
feature | select,input,form-field: move test harnesses out of experimental (#17874) (1c1af58) |
youtube-player
bug fix | avoid setInterval change detection when player is created (#17894) (27fae29) |
bug fix | google-maps and youtube-player package missing tslib dependency (#17939) (2a2d837) |
google-maps
bug fix | google-maps and youtube-player package missing tslib dependency (#17939) (2a2d837) |
material-experimental
bug fix | mdc-menu: menu item should not inherit parent classname (#17953) (af7aa86) |
bug fix | mdc-progress-bar: update to latest canary to include adapter changes (#17938) (0753f9e) |
feature | mdc-list: Add scaffolding for MDC--based list (#17906) (45d34ad) |
feature | mdc-snackbar: Add demo. (#17895) (3ca7c5a) |
feature | mdc-table: add MDC styles/classes (#18000) (bb68c7b) |
feature | mdc-table: add skeleton (#17992) (4169c6f) |
feature | mdc-table: add tests (#18003) (8796d7c) |
bug fix | mdc-switch: updated to latest DOM structure guidance (#17905) (5da2ae1) |
bastnasite-belief
cdk
bug fix | overlay: add missing transform origin directive input (#17489) (c69a727) |
bug fix | virtual-scroll: run changeDetection after computing transform (#17727) (d908c9f) |
feature | overlay: accept PositionStrategy in cdkConnectedOverlay (#16374) (73d1ceb) |
material
bug fix | bottom-sheet: don't move focus if it was moved during close animation (#17725) (b622d11), closes #17300 |
bug fix | card: add missing card content selectors (#17488) (9b19e6a), closes #17487 |
bug fix | dialog: use view container from config when attaching content (#17819) (656c681), closes #17731 |
bug fix | drag-drop: disabled state not synced on data binding changes (#17330) (ec77513), closes #17325 |
bug fix | drag-drop: position reset if viewport is resized while boundary is invisible (#17777) (f800900), closes #17750 |
bug fix | expansion: accordion picking up headers from descendant accordion during keyboard navigation (#17481) (6c4122c) |
bug fix | form-field: incorrect assumptions about page direction (#17395) (a6f235d), closes #15415 #17390 #15415 #17390 |
bug fix | input: avoid multiple autosize input listeners with ivy (#17817) (fe151e6) |
bug fix | list: don't handle selection keys while using typeahead in selection list (#17826) (ad42a1b), closes #17785 |
bug fix | menu: cap maximum elevation for nested menus (#17687) (987c85d) |
bug fix | menu: internal focus state out of sync if item is focused programmatically (#17762) (af6c13f), closes #17761 |
bug fix | menu: keyboard controls not working if all items are disabled inside lazy content (#17407) (017728a), closes #16572 #17400 |
bug fix | portal: better handling when dom portal content can't be restored (#17851) (2e6045c) |
bug fix | portal: content not rendered inside outlet when view container is provided (#17731) (6d08240), closes #17650 |
bug fix | select: don't handle open key presses while the user is typing (#17785) (2f17450), closes #17774 |
bug fix | slider: stop dragging if page loses focus (#17849) (3b3c2ca) |
bug fix | tooltip: theming can affect the tooltip color (#17643) (924494d) |
feature | badge: add test harness (#17661) (f96e820) |
feature | bottom-sheet: add test harness (#17618) (a7c3ab0) |
feature | expansion: add test harness (#17691) (acfa174) |
feature | list: add test harnesses for list components (#17859) (49b6dbd) |
feature | sort: add test harness (#17802) (81294f7) |
google-maps
bug fix | handle trying to access the map before it has been initialized (#17805) (d990243) |
bug fix | unable to subscribe to events after initialization (#17845) (22fecb3) |
feature | Add MapPolyline component (#17512) (0c10828) |
youtube-player
bug fix | avoid clobbering api loaded callback (#17850) (7defaa6) |
bug fix | clean up internal observables (#17835) (ab0f30d) |
performance | triggering change detection for unused events (#17665) (61b423a) |
material-experimental
bug fix | mdc-chips: add checkmark container (#17694) (25c79cd) |
bug fix | mdc-chips: use ripple target for state interactions (#17681) (7aa522a) |
bug fix | mdc-tabs: markForCheck on ink bar content input setter (#17561) (71165f1) |