quasar 2.9.0 → 2.9.2

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.
Files changed (129) hide show
  1. package/dist/api/QTree.json +6 -0
  2. package/dist/api/TouchPan.json +0 -4
  3. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  4. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  5. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  6. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  7. package/dist/icon-set/fontawesome-v6-pro.umd.prod.js +1 -1
  8. package/dist/icon-set/fontawesome-v6.umd.prod.js +1 -1
  9. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  10. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  11. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  12. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  13. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  14. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  15. package/dist/icon-set/material-symbols-outlined.umd.prod.js +1 -1
  16. package/dist/icon-set/material-symbols-rounded.umd.prod.js +1 -1
  17. package/dist/icon-set/material-symbols-sharp.umd.prod.js +1 -1
  18. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  19. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  20. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  21. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  22. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  23. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  24. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  25. package/dist/icon-set/svg-fontawesome-v6.umd.prod.js +1 -1
  26. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  27. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  28. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +1 -1
  29. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  30. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  31. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  32. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  33. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  34. package/dist/icon-set/svg-material-symbols-outlined.umd.prod.js +1 -1
  35. package/dist/icon-set/svg-material-symbols-rounded.umd.prod.js +1 -1
  36. package/dist/icon-set/svg-material-symbols-sharp.umd.prod.js +1 -1
  37. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  38. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  39. package/dist/icon-set/themify.umd.prod.js +1 -1
  40. package/dist/lang/ar-TN.umd.prod.js +1 -1
  41. package/dist/lang/ar.umd.prod.js +1 -1
  42. package/dist/lang/az-Latn.umd.prod.js +1 -1
  43. package/dist/lang/bg.umd.prod.js +1 -1
  44. package/dist/lang/bn.umd.prod.js +1 -1
  45. package/dist/lang/ca.umd.prod.js +1 -1
  46. package/dist/lang/cs.umd.prod.js +1 -1
  47. package/dist/lang/da.umd.prod.js +1 -1
  48. package/dist/lang/de.umd.prod.js +1 -1
  49. package/dist/lang/el.umd.prod.js +1 -1
  50. package/dist/lang/en-GB.umd.prod.js +1 -1
  51. package/dist/lang/en-US.umd.prod.js +1 -1
  52. package/dist/lang/eo.umd.prod.js +1 -1
  53. package/dist/lang/es.umd.prod.js +1 -1
  54. package/dist/lang/et.umd.prod.js +1 -1
  55. package/dist/lang/eu.umd.prod.js +1 -1
  56. package/dist/lang/fa-IR.umd.prod.js +1 -1
  57. package/dist/lang/fa.umd.prod.js +1 -1
  58. package/dist/lang/fi.umd.prod.js +1 -1
  59. package/dist/lang/fr.umd.prod.js +1 -1
  60. package/dist/lang/gn.umd.prod.js +1 -1
  61. package/dist/lang/he.umd.prod.js +1 -1
  62. package/dist/lang/hr.umd.prod.js +1 -1
  63. package/dist/lang/hu.umd.prod.js +1 -1
  64. package/dist/lang/id.umd.prod.js +1 -1
  65. package/dist/lang/is.umd.prod.js +1 -1
  66. package/dist/lang/it.umd.prod.js +1 -1
  67. package/dist/lang/ja.umd.prod.js +1 -1
  68. package/dist/lang/km.umd.prod.js +1 -1
  69. package/dist/lang/ko-KR.umd.prod.js +1 -1
  70. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  71. package/dist/lang/kz.umd.prod.js +1 -1
  72. package/dist/lang/lt.umd.prod.js +1 -1
  73. package/dist/lang/lu.umd.prod.js +1 -1
  74. package/dist/lang/lv.umd.prod.js +1 -1
  75. package/dist/lang/ml.umd.prod.js +1 -1
  76. package/dist/lang/mm.umd.prod.js +1 -1
  77. package/dist/lang/ms.umd.prod.js +1 -1
  78. package/dist/lang/my.umd.prod.js +1 -1
  79. package/dist/lang/nb-NO.umd.prod.js +1 -1
  80. package/dist/lang/nl.umd.prod.js +1 -1
  81. package/dist/lang/pl.umd.prod.js +1 -1
  82. package/dist/lang/pt-BR.umd.prod.js +1 -1
  83. package/dist/lang/pt.umd.prod.js +1 -1
  84. package/dist/lang/ro.umd.prod.js +1 -1
  85. package/dist/lang/ru.umd.prod.js +1 -1
  86. package/dist/lang/sk.umd.prod.js +1 -1
  87. package/dist/lang/sl.umd.prod.js +1 -1
  88. package/dist/lang/sm.umd.prod.js +1 -1
  89. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  90. package/dist/lang/sr.umd.prod.js +1 -1
  91. package/dist/lang/sv.umd.prod.js +1 -1
  92. package/dist/lang/ta.umd.prod.js +1 -1
  93. package/dist/lang/th.umd.prod.js +1 -1
  94. package/dist/lang/tr.umd.prod.js +1 -1
  95. package/dist/lang/ug.umd.prod.js +1 -1
  96. package/dist/lang/uk.umd.prod.js +1 -1
  97. package/dist/lang/uz-Cyrl.umd.prod.js +1 -1
  98. package/dist/lang/uz-Latn.umd.prod.js +1 -1
  99. package/dist/lang/vi.umd.prod.js +1 -1
  100. package/dist/lang/zh-CN.umd.prod.js +1 -1
  101. package/dist/lang/zh-TW.umd.prod.js +1 -1
  102. package/dist/quasar.cjs.prod.js +2 -2
  103. package/dist/quasar.esm.js +110 -55
  104. package/dist/quasar.esm.prod.js +2 -2
  105. package/dist/quasar.sass +1 -1
  106. package/dist/quasar.umd.js +110 -55
  107. package/dist/quasar.umd.prod.js +2 -2
  108. package/dist/transforms/auto-import.json +7 -3
  109. package/dist/transforms/import-map.json +2 -0
  110. package/dist/types/index.d.ts +4 -0
  111. package/dist/vetur/quasar-attributes.json +4 -0
  112. package/dist/vetur/quasar-tags.json +1 -0
  113. package/dist/web-types/web-types.json +11 -6
  114. package/package.json +1 -1
  115. package/src/components/badge/__tests__/QBadge.spec.js +98 -23
  116. package/src/components/banner/__tests__/QBanner.spec.js +107 -0
  117. package/src/components/bar/__tests__/QBar.spec.js +46 -0
  118. package/src/components/input/use-mask.js +1 -1
  119. package/src/components/pull-to-refresh/QPullToRefresh.js +1 -4
  120. package/src/components/tabs/QTabs.js +2 -2
  121. package/src/components/tree/QTree.js +33 -20
  122. package/src/components/tree/QTree.json +7 -0
  123. package/src/directives/TouchHold.js +10 -3
  124. package/src/directives/TouchPan.js +21 -8
  125. package/src/directives/TouchPan.json +0 -5
  126. package/src/directives/TouchRepeat.js +20 -6
  127. package/src/directives/TouchSwipe.js +10 -3
  128. package/src/utils/extend.js +2 -2
  129. package/src/utils/morph.js +7 -3
@@ -10,8 +10,12 @@
10
10
  "q-badge.spec": "QBadge.spec",
11
11
  "QBadge": "QBadge",
12
12
  "q-badge": "QBadge",
13
+ "QBanner.spec": "QBanner.spec",
14
+ "q-banner.spec": "QBanner.spec",
13
15
  "QBanner": "QBanner",
14
16
  "q-banner": "QBanner",
17
+ "QBar.spec": "QBar.spec",
18
+ "q-bar.spec": "QBar.spec",
15
19
  "QBar": "QBar",
16
20
  "q-bar": "QBar",
17
21
  "QBreadcrumbs": "QBreadcrumbs",
@@ -295,9 +299,9 @@
295
299
  "v-touch-swipe": "TouchSwipe"
296
300
  },
297
301
  "regex": {
298
- "kebabComponents": "(q-uploader-add-trigger|q-stepper-navigation|q-circular-progress|q-spinner-hourglass|q-carousel-control|q-form-child-mixin|q-slide-transition|q-spinner-facebook|q-spinner-infinity|q-infinite-scroll|q-linear-progress|q-pull-to-refresh|q-resize-observer|q-scroll-observer|q-spinner-comment|q-breadcrumbs-el|q-carousel-slide|q-expansion-item|q-page-container|q-spinner-hearts|q-route-tab.spec|q-timeline-entry|q-virtual-scroll|q-inner-loading|q-page-scroller|q-spinner-audio|q-spinner-clock|q-spinner-gears|q-spinner-orbit|q-spinner-radio|q-spinner-rings|q-toolbar-title|q-uploader.spec|q-btn-dropdown|q-card-actions|q-card-section|q-chat-message|q-intersection|q-item-section|q-markup-table|q-option-group|q-spinner-ball|q-spinner-bars|q-spinner-cube|q-spinner-dots|q-spinner-grid|q-spinner-oval|q-spinner-puff|q-spinner-tail|q-avatar.spec|q-breadcrumbs|q-dialog.spec|q-editor.spec|q-page-sticky|q-popup-proxy|q-scroll-area|q-select.spec|q-spinner-box|q-spinner-ios|q-spinner-pie|q-badge.spec|q-btn-toggle|q-fab-action|q-input.spec|q-item-label|q-pagination|q-popup-edit|q-responsive|q-slide-item|q-tab-panels|q-table.spec|q-btn-group|q-chip.spec|q-date.spec|q-menu.spec|q-separator|q-tab-panel|q-tabs.spec|q-route-tab|q-ajax-bar|q-btn.spec|q-carousel|q-checkbox|q-parallax|q-skeleton|q-splitter|q-tab.spec|q-timeline|q-uploader|q-spinner|q-stepper|q-td.spec|q-th.spec|q-tr.spec|q-toolbar|q-tooltip|q-avatar|q-banner|q-dialog|q-drawer|q-editor|q-footer|q-header|q-layout|q-no-ssr|q-rating|q-select|q-slider|q-toggle|q-badge|q-color|q-field|q-input|q-radio|q-range|q-space|q-table|q-video|q-card|q-chip|q-date|q-file|q-form|q-icon|q-item|q-list|q-knob|q-menu|q-page|q-step|q-tabs|q-time|q-tree|q-bar|q-btn|q-fab|q-img|q-tab|q-td|q-th|q-tr)",
299
- "pascalComponents": "(QUploaderAddTrigger|QStepperNavigation|QCircularProgress|QSpinnerHourglass|QCarouselControl|QSlideTransition|QSpinnerFacebook|QSpinnerInfinity|QFormChildMixin|QInfiniteScroll|QLinearProgress|QResizeObserver|QScrollObserver|QSpinnerComment|QBreadcrumbsEl|QCarouselSlide|QExpansionItem|QPageContainer|QPullToRefresh|QSpinnerHearts|QRouteTab.spec|QTimelineEntry|QUploader.spec|QVirtualScroll|QInnerLoading|QIntersection|QPageScroller|QSpinnerAudio|QSpinnerClock|QSpinnerGears|QSpinnerOrbit|QSpinnerRadio|QSpinnerRings|QToolbarTitle|QAvatar.spec|QBreadcrumbs|QBtnDropdown|QCardActions|QCardSection|QChatMessage|QDialog.spec|QEditor.spec|QItemSection|QMarkupTable|QOptionGroup|QSelect.spec|QSpinnerBall|QSpinnerBars|QSpinnerCube|QSpinnerDots|QSpinnerGrid|QSpinnerOval|QSpinnerPuff|QSpinnerTail|QBadge.spec|QInput.spec|QPageSticky|QPagination|QPopupProxy|QResponsive|QScrollArea|QSpinnerBox|QSpinnerIos|QSpinnerPie|QTable.spec|QBtnToggle|QChip.spec|QDate.spec|QFabAction|QItemLabel|QMenu.spec|QPopupEdit|QSeparator|QSlideItem|QTabPanels|QTabs.spec|QBtnGroup|QBtn.spec|QCarousel|QCheckbox|QParallax|QSkeleton|QSplitter|QTabPanel|QTab.spec|QRouteTab|QTimeline|QUploader|QAjaxBar|QSpinner|QStepper|QTd.spec|QTh.spec|QTr.spec|QToolbar|QTooltip|QAvatar|QBanner|QDialog|QDrawer|QEditor|QFooter|QHeader|QLayout|QRating|QSelect|QSlider|QToggle|QBadge|QColor|QField|QInput|QNoSsr|QRadio|QRange|QSpace|QTable|QVideo|QCard|QChip|QDate|QFile|QForm|QIcon|QItem|QList|QKnob|QMenu|QPage|QStep|QTabs|QTime|QTree|QBar|QBtn|QFab|QImg|QTab|QTd|QTh|QTr)",
300
- "components": "(q-uploader-add-trigger|q-stepper-navigation|q-circular-progress|q-spinner-hourglass|q-carousel-control|q-form-child-mixin|q-slide-transition|q-spinner-facebook|q-spinner-infinity|q-infinite-scroll|q-linear-progress|q-pull-to-refresh|q-resize-observer|q-scroll-observer|q-spinner-comment|q-breadcrumbs-el|q-carousel-slide|q-expansion-item|q-page-container|q-spinner-hearts|q-route-tab.spec|q-timeline-entry|q-virtual-scroll|q-inner-loading|q-page-scroller|q-spinner-audio|q-spinner-clock|q-spinner-gears|q-spinner-orbit|q-spinner-radio|q-spinner-rings|q-toolbar-title|q-uploader.spec|q-btn-dropdown|q-card-actions|q-card-section|q-chat-message|q-intersection|q-item-section|q-markup-table|q-option-group|q-spinner-ball|q-spinner-bars|q-spinner-cube|q-spinner-dots|q-spinner-grid|q-spinner-oval|q-spinner-puff|q-spinner-tail|q-avatar.spec|q-breadcrumbs|q-dialog.spec|q-editor.spec|q-page-sticky|q-popup-proxy|q-scroll-area|q-select.spec|q-spinner-box|q-spinner-ios|q-spinner-pie|q-badge.spec|q-btn-toggle|q-fab-action|q-input.spec|q-item-label|q-pagination|q-popup-edit|q-responsive|q-slide-item|q-tab-panels|q-table.spec|q-btn-group|q-chip.spec|q-date.spec|q-menu.spec|q-separator|q-tab-panel|q-tabs.spec|q-route-tab|q-ajax-bar|q-btn.spec|q-carousel|q-checkbox|q-parallax|q-skeleton|q-splitter|q-tab.spec|q-timeline|q-uploader|q-spinner|q-stepper|q-td.spec|q-th.spec|q-tr.spec|q-toolbar|q-tooltip|q-avatar|q-banner|q-dialog|q-drawer|q-editor|q-footer|q-header|q-layout|q-no-ssr|q-rating|q-select|q-slider|q-toggle|q-badge|q-color|q-field|q-input|q-radio|q-range|q-space|q-table|q-video|q-card|q-chip|q-date|q-file|q-form|q-icon|q-item|q-list|q-knob|q-menu|q-page|q-step|q-tabs|q-time|q-tree|q-bar|q-btn|q-fab|q-img|q-tab|q-td|q-th|q-tr|QUploaderAddTrigger|QStepperNavigation|QCircularProgress|QSpinnerHourglass|QCarouselControl|QSlideTransition|QSpinnerFacebook|QSpinnerInfinity|QFormChildMixin|QInfiniteScroll|QLinearProgress|QResizeObserver|QScrollObserver|QSpinnerComment|QBreadcrumbsEl|QCarouselSlide|QExpansionItem|QPageContainer|QPullToRefresh|QSpinnerHearts|QRouteTab.spec|QTimelineEntry|QUploader.spec|QVirtualScroll|QInnerLoading|QIntersection|QPageScroller|QSpinnerAudio|QSpinnerClock|QSpinnerGears|QSpinnerOrbit|QSpinnerRadio|QSpinnerRings|QToolbarTitle|QAvatar.spec|QBreadcrumbs|QBtnDropdown|QCardActions|QCardSection|QChatMessage|QDialog.spec|QEditor.spec|QItemSection|QMarkupTable|QOptionGroup|QSelect.spec|QSpinnerBall|QSpinnerBars|QSpinnerCube|QSpinnerDots|QSpinnerGrid|QSpinnerOval|QSpinnerPuff|QSpinnerTail|QBadge.spec|QInput.spec|QPageSticky|QPagination|QPopupProxy|QResponsive|QScrollArea|QSpinnerBox|QSpinnerIos|QSpinnerPie|QTable.spec|QBtnToggle|QChip.spec|QDate.spec|QFabAction|QItemLabel|QMenu.spec|QPopupEdit|QSeparator|QSlideItem|QTabPanels|QTabs.spec|QBtnGroup|QBtn.spec|QCarousel|QCheckbox|QParallax|QSkeleton|QSplitter|QTabPanel|QTab.spec|QRouteTab|QTimeline|QUploader|QAjaxBar|QSpinner|QStepper|QTd.spec|QTh.spec|QTr.spec|QToolbar|QTooltip|QAvatar|QBanner|QDialog|QDrawer|QEditor|QFooter|QHeader|QLayout|QRating|QSelect|QSlider|QToggle|QBadge|QColor|QField|QInput|QNoSsr|QRadio|QRange|QSpace|QTable|QVideo|QCard|QChip|QDate|QFile|QForm|QIcon|QItem|QList|QKnob|QMenu|QPage|QStep|QTabs|QTime|QTree|QBar|QBtn|QFab|QImg|QTab|QTd|QTh|QTr)",
302
+ "kebabComponents": "(q-uploader-add-trigger|q-stepper-navigation|q-circular-progress|q-spinner-hourglass|q-carousel-control|q-form-child-mixin|q-slide-transition|q-spinner-facebook|q-spinner-infinity|q-infinite-scroll|q-linear-progress|q-pull-to-refresh|q-resize-observer|q-scroll-observer|q-spinner-comment|q-breadcrumbs-el|q-carousel-slide|q-expansion-item|q-page-container|q-spinner-hearts|q-route-tab.spec|q-timeline-entry|q-virtual-scroll|q-inner-loading|q-page-scroller|q-spinner-audio|q-spinner-clock|q-spinner-gears|q-spinner-orbit|q-spinner-radio|q-spinner-rings|q-toolbar-title|q-uploader.spec|q-btn-dropdown|q-card-actions|q-card-section|q-chat-message|q-intersection|q-item-section|q-markup-table|q-option-group|q-spinner-ball|q-spinner-bars|q-spinner-cube|q-spinner-dots|q-spinner-grid|q-spinner-oval|q-spinner-puff|q-spinner-tail|q-avatar.spec|q-banner.spec|q-breadcrumbs|q-dialog.spec|q-editor.spec|q-page-sticky|q-popup-proxy|q-scroll-area|q-select.spec|q-spinner-box|q-spinner-ios|q-spinner-pie|q-badge.spec|q-btn-toggle|q-fab-action|q-input.spec|q-item-label|q-pagination|q-popup-edit|q-responsive|q-slide-item|q-tab-panels|q-table.spec|q-btn-group|q-chip.spec|q-date.spec|q-menu.spec|q-separator|q-tab-panel|q-tabs.spec|q-route-tab|q-ajax-bar|q-bar.spec|q-btn.spec|q-carousel|q-checkbox|q-parallax|q-skeleton|q-splitter|q-tab.spec|q-timeline|q-uploader|q-spinner|q-stepper|q-td.spec|q-th.spec|q-tr.spec|q-toolbar|q-tooltip|q-avatar|q-banner|q-dialog|q-drawer|q-editor|q-footer|q-header|q-layout|q-no-ssr|q-rating|q-select|q-slider|q-toggle|q-badge|q-color|q-field|q-input|q-radio|q-range|q-space|q-table|q-video|q-card|q-chip|q-date|q-file|q-form|q-icon|q-item|q-list|q-knob|q-menu|q-page|q-step|q-tabs|q-time|q-tree|q-bar|q-btn|q-fab|q-img|q-tab|q-td|q-th|q-tr)",
303
+ "pascalComponents": "(QUploaderAddTrigger|QStepperNavigation|QCircularProgress|QSpinnerHourglass|QCarouselControl|QSlideTransition|QSpinnerFacebook|QSpinnerInfinity|QFormChildMixin|QInfiniteScroll|QLinearProgress|QResizeObserver|QScrollObserver|QSpinnerComment|QBreadcrumbsEl|QCarouselSlide|QExpansionItem|QPageContainer|QPullToRefresh|QSpinnerHearts|QRouteTab.spec|QTimelineEntry|QUploader.spec|QVirtualScroll|QInnerLoading|QIntersection|QPageScroller|QSpinnerAudio|QSpinnerClock|QSpinnerGears|QSpinnerOrbit|QSpinnerRadio|QSpinnerRings|QToolbarTitle|QAvatar.spec|QBanner.spec|QBreadcrumbs|QBtnDropdown|QCardActions|QCardSection|QChatMessage|QDialog.spec|QEditor.spec|QItemSection|QMarkupTable|QOptionGroup|QSelect.spec|QSpinnerBall|QSpinnerBars|QSpinnerCube|QSpinnerDots|QSpinnerGrid|QSpinnerOval|QSpinnerPuff|QSpinnerTail|QBadge.spec|QInput.spec|QPageSticky|QPagination|QPopupProxy|QResponsive|QScrollArea|QSpinnerBox|QSpinnerIos|QSpinnerPie|QTable.spec|QBtnToggle|QChip.spec|QDate.spec|QFabAction|QItemLabel|QMenu.spec|QPopupEdit|QSeparator|QSlideItem|QTabPanels|QTabs.spec|QBar.spec|QBtnGroup|QBtn.spec|QCarousel|QCheckbox|QParallax|QSkeleton|QSplitter|QTabPanel|QTab.spec|QRouteTab|QTimeline|QUploader|QAjaxBar|QSpinner|QStepper|QTd.spec|QTh.spec|QTr.spec|QToolbar|QTooltip|QAvatar|QBanner|QDialog|QDrawer|QEditor|QFooter|QHeader|QLayout|QRating|QSelect|QSlider|QToggle|QBadge|QColor|QField|QInput|QNoSsr|QRadio|QRange|QSpace|QTable|QVideo|QCard|QChip|QDate|QFile|QForm|QIcon|QItem|QList|QKnob|QMenu|QPage|QStep|QTabs|QTime|QTree|QBar|QBtn|QFab|QImg|QTab|QTd|QTh|QTr)",
304
+ "components": "(q-uploader-add-trigger|q-stepper-navigation|q-circular-progress|q-spinner-hourglass|q-carousel-control|q-form-child-mixin|q-slide-transition|q-spinner-facebook|q-spinner-infinity|q-infinite-scroll|q-linear-progress|q-pull-to-refresh|q-resize-observer|q-scroll-observer|q-spinner-comment|q-breadcrumbs-el|q-carousel-slide|q-expansion-item|q-page-container|q-spinner-hearts|q-route-tab.spec|q-timeline-entry|q-virtual-scroll|q-inner-loading|q-page-scroller|q-spinner-audio|q-spinner-clock|q-spinner-gears|q-spinner-orbit|q-spinner-radio|q-spinner-rings|q-toolbar-title|q-uploader.spec|q-btn-dropdown|q-card-actions|q-card-section|q-chat-message|q-intersection|q-item-section|q-markup-table|q-option-group|q-spinner-ball|q-spinner-bars|q-spinner-cube|q-spinner-dots|q-spinner-grid|q-spinner-oval|q-spinner-puff|q-spinner-tail|q-avatar.spec|q-banner.spec|q-breadcrumbs|q-dialog.spec|q-editor.spec|q-page-sticky|q-popup-proxy|q-scroll-area|q-select.spec|q-spinner-box|q-spinner-ios|q-spinner-pie|q-badge.spec|q-btn-toggle|q-fab-action|q-input.spec|q-item-label|q-pagination|q-popup-edit|q-responsive|q-slide-item|q-tab-panels|q-table.spec|q-btn-group|q-chip.spec|q-date.spec|q-menu.spec|q-separator|q-tab-panel|q-tabs.spec|q-route-tab|q-ajax-bar|q-bar.spec|q-btn.spec|q-carousel|q-checkbox|q-parallax|q-skeleton|q-splitter|q-tab.spec|q-timeline|q-uploader|q-spinner|q-stepper|q-td.spec|q-th.spec|q-tr.spec|q-toolbar|q-tooltip|q-avatar|q-banner|q-dialog|q-drawer|q-editor|q-footer|q-header|q-layout|q-no-ssr|q-rating|q-select|q-slider|q-toggle|q-badge|q-color|q-field|q-input|q-radio|q-range|q-space|q-table|q-video|q-card|q-chip|q-date|q-file|q-form|q-icon|q-item|q-list|q-knob|q-menu|q-page|q-step|q-tabs|q-time|q-tree|q-bar|q-btn|q-fab|q-img|q-tab|q-td|q-th|q-tr|QUploaderAddTrigger|QStepperNavigation|QCircularProgress|QSpinnerHourglass|QCarouselControl|QSlideTransition|QSpinnerFacebook|QSpinnerInfinity|QFormChildMixin|QInfiniteScroll|QLinearProgress|QResizeObserver|QScrollObserver|QSpinnerComment|QBreadcrumbsEl|QCarouselSlide|QExpansionItem|QPageContainer|QPullToRefresh|QSpinnerHearts|QRouteTab.spec|QTimelineEntry|QUploader.spec|QVirtualScroll|QInnerLoading|QIntersection|QPageScroller|QSpinnerAudio|QSpinnerClock|QSpinnerGears|QSpinnerOrbit|QSpinnerRadio|QSpinnerRings|QToolbarTitle|QAvatar.spec|QBanner.spec|QBreadcrumbs|QBtnDropdown|QCardActions|QCardSection|QChatMessage|QDialog.spec|QEditor.spec|QItemSection|QMarkupTable|QOptionGroup|QSelect.spec|QSpinnerBall|QSpinnerBars|QSpinnerCube|QSpinnerDots|QSpinnerGrid|QSpinnerOval|QSpinnerPuff|QSpinnerTail|QBadge.spec|QInput.spec|QPageSticky|QPagination|QPopupProxy|QResponsive|QScrollArea|QSpinnerBox|QSpinnerIos|QSpinnerPie|QTable.spec|QBtnToggle|QChip.spec|QDate.spec|QFabAction|QItemLabel|QMenu.spec|QPopupEdit|QSeparator|QSlideItem|QTabPanels|QTabs.spec|QBar.spec|QBtnGroup|QBtn.spec|QCarousel|QCheckbox|QParallax|QSkeleton|QSplitter|QTabPanel|QTab.spec|QRouteTab|QTimeline|QUploader|QAjaxBar|QSpinner|QStepper|QTd.spec|QTh.spec|QTr.spec|QToolbar|QTooltip|QAvatar|QBanner|QDialog|QDrawer|QEditor|QFooter|QHeader|QLayout|QRating|QSelect|QSlider|QToggle|QBadge|QColor|QField|QInput|QNoSsr|QRadio|QRange|QSpace|QTable|QVideo|QCard|QChip|QDate|QFile|QForm|QIcon|QItem|QList|QKnob|QMenu|QPage|QStep|QTabs|QTime|QTree|QBar|QBtn|QFab|QImg|QTab|QTd|QTh|QTr)",
301
305
  "directives": "(v-intersection|v-touch-repeat|v-close-popup|v-scroll-fire|v-touch-swipe|v-touch-hold|v-touch-pan|v-mutation|v-ripple|v-scroll|v-morph)"
302
306
  }
303
307
  }
@@ -5,7 +5,9 @@
5
5
  "QAvatar": "src/components/avatar/QAvatar.js",
6
6
  "QBadge.spec": "src/components/badge/__tests__/QBadge.spec.js",
7
7
  "QBadge": "src/components/badge/QBadge.js",
8
+ "QBanner.spec": "src/components/banner/__tests__/QBanner.spec.js",
8
9
  "QBanner": "src/components/banner/QBanner.js",
10
+ "QBar.spec": "src/components/bar/__tests__/QBar.spec.js",
9
11
  "QBar": "src/components/bar/QBar.js",
10
12
  "QBreadcrumbs": "src/components/breadcrumbs/QBreadcrumbs.js",
11
13
  "QBreadcrumbsEl": "src/components/breadcrumbs/QBreadcrumbsEl.js",
@@ -12385,6 +12385,10 @@ export interface QTreeProps {
12385
12385
  * Allows the tree to be set in accordion mode
12386
12386
  */
12387
12387
  accordion?: boolean | undefined;
12388
+ /**
12389
+ * Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees
12390
+ */
12391
+ noTransition?: boolean | undefined;
12388
12392
  /**
12389
12393
  * The text value to be used for filtering nodes
12390
12394
  */
@@ -5651,6 +5651,10 @@
5651
5651
  "type": "boolean",
5652
5652
  "description": "Allows the tree to be set in accordion mode"
5653
5653
  },
5654
+ "q-tree/no-transition": {
5655
+ "type": "boolean",
5656
+ "description": "Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees"
5657
+ },
5654
5658
  "q-tree/filter": {
5655
5659
  "type": "string",
5656
5660
  "description": "The text value to be used for filtering nodes"
@@ -2000,6 +2000,7 @@
2000
2000
  "no-selection-unset",
2001
2001
  "default-expand-all",
2002
2002
  "accordion",
2003
+ "no-transition",
2003
2004
  "filter",
2004
2005
  "filter-method",
2005
2006
  "duration",
@@ -2,7 +2,7 @@
2
2
  "$schema": "",
3
3
  "framework": "vue",
4
4
  "name": "quasar",
5
- "version": "2.9.0",
5
+ "version": "2.9.2",
6
6
  "contributions": {
7
7
  "html": {
8
8
  "types-syntax": "typescript",
@@ -18237,6 +18237,16 @@
18237
18237
  "doc-url": "https://v2.quasar.dev/vue-components/tree",
18238
18238
  "type": "boolean"
18239
18239
  },
18240
+ {
18241
+ "name": "no-transition",
18242
+ "value": {
18243
+ "kind": "expression",
18244
+ "type": "boolean"
18245
+ },
18246
+ "description": "Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees",
18247
+ "doc-url": "https://v2.quasar.dev/vue-components/tree",
18248
+ "type": "boolean"
18249
+ },
18240
18250
  {
18241
18251
  "name": "filter",
18242
18252
  "value": {
@@ -19260,11 +19270,6 @@
19260
19270
  "description": "Calls event.preventDefault() for touch events",
19261
19271
  "doc-url": "https://v2.quasar.dev/vue-directives/touch-pan"
19262
19272
  },
19263
- {
19264
- "name": "mightPrevent",
19265
- "description": "Required when you might call event.preventDefault() in your handler for touch events",
19266
- "doc-url": "https://v2.quasar.dev/vue-directives/touch-pan"
19267
- },
19268
19273
  {
19269
19274
  "name": "capture",
19270
19275
  "description": "Use capture for touchstart event",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quasar",
3
- "version": "2.9.0",
3
+ "version": "2.9.2",
4
4
  "description": "Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time",
5
5
  "main": "dist/quasar.cjs.prod.js",
6
6
  "module": "dist/quasar.esm.prod.js",
@@ -1,64 +1,126 @@
1
- // import { mount } from '@cypress/vue'
2
- // import QBadge from '../QBadge.js'
1
+ import { mount } from '@cypress/vue'
2
+ import QBadge from '../QBadge.js'
3
3
 
4
- // const snapshotOptions = { customSnapshotsDir: '../src/components/badge/__tests__' }
4
+ const defaultOptions = {
5
+ label: 'simple badge'
6
+ }
7
+
8
+ const alignValues = [ 'top', 'middle', 'bottom' ]
9
+
10
+ function mountQBadge (options = {}) {
11
+ options.props = {
12
+ ...defaultOptions,
13
+ ...options.props
14
+ }
15
+
16
+ return mount(QBadge, options)
17
+ }
5
18
 
6
19
  describe('Badge API', () => {
7
20
  describe('Props', () => {
8
21
  describe('Category: content', () => {
9
22
  describe('(prop): floating', () => {
10
- it.skip(' ', () => {
11
- //
23
+ it('should render a floating badge', () => {
24
+ mountQBadge({
25
+ props: { floating: true }
26
+ })
27
+
28
+ cy.get('.q-badge')
29
+ .should('have.class', 'q-badge--floating')
12
30
  })
13
31
  })
14
32
 
15
33
  describe('(prop): multi-line', () => {
16
- it.skip(' ', () => {
17
- //
34
+ it('should render a content with multiple lines', () => {
35
+ mountQBadge({
36
+ props: { multiLine: true }
37
+ })
38
+
39
+ cy.get('.q-badge')
40
+ .should('have.class', 'q-badge--multi-line')
18
41
  })
19
42
  })
20
43
 
21
44
  describe('(prop): label', () => {
22
- it.skip(' ', () => {
23
- //
45
+ it('should render a label inside the badge', () => {
46
+ const label = 'Badge label'
47
+
48
+ mountQBadge({
49
+ props: { label }
50
+ })
51
+
52
+ cy.get('.q-badge')
53
+ .should('contain', label)
24
54
  })
25
55
  })
26
56
 
27
57
  describe('(prop): align', () => {
28
- it.skip(' ', () => {
29
- //
58
+ it(`should render a badge aligned based on defined values: ${ alignValues.join(', ') }`, () => {
59
+ mountQBadge()
60
+
61
+ // loop over alignValues
62
+ for (const align of alignValues) {
63
+ cy.get('.q-badge')
64
+ .then(() => Cypress.vueWrapper.setProps({ align }))
65
+ .should('have.css', 'vertical-align', align)
66
+ }
30
67
  })
31
68
  })
32
69
  })
33
70
 
34
71
  describe('Category: style', () => {
35
72
  describe('(prop): color', () => {
36
- it.skip(' ', () => {
37
- //
73
+ it('should change color based on Quasar Color Palette', () => {
74
+ mountQBadge({
75
+ props: { color: 'red' }
76
+ })
77
+
78
+ cy.get('.q-badge')
79
+ .should('have.class', 'bg-red')
38
80
  })
39
81
  })
40
82
 
41
83
  describe('(prop): text-color', () => {
42
- it.skip(' ', () => {
43
- //
84
+ it('should change text color based on Quasar Color Palette', () => {
85
+ mountQBadge({
86
+ props: { textColor: 'red' }
87
+ })
88
+
89
+ cy.get('.q-badge')
90
+ .should('have.class', 'text-red')
44
91
  })
45
92
  })
46
93
 
47
94
  describe('(prop): transparent', () => {
48
- it.skip(' ', () => {
49
- //
95
+ it('should have opacity style when "transparent" prop is true', () => {
96
+ mountQBadge({
97
+ props: { transparent: true }
98
+ })
99
+
100
+ cy.get('.q-badge')
101
+ .should('have.class', 'q-badge--transparent')
50
102
  })
51
103
  })
52
104
 
53
105
  describe('(prop): outline', () => {
54
- it.skip(' ', () => {
55
- //
106
+ it('should have a outline style when "outline" prop is true', () => {
107
+ mountQBadge({
108
+ props: { outline: true }
109
+ })
110
+
111
+ cy.get('.q-badge')
112
+ .should('have.class', 'q-badge--outline')
56
113
  })
57
114
  })
58
115
 
59
116
  describe('(prop): rounded', () => {
60
- it.skip(' ', () => {
61
- //
117
+ it('should have a rounded style when "rounded" prop is true', () => {
118
+ mountQBadge({
119
+ props: { rounded: true }
120
+ })
121
+
122
+ cy.get('.q-badge')
123
+ .should('have.class', 'q-badge--rounded')
62
124
  })
63
125
  })
64
126
  })
@@ -66,8 +128,21 @@ describe('Badge API', () => {
66
128
 
67
129
  describe('Slots', () => {
68
130
  describe('(slot): default', () => {
69
- it.skip(' ', () => {
70
- //
131
+ it('should display the default slot content', () => {
132
+ const label = 'Badge label'
133
+
134
+ mountQBadge({
135
+ props: {
136
+ label: undefined
137
+ },
138
+
139
+ slots: {
140
+ default: label
141
+ }
142
+ })
143
+
144
+ cy.get('.q-badge')
145
+ .should('have.text', label)
71
146
  })
72
147
  })
73
148
  })
@@ -0,0 +1,107 @@
1
+ import { mount } from '@cypress/vue'
2
+ import QBanner from '../QBanner.js'
3
+
4
+ describe('Banner API', () => {
5
+ describe('Props', () => {
6
+ describe('Category: content', () => {
7
+ describe('(prop): inline-actions', () => {
8
+ it('should render the actions in the same row as the content', () => {
9
+ mount(QBanner, {
10
+ slots: {
11
+ default: 'Banner content',
12
+ action: 'Banner action'
13
+ },
14
+ props: {
15
+ inlineActions: true
16
+ }
17
+ })
18
+
19
+ cy.get('.q-banner').get('.q-banner__actions')
20
+ .should('have.class', 'col-auto')
21
+ })
22
+ })
23
+ })
24
+
25
+ describe('Category: style', () => {
26
+ describe('(prop): dense', () => {
27
+ it('should have a dense style when "dense" prop is true', () => {
28
+ mount(QBanner, {
29
+ props: {
30
+ dense: true
31
+ }
32
+
33
+ })
34
+ cy.get('.q-banner')
35
+ .should('have.class', 'q-banner--dense')
36
+ })
37
+ })
38
+
39
+ describe('(prop): rounded', () => {
40
+ it('should have a rounded style when "rounded" prop is true', () => {
41
+ mount(QBanner, {
42
+ props: {
43
+ rounded: true
44
+ }
45
+ })
46
+
47
+ cy.get('.q-banner')
48
+ .should('have.class', 'rounded-borders')
49
+ })
50
+ })
51
+
52
+ describe('(prop): dark', () => {
53
+ it('should have a dark style when "dark" prop is true', () => {
54
+ mount(QBanner, {
55
+ props: {
56
+ dark: true
57
+ }
58
+ })
59
+
60
+ cy.get('.q-banner')
61
+ .should('have.class', 'q-banner--dark')
62
+ })
63
+ })
64
+ })
65
+ })
66
+
67
+ describe('Slots', () => {
68
+ describe('(slot): default', () => {
69
+ it('should render the default content', () => {
70
+ mount(QBanner, {
71
+ slots: {
72
+ default: 'Banner content'
73
+ }
74
+ })
75
+
76
+ cy.get('.q-banner').get('.q-banner__content')
77
+ .should('contain', 'Banner content')
78
+ })
79
+ })
80
+
81
+ describe('(slot): avatar', () => {
82
+ it('should render the avatar content', () => {
83
+ mount(QBanner, {
84
+ slots: {
85
+ avatar: 'Banner avatar'
86
+ }
87
+ })
88
+
89
+ cy.get('.q-banner').get('.q-banner__avatar')
90
+ .should('contain', 'Banner avatar')
91
+ })
92
+ })
93
+
94
+ describe('(slot): action', () => {
95
+ it('should render the action content', () => {
96
+ mount(QBanner, {
97
+ slots: {
98
+ action: 'Banner action'
99
+ }
100
+ })
101
+
102
+ cy.get('.q-banner').get('.q-banner__actions')
103
+ .should('contain', 'Banner action')
104
+ })
105
+ })
106
+ })
107
+ })
@@ -0,0 +1,46 @@
1
+ import { mount } from '@cypress/vue'
2
+ import QBar from '../QBar.js'
3
+
4
+ describe('Bar API', () => {
5
+ describe('Props', () => {
6
+ describe('Category: style', () => {
7
+ describe('(prop): dense', () => {
8
+ it('should have a dense style when "dense" prop is true', () => {
9
+ mount(QBar, {
10
+ propsData: {
11
+ dense: true
12
+ }
13
+ })
14
+ cy.get('.q-bar')
15
+ .should('have.class', 'q-bar--dense')
16
+ })
17
+ })
18
+
19
+ describe('(prop): dark', () => {
20
+ it('should have a dark style when "dark" prop is true', () => {
21
+ mount(QBar, {
22
+ propsData: {
23
+ dark: true
24
+ }
25
+ })
26
+ cy.get('.q-bar')
27
+ .should('have.class', 'q-bar--dark')
28
+ })
29
+ })
30
+ })
31
+ })
32
+
33
+ describe('Slots', () => {
34
+ describe('(slot): default', () => {
35
+ it('should render the default slot', () => {
36
+ mount(QBar, {
37
+ slots: {
38
+ default: 'default bar slot'
39
+ }
40
+ })
41
+ cy.get('.q-bar')
42
+ .should('contain', 'default bar slot')
43
+ })
44
+ })
45
+ })
46
+ })
@@ -166,7 +166,7 @@ export default function (props, emit, emitValue, inputRef) {
166
166
  '^'
167
167
  + unmask.join('')
168
168
  + '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?'
169
- + '$'
169
+ + '[' + unmaskChar + ']*$'
170
170
  ),
171
171
  extractLast = extract.length - 1,
172
172
  extractMatcher = extract.map((re, index) => {
@@ -111,10 +111,7 @@ export default createComponent({
111
111
 
112
112
  const directives = computed(() => {
113
113
  // if props.disable === false
114
- const modifiers = {
115
- down: true,
116
- mightPrevent: true
117
- }
114
+ const modifiers = { down: true }
118
115
 
119
116
  if (props.noMouse !== true) {
120
117
  modifiers.mouse = true
@@ -572,8 +572,8 @@ export default createComponent({
572
572
 
573
573
  recalculateScroll()
574
574
 
575
- // if it's a QTab
576
- if (tabData.routeData === void 0) {
575
+ // if it's a QTab or we don't have Vue Router
576
+ if (tabData.routeData === void 0 || proxy.$route === void 0) {
577
577
  // we should position to the currently active tab (if any)
578
578
  registerScrollToTabTimeout(() => {
579
579
  if (scrollable.value === true) {
@@ -68,6 +68,7 @@ export default createComponent({
68
68
 
69
69
  duration: Number,
70
70
  noConnectors: Boolean,
71
+ noTransition: Boolean,
71
72
 
72
73
  noNodesLabel: String,
73
74
  noResultsLabel: String
@@ -140,7 +141,6 @@ export default createComponent({
140
141
  const
141
142
  key = node[ props.nodeKey ],
142
143
  isParent = node[ props.childrenKey ] && node[ props.childrenKey ].length > 0,
143
- isLeaf = isParent !== true,
144
144
  selectable = node.disabled !== true && hasSelection.value === true && node.selectable !== false,
145
145
  expandable = node.disabled !== true && node.expandable !== false,
146
146
  hasTicking = tickStrategy !== 'none',
@@ -166,7 +166,6 @@ export default createComponent({
166
166
  key,
167
167
  parent,
168
168
  isParent,
169
- isLeaf,
170
169
  lazy: localLazy,
171
170
  disabled: node.disabled,
172
171
  link: node.disabled !== true && (selectable === true || (expandable === true && (isParent === true || localLazy === true))),
@@ -186,7 +185,7 @@ export default createComponent({
186
185
  leafTicking,
187
186
  ticked: strictTicking === true
188
187
  ? innerTicked.value.includes(key)
189
- : (isLeaf === true ? innerTicked.value.includes(key) : false)
188
+ : (isParent === true ? false : innerTicked.value.includes(key))
190
189
  }
191
190
 
192
191
  meta[ key ] = m
@@ -586,23 +585,37 @@ export default createComponent({
586
585
  ]),
587
586
 
588
587
  isParent === true
589
- ? h(QSlideTransition, {
590
- duration: props.duration,
591
- onShow,
592
- onHide
593
- }, () => withDirectives(
594
- h('div', {
595
- class: 'q-tree__node-collapsible' + textColorClass.value,
596
- key: `${ key }__q`
597
- }, [
598
- body,
599
- h('div', {
600
- class: 'q-tree__children'
601
- + (m.disabled === true ? ' q-tree__node--disabled' : '')
602
- }, children)
603
- ]),
604
- [ [ vShow, m.expanded ] ]
605
- ))
588
+ ? (
589
+ props.noTransition === true
590
+ ? h('div', {
591
+ class: 'q-tree__node-collapsible' + textColorClass.value,
592
+ key: `${ key }__q`
593
+ }, [
594
+ body,
595
+ h('div', {
596
+ class: 'q-tree__children'
597
+ + (m.disabled === true ? ' q-tree__node--disabled' : '')
598
+ }, m.expanded ? children : null)
599
+ ])
600
+
601
+ : h(QSlideTransition, {
602
+ duration: props.duration,
603
+ onShow,
604
+ onHide
605
+ }, () => withDirectives(
606
+ h('div', {
607
+ class: 'q-tree__node-collapsible' + textColorClass.value,
608
+ key: `${ key }__q`
609
+ }, [
610
+ body,
611
+ h('div', {
612
+ class: 'q-tree__children'
613
+ + (m.disabled === true ? ' q-tree__node--disabled' : '')
614
+ }, children)
615
+ ]),
616
+ [ [ vShow, m.expanded ] ]
617
+ ))
618
+ )
606
619
  : body
607
620
  ])
608
621
  }
@@ -126,6 +126,13 @@
126
126
  "category": "behavior"
127
127
  },
128
128
 
129
+ "no-transition": {
130
+ "type": "Boolean",
131
+ "desc": "Turn off transition effects when expanding/collapsing nodes; Also enhances perf by a lot as a side-effect; Recommended for big trees",
132
+ "category": "behavior",
133
+ "addedIn": "v2.9.2"
134
+ },
135
+
129
136
  "filter": {
130
137
  "type": "String",
131
138
  "desc": "The text value to be used for filtering nodes",
@@ -126,9 +126,16 @@ export default createDirective(__QUASAR_SSR_SERVER__
126
126
 
127
127
  el.__qtouchhold = ctx
128
128
 
129
- modifiers.mouse === true && addEvt(ctx, 'main', [
130
- [ el, 'mousedown', 'mouseStart', `passive${ modifiers.mouseCapture === true ? 'Capture' : '' }` ]
131
- ])
129
+ if (modifiers.mouse === true) {
130
+ // account for UMD too where modifiers will be lowercased to work
131
+ const capture = modifiers.mouseCapture === true || modifiers.mousecapture === true
132
+ ? 'Capture'
133
+ : ''
134
+
135
+ addEvt(ctx, 'main', [
136
+ [ el, 'mousedown', 'mouseStart', `passive${ capture }` ]
137
+ ])
138
+ }
132
139
 
133
140
  client.has.touch === true && addEvt(ctx, 'main', [
134
141
  [ el, 'touchstart', 'touchStart', `passive${ modifiers.capture === true ? 'Capture' : '' }` ],