Skip to content

material 3.2.5

Choose a tag to compare

@github-actions github-actions released this 29 Oct 18:28
· 48 commits to main since this release
53d86d0

Menus and tooltips match the spec.

Fixes

  • A disabled menu item dims every part of itself, and a selected disabled item
    dims its content in every layout and its container where the spec has one
    (#110).

    Only the label faded: the icon, the supporting text and the shortcut each
    declared their own on-surface-variant colour with no disabled rule, and the
    selected item's rule stood after the disabled one at equal specificity, so a
    selected item kept the opaque selection colours and still drew its hover and
    press layers. All three parts now inherit the item's dimmed colour, and
    selected plus disabled is a compound rule in both menu variants that puts the
    selection's content at 0.38 — and, in the baseline and vertical standard
    menus, the container with it — and sets the state layer's opacity to 0. The
    vertical vibrant menu's spec defines no container colour for the state, so it
    keeps the enabled selection's container at full opacity. Measured in Chromium
    against the packed stylesheet, on baseline, vertical standard and vertical
    vibrant menus: the disabled icon, supporting text and shortcut land on the
    label's colour at 0.38 instead of opaque on-surface-variant; a selected
    disabled item dims its content in all three layouts and its container only in
    baseline and vertical standard, and keeps no hover layer; and no disabled part
    changes colour on hover or press.

  • Tooltips use Body Small's regular weight, and rich tooltips the spec's 8dp
    bottom padding (#111).

    A base rule overrode Body Small after its typography mixin, so plain and
    default tooltips rendered their supporting text at weight 500; rich tooltips
    used symmetric 12px 16px padding, a 12px bottom inset. The override is gone,
    so the mixin's regular 400 applies, and rich tooltips take 12px 16px 8px.
    Measured in Chromium across the existing 72-case matrix — default, plain and
    rich variants, both modes and every placement — computed weight, size, line
    height and all four padding edges match the token table, with rich padding at
    12/16/8/16.

  • A horizontal radios group reserves its 16px gaps before upgrade (#129).
    A direction="horizontal" group changed its host width at upgrade because
    the undefined host laid out its light children without the component item's
    margin-inline-end: 16px: a three-option group grew 32px, 16px per gap, in
    both directions, and every following box on the line moved with it. The
    pre-upgrade rule now gives each option that margin except the last, matching
    the shadow item rule, with the last found among the options rather than among
    all children. Measured outside the repository in LTR and RTL: 290.3 → 322.3px
    on main against 322.3 → 322.3px on the fix, with the next sibling still on
    both sides.

  • A fresh wheel notch that crosses a snap by less than a pixel lands on that
    snap instead of running to the next one (#141).

    The destination comparison required a strict crossing, so a destination that
    sat under a snap by up to a pixel advanced a full item; from a third of a
    pixel short of a snap, a 1px notch moved one item on. The comparison now
    reaches a snap it has crossed by less than 1px, and only for a fresh gesture:
    a continuing gesture keeps the exact threshold, so its accumulation still
    moves on as soon as it passes a snap. The unit case is seeded at a
    deterministic sub-pixel position instead of depending on a clock read, and the
    browser check measured four carousels in Chromium: main landed on 1014 / 1040
    / 3600 / 3312 where the fix lands on 811 / 832 / 2880 / 2640, the crossed
    snap, with the continuing-gesture control passing on both.

Internal

  • README documents the :lang() arms an old-target bundler adds, and the
    full-css fixture records that its row measures that bundle (#125).

    The full stylesheet ships no :lang() or :dir() rules — the tabs element
    sheet carries the two :host(:dir(rtl)) badge rules that are the exception —
    and a bundler targeting browsers without logical properties adds one
    :lang()-guarded arm per physical declaration it rewrites. On the full
    stylesheet that is 12,426 arms, about 7.6 kB gzip of the 63.5 kB bundle. They
    key on the document's language rather than its direction, so they are an
    approximation, but in a build that targets old browsers they are what mirrors
    the layout and must not be stripped. The size fixture's note carries the count
    and the bytes, so the ceiling is read as guarding that larger bundle.

  • The release costs 34 bytes gzipped in the all-js row (127,452 to 127,486)
    and 123 in the full stylesheet (63,527 to 63,650); the packed tarball is
    1,086,173 bytes compressed, 6,471,097 unpacked, against 1,084,867 and
    6,460,889 in 3.2.4.
    No ceiling moved, and all seven README size rows stand
    as measured.


npm: material@3.2.5 · Docs: md3.io · Full history: CHANGELOG.md

The history before 3.0.0 was developed in floor/mtrl; #numbers in commit subjects before 3.0.0 refer to pull requests there.