quasar 2.3.0 → 2.3.4

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 (255) hide show
  1. package/dist/api/AppFullscreen.json +15 -8
  2. package/dist/api/BottomSheet.json +23 -2
  3. package/dist/api/Cookies.json +4 -3
  4. package/dist/api/Dialog.json +41 -12
  5. package/dist/api/Loading.json +4 -2
  6. package/dist/api/LoadingBar.json +8 -3
  7. package/dist/api/LocalStorage.json +8 -0
  8. package/dist/api/Morph.json +14 -7
  9. package/dist/api/Mutation.json +1 -1
  10. package/dist/api/Notify.json +41 -27
  11. package/dist/api/QAjaxBar.json +6 -3
  12. package/dist/api/QBreadcrumbs.json +8 -4
  13. package/dist/api/QBreadcrumbsEl.json +4 -2
  14. package/dist/api/QBtn.json +6 -3
  15. package/dist/api/QBtnDropdown.json +11 -6
  16. package/dist/api/QBtnToggle.json +4 -2
  17. package/dist/api/QCard.json +2 -1
  18. package/dist/api/QCardActions.json +2 -1
  19. package/dist/api/QCardSection.json +2 -1
  20. package/dist/api/QCarousel.json +10 -5
  21. package/dist/api/QCarouselControl.json +4 -2
  22. package/dist/api/QChatMessage.json +8 -4
  23. package/dist/api/QCheckbox.json +8 -4
  24. package/dist/api/QChip.json +2 -1
  25. package/dist/api/QCircularProgress.json +14 -7
  26. package/dist/api/QColor.json +6 -3
  27. package/dist/api/QDate.json +79 -5
  28. package/dist/api/QDialog.json +8 -4
  29. package/dist/api/QDrawer.json +10 -5
  30. package/dist/api/QEditor.json +17 -7
  31. package/dist/api/QExpansionItem.json +5 -3
  32. package/dist/api/QFab.json +11 -6
  33. package/dist/api/QFabAction.json +4 -2
  34. package/dist/api/QField.json +2 -1
  35. package/dist/api/QFile.json +7 -2
  36. package/dist/api/QFooter.json +3 -2
  37. package/dist/api/QForm.json +1 -1
  38. package/dist/api/QHeader.json +5 -3
  39. package/dist/api/QIcon.json +2 -1
  40. package/dist/api/QImg.json +8 -4
  41. package/dist/api/QInfiniteScroll.json +6 -3
  42. package/dist/api/QInnerLoading.json +8 -4
  43. package/dist/api/QInput.json +2 -1
  44. package/dist/api/QIntersection.json +17 -1
  45. package/dist/api/QItem.json +2 -1
  46. package/dist/api/QKnob.json +8 -4
  47. package/dist/api/QLayout.json +9 -1
  48. package/dist/api/QLinearProgress.json +4 -2
  49. package/dist/api/QMarkupTable.json +2 -1
  50. package/dist/api/QMenu.json +8 -4
  51. package/dist/api/QNoSsr.json +2 -1
  52. package/dist/api/QOptionGroup.json +2 -1
  53. package/dist/api/QPage.json +2 -1
  54. package/dist/api/QPageScroller.json +8 -4
  55. package/dist/api/QPageSticky.json +2 -1
  56. package/dist/api/QPagination.json +10 -6
  57. package/dist/api/QParallax.json +2 -1
  58. package/dist/api/QPopupEdit.json +5 -2
  59. package/dist/api/QPopupProxy.json +7 -4
  60. package/dist/api/QRange.json +8 -4
  61. package/dist/api/QRating.json +5 -2
  62. package/dist/api/QResizeObserver.json +4 -1
  63. package/dist/api/QRouteTab.json +5 -26
  64. package/dist/api/QScrollArea.json +32 -6
  65. package/dist/api/QScrollObserver.json +13 -1
  66. package/dist/api/QSelect.json +141 -47
  67. package/dist/api/QSeparator.json +2 -1
  68. package/dist/api/QSkeleton.json +8 -4
  69. package/dist/api/QSlideItem.json +9 -0
  70. package/dist/api/QSlideTransition.json +2 -1
  71. package/dist/api/QSlider.json +8 -4
  72. package/dist/api/QSpinner.json +2 -1
  73. package/dist/api/QSplitter.json +4 -2
  74. package/dist/api/QStep.json +2 -1
  75. package/dist/api/QStepper.json +6 -3
  76. package/dist/api/QTab.json +4 -2
  77. package/dist/api/QTabPanels.json +6 -3
  78. package/dist/api/QTable.json +216 -93
  79. package/dist/api/QTabs.json +4 -2
  80. package/dist/api/QTime.json +16 -4
  81. package/dist/api/QTimeline.json +4 -2
  82. package/dist/api/QTimelineEntry.json +4 -2
  83. package/dist/api/QToggle.json +8 -4
  84. package/dist/api/QTooltip.json +18 -9
  85. package/dist/api/QTree.json +34 -19
  86. package/dist/api/QUploader.json +93 -5
  87. package/dist/api/QVirtualScroll.json +26 -11
  88. package/dist/api/ScrollFire.json +1 -1
  89. package/dist/api/SessionStorage.json +8 -0
  90. package/dist/api/TouchHold.json +2 -1
  91. package/dist/api/TouchRepeat.json +2 -1
  92. package/dist/api/TouchSwipe.json +2 -1
  93. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  94. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  95. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  96. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  97. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  98. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  99. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  100. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  101. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  102. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  103. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  104. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  105. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  106. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  107. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  108. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  109. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  110. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  111. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  112. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +6 -0
  113. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  114. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  115. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  116. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  117. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  118. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  119. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  120. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  121. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  122. package/dist/icon-set/themify.umd.prod.js +1 -1
  123. package/dist/lang/ar.umd.prod.js +1 -1
  124. package/dist/lang/az-Latn.umd.prod.js +1 -1
  125. package/dist/lang/bg.umd.prod.js +1 -1
  126. package/dist/lang/bn.umd.prod.js +1 -1
  127. package/dist/lang/ca.umd.prod.js +1 -1
  128. package/dist/lang/cs.umd.prod.js +1 -1
  129. package/dist/lang/da.umd.prod.js +1 -1
  130. package/dist/lang/de.umd.prod.js +1 -1
  131. package/dist/lang/el.umd.prod.js +1 -1
  132. package/dist/lang/en-GB.umd.prod.js +1 -1
  133. package/dist/lang/en-US.umd.prod.js +1 -1
  134. package/dist/lang/eo.umd.prod.js +1 -1
  135. package/dist/lang/es.umd.prod.js +1 -1
  136. package/dist/lang/et.umd.prod.js +1 -1
  137. package/dist/lang/fa-IR.umd.prod.js +1 -1
  138. package/dist/lang/fa.umd.prod.js +1 -1
  139. package/dist/lang/fi.umd.prod.js +1 -1
  140. package/dist/lang/fr.umd.prod.js +1 -1
  141. package/dist/lang/gn.umd.prod.js +1 -1
  142. package/dist/lang/he.umd.prod.js +1 -1
  143. package/dist/lang/hr.umd.prod.js +1 -1
  144. package/dist/lang/hu.umd.prod.js +1 -1
  145. package/dist/lang/id.umd.prod.js +1 -1
  146. package/dist/lang/is.umd.prod.js +1 -1
  147. package/dist/lang/it.umd.prod.js +1 -1
  148. package/dist/lang/ja.umd.prod.js +1 -1
  149. package/dist/lang/km.umd.prod.js +1 -1
  150. package/dist/lang/ko-KR.umd.prod.js +1 -1
  151. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  152. package/dist/lang/lt.umd.prod.js +1 -1
  153. package/dist/lang/lu.umd.prod.js +1 -1
  154. package/dist/lang/lv.umd.prod.js +1 -1
  155. package/dist/lang/ml.umd.prod.js +1 -1
  156. package/dist/lang/ms.umd.prod.js +1 -1
  157. package/dist/lang/nb-NO.umd.prod.js +1 -1
  158. package/dist/lang/nl.umd.prod.js +1 -1
  159. package/dist/lang/pl.umd.prod.js +1 -1
  160. package/dist/lang/pt-BR.umd.prod.js +1 -1
  161. package/dist/lang/pt.umd.prod.js +1 -1
  162. package/dist/lang/ro.umd.prod.js +1 -1
  163. package/dist/lang/ru.umd.prod.js +1 -1
  164. package/dist/lang/sk.umd.prod.js +1 -1
  165. package/dist/lang/sl.umd.prod.js +1 -1
  166. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  167. package/dist/lang/sr.umd.prod.js +1 -1
  168. package/dist/lang/sv.umd.prod.js +1 -1
  169. package/dist/lang/ta.umd.prod.js +1 -1
  170. package/dist/lang/th.umd.prod.js +1 -1
  171. package/dist/lang/tr.umd.prod.js +1 -1
  172. package/dist/lang/ug.umd.prod.js +1 -1
  173. package/dist/lang/uk.umd.prod.js +1 -1
  174. package/dist/lang/vi.umd.prod.js +1 -1
  175. package/dist/lang/zh-CN.umd.prod.js +1 -1
  176. package/dist/lang/zh-TW.umd.prod.js +1 -1
  177. package/dist/quasar.cjs.prod.js +2 -2
  178. package/dist/quasar.css +8 -1
  179. package/dist/quasar.esm.prod.js +2 -2
  180. package/dist/quasar.prod.css +1 -1
  181. package/dist/quasar.rtl.css +13 -1
  182. package/dist/quasar.rtl.prod.css +1 -1
  183. package/dist/quasar.sass +40 -35
  184. package/dist/quasar.umd.js +74 -48
  185. package/dist/quasar.umd.prod.js +2 -2
  186. package/dist/ssr-directives/Morph.js +1 -1
  187. package/dist/types/api/cookies.d.ts +1 -1
  188. package/dist/types/composables.d.ts +5 -1
  189. package/dist/types/extras/icon-set.d.ts +1 -0
  190. package/dist/types/index.d.ts +519 -192
  191. package/dist/vetur/quasar-attributes.json +7 -3
  192. package/dist/vetur/quasar-tags.json +1 -0
  193. package/dist/web-types/web-types.json +26 -12
  194. package/icon-set/svg-ionicons-v6.js +225 -0
  195. package/package.json +5 -2
  196. package/src/body.js +14 -4
  197. package/src/components/btn/QBtn.js +1 -0
  198. package/src/components/btn-dropdown/QBtnDropdown.json +1 -0
  199. package/src/components/chip/QChip.json +1 -2
  200. package/src/components/circular-progress/QCircularProgress.json +1 -1
  201. package/src/components/date/QDate.json +59 -1
  202. package/src/components/editor/QEditor.js +2 -2
  203. package/src/components/editor/QEditor.json +6 -2
  204. package/src/components/expansion-item/QExpansionItem.json +2 -1
  205. package/src/components/fab/QFab.json +3 -1
  206. package/src/components/field/QField.json +3 -3
  207. package/src/components/file/QFile.json +9 -6
  208. package/src/components/footer/QFooter.json +1 -1
  209. package/src/components/form/QForm.json +2 -3
  210. package/src/components/header/QHeader.json +1 -1
  211. package/src/components/icon/QIcon.js +2 -2
  212. package/src/components/intersection/QIntersection.js +9 -1
  213. package/src/components/intersection/QIntersection.json +9 -0
  214. package/src/components/layout/QLayout.json +8 -1
  215. package/src/components/linear-progress/QLinearProgress.js +3 -2
  216. package/src/components/linear-progress/QLinearProgress.json +1 -1
  217. package/src/components/linear-progress/QLinearProgress.sass +1 -1
  218. package/src/components/pagination/QPagination.json +0 -1
  219. package/src/components/popup-edit/QPopupEdit.json +1 -0
  220. package/src/components/popup-proxy/QPopupProxy.json +2 -1
  221. package/src/components/rating/QRating.json +1 -1
  222. package/src/components/resize-observer/QResizeObserver.json +2 -0
  223. package/src/components/scroll-area/QScrollArea.js +8 -13
  224. package/src/components/scroll-area/QScrollArea.json +33 -10
  225. package/src/components/scroll-observer/QScrollObserver.json +11 -0
  226. package/src/components/select/QSelect.js +7 -3
  227. package/src/components/select/QSelect.json +88 -15
  228. package/src/components/slide-item/QSlideItem.json +9 -0
  229. package/src/components/slider/use-slider.js +3 -3
  230. package/src/components/table/QTable.js +1 -1
  231. package/src/components/table/QTable.json +155 -60
  232. package/src/components/table/table-pagination.js +4 -0
  233. package/src/components/tabs/QRouteTab.json +1 -23
  234. package/src/components/time/QTime.json +8 -0
  235. package/src/components/tree/QTree.json +26 -21
  236. package/src/components/tree/QTree.sass +45 -41
  237. package/src/components/uploader/xhr-uploader-plugin.json +105 -4
  238. package/src/components/virtual-scroll/QVirtualScroll.json +15 -0
  239. package/src/components/virtual-scroll/use-virtual-scroll.json +7 -5
  240. package/src/composables/private/use-field.js +4 -4
  241. package/src/composables/private/use-refocus-target.js +12 -3
  242. package/src/composables/private/use-split-attrs.js +10 -7
  243. package/src/composables/use-dialog-plugin-component.js +1 -0
  244. package/src/css/core/transitions.sass +3 -1
  245. package/src/directives/Mutation.json +2 -3
  246. package/src/directives/ScrollFire.json +2 -3
  247. package/src/install-quasar.js +1 -0
  248. package/src/plugins/AppFullscreen.json +8 -8
  249. package/src/plugins/Cookies.json +2 -2
  250. package/src/plugins/Dialog.json +6 -5
  251. package/src/plugins/LoadingBar.json +4 -3
  252. package/src/plugins/Notify.json +13 -19
  253. package/src/utils/private/global-dialog.json +16 -2
  254. package/src/utils/private/web-storage.json +10 -0
  255. package/wrappers/index.js +4 -0
package/dist/quasar.sass CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.3.0
2
+ * Quasar Framework v2.3.4
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -3035,7 +3035,7 @@ body.platform-ios
3035
3035
  &--dark
3036
3036
  background: rgba(255,255,255,.6)
3037
3037
  &__stripe
3038
- transition: width .3s
3038
+ transition: width var(--q-linear-progress-speed)
3039
3039
  background-image: linear-gradient(45deg, rgba(255,255,255,.15) 25%, rgba(255,255,255,0) 25%, rgba(255,255,255,0) 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, rgba(255,255,255,0) 75%, rgba(255,255,255,0)) !important
3040
3040
  background-size: 40px 40px !important
3041
3041
  @keyframes q-linear-progress--indeterminate
@@ -4904,39 +4904,42 @@ body.desktop
4904
4904
  .q-tree__node-header:before,
4905
4905
  .q-tree__node-body:after
4906
4906
  display: none !important
4907
- &--dense .q-tree
4908
- &__arrow,
4909
- &__spinner
4910
- margin-right: 1px
4911
- &__img
4912
- height: 32px
4913
- &__tickbox
4914
- margin-right: 3px
4915
- &__node
4916
- padding: 0
4917
- &:after
4918
- top: 0
4919
- left: -8px
4920
- &__node-header
4921
- margin-top: 0
4922
- padding: 1px
4923
- &:before
4924
- top: 0
4925
- left: -8px
4926
- width: 8px
4927
- &__node--child
4928
- padding-left: 17px
4929
- > .q-tree__node-header:before
4930
- left: -25px
4931
- width: 21px
4932
- &__node-body
4933
- padding: 0 0 2px
4934
- &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
4935
- padding: 0 0 2px 20px
4936
- &:after
4937
- left: 8px
4938
- &__children
4939
- padding-left: 16px
4907
+ &--dense
4908
+ > .q-tree__node--child > .q-tree__node-header
4909
+ padding-left: 1px
4910
+ .q-tree
4911
+ &__arrow,
4912
+ &__spinner
4913
+ margin-right: 1px
4914
+ &__img
4915
+ height: 32px
4916
+ &__tickbox
4917
+ margin-right: 3px
4918
+ &__node
4919
+ padding: 0
4920
+ &:after
4921
+ top: 0
4922
+ left: -8px
4923
+ &__node-header
4924
+ margin-top: 0
4925
+ padding: 1px
4926
+ &:before
4927
+ top: 0
4928
+ left: -8px
4929
+ width: 8px
4930
+ &__node--child
4931
+ padding-left: 17px
4932
+ > .q-tree__node-header:before
4933
+ left: -25px
4934
+ width: 21px
4935
+ &__node-body
4936
+ padding: 0 0 2px
4937
+ &__node--parent > .q-tree__node-collapsible > .q-tree__node-body
4938
+ padding: 0 0 2px 20px
4939
+ &:after
4940
+ left: 8px
4941
+ &__children
4942
+ padding-left: 16px
4940
4943
  [dir=rtl]
4941
4944
  .q-tree__arrow
4942
4945
  transform: rotate3d(0, 0, 1, 180deg) #{"/* rtl:ignore */"}
@@ -7023,6 +7026,8 @@ img.responsive
7023
7026
  touch-action: pan-x
7024
7027
  .q-touch-y
7025
7028
  touch-action: pan-y
7029
+ \:root
7030
+ --q-transition-duration: .3s
7026
7031
  .q-transition
7027
7032
  &--slide-right,
7028
7033
  &--slide-left,
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Quasar Framework v2.3.0
2
+ * Quasar Framework v2.3.4
3
3
  * (c) 2015-present Razvan Stoenescu
4
4
  * Released under the MIT License.
5
5
  */
@@ -1170,16 +1170,16 @@
1170
1170
  var Body = {
1171
1171
  install (opts) {
1172
1172
 
1173
- const { $q } = opts;
1174
-
1175
- $q.config.brand !== void 0 && setColors($q.config.brand);
1176
-
1177
1173
  if (this.__installed === true) { return }
1178
1174
 
1179
1175
  if (isRuntimeSsrPreHydration.value === true) {
1180
1176
  applyClientSsrCorrections();
1181
1177
  }
1182
1178
  else {
1179
+ const { $q } = opts;
1180
+
1181
+ $q.config.brand !== void 0 && setColors($q.config.brand);
1182
+
1183
1183
  const cls = getBodyClasses(client, $q.config);
1184
1184
  document.body.classList.add.apply(document.body.classList, cls);
1185
1185
  }
@@ -1437,7 +1437,7 @@
1437
1437
  }
1438
1438
 
1439
1439
  var installQuasar = function (parentApp, opts = {}) {
1440
- const $q = { version: '2.3.0' };
1440
+ const $q = { version: '2.3.4' };
1441
1441
 
1442
1442
  if (globalConfigIsFrozen === false) {
1443
1443
  if (opts.config !== void 0) {
@@ -1862,11 +1862,11 @@
1862
1862
 
1863
1863
  const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')');
1864
1864
  const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')');
1865
- const mRE = /^M/;
1865
+ const mRE = /^[Mm] ?\d/;
1866
1866
  const imgRE = /^img:/;
1867
1867
  const svgUseRE = /^svguse:/;
1868
1868
  const ionRE = /^ion-/;
1869
- const faLaRE = /^[l|f]a[s|r|l|b|d]? /;
1869
+ const faLaRE = /^[lf]a[srlbdk]? /;
1870
1870
 
1871
1871
  var QIcon = createComponent({
1872
1872
  name: 'QIcon',
@@ -3448,6 +3448,7 @@
3448
3448
  }
3449
3449
 
3450
3450
  function onLoadingEvt (evt) {
3451
+ stopAndPrevent(evt);
3451
3452
  evt.qSkipRipple = true;
3452
3453
  }
3453
3454
 
@@ -7028,12 +7029,21 @@
7028
7029
  });
7029
7030
 
7030
7031
  function refocusTarget (e) {
7032
+ const root = rootRef.value;
7033
+
7031
7034
  if (e !== void 0 && e.type.indexOf('key') === 0) {
7032
- if (document.activeElement !== rootRef.value && rootRef.value.contains(document.activeElement) === true) {
7033
- rootRef.value.focus();
7035
+ if (
7036
+ root !== null
7037
+ && document.activeElement !== root
7038
+ && root.contains(document.activeElement) === true
7039
+ ) {
7040
+ root.focus();
7034
7041
  }
7035
7042
  }
7036
- else if ((e === void 0 || rootRef.value.contains(e.target) === true) && refocusRef.value !== null) {
7043
+ else if (
7044
+ refocusRef.value !== null
7045
+ && (e === void 0 || (root !== null && root.contains(e.target) === true))
7046
+ ) {
7037
7047
  refocusRef.value.focus();
7038
7048
  }
7039
7049
  }
@@ -8286,7 +8296,7 @@
8286
8296
  }
8287
8297
 
8288
8298
  function onPan (event) {
8289
- if (event.isFinal) {
8299
+ if (event.isFinal === true) {
8290
8300
  if (dragging.value !== void 0) {
8291
8301
  updatePosition(event.evt);
8292
8302
  // only if touch, because we also have mousedown/up:
@@ -8296,7 +8306,7 @@
8296
8306
  }
8297
8307
  active.value = false;
8298
8308
  }
8299
- else if (event.isFirst) {
8309
+ else if (event.isFirst === true) {
8300
8310
  dragging.value = getDragging(event.evt);
8301
8311
  updatePosition(event.evt);
8302
8312
  updateValue();
@@ -8326,7 +8336,7 @@
8326
8336
  function onDeactivate () {
8327
8337
  preventFocus.value = false;
8328
8338
 
8329
- if (dragging.value === void 0) {
8339
+ if (dragging.value === false) {
8330
8340
  active.value = false;
8331
8341
  }
8332
8342
 
@@ -15883,27 +15893,30 @@
15883
15893
 
15884
15894
  const listenerRE = /^on[A-Z]/;
15885
15895
 
15886
- function useSplitAttrs (attrs) {
15896
+ function useSplitAttrs (attrs, vnode) {
15887
15897
  const acc = {
15888
15898
  listeners: vue.ref({}),
15889
15899
  attributes: vue.ref({})
15890
15900
  };
15891
15901
 
15892
15902
  function update () {
15893
- const listeners = {};
15894
15903
  const attributes = {};
15904
+ const listeners = {};
15895
15905
 
15896
15906
  Object.keys(attrs).forEach(key => {
15897
- if (listenerRE.test(key) === true) {
15898
- listeners[ key ] = attrs[ key ];
15899
- }
15900
- else if (key !== 'class' && key !== 'style') {
15907
+ if (key !== 'class' && key !== 'style' && listenerRE.test(key) === false) {
15901
15908
  attributes[ key ] = attrs[ key ];
15902
15909
  }
15903
15910
  });
15904
15911
 
15905
- acc.listeners.value = listeners;
15912
+ Object.keys(vnode.props).forEach(key => {
15913
+ if (listenerRE.test(key) === true) {
15914
+ listeners[ key ] = vnode.props[ key ];
15915
+ }
15916
+ });
15917
+
15906
15918
  acc.attributes.value = attributes;
15919
+ acc.listeners.value = listeners;
15907
15920
  }
15908
15921
 
15909
15922
  vue.onBeforeUpdate(update);
@@ -16064,12 +16077,12 @@
16064
16077
  ],
16065
16078
 
16066
16079
  setup (props, { slots, emit, attrs }) {
16067
- const { proxy } = vue.getCurrentInstance();
16080
+ const { proxy, vnode } = vue.getCurrentInstance();
16068
16081
  const { $q } = proxy;
16069
16082
 
16070
16083
  const isDark = useDark(props, $q);
16071
16084
  const { inFullscreen, toggleFullscreen } = useFullscreen();
16072
- const splitAttrs = useSplitAttrs(attrs);
16085
+ const splitAttrs = useSplitAttrs(attrs, vnode);
16073
16086
 
16074
16087
  const rootRef = vue.ref(null);
16075
16088
  const contentRef = vue.ref(null);
@@ -17752,7 +17765,7 @@
17752
17765
  const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur', 'popup-show', 'popup-hide' ];
17753
17766
 
17754
17767
  function useFieldState () {
17755
- const { props, attrs, proxy } = vue.getCurrentInstance();
17768
+ const { props, attrs, proxy, vnode } = vue.getCurrentInstance();
17756
17769
 
17757
17770
  const isDark = useDark(props, proxy.$q);
17758
17771
 
@@ -17765,9 +17778,9 @@
17765
17778
 
17766
17779
  innerLoading: vue.ref(false),
17767
17780
  focused: vue.ref(false),
17768
- hasPopupOpen: vue.ref(false),
17781
+ hasPopupOpen: false,
17769
17782
 
17770
- splitAttrs: useSplitAttrs(attrs),
17783
+ splitAttrs: useSplitAttrs(attrs, vnode),
17771
17784
  targetUid: vue.ref(getTargetUid(props.for)),
17772
17785
 
17773
17786
  rootRef: vue.ref(null),
@@ -17978,7 +17991,7 @@
17978
17991
  focusoutTimer = setTimeout(() => {
17979
17992
  if (
17980
17993
  document.hasFocus() === true && (
17981
- state.hasPopupOpen.value === true
17994
+ state.hasPopupOpen === true
17982
17995
  || (
17983
17996
  state.controlRef !== void 0
17984
17997
  && (
@@ -21007,6 +21020,10 @@
21007
21020
 
21008
21021
  once: Boolean,
21009
21022
  transition: String,
21023
+ transitionDuration: {
21024
+ type: [ String, Number ],
21025
+ default: 300
21026
+ },
21010
21027
 
21011
21028
  ssrPrerender: Boolean,
21012
21029
 
@@ -21052,6 +21069,10 @@
21052
21069
  ] ]
21053
21070
  });
21054
21071
 
21072
+ const transitionStyle = vue.computed(
21073
+ () => `--q-transition-duration: ${ props.transitionDuration }ms`
21074
+ );
21075
+
21055
21076
  function trigger (entry) {
21056
21077
  if (showing.value !== entry.isIntersecting) {
21057
21078
  showing.value = entry.isIntersecting;
@@ -21061,7 +21082,7 @@
21061
21082
 
21062
21083
  function getContent () {
21063
21084
  return showing.value === true
21064
- ? [ vue.h('div', { key: 'content' }, hSlot(slots.default)) ]
21085
+ ? [ vue.h('div', { key: 'content', style: transitionStyle.value }, hSlot(slots.default)) ]
21065
21086
  : void 0
21066
21087
  }
21067
21088
 
@@ -23341,6 +23362,7 @@
23341
23362
  const sizeStyle = useSize(props, defaultSizes);
23342
23363
 
23343
23364
  const motion = vue.computed(() => props.indeterminate === true || props.query === true);
23365
+ const widthReverse = vue.computed(() => props.reverse !== props.query);
23344
23366
  const style = vue.computed(() => ({
23345
23367
  ...(sizeStyle.value !== null ? sizeStyle.value : {}),
23346
23368
  '--q-linear-progress-speed': `${ props.animationSpeed }ms`
@@ -23353,7 +23375,7 @@
23353
23375
  + (props.rounded === true ? ' rounded-borders' : '')
23354
23376
  );
23355
23377
 
23356
- const trackStyle = vue.computed(() => width(props.buffer !== void 0 ? props.buffer : 1, props.reverse, proxy.$q));
23378
+ const trackStyle = vue.computed(() => width(props.buffer !== void 0 ? props.buffer : 1, widthReverse.value, proxy.$q));
23357
23379
  const trackClass = vue.computed(() =>
23358
23380
  'q-linear-progress__track absolute-full'
23359
23381
  + ` q-linear-progress__track--with${ props.instantFeedback === true ? 'out' : '' }-transition`
@@ -23361,7 +23383,7 @@
23361
23383
  + (props.trackColor !== void 0 ? ` bg-${ props.trackColor }` : '')
23362
23384
  );
23363
23385
 
23364
- const modelStyle = vue.computed(() => width(motion.value === true ? 1 : props.value, props.reverse, proxy.$q));
23386
+ const modelStyle = vue.computed(() => width(motion.value === true ? 1 : props.value, widthReverse.value, proxy.$q));
23365
23387
  const modelClass = vue.computed(() =>
23366
23388
  'q-linear-progress__model absolute-full'
23367
23389
  + ` q-linear-progress__model--with${ props.instantFeedback === true ? 'out' : '' }-transition`
@@ -24379,6 +24401,11 @@
24379
24401
  vertical: { offset: 'offsetY', scroll: 'scrollTop', dir: 'down', dist: 'y' },
24380
24402
  horizontal: { offset: 'offsetX', scroll: 'scrollLeft', dir: 'right', dist: 'x' }
24381
24403
  };
24404
+ const panOpts = {
24405
+ prevent: true,
24406
+ mouse: true,
24407
+ mouseAllDir: true
24408
+ };
24382
24409
 
24383
24410
  var QScrollArea = createComponent({
24384
24411
  name: 'QScrollArea',
@@ -24534,7 +24561,7 @@
24534
24561
  );
24535
24562
 
24536
24563
  const mainStyle = vue.computed(() => (
24537
- scroll.vertical.thumbHidden.value === true || scroll.horizontal.thumbHidden.value === true
24564
+ scroll.vertical.thumbHidden.value === true && scroll.horizontal.thumbHidden.value === true
24538
24565
  ? props.contentStyle
24539
24566
  : props.contentActiveStyle
24540
24567
  ));
@@ -24543,24 +24570,14 @@
24543
24570
  TouchPan,
24544
24571
  e => { onPanThumb(e, 'vertical'); },
24545
24572
  void 0,
24546
- {
24547
- vertical: true,
24548
- prevent: true,
24549
- mouse: true,
24550
- mouseAllDir: true
24551
- }
24573
+ { vertical: true, ...panOpts }
24552
24574
  ] ];
24553
24575
 
24554
24576
  const thumbHorizDir = [ [
24555
24577
  TouchPan,
24556
24578
  e => { onPanThumb(e, 'horizontal'); },
24557
24579
  void 0,
24558
- {
24559
- horizontal: true,
24560
- prevent: true,
24561
- mouse: true,
24562
- mouseAllDir: true
24563
- }
24580
+ { horizontal: true, ...panOpts }
24564
24581
  ] ];
24565
24582
 
24566
24583
  function getScroll () {
@@ -26671,7 +26688,7 @@
26671
26688
  function getDialog () {
26672
26689
  const content = [
26673
26690
  vue.h(QField, {
26674
- class: `col-auto ${ state.fieldClass }`,
26691
+ class: `col-auto ${ state.fieldClass.value }`,
26675
26692
  ...innerFieldProps.value,
26676
26693
  for: state.targetUid.value,
26677
26694
  dark: isOptionsDark.value,
@@ -26837,14 +26854,14 @@
26837
26854
  function onControlPopupShow (e) {
26838
26855
  e !== void 0 && stop(e);
26839
26856
  emit('popup-show', e);
26840
- state.hasPopupOpen.value = true;
26857
+ state.hasPopupOpen = true;
26841
26858
  state.onControlFocusin(e);
26842
26859
  }
26843
26860
 
26844
26861
  function onControlPopupHide (e) {
26845
26862
  e !== void 0 && stop(e);
26846
26863
  emit('popup-hide', e);
26847
- state.hasPopupOpen.value = false;
26864
+ state.hasPopupOpen = false;
26848
26865
  state.onControlFocusout(e);
26849
26866
  }
26850
26867
 
@@ -26916,6 +26933,10 @@
26916
26933
  ) {
26917
26934
  return hasDialog === true ? getDialog() : getMenu()
26918
26935
  }
26936
+ else if (state.hasPopupOpen === true) {
26937
+ // explicitly set it otherwise TAB will not blur component
26938
+ state.hasPopupOpen = false;
26939
+ }
26919
26940
  },
26920
26941
 
26921
26942
  controlEvents: {
@@ -30321,6 +30342,10 @@
30321
30342
  vue.nextTick(() => {
30322
30343
  emit('request', {
30323
30344
  pagination: prop.pagination || computedPagination.value,
30345
+ // FIXME: 'props.filter' is string/object, but 'prop.filter' can be controlled by the user, and the docs are suggesting 'prop.filter' is a function
30346
+ // So, value of 'filter' becomes function/string/object, which makes a lot of things unpredictable and can break things
30347
+ // Either update the docs to say 'prop.filter' should be a string/object, or use 'prop.filter || props.filterMethod' or maybe get 'computedFilterFunction' here and use that instead of 'props.filterMethod'
30348
+ // The examples on our docs are using 'filter' as a string in onRequest handler, but the JSON API is saying 'filter' is a function
30324
30349
  filter: prop.filter || props.filter,
30325
30350
  getCellValue
30326
30351
  });
@@ -31232,7 +31257,7 @@
31232
31257
  topSelection = slots[ 'top-selection' ],
31233
31258
  hasSelection = hasSelectionMode.value === true
31234
31259
  && topSelection !== void 0
31235
- && rowsSelectedNumber.vaue > 0,
31260
+ && rowsSelectedNumber.value > 0,
31236
31261
  topClass = 'q-table__top relative-position row items-center';
31237
31262
 
31238
31263
  if (top !== void 0) {
@@ -38728,6 +38753,7 @@
38728
38753
  }
38729
38754
  }
38730
38755
 
38756
+ // Don't forget to update the types in "ui/types/composables.d.ts"
38731
38757
  const emits = [ 'ok', 'hide' ];
38732
38758
 
38733
38759
  useDialogPluginComponent.emits = emits;
@@ -38787,7 +38813,7 @@
38787
38813
  });
38788
38814
 
38789
38815
  var index_umd = {
38790
- version: '2.3.0',
38816
+ version: '2.3.4',
38791
38817
  install (app, opts) {
38792
38818
  installQuasar(app, {
38793
38819
  components,