Releases: angular/components
cesium-cephalopod
Highlights
- First release candidate for Angular Material and CDK! The team now believes that APIs and
behaviors are stable and mature enough to exit beta. Please continue to file issues that
help us eliminate more bugs from the forthcoming 5.0.0 release. Moving forward, the major
version number of Angular Material and CDK will update alongside Angular itself. - Based on Angular 5.0
- More consistent naming conventions across the board
- 60+ bug fixes
BREAKING CHANGES
- Angular Material now requires Angular 5, which itself requires TypeScript 2.4+ and RxJS 5.5.2+
mat-icon
now usesHttpClient
from@angular/common/http
instead ofHttp
from
@angular/http
. Any unit tests that faked icon responses should be changed to use an
HttpInterceptor
.@angular/cdk/rxjs
has been removed in favor of RxJS 5.5's lettable operators.- toolbar: in previous versions, any content of
mat-toolbar
not wrapped in a
mat-toolbar-row
would be rendered inside of an implicitly createdmat-toolbar-row
. As of rc0,
this implicit row will no longer be created. This means that any custom application CSS that
targeted this implicitly createdmat-toolbar-row
will no longer apply. Users can re-add the
mat-toolbar-row
in their own templates to match the original output structure. This
resolves a longstanding issue wheredisplay: flex
styles were difficult to use onmat-toolbar
. - accordion: move CdkAccordion to
@angular/cdk/accordion
CdkAccordion
and associated classes live in@angular/cdk/accordion
AccordionChild
is renamed toCdkAccordionChild
CdkAccordion
no longer has displayMode and hideToggle@Inputs
CdkAccordionItem
is now a@Directive
- table:
- The argument order for the
when
property ofmatRowDef
andcdkRowDef
has been changed
from(rowData, index)
to(index, rowData)
in order to matchtrackBy
.
- The argument order for the
- datepicker:
fromIso8601
method onDateAdapter
removed in favor ofdeserialize
DateAdapter
will return an invalid date instead of throwing an error- The
userSelection
@Output
ofmat-calendar
has been made internal-only
- cdk/scrolling:
ScrollDispatcher.getScrollContainers
has been renamed togetAncestorScrollContainers
to
better match its behavior.- The
ScrollDispatcher.scrollableReferences
property has been renamed toscrollContainers
. - The
ScrollDispatcher.scrollableContainsElement
method has been removed. - The
Scrollable
class has been renamed toCdkScrollable
for consistency.
- unique-selection: move UniqueSelectionDispatcher to
@angular/cdk/collections
(UniqueSelectionDispatcher
,UniqueSelectionDispatcherListener
, and
UNIQUE_SELECTION_DISPATCHER_PROVIDER
) MATERIAL_COMPATIBILITY_MODE
,CompatibilityModule
,NoConflictStyleCompatibilityMode
,
MatPrefixRejector
,MdPrefixRejector
symbols have been removed.MAT_CONNECTED_OVERLAY_SCROLL_STRATEGY
is renamed toCDK_CONNECTED_OVERLAY_SCROLL_STRATEGY
Deprecations
- The following classes have been renamed. The old names are still available as deprecated:
OverlayOrigin
->CdkOverlayOrigin
ConnectedOverlayDirective
->CdkConnectedOverlay
PortalDirective
->CdkPortal
PortalHostDirective
->CdkPortalOutlet
ObserveContent
->CdkObserveContent
- The following
@Output
names have been renamed. The old names are still available as deprecated:
mat-select
onOpen
->opened
onClose
->closed
change
->selectionChange
mat-sidenav
/mat-drawer
open
->opened
close
->closed
mat-menu
close
->closed
matMenuTriggerFor
onMenuOpen
->menuOpened
onMenuClose
->menuClosed
mat-chip
onSelectionChange
->selectionChange
remove
->removed
destroy
->destroyed
mat-tab-group
selectChange
->selectedTabChange
Features
- table: add MatTableDataSource (#6747) (a9600e7)
- dialog: support minWidth, minHeight, maxWidth and maxHeight (#7488) (57f19cd)
- overlay: new keyboard dispatcher for targeting correct overlay (#6682) (a2ca4d6)
- snack-bar: set snack bar to be responsive. (#7485) (5b7982f)
- sort: use existing intl provider if one exists (#7988) (c8df2c1)
- dialog: add optional generic param for config data (#7447) (b29ac45), closes #4398
- Most directives / components now define an
exportAs
name (#7554) (fa441bc)
Bug Fixes
- block-scroll-strategy: disable smooth scrolling before restoring scroll position (#8132) (75bccde), closes #7139
- button: focus styles not applied to programmatically focused buttons (#5966) (a0bb1a3), closes #7510
- button-toggle: support two-way binding of value (#7911) (ee4915c)
- card: change image path to https in example (#7800) (65d3630)
- chip-list: use role = listbox only if chip list is not empty (#7664) (dc76c09)
- chips: programmatically selected chip stealing focus (#7978) (8168667)
- datepicker: allow
DateAdapter
authors to have more control ove… (#7346) (9fa075e) - datepicker: use disabled state from FormControl (#7514) (66e71c8)
- dialog: don't block other dialogs from opening while animating (#8051) (cc4fc11), closes #6560
- drawer: not restoring focus on close (#7668) (3041124)
- drawer: unable to toggle while drawer is animating (#6810) (085827f), closes #6376
- expansion-panel: prevent content from being clipped (#7617) (aa77aa1)
- focus-trap: server-side rendering error (#7635) (f7a12b6), closes #7633
- focus-trap: update focus trap attrs to camel case #6799 (#6960) (c663fad)
- form-field: fix underline at different zoom levels (#7567) (5cffd7c)
- form-field: remove 200px width since it messes up flex layouts (#7083) (160a511)
- form-field: remove specific mention of matInput in error (#7727) (f17cb99)
- icon: use SafeResourceUrl in getSvgIconFromUrl (#7535) (291a87c)
- input: remove IE clear icon (#8095) (2fa679b), closes #8076
- menu: add typography mat-font-weight (7fe1b81)
- menu: make @output names consistent #6677 (#8053) (b2dd17a)
- menu: not handling keyboard events when opened by mouse (#4843) (d822a39), closes [#4991](https://github...
marble-mustache
Highlights
- Progress spinner is now entirely css-based.
- Fixed sidenav: the sidenav can now be configured to use fixed positioning. This resolves a longstanding issue where sidenav-container would always introduce a scrolling region.
mat-select
is now used insidemat-form-field
. This makes all of the existing form-field features available withmat-select
, including hints, errors, prefixes, and suffixes. This also ensures thatmat-select
andmatInput
have a consistent presentation.
<mat-form-field>
<mat-select placeholder="State">
<mat-option *ngFor="let state of states" [value]="state">{{ state }}</mat-option>
</mat-select>
</mat-form-field>
Breaking Changes
- Previously the
ScrollDispatcher.scrolled
subscription would react both on scroll events and on window resize events. Now it only reacts to scroll events. To react to resize events, subscribe to theViewportRuler.change()
stream. UniqueSelectionDispatcher
,UniqueSelectionDispatcherListener
andUNIQUE_SELECTION_DISPATCHER_PROVIDER
are no longer
available from @angular/material and instead must be imported from @angular/cdk/collectionsisFocusTrapEnabled
is now properly marked internal.- The
OverlayRef.getState
method has been renamed toOverlayRef.getConfig
. defaultErrorStateMatcher
has been replaced byErrorStateMatcher
. For more info, see the input docs.
Features
- autocomplete: add md-autocomplete classes to overlay panel (#7176) (f8cd790), closes #4196
- dialog: add datepicker dialog and popup classes for easy styling (#7013) (0ff8d5d)
- menu: support typeahead focus (#7385) (f0d20ca)
- nav-tabs: add
mat-tab-label-active
class to active nav tab labels (#7508) (00e9338) - progress-spinner: switch to css-based animation (#6551) (630dfad)
- select: add support for custom error state matcher (#7443) (a774688), closes #7419
- select: make select work inside form-field (#6488) (d914cc4)
- selection-model: de/select multiple values at the same time (#7001) (e52beeb)
- sidenav: Add support for fixed sidenavs (#6712) (61579bc)
- sort: add enter and leave arrow animations (#7180) (2d350a0)
- table: add row when predicate (#6795) (0875b85)
- viewport-ruler: add common window resize handler (#7113) (3b0915a)
Bug Fixes
- add exportAs to missing components (#7392) (31e9775), closes #7361
- remove all md prefixes (#7241) (20a23f1)
- slide-toggle: report change to model before firing a change event (#7076) (c82fca8), closes #7074
- remove cdk re-exports from @angular/material (#7112) (f9b5ccd)
- autocomplete: don't open panel for readonly inputs (#7271) (5f8615f), closes #7269
- autocomplete: emit closing action for escape keydown event (#6250) (f4673a5)
- autocomplete: empty not cleaning up on tab (#7270) (6be0462), closes #7268
- autocomplete: error if panel is added asynchronously (#7078) (504ba70), closes #7069
- autocomplete: remove invalid aria markup (#7107) (6bd6b9f), closes #7100
- button: allow for elevation to be overwritten (#7305) (92a868e), closes #7264
- calendar: not reacting to min/max boundary changes (#7234) (eb012cc), closes #7202
- checkbox: defaulting to invalid name and value attributes (#7130) (26788f1)
- checkbox: support native tabindex attribute (#6793) (0270cf5)
- chips: do not set chips value if there's no ngControl or value (#7285) (d9ba13f)
- chips: fix chip list focus and keyboard behaviors (#7319) (f166468)
- common: don't log doctype warning when rendering server-side (#6833) (f8ed442)
- common-module: check if computed styles are available (#7003) (5da9e64), closes #7000
- datepicker: make sure _datepickerInput exists before accessing its (#7033) (2129b7a)
- dialog: directionality not injected into child components (#7111) (daa3880)
- drawer: backdrop not transitioning on close (#6651) (80310a5)
- drawer: drawer container animating when open by default (#7129) (4d278dd), closes #7007
- drawer: drawer container not reacting to drawer removal (#7060) (b0b91f4), closes #6271
- drawer: open event not firing on init (#7214) (ba5653d), closes #7208
- input: apply readonly attribute when readonly (#7439) (01622b1)
- input: don't highlight container when readonly input is focused (#7273) (f076390)
- input: make autosize work inside tabs & stepper (#7341) (c6824d5)
- list-key-manager: align matching logic with native listbox (#7212) (846cc13)
- list-key-manager: don't focus disabled items in typeahead mode (#7382) (1823b2f)
- menu: multiple close events for a single close (#7037) (2dcb76c)
- **m...
carapace-parapet
Highlights
- Each
@angular/material
component is now bundled into its own javascript file. This will allow
tools like webpack to more easily load only the components being used in an application. - New stepper component! The base behavior lives in
@angular/cdk
with Material Design flavors in
@angular/material
.
Breaking changes
- Angular Material now requires Angular 4.4.3 or greater
MaterialModule
has been removed. (cf1ece0) (#6803)
See the deprecation notice from beta.3 for more information.MdCoreModule
has been removed. Most of its functionality has been moved to@angular/cdk
over
the last few releases.FocusOriginMonitor
has been renamed toFocusMonitor
and moved to@angular/cdk
.- chip-list: The outputs
select
anddeselect
have been removed in favor of a single
onSelectionChange
output. - overlay: OverlayState has been renamed to OverlayConfig
- overlay: Now that the Overlay is part of the cdk rather than Angular Material directly,
thethemeClass
property has been removed. To add a class to the
overlay for theming, you can do
overlayContainer.getContainerElement().classList.add('my-theme-class');
- DateAdapter method
getISODateString
has been renamed totoIso8601
and a new method
fromIso8601
has been added.
Deprecation of "md" prefix.
In earlier betas, we've had a compatibility mode that allowed people to use either "md" or "mat"
as the selector for Angular Material components. This was created so that these components could
live side-by-side with AngularJS Material without CSS from
the two libraries colliding.
For beta.11, we've made the decision to deprecate the "md" prefix completely and use "mat" moving
forward. This affects all class names, properties, inputs, outputs, and selectors (CSS classes were
changed back in February). The "md" prefixes will be removed in the next beta release.
You can automatically update your projects with the angular-material-prefix-updater tool.
Check out the tool's page for instructions on how to run.
Why are we doing this?
We like the "md" prefix too! We added compatibility mode in order to keep "md" around, but over
time we found that there were too many downsides to continue supporting both prefixes at the same
time:
- Many users found the fact that the CSS used "mat" while templates used "md" confusing.
- Users in compatibility mode found that having "mat" in their templates while TypeScript class
names remained "Md" to be unfriendly. - Making both prefixes available consistently through templates required adding many
getters/setters that aliased the "true" property.
This ends up increasing payload size and complexity of the source code. - Compatiblity mode itself used broad directive selectors
to enforce that only one prefix was used at a time. This causes a problem where this broad selector
prevents Angular from throwing an error if an application uses a component without importing its
NgModule
.
Why not change the styles in AngularJS Material?
We explored this option early on (before creating compatibility mode). We found that changing the
library's styles such that they wouldn't affect the Angular Material components would increase
the specificity. This would have been a significant breaking change, as it would have potentially
broken countless custom styles that relied on a particular specificity working.
Bug Fixes
- autocomplete,select: inconsistent disabled option coloring (#6640) (454781d), closes #6638
- autosize: not resizing on programmatic changes (#6654) (89fea50), closes #5247
- button-toggle: border radius ignored if option is selected (#6699) (82e14f8), closes #6689
- checkbox: label content should not wrap (#6674) (9acab86), closes #6671
- chips: set appropriate aria-orientation (#6464) (a37aa6a)
- datepicker: allow date or datetime strings in fromIso8601 (#7220) (8436f8c)
- datepicker: allow ISO 8601 strings as inputs (#7091) (d2ceb2c)
- datepicker: backdrop class should be mat- (#7056) (2b61eb6)
- datepicker: Create a new injection token to avoid overriding LOCALE_ID (#6708) (2635cad)
- datepicker: fix wrong datepicker-input value for non MM/DD/YYYY locales (#6798) (29399b8)
- datepicker: makes sure the datepickerInput is registered (#7049) (e4d48d7)
- datepicker: toggle not reacting to disabled state changes in datepicker or input (#6964) (85993d3)
- expansion-panel: dark theme header hover color (#6616) (21c68ad)
- form-field: add aria-owns to label element (#6683) (4191b4d)
- form-field: placeholder not floating if autofilled (#6839) (602a861), closes #6837
- grid-list: avoid unnecessary calc declarations (#6745) (255611b)
- grid-list: styles not cleared when switching to a different styling mode (#6660) (87d607e), closes #4047
- input: remove resize handle from non-textarea inputs (#6768) (1272f03), closes #6757
- list: subheader margin being overwritten by typography (#6735) (efe483a)
- menu: multiple close events for a single close (#6961) (1cccd4b)
- menu: nested menu hover not working when trigger is added lazily (#6807) (6b5100b), closes #6731
- menu: nested trigger staying highlighted after click (#6853) (04bf3d1), closes #6838
- overlay: rename OverlayState to OverlayConfig (#6972) (1cfce8d)
- progress-bar: query mode not reversing direction in rtl (#6922) (8a21881)
- select: extra whitespace around placeholder (#6955) (9fe6386), closes #6923
- selection-list: do not coerece option value to boolean (#6983) (dfe01f2)
- selection-list: proper style for disabled options (#6829) (547d11f)
- slide-toggle: remove side-margin if slide-toggle label is empty (#6881) (a1ec81a), closes #6868
- slide-toggle: support native tabindex attribute ([#66...
découpage-panjandrum
Highlights
- Over 140 bug fixes
- Nested menus
- Nested menus
- Nested menus!
- Nested menus
- Autocomplete supports
md-optgroup
Overlay
moved to@angular/cdk
- New component
MdSelectionList
md-input-container
renamed tomd-form-field
(while still being backwards compatible)- Almost all components now use
OnPush
change detection (dialog being the exception) - You can now get back the
EmbeddedViewRef
when attaching aTemplatePortal
MdSidenav
has been split intoMdSidenav
andMdDrawer
. TheMdSidenav
is now meant to be
used for top-level application navigation, while the drawer is meant to be used for more local
split views. While there are no differences introduced between the two in this release, future
releases will see different features added to each
Breaking changes
- Imports from
@angular/cdk
are now scoped to a specific sub-package. For example, if you
previously had:
import {LiveAnnouncer, Overlay, Directionality} from '@angular/cdk';
You will now need to write:
import {LiveAnnouncer} from '@angular/cdk/a11y';
import {Directionality} from '@angular/cdk/bidi';
import {Overlay} from '@angular/cdk/overlay';
This helps ensure you're only pulling in the pieces of the cdk being used as well as providing more
context about what an imported symbol is being used for.
The current set of public @angular/cdk
subpackages are:
a11y, bidi, coercion, collections, keycodes, observers, overlay, platform, portal, rxjs,
scrolling, table.
If you are using SystemJS, each package you use must be added to the SystemJS configuration.
- All
Overlay
code has been moved from@angular/material
to@angular/cdk
. The symbols are
still re-exported through@angular/material
, but these re-exports will be removed in a
subsequent release. cdkScrollable
,ScrollDispatcher
, andViewportRuler
have been moved from overlay into its
ownscrolling
subpackage in@angular/cdk
.- input: Inputs have a width of
200px
by default (similar to native input elements). The
width can be overridden by via themat-form-field
css class. - input: CSS classes have changed from
mat-input-container-
tomat-form-field-
. - input:
md-prefix
andmd-suffix
are nowmdPrefix
andmdSuffix
. - portal:
TemplatePortal
now requires a generic type (C) to align withTemplateRef
.
This will usually beany
. - portal: Attaching a template portal will now return an
EmbeddedViewRef<C>
instead of an
emptyMap
. - observe-content:
ObserveContentModule
has been renamed toObserversModule
- overlay:
PositionStrategy
now has anattach
method and no longer passes the overlay
DOM element toapply
. - datepicker: You must now use a date object (of whatever type your DateAdapter uses) rather
than a string when setting the value of the datepicker programmatically (through value, ngModel,
or formControl). - datepicker:
mdDatepickerToggle
is now an element<md-datepicker-toggle>
with afor
property that points to theMdDatepicker
instance - datepicker:
NativeDateAdapter
will now use Angular's LOCALE_ID instead of the browser's
locale. - sidenav: CSS classes have changed from
mat-sidenav-
tomat-drawer-
- theming: The nonstandard
0
and1000
hues have been removed from themat-gray
palette - chips: The
selectable
property of themd-chip-list
has
now been moved tomd-chip
to maintain consistency with the new
removable
option.
If you used the following code,
<md-chip-list [selectable]="selectable">
<md-chip>My Chip</md-chip>
</md-chip-list>
you should switch it to
<md-chip-list>
<md-chip [selectable]="selectable">My Chip</md-chip>
</md-chip-list>
Deprecations
- All dash-case
@Directive
selectors are deprecated in favor of the camelCase equivalent. The
dash-case selectors will be removed in a subsequent release. Some examples include:
Old | New |
---|---|
md-line | mdLine |
md-tab-link | mdTabLink |
md-tab-label | mdTabLabel |
md-card-avatar | mdCardAvatar |
md-input-container
has been renamed tomd-form-field
. The old selector will be removed in a
subsequent release. This is in preparation to makingmd-select
a child ofmd-form-field
such that both select and input share the same features and appearance.- For camelCased directives, each corresponding
@Input()
is now also prefixed. For example,
cdkConnectedOverlay
now has inputs for
cdkConnectedOverlayOrigin
,cdkConnectedOverlayPositions
, etc. The class members themselves are
unchanged. The unprefixed inputs will be removed in a subsequent release. Affected directives are
cdkPortalHost
,cdkConnectedOverlay
,mdTooltip
,mdTextareaAutosize
, andmdMenuTriggerFor
. MdCoreModule
is deprecated and will be removed in a subsequent release now that most of its
functionality has been moved to@angular/cdk
- Reminder that
MaterialModule
is deprecated and will be removed in a subsequent release (see
changelog from beta.3 for more information).
Features
- autocomplete: emit event when an option is selected (#4187) (2dd5c7c), closes #4094 #3645
- autocomplete: support for md-optgroup (#5604) (e41d0f3), closes #5581
- cdk: move cdkScrollable, ScrollDispatcher, and ViewportRuler out of overlay (#6547) (0f6a2ec)
- cdk: move overlay into cdk (#6100) (4d82f83)
- chip: add aria-selected to chip (#5920) (281de25)
- chips: Add removal functionality/styling. (#4912) (c82aca9), closes #3143
- chips: add user defined tab index to chip list (#6073) (9eb9ddf)
- datepicker: close calendar after choose the same date again (#6323) (9ba5d84)
- datepicker: export unexported components for potential extension (#6314) (7bc648b)
- dialog: add beforeClose method (#6377) (cdbf305)
- dialog: expose backdrop clicks (#6511) (df28c3d)
- dialog: open dialog API improvements (#6289) (8b54715), closes #6272
- expansion-panel: add the ability to disable an expansion panel (#6529) (921432a), closes #6521
- focus-trap: return whether shifting focus was successful (#6279) (7626c51)
- menu: add indicator to menu items that trigger a sub-menu (#5995) (a51f82f)
- menu: add injection token for overriding the default options (#5483) (3cb3945), closes #5479
- menu: add nested menu functionality (#5493) (1e0c1fc)
- menu: increase nested menu elevation based on depth (#5937) (91f7bf7)
- native-date-adapter: use default locale from LOCALE_ID (#5419) (c09e8a7), closes #5393
- option: support for disableRipple binding (#5915) (addf1ce)
- overlay: add maxWidth and maxHeight (#6508) (9904e56)
- overlay: add providers for overriding the scroll strategies per component (#5134) (184a6e4), closes #4093
- overlay: support setting multiple panel classes (#6326) ([a190de7](a...
plasma-abacus
Highlights
- This version marks the release of
@angular/cdk
(component dev kit)! This package contains
general building blocks for UI components decoupled from the visuals of Material Design. In the
initial release, code from Angular Material'score/
have been moved fora11y/
,bidi/
,
coercion/
,observe-content/
,platform/
,portal/
. The@angular/material
package now
re-exports these symbols, marked as deprecated. The re-exports will be removed in a subsequent
release. - Initial version of data-table component. There is both a
<cdk-table>
(the core) and the
<md-table>
(with Material Design styles). See the documentation on material.angular.io for more
information. - Initial version of
<md-paginator>
and<md-sort-header>
components, which can be used either
with<md-table>
or any other table. - Both
@angular/material
and@angular/cdk
are now strict null compliant.
Breaking changes
@angular/material
now depends on@angular/cdk
as a peer dependency.- Some types have expanded to include
| null
or| undefined
for strict null compatibility. If
your application uses strict null checks, you may have to update the types in your app to match up
with the more accurate types coming from Angular Material. - Angular Material no longer adds RxJS operators to the prototype of
Observable
. If your app
depended on these operators being added by Angular Material, you will need to import them
explicitly.
Bug Fixes
- autocomplete: allow number zero as value (#5364) (9137fd9), closes #5363
- autocomplete: don't scroll panel when option is visible (#4905) (d3af57d)
- autocomplete: not closing when tapping away on mobile (#5260) (1dcaca7)
- autocomplete: reopening when clicking an option in IE (#5172) (fe31210), closes #5165
- autosize: resize when form value changes. Fixes #4657 (#5315) (8c9c11a)
- button-toggle: fix standalone button toggle style (#5121) (3d8c833)
- datepicker: pass layout direction to touchUi dialog (#5052) (8b6efb1)
- datepicker: use theme foreground color (#5290) (51bf26e)
- dialog: set aria-labelledby based on the md-dialog-title (#5178) (aee984a)
- directionality: error on platform-server (#5234) (49dfe60)
- input: theming mixin error (#5254) (37efb54), closes #5232
- input: underline showing at end if text-align is set (#5280) (5c9391d), closes #5272
- memory: Unsubscribe event listeners when using Observable.fromEvent (#5325) (1b351cd)
- menu: role being set on the wrong element (#5191) (2239668)
- overlay: remove webkit tap highlight from backdrop (#5258) (8feddd4)
- select: align first option to trigger when it is inside a group (#5153) (d39cb12)
- select: expose focus method (#5255) (7b2d4ae), closes #5251
- select: md-optgroup not using typography styles (#5193) (b5bf6f5)
- select: page scrolling down when selecting option with space (#5192) (2361385)
- snackbar: clear timeout upon dismiss (#4860) (146160c)
- tabs: server-side rendering error (#5348) (0174377)
- unique-selection-dispatcher: remove listeners on destroy (#5164) (f9bbbe7)
Features
- data-table: initial version. Too many commits to list.
- directionality: a provider to get directionality (#4044) (61d979e), closes #3600
- input: add custom error state matcher (#4750) (f73cc97)
- pagination: initial pagination component (#5156) (85fb00a)
- sort: add ability to manage and display sorting (#5307) (b328d36)
- tab-nav-bar: support disabling tab links (#5257) (fc809ed), closes #5208
- add support for strict null checks (#5094) (2bf7024)
- remove uses of rxjs patch operators (#5314) (e488e3f), closes #2622
- move a11y, bidi, platform, rxjs, and portal to cdk (#5386) (fde35e4)
- move observe-content to cdk (#5438) (b00f838)
glass-delicatessen
Highlights
- New md-expansion-panel and md-accordion components! Documentation for these will be coming soon.
- New typography extension to the theming API!
- Angular Material should generally work much better with @angular/platform-server. There are still
a few bugs, but things should mostly work.
Bug Fixes
- autocomplete: handle escape key (#4703) (9e2a66c)
- autocomplete: show hover style on selected options (#4724) (b3b6fda)
- autocomplete: throw better error when autocomplete doesn't have a panel (#4851) (70b31f1), closes #4844
- button: remove webkit tap highlight (#4953) (3ad80e4)
- button-toggle: remove redundant blocking touchstart listener (#4947) (1e92545), closes #4221
- button, tabs: potential clash with typography styles (#4915) (615fa2a)
- checkbox: margin for empty checkboxes incorrectly added (#4730) (8d9bbbf), closes #4720
- checkbox, radio: fix checkbox label not read in JAWS (#4610) (5c48949)
- datepicker: focus trap not working inside popup (#4839) (157bda1)
- datepicker: generate api docs (#4756) (be8d3b2)
- datepicker: inert calendar arrow direction in rtl (#4960) (22f0ea0)
- datepicker: minValidator & maxValidation false errors (#4649) (b2c3ed0)
- datepicker: restore focus to trigger element (#4804) (8860090)
- datepicker: switch to typography api (#4950) (7f298f7)
- dialog: add flex wrap to style (#4846) (9d4a34a)
- dialog: blurry content and slow animation in IE (#4809) (c8b1e20)
- dialog: componentInstance unavailable in afterClose (#4827) (cedf219), closes #4815
- dialog: invalid text color in dark themes (#4849) (3e993b6)
- dialog: partial keyframes animation error (#5020) (9c45865), closes #5019
- focus-trap: focus initial element when zone stabilizes (#4867) (ce9d253), closes #4864
- icon: remove automatic aria labelling and add a11y guidance (#4665) (657f0e8)
- input: correct invalid colors (#4771) (2103907)
- input: IE always adding scrollbar to textarea (#4917) (6aaddbf)
- input: make input spacing match spec (#4788) (16b65e8)
- input: set aria-invalid on mdInput element (#4757) (0c03946)
- input: remove align input binding (#5141) (0aaeb69), closes #5140
- input, cdk: a couple of server-side rendering errors (#5066) (97e35df)
- list: set aria attributes to md-divider (#4925) (a240c9c)
- menu: remove classes from inert element (#4800) (93a21c7), closes #4484
- navbar: update ink bar when links change (#4897) (41c43cc)
- overlay: emit attach and detach at appropriate times (#4880) (e98372e), closes #4871
- portal: detect changes for portal hostview while before attaching. (#4370) (28d2ddd)
- radio: label vertical alignment (#5120) (d3d6d26)
- radio: make MdRadioButton change detection strategy OnPush (#2526) (97a9bdc)
- select: consider value changes via arrow keys on closed select as user actions (#5112) (73aa43e), closes #5084
- select: panel in multiple mode not overlapping trigger (#4952) (638a34a), closes #4943
- select: unable to programmatically select falsy values (#4868) (2e3910c), closes #4854
- sidenav: don't restore focus if focus isn't inside sidenav (#4578) (3bc82f6)
- slide-toggle: switch typography level to body-1 (#5000) (436858e)
- snack-bar: test error in IE (#5048) (79092bd)
- tabs: fix tab translation animation in IE 11 (#4982) (#4986) (40f92c5)
- tooltip: not rendering in IE and Edge without web animations polyfill (#4937) (22746ce), closes #4935
- make material work with noUnusedParameters (#4946) (4b98f21), closes #4443
Features
- autocomplete: extend selector to match textarea (#4945) (223a27b)
- datepicker: popup positioning improvements (#4696) (eadccc2), closes #4406
- dialog: allow disableClose option to be updated (#4964) (66629cf), closes #3938
- dialog: allow setting the layout direction (#4778) (4658c85)
- dialog: custom class option [#4718](https://github.com/angular/material2/issu...
amber-ansible
2.0.0-beta.6 amber-ansible (2017-05-25)
Bug Fixes
- autocomplete: error when clicking outside instance without mdInput (#4573) (e6f7ace), closes #4555
- autocomplete: restore focus to input when click on option (#4702) (eecf897), closes #4645
- block-scroll-strategy: collapsing root node when enabled (#4638) (f11d46e)
- button: complete ripple when button becomes disabled (#4372) (fce2868)
- button: ripples blocking mouse events on user content (#4526) (9c4d601)
- checkbox, radio: make disabled label disabled match spec color (#4507) (8159fcc)
- chips: unable to tab out of chip list (#4605) (07a82ed), closes #4593
- datepicker: calendar toggle submitting parent form (#4531) (84ea8b2), closes #4530
- datepicker: export MD_DATE_FORMATS and MD_NATIVE_DATE_FORMATS (#4541) (58c252f), closes #4534
- datepicker: make datepicker work in compatibility mode (#4686) (b5b762a)
- datepicker: set cursor on clickable elements (#4542) (d2d67f5), closes #4533
- datepicker: use default cursor on toggle when disabled (#4604) (1319355)
- dialog: enable smooth scrolling on md-dialog-content (#4608) (3ae0dc6)
- focus-origin: missing rxjs of operator (#4497) (05dbb90)
- icon: handle icons as nodes (#4699) (3212411), closes #4680
- input: continue checking for input child after initialization (#4569) (73d6814), closes #4551
- input: thicken underline in error state, add underline animation (#4506) (0666207)
- list-key-manager: remove handling for home and end keys (#4544) (2d16345), closes #3496
- menu: close menu panel on escape (#4666) (210e57c), closes #3601
- overlay: overlays potentially being rendered behind browser UI (#4664) (96549e8), closes #4650
- platform: don't shadow
window
(#4622) (e8ab0da) - progress-bar: buffer animation not working on user-generated themes (#4525) (61f3987)
- select: allow option with undefined or null value to clear selection (#3141) (13524c1), closes #3110 #2634
- select: deselect old options when programmatically setting value (#4658) (db72b06)
- select: option text color blending in with background on dark theme (#4568) (43e207c), closes #4560
- slider: add aria-orientation (#4602) (0b5b624)
- slider: make slider work with dark themes (#4489) (af48bb0)
- snack-bar: remove text-transform uppercase (#4567) (82e53c5)
- tabs: dynamic tab scrollbar showing while animating (#4524) (2a15cd7)
- tooltip: not using trigger's text direction (#4413) (d8aeeaa), closes #4411
- universal: gate platform checks on being on browser (#4635) (e4c7601)
Features
- core: expose ScrollDispatchModule (#4501) (caee5a5)
- dialog: add
result
to MdDialogClose directive (#4332) (c45dee2) - focus-trap: allow setting initially focused element (#4577) (c946631)
- overlay: add scroll blocking strategy (#4500) (6842046)
- snack-bar: allow setting the layout direction (#4726) (0e24345), closes #4721
taffeta-admiral
unobtainium-sunglasses
Breaking Changes
MdIconModule
no longer importsHttpModule
. If your application depended onHttp
being provided throughMdIconModule
, you should now directly importHttpModule
into your application.- The
forRoot
method on all Angular Material modules has been removed. It was previously deprecated and a no-op. Importing the modules directly will have the same effect. - Angular Material now requires TypeScript 2.2, which adds support for mixins.
Highlights
- New datepicker component! This is still very new, so please try it out and file any issues you encounter on Github.
- You can now disable Material's global sanity checks (at your own risk). These checks include whether your theme file is included, that you have a doctype, and more. See the PR here.
- Our support for Angular Universal should be much improved! Expect further improvements in subsequent releases.
Bug Fixes
- autocomplete: not scrolling to active option when pressing home/end (#3709) (8d0cd04)
- autocomplete: not updating the size while the panel is open (#4346) (bfeb515)
- autocomplete: panel not being shown with delay and OnPush change detection (#3977) (efd3485), closes #3955
- autocomplete: reposition panel on scroll (#3745) (81a6f8d)
- autocomplete: unable to click to select items in IE (#3188) (78985b7), closes #3351
- button: ripple color for raised buttons (#3829) (7f65f31), closes #2901
- card: update color property to use theme's text color. (#3952) (5e7af26)
- cdk: add camelCase selectors for cdk directives (#4054) (cb98270)
- checkbox: do not set
indeterminate
when setchecked
programmatically (#4024) (de8b97f) - checkbox: no side margin if label has no content (#2121) (4e8d806), closes #2011
- checkbox: set pointer cursor for checkbox (#4473) (b2f93b5), closes #4185
- checkbox: support OnPush for disabled with forms module (#4087) (efb39da)
- checkbox, radio: ripple error on focus event (#3869) (e22b55e), closes #3856
- chips: wrong margin on single chip (#4366) (5d03c1a), closes #4359
- compatibility: error in theme check with angular universal (#3872) (a65d2f4), closes #3870
- compatibility: throw better error when wrong prefix is used (#3871) (2d50044)
- connected-overlay: better handling of dynamic content (#4250) (525ce1e), closes #4155
- core: remove deprecated forRoot functions (#3539) (c94f471)
- core: export MdOptionSelectionChange (#4285) (af978cd)
- dialog: capture previously focused element immediately (#3875) (29968b8)
- dialog: close all dialogs on popstate/hashchange (#2742) (85bc3a6), closes #2601
- dialog: fire afterClosed callback after all dialog actions are done (#3892) (ee1a5a7)
- dialog: provide default value for MD_DIALOG_DATA token (#4120) (d1128fe), closes #4086
- dialog: restoring focus too early (#4329) (afaa2dc), closes #4287
- dialog: unable to press escape to close in lazy-loaded module (#3788) (3796f69), closes #3737
- focus-trap: import rxjs first operator (#4400) (2c8faf6)
- grid-list: export MdGridTile. Fixes #2408 (#4000) (9d719c5)
- input: add back pointer-events none removed in #3878 (#4206) (fb1fabc)
- input: allow pointer events on placeholder (#3878) (32b7426)
- input: incorrect height with autosize (#4084) (21f8899), closes #4070
- input: input placeholder not being hidden in IE under certain conditions (#4478) (fc73a4b), closes #4464
- input: make start and end hints interact well when their text needs to wrap (#3979) (21cbf34)
- input: placeholder not rendering in Chrome under certain conditions (#4405) (5e349d9)
- input: single-line hints overflowing the parent (#4107) (0b9b582), closes #4051
- input-container: new attribute hideRequiredMarker (#4237) (6c31adb), closes #3681
- list: fix padding for list items (#4486) (d1d2e18)
- list: icon size in dense mode (#3913) (f412499), closes #3886
- list: remove overflow hidden from content (#4426) (078aa19)
- list: set explicit box-sizing on icon (#3876) (e263fb7), closes #3863
- menu: incorrect panel max height (#4214) (d3210e7)
- menu: unable to bind to xPosition and yPosition (#4213) (1fd50aa), closes #4169
- menu: wrong icon margin in rtl (#4225) ([ba6b9bb](htt...
cesium-cephalopod
Breaking changes
Package structure
The package structure for Angular Material has changed to match that of Angular itself. This has
a few ramifications on applications consuming Angular Material:
- Deep imports will no longer work, e.g.,
@angular/material/core/a11y
. All public symbols
should be imported directly from@angular/material
. Deep imports have always been an anti-pattern,
but our previous package structure inadvertently allowed them. - The imports for theming have changed.
** For prebuilt themes, you can now find the CSS files in theprebuilt-themes/
directory in the
package root. For angular-cli projects, this will look something like
@import '~@angular/material/prebuilt-themes/deeppurple-amber.css';
** For custom themes, you can now import theming.scss
directly from the package root. Again, with
angular-cli, this will look something like:
@import '~@angular/material/theming';
Removal of deprecated symbols
- The deprecated,
Md
-prefixed aliases forLiveAnnouncer
,Platform
, and
UniqueSelectionDispacther
have been removed.
MaterialModule
MaterialModule
(andMaterialRootModule
) have been marked as deprecated.
We've found that, with the current state of tree-shaking in the world,
that using an aggregate NgModule like MaterialModule
leads to tools
not being able to eliminate code for components that aren't used.
In order to ensure that users end up with the smallest code size
possible, we're deprecating MaterialModule, to be removed in the a
subsequent release.
To replace MaterialModule
, users can create their own "Material"
modul within their application (e.g., GmailMaterialModule
) that
imports only the set of components actually used in the application.
Angular 4
- Angular Material now depends on Angular 4.
- Now that animations have been refactored into a separate package, users of
@angular/material
need to explicitly importBrowserAnimationsModule
(orNoopAnimationsModule
) from
@angular/package-browser/animations
as well as installing@angular/animations
.
Bug Fixes
- autocomplete: "undefined" being displayed on empty control with ngModel (#3535) (675c9df), closes #3529
- autocomplete: aria-expanded should be updated when panel hides (#3494) (932b4a0)
- autocomplete: do not trigger submit on ENTER (#3727) (bedf5a1), closes #3159
- autocomplete: fix down arrow use with ngIf (#3493) (a4e2de7)
- autocomplete: fix key manager instantiation (#3274) (c21ff40)
- autocomplete: not showing panel on first focus in certain cases (#3775) (75996b5)
- autocomplete: prevent opening on load in IE (#3190) (a4da08b), closes #3183
- autocomplete: remove max width for autocomplete panel (#3297) (738e9bf), closes #3198
- autocomplete: update overlay ref width on menu trigger (#3573) (6915e8a)
- button: add transition to focus overlay (#2850) (6cdd8db)
- button: persist theme color of button when leaving hover state (#3629) (3ad6ff0)
- button: square ripple in compatibility mode (#3167) (ceb472b), closes #3164
- button: use FocusOriginMonitor for focus styles (#3294) (5d6920d)
- button-toggle: fix color for selected button toggle and selected disabled button toggle (#3418) (be167c9), closes #3382
- button-toggle: only show focus style when focused via keyboard (#3232) (d744a5f)
- card: removed header height (#3450) (17bf5e5), closes #3288
- card: unable to override elevation (#3139) (4ee16a9), closes #3123
- checkbox: add focus indication (#3403) (01188d9), closes #3102
- checkbox: create ripple on label mousedown (#3206) (3edf105), closes #3030
- checkbox: focus origin for focus method (#3763) (7a60489)
- checkbox: show checkbox animation only if user click or indeterminate state (#3137) (f4323b2), closes #2783
- checkbox: switch checkbox behaviors for click and change events (#3146) (8aa9857)
- chips: Fix adding new chips on demo page (#3426) (2d16a24)
- compatibility: remove ink bar from compatibility check (#3267) (c203589)
- connected-overlay: direction not being updated (#3293) (817dcfd), closes #3241
- connected-position: error if none of the initial positions fit in viewport (#3189) (a306a8e)
- core: log warning if doctype is missing (#2849) (22b0660), closes #2351
- demo: remove input route from demo app (#2922) (6bac315)
- dialog: delay focus until animation is done (#3774) (d7d2b16), closes #3722
- dialog: leaking component instance references (#2875) (e120e8d), closes #2734
- dialog: leaking MdDialogContainer references (#2944) (8e6720b), closes #2876
- docs: only rewrite relative links (#3339) (cb57660), closes #3147
- focus-trap: avoid closure compiler issues when adding anchors (#3448) (8b2ae0d)
- focus-trap: enabled property not being coerced (#3417) (d81445b)
- focus-trap: exception when element contains SVG on IE (#3432) (d06ad75), closes #3410
- input: baseline alignment on textarea (#3714) (7cff349)
- input: change dividerColor to color ([#3726](https://github.com/angular/materi...