Skip to content

Update dependency quasar to v2 - #96

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/quasar-2.x
Open

Update dependency quasar to v2#96
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/quasar-2.x

Conversation

@renovate

@renovate renovate Bot commented Jun 21, 2021

Copy link
Copy Markdown

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
quasar (source) 1.14.52.25.0 age confidence

Release Notes

quasarframework/quasar (quasar)

v2.25.0

Compare Source

[!IMPORTANT]
A few behavior changes worth checking before you upgrade:

  • QMenu no longer claims role="menu" and QBtnDropdown's toggle no longer emits aria-haspopup -- a menu may only contain menuitem* children, so the old markup was invalid. Declare role="menu" on the wrapped QList (its actionable QItems then expose themselves as menuitems automatically) and use the new toggle-aria-haspopup prop on QBtnDropdown.
  • SSR'd virtual lists now render their first slice on the server, so item templates of a server-rendered QVirtualScroll/QTable run on the server too and must be SSR-safe.
  • QSlideTransition starts animating immediately instead of 100ms later, which shifts the timing of every QTree / QExpansionItem / QStep slide.
  • Third-party language packs: this release adds colorPicker and uploader sections plus several keys. All are optional in the types and read with optional chaining, so existing packs keep working and compiling -- but they will announce nothing for those internals until updated.

New

  • feat(QTree): opt-in virtual scroll mode -> new virtual-scroll prop family, @virtual-scroll event and key-based scrollTo(key, edge). Only the rows around the viewport exist in the DOM, so cost stays flat however much of the tree is expanded (22.6k nodes, dev mode: expand-all 2.2s -> 23ms, filter keystroke on a fully expanded tree 560ms -> 29ms, ~600 DOM elements at any scale)
  • feat(QTree): methods for the state v1 exposed through its per-node meta map -> getIndeterminateNodes(), isIndeterminate(key), getParentNode(key) and tri-state getTickState(key) (returns the true/null/false a QCheckbox takes as its model); the header and body slot scopes gain an indeterminate boolean next to ticked (#​17298) (#​12762)
  • feat(ui): SSR renders the virtual scroll initial window -> server-rendered virtual lists emit their first slice instead of zero items, so crawlers and first paint finally see content. QTable's virtual-scroll mode inherits it; QSelect is unaffected
  • feat(QDate): roving-tabindex keyboard navigation for the day grid -> the calendar is a single Tab stop instead of up to 31. Arrows move by day/week, Home/End to the week edges, PageUp/PageDown by month (Shift for year), all crossing month boundaries and honoring RTL, the options prop and the navigation-min/max limits
  • feat(QTime): direct numeric keyboard entry on the time units -> typing digits on a focused hour/minute/second sets it directly, accumulating multi-digit values within 1.5s (#​12467)
  • feat(QSplitter): Enter collapses the primary panel to its minimum limit and restores the pre-collapse position on the next press (#​12466)
  • feat(QSlider/QRange): the slider role now sits on the focusable element, and the whole family gains Home/End
  • feat(QRange): WAI-ARIA multi-thumb slider semantics -> new left-thumb-aria-label and right-thumb-aria-label props
  • feat(QBtnDropdown): new toggle slot -> renders next to the dropdown arrow, so content like a QTooltip can finally attach to the toggle button in split mode (#​16955)
  • feat(QBtnDropdown): new toggle-aria-haspopup prop -> names the popup's role on the control that actually opens it, in both the regular and the split design
  • feat(QList/QItem): new role prop -> the documented override path (e.g. menuitemcheckbox, or role="menu" on a QList)
  • feat(QLayout): new $layout-marginal-background and $layout-marginal-color Sass variables for the marginal sections (#​10476)
  • feat(QDrawer): new escape-key event
  • feat(QField): the control slot scope gains ariaInvalid, ariaDescribedby and ariaErrormessage
  • feat(a11y): the component internals consumers cannot reach now carry accessible names -> QColor's view tabs, header value field and hue/opacity sliders, QUploader's icon-only buttons and hidden file input, QTable's selection checkboxes plus their empty column header, and QPagination's navigation landmark. Adds the colorPicker and uploader lang sections plus table.selectAllRows, table.selectRow and pagination.label, translated across all 72 language packs

Accessibility

  • fix(QTime): implement the WAI-ARIA spinbutton pattern -> the hour/minute/second controls are localized spinbuttons instead of mislabeled toggle buttons; arrows adjust the focused unit (key-repeat works, the page no longer scrolls) and Home/End jump to the first/last valid value (#​12467)
  • fix(QDate): give the calendar controls real accessible semantics -> days announce their full localized date instead of a bare number, expose selection through aria-pressed and mark today with aria-current="date"; the view switcher becomes a real button that Space activates
  • fix(QOptionGroup): implement the WAI-ARIA radiogroup keyboard pattern -> a radio group is a single Tab stop with arrow-key navigation, wrapping, skipping disabled radios and mirrored in RTL (#​17638)
  • fix(QOptionGroup): announce a disabled group whatever its type -> aria-disabled was set only for radios
  • fix(QSplitter): implement the WAI-ARIA window splitter keyboard pattern -> the separator is a focusable, value-carrying separator; arrows move it by 1% (10px in px unit) and Home/End jump to the limits (#​12466)
  • fix(QSplitter): give the separator bar an accessible name -> new separator-aria-label prop
  • fix(QTabPanels/QTabs): complete the WAI-ARIA tabs pattern -> QTabPanel is focusable so keyboard and screen reader users can reach panel content with nothing focusable inside, and the tabpanel role lives solely on the panel components (#​6560)
  • fix(QStepper/QCarousel): correct the ARIA semantics of their panel patterns -> QStep drops the orphaned tabpanel role and becomes a group labeled with its title, conveying aria-current="step" even with header navigation off; QCarousel's navigation is exposed as the tabs pattern it actually is (#​6560)
  • fix(QEditor): complete the WAI-ARIA toolbar/textbox contract -> role=toolbar with a localized name, a single Tab stop with roving tabindex, arrow navigation (wrapping, RTL-mirrored) and Home/End (#​15675)
  • fix(QEditor,QTable): name the internals that reuse existing lang keys -> QEditor's toolbar toggles convey their state with aria-pressed instead of color alone, and the hyperlink editor's URL field gets a name
  • fix(QMenu/QList/QItem): derive valid ARIA roles instead of claiming role=menu (#​17162)
  • fix(QMenu): close the popup when TAB moves focus out of it -> focus no longer drops onto the browser UI leaving the menu open (#​15675)
  • fix(QMenu): mark its anchor as the popup's trigger -> aria-expanded/aria-controls stay in sync without apps mirroring the open state by hand
  • fix(QMenu,QDialog): render menu portals inside their aria-modal dialog -> menus anchored in a modal QDialog (a QSelect's listbox included) were pruned from the accessibility tree and never announced (#​17078)
  • fix(QSelect): align the popup with the ARIA combobox pattern -> the listbox role wraps only the options, which now carry aria-setsize/aria-posinset (#​17344)
  • fix(QSelect): keep a readonly select focusable and announced -> it used to emit no focusable element at all
  • fix(QSelect): expose a disabled select instead of dropping its control
  • fix(QSelect,QTable): give the rows-per-page selection an accessible name (#​9689)
  • fix(QInput,QSelect,QField): expose error state to assistive tech (#​18323)
  • fix(QFile): expose error state to assistive tech (#​17306)
  • fix(use-field): drop the error ARIA references when no message renders -> <q-input error hide-bottom-space> pointed aria-errormessage/aria-describedby at a missing id
  • fix(QTree): tickable nodes trapped the keyboard -> tickboxes leave the Tab order and Space toggles them from the node header (#​17603)
  • fix(QTree): make every visible node keyboard-reachable, disabled ones included -> arrow navigation used to skip every leaf in a tree without selection
  • fix(QTree): don't hijack keys typed into interactive header content (#​17790)
  • fix(QTree): demote a stale roving Tab stop -> re-expanding could leave two Tab stops
  • fix(QTree,useRefocusTarget): never let focus land in an aria-hidden control (#​17810)
  • fix(QCarousel): give the prev/next arrows an accessible name -> new carousel lang-pack section, translated across all packs (#​7423)
  • fix(QDrawer): let ESCAPE dismiss the drawer in its modal states, under exactly the conditions the backdrop accepts a click (#​7423)
  • fix(QItem): attach pointer listeners only on interactive items -> WCAG checkers flagged the no-op handlers on a non-clickable QItem (#​7423)
  • fix(QStepper): announce a disabled step header as an unavailable button instead of inert text
  • fix(QRating): ArrowDown/ArrowUp move focus in the documented radio-group direction
  • fix(QSlider,QRange): say "no value" instead of announcing a limit as one -> a null QSlider announced the minimum, an untouched QRange the whole range as selected
  • fix(QSlider,QRange,QImg): emit valid ARIA in three edge cases
  • fix(QIcon): keep the ligature text out of the accessibility tree (#​18084)
  • fix(a11y): give the scrollable regions keyboard access -> QMarkupTable and QTable's horizontally scrolling middle are Tab stops, so a table wider than its container is no longer pointer-only
  • fix(ui): drop spec-invalid ARIA from QToggle, QPagination, QChip, QFab, QImg, QLinearProgress, QTimeline and QBtn
  • fix(types): keep the screen-reader lang keys optional -> a third-party language pack written before them kept compiling

Performance

  • perf(QTree): the tree was rebuilt around lazy rendering, per-node render isolation and incremental state -> collapsed subtrees mount on first expansion instead of being pre-rendered behind v-show (22.6k-node tree, dev mode: 2196ms/299,713 DOM elements -> 31ms/169), a state change re-renders only the affected nodes, and the monolithic O(N) meta rebuild became layered derivation that recomputes only on its own triggers. Per-key state of keys that left the model is pruned, and getTickedNodes()/getExpandedNodes() use keyed lookups
  • perf(QSlideTransition): start animating immediately instead of 100ms later -> every QTree, QExpansionItem and QStep slide loses 100ms of idle latency, and duration <= 0 short-circuits to an immediate settle
  • perf(ui): a broad mount-cost sweep -> useQuasar() resolves through the instance's global properties (~0.6ns/read vs ~37ns), size styles are module-cached, and trivial computeds were flattened out of the render path across ~70 files (QBtn, QItem family, the checkbox family, QChip, QTab/QRouteTab, QList, spinners and 12 bulk-mounted leaves, plus use-dark/use-align/use-form/use-transition/use-router-link/use-split-attrs)
  • perf(ui): every component of that sweep was then re-benchmarked in a real browser, and the computeds whose removal cost more than it saved were restored
  • perf(QIcon): module-level parse cache, no per-instance computeds
  • perf(date): compile formatDate masks once and cache per mask
  • perf(QScrollArea): allocation-free @scroll payload assembly
  • perf(ui): allocation-free isKeyCode, loop-based sumSize, regex-free hexToRgb and allocation-free mask token testers
  • perf(QInput/QSelect/QTab): test the cheap event flags before shouldIgnoreKey()

Fixes

  • fix(QSelect): allow cancelling keyboard actions (#​18507)
  • fix(QInput): allow cancelling mask keyboard actions (#​18515)
  • fix(QEditor): allow cancelling the CTRL keyboard shortcuts -> @keydown.ctrl.b.prevent could observe the key but not stop QEditor toggling bold
  • fix(QTab/QRouteTab): allow cancelling the keyboard actions -> the event was emitted after the tab had already acted on it
  • fix(QEditor): commit a link only when the user asks for it -> opening the link toolbar used to wrap the selection in an <a href="https://"> straight away, leaving a broken link behind if you walked away (#​18289)
  • fix(QEditor): keep the link editor open when the command sits in a toolbar dropdown (#​17920)
  • fix(ui): add validation for the q-editor link
  • fix(QMenu): keep popups open on clicks inside a fullscreen-detached child (#​18512)
  • fix(QMenu): follow the anchor through a fullscreen detach -> the menu stayed open at stale coordinates, painted over by the fullscreen element (#​18513)
  • fix(useFullscreen): keep focus and caret through the detach/restore moves -> a caret placed in a QEditor before entering fullscreen was lost (#​17843)
  • fix(QMenu/QTooltip): follow an anchor still moving during the enter transition -> the popup no longer lands at a stale spot and snaps into place at transition end
  • fix(QDialog/QMenu): don't throw on focus when the inner ref holds a non-Element stub (#​12780)
  • fix(QDialog/QTooltip): resolve fall-through attrs on the render path -> a dynamic :class on an open QDialog never reached the portal root, and a dynamic id went stale on QTooltip
  • fix(QDialog): stop fighting the iOS scroll position while the viewport is zoomed
  • fix(QScrollArea): stop trapping fixed-positioned children -> a position: fixed descendant anchored itself to the scroll area and was clipped there (#​12109)
  • fix(QSelect): display falsy (non-null) selected values with fill-input (#​17763)
  • fix(QInput): restore the textarea inline styles when autogrow is toggled off (#​17535)
  • fix(QFab): stop forwarding the FAB's own props to the trigger button -> every FAB shipped an anchor carrying invalid DOM attributes like direction="up" and labelposition="right"
  • fix(ui): QFab/QFabAction internal top/bottom label was never stacked -> an internal label-position="top"/"bottom" laid icon and label out in a row instead of a column
  • fix(QColor): drop the dead hideSelection prop from the alpha slider
  • fix(QTree): align dense virtual scroll root leaves with the nested layout
  • fix(ui): QVirtualScroll SSR-rendered padding mismatching the client's -> no more "Hydration style mismatch" warning in every SSR app rendering a QVirtualScroll
  • fix(ui): Morph SSR hydration class false-positive
  • fix(ui): Screen plugin -> honor the documented config > screen > bodyClasses key on SSR, which never emitted its body class into server-rendered HTML
  • fix(ui): widen useQuasar()'s inject() fallback past the no-instance case
  • fix(ui): actually print the UMD missing-Vue guidance error -> it was dead code behind a cryptic "Cannot read properties of undefined" throw

Other

  • Test infrastructure: SSR hydration coverage for every component and directive (with a Quasar-config and icon-set install axis), a hydration sweep over the playground, a UMD suite running the built bundles under both global Vue builds, a cross-engine regression sweep page, and an [Accessibility] category in the Specs workflow

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:

v2.24.0

Compare Source

Changes

No breaking changes, no runtime changes. This release makes quasar more tree-shakable and pairs with the new faster toolchain.

  • Tree-shaking: added a sideEffects declaration and /#PURE/ annotations on all component/directive/plugin definitions. A minimal import { QBtn } from 'quasar' can now shake down to 36 KB (10 KB gzip) under per-file imports.
  • New dist/transforms/sass-variables.json: precomputed parse of the Sass variables file, powering targeted variable injection in @​quasar/vite-plugin v2 (only the variables a style block uses get injected — much faster Sass compilation).
  • Pairs with @​quasar/vite-plugin v2.0.0 and @​quasar/app-vite v3.4.0 (both require quasar ^2.24.0): production builds up to 3x faster, dev cold starts up to ~1.8x faster, byte-identical output. Plugin 1.x keeps working too.

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:

v2.23.5

Compare Source

Fixes
  • fix(QTime): default value to match docs
  • fix(QRange): handle "null" as model value
  • fix(QDate): events rendered no marker unless event-color was also set
  • fix(QDate): undefined model rejected by the validator
  • fix(useField): the control slot's field key never existed
  • fix(QFile): file/selected slot scopes "ref" value
  • fix(QEditor): a toolbar dropdown crashed the render on an unknown option token
  • fix(QTree): setTicked() did nothing unless ticked was v-model bound
  • fix(morph): cancel() crashed when reversing a non-tween morph
  • fix(uploader-core): remove dead branch
  • fix(morph): spacers pointed at missing keyframes
  • fix(QUploader): factory() leaked the upload thread
  • fix(useValidate): a misspelled pattern rule silently passed validation
  • fix(QUploader): no "failed" event when the URL was missing
  • fix(QTable): scrollTo() was a no-op without virtual-scroll-sticky-size-start
  • fix(QTable): non-virtual scrollTo() threw on a non-numeric index
  • fix(QCheckbox;QToggle;QRadio): [regression] label wrapped components do not work as expected anymore #​18499
  • fix(TouchPan;TouchSwipe): stop shielding the page from pointer events after the mouse gesture ended #​18496
Notable behaviour changes
  • Validation: a misspelled string rule now fails instead of silently passing (b67ea77, 843a8c7)

Affects all components using rules (QInput, QSelect, QField, QFile, QDate, QTime, ...). Previously, a string rule that doesn't match any embedded validation pattern (e.g. rules: [ 'emial' ] instead of 'email') was silently skipped — the field validated as if the rule wasn't there. Such a rule now logs a console.error and fails validation (like any message-less rule, with no error message displayed).

Action needed: if a field in your app suddenly refuses to validate and the console shows Unknown validation pattern rule: "...", fix the rule name. The old behavior was accepting any input through the typo.

  • QDate: event markers now render without event-color (9101b16)

Previously, setting events without also setting event-color rendered no marker at all. Markers now render with the default styling (the secondary brand color), as documented. If you had events set and were (unknowingly) relying on the markers being invisible, days matching events will now show a marker.

Passing an explicitly undefined model (e.g. v-model="myDate" before myDate is initialized) no longer triggers a Vue prop-validation warning — it now resolves to null ("no value selected"), matching the documented String | null | undefined type and the pattern QSlider already uses. Omitting the prop entirely still warns as a required prop. No action needed unless you were watching for that console warning.

  • QUploader: @​failed now fires when the upload URL is missing or invalid (7a45734)

Previously, an invalid/unset url only logged a console error and marked the files as failed — the @​failed event never fired, so programmatic error handling couldn't react. The event now fires with the documented { files, xhr } payload (an XHR that was never sent, so xhr.status is 0). If you have a @​failed listener, it will now also receive this case.

  • QTree: setTicked() now works without v-model:ticked too (edfb46a)

The public setTicked() method (and tickboxes in uncontrolled usage) previously did nothing unless ticked was bound with v-model. It now updates the internal state, mirroring how setExpanded() already behaved. Controlled usage (with v-model:ticked) is unchanged.

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:

v2.23.4

Compare Source

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:

v2.23.3

Compare Source

Security

  • fix(ui): bound SSR User-Agent parsing

Fixes

  • feat+fix(date): extra second param (utc?: boolean) for daysInMonth(); correct UTC month ends and locale cache (#​18453)
  • fix(date): accept negative epoch in extractDate X/x masks (#​18443)
  • fix(patterns): accept rgba alphas with a trailing zero (#​18444)
  • fix(use-panel): terminate goToPanelByOffset when walking below index 0 (#​18445)
  • fix(slider): ignore a non-positive markers prop (#​18446)
  • fix(slide-transition): do not orphan the fallback timer (#​18447)
  • fix(use-panel): do not apply the RTL swipe flip when vertical (#​18448)
  • fix(QSelect): cancel a pending input-value emit when setting a new one (#​18449)
  • fix(QBtn): release the submit keydown guard on cleanup (#​18451)
  • fix(QInput): make blur() cancel a focus() queued behind the portal wait flag (#​18452)

Other (potential breaking change)

  • feat+perf(Platform): remove support for very old platforms like blackberry and playbook

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:

v2.23.2

Lots of community fixes included, especially from Evan Chan (@​evnchn ). Thanks all for contributing!

Fixes
  • fix(ui): account for Android safe area insets (new prop framework.config.cordova/capacitor: androidStatusBarPadding (boolean) (#​18425)
  • fix(format): capitalize('') should not throw (#​18426)
  • fix(patterns): reject calendar-invalid month/day in the date rule (#​18427)
  • fix(date): correct getWeekOfYear DST adjustment (minutes vs hours) (#​18428)
  • fix(debounce): re-arm the leading edge after cancel() in immediate mode (#​18429)
  • fix(portal): guard removeGlobalNode against untracked elements (#​18430)
  • fix(EventBus): prevent once() firing twice on a re-entrant emit (#​18431)
  • fix(TouchPan): reference bindings.value in updated hook, not undeclared value (#​18432)
  • fix(morph directive): resolve object-form binding in getSSRProps (#​18438)
  • fix(escape-key): keep ESC armed across interleaved key events while held #​18433
  • fix(Dialog): keep array-valued plugin options as arrays when merging on update() #​18434
  • fix(useSplitAttrs): read the current vnode each update, not a stale setup capture #​18435
  • fix(Notify): use notif.multiLine (not multiline) in the auto-group key #​18436
  • fix(BottomSheet): apply action.classes in grid mode (was action.class) #​18437
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:

v2.23.0: /1

Compare Source

[!IMPORTANT]
If you are using RTL, you might want to update your postcss.config.js on the postcss-rtlcss options. Import { Mode } from postcss-rtlcss/options and assign { mode: Mode.Override } to the postcss-rtlcss options.

2.23.1 is a repackage and publish due to an npm issue.

New

  • feat(ui): new composable -> useAnimationFrame()

Fixes

  • fix(QFab): keep actions physically placed under RTL to prevent overlap (#​18413)
  • fix(QMenu): don't close popups shielded by a modal QDialog (#​18091) (#​18412)
  • fix(QCarousel): preserve scroll position after exiting fullscreen (#​18215) (#​18411)
  • fix(QFab): keep action order physical under RTL (#​18419)
  • fix(css): emit override-mode RTL so nested dir subtrees don't double-apply (#​18420)
  • fix(QLinearProgress): fix reverse direction under subtree RTL (#​18421)

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:

v2.22.0

Compare Source

[!IMPORTANT]
If you will be using the new SSG mode with Quasar CLI, you will need to upgrade to this version.

Security fixes

  • fix(ui): prevent extend prototype pollution
  • fix(ui): secure SSR meta serialization

Other fixes

  • fix(ui): align runtime public surface behavior (#​18379)
  • fix(ui): clean up deferred lifecycle work (#​18383)
  • fix(ui): align form control behavior (#​18385)
  • fix(ui): improve SSR hydration safety (#​18382)
  • fix(ui): harden overlay focus lifecycle (#​18381)
  • fix(ui): improve keyboard accessibility (#​18380)
  • fix(ui): harden QTable interactions (#​18386)
  • fix(ui): align RTL interaction behavior (#​18384)
  • fix(QSlideItem): preserve pending action side (#​18403)
  • fix(QDialog): restore scroll after URL metadata changes (#​18406)
  • fix(QInput): preserve focused value with v-model.trim (#​18402)
  • fix(QCarousel): initialize navigation state on render (#​18401)
  • fix(ui): harden QUploader state handling (#​18397)

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:

v2.21.4

Compare Source

Changes
  • fix(ui): table pagination range labels for LTR languages (#​18378)
Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.21.3

Compare Source

Changes

  • fix(ui): HasSsrOrSsg defaults to SSR branch for non-SSR apps (#​18356)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.21.2

Compare Source

Changes

  • feat(ui): prepare types for upcoming SSG mode

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.21.1

Compare Source

Changes

  • fix+perf(QDialog): css instead of js approach to fix page scroll loss functionality after closing QDialog in Safari (macOS) #​18275

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.21.0

Compare Source

Changes

  • feat(QTable): export getCellValue(colName,row) on the instance
  • feat(lang): new language pack "lb"
  • feat(ui): integrate lang audit into the build system
  • feat(ui): integrate icon set audit into build system
  • feat(ui): json api build system -> best effort method to catch undeclared component methods
  • fix(ui): icon-set type has non-existent svg-mdi-v3 & svg-mdi-v4
  • fix(ui): add missing type for clone() util
  • fix(QTooltip): guard MutationObserver against detached innerRef (#​18316)
  • fix(ui): Audit and align UI language packs (#​18339)
  • fix(lang): az-Latn -> lang native name
  • fix(lang): eo -> tree.noData should be tree.noNodes
  • fix(lang): fi -> unused pullToRefresh definitions
  • fix(lang): fr -> tree.noData should be tree.noNodes
  • fix(lang): hi -> lang native name
  • fix(lang): it -> tree.noData should be tree.noNodes
  • fix(lang): kur-CKB -> unused date.singleDay
  • fix(lang): lt -> lang native name
  • fix(lang): ms-MY -> lang native name
  • fix(lang): ms -> date.months translation
  • fix(lang): ug -> missing pagination
  • fix(lang): correct Norwegian (nb-NO) table.selectedRecords + minor fixes (#​18334)
  • fix(lang): lv -> date.months translation
  • fix(lang): ms-MY -> date.headerTitle and date.firstDayOfWeek
  • fix(lang): my -> wrongly being used for Malaysia; translated to actual lang
  • fix(lang): uk -> date.days translation
  • fix(lang): correct Japanese (ja) mistranslations in editor/tree labels (#​18336)
  • fix(iconSet): themify -> remove unused carousel.thumbnails

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.20.3

Compare Source

Changes

  • fix(TouchPan): glitch in getChanges() which breaks js flow #​18337

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.20.2

Compare Source

Changes

  • fix(QDrawer): swipe-to-open gesture broken on mobile (onOpenPan guard condition inverted) #​18331
  • fix(portal): avoid focus tampering while in the wait state #​18333
  • feat(ui): small tweaks to further modernize code
  • feat(ui): re-organize UMD

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.20.1

Compare Source

Fixes
  • fix(QInput): type="number" label overlap #​18326
  • fix(QDialog): accessibility warning on backdrop #​18314
  • fix(portal): do not allow focus on any element while in the wait state
Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.20.0

Compare Source

Quasar UI is now much smaller in size and runs faster! We are bumping the minor version because this release is significant in many areas.

Changes

  • feat+perf(ui): modernize codebase
  • feat+fix+perf(runSequentialPromises): modernize; avoid crashing when passing non-async fn; avoid setTimeout() which adds unnecessary delays (they add up)
  • feat(Cookies): modernize; use MaxAge instead of expires
  • feat+perf(uid): modernize function
  • fix(QPopupProxy): should not emit update:modelValue due to useAnchor()
  • fix(TouchSwipe): account for UMD too where modifiers will be lowercased to work for mouseCapture
  • fix(Ripple): correctly destroy ctx
  • fix(ui): QDrawer hideOnRouteChange logic
  • feat(ui): remove legacy "vetur" step from the build
  • refactor(ui): improve the build system; better leverage of the rolldown API
  • fix(frameDebounce): calling context of execution function
  • fix(ui): add missing HasElectron type

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.19.3

Compare Source

Changes

  • feat(ui): new icon sets -> Fontawesome v7 (& svg, & pro variants), Svg Ionicons v7 & v8
  • feat(ui): decouple q/extras types from the UI package
  • feat(ui): update Italian translations (#​18284)
  • fix(useInterval): remove unused argument passed to removeInterval (fixes #​18273) (#​18274)
  • fix(ui): UMD prod -> isRuntimeSsrPreHydration is undefined in setup() due to bug in rolldown #​18272

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.19.2

Compare Source

Changes

  • fix(QIcon): error with material-icons-outlined #​18267

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.19.1

Compare Source

Changes

  • fix(ui): QInput/QSelect placeholder visible behind label when field is empty #​18265

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.19.0

Compare Source

We're bumping the minor version without new features to signal our important shift to the Oxc+Rolldown ecosystem for our internal build system (which also generates smaller Quasar UI dist files).

For the standalone/umd version, we're now targetting the "baseline-widely-available" agreed minimum versions (chrome/edge 111, firefox 114, safari/ios 16.4) and Node.js v20 (already required by q/app-vite [v22 for this one] & q/app-webpack).

Changes

  • feat(ui): [internal build system] replace: esbuild -> rolldown, cssnano -> lightningcss, eslint -> oxfmt & oxlint
  • fix(QEditor): save selection range before execCommand('createLink') t… (#​18249)
  • fix(ui): date/getMinDate & date/getMaxDate should return Date instead of number (#​18261)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.18.7

Compare Source

Changes

  • perf(ui): runSequentialPromise() -> never start more threads than supplied number of promises
  • fix(QBtnDropdown): API -> description for 'cover' property (#​18208)
  • fix(ui): openURL() should not invoke rejectFn when noopener is set (#​18221) (#​18229)

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.18.6

Compare Source

Changes

  • fix(ui): threadsNumber not working correctly for runSequentialPromises() util

Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

v2.18.5

Compare Source

Changes
  • feat+perf(QPagination): blur input after update on mobile; various perf work on events #​18097
  • fix(QField/QInput/...): a11y compliancy - move q-field__label before the input (fix #​16855) (#​18031)
Donations

Quasar Framework is an open-source MIT-licensed project made possible due to the generous contributions by sponsors and backers. If you are interested in supporting this project, please consider the following:

[v2.18.4](https://re

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 739d0b8 to 6f5b582 Compare June 27, 2021 12:48
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 6f5b582 to 9d0d191 Compare July 8, 2021 13:28
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 9d0d191 to 2fa8c85 Compare October 19, 2021 01:12
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 2fa8c85 to 247a7b6 Compare March 7, 2022 13:47
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 247a7b6 to a75fb3a Compare March 26, 2022 14:04
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from a75fb3a to fe2ce31 Compare April 25, 2022 02:18
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from c1f656e to 2c8a751 Compare June 23, 2022 18:39
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 2c8a751 to e60750f Compare September 25, 2022 21:53
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from e60750f to f1848fe Compare November 20, 2022 18:46
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from f1848fe to 4868ae4 Compare March 16, 2023 08:54
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 4868ae4 to 3e5c313 Compare March 24, 2023 23:47
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 3e5c313 to 41a1a8b Compare April 3, 2023 10:28
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 41a1a8b to 8a4a24b Compare May 28, 2023 11:24
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from 96c8218 to e4824cc Compare July 1, 2023 10:42
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from e4824cc to 6386053 Compare July 18, 2023 10:30
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 6386053 to 8cf2630 Compare August 7, 2023 10:53
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 8cf2630 to ee3058f Compare August 18, 2023 16:32
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from ee3058f to 314d62c Compare September 2, 2023 13:42
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 314d62c to 32283d8 Compare September 13, 2023 14:19
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 32283d8 to c71ccfd Compare October 17, 2023 18:09
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from 42d42a2 to 58826ef Compare November 13, 2023 14:35
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 58826ef to 799b14b Compare November 29, 2023 16:06
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 799b14b to 90c2b33 Compare December 18, 2023 13:41
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 90c2b33 to 7963713 Compare January 25, 2024 12:42
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from 7c60c62 to 6525433 Compare February 20, 2024 18:53
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 6525433 to cd8ffcd Compare February 29, 2024 19:14
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from f37c610 to 8a60d69 Compare July 10, 2024 16:21
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from c1e4129 to 2d26337 Compare August 7, 2024 11:39
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 2d26337 to 0b499cd Compare August 15, 2024 17:40
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from b21cbb6 to 52e6e19 Compare September 6, 2024 16:37
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 52e6e19 to 26369d6 Compare September 17, 2024 14:41
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 26369d6 to caeb189 Compare October 19, 2024 16:34
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from caeb189 to 8016674 Compare November 6, 2024 19:55
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from d0bf561 to ac48aab Compare November 18, 2024 15:29
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from ac48aab to 3ee0197 Compare December 14, 2024 12:56
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 3ee0197 to 531852d Compare January 3, 2025 13:01
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 531852d to d1f8e98 Compare January 18, 2025 16:55
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from 56700aa to d8460bf Compare March 6, 2025 14:13
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from d8460bf to 90d20a6 Compare July 20, 2025 14:10
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 3 times, most recently from 4f6fc3f to 285b346 Compare September 18, 2025 14:04
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 285b346 to b5bc1c0 Compare November 18, 2025 23:03
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from b5bc1c0 to 56464be Compare March 17, 2026 13:29
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from 2d911af to 59a4a66 Compare March 26, 2026 16:31
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 59a4a66 to 03a3fc7 Compare April 6, 2026 08:35
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch 2 times, most recently from d51ccc0 to 715466e Compare June 16, 2026 17:10
@renovate
renovate Bot force-pushed the renovate/quasar-2.x branch from 715466e to 5c3cd15 Compare June 30, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants