This repository has been archived by the owner on May 20, 2023. It is now read-only.
v0.9.0
Breaking Changes
- Remove
is SelectableWithComposition
. - Remove
SelectableChangeNotifier
and deprecateSelectableWithComposition
with the intention to remove. They are widely unused, complicated the
implementations, and unsound in Dart 2. ActiveItemMixin
has been removed in favor of the newActiveItemDirective
.
New Components
- Material Card styling
- Provided by the Google material team also known as mdc-web. The styles
included in this package are provided as a convenience to users in the Dart
package ecosystem.
- Provided by the Google material team also known as mdc-web. The styles
- Material Stacking Drawer
- Material Stepper
- Material Slider
- Material Date/Time Picker components
- Material Menu components
Component Updates
App Layout
- Update Material Header
z-index
to 1. - Add support for 0 or 2 drawers.
- Add mixin for permanent/persistent drawers and fix mixin for temporary
drawers. - Add mixin for drawer width.
- Provide list-item changes as a mixin to be used in components that wrap drawer
contents.
Button Decorator
- Allow role to be customized.
Material Auto-Suggest Input
- Improve keyboard navigation behavior.
- Prevent marking itself as dirty when it receives initial form value.
- Add aria label to close button.
- Wait for the popup to be visible before activating dropdown items.
- Stop escape keyboard events from propagating after they are handled.
- Disallow deselection when clicked on a selected item with single selection
models. - Ensure input text is initialized correctly regardless of input order.
- Fix auto-scrolling issue on Firefox.
- Add ability to give a tooltip for the clear icon.
- Replace
ngOnChanges()
withngAfterChanges()
. - Protect against method being called after it is destroyed.
Material Button
- Update elevation on buttons that have focus.
- Remove styles for vertically aligned icon with text buttons.
- Update size and position of text labels for icon buttons.
- Allow icon button items to be created vertically.
- Remove override of
min-width
foryes-no-buttons
as it is now the right
value in material-button. - Update highlight styling.
- Add compact mode.
- Update min-width to new spec.
- Update dense mixin to only apply to non-icon buttons.
- Add mixins for no hover highlight.
- Add mixins to set icon button padding.
- Update hover, focus, and disabled styles to be inline with Material Spec.
- Update mixin names and fix to prevent styles leaking outside of the component.
Material Checkbox
- Remove deprecated
material-checkbox-theme
mixin. - Add
material-checkbox-color
mixin and deprecatematerial-checkbox-theme
. - Change
include-in-checkbox
default to false incheckbox-color
mixin to
prepare for it's removal. - Migrate from the deprecated Glyph component to Material Icon.
- Support
onDisabledChanged
callback from angular_forms. - Add mixin to hide text label.
- Prevent marking itself as dirty when it receives initial form value.
- Add mixin to remove right margin.
- Remove negative top margin.
- Implement
Focusable
. - Implement onTouched logic.
- Fix disabled state to match Material Spec which is a light grey not a certain
opacity of the checkbox.
Material Chips
- Allow overriding left-icon-color.
- Update margin on dense theme.
Material Dialog
- Fix bug with full screen dialogs.
- Fix bug where a disposable could be added to its disposer after it had already
been destroyed. - Set default
max-height
andmax-width
. - Add full screen mode.
- Add support for
<h1>
element in title. - Add mixin for bottom border on header.
- Remove
preserveWhitespace: false
.
Material Dropdown Select
- Add back
keyboardOnlyFocusIndicator
to dropdown items.
Material FAB
- Update shadow styles.
Material Icon
- Add aria label and use them for trailing/leading icons of Material Input.
- Add mixin for font weight.
- Update mixins to allow overriding elements which have the size attribute set.
- Add flag to mirror icon.
- Roll back change that flipped help icon in RTL.
- Add help icon to the list of icons flipped when direction is RTL.
- Flip half_star icon when in RTL.
Material Input
- Remove element used for resizing if the textarea does not need to be resized.
- Added an
aria-labelledby
attribute. - Add mixin to adjust padding for multi-line inputs.
- Return
null
when input is"NaN"
ornull
. - Don't override unfocused underline color when the input is invalid.
- Add field to mixin to specify the label color when there is an error and the
label is focused. - Support
onDisabledChanged
callback from angular_forms. - Push change detection when marked as disabled.
- Add disabled class to
"top-section"
when the input is disabled. - Add mixin to allow hiding only the placeholder in the bottom section.
- Support to fill in error text trailing.
- Fix error color for floating label when an error is shown in the input.
- Add mixin to change the font size.
- Add
aria-label
andaria-invalid
attributes back to the input field. - Allow values to be selectable when disabled on all browsers. This is
potentially BREAKING. - Pass aria attributes through to the inner input element. Includes material
auto suggest component. - Add an aria-label that can override the label.
- Add mixin for hiding underline.
- Add mixins for trailing text color and padding.
- Show character count when maxCount is null.
- Add attribute to set aria-label when a visible label is not desired.
- Extend the style rules applied on
input[type=text]
to cover the hover and
focus states. - Add mixin padding.
- Don't override underline color when the input is invalid.
- Protected against input being destroyed and blur event still happening.
- Add mixin for fixed width error text.
- Use markForChanges on inputs since they are being set by a directive and not
the template and so change detection doesn't happen automatically. - Allow numerical values to be internationalized in number validators.
- Add option to have a material number input component format its contents on
blur. - Fix unexpected
)
in selector forMaterialInputDefaultValueAccessor
.
Material Expansionpanel
- Do not change background color on focus or hover when disabled.
- Fix issue where header could extend beyond the max-width of its container.
- Add a mixin for no borders.
- Add a mixin to show header actions on the bottom instead of on the left.
- Add mixin to set alignment in the header.
- Remove
transform: scaley
from expand animation. - Add mixin for top-aligning expand button.
- Add option to move the expand button to the left side.
- Improve animations.
- Add mixin for additional padding.
- Allow icon to be hidden and allow additional buttons in the header.
- Increase mixin specificity.
- Add option show/hide the cancel button.
- Add mixin for flat on collapse.
- Smooth appearance/disappearance of expansion panel contents.
- Add mixin to allow change the panel name min width.
- Remove
preserveWhitespace: false
.
Material Popup
- Change
<main>
html tag to a<div>
. HTML5 states there should only be one
main tag per application. - Automatically restore focus on the popup source element when user tabs out.
- Fix border radius mixin.
- Enforce space constraints on content.
- Simplify positioning algorithm.
- Disable constrain-to-viewport in dropdowns via a new, separate
@Input
. - Guard against
container = null
inPopupHierarchy.onTriggersOutside()
. - Increase the animation speed according to material specs.
- Listen to
DomService.trackLayoutChange
streams foroverlayRepositionLoop
popups.
Material Progress
- Add mixin for taller bars with rounded ends.
- Fall back to the non-optimized animation if the width is 0 after view init.
Material Radio
- Remove
material-radio-theme
mixin. - Add
role
attribute. - Add
material-radio-color
mixin and deprecatematerial-radio-theme
. - Support
onDisabledChanged
callback from angular_forms. - Internal cleanup.
- Protect against the group being destroyed before the
tabIndex
gets reset. - Migrate away from QueryList.
- Update disabled color to match spec.
Material Ripple
- Allow the ripple to be created programmatically.
- Update animation to match new spec.
Material Select
- Update ARIA
labelledby
for improved a11y. - Update to
activedescendant
ARIA pattern for a11y. - Ensure button text displays correctly when an error message shows below it.
- Support focus on dropdown button when dismissed via keyboard.
- Fix focus bug when clicking on a different focusable element.
- Pipe through customized aria role,
labelby
, andhaspopup
to the dropdown
button. - Fix selected color mixin on vertical selection indicator.
- Add aria states/properties to indicate selected/checked in item.
- Add proper aria attributes to make
material-dropdown-select
screen reader
accessible. - Add mixin to set disabled color.
- Add mixin to allow for error text margin.
- Refactor
constructEncapsulatedCss
to utils. - Add option to dropdown to disable deselecting on trigger.
- Allow content to be projected as list header and list footer in dropdown.
- Implement
Focusable
inDropdownButtonComponent
. - Fixed an alignment issue with the icon on dropdowns.
- Add a
FactoryRenderer
input. - Wait for the popup to be visible before activating dropdown items.
- Stop escape keyboard events from propagating after they are handled.
- Fix
MaterialSelectItem
displaying two times the label whenfactoryRenderer
is used. - Fix auto-scrolling issue on Firefox.
- Add mixin to change
material-select-dropdown-item
padding. - Add mixin to set select item padding.
- Add mixin to set selected item color.
- Allow customization of Material Dropdown Select's role.
- Add mixin for pointer events on Material Dropdown Select Items.
- Fix baseline alignment of dropdown-button in Firefox.
- Add
showButtonBorder
input to Material Dropdown Select component. - Cleanup unused styles.
Material Spinner
- Add mixin to adjust the stroke width.
Material Tabs
- General cleanup: remove unneeded directive, use absolute imports, and fix
spelling error. - Add support for
disabled
attribute. - Make
text-wrap
mixin more generic. - Add two-way binding on fixed strip activeTabIndex.
- Increase space between labels.
Material Toggle
- Implement
ControlValueAccessor
. - Fix
aria-pressed
state. - Add mixin to display label on the right.
Material Tooltip
- Fix comment which was using deprecated
ElementRef
. - Allow paper tooltip CSS to be customizable.
- Allow
'error_outline'
as a valid icon. - Prevent paper tooltips from overflowing on small screens.
- Change
tooltipSource
directive to usestyle.cursor
. - Update line height to
20px
per internal spec. - Fix
material-paper-tooltip
content that are change detected and using
deferred content by having the visible property be set in an async manner so
that the value isn't added in the middle of a change detection loop.
Material Tree
- Add
visibleChange
output stream toMaterialTreeDropdownComponent
. - Use item identity to remember expanded state.
- Add a
shouldExpandAllWhenFiltered
input. - Adds an option to select parent nodes in a single selection model tree.
- Bugfix for auto selection all siblings due to an error being thrown which
stops event.stopPropagation from firing. - Add an option to material tree group to render a "View more" link for hidden
options. - Migrate away from QueryList.
- Autofocus the filter when
MaterialTreeDropdown
is opened, but not when it
closes. - Improve latency of
MaterialTreeFilter
. - Clear filter inside the popup when
MaterialTreeDropdown
closes.
Material Yes/No Buttons
- Fix bug where text color was not applying to highlighted/raised yes button.
- Fix no button to not override disabled text label color.
- Remove
Visibility.all
. - Update mixins to use CSS shimming.
Reorder List
- Add ability to specify a handle element in a complex component.
- Calculate the full height/width of the elements.
- Restrict when a dragged item's target index is incremented or decremented.
Scorecard
- Add mixin for changing the display to flex.
- Remove the
:host
from the padding mixin so it is not required to be used at
the top level. - Add stacking context.
- Only update selected state if the scorecard is selectable.
- Fix misalignment on OS X with hl=ja.
- Selected color input overrides default color value in a selectable scoreboard.
- Add a tooltip field.
Other Updates
Selection Model
- Add
is{Selectable|Disabled|Hidden}In()
,getOptionIn()
and,filterWhere()
as static helpers toSelectable
. - Add empty, single, and multi constructors.
- Add
ignoreDeselect
option toSelectionModel.single
and deprecate
RadioGroupSingleSelectionModel
. - Update to
SelectionModel.single()
,SelectionModel.multi()
etc. instead of
deprecatedSelectionModel.withList()
. - Add support for
SingleSelectionModel
toSelectionModel.empty
. - Add
SingleSelectionModel
interface withselectedValue()
method. - Better support for the zippy expansion case.
- Add option to disable select all in the table selection model.
- Use generic type for table selection model
SelectableGetter
.
Modal/Overlay
- Add attribute on
PopupSourceDirective
to decide whether to set the popup
related aria attributes. - Ensure parent modal is shown when the current modal is destroyed.
- Add DI modules to Laminate Overlay & Popup components.
- Update
PopupHierarchy
to better handle cases with multiple modals. - Handle null pointer in
popup_source_directive
. - Protect against a null pointer exception in laminate popup.
- Propagate CSS classes to the overlay element.
- Turn
overlayRepositionLoop
on by default. - Use a reified Provider for
defaultPopupPositions
. - Add support for minimum width and height to
PopupSizeProvider
.
Miscellaneous
- Make
DomService
run callbacks in the correct zone. - Fix bug in
DomTreeIterator.moveNext()
where it was using equality instead of
assignment. - EntityFormatters now implement the regular Formatters.
- Add a lookup method for finding the closest Material Color name based on any
input color. - Scope the
Focusable
item forAutoFocusDirective
so that any node in the
hierarchy isn't mistakenly focused. - Modify
TextHighlighter
to return separate results for adjacent matches,
rather than concatenating them into a single result. - Migrate to using event tearoffs.
- Deprecate convenience list for
materialDirectives
. It has been demonstrated
that it's use increases code size when only some of the components are being
used. It is preferable to use only the directives needed for your application
for improved dart2js tree shaking. - Add
@mustCallSuper
to the Disposer interface. - Add Add
ObservableView.values
-- like.stream
, except also with the
current value. - Add new CSS class names used by
ShowHideDirective
to avoid conflicts with
Angular JS apps and remove the legacy versions. - Only focus when
autoFocus
istrue
when usingAutoFocusDirective
. - Update various components to use finals for
Intl.message
s to improve
performance. - Add
HasDisabled
interface. - Annotate
Domservice.leap()
visible for testing. - Add
mat-link-deep
mixin to push the Material link styles everywhere. - Make mouse events with the shift modifier key a non-standard mouse event in
isStandardMouseEvent()
. - Remove
IntersectionObserver
bindings now that they exist in dart:html. - Add
onDisabledChanged()
to allControlValueAccessor
implementations. - Add ShowHideDirective and GlobalEscapeDirective.
- Make
ShowHideDirective
constants private. This is potentially BREAKING. - Add a parameter to fail loudly when
TimeZoneAwareClock
is used before it's
initialized, to prevent incorrect return values from being ignored. - Delete deprecated
LazyEventEmitter
since it was no longer lazy and a
StreamController can be a simple drop in replacement. - Allow '[' for start of word of highlight match.
- Use
@visibleForTesting
annotations. - Remove position: -webkit-sticky support.
- Update type of materialProviders so it can be used when bootstrapping.
- Create a new API for caching item renderers.
- Only add touch listeners if the primary input is touch.
- Add
IntersectionObserver
bindings &onIntersection
stream toScrollHost
. - Deprecate
getBool()
, Angular supports it now natively. - Fix RTE when using item renderers as highlight renderers when there is a
custom factory renderer. - Fix componentRenderer logic.
- Add a feature detector for
position: sticky
. - Migrate from Glyph to Material Icon.
- Remove unused table model.
- Remove the
getDynamic()
method from properties helpers. - Remove uses of
.runtimeType
. - Cleanup unused variables.
- Allow
material-scrollbar
mixin to be used in global css (without angular). - Provide a path to use Component Factories when using code that was previously
using theComponentRenderer
pattern. - Continue migration from
SlowComponentLoader
toComponentLoader
. - Continue migration from
LazyStreamController
toStreamController
. - Cleanup Angular static analysis warnings.
- Add optional punctuation around trackBy functions.
- Avoid reliance on dynamic typing to access properties.
- Add
@Input
to number validators. - Add Observable utilities.
- Add color contrast ratio utility.
- Remove deprecated box-sizing styles.
- Deprecate
ManagedZone
and replace withNgZone
. - Remove unnecessary uses of
::ng-deep
. - Support RTL selectors on any element.
- Remove usage of package UUID.
- Update sass_builder dependency to latest and use the post-process builder to
remove.scss
files from the output.
Angular API Updates
- Migrate from
host
to new@HostListener
and@HostBinding
syntax. - Migrate from
ElementRef
toElement
orHtmlElement
. - Set
visibility
toVisibility.all
on Directives that are expected to
be provided. Others will default toVisibility.local
. This is potentially
BREAKING. - Cleanup unneeded
preserveWhitespace: false
andpreserveWhitespace: true
when components manage spacing around themselves and have been validated.
Dart 2 Updates
- Fixes for Dart 2 compile-time and runtime errors.
- Application of
dartfmt --fix
. - Migrate from
Stream<Null>
toStream<void>
. - Updates to conform to new Effective Dart guidelines.
- Prepare for change of
async
behavior in Dart 2. - Updates to stronger types for Dart 2.
- Fix uses_bottom_as_dynamic ("fuzzy arrow") errors.
- Fix Dart2 runtime cast failures and other Dart 2 fixes.
Documentation
- General documentation cleanup for
@Input
s and@Output
s. Improves
documentation generated by the component gallery.