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
@@ -164,6 +164,7 @@
164
164
  "params": {
165
165
  "opts": {
166
166
  "type": [ "Object", "String" ],
167
+ "required": true,
167
168
  "desc": "Notification options",
168
169
  "definition": {
169
170
  "type": {
@@ -214,7 +215,7 @@
214
215
  "spinner": {
215
216
  "type": [ "Boolean", "Component" ],
216
217
  "desc": "Useful for notifications that are updated; Displays a Quasar spinner instead of an avatar or icon; If value is Boolean 'true' then the default QSpinner is shown",
217
- "__exemption": [ "examples" ]
218
+ "examples": [ true, "QSpinnerBars" ]
218
219
  },
219
220
 
220
221
  "position": {
@@ -225,8 +226,7 @@
225
226
  "top-left", "top-right",
226
227
  "bottom-left", "bottom-right",
227
228
  "top", "bottom", "left", "right", "center"
228
- ],
229
- "examples": [ "top-right" ]
229
+ ]
230
230
  },
231
231
 
232
232
  "group": {
@@ -251,8 +251,7 @@
251
251
  "values": [
252
252
  "top-left", "top-right",
253
253
  "bottom-left", "bottom-right"
254
- ],
255
- "examples": [ "bottom-right" ]
254
+ ]
256
255
  },
257
256
  "badgeStyle": {
258
257
  "type": [ "Array", "String", "Object" ],
@@ -339,9 +338,7 @@
339
338
  "type": "Boolean",
340
339
  "desc": "Ignore the default configuration (set by setDefaults()) for this instance only"
341
340
  }
342
- },
343
- "required": true,
344
- "__exemption": [ "examples" ]
341
+ }
345
342
  }
346
343
  },
347
344
  "returns": {
@@ -350,6 +347,7 @@
350
347
  "params": {
351
348
  "props": {
352
349
  "type": "Object",
350
+ "required": false,
353
351
  "desc": "Notification properties that will be shallow merged to previous ones in order to update the non-grouped notification",
354
352
  "definition": {
355
353
  "type": {
@@ -483,6 +481,7 @@
483
481
  "params": {
484
482
  "opts": {
485
483
  "type": "Object",
484
+ "required": true,
486
485
  "desc": "Notification options",
487
486
  "definition": {
488
487
  "type": {
@@ -607,8 +606,7 @@
607
606
  "attrs": {
608
607
  "type": "Object",
609
608
  "desc": "Key-value for attributes to be set on the notification",
610
- "examples": [ "{ role: 'alertdialog' }" ],
611
- "__exemption": [ "definition" ]
609
+ "examples": [ "{ role: 'alertdialog' }" ]
612
610
  },
613
611
 
614
612
  "timeout": {
@@ -646,9 +644,7 @@
646
644
  "type": "Boolean",
647
645
  "desc": "Put notification into multi-line mode; If this prop isn't used and more than one 'action' is specified then notification goes into multi-line mode by default"
648
646
  }
649
- },
650
- "required": true,
651
- "__exemption": [ "examples" ]
647
+ }
652
648
  }
653
649
  }
654
650
  },
@@ -658,13 +654,14 @@
658
654
  "params": {
659
655
  "typeName": {
660
656
  "type": "String",
661
- "desc": "Name of the type (to be used as 'type' prop later on)",
662
657
  "required": true,
658
+ "desc": "Name of the type (to be used as 'type' prop later on)",
663
659
  "examples": [ "my-type" ]
664
660
  },
665
661
 
666
662
  "typeOpts": {
667
663
  "type": "Object",
664
+ "required": true,
668
665
  "desc": "Notification options",
669
666
  "definition": {
670
667
  "type": {
@@ -789,8 +786,7 @@
789
786
  "attrs": {
790
787
  "type": "Object",
791
788
  "desc": "Key-value for attributes to be set on the notification",
792
- "examples": [ "{ role: 'alertdialog' }" ],
793
- "__exemption": [ "definition" ]
789
+ "examples": [ "{ role: 'alertdialog' }" ]
794
790
  },
795
791
 
796
792
  "timeout": {
@@ -828,9 +824,7 @@
828
824
  "type": "Boolean",
829
825
  "desc": "Put notification into multi-line mode; If this prop isn't used and more than one 'action' is specified then notification goes into multi-line mode by default"
830
826
  }
831
- },
832
- "required": true,
833
- "__exemption": [ "examples" ]
827
+ }
834
828
  }
835
829
  }
836
830
  }
@@ -3,6 +3,7 @@
3
3
  /* eslint-disable no-mixed-operators */
4
4
 
5
5
  import { ref, reactive } from 'vue'
6
+ import { injectProp } from '../utils/private/inject-obj-prop'
6
7
 
7
8
  /**
8
9
  * __ QUASAR_SSR __ -> runs on SSR on client or server
@@ -330,23 +331,22 @@ else {
330
331
  // devland actually using it as this will get
331
332
  // reported under "Cookies" in Google Chrome
332
333
  let hasWebStorage
333
- Object.defineProperty(client.has, 'webStorage', {
334
- get: () => {
335
- if (hasWebStorage !== void 0) {
336
- return hasWebStorage
337
- }
338
334
 
339
- try {
340
- if (window.localStorage) {
341
- hasWebStorage = true
342
- return true
343
- }
344
- }
345
- catch (e) {}
335
+ injectProp(client.has, 'webStorage', () => {
336
+ if (hasWebStorage !== void 0) {
337
+ return hasWebStorage
338
+ }
346
339
 
347
- hasWebStorage = false
348
- return false
340
+ try {
341
+ if (window.localStorage) {
342
+ hasWebStorage = true
343
+ return true
344
+ }
349
345
  }
346
+ catch (e) {}
347
+
348
+ hasWebStorage = false
349
+ return false
350
350
  })
351
351
 
352
352
  iosEmulated = client.is.ios === true
package/src/utils/date.js CHANGED
@@ -206,12 +206,12 @@ function getChange (date, mod, sign) {
206
206
  ? applyYearMonthDayChange(d, mod, sign)
207
207
  : d
208
208
 
209
- Object.keys(mod).forEach(key => {
209
+ for (const key in mod) {
210
210
  if (key !== 'years' && key !== 'months' && key !== 'days') {
211
211
  const op = capitalize(key)
212
212
  t[ `set${ op }` ](t[ `get${ op }` ]() + sign * mod[ key ])
213
213
  }
214
- })
214
+ }
215
215
 
216
216
  return t
217
217
  }
@@ -241,12 +241,12 @@ export function adjustDate (date, mod, utc) {
241
241
  ? applyYearMonthDay(d, mod, middle)
242
242
  : d
243
243
 
244
- Object.keys(mod).forEach(key => {
244
+ for (const key in mod) {
245
245
  if (key !== 'year' && key !== 'month' && key !== 'date') {
246
246
  const op = key.charAt(0).toUpperCase() + key.slice(1)
247
247
  t[ `set${ middle }${ op }` ](mod[ key ])
248
248
  }
249
- })
249
+ }
250
250
 
251
251
  return t
252
252
  }
package/src/utils/dom.js CHANGED
@@ -27,9 +27,9 @@ export function width (el) {
27
27
  export function css (element, css) {
28
28
  const style = element.style
29
29
 
30
- Object.keys(css).forEach(prop => {
30
+ for (const prop in css) {
31
31
  style[ prop ] = css[ prop ]
32
- })
32
+ }
33
33
  }
34
34
 
35
35
  export function cssBatch (elements, style) {
@@ -5,11 +5,11 @@ import { noop } from '../utils/event.js'
5
5
  function parseFeatures (winFeatures) {
6
6
  const cfg = Object.assign({ noopener: true }, winFeatures)
7
7
  const feat = []
8
- Object.keys(cfg).forEach(key => {
8
+ for (const key in cfg) {
9
9
  if (cfg[ key ] === true) {
10
10
  feat.push(key)
11
11
  }
12
- })
12
+ }
13
13
  return feat.join(',')
14
14
  }
15
15
 
@@ -7,6 +7,7 @@ const
7
7
  rgb = /^rgb\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5])\)$/,
8
8
  rgba = /^rgba\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),(0|0\.[0-9]+[1-9]|0\.[1-9]+|1)\)$/
9
9
 
10
+ // Keep in sync with ui/types/api/validation.d.ts
10
11
  export const testPattern = {
11
12
  date: v => /^-?[\d]+\/[0-1]\d\/[0-3]\d$/.test(v),
12
13
  time: v => /^([0-1]?\d|2[0-3]):[0-5]\d$/.test(v),
@@ -1,4 +1,6 @@
1
+
1
2
  import { reactive } from 'vue'
3
+ import { injectProp } from './inject-obj-prop'
2
4
 
3
5
  export default __QUASAR_SSR_SERVER__
4
6
  ? (state, plugin) => {
@@ -6,16 +8,16 @@ export default __QUASAR_SSR_SERVER__
6
8
  return plugin
7
9
  }
8
10
  : (state, plugin) => {
9
- const props = {}
10
11
  const reactiveState = reactive(state)
11
12
 
12
- Object.keys(state).forEach(name => {
13
- props[ name ] = {
14
- get: () => reactiveState[ name ],
15
- set: val => { reactiveState[ name ] = val }
16
- }
17
- })
13
+ for (const name in state) {
14
+ injectProp(
15
+ plugin,
16
+ name,
17
+ () => reactiveState[ name ],
18
+ val => { reactiveState[ name ] = val }
19
+ )
20
+ }
18
21
 
19
- Object.defineProperties(plugin, props)
20
22
  return plugin
21
23
  }
@@ -133,14 +133,12 @@ export default function (DefaultComponent, supportsCustomComponent, parentApp) {
133
133
 
134
134
  let app = createChildApp({
135
135
  name: 'QGlobalDialog',
136
- setup () {
137
- return () => h(DialogComponent, {
138
- ref: dialogRef,
139
- ...props,
140
- onOk,
141
- onHide
142
- })
143
- }
136
+ setup: () => () => h(DialogComponent, {
137
+ ...props,
138
+ ref: dialogRef,
139
+ onOk,
140
+ onHide
141
+ })
144
142
  }, parentApp)
145
143
 
146
144
  vm = app.mount(el)
@@ -29,6 +29,7 @@
29
29
  "definition": {
30
30
  "onOk": {
31
31
  "type": "Function",
32
+ "required": true,
32
33
  "desc": "Receives a Function param to tell what to do when OK is pressed / option is selected",
33
34
  "params": {
34
35
  "callbackFn": {
@@ -57,6 +58,7 @@
57
58
 
58
59
  "onCancel": {
59
60
  "type": "Function",
61
+ "required": true,
60
62
  "desc": "Receives a Function as param to tell what to do when Cancel is pressed / dialog is dismissed",
61
63
  "params": {
62
64
  "callbackFn": {
@@ -77,6 +79,7 @@
77
79
 
78
80
  "onDismiss": {
79
81
  "type": "Function",
82
+ "required": true,
80
83
  "desc": "Receives a Function param to tell what to do when the dialog is closed",
81
84
  "params": {
82
85
  "callbackFn": {
@@ -97,6 +100,7 @@
97
100
 
98
101
  "hide": {
99
102
  "type": "Function",
103
+ "required": true,
100
104
  "desc": "Hides the dialog when called",
101
105
  "params": null,
102
106
  "returns": {
@@ -109,10 +113,12 @@
109
113
 
110
114
  "update": {
111
115
  "type": "Function",
116
+ "required": true,
112
117
  "desc": "Updates the initial properties (given as create() param) except for 'component'",
113
118
  "params": {
114
119
  "opts": {
115
120
  "type": "Object",
121
+ "required": true,
116
122
  "desc": "Props (except 'component') which will overwrite the initial create() params; If create() was invoked with a custom dialog component then this param should contain the new componentProps",
117
123
  "__exemption": [ "examples" ]
118
124
  }
@@ -0,0 +1,13 @@
1
+ export function injectProp (target, propName, get, set) {
2
+ Object.defineProperty(target, propName, {
3
+ get,
4
+ set,
5
+ enumerable: true
6
+ })
7
+ }
8
+
9
+ export function injectMultipleProps (target, props) {
10
+ for (const key in props) {
11
+ injectProp(target, key, props[ key ])
12
+ }
13
+ }
@@ -99,10 +99,10 @@ export function isDeepEqual (a, b) {
99
99
  return a.toString() === b.toString()
100
100
  }
101
101
 
102
- const keys = Object.keys(a)
102
+ const keys = Object.keys(a).filter(key => a[ key ] !== void 0)
103
103
  length = keys.length
104
104
 
105
- if (length !== Object.keys(b).length) {
105
+ if (length !== Object.keys(b).filter(key => b[ key ] !== void 0).length) {
106
106
  return false
107
107
  }
108
108