Skip to content
This repository has been archived by the owner on May 20, 2023. It is now read-only.

v0.9.0

Compare
Choose a tag to compare
@nshahan nshahan released this 24 Aug 23:51
· 736 commits to master since this release

Breaking Changes

  • Remove is SelectableWithComposition.
  • Remove SelectableChangeNotifier and deprecate SelectableWithComposition
    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 new ActiveItemDirective.

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.
  • 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() with ngAfterChanges().
  • 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 for yes-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 deprecate material-checkbox-theme.
  • Change include-in-checkbox default to false in checkbox-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 and max-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" or null.
  • 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 and aria-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 for MaterialInputDefaultValueAccessor.

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 in PopupHierarchy.onTriggersOutside().
  • Increase the animation speed according to material specs.
  • Listen to DomService.trackLayoutChange streams for overlayRepositionLoop
    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 deprecate material-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, and haspopup 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 in DropdownButtonComponent.
  • 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 when factoryRenderer
    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 use style.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 to MaterialTreeDropdownComponent.
  • 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 to Selectable.
  • Add empty, single, and multi constructors.
  • Add ignoreDeselect option to SelectionModel.single and deprecate
    RadioGroupSingleSelectionModel.
  • Update to SelectionModel.single(), SelectionModel.multi() etc. instead of
    deprecated SelectionModel.withList().
  • Add support for SingleSelectionModel to SelectionModel.empty.
  • Add SingleSelectionModel interface with selectedValue() 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 for AutoFocusDirective 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 is true when using AutoFocusDirective.
  • Update various components to use finals for Intl.messages 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 all ControlValueAccessor 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 to ScrollHost.
  • 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 the ComponentRenderer pattern.
  • Continue migration from SlowComponentLoader to ComponentLoader.
  • Continue migration from LazyStreamController to StreamController.
  • 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 with NgZone.
  • 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 to Element or HtmlElement.
  • Set visibility to Visibility.all on Directives that are expected to
    be provided. Others will default to Visibility.local. This is potentially
    BREAKING.
  • Cleanup unneeded preserveWhitespace: false and preserveWhitespace: 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> to Stream<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 @Inputs and @Outputs. Improves
    documentation generated by the component gallery.