Skip to content

ExpressiveCSS v0.15.0

Choose a tag to compare

@BaezFJ BaezFJ released this 14 Oct 07:54
· 176 commits to master since this release
2d42c4b

Added

  • The agent skill has a layout guide, expressivecss-layout. It covers
    Material's layout principles, the five breakpoints with their grid
    prefixes and Sass mixins, the canonical layout starting points,
    right-to-left support, and where each Material layout term lives in
    ExpressiveCSS. Its breakpoints reference lists the panes and components
    for each breakpoint and walks through Material's five questions for the
    next size: what to reveal, divide, resize, reposition or swap. Its
    canonical layouts reference covers feed, list-detail and supporting pane
    layouts, including list-detail behavior when the window crosses 840px and
    a grid fallback for supporting content that must stack on narrow windows.
    Its grids and spacing reference maps Material's 4, 8 and 12 column grids
    onto the 12-track .row, rulers onto containers and pane margins, and
    covers grouping, rhythm and opt-in density with 48px targets. The design
    guide's scaffold reference now lists the recommended pane count for each
    breakpoint, the 50% split-pane rule with a navigation rail, the
    three-pane limit, drag-handle toggling and persistent resizing, and the
    co-planar, floating and docked ways to show more than one pane.
  • The scroll area docs show .scroll-area on <html> for a themed page
    scrollbar. A browser test covers page scrolling and theme colors.
  • .keypad and .keyboard are on-screen keys that type into the text
    field named by aria-controls. A keypad is three columns of round keys for
    PINs, codes and dial pads; a keyboard is rows of keys sized from a column
    count, with an optional .numbers row of shorter digit keys that
    hidden drops. Keys with a value type at the caret and fire input; data-key
    keys handle Backspace, Enter and a one-shot Shift. Keys square their
    corners on press, and a wide key spans two cells. A key inside the
    field's .field, such as a trailing Backspace, works too. Browsers skip
    minlength for scripted edits, so the docs give a minimum length as
    pattern. Keypad is in AutoInit() and takes an onKey option.

Changed

  • The expressivecss skill is version 0.11.0. It adds the
    expressivecss-layout guide and component guides for keypad and keyboard.

Fixed

  • Reference tables on the docs site scroll sideways inside their own box on
    narrow windows. At 375px, 22 docs pages used to scroll the whole page
    sideways, mostly because of tables with long token names and defaults.
    Three pages still do, because their demos (the 12-column grid, the large
    icon and the extra-large split button) are wider than a phone.

  • A snackbar dismissed by a swipe now slides off the side it was swiped
    toward, starting from where the pointer let go. It used to jump to the
    right at once, even after a swipe to the left, because the dismiss
    transition replaced the transform transition before it could run.

  • Date picker days outside minDate/maxDate, weekends under
    disableWeekends, days rejected by disableDayFn, and the adjacent-month
    days from showDaysInNextAndPreviousMonths now use the M3 disabled text
    color and ignore the pointer. The rule looked for the state class on the
    day button, but the picker puts it on the cell, so these days looked
    selectable.

  • A footer whose only child is a plain <nav> link column now gets the full
    page footer styles. When the navigation bar arrived, only the first footer
    rule was narrowed to a lone .navigation-bar. The grid, .filled, link
    and legal bar rules still skipped any footer with a lone <nav>. Pane
    footers use the same guard, so they keep their flex action row.

  • Map markers and the column, bar and mixed chart hover layers mix
    in oklab like the rest of the framework. Each mix is with transparent,
    so the rendered colors do not change.

  • The date picker's unused .year-text no longer sets on-primary, a
    leftover from the removed primary header.

  • A data-tooltip-id that names no element now logs an error and shows the
    data-tooltip text. A .tabs bar with no links logs an error, and
    swipeable tabs whose links reach no panel act as normal tabs. Each of these
    used to throw, which stopped AutoInit() before the components after it.

  • Reopening a date picker no longer re-reads a value it wrote itself. Without
    a custom parse, Date.parse read a dd/mm/yyyy value of 05/10/2026 as
    10 May and passed that to onSelect.

  • Space and Enter reach an autocomplete's text field while the list is
    closed. The menu's trigger keys cancelled them, so a space typed after
    Escape was lost and Enter could not submit the form. ArrowUp and ArrowDown
    open the list with the current matches.

  • Autocomplete fires change and onAutocomplete only when the selection
    changes, as documented, instead of after every search. setMenuItems no
    longer replaces options.data, so the documented custom onSearch filter
    keeps searching the full data set.

  • A chart cell such as e5 or 1e400 is a gap. These passed the number
    check but read as NaN or Infinity, so one such cell turned every point
    in the chart into NaN and nothing was drawn.