What changed?
role
and aria-*
attributes now shift at runtime to data-role
and
data-aria-*
attributes. This fixes a screen reader bug around labels
announcing more than once.
What broke?
Using querySelector
or querySelectorAll
with [role]
or [aria-*]
attribute selectors.
<md-checkbox aria-label="Agree"></md-checkbox>
<script>
const agreeCheckbox = document.querySelector(
'md-checkbox[aria-label="Agree"]'
);
// `agreeCheckbox` is null!
</script>
How to fix?
Provide selector strings to ariaSelector()
before querying.
import {ariaSelector} from '@material/web/migrations/v2/query-selector-aria';
const agreeCheckbox = document.querySelector(
ariaSelector('md-checkbox[aria-label="Agree"]')
);
Note: Element APIs, such as element.getAttribute('role')
and
element.ariaLabel
will continue to work as expected.
What changed?
Sass component token functions return a var()
with the component's custom
property, instead of just a value.
@use '@material/web/tokens';
$checkbox-tokens: tokens.md-comp-checkbox-values();
// (
// // 'icon-size': 18px, // Before
// 'icon-size': var(--md-checkbox-icon-size, 18px), // After
// )
What broke?
Sass token values from tokens.md-comp-*-values()
functions are var()
functions instead of CSS values. This may introduce additional unnecessary CSS
or break Sass.
@use '@material/web/tokens';
$checkbox-tokens: tokens.md-comp-checkbox-values();
$double-icon-size: math.mult(map.get($checkbox-tokens, 'icon-size'), 2);
// @error var(--md-checkbox-icon-size, 18px) is not a number.
How to fix?
Add the parameter $exclude-custom-properties: true
to the values function.
@use '@material/web/tokens';
$checkbox-tokens: tokens.md-comp-checkbox-values($exclude-custom-properties: true);
// (
// 'icon-size': 18px,
// )