1.8.0
Minor changes
-
Date pickers (COMPONENT_SPEC §27, M10): Compose's
DatePicker(calendar with month paging and the year grid, switchable to the date input),DateRangePicker(a scrolling month list with the range band, switchable to start / end inputs) andDatePickerDialog, plus m3.material.io's docked date picker. m3e-tokens generates the date picker's Compose values, state layers, docked values and motion (date-picker-defaults.css); m3e-css addsdate-picker.css; m3e-motion ports the calendar model,DatePickerState/DateRangePickerState, the input's pattern, parser and validator anddrawRangeBackground(checked against a JVM run of the vendored Kotlin); m3e-elements adds<m3e-date-picker>,<m3e-date-range-picker>,<m3e-docked-date-picker>, their layout entries and the lazily loadeddate-fieldentry; m3e-react addsDatePicker,DateRangePicker,DockedDatePickerandDatePickerDialog. -
Time pickers (COMPONENT_SPEC §28, M10): Compose's dial
TimePicker(baseline and vibrant, vertical and horizontal),TimeInput(baseline, vibrant, uncontained with the side column) and the expressiveTimeScrollwheels, with the updated AM/PM toggle buttons. m3e-tokens generates the vibrant, side column, scroll field, dialog and motion values (time-picker-defaults.css); m3e-css addstime-picker.css(dial, fields, wheels and the.m3e-time-picker-dialogsurface); m3e-motion portsTimePickerState/AnalogTimePickerState,CircularLayout's placement,TimeInputTransformationandScrollField's paging (checked against a JVM run of the vendored Kotlin); m3e-elements adds<m3e-time-picker>,<m3e-time-input>,<m3e-time-scroll>and the sharedtime-picker-layoutentry; m3e-react addsTimePicker,TimeInput,TimeScroll,TimePickerModeToggle,TimePickerDialogandVibrantTimePickerDialog. -
API review fixes (M11, D16: additive; every old name keeps working, is
@deprecatedand goes in 2.0). m3e-elements: the inner inputs' nativeinput/changeno longer reach the host of<m3e-time-input>,<m3e-docked-date-picker>and the date pickers' input mode, nor the input's nativeselectthe host of<m3e-search>, so host listeners see only the element'sCustomEvent; every element with events exports anM3e<Name>EventMapwith typedaddEventListener/removeEventListener(type-only) and its detail types (OpenChangeDetail,ExpandedChangeDetail,ValueDetail, …);<m3e-button-group>firesselection-changeand takesdisallow-empty-selection(change,selection-requireddeprecated),<m3e-list selection-mode>(selectiondeprecated), carousel items fire a bubblingaction(item-clickdeprecated),<m3e-slider variant orientation>(centered,verticaldeprecated),<m3e-side-sheet back-button>(thebackattribute deprecated),<m3e-bottom-sheet open>withopen-change, the time pickers'selection-changedetail gainsvalue;SelectableDates,YearRange,DatePickerDisplayModeandSideSheetVariantOptionare exported; the helpers shared with m3e-react are tagged@internal. m3e-css: two-rows top app bars read the public--m3e-comp-top-app-bar-container-collapsed-height/-expanded-height. m3e-react:FabMenu isOpen,isExpandedonFloatingToolbar,SearchBarandExtendedFab,scrollBehavior="exit-always"on the toolbars,DatePicker/DateRangePicker showHeadline(the old names warn once in development),onDisplayModeChange(next)/onModeToggle(next)on the time pickers, and type exports for the prop types it used without exporting (SliderSize,SheetValue,BadgeValue,RoundedPolygon,IconButtonStyle, …); the D4*Propstypes are@deprecatedandfabClassName({ size: 'small' })warns like<Fab size="small">.
Patch changes
-
Accessibility audit fixes (M11 hardening; no API change). The date pickers' fields, the chip sets' input chips and the lists get ids that are unique across bundles: the element entries and m3e-react (which bundles the same layouts) shared counters starting at 1, so an element and a React docked date picker on one page both made
id="m3e-date-field-1"and the second label focused the first field. The modal date picker's month arrows each get their own 48dp slot, as Compose'sIconButtons inMonthsNavigationdo (they overlapped, leaving "previous month" 40 × 48), and today's day and the current year keep a full 48dp target inside their outline. The baseline filter chip's check slot no longer animates its width underprefers-reduced-motion(--m3e-comp-selectable-chip-icon-shrink-durationis 0ms there; the fade stays). In forced colors an enabled slider's inactive track is a CanvasText outline instead of GrayText, which now means disabled only. A bottom sheet's overflowing, focusable content is arole="group"named like its sheet, in both layers. -
Package READMEs (M11 docs; no code change). m3e-react lists every component and hook, grouped by COMPONENT_SPEC section, with the D4 deprecations and the props renamed in 1.8, and its usage example now imports
material-symbols.css(without it, icons render as their names). m3e-elements documents<m3e-bottom-sheet>(open,value,value-change,open-change) and the top app bar (attachTopAppBarScrolland the public--m3e-comp-top-app-bar-container-{collapsed,expanded}-heightproperties). m3e-css lists every component file with its class, which ones need JavaScript, and its deprecated classes. -
Source register, category (a) (M11): values that the pinned sources already settle, now cited instead of marked
TODO(verify). The navigation drawer divider usesoutline-variant, matching Compose'sDividerTokens.Colorand the m3.material.io token DB, which deprecates the drawer's own divider token for the standalone divider token (SOURCES #33). The docked date picker's year arrows are labelled "Previous year" / "Next year", the wording in m3.material.io Date pickers › Accessibility (SOURCES #89). Citations only, with no value change, for #50, #57, #63, #64, #69, #76 and #77. -
Bundle and d.ts build (M11 hardening; no API or behavior change). m3e-elements emits its declarations with one
tscpass and bundles the.d.tsfiles per entry, so its build no longer needs a 4 GB heap (it fits 512 MB) and every public type path and exported type stays the same. m3e-react bundles the m3e-elements code it uses from source, so m3e-motion and m3e-shapes are imported once instead of also being inlined a second time (m3e-react (all) −1.9 kB, dist 778 → 540 KB). Element classes declarestatic propertiesin a pure form, so bundlers drop element classes a page imports without registering them; module-level constants in m3e-motion (app-bar-scroll,menu-position) and m3e-shapes (TwoPi) no longer leave code behind in every import.