quasar 2.19.3 → 2.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/Lang.json +1 -1
- package/dist/api/QCarouselSlide.json +1 -1
- package/dist/api/QChatMessage.json +1 -1
- package/dist/api/QImg.json +1 -1
- package/dist/api/QParallax.json +1 -1
- package/dist/api/QRange.json +1 -1
- package/dist/api/QSlider.json +1 -1
- package/dist/api/QTimelineEntry.json +1 -1
- package/dist/api/QTree.json +1 -1
- package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/eva-icons.umd.prod.js +2 -2
- package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +5 -5
- package/dist/icon-set/fontawesome-v5.umd.prod.js +5 -5
- package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +5 -5
- package/dist/icon-set/fontawesome-v6.umd.prod.js +5 -5
- package/dist/icon-set/fontawesome-v7-pro.umd.prod.js +1 -1
- package/dist/icon-set/fontawesome-v7.umd.prod.js +1 -1
- package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/material-icons.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/mdi-v3.umd.prod.js +5 -5
- package/dist/icon-set/mdi-v4.umd.prod.js +5 -5
- package/dist/icon-set/mdi-v5.umd.prod.js +5 -5
- package/dist/icon-set/mdi-v6.umd.prod.js +5 -5
- package/dist/icon-set/mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-eva-icons.umd.prod.js +2 -2
- package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +5 -5
- package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +5 -5
- package/dist/icon-set/svg-fontawesome-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
- package/dist/icon-set/svg-ionicons-v5.umd.prod.js +5 -5
- package/dist/icon-set/svg-ionicons-v6.umd.prod.js +5 -5
- package/dist/icon-set/svg-ionicons-v7.umd.prod.js +5 -5
- package/dist/icon-set/svg-ionicons-v8.umd.prod.js +1 -1
- package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
- package/dist/icon-set/svg-mdi-v6.umd.prod.js +5 -5
- package/dist/icon-set/svg-mdi-v7.umd.prod.js +1 -1
- package/dist/icon-set/svg-themify.umd.prod.js +2 -2
- package/dist/icon-set/themify.umd.prod.js +2 -2
- package/dist/lang/ar-TN.umd.prod.js +2 -2
- package/dist/lang/ar.umd.prod.js +2 -2
- package/dist/lang/az-Latn.umd.prod.js +2 -2
- package/dist/lang/bg.umd.prod.js +2 -2
- package/dist/lang/bn.umd.prod.js +2 -2
- package/dist/lang/bs-BA.umd.prod.js +2 -2
- package/dist/lang/ca.umd.prod.js +2 -2
- package/dist/lang/cs.umd.prod.js +2 -2
- package/dist/lang/da.umd.prod.js +2 -2
- package/dist/lang/de-CH.umd.prod.js +2 -2
- package/dist/lang/de-DE.umd.prod.js +2 -2
- package/dist/lang/de.umd.prod.js +2 -2
- package/dist/lang/el.umd.prod.js +2 -2
- package/dist/lang/en-GB.umd.prod.js +2 -2
- package/dist/lang/en-US.umd.prod.js +2 -2
- package/dist/lang/eo.umd.prod.js +2 -2
- package/dist/lang/es.umd.prod.js +2 -2
- package/dist/lang/et.umd.prod.js +2 -2
- package/dist/lang/eu.umd.prod.js +2 -2
- package/dist/lang/fa-IR.umd.prod.js +2 -2
- package/dist/lang/fa.umd.prod.js +2 -2
- package/dist/lang/fi.umd.prod.js +2 -2
- package/dist/lang/fr.umd.prod.js +2 -2
- package/dist/lang/gn.umd.prod.js +2 -2
- package/dist/lang/he.umd.prod.js +2 -2
- package/dist/lang/hi.umd.prod.js +2 -2
- package/dist/lang/hr.umd.prod.js +2 -2
- package/dist/lang/hu.umd.prod.js +2 -2
- package/dist/lang/id.umd.prod.js +2 -2
- package/dist/lang/is.umd.prod.js +2 -2
- package/dist/lang/it.umd.prod.js +2 -2
- package/dist/lang/ja.umd.prod.js +2 -2
- package/dist/lang/kk.umd.prod.js +2 -2
- package/dist/lang/km.umd.prod.js +2 -2
- package/dist/lang/ko-KR.umd.prod.js +1 -1
- package/dist/lang/kur-CKB.umd.prod.js +2 -2
- package/dist/lang/lt.umd.prod.js +2 -2
- package/dist/lang/lu.umd.prod.js +2 -2
- package/dist/lang/lv.umd.prod.js +2 -2
- package/dist/lang/mk.umd.prod.js +2 -2
- package/dist/lang/ml.umd.prod.js +2 -2
- package/dist/lang/mm.umd.prod.js +2 -2
- package/dist/lang/ms-MY.umd.prod.js +2 -2
- package/dist/lang/ms.umd.prod.js +2 -2
- package/dist/lang/my.umd.prod.js +2 -2
- package/dist/lang/nb-NO.umd.prod.js +2 -2
- package/dist/lang/nl.umd.prod.js +2 -2
- package/dist/lang/pl.umd.prod.js +2 -2
- package/dist/lang/pt-BR.umd.prod.js +2 -2
- package/dist/lang/pt.umd.prod.js +2 -2
- package/dist/lang/ro.umd.prod.js +2 -2
- package/dist/lang/ru.umd.prod.js +2 -2
- package/dist/lang/sk.umd.prod.js +2 -2
- package/dist/lang/sl.umd.prod.js +2 -2
- package/dist/lang/sm.umd.prod.js +2 -2
- package/dist/lang/sq.umd.prod.js +2 -2
- package/dist/lang/sr-CYR.umd.prod.js +2 -2
- package/dist/lang/sr.umd.prod.js +2 -2
- package/dist/lang/sv.umd.prod.js +2 -2
- package/dist/lang/ta.umd.prod.js +2 -2
- package/dist/lang/th.umd.prod.js +2 -2
- package/dist/lang/tl.umd.prod.js +2 -2
- package/dist/lang/tr.umd.prod.js +2 -2
- package/dist/lang/ug.umd.prod.js +2 -2
- package/dist/lang/uk.umd.prod.js +2 -2
- package/dist/lang/ur-PK.umd.prod.js +2 -2
- package/dist/lang/uz-Cyrl.umd.prod.js +2 -2
- package/dist/lang/uz-Latn.umd.prod.js +2 -2
- package/dist/lang/vi.umd.prod.js +2 -2
- package/dist/lang/zh-CN.umd.prod.js +2 -2
- package/dist/lang/zh-TW.umd.prod.js +2 -2
- package/dist/quasar.client.js +2621 -2604
- package/dist/quasar.sass +1 -1
- package/dist/quasar.server.prod.cjs +11 -11
- package/dist/quasar.server.prod.js +25 -25
- package/dist/quasar.umd.js +2616 -2599
- package/dist/quasar.umd.prod.js +23 -23
- package/dist/types/api/dialog.d.ts +1 -1
- package/dist/types/api/qnotify.d.ts +1 -1
- package/dist/types/api/qpopupproxy.d.ts +1 -1
- package/dist/types/feature-flag.d.ts +2 -2
- package/dist/types/globals.d.ts +2 -2
- package/dist/types/icon-set.d.ts +16 -16
- package/dist/types/shim-icon-set.d.ts +1 -2
- package/dist/types/shim-lang.d.ts +1 -2
- package/dist/types/ts-helpers.d.ts +3 -3
- package/dist/types/tsconfig.json +1 -1
- package/dist/types/utils/scroll.d.ts +1 -1
- package/dist/types/utils.d.ts +2 -2
- package/dist/web-types/web-types.json +1 -1
- package/icon-set/bootstrap-icons.js +1 -1
- package/icon-set/eva-icons.js +22 -22
- package/icon-set/ionicons-v4.js +16 -16
- package/icon-set/svg-bootstrap-icons.js +1 -1
- package/icon-set/svg-eva-icons.js +22 -22
- package/icon-set/svg-fontawesome-v5.js +1 -1
- package/icon-set/svg-ionicons-v4.js +16 -16
- package/icon-set/svg-themify.js +7 -7
- package/icon-set/themify.js +7 -7
- package/lang/ar-TN.js +1 -1
- package/lang/ar.js +1 -1
- package/lang/az-Latn.js +1 -1
- package/lang/bg.js +1 -1
- package/lang/bn.js +1 -1
- package/lang/bs-BA.js +1 -1
- package/lang/ca.js +1 -1
- package/lang/cs.js +11 -6
- package/lang/da.js +1 -1
- package/lang/de-CH.js +1 -1
- package/lang/de-DE.js +1 -1
- package/lang/de.js +1 -1
- package/lang/el.js +1 -1
- package/lang/en-GB.js +1 -1
- package/lang/en-US.js +1 -1
- package/lang/eo.js +1 -1
- package/lang/es.js +1 -1
- package/lang/et.js +1 -1
- package/lang/eu.js +1 -1
- package/lang/fa-IR.js +1 -1
- package/lang/fa.js +1 -1
- package/lang/fi.js +1 -1
- package/lang/fr.js +1 -1
- package/lang/gn.js +1 -1
- package/lang/he.js +1 -1
- package/lang/hi.js +1 -1
- package/lang/hr.js +1 -1
- package/lang/hu.js +1 -1
- package/lang/id.js +1 -1
- package/lang/is.js +1 -1
- package/lang/it.js +1 -1
- package/lang/ja.js +1 -1
- package/lang/kk.js +1 -1
- package/lang/km.js +1 -1
- package/lang/kur-CKB.js +1 -1
- package/lang/lt.js +2 -2
- package/lang/lu.js +1 -1
- package/lang/lv.js +1 -1
- package/lang/mk.js +1 -1
- package/lang/ml.js +1 -1
- package/lang/mm.js +1 -1
- package/lang/ms-MY.js +1 -1
- package/lang/ms.js +1 -1
- package/lang/my.js +1 -1
- package/lang/nb-NO.js +1 -1
- package/lang/nl.js +1 -1
- package/lang/pl.js +1 -1
- package/lang/pt-BR.js +1 -1
- package/lang/pt.js +1 -1
- package/lang/ro.js +1 -1
- package/lang/ru.js +1 -1
- package/lang/sk.js +1 -1
- package/lang/sl.js +1 -1
- package/lang/sm.js +1 -1
- package/lang/sq.js +1 -1
- package/lang/sr-CYR.js +1 -1
- package/lang/sr.js +1 -1
- package/lang/sv.js +1 -1
- package/lang/ta.js +1 -1
- package/lang/th.js +1 -1
- package/lang/tl.js +1 -1
- package/lang/tr.js +1 -1
- package/lang/ug.js +1 -1
- package/lang/uk.js +1 -1
- package/lang/ur-PK.js +1 -1
- package/lang/uz-Cyrl.js +1 -1
- package/lang/uz-Latn.js +1 -1
- package/lang/vi.js +1 -1
- package/lang/zh-CN.js +1 -1
- package/lang/zh-TW.js +1 -1
- package/package.json +13 -17
- package/src/components/ajax-bar/QAjaxBar.js +22 -25
- package/src/components/avatar/QAvatar.js +3 -3
- package/src/components/avatar/QAvatar.test.js +2 -2
- package/src/components/badge/QBadge.js +9 -10
- package/src/components/badge/QBadge.test.js +2 -2
- package/src/components/banner/QBanner.js +6 -6
- package/src/components/banner/QBanner.test.js +2 -2
- package/src/components/bar/QBar.js +3 -3
- package/src/components/bar/QBar.test.js +2 -2
- package/src/components/breadcrumbs/QBreadcrumbs.js +5 -4
- package/src/components/breadcrumbs/QBreadcrumbs.test.js +3 -3
- package/src/components/breadcrumbs/QBreadcrumbsEl.js +4 -4
- package/src/components/breadcrumbs/QBreadcrumbsEl.test.js +2 -2
- package/src/components/btn/QBtn.js +39 -44
- package/src/components/btn/QBtn.test.js +2 -2
- package/src/components/btn/use-btn.js +34 -47
- package/src/components/btn/use-btn.test.js +5 -5
- package/src/components/btn-dropdown/QBtnDropdown.js +15 -16
- package/src/components/btn-group/QBtnGroup.js +3 -3
- package/src/components/btn-toggle/QBtnToggle.js +5 -9
- package/src/components/card/QCard.js +5 -5
- package/src/components/card/QCardActions.js +2 -2
- package/src/components/card/QCardSection.js +2 -2
- package/src/components/carousel/QCarousel.js +32 -38
- package/src/components/carousel/QCarouselControl.js +1 -1
- package/src/components/carousel/QCarouselSlide.js +1 -1
- package/src/components/carousel/QCarouselSlide.json +1 -1
- package/src/components/chat/QChatMessage.js +13 -14
- package/src/components/chat/QChatMessage.json +1 -1
- package/src/components/checkbox/QCheckbox.js +5 -5
- package/src/components/checkbox/use-checkbox.js +38 -50
- package/src/components/chip/QChip.js +26 -34
- package/src/components/chip/QChip.test.js +2 -2
- package/src/components/circular-progress/QCircularProgress.js +8 -11
- package/src/components/circular-progress/circular-progress.test.js +1 -1
- package/src/components/color/QColor.js +75 -98
- package/src/components/date/QDate.js +128 -140
- package/src/components/date/use-datetime.js +3 -6
- package/src/components/dialog/QDialog.js +44 -51
- package/src/components/dialog/QDialog.test.js +7 -7
- package/src/components/drawer/QDrawer.js +110 -152
- package/src/components/editor/QEditor.js +44 -37
- package/src/components/editor/editor-caret.js +27 -31
- package/src/components/editor/editor-utils.js +9 -5
- package/src/components/expansion-item/QExpansionItem.js +36 -48
- package/src/components/fab/QFab.js +11 -11
- package/src/components/fab/QFabAction.js +2 -4
- package/src/components/fab/use-fab.js +6 -7
- package/src/components/field/QField.js +2 -2
- package/src/components/file/QFile.js +26 -33
- package/src/components/footer/QFooter.js +40 -53
- package/src/components/form/QForm.js +37 -43
- package/src/components/form/QFormChildMixin.js +3 -3
- package/src/components/header/QHeader.js +35 -47
- package/src/components/icon/QIcon.js +19 -19
- package/src/components/img/QImg.js +24 -24
- package/src/components/img/QImg.json +3 -3
- package/src/components/infinite-scroll/QInfiniteScroll.js +38 -52
- package/src/components/inner-loading/QInnerLoading.js +3 -3
- package/src/components/input/QInput.js +53 -52
- package/src/components/input/use-mask.js +56 -54
- package/src/components/intersection/QIntersection.js +6 -8
- package/src/components/item/QItem.js +20 -30
- package/src/components/item/QItemLabel.js +5 -7
- package/src/components/item/QItemSection.js +6 -6
- package/src/components/item/QList.js +6 -6
- package/src/components/item/QList.test.js +2 -2
- package/src/components/knob/QKnob.js +39 -44
- package/src/components/layout/QLayout.js +30 -34
- package/src/components/linear-progress/QLinearProgress.js +14 -23
- package/src/components/markup-table/QMarkupTable.js +7 -9
- package/src/components/menu/QMenu.js +36 -37
- package/src/components/no-ssr/QNoSsr.js +1 -1
- package/src/components/option-group/QOptionGroup.js +5 -5
- package/src/components/page/QPage.js +16 -18
- package/src/components/page/QPageContainer.js +9 -9
- package/src/components/page-scroller/QPageScroller.js +11 -13
- package/src/components/page-sticky/use-page-sticky.js +18 -18
- package/src/components/pagination/QPagination.js +24 -26
- package/src/components/parallax/QParallax.js +15 -9
- package/src/components/parallax/QParallax.json +1 -1
- package/src/components/popup-edit/QPopupEdit.js +10 -13
- package/src/components/popup-proxy/QPopupProxy.js +5 -7
- package/src/components/pull-to-refresh/QPullToRefresh.js +15 -17
- package/src/components/radio/QRadio.js +24 -29
- package/src/components/range/QRange.js +33 -37
- package/src/components/rating/QRating.js +59 -61
- package/src/components/resize-observer/QResizeObserver.js +55 -62
- package/src/components/scroll-area/QScrollArea.js +32 -36
- package/src/components/scroll-observer/QScrollObserver.js +3 -3
- package/src/components/select/QSelect.js +208 -269
- package/src/components/separator/QSeparator.js +7 -10
- package/src/components/skeleton/QSkeleton.js +4 -4
- package/src/components/slide-item/QSlideItem.js +7 -7
- package/src/components/slide-transition/QSlideTransition.js +4 -4
- package/src/components/slider/QSlider.js +13 -16
- package/src/components/slider/use-slider.js +53 -81
- package/src/components/slider/use-slider.json +3 -3
- package/src/components/space/QSpace.test.js +1 -1
- package/src/components/spinner/QSpinner.test.js +2 -2
- package/src/components/spinner/QSpinnerAudio.test.js +2 -2
- package/src/components/spinner/QSpinnerBall.test.js +2 -2
- package/src/components/spinner/QSpinnerBars.test.js +2 -2
- package/src/components/spinner/QSpinnerBox.test.js +2 -2
- package/src/components/spinner/QSpinnerClock.test.js +2 -2
- package/src/components/spinner/QSpinnerComment.test.js +2 -2
- package/src/components/spinner/QSpinnerCube.test.js +2 -2
- package/src/components/spinner/QSpinnerDots.test.js +2 -2
- package/src/components/spinner/QSpinnerFacebook.test.js +2 -2
- package/src/components/spinner/QSpinnerGears.test.js +2 -2
- package/src/components/spinner/QSpinnerGrid.test.js +2 -2
- package/src/components/spinner/QSpinnerHearts.test.js +2 -2
- package/src/components/spinner/QSpinnerHourglass.test.js +2 -2
- package/src/components/spinner/QSpinnerInfinity.test.js +2 -2
- package/src/components/spinner/QSpinnerIos.test.js +2 -2
- package/src/components/spinner/QSpinnerOrbit.test.js +2 -2
- package/src/components/spinner/QSpinnerOval.test.js +2 -2
- package/src/components/spinner/QSpinnerPie.test.js +2 -2
- package/src/components/spinner/QSpinnerPuff.test.js +2 -2
- package/src/components/spinner/QSpinnerRadio.test.js +2 -2
- package/src/components/spinner/QSpinnerRings.test.js +2 -2
- package/src/components/spinner/QSpinnerTail.test.js +2 -2
- package/src/components/spinner/use-spinner.test.js +1 -1
- package/src/components/splitter/QSplitter.js +19 -21
- package/src/components/stepper/QStep.js +12 -14
- package/src/components/stepper/QStepper.js +13 -14
- package/src/components/stepper/StepHeader.js +34 -35
- package/src/components/tab-panels/QTabPanels.js +3 -3
- package/src/components/table/QTable.js +82 -100
- package/src/components/table/QTd.js +3 -3
- package/src/components/table/QTh.js +5 -6
- package/src/components/table/QTr.js +3 -3
- package/src/components/table/table-column-selection.js +4 -6
- package/src/components/table/table-filter.js +2 -2
- package/src/components/table/table-pagination.js +14 -20
- package/src/components/table/table-row-expand.js +3 -3
- package/src/components/table/table-row-selection.js +10 -20
- package/src/components/table/table-sort.js +7 -7
- package/src/components/tabs/QRouteTab.js +1 -1
- package/src/components/tabs/QTab.js +1 -1
- package/src/components/tabs/QTabs.js +82 -109
- package/src/components/tabs/use-tab.js +36 -38
- package/src/components/time/QTime.js +109 -132
- package/src/components/timeline/QTimeline.js +7 -4
- package/src/components/timeline/QTimelineEntry.js +7 -6
- package/src/components/timeline/QTimelineEntry.json +1 -1
- package/src/components/toggle/QToggle.js +6 -8
- package/src/components/toolbar/QToolbar.js +2 -2
- package/src/components/toolbar/QToolbar.test.js +2 -2
- package/src/components/toolbar/QToolbarTitle.js +2 -4
- package/src/components/toolbar/QToolbarTitle.test.js +2 -2
- package/src/components/tooltip/QTooltip.js +27 -28
- package/src/components/tree/QTree.js +96 -114
- package/src/components/tree/QTree.json +1 -1
- package/src/components/uploader/QUploaderAddTrigger.js +2 -2
- package/src/components/uploader/uploader-core.js +44 -51
- package/src/components/uploader/xhr-uploader-plugin.js +13 -17
- package/src/components/video/QVideo.js +1 -1
- package/src/components/video/QVideo.test.js +2 -2
- package/src/components/virtual-scroll/QVirtualScroll.js +9 -10
- package/src/components/virtual-scroll/use-virtual-scroll.js +42 -50
- package/src/composables/private.use-align/use-align.js +2 -2
- package/src/composables/private.use-align/use-align.test.js +1 -1
- package/src/composables/private.use-anchor/use-anchor.js +23 -32
- package/src/composables/private.use-dark/use-dark.test.js +1 -1
- package/src/composables/private.use-field/use-field.js +79 -99
- package/src/composables/private.use-file/use-file-dom-props.js +2 -2
- package/src/composables/private.use-file/use-file.js +27 -27
- package/src/composables/private.use-fullscreen/use-fullscreen.js +15 -20
- package/src/composables/private.use-history/use-history.js +2 -2
- package/src/composables/private.use-history/use-history.test.js +1 -1
- package/src/composables/private.use-key-composition/use-key-composition.js +11 -12
- package/src/composables/private.use-model-toggle/use-model-toggle.js +16 -25
- package/src/composables/private.use-panel/use-panel.js +25 -27
- package/src/composables/private.use-portal/use-portal.js +11 -9
- package/src/composables/private.use-prevent-scroll/use-prevent-scroll.js +1 -4
- package/src/composables/private.use-ratio/use-ratio.js +6 -5
- package/src/composables/private.use-ratio/use-ratio.test.js +1 -1
- package/src/composables/private.use-refocus-target/use-refocus-target.js +2 -4
- package/src/composables/private.use-router-link/use-router-link.js +44 -55
- package/src/composables/private.use-scroll-target/use-scroll-target.js +1 -1
- package/src/composables/private.use-size/use-size.test.js +1 -1
- package/src/composables/private.use-transition/use-transition.test.js +1 -1
- package/src/composables/private.use-validate/use-validate.js +23 -36
- package/src/composables/use-dialog-plugin-component/use-dialog-plugin-component.js +1 -1
- package/src/composables/use-form/private.use-form.js +1 -1
- package/src/composables/use-form/private.use-form.test.js +3 -3
- package/src/composables/use-form/use-form-child.js +7 -7
- package/src/composables/use-hydration/use-hydration.js +2 -2
- package/src/composables/use-hydration/use-hydration.test.js +1 -1
- package/src/composables/use-id/use-id.js +4 -8
- package/src/composables/use-id/use-id.test.js +1 -1
- package/src/composables/use-interval/use-interval.js +2 -2
- package/src/composables/use-interval/use-interval.test.js +1 -1
- package/src/composables/use-meta/use-meta.js +3 -3
- package/src/composables/use-quasar/use-quasar.test.js +1 -1
- package/src/composables/use-render-cache/use-render-cache.js +1 -1
- package/src/composables/use-render-cache/use-render-cache.test.js +1 -1
- package/src/composables/use-split-attrs/use-split-attrs.js +3 -7
- package/src/composables/use-split-attrs/use-split-attrs.test.js +1 -1
- package/src/composables/use-tick/use-tick.js +3 -3
- package/src/composables/use-tick/use-tick.test.js +2 -2
- package/src/composables/use-timeout/use-timeout.js +2 -2
- package/src/composables/use-timeout/use-timeout.test.js +1 -1
- package/src/directives/close-popup/ClosePopup.js +4 -9
- package/src/directives/intersection/Intersection.js +5 -8
- package/src/directives/morph/Morph.js +12 -18
- package/src/directives/ripple/Ripple.js +19 -26
- package/src/directives/ripple/Ripple.test.js +2 -2
- package/src/directives/scroll/Scroll.js +2 -2
- package/src/directives/touch-hold/TouchHold.js +22 -28
- package/src/directives/touch-pan/TouchPan.js +68 -84
- package/src/directives/touch-repeat/TouchRepeat.js +28 -39
- package/src/directives/touch-swipe/TouchSwipe.js +30 -33
- package/src/index.ssr.js +2 -0
- package/src/index.umd.js +2 -0
- package/src/install-quasar.js +9 -9
- package/src/plugins/addressbar/AddressbarColor.js +9 -9
- package/src/plugins/addressbar/AddressbarColor.test.js +2 -2
- package/src/plugins/app-fullscreen/AppFullscreen.js +11 -10
- package/src/plugins/app-fullscreen/AppFullscreen.test.js +2 -2
- package/src/plugins/app-fullscreen/test/mock-fullscreen.js +2 -2
- package/src/plugins/app-visibility/AppVisibility.js +5 -5
- package/src/plugins/app-visibility/AppVisibility.test.js +2 -2
- package/src/plugins/bottom-sheet/BottomSheet.js +2 -2
- package/src/plugins/bottom-sheet/component/BottomSheetComponent.js +4 -4
- package/src/plugins/cookies/Cookies.js +50 -62
- package/src/plugins/dark/Dark.js +3 -5
- package/src/plugins/dark/Dark.test.js +1 -1
- package/src/plugins/dialog/Dialog.js +2 -2
- package/src/plugins/dialog/component/DialogPluginComponent.js +17 -20
- package/src/plugins/icon-set/IconSet.js +2 -4
- package/src/plugins/icon-set/IconSet.test.js +1 -1
- package/src/plugins/lang/Lang.js +7 -10
- package/src/plugins/lang/Lang.json +2 -2
- package/src/plugins/lang/Lang.test.js +2 -2
- package/src/plugins/loading/Loading.js +10 -12
- package/src/plugins/loading-bar/LoadingBar.js +4 -4
- package/src/plugins/meta/Meta.js +10 -11
- package/src/plugins/notify/Notify.js +67 -72
- package/src/plugins/platform/Platform.js +19 -21
- package/src/plugins/platform/Platform.test.js +1 -1
- package/src/plugins/private.body/Body.js +23 -29
- package/src/plugins/private.body/Body.test.js +1 -1
- package/src/plugins/private.history/History.js +17 -25
- package/src/plugins/private.history/History.test.js +1 -1
- package/src/plugins/screen/Screen.js +16 -16
- package/src/plugins/screen/Screen.test.js +1 -1
- package/src/plugins/storage/LocalStorage.js +3 -4
- package/src/plugins/storage/LocalStorage.test.js +2 -2
- package/src/plugins/storage/SessionStorage.js +3 -4
- package/src/plugins/storage/SessionStorage.test.js +2 -2
- package/src/plugins/storage/engine/web-storage.js +30 -23
- package/src/plugins/storage/engine/web-storage.test.js +1 -1
- package/src/utils/EventBus/EventBus.js +3 -4
- package/src/utils/EventBus/EventBus.test.js +1 -1
- package/src/utils/clone/clone.test.js +4 -8
- package/src/utils/colors/colors.js +38 -29
- package/src/utils/colors/colors.test.js +2 -2
- package/src/utils/copy-to-clipboard/copy-to-clipboard.js +6 -11
- package/src/utils/create-meta-mixin/create-meta-mixin.js +2 -2
- package/src/utils/create-uploader-component/create-uploader-component.js +12 -7
- package/src/utils/css-var/get-css-var.test.js +2 -2
- package/src/utils/css-var/set-css-var.test.js +2 -2
- package/src/utils/date/date.js +229 -172
- package/src/utils/date/private.persian.js +11 -11
- package/src/utils/debounce/debounce.js +3 -7
- package/src/utils/debounce/debounce.test.js +1 -1
- package/src/utils/dom/dom.js +2 -4
- package/src/utils/dom/dom.test.js +4 -4
- package/src/utils/event/event.js +21 -23
- package/src/utils/export-file/export-file.js +3 -3
- package/src/utils/extend/extend.js +15 -14
- package/src/utils/extend/extend.test.js +2 -2
- package/src/utils/format/format.js +4 -10
- package/src/utils/format/format.test.js +1 -1
- package/src/utils/frame-debounce/frame-debounce.js +23 -12
- package/src/utils/frame-debounce/frame-debounce.test.js +1 -1
- package/src/utils/is/is.js +15 -26
- package/src/utils/is/is.test.js +8 -7
- package/src/utils/morph/morph.js +57 -48
- package/src/utils/open-url/open-url.js +7 -7
- package/src/utils/patterns/patterns.js +26 -23
- package/src/utils/patterns/patterns.test.js +1 -1
- package/src/utils/private.click-outside/click-outside.js +5 -5
- package/src/utils/private.config/instance-config.js +2 -0
- package/src/utils/private.config/instance-config.test.js +4 -4
- package/src/utils/private.config/nodes.js +5 -5
- package/src/utils/private.config/nodes.test.js +4 -4
- package/src/utils/private.create/create.test.js +1 -1
- package/src/utils/private.dialog/create-dialog.js +9 -12
- package/src/utils/private.focus/focus-manager.js +5 -1
- package/src/utils/private.focus/focus-manager.test.js +4 -4
- package/src/utils/private.focus/focusout.js +2 -2
- package/src/utils/private.focus/focusout.test.js +1 -1
- package/src/utils/private.get-emits-object/get-emits-object.test.js +1 -1
- package/src/utils/private.inject-obj-prop/inject-obj-prop.test.js +2 -2
- package/src/utils/private.keyboard/escape-key.js +5 -5
- package/src/utils/private.keyboard/escape-key.test.js +1 -1
- package/src/utils/private.keyboard/key-composition.js +4 -6
- package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.js +3 -1
- package/src/utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.test.js +1 -1
- package/src/utils/private.portal/portal.js +5 -5
- package/src/utils/private.position-engine/position-engine.js +20 -22
- package/src/utils/private.render/render.js +5 -7
- package/src/utils/private.render/render.test.js +5 -5
- package/src/utils/private.rtl/rtl.js +3 -2
- package/src/utils/private.rtl/rtl.test.js +1 -1
- package/src/utils/private.selection/selection.js +1 -1
- package/src/utils/private.selection/selection.test.js +2 -2
- package/src/utils/private.sort/sort.test.js +2 -2
- package/src/utils/private.touch/touch.js +10 -14
- package/src/utils/private.touch/touch.test.js +1 -1
- package/src/utils/private.vm/vm.js +2 -2
- package/src/utils/private.vm/vm.test.js +4 -4
- package/src/utils/run-sequential-promises/run-sequential-promises.js +44 -54
- package/src/utils/run-sequential-promises/run-sequential-promises.test.js +183 -0
- package/src/utils/scroll/prevent-scroll.js +9 -9
- package/src/utils/scroll/scroll.js +11 -12
- package/src/utils/throttle/throttle.js +4 -3
- package/src/utils/throttle/throttle.test.js +1 -1
- package/src/utils/uid/uid.js +51 -77
- package/src/utils/uid/uid.test.js +3 -3
- package/wrappers/index.cjs +2 -2
- package/wrappers/index.js +2 -2
- package/dist/vetur/quasar-attributes.json +0 -1
- package/dist/vetur/quasar-tags.json +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransitionGroup, h, markRaw, ref } from 'vue'
|
|
2
2
|
|
|
3
3
|
import QAvatar from '../../components/avatar/QAvatar.js'
|
|
4
4
|
import QIcon from '../../components/icon/QIcon.js'
|
|
@@ -74,11 +74,9 @@ function addNotification(config, $q, originalApi) {
|
|
|
74
74
|
let Api
|
|
75
75
|
const notif = { textColor: 'white' }
|
|
76
76
|
|
|
77
|
-
if (config.ignoreDefaults
|
|
78
|
-
Object.assign(notif, defaults)
|
|
79
|
-
}
|
|
77
|
+
if (!config.ignoreDefaults) Object.assign(notif, defaults)
|
|
80
78
|
|
|
81
|
-
if (isObject(config)
|
|
79
|
+
if (!isObject(config)) {
|
|
82
80
|
if (notif.type) {
|
|
83
81
|
Object.assign(notif, notifTypes[notif.type])
|
|
84
82
|
}
|
|
@@ -95,39 +93,37 @@ function addNotification(config, $q, originalApi) {
|
|
|
95
93
|
if (!notif.spinner) {
|
|
96
94
|
notif.spinner = false
|
|
97
95
|
} else {
|
|
98
|
-
|
|
99
|
-
notif.spinner = QSpinner
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
notif.spinner = markRaw(notif.spinner)
|
|
96
|
+
notif.spinner = notif.spinner === true ? QSpinner : markRaw(notif.spinner)
|
|
103
97
|
}
|
|
104
98
|
|
|
105
99
|
notif.meta = {
|
|
106
|
-
hasMedia: Boolean(notif.spinner
|
|
100
|
+
hasMedia: Boolean(notif.spinner || notif.icon || notif.avatar),
|
|
107
101
|
hasText: hasContent(notif.message) || hasContent(notif.caption)
|
|
108
102
|
}
|
|
109
103
|
|
|
110
104
|
if (notif.position) {
|
|
111
|
-
if (positionList.includes(notif.position)
|
|
105
|
+
if (!positionList.includes(notif.position)) {
|
|
112
106
|
return logError('wrong position', config)
|
|
113
107
|
}
|
|
114
108
|
} else {
|
|
115
109
|
notif.position = 'bottom'
|
|
116
110
|
}
|
|
117
111
|
|
|
118
|
-
if (invalidTimeoutValues.includes(notif.timeout)
|
|
112
|
+
if (invalidTimeoutValues.includes(notif.timeout)) {
|
|
119
113
|
notif.timeout = 5000
|
|
120
114
|
} else {
|
|
121
|
-
|
|
122
|
-
|
|
115
|
+
// we catch exponential notation too
|
|
116
|
+
const t = Number.parseFloat(notif.timeout)
|
|
117
|
+
if (!Number.isFinite(t) || t < 0) {
|
|
123
118
|
return logError('wrong timeout', config)
|
|
124
119
|
}
|
|
125
|
-
|
|
120
|
+
|
|
121
|
+
notif.timeout = t
|
|
126
122
|
}
|
|
127
123
|
|
|
128
124
|
if (notif.timeout === 0) {
|
|
129
125
|
notif.progress = false
|
|
130
|
-
} else if (notif.progress
|
|
126
|
+
} else if (notif.progress) {
|
|
131
127
|
notif.meta.progressClass =
|
|
132
128
|
'q-notification__progress' +
|
|
133
129
|
(notif.progressClass ? ` ${notif.progressClass}` : '')
|
|
@@ -137,17 +133,15 @@ function addNotification(config, $q, originalApi) {
|
|
|
137
133
|
}
|
|
138
134
|
}
|
|
139
135
|
|
|
140
|
-
const actions =
|
|
141
|
-
.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
: []
|
|
150
|
-
)
|
|
136
|
+
const actions = [
|
|
137
|
+
...(Array.isArray(config.actions) ? config.actions : []),
|
|
138
|
+
...(!config.ignoreDefaults && Array.isArray(defaults.actions)
|
|
139
|
+
? defaults.actions
|
|
140
|
+
: []),
|
|
141
|
+
...(Array.isArray(notifTypes[config.type]?.actions)
|
|
142
|
+
? notifTypes[config.type].actions
|
|
143
|
+
: [])
|
|
144
|
+
]
|
|
151
145
|
|
|
152
146
|
const { closeBtn } = notif
|
|
153
147
|
if (closeBtn) {
|
|
@@ -163,7 +157,7 @@ function addNotification(config, $q, originalApi) {
|
|
|
163
157
|
typeof handler === 'function'
|
|
164
158
|
? () => {
|
|
165
159
|
handler()
|
|
166
|
-
if (noDismiss
|
|
160
|
+
if (!noDismiss) dismiss()
|
|
167
161
|
}
|
|
168
162
|
: () => {
|
|
169
163
|
dismiss()
|
|
@@ -177,22 +171,20 @@ function addNotification(config, $q, originalApi) {
|
|
|
177
171
|
Object.assign(notif.meta, {
|
|
178
172
|
class:
|
|
179
173
|
'q-notification row items-stretch' +
|
|
180
|
-
` q-notification--${notif.multiLine
|
|
174
|
+
` q-notification--${notif.multiLine ? 'multi-line' : 'standard'}` +
|
|
181
175
|
(notif.color !== void 0 ? ` bg-${notif.color}` : '') +
|
|
182
176
|
(notif.textColor !== void 0 ? ` text-${notif.textColor}` : '') +
|
|
183
177
|
(notif.classes !== void 0 ? ` ${notif.classes}` : ''),
|
|
184
178
|
|
|
185
179
|
wrapperClass:
|
|
186
180
|
'q-notification__wrapper col relative-position border-radius-inherit ' +
|
|
187
|
-
(notif.multiLine
|
|
188
|
-
? 'column no-wrap justify-center'
|
|
189
|
-
: 'row items-center'),
|
|
181
|
+
(notif.multiLine ? 'column no-wrap justify-center' : 'row items-center'),
|
|
190
182
|
|
|
191
183
|
contentClass:
|
|
192
184
|
'q-notification__content row items-center' +
|
|
193
|
-
(notif.multiLine
|
|
185
|
+
(notif.multiLine ? '' : ' col'),
|
|
194
186
|
|
|
195
|
-
leftClass: notif.meta.hasText
|
|
187
|
+
leftClass: notif.meta.hasText ? 'additional' : 'single',
|
|
196
188
|
|
|
197
189
|
attrs: {
|
|
198
190
|
role: 'alert',
|
|
@@ -206,9 +198,12 @@ function addNotification(config, $q, originalApi) {
|
|
|
206
198
|
} else {
|
|
207
199
|
if (notif.group === void 0 || notif.group === true) {
|
|
208
200
|
// do not replace notifications with different buttons
|
|
209
|
-
notif.group = [
|
|
210
|
-
|
|
211
|
-
.
|
|
201
|
+
notif.group = [
|
|
202
|
+
notif.message,
|
|
203
|
+
notif.caption,
|
|
204
|
+
notif.multiline,
|
|
205
|
+
...notif.actions.map(props => `${props.label}*${props.icon}`)
|
|
206
|
+
].join('|')
|
|
212
207
|
}
|
|
213
208
|
|
|
214
209
|
notif.meta.group = notif.group + '|' + notif.position
|
|
@@ -219,10 +214,8 @@ function addNotification(config, $q, originalApi) {
|
|
|
219
214
|
} else {
|
|
220
215
|
notif.meta.actionsClass =
|
|
221
216
|
'q-notification__actions row items-center ' +
|
|
222
|
-
(notif.multiLine
|
|
223
|
-
(notif.meta.hasMedia
|
|
224
|
-
? ' q-notification__actions--with-media'
|
|
225
|
-
: '')
|
|
217
|
+
(notif.multiLine ? 'justify-end' : 'col-auto') +
|
|
218
|
+
(notif.meta.hasMedia ? ' q-notification__actions--with-media' : '')
|
|
226
219
|
}
|
|
227
220
|
|
|
228
221
|
if (originalApi !== void 0) {
|
|
@@ -248,14 +241,14 @@ function addNotification(config, $q, originalApi) {
|
|
|
248
241
|
notif.meta.uid = uid++
|
|
249
242
|
notif.meta.badge = 1
|
|
250
243
|
|
|
251
|
-
if (['left', 'right', 'center'].
|
|
244
|
+
if (['left', 'right', 'center'].includes(notif.position)) {
|
|
252
245
|
notificationsList[notif.position].value.splice(
|
|
253
246
|
Math.floor(notificationsList[notif.position].value.length / 2),
|
|
254
247
|
0,
|
|
255
248
|
notif
|
|
256
249
|
)
|
|
257
250
|
} else {
|
|
258
|
-
const action = notif.position.
|
|
251
|
+
const action = notif.position.includes('top') ? 'unshift' : 'push'
|
|
259
252
|
notificationsList[notif.position].value[action](notif)
|
|
260
253
|
}
|
|
261
254
|
|
|
@@ -272,11 +265,11 @@ function addNotification(config, $q, originalApi) {
|
|
|
272
265
|
}
|
|
273
266
|
|
|
274
267
|
if (notif.badgePosition !== void 0) {
|
|
275
|
-
if (badgePositions.includes(notif.badgePosition)
|
|
268
|
+
if (!badgePositions.includes(notif.badgePosition)) {
|
|
276
269
|
return logError('wrong badgePosition', config)
|
|
277
270
|
}
|
|
278
271
|
} else {
|
|
279
|
-
notif.badgePosition = `top-${notif.position.
|
|
272
|
+
notif.badgePosition = `top-${notif.position.includes('left') ? 'right' : 'left'}`
|
|
280
273
|
}
|
|
281
274
|
|
|
282
275
|
notif.meta.uid = original.meta.uid
|
|
@@ -339,10 +332,12 @@ function addNotification(config, $q, originalApi) {
|
|
|
339
332
|
}
|
|
340
333
|
// otherwise we're updating it
|
|
341
334
|
else {
|
|
342
|
-
const newNotif =
|
|
335
|
+
const newNotif = {
|
|
336
|
+
...Api.config,
|
|
337
|
+
...props,
|
|
343
338
|
group: false,
|
|
344
339
|
position: notif.position
|
|
345
|
-
}
|
|
340
|
+
}
|
|
346
341
|
|
|
347
342
|
addNotification(newNotif, $q, Api)
|
|
348
343
|
}
|
|
@@ -381,7 +376,7 @@ function removeNotification(notif) {
|
|
|
381
376
|
}
|
|
382
377
|
|
|
383
378
|
function hasContent(str) {
|
|
384
|
-
return str !== void 0 && str !== null && emptyRE.test(str)
|
|
379
|
+
return str !== void 0 && str !== null && !emptyRE.test(str)
|
|
385
380
|
}
|
|
386
381
|
|
|
387
382
|
function logError(error, config) {
|
|
@@ -415,8 +410,8 @@ function getComponent() {
|
|
|
415
410
|
const meta = notif.meta
|
|
416
411
|
const mainChild = []
|
|
417
412
|
|
|
418
|
-
if (meta.hasMedia
|
|
419
|
-
if (notif.spinner
|
|
413
|
+
if (meta.hasMedia) {
|
|
414
|
+
if (notif.spinner) {
|
|
420
415
|
mainChild.push(
|
|
421
416
|
h(notif.spinner, {
|
|
422
417
|
class:
|
|
@@ -457,11 +452,11 @@ function getComponent() {
|
|
|
457
452
|
}
|
|
458
453
|
}
|
|
459
454
|
|
|
460
|
-
if (meta.hasText
|
|
455
|
+
if (meta.hasText) {
|
|
461
456
|
let msgChild
|
|
462
457
|
const msgData = { class: 'q-notification__message col' }
|
|
463
458
|
|
|
464
|
-
if (notif.html
|
|
459
|
+
if (notif.html) {
|
|
465
460
|
msgData.innerHTML = notif.caption
|
|
466
461
|
? `<div>${notif.message}</div><div class="q-notification__caption">${notif.caption}</div>`
|
|
467
462
|
: notif.message
|
|
@@ -484,7 +479,7 @@ function getComponent() {
|
|
|
484
479
|
h('div', { class: meta.contentClass }, mainChild)
|
|
485
480
|
]
|
|
486
481
|
|
|
487
|
-
if (notif.progress
|
|
482
|
+
if (notif.progress) {
|
|
488
483
|
child.push(
|
|
489
484
|
h('div', {
|
|
490
485
|
key: `${meta.uid}|p|${meta.badge}`,
|
|
@@ -494,7 +489,7 @@ function getComponent() {
|
|
|
494
489
|
)
|
|
495
490
|
}
|
|
496
491
|
|
|
497
|
-
if (notif.actions
|
|
492
|
+
if (notif.actions) {
|
|
498
493
|
child.push(
|
|
499
494
|
h(
|
|
500
495
|
'div',
|
|
@@ -542,13 +537,13 @@ function getComponent() {
|
|
|
542
537
|
|
|
543
538
|
export default {
|
|
544
539
|
setDefaults(opts) {
|
|
545
|
-
if (__QUASAR_SSR_SERVER__
|
|
546
|
-
|
|
540
|
+
if (!__QUASAR_SSR_SERVER__ && isObject(opts)) {
|
|
541
|
+
Object.assign(defaults, opts)
|
|
547
542
|
}
|
|
548
543
|
},
|
|
549
544
|
|
|
550
545
|
registerType(typeName, typeOpts) {
|
|
551
|
-
if (__QUASAR_SSR_SERVER__
|
|
546
|
+
if (!__QUASAR_SSR_SERVER__ && isObject(typeOpts)) {
|
|
552
547
|
notifTypes[typeName] = typeOpts
|
|
553
548
|
}
|
|
554
549
|
},
|
|
@@ -565,27 +560,27 @@ export default {
|
|
|
565
560
|
this.setDefaults($q.config.notify)
|
|
566
561
|
}
|
|
567
562
|
|
|
568
|
-
if (__QUASAR_SSR_SERVER__
|
|
563
|
+
if (!__QUASAR_SSR_SERVER__ && !this.__installed) {
|
|
569
564
|
positionList.forEach(pos => {
|
|
570
565
|
notificationsList[pos] = ref([])
|
|
571
566
|
|
|
572
567
|
const vert =
|
|
573
|
-
|
|
568
|
+
pos === 'left' || pos === 'center' || pos === 'right'
|
|
574
569
|
? 'center'
|
|
575
|
-
: pos.
|
|
570
|
+
: pos.includes('top')
|
|
576
571
|
? 'top'
|
|
577
572
|
: 'bottom',
|
|
578
|
-
align =
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
573
|
+
align = pos.includes('left')
|
|
574
|
+
? 'start'
|
|
575
|
+
: pos.includes('right')
|
|
576
|
+
? 'end'
|
|
577
|
+
: 'center',
|
|
578
|
+
classes =
|
|
579
|
+
pos === 'left' || pos === 'right'
|
|
580
|
+
? `items-${pos === 'left' ? 'start' : 'end'} justify-center`
|
|
581
|
+
: pos === 'center'
|
|
582
|
+
? 'flex-center'
|
|
583
|
+
: `items-${align}`
|
|
589
584
|
|
|
590
585
|
positionClass[pos] =
|
|
591
586
|
`q-notifications__list q-notifications__list--${vert} fixed column no-wrap ${classes}`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// oxlint-disable no-useless-escape
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { reactive, ref } from 'vue'
|
|
4
4
|
import { injectProp } from '../../utils/private.inject-obj-prop/inject-obj-prop.js'
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -15,9 +15,7 @@ export const isRuntimeSsrPreHydration = __QUASAR_SSR_SERVER__
|
|
|
15
15
|
? { value: true }
|
|
16
16
|
: ref(
|
|
17
17
|
__QUASAR_SSR_CLIENT__ &&
|
|
18
|
-
(__QUASAR_SSR_PWA__
|
|
19
|
-
? document.body.getAttribute('data-server-rendered') !== null
|
|
20
|
-
: true)
|
|
18
|
+
(__QUASAR_SSR_PWA__ ? 'serverRendered' in document.body.dataset : true)
|
|
21
19
|
)
|
|
22
20
|
|
|
23
21
|
let preHydrationBrowser
|
|
@@ -117,7 +115,7 @@ function getPlatform(UA) {
|
|
|
117
115
|
if (matched.browser) {
|
|
118
116
|
browser[matched.browser] = true
|
|
119
117
|
browser.version = matched.version
|
|
120
|
-
browser.versionNumber = parseInt(matched.version, 10)
|
|
118
|
+
browser.versionNumber = Number.parseInt(matched.version, 10)
|
|
121
119
|
}
|
|
122
120
|
|
|
123
121
|
if (matched.platform) {
|
|
@@ -138,7 +136,7 @@ function getPlatform(UA) {
|
|
|
138
136
|
browser['windows phone']
|
|
139
137
|
|
|
140
138
|
// These are all considered mobile platforms, meaning they run a mobile browser
|
|
141
|
-
if (knownMobiles === true || userAgent.
|
|
139
|
+
if (knownMobiles === true || userAgent.includes('mobile')) {
|
|
142
140
|
browser.mobile = true
|
|
143
141
|
}
|
|
144
142
|
// If it's not mobile we should consider it's desktop platform, meaning it runs a desktop browser
|
|
@@ -184,7 +182,7 @@ function getPlatform(UA) {
|
|
|
184
182
|
browser.safari ||
|
|
185
183
|
browser.vivaldi ||
|
|
186
184
|
// we expect unknown, non iOS mobile browsers to be webkit based
|
|
187
|
-
(browser.mobile
|
|
185
|
+
(browser.mobile && !browser.ios && !knownMobiles)
|
|
188
186
|
) {
|
|
189
187
|
browser.webkit = true
|
|
190
188
|
}
|
|
@@ -219,10 +217,10 @@ function getPlatform(UA) {
|
|
|
219
217
|
browser.name = matched.browser
|
|
220
218
|
browser.platform = matched.platform
|
|
221
219
|
|
|
222
|
-
if (__QUASAR_SSR_SERVER__
|
|
223
|
-
if (userAgent.
|
|
220
|
+
if (!__QUASAR_SSR_SERVER__) {
|
|
221
|
+
if (userAgent.includes('electron')) {
|
|
224
222
|
browser.electron = true
|
|
225
|
-
} else if (document.location.href.
|
|
223
|
+
} else if (document.location.href.includes('-extension://')) {
|
|
226
224
|
browser.bex = true
|
|
227
225
|
} else {
|
|
228
226
|
if (window.Capacitor !== void 0) {
|
|
@@ -238,7 +236,7 @@ function getPlatform(UA) {
|
|
|
238
236
|
browser.nativeMobileWrapper = 'cordova'
|
|
239
237
|
}
|
|
240
238
|
|
|
241
|
-
if (isRuntimeSsrPreHydration.value
|
|
239
|
+
if (isRuntimeSsrPreHydration.value) {
|
|
242
240
|
/*
|
|
243
241
|
* We need to remember the current state as
|
|
244
242
|
* everything that follows can only be corrected client-side,
|
|
@@ -257,13 +255,13 @@ function getPlatform(UA) {
|
|
|
257
255
|
*/
|
|
258
256
|
|
|
259
257
|
if (
|
|
260
|
-
hasTouch
|
|
261
|
-
browser.mac
|
|
262
|
-
((browser.desktop
|
|
263
|
-
(browser.nativeMobile
|
|
264
|
-
browser.android
|
|
265
|
-
browser.ios
|
|
266
|
-
browser.ipad
|
|
258
|
+
hasTouch &&
|
|
259
|
+
browser.mac &&
|
|
260
|
+
((browser.desktop && browser.safari) ||
|
|
261
|
+
(browser.nativeMobile &&
|
|
262
|
+
!browser.android &&
|
|
263
|
+
!browser.ios &&
|
|
264
|
+
!browser.ipad))
|
|
267
265
|
) {
|
|
268
266
|
/*
|
|
269
267
|
* Correction needed for iOS since the default
|
|
@@ -290,7 +288,7 @@ function getPlatform(UA) {
|
|
|
290
288
|
}
|
|
291
289
|
|
|
292
290
|
if (
|
|
293
|
-
browser.mobile
|
|
291
|
+
!browser.mobile &&
|
|
294
292
|
window.navigator.userAgentData &&
|
|
295
293
|
window.navigator.userAgentData.mobile
|
|
296
294
|
) {
|
|
@@ -344,7 +342,7 @@ const Platform = {
|
|
|
344
342
|
|
|
345
343
|
if (__QUASAR_SSR_SERVER__) {
|
|
346
344
|
$q.platform = this.parseSSR(opts.ssrContext)
|
|
347
|
-
} else if (isRuntimeSsrPreHydration.value
|
|
345
|
+
} else if (isRuntimeSsrPreHydration.value) {
|
|
348
346
|
// takeover should increase accuracy for
|
|
349
347
|
// the rest of the props; we also avoid
|
|
350
348
|
// hydration errors
|
|
@@ -399,7 +397,7 @@ if (__QUASAR_SSR_SERVER__) {
|
|
|
399
397
|
|
|
400
398
|
Object.assign(Platform, client)
|
|
401
399
|
|
|
402
|
-
if (isRuntimeSsrPreHydration.value
|
|
400
|
+
if (isRuntimeSsrPreHydration.value) {
|
|
403
401
|
// must match with server-side before
|
|
404
402
|
// client taking over in order to prevent
|
|
405
403
|
// hydration errors
|
|
@@ -2,43 +2,40 @@ import setCssVar from '../../utils/css-var/set-css-var.js'
|
|
|
2
2
|
import { noop } from '../../utils/event/event.js'
|
|
3
3
|
import { onKeyDownComposition } from '../../utils/private.keyboard/key-composition.js'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { client, isRuntimeSsrPreHydration } from '../platform/Platform.js'
|
|
6
6
|
|
|
7
7
|
function getMobilePlatform(is) {
|
|
8
|
-
if (is.ios
|
|
9
|
-
if (is.android
|
|
8
|
+
if (is.ios) return 'ios'
|
|
9
|
+
if (is.android) return 'android'
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function getBodyClasses({ is, has, within }, cfg) {
|
|
13
13
|
const cls = [
|
|
14
|
-
is.desktop
|
|
15
|
-
`${has.touch
|
|
14
|
+
is.desktop ? 'desktop' : 'mobile',
|
|
15
|
+
`${has.touch ? '' : 'no-'}touch`
|
|
16
16
|
]
|
|
17
17
|
|
|
18
|
-
if (is.mobile
|
|
18
|
+
if (is.mobile) {
|
|
19
19
|
const mobile = getMobilePlatform(is)
|
|
20
20
|
if (mobile !== void 0) cls.push('platform-' + mobile)
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
if (is.nativeMobile
|
|
23
|
+
if (is.nativeMobile) {
|
|
24
24
|
const type = is.nativeMobileWrapper
|
|
25
25
|
|
|
26
26
|
cls.push(type)
|
|
27
27
|
cls.push('native-mobile')
|
|
28
28
|
|
|
29
|
-
if (
|
|
30
|
-
is.ios === true &&
|
|
31
|
-
(cfg[type] === void 0 || cfg[type].iosStatusBarPadding !== false)
|
|
32
|
-
) {
|
|
29
|
+
if (is.ios && (cfg[type] === void 0 || cfg[type].iosStatusBarPadding)) {
|
|
33
30
|
cls.push('q-ios-padding')
|
|
34
31
|
}
|
|
35
|
-
} else if (is.electron
|
|
32
|
+
} else if (is.electron) {
|
|
36
33
|
cls.push('electron')
|
|
37
|
-
} else if (is.bex
|
|
34
|
+
} else if (is.bex) {
|
|
38
35
|
cls.push('bex')
|
|
39
36
|
}
|
|
40
37
|
|
|
41
|
-
if (within.iframe
|
|
38
|
+
if (within.iframe) cls.push('within-iframe')
|
|
42
39
|
|
|
43
40
|
return cls
|
|
44
41
|
}
|
|
@@ -47,15 +44,15 @@ function applyClientSsrCorrections() {
|
|
|
47
44
|
const { is } = client
|
|
48
45
|
const classes = document.body.className
|
|
49
46
|
|
|
50
|
-
const classList = new Set(classes.
|
|
47
|
+
const classList = new Set(classes.replaceAll(/ {2}/g, ' ').split(' '))
|
|
51
48
|
|
|
52
|
-
if (is.nativeMobile
|
|
53
|
-
if (is.desktop
|
|
49
|
+
if (!is.nativeMobile && !is.electron && !is.bex) {
|
|
50
|
+
if (is.desktop) {
|
|
54
51
|
classList.delete('mobile')
|
|
55
52
|
classList.delete('platform-ios')
|
|
56
53
|
classList.delete('platform-android')
|
|
57
54
|
classList.add('desktop')
|
|
58
|
-
} else if (is.mobile
|
|
55
|
+
} else if (is.mobile) {
|
|
59
56
|
classList.delete('desktop')
|
|
60
57
|
classList.add('mobile')
|
|
61
58
|
|
|
@@ -69,20 +66,18 @@ function applyClientSsrCorrections() {
|
|
|
69
66
|
}
|
|
70
67
|
}
|
|
71
68
|
|
|
72
|
-
if (client.has.touch
|
|
69
|
+
if (client.has.touch) {
|
|
73
70
|
classList.delete('no-touch')
|
|
74
71
|
classList.add('touch')
|
|
75
72
|
}
|
|
76
73
|
|
|
77
|
-
if (client.within.iframe
|
|
74
|
+
if (client.within.iframe) {
|
|
78
75
|
classList.add('within-iframe')
|
|
79
76
|
}
|
|
80
77
|
|
|
81
|
-
const newCls =
|
|
78
|
+
const newCls = [...classList].join(' ')
|
|
82
79
|
|
|
83
|
-
if (classes !== newCls)
|
|
84
|
-
document.body.className = newCls
|
|
85
|
-
}
|
|
80
|
+
if (classes !== newCls) document.body.className = newCls
|
|
86
81
|
}
|
|
87
82
|
|
|
88
83
|
function setColors(brand) {
|
|
@@ -115,20 +110,19 @@ export default {
|
|
|
115
110
|
return
|
|
116
111
|
}
|
|
117
112
|
|
|
118
|
-
if (this.__installed
|
|
113
|
+
if (this.__installed) return
|
|
119
114
|
|
|
120
|
-
if (isRuntimeSsrPreHydration.value
|
|
115
|
+
if (isRuntimeSsrPreHydration.value) {
|
|
121
116
|
applyClientSsrCorrections()
|
|
122
117
|
} else {
|
|
123
118
|
const { $q } = opts
|
|
124
119
|
|
|
125
120
|
if ($q.config.brand !== void 0) setColors($q.config.brand)
|
|
126
121
|
|
|
127
|
-
|
|
128
|
-
document.body.classList.add.apply(document.body.classList, cls)
|
|
122
|
+
document.body.classList.add(...getBodyClasses(client, $q.config))
|
|
129
123
|
}
|
|
130
124
|
|
|
131
|
-
if (client.is.ios
|
|
125
|
+
if (client.is.ios) {
|
|
132
126
|
// needed for iOS button active state
|
|
133
127
|
document.body.addEventListener('touchstart', noop)
|
|
134
128
|
}
|
|
@@ -10,26 +10,21 @@ function filterInvalidPath(path) {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function normalizeExitPath(path) {
|
|
13
|
-
if (path.startsWith('#')
|
|
14
|
-
if (path.startsWith('/')
|
|
15
|
-
if (path.endsWith('/')
|
|
13
|
+
if (path.startsWith('#')) path = path.slice(1)
|
|
14
|
+
if (!path.startsWith('/')) path = '/' + path
|
|
15
|
+
if (path.endsWith('/')) path = path.slice(0, -1)
|
|
16
16
|
return '#' + path
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
function getShouldExitFn(cfg) {
|
|
20
|
-
if (cfg.backButtonExit === false)
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (cfg.backButtonExit === '*') {
|
|
25
|
-
return getTrue
|
|
26
|
-
}
|
|
20
|
+
if (cfg.backButtonExit === false) return () => false
|
|
21
|
+
if (cfg.backButtonExit === '*') return getTrue
|
|
27
22
|
|
|
28
23
|
// Add default root path
|
|
29
24
|
const exitPaths = ['#/']
|
|
30
25
|
|
|
31
26
|
// Add custom exit paths
|
|
32
|
-
if (Array.isArray(cfg.backButtonExit)
|
|
27
|
+
if (Array.isArray(cfg.backButtonExit)) {
|
|
33
28
|
exitPaths.push(
|
|
34
29
|
...cfg.backButtonExit.filter(filterInvalidPath).map(normalizeExitPath)
|
|
35
30
|
)
|
|
@@ -44,13 +39,12 @@ export default {
|
|
|
44
39
|
remove: noop,
|
|
45
40
|
|
|
46
41
|
install({ $q }) {
|
|
47
|
-
if (__QUASAR_SSR_SERVER__ || this.__installed
|
|
42
|
+
if (__QUASAR_SSR_SERVER__ || this.__installed) return
|
|
48
43
|
|
|
49
44
|
const { cordova, capacitor } = client.is
|
|
45
|
+
if (!cordova && !capacitor) return
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const qConf = $q.config[cordova === true ? 'cordova' : 'capacitor']
|
|
47
|
+
const qConf = $q.config[cordova ? 'cordova' : 'capacitor']
|
|
54
48
|
|
|
55
49
|
if (qConf?.backButton === false) return
|
|
56
50
|
|
|
@@ -58,7 +52,7 @@ export default {
|
|
|
58
52
|
// then we got nothing to do
|
|
59
53
|
if (
|
|
60
54
|
// if we're on Capacitor mode
|
|
61
|
-
capacitor
|
|
55
|
+
capacitor &&
|
|
62
56
|
// and it's also not in Capacitor's main instance
|
|
63
57
|
(window.Capacitor === void 0 || window.Capacitor.Plugins.App === void 0)
|
|
64
58
|
) {
|
|
@@ -74,31 +68,29 @@ export default {
|
|
|
74
68
|
|
|
75
69
|
this.remove = entry => {
|
|
76
70
|
const index = this.__history.indexOf(entry)
|
|
77
|
-
if (index
|
|
71
|
+
if (index !== -1) {
|
|
78
72
|
this.__history.splice(index, 1)
|
|
79
73
|
}
|
|
80
74
|
}
|
|
81
75
|
|
|
82
|
-
const shouldExit = getShouldExitFn(
|
|
83
|
-
Object.assign({ backButtonExit: true }, qConf)
|
|
84
|
-
)
|
|
76
|
+
const shouldExit = getShouldExitFn({ backButtonExit: true, ...qConf })
|
|
85
77
|
|
|
86
78
|
const backHandler = () => {
|
|
87
|
-
if (this.__history.length) {
|
|
88
|
-
const entry = this.__history
|
|
79
|
+
if (this.__history.length !== 0) {
|
|
80
|
+
const entry = this.__history.at(-1)
|
|
89
81
|
|
|
90
|
-
if (entry.condition()
|
|
82
|
+
if (entry.condition()) {
|
|
91
83
|
this.__history.pop()
|
|
92
84
|
entry.handler()
|
|
93
85
|
}
|
|
94
|
-
} else if (shouldExit()
|
|
86
|
+
} else if (shouldExit()) {
|
|
95
87
|
navigator.app.exitApp()
|
|
96
88
|
} else {
|
|
97
89
|
window.history.back()
|
|
98
90
|
}
|
|
99
91
|
}
|
|
100
92
|
|
|
101
|
-
if (cordova
|
|
93
|
+
if (cordova) {
|
|
102
94
|
document.addEventListener('deviceready', () => {
|
|
103
95
|
document.addEventListener('backbutton', backHandler, false)
|
|
104
96
|
})
|