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,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
|
+
computed,
|
|
3
|
+
getCurrentInstance,
|
|
2
4
|
h,
|
|
3
|
-
ref,
|
|
4
5
|
isRef,
|
|
5
|
-
computed,
|
|
6
|
-
watch,
|
|
7
|
-
provide,
|
|
8
6
|
onBeforeUnmount,
|
|
9
|
-
|
|
7
|
+
provide,
|
|
8
|
+
ref,
|
|
9
|
+
watch
|
|
10
10
|
} from 'vue'
|
|
11
11
|
|
|
12
12
|
import QBtn from '../btn/QBtn.js'
|
|
@@ -18,16 +18,16 @@ import useDark, {
|
|
|
18
18
|
useDarkProps
|
|
19
19
|
} from '../../composables/private.use-dark/use-dark.js'
|
|
20
20
|
import useFile, {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
useFileEmits,
|
|
22
|
+
useFileProps
|
|
23
23
|
} from '../../composables/private.use-file/use-file.js'
|
|
24
24
|
|
|
25
25
|
import { stop } from '../../utils/event/event.js'
|
|
26
26
|
import { humanStorageSize } from '../../utils/format/format.js'
|
|
27
27
|
import { uploaderKey } from '../../utils/private.symbols/symbols.js'
|
|
28
28
|
import {
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
injectMultipleProps,
|
|
30
|
+
injectProp
|
|
31
31
|
} from '../../utils/private.inject-obj-prop/inject-obj-prop.js'
|
|
32
32
|
import { vmIsDestroyed } from '../../utils/private.vm/vm.js'
|
|
33
33
|
|
|
@@ -99,9 +99,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
99
99
|
proxy.$forceUpdate()
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
const editable = computed(
|
|
103
|
-
() => props.disable !== true && props.readonly !== true
|
|
104
|
-
)
|
|
102
|
+
const editable = computed(() => !props.disable && !props.readonly)
|
|
105
103
|
const dnd = ref(false)
|
|
106
104
|
|
|
107
105
|
const rootRef = ref(null)
|
|
@@ -114,7 +112,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
114
112
|
uploadedSize: ref(0),
|
|
115
113
|
|
|
116
114
|
updateFileStatus,
|
|
117
|
-
isAlive: () => vmIsDestroyed(vm)
|
|
115
|
+
isAlive: () => !vmIsDestroyed(vm)
|
|
118
116
|
}
|
|
119
117
|
|
|
120
118
|
const {
|
|
@@ -156,10 +154,10 @@ export function getRenderer(getPlugin, expose) {
|
|
|
156
154
|
|
|
157
155
|
const canAddFiles = computed(
|
|
158
156
|
() =>
|
|
159
|
-
editable.value
|
|
160
|
-
state.isUploading.value
|
|
157
|
+
editable.value &&
|
|
158
|
+
!state.isUploading.value &&
|
|
161
159
|
// if single selection and no files are queued:
|
|
162
|
-
(props.multiple
|
|
160
|
+
(props.multiple || state.queuedFiles.value.length === 0) &&
|
|
163
161
|
// if max-files is set and current number of files does not exceeds it:
|
|
164
162
|
(props.maxFiles === void 0 ||
|
|
165
163
|
state.files.value.length < maxFilesNumber.value) &&
|
|
@@ -170,9 +168,9 @@ export function getRenderer(getPlugin, expose) {
|
|
|
170
168
|
|
|
171
169
|
const canUpload = computed(
|
|
172
170
|
() =>
|
|
173
|
-
editable.value
|
|
174
|
-
state.isBusy.value
|
|
175
|
-
state.isUploading.value
|
|
171
|
+
editable.value &&
|
|
172
|
+
!state.isBusy.value &&
|
|
173
|
+
!state.isUploading.value &&
|
|
176
174
|
state.queuedFiles.value.length !== 0
|
|
177
175
|
)
|
|
178
176
|
|
|
@@ -181,12 +179,12 @@ export function getRenderer(getPlugin, expose) {
|
|
|
181
179
|
const classes = computed(
|
|
182
180
|
() =>
|
|
183
181
|
'q-uploader column no-wrap' +
|
|
184
|
-
(isDark.value
|
|
185
|
-
(props.bordered
|
|
186
|
-
(props.square
|
|
187
|
-
(props.flat
|
|
188
|
-
(props.disable
|
|
189
|
-
(dnd.value
|
|
182
|
+
(isDark.value ? ' q-uploader--dark q-dark' : '') +
|
|
183
|
+
(props.bordered ? ' q-uploader--bordered' : '') +
|
|
184
|
+
(props.square ? ' q-uploader--square no-border-radius' : '') +
|
|
185
|
+
(props.flat ? ' q-uploader--flat no-shadow' : '') +
|
|
186
|
+
(props.disable ? ' disabled q-uploader--disable' : '') +
|
|
187
|
+
(dnd.value ? ' q-uploader--dnd' : '')
|
|
190
188
|
)
|
|
191
189
|
|
|
192
190
|
const colorClass = computed(
|
|
@@ -197,15 +195,15 @@ export function getRenderer(getPlugin, expose) {
|
|
|
197
195
|
)
|
|
198
196
|
|
|
199
197
|
watch(state.isUploading, (newVal, oldVal) => {
|
|
200
|
-
if (oldVal
|
|
198
|
+
if (!oldVal && newVal) {
|
|
201
199
|
emit('start')
|
|
202
|
-
} else if (oldVal
|
|
200
|
+
} else if (oldVal && !newVal) {
|
|
203
201
|
emit('finish')
|
|
204
202
|
}
|
|
205
203
|
})
|
|
206
204
|
|
|
207
205
|
function reset() {
|
|
208
|
-
if (props.disable
|
|
206
|
+
if (!props.disable) {
|
|
209
207
|
state.abort()
|
|
210
208
|
state.uploadedSize.value = 0
|
|
211
209
|
uploadSize.value = 0
|
|
@@ -217,7 +215,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
217
215
|
}
|
|
218
216
|
|
|
219
217
|
function removeUploadedFiles() {
|
|
220
|
-
if (props.disable
|
|
218
|
+
if (!props.disable) {
|
|
221
219
|
batchRemoveFiles(['uploaded'], () => {
|
|
222
220
|
state.uploadedFiles.value = []
|
|
223
221
|
})
|
|
@@ -232,7 +230,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
232
230
|
}
|
|
233
231
|
|
|
234
232
|
function batchRemoveFiles(statusList, cb) {
|
|
235
|
-
if (props.disable
|
|
233
|
+
if (props.disable) return
|
|
236
234
|
|
|
237
235
|
const removed = {
|
|
238
236
|
files: [],
|
|
@@ -240,9 +238,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
240
238
|
}
|
|
241
239
|
|
|
242
240
|
const localFiles = state.files.value.filter(f => {
|
|
243
|
-
if (statusList.
|
|
244
|
-
return true
|
|
245
|
-
}
|
|
241
|
+
if (!statusList.includes(f.__status)) return true
|
|
246
242
|
|
|
247
243
|
removed.size += f.size
|
|
248
244
|
removed.files.push(f)
|
|
@@ -315,28 +311,25 @@ export function getRenderer(getPlugin, expose) {
|
|
|
315
311
|
state.updateFileStatus(file, 'idle')
|
|
316
312
|
uploadSize.value += file.size
|
|
317
313
|
|
|
318
|
-
if (
|
|
319
|
-
props.noThumbnails !== true &&
|
|
320
|
-
file.type.toUpperCase().startsWith('IMAGE')
|
|
321
|
-
) {
|
|
314
|
+
if (!props.noThumbnails && file.type.toUpperCase().startsWith('IMAGE')) {
|
|
322
315
|
const img = new Image()
|
|
323
316
|
img.src = window.URL.createObjectURL(file)
|
|
324
317
|
file.__img = img
|
|
325
318
|
}
|
|
326
319
|
})
|
|
327
320
|
|
|
328
|
-
state.files.value
|
|
329
|
-
state.queuedFiles.value
|
|
321
|
+
state.files.value.push(...localFiles)
|
|
322
|
+
state.queuedFiles.value.push(...localFiles)
|
|
330
323
|
emit('added', localFiles)
|
|
331
|
-
if (props.autoUpload
|
|
324
|
+
if (props.autoUpload) state.upload()
|
|
332
325
|
}
|
|
333
326
|
|
|
334
327
|
function upload() {
|
|
335
|
-
if (canUpload.value
|
|
328
|
+
if (canUpload.value) state.upload()
|
|
336
329
|
}
|
|
337
330
|
|
|
338
331
|
function getBtn(show, icon, fn) {
|
|
339
|
-
if (show
|
|
332
|
+
if (show) {
|
|
340
333
|
const data = {
|
|
341
334
|
type: 'a',
|
|
342
335
|
key: icon,
|
|
@@ -366,7 +359,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
366
359
|
type: 'file',
|
|
367
360
|
title: '', // try to remove default tooltip
|
|
368
361
|
accept: props.accept,
|
|
369
|
-
multiple: props.multiple
|
|
362
|
+
multiple: props.multiple ? 'multiple' : void 0,
|
|
370
363
|
capture: props.capture,
|
|
371
364
|
onMousedown: stop, // need to stop refocus from QBtn
|
|
372
365
|
onClick: pickFiles,
|
|
@@ -403,7 +396,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
403
396
|
removeUploadedFiles
|
|
404
397
|
),
|
|
405
398
|
|
|
406
|
-
state.isUploading.value
|
|
399
|
+
state.isUploading.value
|
|
407
400
|
? h(QSpinner, { class: 'q-uploader__spinner' })
|
|
408
401
|
: null,
|
|
409
402
|
|
|
@@ -419,7 +412,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
419
412
|
|
|
420
413
|
getBtn(canAddFiles.value, 'add'),
|
|
421
414
|
getBtn(
|
|
422
|
-
props.hideUploadBtn
|
|
415
|
+
!props.hideUploadBtn && canUpload.value,
|
|
423
416
|
'upload',
|
|
424
417
|
state.upload
|
|
425
418
|
),
|
|
@@ -443,7 +436,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
443
436
|
key: file.__key,
|
|
444
437
|
class:
|
|
445
438
|
'q-uploader__file relative-position' +
|
|
446
|
-
(props.noThumbnails
|
|
439
|
+
(!props.noThumbnails && file.__img !== void 0
|
|
447
440
|
? ' q-uploader__file--img'
|
|
448
441
|
: '') +
|
|
449
442
|
(file.__status === 'failed'
|
|
@@ -452,7 +445,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
452
445
|
? ' q-uploader__file--uploaded'
|
|
453
446
|
: ''),
|
|
454
447
|
style:
|
|
455
|
-
props.noThumbnails
|
|
448
|
+
!props.noThumbnails && file.__img !== void 0
|
|
456
449
|
? {
|
|
457
450
|
backgroundImage: 'url("' + file.__img.src + '")',
|
|
458
451
|
backgroundSize: props.thumbnailFit
|
|
@@ -511,14 +504,14 @@ export function getRenderer(getPlugin, expose) {
|
|
|
511
504
|
}
|
|
512
505
|
|
|
513
506
|
onBeforeUnmount(() => {
|
|
514
|
-
if (state.isUploading.value
|
|
507
|
+
if (state.isUploading.value) state.abort()
|
|
515
508
|
if (state.files.value.length !== 0) revokeImgURLs()
|
|
516
509
|
})
|
|
517
510
|
|
|
518
511
|
const publicApi = {}
|
|
519
512
|
|
|
520
513
|
for (const key in state) {
|
|
521
|
-
if (isRef(state[key])
|
|
514
|
+
if (isRef(state[key])) {
|
|
522
515
|
injectProp(publicApi, key, () => state[key].value)
|
|
523
516
|
} else {
|
|
524
517
|
// method or non-computed prop
|
|
@@ -570,7 +563,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
570
563
|
getDndNode('uploader')
|
|
571
564
|
]
|
|
572
565
|
|
|
573
|
-
if (state.isBusy.value
|
|
566
|
+
if (state.isBusy.value) {
|
|
574
567
|
children.push(
|
|
575
568
|
h(
|
|
576
569
|
'div',
|
|
@@ -584,7 +577,7 @@ export function getRenderer(getPlugin, expose) {
|
|
|
584
577
|
|
|
585
578
|
const data = { ref: rootRef, class: classes.value }
|
|
586
579
|
|
|
587
|
-
if (canAddFiles.value
|
|
580
|
+
if (canAddFiles.value) {
|
|
588
581
|
Object.assign(data, { onDragover, onDragleave })
|
|
589
582
|
}
|
|
590
583
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { computed, ref } from 'vue'
|
|
2
2
|
|
|
3
3
|
function getFn(prop) {
|
|
4
4
|
return typeof prop === 'function' ? prop : () => prop
|
|
@@ -53,13 +53,11 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
53
53
|
x.abort()
|
|
54
54
|
})
|
|
55
55
|
|
|
56
|
-
if (promises.value.length !== 0)
|
|
57
|
-
abortPromises = true
|
|
58
|
-
}
|
|
56
|
+
if (promises.value.length !== 0) abortPromises = true
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
function upload() {
|
|
62
|
-
const queue = helpers.queuedFiles.value
|
|
60
|
+
const queue = [...helpers.queuedFiles.value]
|
|
63
61
|
helpers.queuedFiles.value = []
|
|
64
62
|
|
|
65
63
|
if (xhrProps.value.batch(queue)) {
|
|
@@ -95,14 +93,12 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
95
93
|
promises.value.push(res)
|
|
96
94
|
|
|
97
95
|
const failed = err => {
|
|
98
|
-
if (helpers.isAlive()
|
|
96
|
+
if (helpers.isAlive()) {
|
|
99
97
|
promises.value = promises.value.filter(p => p !== res)
|
|
100
98
|
|
|
101
|
-
if (promises.value.length === 0)
|
|
102
|
-
abortPromises = false
|
|
103
|
-
}
|
|
99
|
+
if (promises.value.length === 0) abortPromises = false
|
|
104
100
|
|
|
105
|
-
helpers.queuedFiles.value
|
|
101
|
+
helpers.queuedFiles.value.push(...files)
|
|
106
102
|
files.forEach(f => {
|
|
107
103
|
helpers.updateFileStatus(f, 'failed')
|
|
108
104
|
})
|
|
@@ -114,9 +110,9 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
114
110
|
|
|
115
111
|
res
|
|
116
112
|
.then(factory => {
|
|
117
|
-
if (abortPromises
|
|
113
|
+
if (abortPromises) {
|
|
118
114
|
failed(new Error('Aborted'))
|
|
119
|
-
} else if (helpers.isAlive()
|
|
115
|
+
} else if (helpers.isAlive()) {
|
|
120
116
|
promises.value = promises.value.filter(p => p !== res)
|
|
121
117
|
performUpload(files, factory)
|
|
122
118
|
}
|
|
@@ -160,7 +156,7 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
160
156
|
xhr.upload.addEventListener(
|
|
161
157
|
'progress',
|
|
162
158
|
e => {
|
|
163
|
-
if (aborted
|
|
159
|
+
if (aborted) return
|
|
164
160
|
|
|
165
161
|
const loaded = Math.min(maxUploadSize, e.loaded)
|
|
166
162
|
|
|
@@ -186,11 +182,11 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
186
182
|
false
|
|
187
183
|
)
|
|
188
184
|
|
|
189
|
-
xhr.
|
|
185
|
+
xhr.addEventListener('readystatechange', () => {
|
|
190
186
|
if (xhr.readyState < 4) return
|
|
191
187
|
|
|
192
188
|
if (xhr.status && xhr.status < 400) {
|
|
193
|
-
helpers.uploadedFiles.value
|
|
189
|
+
helpers.uploadedFiles.value.push(...files)
|
|
194
190
|
files.forEach(f => {
|
|
195
191
|
helpers.updateFileStatus(f, 'uploaded')
|
|
196
192
|
})
|
|
@@ -198,7 +194,7 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
198
194
|
} else {
|
|
199
195
|
aborted = true
|
|
200
196
|
helpers.uploadedSize.value -= localUploadedSize
|
|
201
|
-
helpers.queuedFiles.value
|
|
197
|
+
helpers.queuedFiles.value.push(...files)
|
|
202
198
|
files.forEach(f => {
|
|
203
199
|
helpers.updateFileStatus(f, 'failed')
|
|
204
200
|
})
|
|
@@ -207,7 +203,7 @@ function injectPlugin({ props, emit, helpers }) {
|
|
|
207
203
|
|
|
208
204
|
workingThreads.value--
|
|
209
205
|
xhrs.value = xhrs.value.filter(x => x !== xhr)
|
|
210
|
-
}
|
|
206
|
+
})
|
|
211
207
|
|
|
212
208
|
xhr.open(getProp('method', files), url)
|
|
213
209
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h,
|
|
3
|
-
ref,
|
|
4
2
|
computed,
|
|
5
|
-
|
|
3
|
+
h,
|
|
4
|
+
onActivated,
|
|
6
5
|
onBeforeMount,
|
|
7
|
-
onMounted,
|
|
8
6
|
onBeforeUnmount,
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
onDeactivated,
|
|
8
|
+
onMounted,
|
|
9
|
+
ref,
|
|
10
|
+
watch
|
|
11
11
|
} from 'vue'
|
|
12
12
|
|
|
13
13
|
import QList from '../item/QList.js'
|
|
@@ -60,7 +60,7 @@ export default createComponent({
|
|
|
60
60
|
|
|
61
61
|
const virtualScrollLength = computed(() =>
|
|
62
62
|
props.itemsSize >= 0 && props.itemsFn !== void 0
|
|
63
|
-
? parseInt(props.itemsSize, 10)
|
|
63
|
+
? Number.parseInt(props.itemsSize, 10)
|
|
64
64
|
: Array.isArray(props.items)
|
|
65
65
|
? props.items.length
|
|
66
66
|
: 0
|
|
@@ -106,9 +106,7 @@ export default createComponent({
|
|
|
106
106
|
const classes = computed(
|
|
107
107
|
() =>
|
|
108
108
|
'q-virtual-scroll q-virtual-scroll' +
|
|
109
|
-
(props.virtualScrollHorizontal
|
|
110
|
-
? '--horizontal'
|
|
111
|
-
: '--vertical') +
|
|
109
|
+
(props.virtualScrollHorizontal ? '--horizontal' : '--vertical') +
|
|
112
110
|
(props.scrollTarget !== void 0 ? '' : ' scroll')
|
|
113
111
|
)
|
|
114
112
|
|
|
@@ -166,6 +164,7 @@ export default createComponent({
|
|
|
166
164
|
)
|
|
167
165
|
|
|
168
166
|
if (slots.before !== void 0) {
|
|
167
|
+
// oxlint-disable-next-line unicorn/prefer-spread
|
|
169
168
|
child = slots.before().concat(child)
|
|
170
169
|
}
|
|
171
170
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h,
|
|
3
|
-
ref,
|
|
4
2
|
computed,
|
|
5
|
-
|
|
3
|
+
getCurrentInstance,
|
|
4
|
+
h,
|
|
5
|
+
nextTick,
|
|
6
6
|
onActivated,
|
|
7
|
-
onDeactivated,
|
|
8
7
|
onBeforeMount,
|
|
9
8
|
onBeforeUnmount,
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
onDeactivated,
|
|
10
|
+
ref,
|
|
11
|
+
watch
|
|
12
12
|
} from 'vue'
|
|
13
13
|
|
|
14
14
|
import debounce from '../../utils/debounce/debounce.js'
|
|
@@ -77,7 +77,7 @@ function getScrollDetails(
|
|
|
77
77
|
parent === window
|
|
78
78
|
? document.scrollingElement || document.documentElement
|
|
79
79
|
: parent,
|
|
80
|
-
propElSize = horizontal
|
|
80
|
+
propElSize = horizontal ? 'offsetWidth' : 'offsetHeight',
|
|
81
81
|
details = {
|
|
82
82
|
scrollStart: 0,
|
|
83
83
|
scrollViewSize: -stickyStart - stickyEnd,
|
|
@@ -86,7 +86,7 @@ function getScrollDetails(
|
|
|
86
86
|
offsetEnd: -stickyEnd
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
if (horizontal
|
|
89
|
+
if (horizontal) {
|
|
90
90
|
if (parent === window) {
|
|
91
91
|
details.scrollStart =
|
|
92
92
|
window.pageXOffset || window.scrollX || document.body.scrollLeft || 0
|
|
@@ -97,11 +97,10 @@ function getScrollDetails(
|
|
|
97
97
|
}
|
|
98
98
|
details.scrollMaxSize = parentCalc.scrollWidth
|
|
99
99
|
|
|
100
|
-
if (rtl
|
|
100
|
+
if (rtl) {
|
|
101
101
|
details.scrollStart =
|
|
102
|
-
(rtlHasScrollBug
|
|
103
|
-
|
|
104
|
-
: 0) - details.scrollStart
|
|
102
|
+
(rtlHasScrollBug ? details.scrollMaxSize - details.scrollViewSize : 0) -
|
|
103
|
+
details.scrollStart
|
|
105
104
|
}
|
|
106
105
|
} else {
|
|
107
106
|
if (parent === window) {
|
|
@@ -121,7 +120,7 @@ function getScrollDetails(
|
|
|
121
120
|
el !== null;
|
|
122
121
|
el = el.previousElementSibling
|
|
123
122
|
) {
|
|
124
|
-
if (el.classList.contains('q-virtual-scroll--skip')
|
|
123
|
+
if (!el.classList.contains('q-virtual-scroll--skip')) {
|
|
125
124
|
details.offsetStart += el[propElSize]
|
|
126
125
|
}
|
|
127
126
|
}
|
|
@@ -133,7 +132,7 @@ function getScrollDetails(
|
|
|
133
132
|
el !== null;
|
|
134
133
|
el = el.nextElementSibling
|
|
135
134
|
) {
|
|
136
|
-
if (el.classList.contains('q-virtual-scroll--skip')
|
|
135
|
+
if (!el.classList.contains('q-virtual-scroll--skip')) {
|
|
137
136
|
details.offsetEnd += el[propElSize]
|
|
138
137
|
}
|
|
139
138
|
}
|
|
@@ -143,7 +142,7 @@ function getScrollDetails(
|
|
|
143
142
|
const parentRect = parentCalc.getBoundingClientRect(),
|
|
144
143
|
childRect = child.getBoundingClientRect()
|
|
145
144
|
|
|
146
|
-
if (horizontal
|
|
145
|
+
if (horizontal) {
|
|
147
146
|
details.offsetStart += childRect.left - parentRect.left
|
|
148
147
|
details.offsetEnd -= childRect.width
|
|
149
148
|
} else {
|
|
@@ -163,15 +162,15 @@ function getScrollDetails(
|
|
|
163
162
|
function setScroll(parent, scroll, horizontal, rtl) {
|
|
164
163
|
if (scroll === 'end') {
|
|
165
164
|
scroll = (parent === window ? document.body : parent)[
|
|
166
|
-
horizontal
|
|
165
|
+
horizontal ? 'scrollWidth' : 'scrollHeight'
|
|
167
166
|
]
|
|
168
167
|
}
|
|
169
168
|
|
|
170
169
|
if (parent === window) {
|
|
171
|
-
if (horizontal
|
|
172
|
-
if (rtl
|
|
170
|
+
if (horizontal) {
|
|
171
|
+
if (rtl) {
|
|
173
172
|
scroll =
|
|
174
|
-
(rtlHasScrollBug
|
|
173
|
+
(rtlHasScrollBug
|
|
175
174
|
? document.body.scrollWidth - document.documentElement.clientWidth
|
|
176
175
|
: 0) - scroll
|
|
177
176
|
}
|
|
@@ -185,12 +184,10 @@ function setScroll(parent, scroll, horizontal, rtl) {
|
|
|
185
184
|
scroll
|
|
186
185
|
)
|
|
187
186
|
}
|
|
188
|
-
} else if (horizontal
|
|
189
|
-
if (rtl
|
|
187
|
+
} else if (horizontal) {
|
|
188
|
+
if (rtl) {
|
|
190
189
|
scroll =
|
|
191
|
-
(rtlHasScrollBug
|
|
192
|
-
? parent.scrollWidth - parent.offsetWidth
|
|
193
|
-
: 0) - scroll
|
|
190
|
+
(rtlHasScrollBug ? parent.scrollWidth - parent.offsetWidth : 0) - scroll
|
|
194
191
|
}
|
|
195
192
|
parent.scrollLeft = scroll
|
|
196
193
|
} else {
|
|
@@ -350,10 +347,10 @@ export function useVirtualScroll({
|
|
|
350
347
|
scrollDetails,
|
|
351
348
|
Math.min(
|
|
352
349
|
virtualScrollLength.value - 1,
|
|
353
|
-
Math.max(0, parseInt(toIndex, 10) || 0)
|
|
350
|
+
Math.max(0, Number.parseInt(toIndex, 10) || 0)
|
|
354
351
|
),
|
|
355
352
|
0,
|
|
356
|
-
scrollToEdges.
|
|
353
|
+
scrollToEdges.includes(edge)
|
|
357
354
|
? edge
|
|
358
355
|
: prevToIndex !== -1 && toIndex > prevToIndex
|
|
359
356
|
? 'end'
|
|
@@ -466,9 +463,8 @@ export function useVirtualScroll({
|
|
|
466
463
|
offset,
|
|
467
464
|
align
|
|
468
465
|
) {
|
|
469
|
-
const alignForce =
|
|
470
|
-
|
|
471
|
-
const alignEnd = alignForce === true ? align.replace('-force', '') : align
|
|
466
|
+
const alignForce = typeof align === 'string' && align.includes('-force')
|
|
467
|
+
const alignEnd = alignForce ? align.replace('-force', '') : align
|
|
472
468
|
const alignRange = alignEnd !== void 0 ? alignEnd : 'start'
|
|
473
469
|
|
|
474
470
|
let from = Math.max(
|
|
@@ -488,7 +484,7 @@ export function useVirtualScroll({
|
|
|
488
484
|
from !== virtualScrollSliceRange.value.from ||
|
|
489
485
|
to !== virtualScrollSliceRange.value.to
|
|
490
486
|
|
|
491
|
-
if (rangeChanged
|
|
487
|
+
if (!rangeChanged && alignEnd === void 0) {
|
|
492
488
|
emitScroll(toIndex)
|
|
493
489
|
return
|
|
494
490
|
}
|
|
@@ -496,10 +492,10 @@ export function useVirtualScroll({
|
|
|
496
492
|
const { activeElement } = document
|
|
497
493
|
const contentEl = contentRef.value
|
|
498
494
|
if (
|
|
499
|
-
rangeChanged
|
|
495
|
+
rangeChanged &&
|
|
500
496
|
contentEl !== null &&
|
|
501
497
|
contentEl !== activeElement &&
|
|
502
|
-
contentEl.contains(activeElement)
|
|
498
|
+
contentEl.contains(activeElement)
|
|
503
499
|
) {
|
|
504
500
|
contentEl.addEventListener('focusout', onBlurRefocusFn)
|
|
505
501
|
|
|
@@ -515,7 +511,7 @@ export function useVirtualScroll({
|
|
|
515
511
|
? virtualScrollSizes.slice(from, toIndex).reduce(sumFn, 0)
|
|
516
512
|
: 0
|
|
517
513
|
|
|
518
|
-
if (rangeChanged
|
|
514
|
+
if (rangeChanged) {
|
|
519
515
|
// vue key matching algorithm works only if
|
|
520
516
|
// the array of VNodes changes on only one of the ends
|
|
521
517
|
// so we first change one end and then the other
|
|
@@ -564,7 +560,7 @@ export function useVirtualScroll({
|
|
|
564
560
|
// (another call to setVirtualScrollSliceRange before animation frame)
|
|
565
561
|
if (prevScrollStart !== scrollDetails.scrollStart) return
|
|
566
562
|
|
|
567
|
-
if (rangeChanged
|
|
563
|
+
if (rangeChanged) {
|
|
568
564
|
updateVirtualScrollSizes(from)
|
|
569
565
|
}
|
|
570
566
|
|
|
@@ -584,7 +580,7 @@ export function useVirtualScroll({
|
|
|
584
580
|
const scrollStart = scrollDetails.scrollStart + sizeDiff
|
|
585
581
|
|
|
586
582
|
scrollPosition =
|
|
587
|
-
alignForce
|
|
583
|
+
!alignForce &&
|
|
588
584
|
scrollStart < posStart &&
|
|
589
585
|
posEnd < scrollStart + scrollDetails.scrollViewSize
|
|
590
586
|
? scrollStart
|
|
@@ -619,15 +615,12 @@ export function useVirtualScroll({
|
|
|
619
615
|
if (contentEl) {
|
|
620
616
|
const children = filterProto.call(
|
|
621
617
|
contentEl.children,
|
|
622
|
-
el =>
|
|
623
|
-
el.classList &&
|
|
624
|
-
el.classList.contains('q-virtual-scroll--skip') === false
|
|
618
|
+
el => el.classList && !el.classList.contains('q-virtual-scroll--skip')
|
|
625
619
|
),
|
|
626
620
|
childrenLength = children.length,
|
|
627
|
-
sizeFn =
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
: el => el.offsetHeight
|
|
621
|
+
sizeFn = props.virtualScrollHorizontal
|
|
622
|
+
? el => el.getBoundingClientRect().width
|
|
623
|
+
: el => el.offsetHeight
|
|
631
624
|
|
|
632
625
|
let index = from,
|
|
633
626
|
size,
|
|
@@ -639,7 +632,7 @@ export function useVirtualScroll({
|
|
|
639
632
|
|
|
640
633
|
while (
|
|
641
634
|
i < childrenLength &&
|
|
642
|
-
children[i].classList.contains('q-virtual-scroll--with-prev')
|
|
635
|
+
children[i].classList.contains('q-virtual-scroll--with-prev')
|
|
643
636
|
) {
|
|
644
637
|
size += sizeFn(children[i])
|
|
645
638
|
i++
|
|
@@ -664,7 +657,7 @@ export function useVirtualScroll({
|
|
|
664
657
|
function localResetVirtualScroll(toIndex, fullReset) {
|
|
665
658
|
const defaultSize = Number(virtualScrollItemSizeComputed.value)
|
|
666
659
|
|
|
667
|
-
if (fullReset
|
|
660
|
+
if (fullReset || !Array.isArray(virtualScrollSizes)) {
|
|
668
661
|
virtualScrollSizes = []
|
|
669
662
|
}
|
|
670
663
|
|
|
@@ -738,9 +731,9 @@ export function useVirtualScroll({
|
|
|
738
731
|
localScrollViewSize = scrollViewSize
|
|
739
732
|
|
|
740
733
|
const virtualScrollSliceRatioBefore =
|
|
741
|
-
parseFloat(props.virtualScrollSliceRatioBefore) || 0
|
|
734
|
+
Number.parseFloat(props.virtualScrollSliceRatioBefore) || 0
|
|
742
735
|
const virtualScrollSliceRatioAfter =
|
|
743
|
-
parseFloat(props.virtualScrollSliceRatioAfter) || 0
|
|
736
|
+
Number.parseFloat(props.virtualScrollSliceRatioAfter) || 0
|
|
744
737
|
const multiplier =
|
|
745
738
|
1 + virtualScrollSliceRatioBefore + virtualScrollSliceRatioAfter
|
|
746
739
|
const view =
|
|
@@ -767,8 +760,7 @@ export function useVirtualScroll({
|
|
|
767
760
|
}
|
|
768
761
|
|
|
769
762
|
function padVirtualScroll(tag, content) {
|
|
770
|
-
const paddingSize =
|
|
771
|
-
props.virtualScrollHorizontal === true ? 'width' : 'height'
|
|
763
|
+
const paddingSize = props.virtualScrollHorizontal ? 'width' : 'height'
|
|
772
764
|
const style = {
|
|
773
765
|
['--q-virtual-scroll-item-' + paddingSize]:
|
|
774
766
|
virtualScrollItemSizeComputed.value + 'px'
|
|
@@ -867,7 +859,7 @@ export function useVirtualScroll({
|
|
|
867
859
|
setVirtualScrollSize()
|
|
868
860
|
const onVirtualScrollEvt = debounce(
|
|
869
861
|
localOnVirtualScrollEvt,
|
|
870
|
-
$q.platform.is.ios
|
|
862
|
+
$q.platform.is.ios ? 120 : 35
|
|
871
863
|
)
|
|
872
864
|
|
|
873
865
|
onBeforeMount(() => {
|
|
@@ -881,7 +873,7 @@ export function useVirtualScroll({
|
|
|
881
873
|
})
|
|
882
874
|
|
|
883
875
|
onActivated(() => {
|
|
884
|
-
if (shouldActivate
|
|
876
|
+
if (!shouldActivate) return
|
|
885
877
|
|
|
886
878
|
const scrollEl = getVirtualScrollTarget()
|
|
887
879
|
|