quasar 2.3.1 → 2.4.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.
Files changed (315) hide show
  1. package/dist/api/AppFullscreen.json +15 -8
  2. package/dist/api/BottomSheet.json +6 -0
  3. package/dist/api/Cookies.json +4 -3
  4. package/dist/api/Dialog.json +24 -10
  5. package/dist/api/Loading.json +0 -2
  6. package/dist/api/LoadingBar.json +8 -3
  7. package/dist/api/Morph.json +14 -7
  8. package/dist/api/Mutation.json +1 -1
  9. package/dist/api/Notify.json +41 -27
  10. package/dist/api/QAjaxBar.json +6 -3
  11. package/dist/api/QBreadcrumbs.json +8 -4
  12. package/dist/api/QBreadcrumbsEl.json +35 -12
  13. package/dist/api/QBtn.json +36 -17
  14. package/dist/api/QBtnDropdown.json +41 -20
  15. package/dist/api/QBtnToggle.json +7 -2
  16. package/dist/api/QCard.json +2 -1
  17. package/dist/api/QCardActions.json +2 -1
  18. package/dist/api/QCardSection.json +2 -1
  19. package/dist/api/QCarousel.json +10 -5
  20. package/dist/api/QCarouselControl.json +4 -2
  21. package/dist/api/QChatMessage.json +0 -4
  22. package/dist/api/QCheckbox.json +8 -4
  23. package/dist/api/QChip.json +2 -1
  24. package/dist/api/QCircularProgress.json +14 -7
  25. package/dist/api/QColor.json +6 -3
  26. package/dist/api/QDate.json +33 -5
  27. package/dist/api/QDialog.json +8 -4
  28. package/dist/api/QDrawer.json +10 -5
  29. package/dist/api/QEditor.json +10 -5
  30. package/dist/api/QExpansionItem.json +36 -13
  31. package/dist/api/QFab.json +41 -6
  32. package/dist/api/QFabAction.json +12 -2
  33. package/dist/api/QField.json +3 -1
  34. package/dist/api/QFile.json +8 -2
  35. package/dist/api/QFooter.json +2 -1
  36. package/dist/api/QForm.json +1 -1
  37. package/dist/api/QHeader.json +4 -2
  38. package/dist/api/QIcon.json +2 -1
  39. package/dist/api/QImg.json +8 -4
  40. package/dist/api/QInfiniteScroll.json +6 -3
  41. package/dist/api/QInnerLoading.json +8 -4
  42. package/dist/api/QInput.json +3 -1
  43. package/dist/api/QIntersection.json +4 -2
  44. package/dist/api/QItem.json +33 -11
  45. package/dist/api/QKnob.json +8 -4
  46. package/dist/api/QLayout.json +9 -1
  47. package/dist/api/QLinearProgress.json +4 -2
  48. package/dist/api/QMarkupTable.json +2 -1
  49. package/dist/api/QMenu.json +8 -4
  50. package/dist/api/QNoSsr.json +2 -1
  51. package/dist/api/QOptionGroup.json +76 -5
  52. package/dist/api/QPage.json +2 -1
  53. package/dist/api/QPageScroller.json +8 -4
  54. package/dist/api/QPageSticky.json +2 -1
  55. package/dist/api/QPagination.json +10 -6
  56. package/dist/api/QParallax.json +2 -1
  57. package/dist/api/QPopupEdit.json +5 -2
  58. package/dist/api/QPopupProxy.json +7 -4
  59. package/dist/api/QRange.json +600 -111
  60. package/dist/api/QRating.json +5 -2
  61. package/dist/api/QResizeObserver.json +4 -1
  62. package/dist/api/QRouteTab.json +35 -13
  63. package/dist/api/QScrollArea.json +29 -6
  64. package/dist/api/QScrollObserver.json +13 -1
  65. package/dist/api/QSelect.json +76 -47
  66. package/dist/api/QSeparator.json +2 -1
  67. package/dist/api/QSkeleton.json +8 -4
  68. package/dist/api/QSlideItem.json +9 -0
  69. package/dist/api/QSlideTransition.json +2 -1
  70. package/dist/api/QSlider.json +512 -43
  71. package/dist/api/QSpinner.json +2 -1
  72. package/dist/api/QSplitter.json +4 -2
  73. package/dist/api/QStep.json +2 -1
  74. package/dist/api/QStepper.json +6 -3
  75. package/dist/api/QTab.json +4 -2
  76. package/dist/api/QTabPanels.json +6 -3
  77. package/dist/api/QTable.json +154 -88
  78. package/dist/api/QTabs.json +4 -2
  79. package/dist/api/QTime.json +16 -4
  80. package/dist/api/QTimeline.json +4 -2
  81. package/dist/api/QTimelineEntry.json +4 -2
  82. package/dist/api/QToggle.json +8 -4
  83. package/dist/api/QTooltip.json +18 -9
  84. package/dist/api/QTree.json +34 -19
  85. package/dist/api/QUploader.json +28 -6
  86. package/dist/api/QVirtualScroll.json +26 -11
  87. package/dist/api/ScrollFire.json +1 -1
  88. package/dist/api/TouchHold.json +2 -1
  89. package/dist/api/TouchRepeat.json +2 -1
  90. package/dist/api/TouchSwipe.json +2 -1
  91. package/dist/icon-set/bootstrap-icons.umd.prod.js +1 -1
  92. package/dist/icon-set/eva-icons.umd.prod.js +1 -1
  93. package/dist/icon-set/fontawesome-v5-pro.umd.prod.js +1 -1
  94. package/dist/icon-set/fontawesome-v5.umd.prod.js +1 -1
  95. package/dist/icon-set/ionicons-v4.umd.prod.js +1 -1
  96. package/dist/icon-set/line-awesome.umd.prod.js +1 -1
  97. package/dist/icon-set/material-icons-outlined.umd.prod.js +1 -1
  98. package/dist/icon-set/material-icons-round.umd.prod.js +1 -1
  99. package/dist/icon-set/material-icons-sharp.umd.prod.js +1 -1
  100. package/dist/icon-set/material-icons.umd.prod.js +1 -1
  101. package/dist/icon-set/mdi-v3.umd.prod.js +1 -1
  102. package/dist/icon-set/mdi-v4.umd.prod.js +1 -1
  103. package/dist/icon-set/mdi-v5.umd.prod.js +1 -1
  104. package/dist/icon-set/mdi-v6.umd.prod.js +1 -1
  105. package/dist/icon-set/svg-bootstrap-icons.umd.prod.js +1 -1
  106. package/dist/icon-set/svg-eva-icons.umd.prod.js +1 -1
  107. package/dist/icon-set/svg-fontawesome-v5.umd.prod.js +1 -1
  108. package/dist/icon-set/svg-ionicons-v4.umd.prod.js +1 -1
  109. package/dist/icon-set/svg-ionicons-v5.umd.prod.js +1 -1
  110. package/dist/icon-set/svg-ionicons-v6.umd.prod.js +6 -0
  111. package/dist/icon-set/svg-line-awesome.umd.prod.js +1 -1
  112. package/dist/icon-set/svg-material-icons-outlined.umd.prod.js +1 -1
  113. package/dist/icon-set/svg-material-icons-round.umd.prod.js +1 -1
  114. package/dist/icon-set/svg-material-icons-sharp.umd.prod.js +1 -1
  115. package/dist/icon-set/svg-material-icons.umd.prod.js +1 -1
  116. package/dist/icon-set/svg-mdi-v4.umd.prod.js +1 -1
  117. package/dist/icon-set/svg-mdi-v5.umd.prod.js +1 -1
  118. package/dist/icon-set/svg-mdi-v6.umd.prod.js +1 -1
  119. package/dist/icon-set/svg-themify.umd.prod.js +1 -1
  120. package/dist/icon-set/themify.umd.prod.js +1 -1
  121. package/dist/lang/ar.umd.prod.js +1 -1
  122. package/dist/lang/az-Latn.umd.prod.js +1 -1
  123. package/dist/lang/bg.umd.prod.js +1 -1
  124. package/dist/lang/bn.umd.prod.js +1 -1
  125. package/dist/lang/ca.umd.prod.js +1 -1
  126. package/dist/lang/cs.umd.prod.js +1 -1
  127. package/dist/lang/da.umd.prod.js +1 -1
  128. package/dist/lang/de.umd.prod.js +1 -1
  129. package/dist/lang/el.umd.prod.js +1 -1
  130. package/dist/lang/en-GB.umd.prod.js +1 -1
  131. package/dist/lang/en-US.umd.prod.js +1 -1
  132. package/dist/lang/eo.umd.prod.js +1 -1
  133. package/dist/lang/es.umd.prod.js +1 -1
  134. package/dist/lang/et.umd.prod.js +1 -1
  135. package/dist/lang/fa-IR.umd.prod.js +1 -1
  136. package/dist/lang/fa.umd.prod.js +1 -1
  137. package/dist/lang/fi.umd.prod.js +1 -1
  138. package/dist/lang/fr.umd.prod.js +1 -1
  139. package/dist/lang/gn.umd.prod.js +1 -1
  140. package/dist/lang/he.umd.prod.js +1 -1
  141. package/dist/lang/hr.umd.prod.js +1 -1
  142. package/dist/lang/hu.umd.prod.js +1 -1
  143. package/dist/lang/id.umd.prod.js +1 -1
  144. package/dist/lang/is.umd.prod.js +1 -1
  145. package/dist/lang/it.umd.prod.js +1 -1
  146. package/dist/lang/ja.umd.prod.js +1 -1
  147. package/dist/lang/km.umd.prod.js +1 -1
  148. package/dist/lang/ko-KR.umd.prod.js +1 -1
  149. package/dist/lang/kur-CKB.umd.prod.js +1 -1
  150. package/dist/lang/lt.umd.prod.js +1 -1
  151. package/dist/lang/lu.umd.prod.js +1 -1
  152. package/dist/lang/lv.umd.prod.js +1 -1
  153. package/dist/lang/ml.umd.prod.js +1 -1
  154. package/dist/lang/ms.umd.prod.js +1 -1
  155. package/dist/lang/nb-NO.umd.prod.js +1 -1
  156. package/dist/lang/nl.umd.prod.js +1 -1
  157. package/dist/lang/pl.umd.prod.js +1 -1
  158. package/dist/lang/pt-BR.umd.prod.js +1 -1
  159. package/dist/lang/pt.umd.prod.js +1 -1
  160. package/dist/lang/ro.umd.prod.js +1 -1
  161. package/dist/lang/ru.umd.prod.js +1 -1
  162. package/dist/lang/sk.umd.prod.js +1 -1
  163. package/dist/lang/sl.umd.prod.js +1 -1
  164. package/dist/lang/sr-CYR.umd.prod.js +1 -1
  165. package/dist/lang/sr.umd.prod.js +1 -1
  166. package/dist/lang/sv.umd.prod.js +1 -1
  167. package/dist/lang/ta.umd.prod.js +1 -1
  168. package/dist/lang/th.umd.prod.js +1 -1
  169. package/dist/lang/tr.umd.prod.js +1 -1
  170. package/dist/lang/ug.umd.prod.js +1 -1
  171. package/dist/lang/uk.umd.prod.js +1 -1
  172. package/dist/lang/vi.umd.prod.js +1 -1
  173. package/dist/lang/zh-CN.umd.prod.js +1 -1
  174. package/dist/lang/zh-TW.umd.prod.js +1 -1
  175. package/dist/quasar.cjs.prod.js +2 -2
  176. package/dist/quasar.css +268 -184
  177. package/dist/quasar.esm.prod.js +2 -2
  178. package/dist/quasar.prod.css +1 -1
  179. package/dist/quasar.rtl.css +340 -263
  180. package/dist/quasar.rtl.prod.css +1 -1
  181. package/dist/quasar.sass +272 -212
  182. package/dist/quasar.umd.js +16532 -16216
  183. package/dist/quasar.umd.prod.js +2 -2
  184. package/dist/ssr-directives/Morph.js +1 -1
  185. package/dist/transforms/loader-asset-urls.json +20 -0
  186. package/dist/types/api/cookies.d.ts +1 -1
  187. package/dist/types/api/slider.d.ts +46 -0
  188. package/dist/types/api/validation.d.ts +4 -0
  189. package/dist/types/api.d.ts +2 -0
  190. package/dist/types/composables.d.ts +7 -3
  191. package/dist/types/extras/icon-set.d.ts +1 -0
  192. package/dist/types/index.d.ts +759 -177
  193. package/dist/vetur/quasar-attributes.json +251 -83
  194. package/dist/vetur/quasar-tags.json +59 -17
  195. package/dist/web-types/web-types.json +587 -155
  196. package/icon-set/svg-ionicons-v6.js +225 -0
  197. package/package.json +2 -2
  198. package/src/api.extends.json +0 -1
  199. package/src/components/breadcrumbs/QBreadcrumbs.js +7 -2
  200. package/src/components/breadcrumbs/QBreadcrumbs.sass +0 -3
  201. package/src/components/breadcrumbs/QBreadcrumbsEl.js +14 -8
  202. package/src/components/btn/QBtn.js +6 -5
  203. package/src/components/btn/use-btn.js +21 -21
  204. package/src/components/btn/use-btn.json +22 -13
  205. package/src/components/btn-dropdown/QBtnDropdown.json +1 -0
  206. package/src/components/btn-toggle/QBtnToggle.json +3 -0
  207. package/src/components/checkbox/use-checkbox.js +1 -1
  208. package/src/components/chip/QChip.json +1 -2
  209. package/src/components/color/QColor.js +32 -26
  210. package/src/components/color/QColor.sass +10 -23
  211. package/src/components/date/QDate.json +25 -1
  212. package/src/components/date/QDate.sass +2 -0
  213. package/src/components/drawer/QDrawer.js +18 -15
  214. package/src/components/editor/QEditor.js +3 -3
  215. package/src/components/editor/QEditor.sass +10 -1
  216. package/src/components/expansion-item/QExpansionItem.js +4 -1
  217. package/src/components/expansion-item/QExpansionItem.json +2 -1
  218. package/src/components/fab/QFab.js +18 -12
  219. package/src/components/fab/QFab.json +36 -1
  220. package/src/components/fab/QFab.sass +1 -1
  221. package/src/components/fab/QFabAction.js +14 -7
  222. package/src/components/fab/QFabAction.json +10 -0
  223. package/src/components/field/QField.json +3 -3
  224. package/src/components/file/QFile.js +12 -5
  225. package/src/components/file/QFile.json +9 -6
  226. package/src/components/file/QFile.sass +4 -2
  227. package/src/components/footer/QFooter.js +1 -1
  228. package/src/components/form/QForm.json +2 -3
  229. package/src/components/header/QHeader.js +1 -1
  230. package/src/components/icon/QIcon.js +2 -2
  231. package/src/components/infinite-scroll/QInfiniteScroll.js +4 -5
  232. package/src/components/item/QItem.js +2 -3
  233. package/src/components/layout/QLayout.json +8 -1
  234. package/src/components/linear-progress/QLinearProgress.js +3 -2
  235. package/src/components/linear-progress/QLinearProgress.sass +1 -1
  236. package/src/components/option-group/QOptionGroup.js +3 -0
  237. package/src/components/option-group/QOptionGroup.json +48 -2
  238. package/src/components/pagination/QPagination.json +0 -1
  239. package/src/components/parallax/QParallax.js +4 -2
  240. package/src/components/popup-edit/QPopupEdit.js +2 -5
  241. package/src/components/popup-edit/QPopupEdit.json +1 -0
  242. package/src/components/popup-proxy/QPopupProxy.json +2 -1
  243. package/src/components/radio/QRadio.js +2 -7
  244. package/src/components/range/QRange.js +103 -222
  245. package/src/components/range/QRange.json +11 -121
  246. package/src/components/rating/QRating.json +1 -1
  247. package/src/components/resize-observer/QResizeObserver.json +2 -0
  248. package/src/components/scroll-area/QScrollArea.js +11 -14
  249. package/src/components/scroll-area/QScrollArea.json +29 -9
  250. package/src/components/scroll-observer/QScrollObserver.json +11 -0
  251. package/src/components/select/QSelect.js +1 -1
  252. package/src/components/select/QSelect.json +41 -15
  253. package/src/components/slide-item/QSlideItem.json +9 -0
  254. package/src/components/slider/QSlider.js +46 -132
  255. package/src/components/slider/QSlider.json +1 -121
  256. package/src/components/slider/QSlider.sass +198 -132
  257. package/src/components/slider/use-slider.js +453 -109
  258. package/src/components/slider/use-slider.json +546 -0
  259. package/src/components/stepper/QStepper.js +3 -3
  260. package/src/components/stepper/QStepper.sass +24 -26
  261. package/src/components/table/QTable.js +27 -47
  262. package/src/components/table/QTable.json +104 -55
  263. package/src/components/table/table-pagination.js +4 -0
  264. package/src/components/tabs/QRouteTab.js +1 -2
  265. package/src/components/tabs/QRouteTab.json +0 -7
  266. package/src/components/tabs/QTabs.js +71 -20
  267. package/src/components/tabs/use-tab.js +26 -13
  268. package/src/components/time/QTime.json +8 -0
  269. package/src/components/tree/QTree.js +14 -12
  270. package/src/components/tree/QTree.json +26 -21
  271. package/src/components/tree/QTree.sass +45 -41
  272. package/src/components/uploader/QUploader.json +14 -2
  273. package/src/components/uploader/uploader-core.js +16 -9
  274. package/src/components/uploader/xhr-uploader-plugin.json +8 -3
  275. package/src/components/virtual-scroll/QVirtualScroll.json +15 -0
  276. package/src/components/virtual-scroll/QVirtualScroll.sass +1 -0
  277. package/src/components/virtual-scroll/use-virtual-scroll.js +30 -17
  278. package/src/components/virtual-scroll/use-virtual-scroll.json +7 -5
  279. package/src/composables/private/use-field.js +7 -7
  280. package/src/composables/private/use-file.js +20 -5
  281. package/src/composables/private/use-form.js +2 -3
  282. package/src/composables/private/use-fullscreen.js +15 -4
  283. package/src/composables/private/use-router-link.js +44 -23
  284. package/src/composables/private/use-router-link.json +26 -10
  285. package/src/composables/private/use-split-attrs.js +12 -9
  286. package/src/composables/private/use-validate.js +21 -15
  287. package/src/composables/private/use-validate.json +1 -0
  288. package/src/composables/use-dialog-plugin-component.js +1 -0
  289. package/src/css/core/helpers.sass +3 -0
  290. package/src/css/core/positioning.sass +5 -0
  291. package/src/directives/Mutation.json +2 -3
  292. package/src/directives/ScrollFire.js +1 -0
  293. package/src/directives/ScrollFire.json +2 -3
  294. package/src/icon-set.js +2 -4
  295. package/src/plugins/AppFullscreen.js +70 -53
  296. package/src/plugins/AppFullscreen.json +8 -8
  297. package/src/plugins/AppVisibility.js +2 -3
  298. package/src/plugins/BottomSheet.js +3 -5
  299. package/src/plugins/Cookies.json +2 -2
  300. package/src/plugins/Dialog.js +3 -5
  301. package/src/plugins/Dialog.json +6 -5
  302. package/src/plugins/LoadingBar.js +17 -18
  303. package/src/plugins/LoadingBar.json +4 -3
  304. package/src/plugins/Notify.js +296 -295
  305. package/src/plugins/Notify.json +13 -19
  306. package/src/plugins/Platform.js +14 -14
  307. package/src/utils/date.js +4 -4
  308. package/src/utils/dom.js +2 -2
  309. package/src/utils/open-url.js +2 -2
  310. package/src/utils/patterns.js +1 -0
  311. package/src/utils/private/define-reactive-plugin.js +10 -8
  312. package/src/utils/private/global-dialog.js +6 -8
  313. package/src/utils/private/global-dialog.json +6 -0
  314. package/src/utils/private/inject-obj-prop.js +13 -0
  315. package/src/utils/private/is.js +2 -2
@@ -46,7 +46,7 @@ export default createComponent({
46
46
  const fixed = computed(() =>
47
47
  props.reveal === true
48
48
  || $layout.view.value.indexOf('F') > -1
49
- || $layout.isContainer.value === true
49
+ || ($q.platform.is.ios && $layout.isContainer.value === true)
50
50
  )
51
51
 
52
52
  const containerHeight = computed(() => (
@@ -52,9 +52,8 @@
52
52
  "desc": "Emitted after a validation was triggered and at least one of the inner Quasar components models are NOT valid",
53
53
  "params": {
54
54
  "ref": {
55
- "type": "Object",
56
- "desc": "Vue reference to the first component that triggered the validation error",
57
- "__exemption": [ "examples" ]
55
+ "type": "Component",
56
+ "desc": "Vue reference to the first component that triggered the validation error"
58
57
  }
59
58
  }
60
59
  }
@@ -43,7 +43,7 @@ export default createComponent({
43
43
  const fixed = computed(() =>
44
44
  props.reveal === true
45
45
  || $layout.view.value.indexOf('H') > -1
46
- || $layout.isContainer.value === true
46
+ || ($q.platform.is.ios && $layout.isContainer.value === true)
47
47
  )
48
48
 
49
49
  const offset = computed(() => {
@@ -29,11 +29,11 @@ const matMap = {
29
29
 
30
30
  const libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')
31
31
  const matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')
32
- const mRE = /^M/
32
+ const mRE = /^[Mm]\s?[-+]?\.?\d/
33
33
  const imgRE = /^img:/
34
34
  const svgUseRE = /^svguse:/
35
35
  const ionRE = /^ion-/
36
- const faLaRE = /^[l|f]a[s|r|l|b|d]? /
36
+ const faLaRE = /^[lf]a[srlbdk]? /
37
37
 
38
38
  export default createComponent({
39
39
  name: 'QIcon',
@@ -60,14 +60,12 @@ export default createComponent({
60
60
  containerHeight = height(localScrollTarget)
61
61
 
62
62
  if (props.reverse === false) {
63
- if (scrollPosition + containerHeight + props.offset >= scrollHeight) {
63
+ if (Math.round(scrollPosition + containerHeight + props.offset) >= Math.round(scrollHeight)) {
64
64
  trigger()
65
65
  }
66
66
  }
67
- else {
68
- if (scrollPosition < props.offset) {
69
- trigger()
70
- }
67
+ else if (Math.round(scrollPosition) <= props.offset) {
68
+ trigger()
71
69
  }
72
70
  }
73
71
 
@@ -123,6 +121,7 @@ export default createComponent({
123
121
  isWorking.value = false
124
122
  isFetching.value = false
125
123
  localScrollTarget.removeEventListener('scroll', poll, passive)
124
+ poll !== void 0 && poll.cancel()
126
125
  }
127
126
  }
128
127
 
@@ -38,7 +38,7 @@ export default createComponent({
38
38
  const { proxy: { $q } } = getCurrentInstance()
39
39
 
40
40
  const isDark = useDark(props, $q)
41
- const { hasLink, linkProps, linkClass, linkTag, navigateToLink } = useRouterLink()
41
+ const { hasRouterLink, hasLink, linkProps, linkClass, linkTag, navigateToRouterLink } = useRouterLink()
42
42
 
43
43
  const rootRef = ref(null)
44
44
  const blurTargetRef = ref(null)
@@ -46,7 +46,6 @@ export default createComponent({
46
46
  const isActionable = computed(() =>
47
47
  props.clickable === true
48
48
  || hasLink.value === true
49
- || props.tag === 'a'
50
49
  || props.tag === 'label'
51
50
  )
52
51
 
@@ -99,7 +98,7 @@ export default createComponent({
99
98
  }
100
99
  }
101
100
 
102
- hasLink.value === true && navigateToLink(e)
101
+ hasRouterLink.value === true && navigateToRouterLink(e)
103
102
  emit('click', e)
104
103
  }
105
104
  }
@@ -37,11 +37,13 @@
37
37
  "definition": {
38
38
  "height": {
39
39
  "type": "Number",
40
+ "required": true,
40
41
  "desc": "Layout height",
41
42
  "examples": [ 575 ]
42
43
  },
43
44
  "width": {
44
45
  "type": "Number",
46
+ "required": true,
45
47
  "desc": "Layout height",
46
48
  "examples": [ 575 ]
47
49
  }
@@ -59,27 +61,32 @@
59
61
  "definition": {
60
62
  "position": {
61
63
  "type": "Number",
64
+ "required": true,
62
65
  "desc": "Scroll offset from top (vertical)",
63
66
  "examples": [ 120 ]
64
67
  },
65
68
 
66
69
  "direction": {
67
70
  "type": "String",
71
+ "required": true,
68
72
  "desc": "Direction of scroll",
69
73
  "values": [ "up", "down" ]
70
74
  },
71
75
  "directionChanged": {
72
76
  "type": "Boolean",
77
+ "required": true,
73
78
  "desc": "Has scroll direction changed since event was last emitted?"
74
79
  },
75
80
  "delta": {
76
81
  "type": "Number",
82
+ "required": true,
77
83
  "desc": "Vertical delta distance since event was last emitted",
78
84
  "examples": [ 120 ]
79
85
  },
80
86
 
81
87
  "inflectionPoint": {
82
88
  "type": "Number",
89
+ "required": true,
83
90
  "desc": "Scroll offset from top (vertical)",
84
91
  "examples": [ 120 ]
85
92
  }
@@ -94,7 +101,7 @@
94
101
  "height": {
95
102
  "type": "Number",
96
103
  "desc": "New scroll height of layout",
97
- "examples": [1442]
104
+ "examples": [ 1442 ]
98
105
  }
99
106
  }
100
107
  }
@@ -58,6 +58,7 @@ export default createComponent({
58
58
  const sizeStyle = useSize(props, defaultSizes)
59
59
 
60
60
  const motion = computed(() => props.indeterminate === true || props.query === true)
61
+ const widthReverse = computed(() => props.reverse !== props.query)
61
62
  const style = computed(() => ({
62
63
  ...(sizeStyle.value !== null ? sizeStyle.value : {}),
63
64
  '--q-linear-progress-speed': `${ props.animationSpeed }ms`
@@ -70,7 +71,7 @@ export default createComponent({
70
71
  + (props.rounded === true ? ' rounded-borders' : '')
71
72
  )
72
73
 
73
- const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1, props.reverse, proxy.$q))
74
+ const trackStyle = computed(() => width(props.buffer !== void 0 ? props.buffer : 1, widthReverse.value, proxy.$q))
74
75
  const trackClass = computed(() =>
75
76
  'q-linear-progress__track absolute-full'
76
77
  + ` q-linear-progress__track--with${ props.instantFeedback === true ? 'out' : '' }-transition`
@@ -78,7 +79,7 @@ export default createComponent({
78
79
  + (props.trackColor !== void 0 ? ` bg-${ props.trackColor }` : '')
79
80
  )
80
81
 
81
- const modelStyle = computed(() => width(motion.value === true ? 1 : props.value, props.reverse, proxy.$q))
82
+ const modelStyle = computed(() => width(motion.value === true ? 1 : props.value, widthReverse.value, proxy.$q))
82
83
  const modelClass = computed(() =>
83
84
  'q-linear-progress__model absolute-full'
84
85
  + ` q-linear-progress__model--with${ props.instantFeedback === true ? 'out' : '' }-transition`
@@ -51,7 +51,7 @@
51
51
  background: rgba(255,255,255,.6)
52
52
 
53
53
  &__stripe
54
- transition: width .3s
54
+ transition: width var(--q-linear-progress-speed)
55
55
  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
56
56
  background-size: 40px 40px !important
57
57
 
@@ -95,6 +95,9 @@ export default createComponent({
95
95
  class: classes.value,
96
96
  ...attrs.value
97
97
  }, props.options.map((opt, i) => {
98
+ // TODO: (Qv3) Make the 'opt' a separate property instead of
99
+ // the whole scope for consistency and flexibility
100
+ // (e.g. { opt } instead of opt)
98
101
  const child = slots[ 'label-' + i ] !== void 0
99
102
  ? () => slots[ 'label-' + i ](opt)
100
103
  : (
@@ -99,9 +99,32 @@
99
99
  "label": {
100
100
  "desc": "Generic slot for all labels",
101
101
  "scope": {
102
- "opt": {
102
+ "...self": {
103
103
  "type": "Object",
104
104
  "desc": "The corresponding option entry from the 'options' prop",
105
+ "definition": {
106
+ "label": {
107
+ "type": "String",
108
+ "desc": "Label to display along the component",
109
+ "required": true,
110
+ "examples": [ "Option 1", "Option 2", "Option 3" ]
111
+ },
112
+ "value": {
113
+ "type": "Any",
114
+ "desc": "Value of the option that will be used by the component model",
115
+ "required": true,
116
+ "examples": [ "op1", "op2", "op3" ]
117
+ },
118
+ "disable": {
119
+ "type": "Boolean",
120
+ "desc": "If true, the option will be disabled"
121
+ },
122
+ "...props": {
123
+ "type": "Any",
124
+ "desc": "Any other props from QToggle, QCheckbox, or QRadio",
125
+ "examples": [ "val=\"car\"", ":true-value=\"trueValue\"", "checked-icon=\"visibility\"" ]
126
+ }
127
+ },
105
128
  "__exemption": [ "examples" ]
106
129
  }
107
130
  },
@@ -111,9 +134,32 @@
111
134
  "label-[name]": {
112
135
  "desc": "Slot to define the specific label for the option at '[name]' where name is a 0-based index; Overrides the generic 'label' slot if used",
113
136
  "scope": {
114
- "...opt": {
137
+ "...self": {
115
138
  "type": "Object",
116
139
  "desc": "The corresponding option entry from the 'options' prop",
140
+ "definition": {
141
+ "label": {
142
+ "type": "String",
143
+ "desc": "Label to display along the component",
144
+ "required": true,
145
+ "examples": [ "Option 1", "Option 2", "Option 3" ]
146
+ },
147
+ "value": {
148
+ "type": "Any",
149
+ "desc": "Value of the option that will be used by the component model",
150
+ "required": true,
151
+ "examples": [ "op1", "op2", "op3" ]
152
+ },
153
+ "disable": {
154
+ "type": "Boolean",
155
+ "desc": "If true, the option will be disabled"
156
+ },
157
+ "...props": {
158
+ "type": "Any",
159
+ "desc": "Any other props from QToggle, QCheckbox, or QRadio",
160
+ "examples": [ "val=\"car\"", ":true-value=\"trueValue\"", "checked-icon=\"visibility\"" ]
161
+ }
162
+ },
117
163
  "__exemption": [ "examples" ]
118
164
  }
119
165
  },
@@ -22,7 +22,6 @@
22
22
  "max": {
23
23
  "type": "Number",
24
24
  "desc": "Number of last page (must be higher than 'min')",
25
- "default": 100,
26
25
  "required": true,
27
26
  "examples": [ 10 ],
28
27
  "category": "model"
@@ -60,8 +60,7 @@ export default createComponent({
60
60
 
61
61
  if (localScrollTarget === window) {
62
62
  containerTop = 0
63
- containerHeight = window.innerHeight
64
- containerBottom = containerHeight
63
+ containerBottom = containerHeight = window.innerHeight
65
64
  }
66
65
  else {
67
66
  containerTop = offset(localScrollTarget).top
@@ -103,6 +102,9 @@ export default createComponent({
103
102
  localScrollTarget.removeEventListener('scroll', updatePos, passive)
104
103
  window.removeEventListener('resize', resizeHandler, passive)
105
104
  localScrollTarget = void 0
105
+ setPos.cancel()
106
+ update.cancel()
107
+ resizeHandler.cancel()
106
108
  }
107
109
  }
108
110
 
@@ -6,6 +6,7 @@ import QBtn from '../btn/QBtn.js'
6
6
  import { createComponent } from '../../utils/private/create.js'
7
7
  import clone from '../../utils/clone.js'
8
8
  import { isDeepEqual } from '../../utils/private/is.js'
9
+ import { injectProp } from '../../utils/private/inject-obj-prop.js'
9
10
 
10
11
  export default createComponent({
11
12
  name: 'QPopupEdit',
@@ -65,11 +66,7 @@ export default createComponent({
65
66
  updatePosition
66
67
  }
67
68
 
68
- Object.defineProperty(acc, 'value', {
69
- get: () => currentModel.value,
70
- set: val => { currentModel.value = val }
71
- })
72
-
69
+ injectProp(acc, 'value', () => currentModel.value, val => { currentModel.value = val })
73
70
  return acc
74
71
  })
75
72
 
@@ -173,6 +173,7 @@
173
173
  "params": {
174
174
  "value": {
175
175
  "type": "Any",
176
+ "required": true,
176
177
  "desc": "Value to be checked",
177
178
  "examples": [ 0, "Changed text" ]
178
179
  }
@@ -7,9 +7,10 @@
7
7
 
8
8
  "props": {
9
9
  "model-value": {
10
+ "extends": "model-value",
10
11
  "type": "Boolean",
11
12
  "desc": "Defines the state of the component (shown/hidden); Either use this property (along with a listener for 'update:modelValue' event) OR use v-model directive",
12
- "category": "model"
13
+ "required": false
13
14
  },
14
15
 
15
16
  "breakpoint": {
@@ -92,6 +92,7 @@ export default createComponent({
92
92
  const prop = { type: 'radio' }
93
93
 
94
94
  props.name !== void 0 && Object.assign(prop, {
95
+ '^checked': isTrue.value === true ? 'checked' : void 0,
95
96
  name: props.name,
96
97
  value: props.val
97
98
  })
@@ -99,13 +100,7 @@ export default createComponent({
99
100
  return prop
100
101
  })
101
102
 
102
- const formDomProps = computed(() => (
103
- props.name !== void 0 && isTrue.value === true
104
- ? { checked: true }
105
- : {}
106
- ))
107
-
108
- const injectFormInput = useFormInject(formAttrs, formDomProps)
103
+ const injectFormInput = useFormInject(formAttrs)
109
104
 
110
105
  function onClick (e) {
111
106
  if (e !== void 0) {