Skip to content

quasar-v2.23.4

Latest

Choose a tag to compare

@rstoenescu rstoenescu released this 31 Jul 16:14

Fixes

  • fix(position-engine): #16167 QMenu/QTooltip never appear in Firefox when their content uses flexbox (#18468)
  • fix(EventBus): support reserved event names (#18479)
  • fix(date): escape custom locale names (#18481)
  • fix(runSequentialPromises): normalize invalid concurrency (#18480)
  • fix(QDialog): #13395 keep focus inside a child moved out by fullscreen (#18474)
  • fix(QTable): #10445 separator borders leak into tables rendered in slots (#18495)
  • fix(QMenu,QDialog): #15598 #17081 closing an overlay scrolls a virtual-scroll list by one header height (#18473)
  • fix(ui): don't scroll when moving focus to blur/refocus targets
  • fix(QInfiniteScroll): reverse mode scrolls by a whole batch on load when CSS scroll anchoring is active #17848 #18476
  • fix(date): extractDate() now returns an Invalid Date instead of a misleading valid-looking date when the input cannot be parsed (#18478)
  • fix(QInput): defer masking during IME composition (#16618, #16629) (#18424)
  • fix(QCarousel): negative autoplay does not respect the panel direction
  • fix(QCheckbox;QToggle;QRadio): only inject the native input when it can be submitted
  • fix(QPagination): glossy prop not being used correctly
  • fix(QVirtualScroll): don't crash after the missing-slot error
  • fix(preventDraggable): make the already-applied guard effective

Behavior change: date.extractDate() and invalid input

Previously, extractDate() always constructed a valid Date, even when the input didn't
match the mask or contained impossible values. Failures were silently normalized --
extractDate('not a date', 'YYYY-MM-DD') returned Jan 1 1900, 2024-02-30 rolled over
to Mar 1, and out-of-range time components wrapped around (24:00 became 00:00, 13:60 became 13:00).

Now these inputs return an Invalid Date object. The function signature and return type are unchanged, but code that never checked validity will propagate NaN-based dates instead of wrong-but-valid ones. Check results with:

const parsed = date.extractDate(input, 'YYYY-MM-DD')
if (date.isValid(parsed)) { /* safe to use */ }
// or: Number.isNaN(parsed.getTime())

Valid input prefixes still parse — extra text after the masked portion is ignored, so extractDate('2024-02-29T13:05:06Z', 'YYYY-MM-DD') still works.

QDate and QTime are also stricter about model values with out-of-range time components (e.g. 24:00
with an HH:mm mask). QTime now shows its empty --:-- state instead of a silently wrapped time,
and QDate (with a time-bearing custom mask only) treats such values as unparseable -- no day appears
selected and the calendar opens at the default view. Valid model values are unaffected.

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If Quasar is useful in your workflow and you want to support ongoing maintenance, please consider the following: