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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Transition, computed, getCurrentInstance, h } from 'vue'
|
|
2
2
|
|
|
3
3
|
import QSpinner from '../spinner/QSpinner.js'
|
|
4
4
|
|
|
@@ -39,7 +39,7 @@ export default createComponent({
|
|
|
39
39
|
const classes = computed(
|
|
40
40
|
() =>
|
|
41
41
|
'q-inner-loading q--avoid-card-border absolute-full column flex-center' +
|
|
42
|
-
(isDark.value
|
|
42
|
+
(isDark.value ? ' q-inner-loading--dark' : '')
|
|
43
43
|
)
|
|
44
44
|
|
|
45
45
|
const labelClass = computed(
|
|
@@ -73,7 +73,7 @@ export default createComponent({
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
function getContent() {
|
|
76
|
-
return props.showing
|
|
76
|
+
return props.showing
|
|
77
77
|
? h(
|
|
78
78
|
'div',
|
|
79
79
|
{ class: classes.value, style: transitionStyle.value },
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
|
-
h,
|
|
3
|
-
ref,
|
|
4
2
|
computed,
|
|
5
|
-
|
|
3
|
+
getCurrentInstance,
|
|
4
|
+
h,
|
|
5
|
+
nextTick,
|
|
6
6
|
onBeforeUnmount,
|
|
7
7
|
onMounted,
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
ref,
|
|
9
|
+
watch
|
|
10
10
|
} from 'vue'
|
|
11
11
|
|
|
12
12
|
import useField, {
|
|
13
|
-
|
|
14
|
-
useFieldProps,
|
|
13
|
+
fieldValueIsFilled,
|
|
15
14
|
useFieldEmits,
|
|
16
|
-
|
|
15
|
+
useFieldProps,
|
|
16
|
+
useFieldState
|
|
17
17
|
} from '../../composables/private.use-field/use-field.js'
|
|
18
18
|
import useMask, { useMaskProps } from './use-mask.js'
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
useFormInputNameAttr,
|
|
21
|
+
useFormProps
|
|
22
22
|
} from '../../composables/use-form/private.use-form.js'
|
|
23
23
|
import useFileFormDomProps from '../../composables/private.use-file/use-file-dom-props.js'
|
|
24
24
|
import useKeyComposition from '../../composables/private.use-key-composition/use-key-composition.js'
|
|
@@ -72,9 +72,9 @@ export default createComponent({
|
|
|
72
72
|
const { $q } = proxy
|
|
73
73
|
|
|
74
74
|
const temp = {}
|
|
75
|
-
let emitCachedValue = NaN,
|
|
76
|
-
typedNumber,
|
|
77
|
-
stopValueWatcher,
|
|
75
|
+
let emitCachedValue = Number.NaN,
|
|
76
|
+
typedNumber = false,
|
|
77
|
+
stopValueWatcher = false,
|
|
78
78
|
emitTimer = null,
|
|
79
79
|
emitValueFn
|
|
80
80
|
|
|
@@ -98,12 +98,12 @@ export default createComponent({
|
|
|
98
98
|
const state = useFieldState({ changeEvent: true })
|
|
99
99
|
|
|
100
100
|
const isTextarea = computed(
|
|
101
|
-
() => props.type === 'textarea' || props.autogrow
|
|
101
|
+
() => props.type === 'textarea' || props.autogrow
|
|
102
102
|
)
|
|
103
103
|
|
|
104
104
|
const isTypeText = computed(
|
|
105
105
|
() =>
|
|
106
|
-
isTextarea.value
|
|
106
|
+
isTextarea.value ||
|
|
107
107
|
['text', 'search', 'url', 'tel', 'password'].includes(props.type)
|
|
108
108
|
)
|
|
109
109
|
|
|
@@ -126,13 +126,13 @@ export default createComponent({
|
|
|
126
126
|
evt.onCompositionend =
|
|
127
127
|
onComposition
|
|
128
128
|
|
|
129
|
-
if (hasMask.value
|
|
129
|
+
if (hasMask.value) {
|
|
130
130
|
evt.onKeydown = onMaskedKeydown
|
|
131
131
|
// reset selection anchor on pointer selection
|
|
132
132
|
evt.onClick = onMaskedClick
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
if (props.autogrow
|
|
135
|
+
if (props.autogrow) {
|
|
136
136
|
evt.onAnimationend = onAnimationend
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -142,22 +142,22 @@ export default createComponent({
|
|
|
142
142
|
const inputAttrs = computed(() => {
|
|
143
143
|
const acc = {
|
|
144
144
|
tabindex: 0,
|
|
145
|
-
'data-autofocus': props.autofocus
|
|
145
|
+
'data-autofocus': props.autofocus || void 0,
|
|
146
146
|
rows: props.type === 'textarea' ? 6 : void 0,
|
|
147
147
|
'aria-label': props.label,
|
|
148
148
|
name: nameProp.value,
|
|
149
149
|
...state.splitAttrs.attributes.value,
|
|
150
150
|
id: state.targetUid.value,
|
|
151
151
|
maxlength: props.maxlength,
|
|
152
|
-
disabled: props.disable
|
|
153
|
-
readonly: props.readonly
|
|
152
|
+
disabled: props.disable,
|
|
153
|
+
readonly: props.readonly
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
if (isTextarea.value
|
|
156
|
+
if (!isTextarea.value) {
|
|
157
157
|
acc.type = props.type
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
if (props.autogrow
|
|
160
|
+
if (props.autogrow) {
|
|
161
161
|
acc.rows = 1
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -179,8 +179,8 @@ export default createComponent({
|
|
|
179
179
|
watch(
|
|
180
180
|
() => props.modelValue,
|
|
181
181
|
v => {
|
|
182
|
-
if (hasMask.value
|
|
183
|
-
if (stopValueWatcher
|
|
182
|
+
if (hasMask.value) {
|
|
183
|
+
if (stopValueWatcher) {
|
|
184
184
|
stopValueWatcher = false
|
|
185
185
|
if (String(v) === emitCachedValue) return
|
|
186
186
|
}
|
|
@@ -189,11 +189,8 @@ export default createComponent({
|
|
|
189
189
|
} else if (innerValue.value !== v) {
|
|
190
190
|
innerValue.value = v
|
|
191
191
|
|
|
192
|
-
if (
|
|
193
|
-
|
|
194
|
-
temp.hasOwnProperty('value') === true
|
|
195
|
-
) {
|
|
196
|
-
if (typedNumber === true) {
|
|
192
|
+
if (props.type === 'number' && Object.hasOwn(temp, 'value')) {
|
|
193
|
+
if (typedNumber) {
|
|
197
194
|
typedNumber = false
|
|
198
195
|
} else {
|
|
199
196
|
delete temp.value
|
|
@@ -202,7 +199,7 @@ export default createComponent({
|
|
|
202
199
|
}
|
|
203
200
|
|
|
204
201
|
// textarea only
|
|
205
|
-
if (props.autogrow
|
|
202
|
+
if (props.autogrow) nextTick(adjustHeight)
|
|
206
203
|
}
|
|
207
204
|
)
|
|
208
205
|
|
|
@@ -210,7 +207,7 @@ export default createComponent({
|
|
|
210
207
|
() => props.autogrow,
|
|
211
208
|
val => {
|
|
212
209
|
// textarea only
|
|
213
|
-
if (val
|
|
210
|
+
if (val) {
|
|
214
211
|
nextTick(adjustHeight)
|
|
215
212
|
}
|
|
216
213
|
// if it has a number of rows set respect it
|
|
@@ -223,7 +220,7 @@ export default createComponent({
|
|
|
223
220
|
watch(
|
|
224
221
|
() => props.dense,
|
|
225
222
|
() => {
|
|
226
|
-
if (props.autogrow
|
|
223
|
+
if (props.autogrow) nextTick(adjustHeight)
|
|
227
224
|
}
|
|
228
225
|
)
|
|
229
226
|
|
|
@@ -245,7 +242,7 @@ export default createComponent({
|
|
|
245
242
|
}
|
|
246
243
|
|
|
247
244
|
function onPaste(e) {
|
|
248
|
-
if (hasMask.value
|
|
245
|
+
if (hasMask.value && props.reverseFillMask !== true) {
|
|
249
246
|
const inp = e.target
|
|
250
247
|
moveCursorForPaste(inp, inp.selectionStart, inp.selectionEnd)
|
|
251
248
|
}
|
|
@@ -263,17 +260,17 @@ export default createComponent({
|
|
|
263
260
|
|
|
264
261
|
const val = e.target.value
|
|
265
262
|
|
|
266
|
-
if (e.target.qComposing
|
|
263
|
+
if (e.target.qComposing) {
|
|
267
264
|
temp.value = val
|
|
268
265
|
return
|
|
269
266
|
}
|
|
270
267
|
|
|
271
|
-
if (hasMask.value
|
|
268
|
+
if (hasMask.value) {
|
|
272
269
|
updateMaskValue(val, false, e.inputType)
|
|
273
270
|
} else {
|
|
274
271
|
emitValue(val)
|
|
275
272
|
|
|
276
|
-
if (isTypeText.value
|
|
273
|
+
if (isTypeText.value && e.target === document.activeElement) {
|
|
277
274
|
const { selectionStart, selectionEnd } = e.target
|
|
278
275
|
|
|
279
276
|
if (selectionStart !== void 0 && selectionEnd !== void 0) {
|
|
@@ -291,7 +288,7 @@ export default createComponent({
|
|
|
291
288
|
|
|
292
289
|
// we need to trigger it immediately too,
|
|
293
290
|
// to avoid "flickering"
|
|
294
|
-
if (props.autogrow
|
|
291
|
+
if (props.autogrow) adjustHeight()
|
|
295
292
|
}
|
|
296
293
|
|
|
297
294
|
function onAnimationend(e) {
|
|
@@ -303,7 +300,7 @@ export default createComponent({
|
|
|
303
300
|
emitValueFn = () => {
|
|
304
301
|
emitTimer = null
|
|
305
302
|
|
|
306
|
-
if (props.type !== 'number' &&
|
|
303
|
+
if (props.type !== 'number' && Object.hasOwn(temp, 'value')) {
|
|
307
304
|
delete temp.value
|
|
308
305
|
}
|
|
309
306
|
|
|
@@ -314,7 +311,7 @@ export default createComponent({
|
|
|
314
311
|
emit('update:modelValue', val)
|
|
315
312
|
|
|
316
313
|
nextTick(() => {
|
|
317
|
-
if (emitCachedValue === val) emitCachedValue = NaN
|
|
314
|
+
if (emitCachedValue === val) emitCachedValue = Number.NaN
|
|
318
315
|
})
|
|
319
316
|
}
|
|
320
317
|
|
|
@@ -344,8 +341,9 @@ export default createComponent({
|
|
|
344
341
|
// chrome does not keep scroll #15498
|
|
345
342
|
const { scrollTop } = inp
|
|
346
343
|
// chrome calculates a smaller scrollHeight when in a .column container
|
|
347
|
-
const { overflowY, maxHeight } =
|
|
348
|
-
|
|
344
|
+
const { overflowY, maxHeight } = $q.platform.is.firefox
|
|
345
|
+
? {}
|
|
346
|
+
: window.getComputedStyle(inp)
|
|
349
347
|
// on firefox or if overflowY is specified as scroll #14263, #14344
|
|
350
348
|
// we don't touch overflow
|
|
351
349
|
// firefox is not so bad in the end
|
|
@@ -353,16 +351,18 @@ export default createComponent({
|
|
|
353
351
|
|
|
354
352
|
// reset height of textarea to a small size to detect the real height
|
|
355
353
|
// but keep the total control size the same
|
|
356
|
-
if (changeOverflow
|
|
354
|
+
if (changeOverflow) inp.style.overflowY = 'hidden'
|
|
357
355
|
parentStyle.marginBottom = inp.scrollHeight - 1 + 'px'
|
|
358
356
|
inp.style.height = '1px'
|
|
359
357
|
|
|
360
358
|
inp.style.height = inp.scrollHeight + 'px'
|
|
361
359
|
// we should allow scrollbars only
|
|
362
360
|
// if there is maxHeight and content is taller than maxHeight
|
|
363
|
-
if (changeOverflow
|
|
361
|
+
if (changeOverflow) {
|
|
364
362
|
inp.style.overflowY =
|
|
365
|
-
parseInt(maxHeight, 10) < inp.scrollHeight
|
|
363
|
+
Number.parseInt(maxHeight, 10) < inp.scrollHeight
|
|
364
|
+
? 'auto'
|
|
365
|
+
: 'hidden'
|
|
366
366
|
}
|
|
367
367
|
parentStyle.marginBottom = ''
|
|
368
368
|
inp.scrollTop = scrollTop
|
|
@@ -410,7 +410,7 @@ export default createComponent({
|
|
|
410
410
|
}
|
|
411
411
|
|
|
412
412
|
function getCurValue() {
|
|
413
|
-
return
|
|
413
|
+
return Object.hasOwn(temp, 'value')
|
|
414
414
|
? temp.value
|
|
415
415
|
: innerValue.value !== void 0
|
|
416
416
|
? innerValue.value
|
|
@@ -423,7 +423,7 @@ export default createComponent({
|
|
|
423
423
|
|
|
424
424
|
onMounted(() => {
|
|
425
425
|
// textarea only
|
|
426
|
-
if (props.autogrow
|
|
426
|
+
if (props.autogrow) adjustHeight()
|
|
427
427
|
})
|
|
428
428
|
|
|
429
429
|
Object.assign(state, {
|
|
@@ -431,8 +431,8 @@ export default createComponent({
|
|
|
431
431
|
|
|
432
432
|
fieldClass: computed(
|
|
433
433
|
() =>
|
|
434
|
-
`q-${isTextarea.value
|
|
435
|
-
(props.autogrow
|
|
434
|
+
`q-${isTextarea.value ? 'textarea' : 'input'}` +
|
|
435
|
+
(props.autogrow ? ' q-textarea--autogrow' : '')
|
|
436
436
|
),
|
|
437
437
|
|
|
438
438
|
hasShadow: computed(
|
|
@@ -450,13 +450,13 @@ export default createComponent({
|
|
|
450
450
|
|
|
451
451
|
floatingLabel: computed(
|
|
452
452
|
() =>
|
|
453
|
-
(hasValue.value
|
|
454
|
-
(props.type !== 'number' ||
|
|
453
|
+
(hasValue.value &&
|
|
454
|
+
(props.type !== 'number' || Number.isFinite(innerValue.value))) ||
|
|
455
455
|
fieldValueIsFilled(props.displayValue)
|
|
456
456
|
),
|
|
457
457
|
|
|
458
458
|
getControl: () =>
|
|
459
|
-
h(isTextarea.value
|
|
459
|
+
h(isTextarea.value ? 'textarea' : 'input', {
|
|
460
460
|
ref: inputRef,
|
|
461
461
|
class: ['q-field__native q-placeholder', props.inputClass],
|
|
462
462
|
style: props.inputStyle,
|
|
@@ -473,7 +473,7 @@ export default createComponent({
|
|
|
473
473
|
{
|
|
474
474
|
class:
|
|
475
475
|
'q-field__native q-field__shadow absolute-bottom no-pointer-events' +
|
|
476
|
-
(isTextarea.value
|
|
476
|
+
(isTextarea.value ? '' : ' text-no-wrap')
|
|
477
477
|
},
|
|
478
478
|
[
|
|
479
479
|
h('span', { class: 'invisible' }, getCurValue()),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { computed, nextTick, ref, watch } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { shouldIgnoreKey } from '../../utils/private.keyboard/key-composition.js'
|
|
4
4
|
|
|
@@ -59,6 +59,7 @@ function getTokenMap(tokens) {
|
|
|
59
59
|
|
|
60
60
|
function getTokenRegexMask(keys) {
|
|
61
61
|
return new RegExp(
|
|
62
|
+
// oxlint-disable-next-line no-template-curly-in-string
|
|
62
63
|
'\\\\([^.*+?^${}()|([\\]])|([.*+?^${}()|[\\]])|([' +
|
|
63
64
|
keys.join('') +
|
|
64
65
|
'])|(.)',
|
|
@@ -68,7 +69,7 @@ function getTokenRegexMask(keys) {
|
|
|
68
69
|
|
|
69
70
|
const escRegex = /[.*+?^${}()|[\]\\]/g
|
|
70
71
|
const DEFAULT_TOKEN_REGEX_MASK = getTokenRegexMask(DEFAULT_TOKEN_MAP_KEYS)
|
|
71
|
-
const MARKER = String.
|
|
72
|
+
const MARKER = String.fromCodePoint(1)
|
|
72
73
|
|
|
73
74
|
export const useMaskProps = {
|
|
74
75
|
mask: String,
|
|
@@ -111,7 +112,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
111
112
|
|
|
112
113
|
function getIsTypeText() {
|
|
113
114
|
return (
|
|
114
|
-
props.autogrow
|
|
115
|
+
props.autogrow ||
|
|
115
116
|
['textarea', 'text', 'search', 'url', 'tel', 'password'].includes(
|
|
116
117
|
props.type
|
|
117
118
|
)
|
|
@@ -136,21 +137,21 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
136
137
|
watch(
|
|
137
138
|
() => props.fillMask + props.reverseFillMask,
|
|
138
139
|
() => {
|
|
139
|
-
if (hasMask.value
|
|
140
|
+
if (hasMask.value) updateMaskValue(innerValue.value, true)
|
|
140
141
|
}
|
|
141
142
|
)
|
|
142
143
|
|
|
143
144
|
watch(
|
|
144
145
|
() => props.unmaskedValue,
|
|
145
146
|
() => {
|
|
146
|
-
if (hasMask.value
|
|
147
|
+
if (hasMask.value) updateMaskValue(innerValue.value)
|
|
147
148
|
}
|
|
148
149
|
)
|
|
149
150
|
|
|
150
151
|
function getInitialMaskedValue() {
|
|
151
152
|
updateMaskInternals()
|
|
152
153
|
|
|
153
|
-
if (hasMask.value
|
|
154
|
+
if (hasMask.value) {
|
|
154
155
|
const masked = maskValue(unmaskValue(props.modelValue))
|
|
155
156
|
|
|
156
157
|
return props.fillMask !== false ? fillWithMask(masked) : masked
|
|
@@ -184,7 +185,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
184
185
|
hasMask.value =
|
|
185
186
|
props.mask !== void 0 && props.mask.length !== 0 && getIsTypeText()
|
|
186
187
|
|
|
187
|
-
if (hasMask.value
|
|
188
|
+
if (!hasMask.value) {
|
|
188
189
|
computedUnmask = void 0
|
|
189
190
|
maskMarked = ''
|
|
190
191
|
maskReplaced = ''
|
|
@@ -199,12 +200,12 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
199
200
|
typeof props.fillMask === 'string' && props.fillMask.length !== 0
|
|
200
201
|
? props.fillMask.slice(0, 1)
|
|
201
202
|
: '_',
|
|
202
|
-
fillCharEscaped = fillChar.replace(escRegex,
|
|
203
|
+
fillCharEscaped = fillChar.replace(escRegex, String.raw`\$&`),
|
|
203
204
|
unmask = [],
|
|
204
205
|
extract = [],
|
|
205
206
|
mask = []
|
|
206
207
|
|
|
207
|
-
let firstMatch = props.reverseFillMask
|
|
208
|
+
let firstMatch = props.reverseFillMask,
|
|
208
209
|
unmaskChar = '',
|
|
209
210
|
negateChar = ''
|
|
210
211
|
|
|
@@ -215,7 +216,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
215
216
|
const c = tokens.value.tokenMap[token]
|
|
216
217
|
mask.push(c)
|
|
217
218
|
negateChar = c.negate
|
|
218
|
-
if (firstMatch
|
|
219
|
+
if (firstMatch) {
|
|
219
220
|
extract.push(
|
|
220
221
|
'(?:' +
|
|
221
222
|
negateChar +
|
|
@@ -230,16 +231,22 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
230
231
|
firstMatch = false
|
|
231
232
|
}
|
|
232
233
|
extract.push('(?:' + negateChar + '+)?(' + c.pattern + ')?')
|
|
233
|
-
|
|
234
|
+
return
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (esc !== void 0) {
|
|
234
238
|
unmaskChar = '\\' + (esc === '\\' ? '' : esc)
|
|
235
239
|
mask.push(esc)
|
|
236
|
-
unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')
|
|
237
240
|
} else {
|
|
238
241
|
const c = char1 !== void 0 ? char1 : char2
|
|
239
|
-
unmaskChar =
|
|
242
|
+
unmaskChar =
|
|
243
|
+
c === '\\'
|
|
244
|
+
? String.raw`\\\\`
|
|
245
|
+
: c.replace(escRegex, String.raw`\\$&`)
|
|
240
246
|
mask.push(c)
|
|
241
|
-
unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')
|
|
242
247
|
}
|
|
248
|
+
|
|
249
|
+
unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')
|
|
243
250
|
}
|
|
244
251
|
)
|
|
245
252
|
|
|
@@ -254,7 +261,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
254
261
|
),
|
|
255
262
|
extractLast = extract.length - 1,
|
|
256
263
|
extractMatcher = extract.map((re, index) => {
|
|
257
|
-
if (index === 0 && props.reverseFillMask
|
|
264
|
+
if (index === 0 && props.reverseFillMask) {
|
|
258
265
|
return new RegExp('^' + fillCharEscaped + '*' + re)
|
|
259
266
|
} else if (index === extractLast) {
|
|
260
267
|
return new RegExp(
|
|
@@ -263,7 +270,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
263
270
|
'(' +
|
|
264
271
|
(negateChar === '' ? '.' : negateChar) +
|
|
265
272
|
'+)?' +
|
|
266
|
-
(props.reverseFillMask
|
|
273
|
+
(props.reverseFillMask ? '$' : fillCharEscaped + '*')
|
|
267
274
|
)
|
|
268
275
|
}
|
|
269
276
|
|
|
@@ -273,7 +280,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
273
280
|
computedMask = mask
|
|
274
281
|
computedUnmask = val => {
|
|
275
282
|
const unmaskMatch = unmaskMatcher.exec(
|
|
276
|
-
props.reverseFillMask
|
|
283
|
+
props.reverseFillMask ? val : val.slice(0, mask.length + 1)
|
|
277
284
|
)
|
|
278
285
|
if (unmaskMatch !== null) {
|
|
279
286
|
val = unmaskMatch.slice(1).join('')
|
|
@@ -318,18 +325,17 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
318
325
|
// We want to avoid "flickering" so we set value immediately
|
|
319
326
|
if (inp.value !== masked) inp.value = masked
|
|
320
327
|
|
|
321
|
-
if (changed
|
|
328
|
+
if (changed) innerValue.value = masked
|
|
322
329
|
|
|
323
330
|
if (document.activeElement === inp) {
|
|
324
331
|
nextTick(() => {
|
|
325
332
|
if (masked === maskReplaced) {
|
|
326
|
-
const cursor =
|
|
327
|
-
props.reverseFillMask === true ? maskReplaced.length : 0
|
|
333
|
+
const cursor = props.reverseFillMask ? maskReplaced.length : 0
|
|
328
334
|
inp.setSelectionRange(cursor, cursor, 'forward')
|
|
329
335
|
return
|
|
330
336
|
}
|
|
331
337
|
|
|
332
|
-
if (inputType === 'insertFromPaste' && props.reverseFillMask
|
|
338
|
+
if (inputType === 'insertFromPaste' && !props.reverseFillMask) {
|
|
333
339
|
const maxEnd = inp.selectionEnd
|
|
334
340
|
let cursor = end - 1
|
|
335
341
|
// each non-marker char means we move once to right
|
|
@@ -344,31 +350,28 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
344
350
|
}
|
|
345
351
|
|
|
346
352
|
if (
|
|
347
|
-
['deleteContentBackward', 'deleteContentForward'].
|
|
348
|
-
inputType
|
|
349
|
-
) !== -1
|
|
353
|
+
['deleteContentBackward', 'deleteContentForward'].includes(inputType)
|
|
350
354
|
) {
|
|
351
|
-
const cursor =
|
|
352
|
-
|
|
353
|
-
?
|
|
354
|
-
?
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
masked
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
: end
|
|
355
|
+
const cursor = props.reverseFillMask
|
|
356
|
+
? end === 0
|
|
357
|
+
? masked.length > preMasked.length
|
|
358
|
+
? 1
|
|
359
|
+
: 0
|
|
360
|
+
: Math.max(
|
|
361
|
+
0,
|
|
362
|
+
masked.length -
|
|
363
|
+
(masked === maskReplaced
|
|
364
|
+
? 0
|
|
365
|
+
: Math.min(preMasked.length, endReverse) + 1)
|
|
366
|
+
) + 1
|
|
367
|
+
: end
|
|
365
368
|
|
|
366
369
|
inp.setSelectionRange(cursor, cursor, 'forward')
|
|
367
370
|
return
|
|
368
371
|
}
|
|
369
372
|
|
|
370
|
-
if (props.reverseFillMask
|
|
371
|
-
if (changed
|
|
373
|
+
if (props.reverseFillMask) {
|
|
374
|
+
if (changed) {
|
|
372
375
|
const cursor = Math.max(
|
|
373
376
|
0,
|
|
374
377
|
masked.length -
|
|
@@ -386,7 +389,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
386
389
|
const cursor = masked.length - endReverse
|
|
387
390
|
inp.setSelectionRange(cursor, cursor, 'backward')
|
|
388
391
|
}
|
|
389
|
-
} else if (changed
|
|
392
|
+
} else if (changed) {
|
|
390
393
|
const cursor = Math.max(
|
|
391
394
|
0,
|
|
392
395
|
maskMarked.indexOf(MARKER),
|
|
@@ -400,7 +403,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
400
403
|
})
|
|
401
404
|
}
|
|
402
405
|
|
|
403
|
-
const val = props.unmaskedValue
|
|
406
|
+
const val = props.unmaskedValue ? unmaskValue(masked) : masked
|
|
404
407
|
|
|
405
408
|
if (
|
|
406
409
|
String(props.modelValue) !== val &&
|
|
@@ -425,13 +428,13 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
425
428
|
|
|
426
429
|
const moveCursor = {
|
|
427
430
|
left(inp, cursor) {
|
|
428
|
-
const noMarkBefore = maskMarked.slice(cursor - 1).
|
|
431
|
+
const noMarkBefore = !maskMarked.slice(cursor - 1).includes(MARKER)
|
|
429
432
|
let i = Math.max(0, cursor - 1)
|
|
430
433
|
|
|
431
434
|
for (; i >= 0; i--) {
|
|
432
435
|
if (maskMarked[i] === MARKER) {
|
|
433
436
|
cursor = i
|
|
434
|
-
if (noMarkBefore
|
|
437
|
+
if (noMarkBefore) cursor++
|
|
435
438
|
break
|
|
436
439
|
}
|
|
437
440
|
}
|
|
@@ -501,14 +504,13 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
501
504
|
rightReverse(inp, cursor) {
|
|
502
505
|
const limit = inp.value.length,
|
|
503
506
|
localMaskMarked = getPaddedMaskMarked(limit),
|
|
504
|
-
noMarkBefore =
|
|
505
|
-
localMaskMarked.slice(0, cursor + 1).indexOf(MARKER) === -1
|
|
507
|
+
noMarkBefore = !localMaskMarked.slice(0, cursor + 1).includes(MARKER)
|
|
506
508
|
let i = Math.min(limit, cursor + 1)
|
|
507
509
|
|
|
508
510
|
for (; i <= limit; i++) {
|
|
509
511
|
if (localMaskMarked[i - 1] === MARKER) {
|
|
510
512
|
cursor = i
|
|
511
|
-
if (cursor > 0 && noMarkBefore
|
|
513
|
+
if (cursor > 0 && noMarkBefore) cursor--
|
|
512
514
|
break
|
|
513
515
|
}
|
|
514
516
|
}
|
|
@@ -535,8 +537,8 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
535
537
|
emit('keydown', e)
|
|
536
538
|
|
|
537
539
|
if (
|
|
538
|
-
shouldIgnoreKey(e)
|
|
539
|
-
e.altKey
|
|
540
|
+
shouldIgnoreKey(e) ||
|
|
541
|
+
e.altKey // let browser handle these
|
|
540
542
|
) {
|
|
541
543
|
return
|
|
542
544
|
}
|
|
@@ -558,7 +560,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
558
560
|
const fn =
|
|
559
561
|
moveCursor[
|
|
560
562
|
(e.keyCode === 39 ? 'right' : 'left') +
|
|
561
|
-
(props.reverseFillMask
|
|
563
|
+
(props.reverseFillMask ? 'Reverse' : '')
|
|
562
564
|
]
|
|
563
565
|
|
|
564
566
|
e.preventDefault()
|
|
@@ -574,14 +576,14 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
574
576
|
}
|
|
575
577
|
} else if (
|
|
576
578
|
e.keyCode === 8 && // Backspace
|
|
577
|
-
props.reverseFillMask
|
|
579
|
+
!props.reverseFillMask &&
|
|
578
580
|
start === end
|
|
579
581
|
) {
|
|
580
582
|
moveCursor.left(inp, start)
|
|
581
583
|
inp.setSelectionRange(inp.selectionStart, end, 'backward')
|
|
582
584
|
} else if (
|
|
583
585
|
e.keyCode === 46 && // Delete
|
|
584
|
-
props.reverseFillMask
|
|
586
|
+
props.reverseFillMask &&
|
|
585
587
|
start === end
|
|
586
588
|
) {
|
|
587
589
|
moveCursor.rightReverse(inp, end)
|
|
@@ -594,7 +596,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
594
596
|
return ''
|
|
595
597
|
}
|
|
596
598
|
|
|
597
|
-
if (props.reverseFillMask
|
|
599
|
+
if (props.reverseFillMask) {
|
|
598
600
|
return maskValueReverse(val, updateMaskInternalsFlag)
|
|
599
601
|
}
|
|
600
602
|
|
|
@@ -682,7 +684,7 @@ export default function useMask(props, emit, emitValue, inputRef) {
|
|
|
682
684
|
return val
|
|
683
685
|
}
|
|
684
686
|
|
|
685
|
-
return props.reverseFillMask
|
|
687
|
+
return props.reverseFillMask && val.length !== 0
|
|
686
688
|
? maskReplaced.slice(0, -val.length) + val
|
|
687
689
|
: val + maskReplaced.slice(val.length)
|
|
688
690
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Transition, computed, h, ref } from 'vue'
|
|
2
2
|
|
|
3
3
|
import { isRuntimeSsrPreHydration } from '../../plugins/platform/Platform.js'
|
|
4
4
|
|
|
5
5
|
import Intersection from '../../directives/intersection/Intersection.js'
|
|
6
6
|
|
|
7
7
|
import { createComponent } from '../../utils/private.create/create.js'
|
|
8
|
-
import {
|
|
8
|
+
import { hDir, hSlot } from '../../utils/private.render/render.js'
|
|
9
9
|
|
|
10
10
|
export default createComponent({
|
|
11
11
|
name: 'QIntersection',
|
|
@@ -38,7 +38,7 @@ export default createComponent({
|
|
|
38
38
|
|
|
39
39
|
setup(props, { slots, emit }) {
|
|
40
40
|
const showing = ref(
|
|
41
|
-
isRuntimeSsrPreHydration.value
|
|
41
|
+
isRuntimeSsrPreHydration.value ? props.ssrPrerender : false
|
|
42
42
|
)
|
|
43
43
|
|
|
44
44
|
const intersectionProps = computed(() =>
|
|
@@ -58,10 +58,8 @@ export default createComponent({
|
|
|
58
58
|
|
|
59
59
|
const hasDirective = computed(
|
|
60
60
|
() =>
|
|
61
|
-
props.disable
|
|
62
|
-
(isRuntimeSsrPreHydration.value
|
|
63
|
-
props.once !== true ||
|
|
64
|
-
props.ssrPrerender !== true)
|
|
61
|
+
!props.disable &&
|
|
62
|
+
(!isRuntimeSsrPreHydration.value || !props.once || !props.ssrPrerender)
|
|
65
63
|
)
|
|
66
64
|
|
|
67
65
|
const directives = computed(() => [
|
|
@@ -80,7 +78,7 @@ export default createComponent({
|
|
|
80
78
|
}
|
|
81
79
|
|
|
82
80
|
function getContent() {
|
|
83
|
-
if (showing.value
|
|
81
|
+
if (showing.value) {
|
|
84
82
|
return [
|
|
85
83
|
h(
|
|
86
84
|
'div',
|