quasar 2.19.2 → 2.20.0
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 +6 -0
- package/dist/icon-set/fontawesome-v7.umd.prod.js +6 -0
- package/dist/icon-set/ionicons-v4.umd.prod.js +2 -2
- 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 +6 -0
- package/dist/icon-set/svg-ionicons-v4.umd.prod.js +2 -2
- 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 +6 -0
- package/dist/icon-set/svg-ionicons-v8.umd.prod.js +6 -0
- 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 +2 -2
- package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +2 -2
- package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +2 -2
- 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 +2615 -2603
- 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 +2610 -2598
- 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 +3 -3
- package/dist/types/{extras/icon-set.d.ts → icon-set.d.ts} +21 -16
- package/dist/types/index.d.ts +1 -1
- package/dist/types/plugin.d.ts +1 -1
- 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 +23 -23
- package/icon-set/fontawesome-v7-pro.js +128 -0
- package/icon-set/fontawesome-v7.js +128 -0
- package/icon-set/ionicons-v4.js +17 -17
- package/icon-set/svg-bootstrap-icons.js +1 -1
- package/icon-set/svg-eva-icons.js +23 -23
- package/icon-set/svg-fontawesome-v5.js +1 -1
- package/icon-set/svg-fontawesome-v7.js +197 -0
- package/icon-set/svg-ionicons-v4.js +17 -17
- package/icon-set/svg-ionicons-v5.js +1 -1
- package/icon-set/svg-ionicons-v6.js +1 -1
- package/icon-set/svg-ionicons-v7.js +224 -0
- package/icon-set/svg-ionicons-v8.js +224 -0
- 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 +9 -9
- 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 -50
- 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 +52 -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 +3 -3
- 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 +1 -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/types/extras/animations.d.ts +0 -106
- package/dist/types/extras/fonts.d.ts +0 -1
- package/dist/types/extras.d.ts +0 -3
- package/dist/vetur/quasar-attributes.json +0 -1
- package/dist/vetur/quasar-tags.json +0 -1
|
@@ -24,25 +24,18 @@ export function useTableRowSelection(props, emit, computedRows, getRowKey) {
|
|
|
24
24
|
})
|
|
25
25
|
|
|
26
26
|
const hasSelectionMode = computed(() => props.selection !== 'none')
|
|
27
|
-
|
|
28
27
|
const singleSelection = computed(() => props.selection === 'single')
|
|
29
|
-
|
|
30
28
|
const multipleSelection = computed(() => props.selection === 'multiple')
|
|
31
|
-
|
|
32
29
|
const allRowsSelected = computed(
|
|
33
30
|
() =>
|
|
34
31
|
computedRows.value.length !== 0 &&
|
|
35
|
-
computedRows.value.every(
|
|
36
|
-
row => selectedKeys.value[getRowKey.value(row)] === true
|
|
37
|
-
)
|
|
32
|
+
computedRows.value.every(row => selectedKeys.value[getRowKey.value(row)])
|
|
38
33
|
)
|
|
39
34
|
|
|
40
35
|
const someRowsSelected = computed(
|
|
41
36
|
() =>
|
|
42
|
-
allRowsSelected.value
|
|
43
|
-
computedRows.value.some(
|
|
44
|
-
row => selectedKeys.value[getRowKey.value(row)] === true
|
|
45
|
-
)
|
|
37
|
+
!allRowsSelected.value &&
|
|
38
|
+
computedRows.value.some(row => selectedKeys.value[getRowKey.value(row)])
|
|
46
39
|
)
|
|
47
40
|
|
|
48
41
|
const rowsSelectedNumber = computed(() => props.selected.length)
|
|
@@ -58,16 +51,13 @@ export function useTableRowSelection(props, emit, computedRows, getRowKey) {
|
|
|
58
51
|
function updateSelection(keys, rows, added, evt) {
|
|
59
52
|
emit('selection', { rows, added, keys, evt })
|
|
60
53
|
|
|
61
|
-
const payload =
|
|
62
|
-
|
|
63
|
-
?
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
: props.selected.filter(
|
|
69
|
-
row => keys.includes(getRowKey.value(row)) === false
|
|
70
|
-
)
|
|
54
|
+
const payload = singleSelection.value
|
|
55
|
+
? added
|
|
56
|
+
? rows
|
|
57
|
+
: []
|
|
58
|
+
: added
|
|
59
|
+
? [...props.selected, ...rows]
|
|
60
|
+
: props.selected.filter(row => !keys.includes(getRowKey.value(row)))
|
|
71
61
|
|
|
72
62
|
emit('update:selected', payload)
|
|
73
63
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { computed } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { sortDate } from '../../utils/private.sort/sort.js'
|
|
4
|
-
import {
|
|
4
|
+
import { isDate, isNumber, isObject } from '../../utils/is/is.js'
|
|
5
5
|
|
|
6
6
|
export const useTableSortProps = {
|
|
7
7
|
sortMethod: Function,
|
|
@@ -36,7 +36,7 @@ export function useTableSort(
|
|
|
36
36
|
return data
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
const dir = descending
|
|
39
|
+
const dir = descending ? -1 : 1,
|
|
40
40
|
val =
|
|
41
41
|
typeof col.field === 'function'
|
|
42
42
|
? v => col.field(v)
|
|
@@ -60,10 +60,10 @@ export function useTableSort(
|
|
|
60
60
|
// due to the above two statements
|
|
61
61
|
return col.sort(A, B, a, b) * dir
|
|
62
62
|
}
|
|
63
|
-
if (isNumber(A)
|
|
63
|
+
if (isNumber(A) && isNumber(B)) {
|
|
64
64
|
return (A - B) * dir
|
|
65
65
|
}
|
|
66
|
-
if (isDate(A)
|
|
66
|
+
if (isDate(A) && isDate(B)) {
|
|
67
67
|
return sortDate(A, B) * dir
|
|
68
68
|
}
|
|
69
69
|
if (typeof A === 'boolean' && typeof B === 'boolean') {
|
|
@@ -80,7 +80,7 @@ export function useTableSort(
|
|
|
80
80
|
function sort(col /* String(col name) or Object(col definition) */) {
|
|
81
81
|
let sortOrder = props.columnSortOrder
|
|
82
82
|
|
|
83
|
-
if (isObject(col)
|
|
83
|
+
if (isObject(col)) {
|
|
84
84
|
if (col.sortOrder) {
|
|
85
85
|
sortOrder = col.sortOrder
|
|
86
86
|
}
|
|
@@ -98,9 +98,9 @@ export function useTableSort(
|
|
|
98
98
|
if (sortBy !== col) {
|
|
99
99
|
sortBy = col
|
|
100
100
|
descending = sortOrder === 'da'
|
|
101
|
-
} else if (props.binaryStateSort
|
|
101
|
+
} else if (props.binaryStateSort) {
|
|
102
102
|
descending = !descending
|
|
103
|
-
} else if (descending
|
|
103
|
+
} else if (descending) {
|
|
104
104
|
if (sortOrder === 'ad') {
|
|
105
105
|
sortBy = null
|
|
106
106
|
} else {
|
|
@@ -3,7 +3,7 @@ import { computed, watch } from 'vue'
|
|
|
3
3
|
import useRouterLink, {
|
|
4
4
|
useRouterLinkProps
|
|
5
5
|
} from '../../composables/private.use-router-link/use-router-link.js'
|
|
6
|
-
import useTab, {
|
|
6
|
+
import useTab, { useTabEmits, useTabProps } from './use-tab.js'
|
|
7
7
|
|
|
8
8
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
9
9
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h,
|
|
3
|
-
ref,
|
|
4
2
|
computed,
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
getCurrentInstance,
|
|
4
|
+
h,
|
|
7
5
|
onActivated,
|
|
6
|
+
onBeforeUnmount,
|
|
8
7
|
onDeactivated,
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
provide,
|
|
9
|
+
ref,
|
|
10
|
+
watch
|
|
11
11
|
} from 'vue'
|
|
12
12
|
|
|
13
13
|
import QIcon from '../icon/QIcon.js'
|
|
@@ -22,9 +22,19 @@ import { tabsKey } from '../../utils/private.symbols/symbols.js'
|
|
|
22
22
|
import { rtlHasScrollBug } from '../../utils/private.rtl/rtl.js'
|
|
23
23
|
|
|
24
24
|
function getIndicatorClass(color, top, vertical) {
|
|
25
|
-
const pos = vertical
|
|
25
|
+
const pos = vertical ? ['left', 'right'] : ['top', 'bottom']
|
|
26
26
|
|
|
27
|
-
return `absolute-${top
|
|
27
|
+
return `absolute-${top ? pos[0] : pos[1]}${color ? ` text-${color}` : ''}`
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function hasQueryIncluded(targetQuery, matchingQuery) {
|
|
31
|
+
for (const key in targetQuery) {
|
|
32
|
+
if (targetQuery[key] !== matchingQuery[key]) {
|
|
33
|
+
return false
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return true
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
const alignValues = ['left', 'center', 'right', 'justify']
|
|
@@ -125,21 +135,18 @@ export default createComponent({
|
|
|
125
135
|
const val = currentModel.value
|
|
126
136
|
|
|
127
137
|
for (let i = 0; i < len; i++) {
|
|
128
|
-
if (tabDataList[i].name.value === val)
|
|
129
|
-
return true
|
|
130
|
-
}
|
|
138
|
+
if (tabDataList[i].name.value === val) return true
|
|
131
139
|
}
|
|
132
140
|
|
|
133
141
|
return false
|
|
134
142
|
})
|
|
135
143
|
|
|
136
144
|
const alignClass = computed(() => {
|
|
137
|
-
const align =
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
: props.align
|
|
145
|
+
const align = scrollable.value
|
|
146
|
+
? 'left'
|
|
147
|
+
: justify.value
|
|
148
|
+
? 'justify'
|
|
149
|
+
: props.align
|
|
143
150
|
|
|
144
151
|
return `q-tabs__content--align-${align}`
|
|
145
152
|
})
|
|
@@ -147,13 +154,13 @@ export default createComponent({
|
|
|
147
154
|
const classes = computed(
|
|
148
155
|
() =>
|
|
149
156
|
'q-tabs row no-wrap items-center' +
|
|
150
|
-
` q-tabs--${scrollable.value
|
|
151
|
-
` q-tabs--${props.vertical
|
|
152
|
-
` q-tabs__arrows--${props.outsideArrows
|
|
153
|
-
` q-tabs--mobile-with${props.mobileArrows
|
|
154
|
-
(props.dense
|
|
155
|
-
(props.shrink
|
|
156
|
-
(props.stretch
|
|
157
|
+
` q-tabs--${scrollable.value ? '' : 'not-'}scrollable` +
|
|
158
|
+
` q-tabs--${props.vertical ? 'vertical' : 'horizontal'}` +
|
|
159
|
+
` q-tabs__arrows--${props.outsideArrows ? 'outside' : 'inside'}` +
|
|
160
|
+
` q-tabs--mobile-with${props.mobileArrows ? '' : 'out'}-arrows` +
|
|
161
|
+
(props.dense ? ' q-tabs--dense' : '') +
|
|
162
|
+
(props.shrink ? ' col-shrink' : '') +
|
|
163
|
+
(props.stretch ? ' self-stretch' : '')
|
|
157
164
|
)
|
|
158
165
|
|
|
159
166
|
const innerClass = computed(
|
|
@@ -164,7 +171,7 @@ export default createComponent({
|
|
|
164
171
|
)
|
|
165
172
|
|
|
166
173
|
const domProps = computed(() =>
|
|
167
|
-
props.vertical
|
|
174
|
+
props.vertical
|
|
168
175
|
? {
|
|
169
176
|
container: 'height',
|
|
170
177
|
content: 'offsetHeight',
|
|
@@ -173,12 +180,8 @@ export default createComponent({
|
|
|
173
180
|
: { container: 'width', content: 'offsetWidth', scroll: 'scrollWidth' }
|
|
174
181
|
)
|
|
175
182
|
|
|
176
|
-
const isRTL = computed(
|
|
177
|
-
|
|
178
|
-
)
|
|
179
|
-
const rtlPosCorrection = computed(
|
|
180
|
-
() => rtlHasScrollBug === false && isRTL.value === true
|
|
181
|
-
)
|
|
183
|
+
const isRTL = computed(() => !props.vertical && $q.lang.rtl === true)
|
|
184
|
+
const rtlPosCorrection = computed(() => !rtlHasScrollBug && isRTL.value)
|
|
182
185
|
|
|
183
186
|
watch(isRTL, updateArrows)
|
|
184
187
|
|
|
@@ -194,11 +197,11 @@ export default createComponent({
|
|
|
194
197
|
function updateModel({ name, setCurrent, skipEmit }) {
|
|
195
198
|
if (currentModel.value === name) return
|
|
196
199
|
|
|
197
|
-
if (skipEmit
|
|
200
|
+
if (!skipEmit && props['onUpdate:modelValue'] !== void 0) {
|
|
198
201
|
emit('update:modelValue', name)
|
|
199
202
|
}
|
|
200
203
|
|
|
201
|
-
if (setCurrent
|
|
204
|
+
if (setCurrent || props['onUpdate:modelValue'] === void 0) {
|
|
202
205
|
animate(currentModel.value, name)
|
|
203
206
|
currentModel.value = name
|
|
204
207
|
}
|
|
@@ -235,9 +238,9 @@ export default createComponent({
|
|
|
235
238
|
scrollable.value = scroll
|
|
236
239
|
|
|
237
240
|
// Arrows need to be updated even if the scroll status was already true
|
|
238
|
-
if (scroll
|
|
241
|
+
if (scroll) registerUpdateArrowsTick(updateArrows)
|
|
239
242
|
|
|
240
|
-
justify.value = size < parseInt(props.breakpoint, 10)
|
|
243
|
+
justify.value = size < Number.parseInt(props.breakpoint, 10)
|
|
241
244
|
}
|
|
242
245
|
|
|
243
246
|
function animate(oldName, newName) {
|
|
@@ -250,7 +253,7 @@ export default createComponent({
|
|
|
250
253
|
? tabDataList.find(tab => tab.name.value === newName)
|
|
251
254
|
: null
|
|
252
255
|
|
|
253
|
-
if (hadActivated
|
|
256
|
+
if (hadActivated) {
|
|
254
257
|
// After the component has been re-activated
|
|
255
258
|
// we should not animate the transition.
|
|
256
259
|
// Consider it as if the component has just been mounted.
|
|
@@ -272,10 +275,9 @@ export default createComponent({
|
|
|
272
275
|
const oldPos = oldEl.getBoundingClientRect(),
|
|
273
276
|
newPos = newEl.getBoundingClientRect()
|
|
274
277
|
|
|
275
|
-
newEl.style.transform =
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
: `translate3d(${oldPos.left - newPos.left}px,0,0) scale3d(${newPos.width ? oldPos.width / newPos.width : 1},1,1)`
|
|
278
|
+
newEl.style.transform = props.vertical
|
|
279
|
+
? `translate3d(0,${oldPos.top - newPos.top}px,0) scale3d(1,${newPos.height ? oldPos.height / newPos.height : 1},1)`
|
|
280
|
+
: `translate3d(${oldPos.left - newPos.left}px,0,0) scale3d(${newPos.width ? oldPos.width / newPos.width : 1},1,1)`
|
|
279
281
|
|
|
280
282
|
// allow scope updates to kick in (QRouteTab needs more time)
|
|
281
283
|
registerAnimateTick(() => {
|
|
@@ -287,7 +289,7 @@ export default createComponent({
|
|
|
287
289
|
})
|
|
288
290
|
}
|
|
289
291
|
|
|
290
|
-
if (newTab && scrollable.value
|
|
292
|
+
if (newTab && scrollable.value) {
|
|
291
293
|
scrollToTabEl(newTab.rootRef.value)
|
|
292
294
|
}
|
|
293
295
|
}
|
|
@@ -297,23 +299,19 @@ export default createComponent({
|
|
|
297
299
|
contentRef.value.getBoundingClientRect(),
|
|
298
300
|
newPos = el.getBoundingClientRect()
|
|
299
301
|
|
|
300
|
-
let offset =
|
|
301
|
-
props.vertical === true ? newPos.top - top : newPos.left - left
|
|
302
|
+
let offset = props.vertical ? newPos.top - top : newPos.left - left
|
|
302
303
|
|
|
303
304
|
if (offset < 0) {
|
|
304
|
-
contentRef.value[
|
|
305
|
-
|
|
306
|
-
] += Math.floor(offset)
|
|
305
|
+
contentRef.value[props.vertical ? 'scrollTop' : 'scrollLeft'] +=
|
|
306
|
+
Math.floor(offset)
|
|
307
307
|
updateArrows()
|
|
308
308
|
return
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
offset +=
|
|
312
|
-
props.vertical === true ? newPos.height - height : newPos.width - width
|
|
311
|
+
offset += props.vertical ? newPos.height - height : newPos.width - width
|
|
313
312
|
if (offset > 0) {
|
|
314
|
-
contentRef.value[
|
|
315
|
-
|
|
316
|
-
] += Math.ceil(offset)
|
|
313
|
+
contentRef.value[props.vertical ? 'scrollTop' : 'scrollLeft'] +=
|
|
314
|
+
Math.ceil(offset)
|
|
317
315
|
updateArrows()
|
|
318
316
|
}
|
|
319
317
|
}
|
|
@@ -323,42 +321,32 @@ export default createComponent({
|
|
|
323
321
|
if (content === null) return
|
|
324
322
|
|
|
325
323
|
const rect = content.getBoundingClientRect(),
|
|
326
|
-
pos =
|
|
327
|
-
props.vertical === true
|
|
328
|
-
? content.scrollTop
|
|
329
|
-
: Math.abs(content.scrollLeft)
|
|
324
|
+
pos = props.vertical ? content.scrollTop : Math.abs(content.scrollLeft)
|
|
330
325
|
|
|
331
|
-
if (isRTL.value
|
|
326
|
+
if (isRTL.value) {
|
|
332
327
|
leftArrow.value = Math.ceil(pos + rect.width) < content.scrollWidth - 1
|
|
333
328
|
rightArrow.value = pos > 0
|
|
334
329
|
} else {
|
|
335
330
|
leftArrow.value = pos > 0
|
|
336
|
-
rightArrow.value =
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
: Math.ceil(pos + rect.width) < content.scrollWidth
|
|
331
|
+
rightArrow.value = props.vertical
|
|
332
|
+
? Math.ceil(pos + rect.height) < content.scrollHeight
|
|
333
|
+
: Math.ceil(pos + rect.width) < content.scrollWidth
|
|
340
334
|
}
|
|
341
335
|
}
|
|
342
336
|
|
|
343
337
|
function animScrollTo(value) {
|
|
344
338
|
if (scrollTimer !== null) clearInterval(scrollTimer)
|
|
345
339
|
scrollTimer = setInterval(() => {
|
|
346
|
-
if (scrollTowards(value)
|
|
347
|
-
stopAnimScroll()
|
|
348
|
-
}
|
|
340
|
+
if (scrollTowards(value)) stopAnimScroll()
|
|
349
341
|
}, 5)
|
|
350
342
|
}
|
|
351
343
|
|
|
352
344
|
function scrollToStart() {
|
|
353
|
-
animScrollTo(
|
|
354
|
-
rtlPosCorrection.value === true ? Number.MAX_SAFE_INTEGER : 0
|
|
355
|
-
)
|
|
345
|
+
animScrollTo(rtlPosCorrection.value ? Number.MAX_SAFE_INTEGER : 0)
|
|
356
346
|
}
|
|
357
347
|
|
|
358
348
|
function scrollToEnd() {
|
|
359
|
-
animScrollTo(
|
|
360
|
-
rtlPosCorrection.value === true ? 0 : Number.MAX_SAFE_INTEGER
|
|
361
|
-
)
|
|
349
|
+
animScrollTo(rtlPosCorrection.value ? 0 : Number.MAX_SAFE_INTEGER)
|
|
362
350
|
}
|
|
363
351
|
|
|
364
352
|
function stopAnimScroll() {
|
|
@@ -371,9 +359,7 @@ export default createComponent({
|
|
|
371
359
|
function onKbdNavigate(keyCode, fromEl) {
|
|
372
360
|
const tabs = Array.prototype.filter.call(
|
|
373
361
|
contentRef.value.children,
|
|
374
|
-
el =>
|
|
375
|
-
el === fromEl ||
|
|
376
|
-
(el.matches && el.matches('.q-tab.q-focusable') === true)
|
|
362
|
+
el => el === fromEl || el.matches?.('.q-tab.q-focusable')
|
|
377
363
|
)
|
|
378
364
|
|
|
379
365
|
const len = tabs.length
|
|
@@ -393,16 +379,14 @@ export default createComponent({
|
|
|
393
379
|
}
|
|
394
380
|
|
|
395
381
|
const dirPrev =
|
|
396
|
-
keyCode ===
|
|
397
|
-
(props.vertical === true ? 38 /* ArrowUp */ : 37) /* ArrowLeft */
|
|
382
|
+
keyCode === (props.vertical ? 38 /* ArrowUp */ : 37) /* ArrowLeft */
|
|
398
383
|
const dirNext =
|
|
399
|
-
keyCode ===
|
|
400
|
-
(props.vertical === true ? 40 /* ArrowDown */ : 39) /* ArrowRight */
|
|
384
|
+
keyCode === (props.vertical ? 40 /* ArrowDown */ : 39) /* ArrowRight */
|
|
401
385
|
|
|
402
|
-
const dir = dirPrev
|
|
386
|
+
const dir = dirPrev ? -1 : dirNext ? 1 : void 0
|
|
403
387
|
|
|
404
388
|
if (dir !== void 0) {
|
|
405
|
-
const rtlDir = isRTL.value
|
|
389
|
+
const rtlDir = isRTL.value ? -1 : 1
|
|
406
390
|
const index = tabs.indexOf(fromEl) + dir * rtlDir
|
|
407
391
|
|
|
408
392
|
if (index >= 0 && index < len) {
|
|
@@ -418,14 +402,14 @@ export default createComponent({
|
|
|
418
402
|
// with a computed variable by directly applying the minimal
|
|
419
403
|
// number of instructions on get/set functions
|
|
420
404
|
const posFn = computed(() =>
|
|
421
|
-
rtlPosCorrection.value
|
|
405
|
+
rtlPosCorrection.value
|
|
422
406
|
? {
|
|
423
407
|
get: content => Math.abs(content.scrollLeft),
|
|
424
408
|
set: (content, pos) => {
|
|
425
409
|
content.scrollLeft = -pos
|
|
426
410
|
}
|
|
427
411
|
}
|
|
428
|
-
: props.vertical
|
|
412
|
+
: props.vertical
|
|
429
413
|
? {
|
|
430
414
|
get: content => content.scrollTop,
|
|
431
415
|
set: (content, pos) => {
|
|
@@ -468,16 +452,6 @@ export default createComponent({
|
|
|
468
452
|
return done
|
|
469
453
|
}
|
|
470
454
|
|
|
471
|
-
function hasQueryIncluded(targetQuery, matchingQuery) {
|
|
472
|
-
for (const key in targetQuery) {
|
|
473
|
-
if (targetQuery[key] !== matchingQuery[key]) {
|
|
474
|
-
return false
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
return true
|
|
479
|
-
}
|
|
480
|
-
|
|
481
455
|
// 1. Do not use directly; use verifyRouteModel() instead
|
|
482
456
|
// 2. Should set hadActivated to false upon exit
|
|
483
457
|
function updateActiveRoute() {
|
|
@@ -497,8 +471,7 @@ export default createComponent({
|
|
|
497
471
|
const exact = tab.routeData.exact.value === true
|
|
498
472
|
|
|
499
473
|
if (
|
|
500
|
-
tab.routeData[exact
|
|
501
|
-
.value !== true
|
|
474
|
+
!tab.routeData[exact ? 'linkIsExactActive' : 'linkIsActive'].value
|
|
502
475
|
) {
|
|
503
476
|
// it cannot match anything as it's not active nor exact-active
|
|
504
477
|
continue
|
|
@@ -507,7 +480,7 @@ export default createComponent({
|
|
|
507
480
|
const { hash, query, matched, href } = tab.routeData.resolvedLink.value
|
|
508
481
|
const queryLen = Object.keys(query).length
|
|
509
482
|
|
|
510
|
-
if (exact
|
|
483
|
+
if (exact) {
|
|
511
484
|
if (hash !== currentHash) {
|
|
512
485
|
// it's set to exact but it doesn't matches the hash
|
|
513
486
|
continue
|
|
@@ -515,7 +488,7 @@ export default createComponent({
|
|
|
515
488
|
|
|
516
489
|
if (
|
|
517
490
|
queryLen !== currentQueryLen ||
|
|
518
|
-
hasQueryIncluded(currentQuery, query)
|
|
491
|
+
!hasQueryIncluded(currentQuery, query)
|
|
519
492
|
) {
|
|
520
493
|
// it's set to exact but it doesn't matches the query
|
|
521
494
|
continue
|
|
@@ -531,7 +504,7 @@ export default createComponent({
|
|
|
531
504
|
continue
|
|
532
505
|
}
|
|
533
506
|
|
|
534
|
-
if (queryLen !== 0 && hasQueryIncluded(query, currentQuery)
|
|
507
|
+
if (queryLen !== 0 && !hasQueryIncluded(query, currentQuery)) {
|
|
535
508
|
// it has query and it doesn't includes the current one
|
|
536
509
|
continue
|
|
537
510
|
}
|
|
@@ -573,7 +546,7 @@ export default createComponent({
|
|
|
573
546
|
tabDataList.some(
|
|
574
547
|
tab =>
|
|
575
548
|
tab.routeData === void 0 && tab.name.value === currentModel.value
|
|
576
|
-
)
|
|
549
|
+
)
|
|
577
550
|
) {
|
|
578
551
|
// we shouldn't interfere if non-route tab is active
|
|
579
552
|
hadActivated = false
|
|
@@ -587,7 +560,7 @@ export default createComponent({
|
|
|
587
560
|
removeFocusTimeout()
|
|
588
561
|
|
|
589
562
|
if (
|
|
590
|
-
hasFocus.value
|
|
563
|
+
!hasFocus.value &&
|
|
591
564
|
rootRef.value !== null &&
|
|
592
565
|
e.target &&
|
|
593
566
|
typeof e.target.closest === 'function'
|
|
@@ -596,9 +569,9 @@ export default createComponent({
|
|
|
596
569
|
|
|
597
570
|
// if the target is contained by a QTab/QRouteTab
|
|
598
571
|
// (it might be other elements focused, like additional QBtn)
|
|
599
|
-
if (tab && rootRef.value.contains(tab)
|
|
572
|
+
if (tab && rootRef.value.contains(tab)) {
|
|
600
573
|
hasFocus.value = true
|
|
601
|
-
if (scrollable.value
|
|
574
|
+
if (scrollable.value) scrollToTabEl(tab)
|
|
602
575
|
}
|
|
603
576
|
}
|
|
604
577
|
}
|
|
@@ -637,7 +610,7 @@ export default createComponent({
|
|
|
637
610
|
if (tabData.routeData === void 0 || proxy.$route === void 0) {
|
|
638
611
|
// we should position to the currently active tab (if any)
|
|
639
612
|
registerScrollToTabTimeout(() => {
|
|
640
|
-
if (scrollable.value
|
|
613
|
+
if (scrollable.value) {
|
|
641
614
|
const value = currentModel.value
|
|
642
615
|
const newTab =
|
|
643
616
|
value !== void 0 && value !== null && value !== ''
|
|
@@ -653,7 +626,7 @@ export default createComponent({
|
|
|
653
626
|
// start watching route
|
|
654
627
|
watchRoute()
|
|
655
628
|
|
|
656
|
-
if (tabData.routeData.hasRouterLink.value
|
|
629
|
+
if (tabData.routeData.hasRouterLink.value) {
|
|
657
630
|
verifyRouteModel()
|
|
658
631
|
}
|
|
659
632
|
}
|
|
@@ -667,7 +640,7 @@ export default createComponent({
|
|
|
667
640
|
|
|
668
641
|
if (unwatchRoute !== void 0 && tabData.routeData !== void 0) {
|
|
669
642
|
// unwatch route if we don't have any QRouteTabs left
|
|
670
|
-
if (tabDataList.every(tab => tab.routeData === void 0)
|
|
643
|
+
if (tabDataList.every(tab => tab.routeData === void 0)) {
|
|
671
644
|
unwatchRoute()
|
|
672
645
|
}
|
|
673
646
|
|
|
@@ -700,7 +673,8 @@ export default createComponent({
|
|
|
700
673
|
unwatchRoute?.()
|
|
701
674
|
}
|
|
702
675
|
|
|
703
|
-
let hadRouteWatcher,
|
|
676
|
+
let hadRouteWatcher = false,
|
|
677
|
+
hadActivated = false
|
|
704
678
|
|
|
705
679
|
onBeforeUnmount(cleanup)
|
|
706
680
|
|
|
@@ -710,7 +684,7 @@ export default createComponent({
|
|
|
710
684
|
})
|
|
711
685
|
|
|
712
686
|
onActivated(() => {
|
|
713
|
-
if (hadRouteWatcher
|
|
687
|
+
if (hadRouteWatcher) {
|
|
714
688
|
watchRoute()
|
|
715
689
|
hadActivated = true
|
|
716
690
|
verifyRouteModel()
|
|
@@ -745,10 +719,9 @@ export default createComponent({
|
|
|
745
719
|
h(QIcon, {
|
|
746
720
|
class:
|
|
747
721
|
'q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon' +
|
|
748
|
-
(leftArrow.value
|
|
722
|
+
(leftArrow.value ? '' : ' q-tabs__arrow--faded'),
|
|
749
723
|
name:
|
|
750
|
-
props.leftIcon ||
|
|
751
|
-
$q.iconSet.tabs[props.vertical === true ? 'up' : 'left'],
|
|
724
|
+
props.leftIcon || $q.iconSet.tabs[props.vertical ? 'up' : 'left'],
|
|
752
725
|
onMousedownPassive: scrollToStart,
|
|
753
726
|
onTouchstartPassive: scrollToStart,
|
|
754
727
|
onMouseupPassive: stopAnimScroll,
|
|
@@ -759,10 +732,10 @@ export default createComponent({
|
|
|
759
732
|
h(QIcon, {
|
|
760
733
|
class:
|
|
761
734
|
'q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon' +
|
|
762
|
-
(rightArrow.value
|
|
735
|
+
(rightArrow.value ? '' : ' q-tabs__arrow--faded'),
|
|
763
736
|
name:
|
|
764
737
|
props.rightIcon ||
|
|
765
|
-
$q.iconSet.tabs[props.vertical
|
|
738
|
+
$q.iconSet.tabs[props.vertical ? 'down' : 'right'],
|
|
766
739
|
onMousedownPassive: scrollToEnd,
|
|
767
740
|
onTouchstartPassive: scrollToEnd,
|
|
768
741
|
onMouseupPassive: stopAnimScroll,
|